summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancisco Paisana <francisco.paisana@softwareradiosystems.com>2023-04-26 01:29:06 +0200
committerJustin Tallon <justin.tallon@softwareradiosystems.com>2023-04-27 16:18:59 +0200
commite0d10a262576c6f495c628b50d2e7f5549d4d8f4 (patch)
tree56536326ba2a257b4b27287929f8930d133177c3
parent51e4711bc4b68719999f4e753d5910f9149aaac4 (diff)
update rrc asn1 to release 17
-rw-r--r--lib/include/srsran/asn1/asn1_utils.h20
-rw-r--r--lib/include/srsran/asn1/rrc.h542
-rw-r--r--lib/include/srsran/asn1/rrc/bcch_msg.h1355
-rw-r--r--lib/include/srsran/asn1/rrc/common.h28
-rw-r--r--lib/include/srsran/asn1/rrc/common_ext.h2
-rw-r--r--lib/include/srsran/asn1/rrc/dl_ccch_msg.h91
-rw-r--r--lib/include/srsran/asn1/rrc/dl_dcch_msg.h924
-rw-r--r--lib/include/srsran/asn1/rrc/ho_cmd.h165
-rw-r--r--lib/include/srsran/asn1/rrc/meascfg.h1571
-rw-r--r--lib/include/srsran/asn1/rrc/paging.h72
-rw-r--r--lib/include/srsran/asn1/rrc/phy_ded.h623
-rw-r--r--lib/include/srsran/asn1/rrc/rr_common.h428
-rw-r--r--lib/include/srsran/asn1/rrc/rr_ded.h252
-rw-r--r--lib/include/srsran/asn1/rrc/security.h56
-rw-r--r--lib/include/srsran/asn1/rrc/si.h189
-rw-r--r--lib/include/srsran/asn1/rrc/uecap.h1202
-rw-r--r--lib/include/srsran/asn1/rrc/ul_ccch_msg.h145
-rw-r--r--lib/include/srsran/asn1/rrc/ul_dcch_msg.h1365
-rw-r--r--lib/include/srsran/asn1/rrc_nbiot.h3315
-rw-r--r--lib/include/srsran/asn1/rrc_utils.h2
-rw-r--r--lib/src/asn1/rrc.cc1739
-rw-r--r--lib/src/asn1/rrc/bcch_msg.cc2993
-rw-r--r--lib/src/asn1/rrc/dl_ccch_msg.cc162
-rw-r--r--lib/src/asn1/rrc/dl_dcch_msg.cc2301
-rw-r--r--lib/src/asn1/rrc/ho_cmd.cc450
-rw-r--r--lib/src/asn1/rrc/meascfg.cc3983
-rw-r--r--lib/src/asn1/rrc/paging.cc190
-rw-r--r--lib/src/asn1/rrc/phy_ded.cc1650
-rw-r--r--lib/src/asn1/rrc/rr_common.cc1076
-rw-r--r--lib/src/asn1/rrc/rr_ded.cc760
-rw-r--r--lib/src/asn1/rrc/security.cc166
-rw-r--r--lib/src/asn1/rrc/si.cc461
-rw-r--r--lib/src/asn1/rrc/uecap.cc3481
-rw-r--r--lib/src/asn1/rrc/ul_ccch_msg.cc292
-rw-r--r--lib/src/asn1/rrc/ul_dcch_msg.cc3352
-rw-r--r--lib/src/asn1/rrc_nbiot.cc8048
-rw-r--r--lib/src/asn1/rrc_utils.cc2
-rw-r--r--srsenb/src/enb_cfg_parser.cc34
-rw-r--r--srsue/hdr/stack/rrc/rrc_cell.h13
-rw-r--r--srsue/src/stack/rrc/rrc.cc21
-rw-r--r--srsue/src/stack/rrc/rrc_cell.cc16
-rw-r--r--srsue/src/stack/rrc/rrc_meas.cc52
-rw-r--r--srsue/src/stack/rrc/rrc_procedures.cc2
43 files changed, 40083 insertions, 3508 deletions
diff --git a/lib/include/srsran/asn1/asn1_utils.h b/lib/include/srsran/asn1/asn1_utils.h
index f1dcfcd74..d7c6737a5 100644
--- a/lib/include/srsran/asn1/asn1_utils.h
+++ b/lib/include/srsran/asn1/asn1_utils.h
@@ -132,7 +132,8 @@ public:
bit_ref_impl() = default;
bit_ref_impl(Ptr start_ptr_, uint32_t max_size_) :
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 uint8_t* ref_ptr) const;
@@ -1277,7 +1278,8 @@ struct choice_buffer_base_t {
template <typename... Ts>
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<>;
@@ -1539,6 +1541,11 @@ struct setup_release_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:
types type_;
T c;
@@ -1645,15 +1652,18 @@ struct base_ie_field : public IEItem {
// ProtocolIE-Field{LAYER-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE{{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}}
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}}
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 {
diff --git a/lib/include/srsran/asn1/rrc.h b/lib/include/srsran/asn1/rrc.h
index 32b415b3b..459855d35 100644
--- a/lib/include/srsran/asn1/rrc.h
+++ b/lib/include/srsran/asn1/rrc.h
@@ -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
dl_bw_mbms_r14_e_ dl_bw_mbms_r14;
fixed_bitstring<6> sys_frame_num_r14;
- uint8_t add_non_mbsfn_sfs_r14 = 0;
- fixed_bitstring<13> spare;
+ uint8_t add_non_mbsfn_sfs_r14 = 0;
+ uint8_t semi_static_cfi_mbms_r16 = 0;
+ fixed_bitstring<11> spare;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -169,7 +170,7 @@ struct bcch_dl_sch_msg_mbms_s {
};
// ThresholdEUTRA-v1250 ::= INTEGER (0..97)
-using thres_eutra_v1250 = integer<uint8_t, 0, 97>;
+using thres_eutra_v1250 = uint8_t;
// MBMS-SessionInfo-r9 ::= SEQUENCE
struct mbms_session_info_r9_s {
@@ -186,6 +187,71 @@ struct mbms_session_info_r9_s {
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
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;
};
-// CommonSF-AllocPatternList-r14 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-SubframeConfig-v1430
-using common_sf_alloc_pattern_list_r14_l = dyn_array<mbsfn_sf_cfg_v1430_s>;
+// CommonSF-AllocPatternList-v1430 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-SubframeConfig-v1430
+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
struct pmch_info_ext_r12_s {
@@ -290,8 +368,9 @@ struct pmch_info_ext_r12_s {
// MBSFNAreaConfiguration-v1430-IEs ::= SEQUENCE
struct mbsfn_area_cfg_v1430_ies_s {
- bool non_crit_ext_present = false;
- common_sf_alloc_pattern_list_r14_l common_sf_alloc_r14;
+ bool non_crit_ext_present = false;
+ common_sf_alloc_pattern_list_v1430_l common_sf_alloc_v1430;
+ mbsfn_area_cfg_v1610_ies_s non_crit_ext;
// sequence methods
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;
};
+// 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
struct sc_mtch_sched_info_r13_s {
struct on_dur_timer_scptm_r13_opts {
@@ -1146,157 +1376,6 @@ struct pci_arfcn_r13_s {
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
struct sc_mtch_info_r13_s {
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
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
struct scptm_cfg_v1340_s {
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;
uint8_t p_b_r14 = 0;
dyn_octstring late_non_crit_ext;
+ scptm_cfg_br_v1610_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1598,30 +1701,15 @@ struct mimo_ue_params_v13e0_s {
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
struct meas_result_scg_fail_mrdc_r15_s {
bool ext = false;
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
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
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
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_sync_freq_list_r15_l> sync_freq_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
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;
};
+// 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
struct var_log_meas_report_r10_s {
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;
};
+// 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
struct var_meas_idle_report_r15_s {
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;
};
+// 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
struct var_meas_report_s {
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
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
struct var_rlf_report_r10_s {
rlf_report_r9_s rlf_report_r10;
diff --git a/lib/include/srsran/asn1/rrc/bcch_msg.h b/lib/include/srsran/asn1/rrc/bcch_msg.h
index 2c648d235..45353db12 100644
--- a/lib/include/srsran/asn1/rrc/bcch_msg.h
+++ b/lib/include/srsran/asn1/rrc/bcch_msg.h
@@ -12,7 +12,7 @@
/*******************************************************************************
*
- * 3GPP TS ASN1 RRC v15.11.0 (2020-09)
+ * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
*
******************************************************************************/
@@ -20,6 +20,7 @@
#define SRSASN1_RRC_BCCH_MSG_H
#include "meascfg.h"
+#include "phy_ded.h"
#include "si.h"
namespace asn1 {
@@ -140,6 +141,46 @@ struct neigh_cells_per_bandclass_cdma2000_v920_s {
void to_json(json_writer& j) const;
};
+// PhysCellIdRangeNR-r16 ::= SEQUENCE
+struct pci_range_nr_r16_s {
+ struct range_opts {
+ enum options {
+ n4,
+ n8,
+ n12,
+ n16,
+ n24,
+ n32,
+ n48,
+ n64,
+ n84,
+ n96,
+ n128,
+ n168,
+ n252,
+ n504,
+ n1008,
+ spare1,
+ nulltype
+ } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<range_opts> range_e_;
+
+ // member variables
+ bool range_present = false;
+ uint16_t start = 0;
+ range_e_ range;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// RedistributionNeighCell-r13 ::= SEQUENCE
struct redist_neigh_cell_r13_s {
uint16_t pci_r13 = 0;
@@ -170,6 +211,26 @@ struct ac_barr_cfg1_xrtt_r9_s {
void to_json(json_writer& j) const;
};
+// BeamMeasConfigIdleNR-r16 ::= SEQUENCE
+struct beam_meas_cfg_idle_nr_r16_s {
+ struct report_quant_rs_idx_nr_r16_opts {
+ enum options { rsrp, rsrq, both, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<report_quant_rs_idx_nr_r16_opts> report_quant_rs_idx_nr_r16_e_;
+
+ // member variables
+ report_quant_rs_idx_nr_r16_e_ report_quant_rs_idx_nr_r16;
+ uint8_t max_report_rs_idx_r16 = 0;
+ bool report_rs_idx_results_nr_r16 = false;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// CSFB-RegistrationParam1XRTT ::= SEQUENCE
struct csfb_regist_param1_xrtt_s {
fixed_bitstring<15> sid;
@@ -200,6 +261,9 @@ struct csfb_regist_param1_xrtt_v920_s {
void to_json(json_writer& j) const;
};
+// CellListNR-r16 ::= SEQUENCE (SIZE (1..8)) OF PhysCellIdRangeNR-r16
+using cell_list_nr_r16_l = dyn_array<pci_range_nr_r16_s>;
+
// CellReselectionParametersCDMA2000-r11 ::= SEQUENCE
struct cell_resel_params_cdma2000_r11_s {
using neigh_cell_list_r11_l_ = dyn_array<neigh_cell_cdma2000_r11_s>;
@@ -228,6 +292,16 @@ struct inter_freq_neigh_cell_info_s {
void to_json(json_writer& j) const;
};
+// InterFreqNeighCellInfo-v1610 ::= SEQUENCE
+struct inter_freq_neigh_cell_info_v1610_s {
+ rss_meas_pwr_bias_r16_e rss_meas_pwr_bias_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// NS-PmaxList-r10 ::= SEQUENCE (SIZE (1..8)) OF NS-PmaxValue-r10
using ns_pmax_list_r10_l = dyn_array<ns_pmax_value_r10_s>;
@@ -368,18 +442,222 @@ struct uac_barr_per_cat_r15_s {
void to_json(json_writer& j) const;
};
-// InterFreqBlackCellList ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdRange
-using inter_freq_black_cell_list_l = dyn_array<pci_range_s>;
+// AllowedCellListNR-r16 ::= SEQUENCE (SIZE (1..16)) OF INTEGER (0..1007)
+using allowed_cell_list_nr_r16_l = bounded_array<uint16_t, 16>;
+
+// InterFreqExcludedCellList ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdRange
+using inter_freq_excluded_cell_list_l = dyn_array<pci_range_s>;
// InterFreqNeighCellList ::= SEQUENCE (SIZE (1..16)) OF InterFreqNeighCellInfo
using inter_freq_neigh_cell_list_l = dyn_array<inter_freq_neigh_cell_info_s>;
+// InterFreqNeighCellList-v1610 ::= SEQUENCE (SIZE (1..16)) OF InterFreqNeighCellInfo-v1610
+using inter_freq_neigh_cell_list_v1610_l = dyn_array<inter_freq_neigh_cell_info_v1610_s>;
+
// InterFreqNeighHSDN-CellList-r15 ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdRange
using inter_freq_neigh_hsdn_cell_list_r15_l = dyn_array<pci_range_s>;
// MBMS-SAI-List-r11 ::= SEQUENCE (SIZE (1..64)) OF INTEGER (0..65535)
using mbms_sai_list_r11_l = dyn_array<uint32_t>;
+// MBSFN-AreaInfo-r16 ::= SEQUENCE
+struct mbsfn_area_info_r16_s {
+ struct mcch_cfg_r16_s_ {
+ struct mcch_repeat_period_r16_opts {
+ enum options {
+ rf1,
+ rf2,
+ rf4,
+ rf8,
+ rf16,
+ rf32,
+ rf64,
+ rf128,
+ rf256,
+ spare7,
+ spare6,
+ spare5,
+ spare4,
+ spare3,
+ spare2,
+ spare1,
+ nulltype
+ } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<mcch_repeat_period_r16_opts> mcch_repeat_period_r16_e_;
+ struct mcch_mod_period_r16_opts {
+ enum options {
+ rf1,
+ rf2,
+ rf4,
+ rf8,
+ rf16,
+ rf32,
+ rf64,
+ rf128,
+ rf256,
+ rf512,
+ rf1024,
+ spare5,
+ spare4,
+ spare3,
+ spare2,
+ spare1,
+ nulltype
+ } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<mcch_mod_period_r16_opts> mcch_mod_period_r16_e_;
+ struct sig_mcs_r16_opts {
+ enum options { n2, n7, n13, n19, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<sig_mcs_r16_opts> sig_mcs_r16_e_;
+
+ // member variables
+ mcch_repeat_period_r16_e_ mcch_repeat_period_r16;
+ mcch_mod_period_r16_e_ mcch_mod_period_r16;
+ uint8_t mcch_offset_r16 = 0;
+ fixed_bitstring<10> sf_alloc_info_r16;
+ sig_mcs_r16_e_ sig_mcs_r16;
+ };
+ struct subcarrier_spacing_mbms_r16_opts {
+ enum options { khz7dot5, khz2dot5, khz1dot25, khz0dot37, khz15_v1710, spare3, spare2, spare1, nulltype } value;
+ typedef float number_type;
+
+ const char* to_string() const;
+ float to_number() const;
+ const char* to_number_string() const;
+ };
+ typedef enumerated<subcarrier_spacing_mbms_r16_opts> subcarrier_spacing_mbms_r16_e_;
+ struct time_separation_r16_opts {
+ enum options { sl2, sl4, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<time_separation_r16_opts> time_separation_r16_e_;
+
+ // member variables
+ bool ext = false;
+ bool time_separation_r16_present = false;
+ uint16_t mbsfn_area_id_r16 = 0;
+ uint8_t notif_ind_r16 = 0;
+ mcch_cfg_r16_s_ mcch_cfg_r16;
+ subcarrier_spacing_mbms_r16_e_ subcarrier_spacing_mbms_r16;
+ time_separation_r16_e_ time_separation_r16;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// MTC-SSB2-LP-NR-r16 ::= SEQUENCE
+struct mtc_ssb2_lp_nr_r16_s {
+ using pci_list_r16_l_ = dyn_array<uint16_t>;
+ struct periodicity_r16_opts {
+ enum options { sf10, sf20, sf40, sf80, sf160, spare3, spare2, spare1, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<periodicity_r16_opts> periodicity_r16_e_;
+
+ // member variables
+ bool pci_list_r16_present = false;
+ pci_list_r16_l_ pci_list_r16;
+ periodicity_r16_e_ periodicity_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// MeasIdleCarrierNR-r16 ::= SEQUENCE
+struct meas_idle_carrier_nr_r16_s {
+ struct subcarrier_spacing_ssb_r16_opts {
+ enum options { khz15, khz30, khz120, khz240, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<subcarrier_spacing_ssb_r16_opts> subcarrier_spacing_ssb_r16_e_;
+ struct report_quantities_nr_r16_opts {
+ enum options { rsrp, rsrq, both, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<report_quantities_nr_r16_opts> report_quantities_nr_r16_e_;
+ struct quality_thres_nr_r16_s_ {
+ bool idle_rsrp_thres_nr_r16_present = false;
+ bool idle_rsrq_thres_nr_r16_present = false;
+ uint8_t idle_rsrp_thres_nr_r16 = 0;
+ uint8_t idle_rsrq_thres_nr_r16 = 0;
+ };
+ struct ssb_meas_cfg_r16_s_ {
+ bool max_rs_idx_cell_qual_r16_present = false;
+ bool thresh_rs_idx_r16_present = false;
+ bool meas_timing_cfg_r16_present = false;
+ bool ssb_to_measure_r16_present = false;
+ bool ss_rssi_meas_r16_present = false;
+ uint8_t max_rs_idx_cell_qual_r16 = 1;
+ thres_list_nr_r15_s thresh_rs_idx_r16;
+ mtc_ssb_nr_r15_s meas_timing_cfg_r16;
+ ssb_to_measure_r15_c ssb_to_measure_r16;
+ bool derive_ssb_idx_from_cell_r16 = false;
+ ss_rssi_meas_r15_s ss_rssi_meas_r16;
+ };
+ struct subcarrier_spacing_ssb_r17_opts {
+ enum options { khz480, spare1, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<subcarrier_spacing_ssb_r17_opts> subcarrier_spacing_ssb_r17_e_;
+
+ // member variables
+ bool ext = false;
+ bool freq_band_list_present = false;
+ bool meas_cell_list_nr_r16_present = false;
+ bool quality_thres_nr_r16_present = false;
+ bool ssb_meas_cfg_r16_present = false;
+ bool beam_meas_cfg_idle_r16_present = false;
+ uint32_t carrier_freq_nr_r16 = 0;
+ subcarrier_spacing_ssb_r16_e_ subcarrier_spacing_ssb_r16;
+ multi_freq_band_list_nr_r15_l freq_band_list;
+ cell_list_nr_r16_l meas_cell_list_nr_r16;
+ report_quantities_nr_r16_e_ report_quantities_nr_r16;
+ quality_thres_nr_r16_s_ quality_thres_nr_r16;
+ ssb_meas_cfg_r16_s_ ssb_meas_cfg_r16;
+ beam_meas_cfg_idle_nr_r16_s beam_meas_cfg_idle_r16;
+ // ...
+ // group 0
+ bool subcarrier_spacing_ssb_r17_present = false;
+ subcarrier_spacing_ssb_r17_e_ subcarrier_spacing_ssb_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// MultiBandInfoList-v10j0 ::= SEQUENCE (SIZE (1..8)) OF NS-PmaxList-r10
using multi_band_info_list_v10j0_l = dyn_array<ns_pmax_list_r10_l>;
@@ -389,6 +667,9 @@ using multi_band_ns_pmax_list_nr_minus1_v1550_l = dyn_array<ns_pmax_list_nr_r15_
// MultiBandNsPmaxListNR-v1550 ::= SEQUENCE (SIZE (1..32)) OF NS-PmaxListNR-r15
using multi_band_ns_pmax_list_nr_v1550_l = dyn_array<ns_pmax_list_nr_r15_l>;
+// NR-FreqNeighHSDN-CellList-r17 ::= SEQUENCE (SIZE (1..8)) OF PhysCellIdRangeNR-r16
+using nr_freq_neigh_hsdn_cell_list_r17_l = dyn_array<pci_range_nr_r16_s>;
+
// NeighCellCDMA2000 ::= SEQUENCE
struct neigh_cell_cdma2000_s {
bandclass_cdma2000_e band_class;
@@ -515,9 +796,76 @@ struct sl_disc_cfg_other_inter_freq_r13_s {
void to_json(json_writer& j) const;
};
+// TLE-EphemerisParameters-r17 ::= SEQUENCE
+struct tle_ephemeris_params_r17_s {
+ uint32_t inclination_r17 = 0;
+ uint32_t argument_perigee_r17 = 0;
+ uint32_t right_ascension_r17 = 0;
+ uint32_t mean_anomaly_r17 = 0;
+ uint32_t eccentricity_r17 = 0;
+ uint64_t mean_motion_r17 = 0;
+ int32_t bstar_decimal_r17 = -99999;
+ int8_t bstar_exponent_r17 = -9;
+ int32_t epoch_star_r17 = -1048575;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// UAC-BarringPerCatList-r15 ::= SEQUENCE (SIZE (1..63)) OF UAC-BarringPerCat-r15
using uac_barr_per_cat_list_r15_l = dyn_array<uac_barr_per_cat_r15_s>;
+// CarrierFreqNBIOT-r16 ::= SEQUENCE
+struct carrier_freq_nbiot_r16_s {
+ struct carrier_freq_offset_r16_opts {
+ enum options {
+ v_minus10,
+ v_minus9,
+ v_minus8dot5,
+ v_minus8,
+ v_minus7,
+ v_minus6,
+ v_minus5,
+ v_minus4dot5,
+ v_minus4,
+ v_minus3,
+ v_minus2,
+ v_minus1,
+ v_minus0dot5,
+ v0,
+ v1,
+ v2,
+ v3,
+ v3dot5,
+ v4,
+ v5,
+ v6,
+ v7,
+ v7dot5,
+ v8,
+ v9,
+ nulltype
+ } value;
+ typedef float number_type;
+
+ const char* to_string() const;
+ float to_number() const;
+ const char* to_number_string() const;
+ };
+ typedef enumerated<carrier_freq_offset_r16_opts> carrier_freq_offset_r16_e_;
+
+ // member variables
+ uint32_t carrier_freq_r16 = 0;
+ carrier_freq_offset_r16_e_ carrier_freq_offset_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// CarrierFreqNR-r15 ::= SEQUENCE
struct carrier_freq_nr_r15_s {
struct subcarrier_spacing_ssb_r15_opts {
@@ -578,6 +926,56 @@ struct carrier_freq_nr_r15_s {
void to_json(json_writer& j) const;
};
+// CarrierFreqNR-v1610 ::= SEQUENCE
+struct carrier_freq_nr_v1610_s {
+ bool smtc2_lp_r16_present = false;
+ bool ssb_position_qcl_common_nr_r16_present = false;
+ bool allowed_cell_list_nr_r16_present = false;
+ bool high_speed_carrier_nr_r16_present = false;
+ mtc_ssb2_lp_nr_r16_s smtc2_lp_r16;
+ ssb_position_qcl_relation_nr_r16_e ssb_position_qcl_common_nr_r16;
+ allowed_cell_list_nr_r16_l allowed_cell_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;
+};
+
+// CarrierFreqNR-v1700 ::= SEQUENCE
+struct carrier_freq_nr_v1700_s {
+ bool nr_freq_neigh_hsdn_cell_list_r17_present = false;
+ nr_freq_neigh_hsdn_cell_list_r17_l nr_freq_neigh_hsdn_cell_list_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// CarrierFreqNR-v1720 ::= SEQUENCE
+struct carrier_freq_nr_v1720_s {
+ struct subcarrier_spacing_ssb_r17_opts {
+ enum options { khz480, spare1, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<subcarrier_spacing_ssb_r17_opts> subcarrier_spacing_ssb_r17_e_;
+
+ // member variables
+ bool subcarrier_spacing_ssb_r17_present = false;
+ bool ssb_position_qcl_common_nr_r17_present = false;
+ subcarrier_spacing_ssb_r17_e_ subcarrier_spacing_ssb_r17;
+ ssb_position_qcl_relation_nr_r17_e ssb_position_qcl_common_nr_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// CarrierFreqUTRA-FDD ::= SEQUENCE
struct carrier_freq_utra_fdd_s {
struct thresh_x_q_r9_s_ {
@@ -717,6 +1115,36 @@ struct eab_cfg_r11_s {
void to_json(json_writer& j) const;
};
+// EphemerisOrbitalParameters-r17 ::= SEQUENCE
+struct ephemeris_orbital_params_r17_s {
+ uint64_t semi_major_axis_r17 = 0;
+ uint32_t eccentricity_r17 = 0;
+ uint32_t periapsis_r17 = 0;
+ uint32_t longitude_r17 = 0;
+ int32_t inclination_r17 = -67108864;
+ uint32_t anomaly_r17 = 0;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// EphemerisStateVectors-r17 ::= SEQUENCE
+struct ephemeris_state_vectors_r17_s {
+ int32_t position_x_r17 = -33554432;
+ int32_t position_y_r17 = -33554432;
+ int32_t position_z_r17 = -33554432;
+ int32_t velocity_vx_r17 = -131072;
+ int32_t velocity_vy_r17 = -131072;
+ int32_t velocity_vz_r17 = -131072;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// InterFreqCarrierFreqInfo ::= SEQUENCE
struct inter_freq_carrier_freq_info_s {
struct thresh_x_q_r9_s_ {
@@ -725,27 +1153,27 @@ struct inter_freq_carrier_freq_info_s {
};
// member variables
- bool ext = false;
- bool p_max_present = false;
- bool t_resel_eutra_sf_present = false;
- bool cell_resel_prio_present = false;
- bool q_offset_freq_present = false;
- bool inter_freq_neigh_cell_list_present = false;
- bool inter_freq_black_cell_list_present = false;
- uint32_t dl_carrier_freq = 0;
- int8_t q_rx_lev_min = -70;
- int8_t p_max = -30;
- uint8_t t_resel_eutra = 0;
- speed_state_scale_factors_s t_resel_eutra_sf;
- uint8_t thresh_x_high = 0;
- uint8_t thresh_x_low = 0;
- allowed_meas_bw_e allowed_meas_bw;
- bool presence_ant_port1 = false;
- uint8_t cell_resel_prio = 0;
- fixed_bitstring<2> neigh_cell_cfg;
- q_offset_range_e q_offset_freq;
- inter_freq_neigh_cell_list_l inter_freq_neigh_cell_list;
- inter_freq_black_cell_list_l inter_freq_black_cell_list;
+ bool ext = false;
+ bool p_max_present = false;
+ bool t_resel_eutra_sf_present = false;
+ bool cell_resel_prio_present = false;
+ bool q_offset_freq_present = false;
+ bool inter_freq_neigh_cell_list_present = false;
+ bool inter_freq_excluded_cell_list_present = false;
+ uint32_t dl_carrier_freq = 0;
+ int8_t q_rx_lev_min = -70;
+ int8_t p_max = -30;
+ uint8_t t_resel_eutra = 0;
+ speed_state_scale_factors_s t_resel_eutra_sf;
+ uint8_t thresh_x_high = 0;
+ uint8_t thresh_x_low = 0;
+ allowed_meas_bw_e allowed_meas_bw;
+ bool presence_ant_port1 = false;
+ uint8_t cell_resel_prio = 0;
+ fixed_bitstring<2> neigh_cell_cfg;
+ q_offset_range_e q_offset_freq;
+ inter_freq_neigh_cell_list_l inter_freq_neigh_cell_list;
+ inter_freq_excluded_cell_list_l inter_freq_excluded_cell_list;
// ...
// group 0
bool q_qual_min_r9_present = false;
@@ -769,38 +1197,38 @@ struct inter_freq_carrier_freq_info_r12_s {
};
// member variables
- bool ext = false;
- bool p_max_r12_present = false;
- bool t_resel_eutra_sf_r12_present = false;
- bool cell_resel_prio_r12_present = false;
- bool q_offset_freq_r12_present = false;
- bool inter_freq_neigh_cell_list_r12_present = false;
- bool inter_freq_black_cell_list_r12_present = false;
- bool q_qual_min_r12_present = false;
- bool thresh_x_q_r12_present = false;
- bool q_qual_min_wb_r12_present = false;
- bool multi_band_info_list_r12_present = false;
- bool reduced_meas_performance_r12_present = false;
- bool q_qual_min_rsrq_on_all_symbols_r12_present = false;
- uint32_t dl_carrier_freq_r12 = 0;
- int8_t q_rx_lev_min_r12 = -70;
- int8_t p_max_r12 = -30;
- uint8_t t_resel_eutra_r12 = 0;
- speed_state_scale_factors_s t_resel_eutra_sf_r12;
- uint8_t thresh_x_high_r12 = 0;
- uint8_t thresh_x_low_r12 = 0;
- allowed_meas_bw_e allowed_meas_bw_r12;
- bool presence_ant_port1_r12 = false;
- uint8_t cell_resel_prio_r12 = 0;
- fixed_bitstring<2> neigh_cell_cfg_r12;
- q_offset_range_e q_offset_freq_r12;
- inter_freq_neigh_cell_list_l inter_freq_neigh_cell_list_r12;
- inter_freq_black_cell_list_l inter_freq_black_cell_list_r12;
- int8_t q_qual_min_r12 = -34;
- thresh_x_q_r12_s_ thresh_x_q_r12;
- int8_t q_qual_min_wb_r12 = -34;
- multi_band_info_list_r11_l multi_band_info_list_r12;
- int8_t q_qual_min_rsrq_on_all_symbols_r12 = -34;
+ bool ext = false;
+ bool p_max_r12_present = false;
+ bool t_resel_eutra_sf_r12_present = false;
+ bool cell_resel_prio_r12_present = false;
+ bool q_offset_freq_r12_present = false;
+ bool inter_freq_neigh_cell_list_r12_present = false;
+ bool inter_freq_excluded_cell_list_r12_present = false;
+ bool q_qual_min_r12_present = false;
+ bool thresh_x_q_r12_present = false;
+ bool q_qual_min_wb_r12_present = false;
+ bool multi_band_info_list_r12_present = false;
+ bool reduced_meas_performance_r12_present = false;
+ bool q_qual_min_rsrq_on_all_symbols_r12_present = false;
+ uint32_t dl_carrier_freq_r12 = 0;
+ int8_t q_rx_lev_min_r12 = -70;
+ int8_t p_max_r12 = -30;
+ uint8_t t_resel_eutra_r12 = 0;
+ speed_state_scale_factors_s t_resel_eutra_sf_r12;
+ uint8_t thresh_x_high_r12 = 0;
+ uint8_t thresh_x_low_r12 = 0;
+ allowed_meas_bw_e allowed_meas_bw_r12;
+ bool presence_ant_port1_r12 = false;
+ uint8_t cell_resel_prio_r12 = 0;
+ fixed_bitstring<2> neigh_cell_cfg_r12;
+ q_offset_range_e q_offset_freq_r12;
+ inter_freq_neigh_cell_list_l inter_freq_neigh_cell_list_r12;
+ inter_freq_excluded_cell_list_l inter_freq_excluded_cell_list_r12;
+ int8_t q_qual_min_r12 = -34;
+ thresh_x_q_r12_s_ thresh_x_q_r12;
+ int8_t q_qual_min_wb_r12 = -34;
+ multi_band_info_list_r11_l multi_band_info_list_r12;
+ int8_t q_qual_min_rsrq_on_all_symbols_r12 = -34;
// ...
// sequence methods
@@ -887,6 +1315,23 @@ struct inter_freq_carrier_freq_info_v1530_s {
void to_json(json_writer& j) const;
};
+// InterFreqCarrierFreqInfo-v1610 ::= SEQUENCE
+struct inter_freq_carrier_freq_info_v1610_s {
+ bool alt_cell_resel_prio_r16_present = false;
+ bool alt_cell_resel_sub_prio_r16_present = false;
+ bool rss_cfg_carrier_info_r16_present = false;
+ bool inter_freq_neigh_cell_list_v1610_present = false;
+ uint8_t alt_cell_resel_prio_r16 = 0;
+ cell_resel_sub_prio_r13_e alt_cell_resel_sub_prio_r16;
+ rss_cfg_carrier_info_r16_s rss_cfg_carrier_info_r16;
+ inter_freq_neigh_cell_list_v1610_l inter_freq_neigh_cell_list_v1610;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// IntraFreqNeighCellInfo ::= SEQUENCE
struct intra_freq_neigh_cell_info_s {
bool ext = false;
@@ -900,6 +1345,16 @@ struct intra_freq_neigh_cell_info_s {
void to_json(json_writer& j) const;
};
+// IntraFreqNeighCellInfo-v1610 ::= SEQUENCE
+struct intra_freq_neigh_cell_info_v1610_s {
+ rss_meas_pwr_bias_r16_e rss_meas_pwr_bias_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// MBMS-CarrierType-r14 ::= SEQUENCE
struct mbms_carrier_type_r14_s {
struct carrier_type_r14_opts {
@@ -942,6 +1397,29 @@ struct mbms_sai_inter_freq_v1140_s {
void to_json(json_writer& j) const;
};
+// MBSFN-AreaInfo-r17 ::= SEQUENCE
+struct mbsfn_area_info_r17_s {
+ struct pmch_bw_r17_opts {
+ enum options { n40, n35, n30, spare1, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<pmch_bw_r17_opts> pmch_bw_r17_e_;
+
+ // member variables
+ bool ext = false;
+ mbsfn_area_info_r16_s mbsfn_area_info_r17;
+ pmch_bw_r17_e_ pmch_bw_r17;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// MBSFN-AreaInfo-r9 ::= SEQUENCE
struct mbsfn_area_info_r9_s {
struct non_mbsfn_region_len_opts {
@@ -1037,12 +1515,26 @@ struct mbsfn_area_info_r9_s {
void to_json(json_writer& j) const;
};
+// NR-CarrierList-r16 ::= SEQUENCE (SIZE (1..8)) OF MeasIdleCarrierNR-r16
+using nr_carrier_list_r16_l = dyn_array<meas_idle_carrier_nr_r16_s>;
+
// NeighCellListCDMA2000 ::= SEQUENCE (SIZE (1..16)) OF NeighCellCDMA2000
using neigh_cell_list_cdma2000_l = dyn_array<neigh_cell_cdma2000_s>;
// NeighCellListCDMA2000-v920 ::= SEQUENCE (SIZE (1..16)) OF NeighCellCDMA2000-v920
using neigh_cell_list_cdma2000_v920_l = dyn_array<neigh_cell_cdma2000_v920_s>;
+// PLMN-Info-r16 ::= SEQUENCE
+struct plmn_info_r16_s {
+ bool nr_band_list_r16_present = false;
+ fixed_bitstring<10> nr_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;
+};
+
// ReselectionInfoRelay-r13 ::= SEQUENCE
struct resel_info_relay_r13_s {
struct min_hyst_r13_opts {
@@ -1159,6 +1651,45 @@ struct sl_pppp_tx_cfg_idx_r15_s {
void to_json(json_writer& j) const;
};
+// SatelliteInfo-r17 ::= SEQUENCE
+struct satellite_info_r17_s {
+ struct service_info_r17_s_ {
+ bool tle_ephemeris_params_r17_present = false;
+ bool t_service_start_r17_present = false;
+ tle_ephemeris_params_r17_s tle_ephemeris_params_r17;
+ uint32_t t_service_start_r17 = 0;
+ };
+ struct footprint_info_r17_s_ {
+ struct ref_point_r17_s_ {
+ int32_t longitude_r17 = -131072;
+ int32_t latitude_r17 = -131072;
+ };
+ struct elevation_angles_r17_s_ {
+ bool elevation_angle_left_r17_present = false;
+ int8_t elevation_angle_right_r17 = -14;
+ int8_t elevation_angle_left_r17 = -14;
+ };
+
+ // member variables
+ bool ref_point_r17_present = false;
+ bool elevation_angles_r17_present = false;
+ bool radius_r17_present = false;
+ ref_point_r17_s_ ref_point_r17;
+ elevation_angles_r17_s_ elevation_angles_r17;
+ uint16_t radius_r17 = 1;
+ };
+
+ // member variables
+ uint16_t satellite_id_r17 = 0;
+ service_info_r17_s_ service_info_r17;
+ footprint_info_r17_s_ footprint_info_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// UAC-BarringInfoSet-r15 ::= SEQUENCE
struct uac_barr_info_set_r15_s {
struct uac_barr_factor_r15_opts {
@@ -1190,6 +1721,28 @@ struct uac_barr_info_set_r15_s {
void to_json(json_writer& j) const;
};
+// UAC-BarringInfoSet-v1700 ::= SEQUENCE
+struct uac_barr_info_set_v1700_s {
+ struct uac_barr_factor_for_ai3_r17_opts {
+ enum options { p00, p05, p10, p15, p20, p25, p30, p40, p50, p60, p70, p75, p80, p85, p90, p95, nulltype } value;
+ typedef float number_type;
+
+ const char* to_string() const;
+ float to_number() const;
+ const char* to_number_string() const;
+ };
+ typedef enumerated<uac_barr_factor_for_ai3_r17_opts> uac_barr_factor_for_ai3_r17_e_;
+
+ // member variables
+ bool uac_barr_factor_for_ai3_r17_present = false;
+ uac_barr_factor_for_ai3_r17_e_ uac_barr_factor_for_ai3_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// UAC-BarringPerPLMN-r15 ::= SEQUENCE
struct uac_barr_per_plmn_r15_s {
struct uac_ac_barr_list_type_r15_c_ {
@@ -1253,6 +1806,47 @@ struct uac_barr_per_plmn_r15_s {
void to_json(json_writer& j) const;
};
+// ApplicableDisasterInfo-r17 ::= CHOICE
+struct applicable_disaster_info_r17_c {
+ using ded_plmns_r17_l_ = dyn_array<plmn_id_s>;
+ struct types_opts {
+ enum options { no_disaster_roaming_r17, disaster_related_ind_r17, common_plmns_r17, ded_plmns_r17, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ applicable_disaster_info_r17_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
+ ded_plmns_r17_l_& ded_plmns_r17()
+ {
+ assert_choice_type(types::ded_plmns_r17, type_, "ApplicableDisasterInfo-r17");
+ return c;
+ }
+ const ded_plmns_r17_l_& ded_plmns_r17() const
+ {
+ assert_choice_type(types::ded_plmns_r17, type_, "ApplicableDisasterInfo-r17");
+ return c;
+ }
+ void set_no_disaster_roaming_r17();
+ void set_disaster_related_ind_r17();
+ void set_common_plmns_r17();
+ ded_plmns_r17_l_& set_ded_plmns_r17();
+
+private:
+ types type_;
+ ded_plmns_r17_l_ c;
+};
+
+// BandListENDC-r16 ::= SEQUENCE (SIZE (1..10)) OF INTEGER (1..1024)
+using band_list_endc_r16_l = bounded_array<uint16_t, 10>;
+
// CarrierFreqInfoUTRA-v1250 ::= SEQUENCE
struct carrier_freq_info_utra_v1250_s {
bool reduced_meas_performance_r12_present = false;
@@ -1263,9 +1857,21 @@ struct carrier_freq_info_utra_v1250_s {
void to_json(json_writer& j) const;
};
+// CarrierFreqListNBIOT-r16 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqNBIOT-r16
+using carrier_freq_list_nbiot_r16_l = dyn_array<carrier_freq_nbiot_r16_s>;
+
// CarrierFreqListNR-r15 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqNR-r15
using carrier_freq_list_nr_r15_l = dyn_array<carrier_freq_nr_r15_s>;
+// CarrierFreqListNR-v1610 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqNR-v1610
+using carrier_freq_list_nr_v1610_l = dyn_array<carrier_freq_nr_v1610_s>;
+
+// CarrierFreqListNR-v1700 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqNR-v1700
+using carrier_freq_list_nr_v1700_l = dyn_array<carrier_freq_nr_v1700_s>;
+
+// CarrierFreqListNR-v1720 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqNR-v1720
+using carrier_freq_list_nr_v1720_l = dyn_array<carrier_freq_nr_v1720_s>;
+
// CarrierFreqListUTRA-FDD ::= SEQUENCE (SIZE (1..16)) OF CarrierFreqUTRA-FDD
using carrier_freq_list_utra_fdd_l = dyn_array<carrier_freq_utra_fdd_s>;
@@ -1345,6 +1951,19 @@ struct cell_resel_serving_freq_info_v1310_s {
void to_json(json_writer& j) const;
};
+// CellReselectionServingFreqInfo-v1610 ::= SEQUENCE
+struct cell_resel_serving_freq_info_v1610_s {
+ bool alt_cell_resel_prio_r16_present = false;
+ bool alt_cell_resel_sub_prio_r16_present = false;
+ uint8_t alt_cell_resel_prio_r16 = 0;
+ cell_resel_sub_prio_r13_e alt_cell_resel_sub_prio_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// EAB-ConfigPLMN-r11 ::= SEQUENCE
struct eab_cfg_plmn_r11_s {
bool eab_cfg_r11_present = false;
@@ -1371,6 +1990,9 @@ using inter_freq_carrier_freq_list_v1350_l = dyn_array<inter_freq_carrier_freq_i
// InterFreqCarrierFreqList-v1530 ::= SEQUENCE (SIZE (1..8)) OF InterFreqCarrierFreqInfo-v1530
using inter_freq_carrier_freq_list_v1530_l = dyn_array<inter_freq_carrier_freq_info_v1530_s>;
+// InterFreqCarrierFreqList-v1610 ::= SEQUENCE (SIZE (1..8)) OF InterFreqCarrierFreqInfo-v1610
+using inter_freq_carrier_freq_list_v1610_l = dyn_array<inter_freq_carrier_freq_info_v1610_s>;
+
// InterFreqCarrierFreqListExt-r12 ::= SEQUENCE (SIZE (1..8)) OF InterFreqCarrierFreqInfo-r12
using inter_freq_carrier_freq_list_ext_r12_l = dyn_array<inter_freq_carrier_freq_info_r12_s>;
@@ -1389,12 +2011,18 @@ using inter_freq_carrier_freq_list_ext_v1360_l = dyn_array<inter_freq_carrier_fr
// InterFreqCarrierFreqListExt-v1530 ::= SEQUENCE (SIZE (1..8)) OF InterFreqCarrierFreqInfo-v1530
using inter_freq_carrier_freq_list_ext_v1530_l = dyn_array<inter_freq_carrier_freq_info_v1530_s>;
-// IntraFreqBlackCellList ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdRange
-using intra_freq_black_cell_list_l = dyn_array<pci_range_s>;
+// InterFreqCarrierFreqListExt-v1610 ::= SEQUENCE (SIZE (1..8)) OF InterFreqCarrierFreqInfo-v1610
+using inter_freq_carrier_freq_list_ext_v1610_l = dyn_array<inter_freq_carrier_freq_info_v1610_s>;
+
+// IntraFreqExcludedCellList ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdRange
+using intra_freq_excluded_cell_list_l = dyn_array<pci_range_s>;
// IntraFreqNeighCellList ::= SEQUENCE (SIZE (1..16)) OF IntraFreqNeighCellInfo
using intra_freq_neigh_cell_list_l = dyn_array<intra_freq_neigh_cell_info_s>;
+// IntraFreqNeighCellList-v1610 ::= SEQUENCE (SIZE (1..16)) OF IntraFreqNeighCellInfo-v1610
+using intra_freq_neigh_cell_list_v1610_l = dyn_array<intra_freq_neigh_cell_info_v1610_s>;
+
// IntraFreqNeighHSDN-CellList-r15 ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdRange
using intra_freq_neigh_hsdn_cell_list_r15_l = dyn_array<pci_range_s>;
@@ -1439,9 +2067,27 @@ using mbms_sai_inter_freq_list_r11_l = dyn_array<mbms_sai_inter_freq_r11_s>;
// MBMS-SAI-InterFreqList-v1140 ::= SEQUENCE (SIZE (1..8)) OF MBMS-SAI-InterFreq-v1140
using mbms_sai_inter_freq_list_v1140_l = dyn_array<mbms_sai_inter_freq_v1140_s>;
+// MBSFN-AreaInfoList-r16 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-AreaInfo-r16
+using mbsfn_area_info_list_r16_l = dyn_array<mbsfn_area_info_r16_s>;
+
+// MBSFN-AreaInfoList-r17 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-AreaInfo-r17
+using mbsfn_area_info_list_r17_l = dyn_array<mbsfn_area_info_r17_s>;
+
// MBSFN-AreaInfoList-r9 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-AreaInfo-r9
using mbsfn_area_info_list_r9_l = dyn_array<mbsfn_area_info_r9_s>;
+// MeasIdleConfigSIB-NR-r16 ::= SEQUENCE
+struct meas_idle_cfg_sib_nr_r16_s {
+ bool ext = false;
+ nr_carrier_list_r16_l meas_idle_carrier_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;
+};
+
// MeasIdleConfigSIB-r15 ::= SEQUENCE
struct meas_idle_cfg_sib_r15_s {
bool ext = false;
@@ -1454,6 +2100,9 @@ struct meas_idle_cfg_sib_r15_s {
void to_json(json_writer& j) const;
};
+// PLMN-InfoList-r16 ::= SEQUENCE (SIZE (0..6)) OF PLMN-Info-r16
+using plmn_info_list_r16_l = dyn_array<plmn_info_r16_s>;
+
// RedistributionServingInfo-r13 ::= SEQUENCE
struct redist_serving_info_r13_s {
struct t360_r13_opts {
@@ -1829,9 +2478,104 @@ struct sl_disc_cfg_remote_ue_r13_s {
void to_json(json_writer& j) const;
};
+// SL-NR-AnchorCarrierFreqList-r16 ::= SEQUENCE (SIZE (1..8)) OF INTEGER (0..3279165)
+using sl_nr_anchor_carrier_freq_list_r16_l = bounded_array<uint32_t, 8>;
+
// SL-SyncConfigList-r12 ::= SEQUENCE (SIZE (1..16)) OF SL-SyncConfig-r12
using sl_sync_cfg_list_r12_l = dyn_array<sl_sync_cfg_r12_s>;
+// SatelliteInfoList-r17 ::= SEQUENCE (SIZE (1..4)) OF SatelliteInfo-r17
+using satellite_info_list_r17_l = dyn_array<satellite_info_r17_s>;
+
+// ServingSatelliteInfo-r17 ::= SEQUENCE
+struct serving_satellite_info_r17_s {
+ struct ephemeris_info_r17_c_ {
+ struct types_opts {
+ enum options { state_vectors, orbital_params, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ ephemeris_info_r17_c_() = default;
+ ephemeris_info_r17_c_(const ephemeris_info_r17_c_& other);
+ ephemeris_info_r17_c_& operator=(const ephemeris_info_r17_c_& other);
+ ~ephemeris_info_r17_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
+ ephemeris_state_vectors_r17_s& state_vectors()
+ {
+ assert_choice_type(types::state_vectors, type_, "ephemerisInfo-r17");
+ return c.get<ephemeris_state_vectors_r17_s>();
+ }
+ ephemeris_orbital_params_r17_s& orbital_params()
+ {
+ assert_choice_type(types::orbital_params, type_, "ephemerisInfo-r17");
+ return c.get<ephemeris_orbital_params_r17_s>();
+ }
+ const ephemeris_state_vectors_r17_s& state_vectors() const
+ {
+ assert_choice_type(types::state_vectors, type_, "ephemerisInfo-r17");
+ return c.get<ephemeris_state_vectors_r17_s>();
+ }
+ const ephemeris_orbital_params_r17_s& orbital_params() const
+ {
+ assert_choice_type(types::orbital_params, type_, "ephemerisInfo-r17");
+ return c.get<ephemeris_orbital_params_r17_s>();
+ }
+ ephemeris_state_vectors_r17_s& set_state_vectors();
+ ephemeris_orbital_params_r17_s& set_orbital_params();
+
+ private:
+ types type_;
+ choice_buffer_t<ephemeris_orbital_params_r17_s, ephemeris_state_vectors_r17_s> c;
+
+ void destroy_();
+ };
+ struct nta_common_params_minus17_s_ {
+ bool nta_common_r17_present = false;
+ bool nta_common_drift_r17_present = false;
+ bool nta_common_drift_variation_r17_present = false;
+ uint32_t nta_common_r17 = 0;
+ int32_t nta_common_drift_r17 = -261935;
+ uint16_t nta_common_drift_variation_r17 = 0;
+ };
+ struct ul_sync_validity_dur_r17_opts {
+ enum options { s5, s10, s15, s20, s25, s30, s35, s40, s45, s50, s55, s60, s120, s180, s240, s900, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<ul_sync_validity_dur_r17_opts> ul_sync_validity_dur_r17_e_;
+ struct epoch_time_r17_s_ {
+ uint16_t start_sfn_r17 = 0;
+ uint8_t start_sub_frame_r17 = 0;
+ };
+
+ // member variables
+ bool ext = false;
+ bool epoch_time_r17_present = false;
+ bool k_mac_r17_present = false;
+ ephemeris_info_r17_c_ ephemeris_info_r17;
+ nta_common_params_minus17_s_ nta_common_params_minus17;
+ ul_sync_validity_dur_r17_e_ ul_sync_validity_dur_r17;
+ epoch_time_r17_s_ epoch_time_r17;
+ uint16_t k_offset_r17 = 0;
+ uint16_t k_mac_r17 = 1;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// UAC-AC1-SelectAssistInfo-r15 ::= ENUMERATED
struct uac_ac1_select_assist_info_r15_opts {
enum options { a, b, c, nulltype } value;
@@ -1840,9 +2584,20 @@ struct uac_ac1_select_assist_info_r15_opts {
};
typedef enumerated<uac_ac1_select_assist_info_r15_opts> uac_ac1_select_assist_info_r15_e;
+// UAC-AC1-SelectAssistInfo-r16 ::= ENUMERATED
+struct uac_ac1_select_assist_info_r16_opts {
+ enum options { a, b, c, not_cfgured, nulltype } value;
+
+ const char* to_string() const;
+};
+typedef enumerated<uac_ac1_select_assist_info_r16_opts> uac_ac1_select_assist_info_r16_e;
+
// UAC-BarringInfoSetList-r15 ::= SEQUENCE (SIZE (1..8)) OF UAC-BarringInfoSet-r15
using uac_barr_info_set_list_r15_l = dyn_array<uac_barr_info_set_r15_s>;
+// UAC-BarringInfoSetList-v1700 ::= SEQUENCE (SIZE (1..8)) OF UAC-BarringInfoSet-v1700
+using uac_barr_info_set_list_v1700_l = dyn_array<uac_barr_info_set_v1700_s>;
+
// UAC-BarringPerPLMN-List-r15 ::= SEQUENCE (SIZE (1..6)) OF UAC-BarringPerPLMN-r15
using uac_barr_per_plmn_list_r15_l = dyn_array<uac_barr_per_plmn_r15_s>;
@@ -1959,6 +2714,10 @@ struct sib_type13_r9_s {
// ...
// group 0
copy_ptr<mbms_notif_cfg_v1430_s> notif_cfg_v1430;
+ // group 1
+ copy_ptr<mbsfn_area_info_list_r16_l> mbsfn_area_info_list_r16;
+ // group 2
+ copy_ptr<mbsfn_area_info_list_r17_l> mbsfn_area_info_list_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2400,6 +3159,8 @@ struct sib_type21_r14_s {
sl_v2x_cfg_common_r14_s sl_v2x_cfg_common_r14;
dyn_octstring late_non_crit_ext;
// ...
+ // group 0
+ 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;
@@ -2418,6 +3179,12 @@ struct sib_type24_r15_s {
speed_state_scale_factors_s t_resel_nr_sf_r15;
dyn_octstring late_non_crit_ext;
// ...
+ // group 0
+ copy_ptr<carrier_freq_list_nr_v1610_l> carrier_freq_list_nr_v1610;
+ // group 1
+ copy_ptr<carrier_freq_list_nr_v1700_l> carrier_freq_list_nr_v1700;
+ // group 2
+ copy_ptr<carrier_freq_list_nr_v1720_l> carrier_freq_list_nr_v1720;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2476,6 +3243,15 @@ struct sib_type25_r15_s {
void destroy_();
};
+ struct ab_per_rsrp_r16_opts {
+ enum options { thresh0, thresh1, thresh2, thresh3, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<ab_per_rsrp_r16_opts> ab_per_rsrp_r16_e_;
+ using uac_ac1_select_assist_info_r16_l_ = bounded_array<uac_ac1_select_assist_info_r16_e, 6>;
// member variables
bool ext = false;
@@ -2489,6 +3265,13 @@ struct sib_type25_r15_s {
uac_ac1_select_assist_info_r15_c_ uac_ac1_select_assist_info_r15;
dyn_octstring late_non_crit_ext;
// ...
+ // group 0
+ bool ab_per_rsrp_r16_present = false;
+ ab_per_rsrp_r16_e_ ab_per_rsrp_r16;
+ // group 1
+ copy_ptr<uac_ac1_select_assist_info_r16_l_> uac_ac1_select_assist_info_r16;
+ // group 2
+ copy_ptr<uac_barr_info_set_list_v1700_l> uac_barr_info_set_list_v1700;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2522,6 +3305,77 @@ struct sib_type26_r15_s {
void to_json(json_writer& j) const;
};
+// SystemInformationBlockType26a-r16 ::= SEQUENCE
+struct sib_type26a_r16_s {
+ bool ext = false;
+ bool late_non_crit_ext_present = false;
+ plmn_info_list_r16_l plmn_info_list_r16;
+ band_list_endc_r16_l band_list_endc_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;
+};
+
+// SystemInformationBlockType27-r16 ::= SEQUENCE
+struct sib_type27_r16_s {
+ bool ext = false;
+ bool carrier_freq_list_nbiot_r16_present = false;
+ bool late_non_crit_ext_present = false;
+ carrier_freq_list_nbiot_r16_l carrier_freq_list_nbiot_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;
+};
+
+// SystemInformationBlockType28-r16 ::= SEQUENCE
+struct sib_type28_r16_s {
+ struct segment_type_r16_opts {
+ enum options { not_last_segment, last_segment, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<segment_type_r16_opts> segment_type_r16_e_;
+
+ // member variables
+ bool ext = false;
+ bool late_non_crit_ext_present = false;
+ uint8_t segment_num_r16 = 0;
+ segment_type_r16_e_ segment_type_r16;
+ dyn_octstring segment_container_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;
+};
+
+// SystemInformationBlockType29-r16 ::= SEQUENCE
+struct sib_type29_r16_s {
+ bool ext = false;
+ bool res_reserv_cfg_common_dl_r16_present = false;
+ bool res_reserv_cfg_common_ul_r16_present = false;
+ bool late_non_crit_ext_present = false;
+ res_reserv_cfg_dl_r16_s res_reserv_cfg_common_dl_r16;
+ res_reserv_cfg_ul_r16_s res_reserv_cfg_common_ul_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;
+};
+
// SystemInformationBlockType3 ::= SEQUENCE
struct sib_type3_s {
struct cell_resel_info_common_s_ {
@@ -2651,6 +3505,61 @@ struct sib_type3_s {
bool crs_intf_mitig_neigh_cells_ce_r15_present = false;
copy_ptr<cell_resel_info_hsdn_r15_s> cell_resel_info_hsdn_r15;
copy_ptr<cell_sel_info_ce_v1530_s> cell_sel_info_ce_v1530;
+ // group 8
+ copy_ptr<cell_resel_serving_freq_info_v1610_s> cell_resel_serving_freq_info_v1610;
+ // group 9
+ bool t_service_r17_present = false;
+ uint32_t t_service_r17 = 0;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// SystemInformationBlockType30-r17 ::= SEQUENCE
+struct sib_type30_r17_s {
+ using common_plmns_with_disaster_condition_r17_l_ = dyn_array<plmn_id_s>;
+ using applicable_disaster_info_list_r17_l_ = dyn_array<applicable_disaster_info_r17_c>;
+
+ // member variables
+ bool ext = false;
+ bool common_plmns_with_disaster_condition_r17_present = false;
+ bool applicable_disaster_info_list_r17_present = false;
+ bool late_non_crit_ext_present = false;
+ common_plmns_with_disaster_condition_r17_l_ common_plmns_with_disaster_condition_r17;
+ applicable_disaster_info_list_r17_l_ applicable_disaster_info_list_r17;
+ 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;
+};
+
+// SystemInformationBlockType31-r17 ::= SEQUENCE
+struct sib_type31_r17_s {
+ bool ext = false;
+ bool late_non_crit_ext_present = false;
+ serving_satellite_info_r17_s serving_satellite_info_r17;
+ 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;
+};
+
+// SystemInformationBlockType32-r17 ::= SEQUENCE
+struct sib_type32_r17_s {
+ bool ext = false;
+ bool satellite_info_list_r17_present = false;
+ bool late_non_crit_ext_present = false;
+ satellite_info_list_r17_l satellite_info_list_r17;
+ dyn_octstring late_non_crit_ext;
+ // ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2660,18 +3569,21 @@ struct sib_type3_s {
// SystemInformationBlockType4 ::= SEQUENCE
struct sib_type4_s {
- bool ext = false;
- bool intra_freq_neigh_cell_list_present = false;
- bool intra_freq_black_cell_list_present = false;
- bool csg_pci_range_present = false;
- intra_freq_neigh_cell_list_l intra_freq_neigh_cell_list;
- intra_freq_black_cell_list_l intra_freq_black_cell_list;
- pci_range_s csg_pci_range;
+ bool ext = false;
+ bool intra_freq_neigh_cell_list_present = false;
+ bool intra_freq_excluded_cell_list_present = false;
+ bool csg_pci_range_present = false;
+ intra_freq_neigh_cell_list_l intra_freq_neigh_cell_list;
+ intra_freq_excluded_cell_list_l intra_freq_excluded_cell_list;
+ pci_range_s csg_pci_range;
// ...
bool late_non_crit_ext_present = false;
dyn_octstring late_non_crit_ext;
// group 0
copy_ptr<intra_freq_neigh_hsdn_cell_list_r15_l> intra_freq_neigh_hsdn_cell_list_r15;
+ // group 1
+ copy_ptr<rss_cfg_carrier_info_r16_s> rss_cfg_carrier_info_r16;
+ copy_ptr<intra_freq_neigh_cell_list_v1610_l> intra_freq_neigh_cell_list_v1610;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2706,6 +3618,10 @@ struct sib_type5_s {
copy_ptr<inter_freq_carrier_freq_list_v1530_l> inter_freq_carrier_freq_list_v1530;
copy_ptr<inter_freq_carrier_freq_list_ext_v1530_l> inter_freq_carrier_freq_list_ext_v1530;
copy_ptr<meas_idle_cfg_sib_r15_s> meas_idle_cfg_sib_r15;
+ // group 7
+ copy_ptr<inter_freq_carrier_freq_list_v1610_l> inter_freq_carrier_freq_list_v1610;
+ copy_ptr<inter_freq_carrier_freq_list_ext_v1610_l> inter_freq_carrier_freq_list_ext_v1610;
+ copy_ptr<meas_idle_cfg_sib_nr_r16_s> meas_idle_cfg_sib_nr_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2855,12 +3771,23 @@ struct pos_sys_info_r15_ies_s {
pos_sib2_minus19_r15,
pos_sib3_minus1_r15,
// ...
+ pos_sib1_minus8_v1610,
+ pos_sib2_minus20_v1610,
+ pos_sib2_minus21_v1610,
+ pos_sib2_minus22_v1610,
+ pos_sib2_minus23_v1610,
+ pos_sib2_minus24_v1610,
+ pos_sib2_minus25_v1610,
+ pos_sib4_minus1_v1610,
+ pos_sib5_minus1_v1610,
+ pos_sib1_minus9_v1700,
+ pos_sib1_minus10_v1700,
nulltype
} value;
const char* to_string() const;
};
- typedef enumerated<types_opts, true> types;
+ typedef enumerated<types_opts, true, 11> types;
// choice methods
pos_sib_type_and_info_r15_item_c_() = default;
@@ -3008,6 +3935,61 @@ struct pos_sys_info_r15_ies_s {
assert_choice_type(types::pos_sib3_minus1_r15, type_, "posSIB-TypeAndInfo-r15-item");
return c.get<sib_pos_r15_s>();
}
+ sib_pos_r15_s& pos_sib1_minus8_v1610()
+ {
+ assert_choice_type(types::pos_sib1_minus8_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ sib_pos_r15_s& pos_sib2_minus20_v1610()
+ {
+ assert_choice_type(types::pos_sib2_minus20_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ sib_pos_r15_s& pos_sib2_minus21_v1610()
+ {
+ assert_choice_type(types::pos_sib2_minus21_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ sib_pos_r15_s& pos_sib2_minus22_v1610()
+ {
+ assert_choice_type(types::pos_sib2_minus22_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ sib_pos_r15_s& pos_sib2_minus23_v1610()
+ {
+ assert_choice_type(types::pos_sib2_minus23_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ sib_pos_r15_s& pos_sib2_minus24_v1610()
+ {
+ assert_choice_type(types::pos_sib2_minus24_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ sib_pos_r15_s& pos_sib2_minus25_v1610()
+ {
+ assert_choice_type(types::pos_sib2_minus25_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ sib_pos_r15_s& pos_sib4_minus1_v1610()
+ {
+ assert_choice_type(types::pos_sib4_minus1_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ sib_pos_r15_s& pos_sib5_minus1_v1610()
+ {
+ assert_choice_type(types::pos_sib5_minus1_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ sib_pos_r15_s& pos_sib1_minus9_v1700()
+ {
+ assert_choice_type(types::pos_sib1_minus9_v1700, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ sib_pos_r15_s& pos_sib1_minus10_v1700()
+ {
+ assert_choice_type(types::pos_sib1_minus10_v1700, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
const sib_pos_r15_s& pos_sib1_minus1_r15() const
{
assert_choice_type(types::pos_sib1_minus1_r15, type_, "posSIB-TypeAndInfo-r15-item");
@@ -3143,6 +4125,61 @@ struct pos_sys_info_r15_ies_s {
assert_choice_type(types::pos_sib3_minus1_r15, type_, "posSIB-TypeAndInfo-r15-item");
return c.get<sib_pos_r15_s>();
}
+ const sib_pos_r15_s& pos_sib1_minus8_v1610() const
+ {
+ assert_choice_type(types::pos_sib1_minus8_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ const sib_pos_r15_s& pos_sib2_minus20_v1610() const
+ {
+ assert_choice_type(types::pos_sib2_minus20_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ const sib_pos_r15_s& pos_sib2_minus21_v1610() const
+ {
+ assert_choice_type(types::pos_sib2_minus21_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ const sib_pos_r15_s& pos_sib2_minus22_v1610() const
+ {
+ assert_choice_type(types::pos_sib2_minus22_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ const sib_pos_r15_s& pos_sib2_minus23_v1610() const
+ {
+ assert_choice_type(types::pos_sib2_minus23_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ const sib_pos_r15_s& pos_sib2_minus24_v1610() const
+ {
+ assert_choice_type(types::pos_sib2_minus24_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ const sib_pos_r15_s& pos_sib2_minus25_v1610() const
+ {
+ assert_choice_type(types::pos_sib2_minus25_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ const sib_pos_r15_s& pos_sib4_minus1_v1610() const
+ {
+ assert_choice_type(types::pos_sib4_minus1_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ const sib_pos_r15_s& pos_sib5_minus1_v1610() const
+ {
+ assert_choice_type(types::pos_sib5_minus1_v1610, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ const sib_pos_r15_s& pos_sib1_minus9_v1700() const
+ {
+ assert_choice_type(types::pos_sib1_minus9_v1700, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
+ const sib_pos_r15_s& pos_sib1_minus10_v1700() const
+ {
+ assert_choice_type(types::pos_sib1_minus10_v1700, type_, "posSIB-TypeAndInfo-r15-item");
+ return c.get<sib_pos_r15_s>();
+ }
sib_pos_r15_s& set_pos_sib1_minus1_r15();
sib_pos_r15_s& set_pos_sib1_minus2_r15();
sib_pos_r15_s& set_pos_sib1_minus3_r15();
@@ -3170,6 +4207,17 @@ struct pos_sys_info_r15_ies_s {
sib_pos_r15_s& set_pos_sib2_minus18_r15();
sib_pos_r15_s& set_pos_sib2_minus19_r15();
sib_pos_r15_s& set_pos_sib3_minus1_r15();
+ sib_pos_r15_s& set_pos_sib1_minus8_v1610();
+ sib_pos_r15_s& set_pos_sib2_minus20_v1610();
+ sib_pos_r15_s& set_pos_sib2_minus21_v1610();
+ sib_pos_r15_s& set_pos_sib2_minus22_v1610();
+ sib_pos_r15_s& set_pos_sib2_minus23_v1610();
+ sib_pos_r15_s& set_pos_sib2_minus24_v1610();
+ sib_pos_r15_s& set_pos_sib2_minus25_v1610();
+ sib_pos_r15_s& set_pos_sib4_minus1_v1610();
+ sib_pos_r15_s& set_pos_sib5_minus1_v1610();
+ sib_pos_r15_s& set_pos_sib1_minus9_v1700();
+ sib_pos_r15_s& set_pos_sib1_minus10_v1700();
private:
types type_;
@@ -3218,14 +4266,19 @@ struct sib_info_item_c {
sib24_v1530,
sib25_v1530,
sib26_v1530,
+ sib26a_v1610,
+ sib27_v1610,
+ sib28_v1610,
+ sib29_v1610,
+ sib30_v1700,
+ sib31_v1700,
+ sib32_v1700,
nulltype
} value;
- typedef uint8_t number_type;
const char* to_string() const;
- uint8_t to_number() const;
};
- typedef enumerated<types_opts, true, 13> types;
+ typedef enumerated<types_opts, true, 20> types;
// choice methods
sib_info_item_c() = default;
@@ -3353,6 +4406,41 @@ struct sib_info_item_c {
assert_choice_type(types::sib26_v1530, type_, "sib-TypeAndInfo-item");
return c.get<sib_type26_r15_s>();
}
+ sib_type26a_r16_s& sib26a_v1610()
+ {
+ assert_choice_type(types::sib26a_v1610, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type26a_r16_s>();
+ }
+ sib_type27_r16_s& sib27_v1610()
+ {
+ assert_choice_type(types::sib27_v1610, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type27_r16_s>();
+ }
+ sib_type28_r16_s& sib28_v1610()
+ {
+ assert_choice_type(types::sib28_v1610, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type28_r16_s>();
+ }
+ sib_type29_r16_s& sib29_v1610()
+ {
+ assert_choice_type(types::sib29_v1610, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type29_r16_s>();
+ }
+ sib_type30_r17_s& sib30_v1700()
+ {
+ assert_choice_type(types::sib30_v1700, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type30_r17_s>();
+ }
+ sib_type31_r17_s& sib31_v1700()
+ {
+ assert_choice_type(types::sib31_v1700, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type31_r17_s>();
+ }
+ sib_type32_r17_s& sib32_v1700()
+ {
+ assert_choice_type(types::sib32_v1700, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type32_r17_s>();
+ }
const sib_type2_s& sib2() const
{
assert_choice_type(types::sib2, type_, "sib-TypeAndInfo-item");
@@ -3468,29 +4556,71 @@ struct sib_info_item_c {
assert_choice_type(types::sib26_v1530, type_, "sib-TypeAndInfo-item");
return c.get<sib_type26_r15_s>();
}
- sib_type2_s& set_sib2();
- sib_type3_s& set_sib3();
- sib_type4_s& set_sib4();
- sib_type5_s& set_sib5();
- sib_type6_s& set_sib6();
- sib_type7_s& set_sib7();
- sib_type8_s& set_sib8();
- sib_type9_s& set_sib9();
- sib_type10_s& set_sib10();
- sib_type11_s& set_sib11();
- sib_type12_r9_s& set_sib12_v920();
- sib_type13_r9_s& set_sib13_v920();
- sib_type14_r11_s& set_sib14_v1130();
- sib_type15_r11_s& set_sib15_v1130();
- sib_type16_r11_s& set_sib16_v1130();
- sib_type17_r12_s& set_sib17_v1250();
- sib_type18_r12_s& set_sib18_v1250();
- sib_type19_r12_s& set_sib19_v1250();
- sib_type20_r13_s& set_sib20_v1310();
- sib_type21_r14_s& set_sib21_v1430();
- sib_type24_r15_s& set_sib24_v1530();
- sib_type25_r15_s& set_sib25_v1530();
- sib_type26_r15_s& set_sib26_v1530();
+ const sib_type26a_r16_s& sib26a_v1610() const
+ {
+ assert_choice_type(types::sib26a_v1610, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type26a_r16_s>();
+ }
+ const sib_type27_r16_s& sib27_v1610() const
+ {
+ assert_choice_type(types::sib27_v1610, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type27_r16_s>();
+ }
+ const sib_type28_r16_s& sib28_v1610() const
+ {
+ assert_choice_type(types::sib28_v1610, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type28_r16_s>();
+ }
+ const sib_type29_r16_s& sib29_v1610() const
+ {
+ assert_choice_type(types::sib29_v1610, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type29_r16_s>();
+ }
+ const sib_type30_r17_s& sib30_v1700() const
+ {
+ assert_choice_type(types::sib30_v1700, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type30_r17_s>();
+ }
+ const sib_type31_r17_s& sib31_v1700() const
+ {
+ assert_choice_type(types::sib31_v1700, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type31_r17_s>();
+ }
+ const sib_type32_r17_s& sib32_v1700() const
+ {
+ assert_choice_type(types::sib32_v1700, type_, "sib-TypeAndInfo-item");
+ return c.get<sib_type32_r17_s>();
+ }
+ sib_type2_s& set_sib2();
+ sib_type3_s& set_sib3();
+ sib_type4_s& set_sib4();
+ sib_type5_s& set_sib5();
+ sib_type6_s& set_sib6();
+ sib_type7_s& set_sib7();
+ sib_type8_s& set_sib8();
+ sib_type9_s& set_sib9();
+ sib_type10_s& set_sib10();
+ sib_type11_s& set_sib11();
+ sib_type12_r9_s& set_sib12_v920();
+ sib_type13_r9_s& set_sib13_v920();
+ sib_type14_r11_s& set_sib14_v1130();
+ sib_type15_r11_s& set_sib15_v1130();
+ sib_type16_r11_s& set_sib16_v1130();
+ sib_type17_r12_s& set_sib17_v1250();
+ sib_type18_r12_s& set_sib18_v1250();
+ sib_type19_r12_s& set_sib19_v1250();
+ sib_type20_r13_s& set_sib20_v1310();
+ sib_type21_r14_s& set_sib21_v1430();
+ sib_type24_r15_s& set_sib24_v1530();
+ sib_type25_r15_s& set_sib25_v1530();
+ sib_type26_r15_s& set_sib26_v1530();
+ sib_type26a_r16_s& set_sib26a_v1610();
+ sib_type27_r16_s& set_sib27_v1610();
+ sib_type28_r16_s& set_sib28_v1610();
+ sib_type29_r16_s& set_sib29_v1610();
+ sib_type30_r17_s& set_sib30_v1700();
+ sib_type31_r17_s& set_sib31_v1700();
+ sib_type32_r17_s& set_sib32_v1700();
private:
types type_;
@@ -3509,7 +4639,14 @@ private:
sib_type24_r15_s,
sib_type25_r15_s,
sib_type26_r15_s,
+ sib_type26a_r16_s,
+ sib_type27_r16_s,
+ sib_type28_r16_s,
+ sib_type29_r16_s,
sib_type2_s,
+ sib_type30_r17_s,
+ sib_type31_r17_s,
+ sib_type32_r17_s,
sib_type3_s,
sib_type4_s,
sib_type5_s,
@@ -4039,23 +5176,21 @@ struct sib_type_v12j0_opts {
sib_type24_v1530,
sib_type25_v1530,
sib_type26_v1530,
- spare10,
- spare9,
- spare8,
- spare7,
- spare6,
- spare5,
- spare4,
+ sib_type26a_v1610,
+ sib_type27_v1610,
+ sib_type28_v1610,
+ sib_type29_v1610,
+ sib_type30_v1700,
+ sib_type31_v1700,
+ sib_type32_v1700,
spare3,
spare2,
spare1,
// ...
nulltype
} value;
- typedef uint8_t number_type;
const char* to_string() const;
- uint8_t to_number() const;
};
typedef enumerated<sib_type_v12j0_opts, true> sib_type_v12j0_e;
@@ -4090,6 +5225,23 @@ using sched_info_list_v12j0_l = dyn_array<sched_info_v12j0_s>;
// SchedulingInfoListExt-r12 ::= SEQUENCE (SIZE (1..32)) OF SchedulingInfoExt-r12
using sched_info_list_ext_r12_l = dyn_array<sched_info_ext_r12_s>;
+// SystemInformationBlockType1-v15g0-IEs ::= SEQUENCE
+struct sib_type1_v15g0_ies_s {
+ struct bw_reduced_access_related_info_v15g0_s_ {
+ sched_info_list_br_r13_l pos_sched_info_list_br_r15;
+ };
+
+ // member variables
+ bool bw_reduced_access_related_info_v15g0_present = false;
+ bool non_crit_ext_present = false;
+ bw_reduced_access_related_info_v15g0_s_ bw_reduced_access_related_info_v15g0;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// SystemInformationBlockType1-v12j0-IEs ::= SEQUENCE
struct sib_type1_v12j0_ies_s {
bool sched_info_list_v12j0_present = false;
@@ -4097,6 +5249,7 @@ struct sib_type1_v12j0_ies_s {
bool non_crit_ext_present = false;
sched_info_list_v12j0_l sched_info_list_v12j0;
sched_info_list_ext_r12_l sched_info_list_ext_r12;
+ sib_type1_v15g0_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
diff --git a/lib/include/srsran/asn1/rrc/common.h b/lib/include/srsran/asn1/rrc/common.h
index 77a887644..3f7c37db6 100644
--- a/lib/include/srsran/asn1/rrc/common.h
+++ b/lib/include/srsran/asn1/rrc/common.h
@@ -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_ACDC_CAT_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_R11 256
#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_NR_R15 1024
+#define ASN1_RRC_MAX_BANDS_ENDC_R16 10
#define ASN1_RRC_MAX_BW_CLASS_R10 16
#define ASN1_RRC_MAX_BW_COMB_SET_R10 32
#define ASN1_RRC_MAX_BARR_INFO_SET_R15 8
@@ -48,11 +51,12 @@ namespace rrc {
#define ASN1_RRC_MAX_CBR_REPORT_R14 72
#define ASN1_RRC_MAX_CDMA_BAND_CLASS 32
#define ASN1_RRC_MAX_CE_LEVEL_R13 4
-#define ASN1_RRC_MAX_CELL_BLACK 16
+#define ASN1_RRC_MAX_EXCLUDED_CELL 16
#define ASN1_RRC_MAX_CELL_HISTORY_R12 16
#define ASN1_RRC_MAX_CELL_INFO_GERAN_R9 32
#define ASN1_RRC_MAX_CELL_INFO_UTRA_R9 16
#define ASN1_RRC_MAX_CELL_MEAS_IDLE_R15 8
+#define ASN1_RRC_MAX_CELL_NR_R17 8
#define ASN1_RRC_MAX_COMB_IDC_R11 128
#define ASN1_RRC_MAX_CSI_IM_R11 3
#define ASN1_RRC_MAX_CSI_IM_R12 4
@@ -73,6 +77,8 @@ namespace rrc {
#define ASN1_RRC_MAX_CELL_MEAS 32
#define ASN1_RRC_MAX_CELL_REPORT 8
#define ASN1_RRC_MAX_CELL_SFTD 3
+#define ASN1_RRC_MAX_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_R15 6
#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_PER_CC_FEATURE_SETS_R15 32
#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_IDLE_R15 8
#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_SL_NR_R16 8
#define ASN1_RRC_MAX_FREQ_V2X_R14 8
#define ASN1_RRC_MAX_FREQ_V2X_MINUS1_R14 7
#define ASN1_RRC_MAX_GERAN_SI 10
#define ASN1_RRC_MAX_GNFG 16
+#define ASN1_RRC_MAX_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_EXT_R16 5
+#define ASN1_RRC_MAX_IDLE_MEAS_CARRIERS_R16 8
#define ASN1_RRC_MAX_LCG_R13 4
#define ASN1_RRC_MAX_LOG_MEAS_REPORT_R10 520
#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_NEIGH_CELL_R12 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_OBJ_ID 32
#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_RSTD_FREQ_R10 3
#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_R13 31
#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_SIMUL_BANDS_R10 64
#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_UTRA_FDD_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_LOG_MEAS_R10 4060
#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_NON_ANCHOR_CARRIERS_NB_R14 15
#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_SC_MTCH_NB_R14 64
#define ASN1_RRC_MAX_SI_MSG_NB_R13 8
+#define ASN1_RRC_MAX_TAC_NB_R17 12
/*******************************************************************************
* Struct Definitions
diff --git a/lib/include/srsran/asn1/rrc/common_ext.h b/lib/include/srsran/asn1/rrc/common_ext.h
index 8b18d9360..dd205d7d5 100644
--- a/lib/include/srsran/asn1/rrc/common_ext.h
+++ b/lib/include/srsran/asn1/rrc/common_ext.h
@@ -12,7 +12,7 @@
/*******************************************************************************
*
- * 3GPP TS ASN1 RRC v15.11.0 (2020-09)
+ * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
*
******************************************************************************/
diff --git a/lib/include/srsran/asn1/rrc/dl_ccch_msg.h b/lib/include/srsran/asn1/rrc/dl_ccch_msg.h
index 746cb827f..f22466556 100644
--- a/lib/include/srsran/asn1/rrc/dl_ccch_msg.h
+++ b/lib/include/srsran/asn1/rrc/dl_ccch_msg.h
@@ -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;
};
+// 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
struct idle_mode_mob_ctrl_info_s {
struct t320_opts {
@@ -327,9 +339,10 @@ struct rrc_conn_reject_v8a0_ies_s {
// RRCConnectionSetup-v8a0-IEs ::= SEQUENCE
struct rrc_conn_setup_v8a0_ies_s {
- bool late_non_crit_ext_present = false;
- bool non_crit_ext_present = false;
- dyn_octstring late_non_crit_ext;
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring late_non_crit_ext;
+ rrc_conn_setup_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -352,15 +365,7 @@ struct rrc_early_data_complete_v1590_ies_s {
// RedirectedCarrierInfo-r15-IEs ::= CHOICE
struct redirected_carrier_info_r15_ies_c {
struct types_opts {
- enum options {
- eutra_r15,
- geran_r15,
- utra_fdd_r15,
- cdma2000_hrpd_r15,
- cdma2000_minus1x_rtt_r15,
- utra_tdd_r15,
- nulltype
- } value;
+ enum options { eutra, geran, utra_fdd, cdma2000_hrpd, cdma2000_minus1x_rtt, utra_tdd, nulltype } value;
const char* to_string() const;
};
@@ -377,72 +382,72 @@ struct redirected_carrier_info_r15_ies_c {
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// 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>();
}
- 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>();
}
- 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>();
}
- 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>();
}
- 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>();
}
- 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>();
}
- 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>();
}
- 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>();
}
- 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>();
}
- 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>();
}
- 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>();
}
- 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>();
}
- uint32_t& set_eutra_r15();
- carrier_freqs_geran_s& set_geran_r15();
- uint16_t& set_utra_fdd_r15();
- carrier_freq_cdma2000_s& set_cdma2000_hrpd_r15();
- carrier_freq_cdma2000_s& set_cdma2000_minus1x_rtt_r15();
- carrier_freq_list_utra_tdd_r10_l& set_utra_tdd_r15();
+ uint32_t& set_eutra();
+ carrier_freqs_geran_s& set_geran();
+ uint16_t& set_utra_fdd();
+ carrier_freq_cdma2000_s& set_cdma2000_hrpd();
+ carrier_freq_cdma2000_s& set_cdma2000_minus1x_rtt();
+ carrier_freq_list_utra_tdd_r10_l& set_utra_tdd();
private:
types type_;
diff --git a/lib/include/srsran/asn1/rrc/dl_dcch_msg.h b/lib/include/srsran/asn1/rrc/dl_dcch_msg.h
index b82632259..de33de7a0 100644
--- a/lib/include/srsran/asn1/rrc/dl_dcch_msg.h
+++ b/lib/include/srsran/asn1/rrc/dl_dcch_msg.h
@@ -12,13 +12,14 @@
/*******************************************************************************
*
- * 3GPP TS ASN1 RRC v15.11.0 (2020-09)
+ * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
*
******************************************************************************/
#ifndef SRSASN1_RRC_DLDCCH_MSG_H
#define SRSASN1_RRC_DLDCCH_MSG_H
+#include "bcch_msg.h"
#include "dl_ccch_msg.h"
#include "security.h"
#include "si.h"
@@ -31,6 +32,34 @@ namespace rrc {
* Struct Definitions
******************************************************************************/
+// CondReconfigurationAddMod-r16 ::= SEQUENCE
+struct cond_recfg_add_mod_r16_s {
+ using trigger_condition_r16_l_ = bounded_array<uint8_t, 2>;
+
+ // member variables
+ bool ext = false;
+ bool trigger_condition_r16_present = false;
+ bool cond_recfg_to_apply_r16_present = false;
+ uint8_t cond_recfg_id_r16 = 1;
+ trigger_condition_r16_l_ trigger_condition_r16;
+ dyn_octstring cond_recfg_to_apply_r16;
+ // ...
+ // group 0
+ bool trigger_condition_sn_r17_present = false;
+ dyn_octstring trigger_condition_sn_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// CondReconfigurationToAddModList-r16 ::= SEQUENCE (SIZE (1..8)) OF CondReconfigurationAddMod-r16
+using cond_recfg_to_add_mod_list_r16_l = dyn_array<cond_recfg_add_mod_r16_s>;
+
+// CondReconfigurationToRemoveList-r16 ::= SEQUENCE (SIZE (1..8)) OF INTEGER (1..8)
+using cond_recfg_to_rem_list_r16_l = bounded_array<uint8_t, 8>;
+
// SCellConfigCommon-r15 ::= SEQUENCE
struct scell_cfg_common_r15_s {
bool rr_cfg_common_scell_r15_present = false;
@@ -73,6 +102,73 @@ struct sl_tf_idx_pair_r12b_s {
void to_json(json_writer& j) const;
};
+// SubframeAssignment-r15 ::= ENUMERATED
+struct sf_assign_r15_opts {
+ enum options { sa0, sa1, sa2, sa3, sa4, sa5, sa6, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+};
+typedef enumerated<sf_assign_r15_opts> sf_assign_r15_e;
+
+// ConditionalReconfiguration-r16 ::= SEQUENCE
+struct conditional_recfg_r16_s {
+ bool ext = false;
+ bool cond_recfg_to_add_mod_list_r16_present = false;
+ bool cond_recfg_to_rem_list_r16_present = false;
+ bool attempt_cond_reconf_r16_present = false;
+ cond_recfg_to_add_mod_list_r16_l cond_recfg_to_add_mod_list_r16;
+ cond_recfg_to_rem_list_r16_l cond_recfg_to_rem_list_r16;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// RRCConnectionReconfiguration-v1700-IEs ::= SEQUENCE
+struct rrc_conn_recfg_v1700_ies_s {
+ bool sib_type31_ded_r17_present = false;
+ bool scg_state_r17_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring sib_type31_ded_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// RSRP-ChangeThresh-r16 ::= ENUMERATED
+struct rsrp_change_thresh_r16_opts {
+ enum options {
+ db4,
+ db6,
+ db8,
+ db10,
+ db14,
+ db18,
+ db22,
+ db26,
+ db30,
+ db34,
+ spare6,
+ spare5,
+ spare4,
+ spare3,
+ spare2,
+ spare1,
+ nulltype
+ } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+};
+typedef enumerated<rsrp_change_thresh_r16_opts> rsrp_change_thresh_r16_e;
+
// SCellGroupToAddMod-r15 ::= SEQUENCE
struct scell_group_to_add_mod_r15_s {
bool scell_cfg_common_r15_present = false;
@@ -120,6 +216,40 @@ using sl_tf_idx_pair_list_r12b_l = dyn_array<sl_tf_idx_pair_r12b_s>;
// SL-TxPoolToReleaseList-r12 ::= SEQUENCE (SIZE (1..4)) OF INTEGER (1..4)
using sl_tx_pool_to_release_list_r12_l = bounded_array<uint8_t, 4>;
+// TDM-PatternConfig-r15 ::= CHOICE
+struct tdm_pattern_cfg_r15_c {
+ struct setup_s_ {
+ sf_assign_r15_e sf_assign_r15;
+ uint8_t harq_offset_r15 = 0;
+ };
+ using types = setup_e;
+
+ // choice methods
+ tdm_pattern_cfg_r15_c() = default;
+ void set(types::options e = types::nulltype);
+ types type() const { return type_; }
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+ // getters
+ setup_s_& setup()
+ {
+ assert_choice_type(types::setup, type_, "TDM-PatternConfig-r15");
+ return c;
+ }
+ const setup_s_& setup() const
+ {
+ assert_choice_type(types::setup, type_, "TDM-PatternConfig-r15");
+ return c;
+ }
+ void set_release();
+ setup_s_& set_setup();
+
+private:
+ types type_;
+ setup_s_ c;
+};
+
// IKE-Identity-r13 ::= SEQUENCE
struct ike_id_r13_s {
dyn_octstring id_i_r13;
@@ -182,6 +312,253 @@ private:
void destroy_();
};
+// PUR-MPDCCH-Config-r16 ::= SEQUENCE
+struct pur_mpdcch_cfg_r16_s {
+ struct mpdcch_prb_pairs_cfg_r16_s_ {
+ struct num_prb_pairs_r16_opts {
+ enum options { n2, n4, n6, spare1, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<num_prb_pairs_r16_opts> num_prb_pairs_r16_e_;
+
+ // member variables
+ num_prb_pairs_r16_e_ num_prb_pairs_r16;
+ fixed_bitstring<4> res_block_assign_r16;
+ };
+ struct mpdcch_num_repeat_r16_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_r16_opts> mpdcch_num_repeat_r16_e_;
+ struct mpdcch_start_sf_uess_r16_c_ {
+ struct fdd_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_opts> fdd_e_;
+ struct tdd_opts {
+ enum options { v1, v2, v4, v5, v8, v10, v20, spare1, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<tdd_opts> tdd_e_;
+ struct types_opts {
+ enum options { fdd, tdd, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ mpdcch_start_sf_uess_r16_c_() = default;
+ mpdcch_start_sf_uess_r16_c_(const mpdcch_start_sf_uess_r16_c_& other);
+ mpdcch_start_sf_uess_r16_c_& operator=(const mpdcch_start_sf_uess_r16_c_& other);
+ ~mpdcch_start_sf_uess_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
+ fdd_e_& fdd()
+ {
+ assert_choice_type(types::fdd, type_, "mpdcch-StartSF-UESS-r16");
+ return c.get<fdd_e_>();
+ }
+ tdd_e_& tdd()
+ {
+ assert_choice_type(types::tdd, type_, "mpdcch-StartSF-UESS-r16");
+ return c.get<tdd_e_>();
+ }
+ const fdd_e_& fdd() const
+ {
+ assert_choice_type(types::fdd, type_, "mpdcch-StartSF-UESS-r16");
+ return c.get<fdd_e_>();
+ }
+ const tdd_e_& tdd() const
+ {
+ assert_choice_type(types::tdd, type_, "mpdcch-StartSF-UESS-r16");
+ return c.get<tdd_e_>();
+ }
+ fdd_e_& set_fdd();
+ tdd_e_& set_tdd();
+
+ private:
+ types type_;
+ pod_choice_buffer_t c;
+
+ void destroy_();
+ };
+ struct mpdcch_offset_pur_ss_r16_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_pur_ss_r16_opts> mpdcch_offset_pur_ss_r16_e_;
+
+ // member variables
+ bool mpdcch_freq_hop_r16 = false;
+ uint8_t mpdcch_nb_r16 = 1;
+ mpdcch_prb_pairs_cfg_r16_s_ mpdcch_prb_pairs_cfg_r16;
+ mpdcch_num_repeat_r16_e_ mpdcch_num_repeat_r16;
+ mpdcch_start_sf_uess_r16_c_ mpdcch_start_sf_uess_r16;
+ mpdcch_offset_pur_ss_r16_e_ mpdcch_offset_pur_ss_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// PUR-PUCCH-Config-r16 ::= SEQUENCE
+struct pur_pucch_cfg_r16_s {
+ struct pucch_num_repeat_ce_format1_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<pucch_num_repeat_ce_format1_r16_opts> pucch_num_repeat_ce_format1_r16_e_;
+
+ // member variables
+ bool n1_pucch_an_r16_present = false;
+ bool pucch_num_repeat_ce_format1_r16_present = false;
+ uint16_t n1_pucch_an_r16 = 0;
+ pucch_num_repeat_ce_format1_r16_e_ pucch_num_repeat_ce_format1_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// PUR-PUSCH-Config-r16 ::= SEQUENCE
+struct pur_pusch_cfg_r16_s {
+ struct pur_grant_info_r16_c_ {
+ struct ce_mode_a_s_ {
+ fixed_bitstring<2> num_rus_r16;
+ fixed_bitstring<10> prb_alloc_info_r16;
+ fixed_bitstring<4> mcs_r16;
+ fixed_bitstring<3> num_repeats_r16;
+ };
+ struct ce_mode_b_s_ {
+ bool sub_prb_alloc_r16 = false;
+ bool num_rus_r16 = false;
+ fixed_bitstring<8> prb_alloc_info_r16;
+ fixed_bitstring<4> mcs_r16;
+ fixed_bitstring<3> num_repeats_r16;
+ };
+ struct types_opts {
+ enum options { ce_mode_a, ce_mode_b, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ pur_grant_info_r16_c_() = default;
+ pur_grant_info_r16_c_(const pur_grant_info_r16_c_& other);
+ pur_grant_info_r16_c_& operator=(const pur_grant_info_r16_c_& other);
+ ~pur_grant_info_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
+ ce_mode_a_s_& ce_mode_a()
+ {
+ assert_choice_type(types::ce_mode_a, type_, "pur-GrantInfo-r16");
+ return c.get<ce_mode_a_s_>();
+ }
+ ce_mode_b_s_& ce_mode_b()
+ {
+ assert_choice_type(types::ce_mode_b, type_, "pur-GrantInfo-r16");
+ return c.get<ce_mode_b_s_>();
+ }
+ const ce_mode_a_s_& ce_mode_a() const
+ {
+ assert_choice_type(types::ce_mode_a, type_, "pur-GrantInfo-r16");
+ return c.get<ce_mode_a_s_>();
+ }
+ const ce_mode_b_s_& ce_mode_b() const
+ {
+ assert_choice_type(types::ce_mode_b, type_, "pur-GrantInfo-r16");
+ return c.get<ce_mode_b_s_>();
+ }
+ ce_mode_a_s_& set_ce_mode_a();
+ ce_mode_b_s_& set_ce_mode_b();
+
+ private:
+ types type_;
+ choice_buffer_t<ce_mode_a_s_, ce_mode_b_s_> c;
+
+ void destroy_();
+ };
+ struct pusch_cyclic_shift_r16_opts {
+ enum options { n0, n6, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<pusch_cyclic_shift_r16_opts> pusch_cyclic_shift_r16_e_;
+
+ // member variables
+ bool pur_grant_info_r16_present = false;
+ bool location_ce_mode_b_r16_present = false;
+ pur_grant_info_r16_c_ pur_grant_info_r16;
+ bool pur_pusch_freq_hop_r16 = false;
+ int8_t p0_ue_pusch_r16 = -8;
+ alpha_r12_e alpha_r16;
+ pusch_cyclic_shift_r16_e_ pusch_cyclic_shift_r16;
+ bool pusch_nb_max_tbs_r16 = false;
+ uint8_t location_ce_mode_b_r16 = 0;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// PUR-RSRP-ChangeThreshold-r16 ::= SEQUENCE
+struct pur_rsrp_change_thres_r16_s {
+ bool decrease_thresh_r16_present = false;
+ rsrp_change_thresh_r16_e increase_thresh_r16;
+ rsrp_change_thresh_r16_e decrease_thresh_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// PhysicalConfigDedicated-v1370 ::= SEQUENCE
struct phys_cfg_ded_v1370_s {
bool pucch_cfg_ded_v1370_present = false;
@@ -208,6 +585,26 @@ struct ran_area_cfg_r15_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionReconfiguration-v1610-IEs ::= SEQUENCE
+struct rrc_conn_recfg_v1610_ies_s {
+ bool conditional_recfg_r16_present = false;
+ bool daps_source_release_r16_present = false;
+ bool tdm_pattern_cfg2_r16_present = false;
+ bool sl_cfg_ded_for_nr_r16_present = false;
+ bool sl_ssb_prio_eutra_r16_present = false;
+ bool non_crit_ext_present = false;
+ conditional_recfg_r16_s conditional_recfg_r16;
+ tdm_pattern_cfg_r15_c tdm_pattern_cfg2_r16;
+ dyn_octstring sl_cfg_ded_for_nr_r16;
+ uint8_t sl_ssb_prio_eutra_r16 = 1;
+ rrc_conn_recfg_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;
+};
+
// RadioResourceConfigCommonSCell-v1440 ::= SEQUENCE
struct rr_cfg_common_scell_v1440_s {
struct ul_cfg_v1440_s_ {
@@ -275,16 +672,6 @@ struct sl_tx_pool_to_add_mod_r14_s {
void to_json(json_writer& j) const;
};
-// SubframeAssignment-r15 ::= ENUMERATED
-struct sf_assign_r15_opts {
- enum options { sa0, sa1, sa2, sa3, sa4, sa5, sa6, nulltype } value;
- typedef uint8_t number_type;
-
- const char* to_string() const;
- uint8_t to_number() const;
-};
-typedef enumerated<sf_assign_r15_opts> sf_assign_r15_e;
-
// UplinkPowerControlCommonPSCell-r12 ::= SEQUENCE
struct ul_pwr_ctrl_common_ps_cell_r12_s {
struct delta_f_pucch_format3_r12_opts {
@@ -387,6 +774,94 @@ struct plmn_ran_area_cfg_r15_s {
void to_json(json_writer& j) const;
};
+// PUR-Config-r16 ::= SEQUENCE
+struct pur_cfg_r16_s {
+ struct pur_implicit_release_after_r16_opts {
+ enum options { n2, n4, n8, spare, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<pur_implicit_release_after_r16_opts> pur_implicit_release_after_r16_e_;
+ struct pur_start_time_params_r16_s_ {
+ pur_periodicity_and_offset_r16_c periodicity_and_offset_r16;
+ uint16_t start_sfn_r16 = 0;
+ uint8_t start_sub_frame_r16 = 0;
+ fixed_bitstring<1> hsfn_lsb_info_r16;
+ };
+ struct pur_num_occasions_r16_opts {
+ enum options { one, infinite, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<pur_num_occasions_r16_opts> pur_num_occasions_r16_e_;
+ struct pur_resp_win_timer_r16_opts {
+ enum options { sf240, sf480, sf960, sf1920, sf3840, sf5760, sf7680, sf10240, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<pur_resp_win_timer_r16_opts> pur_resp_win_timer_r16_e_;
+
+ // member variables
+ bool ext = false;
+ bool pur_cfg_id_r16_present = false;
+ bool pur_implicit_release_after_r16_present = false;
+ bool pur_start_time_params_r16_present = false;
+ bool pur_rnti_r16_present = false;
+ bool pur_time_align_timer_r16_present = false;
+ bool pur_rsrp_change_thres_r16_present = false;
+ bool pur_resp_win_timer_r16_present = false;
+ bool pur_mpdcch_cfg_r16_present = false;
+ bool pur_pucch_cfg_r16_present = false;
+ bool pur_pusch_cfg_r16_present = false;
+ fixed_bitstring<20> pur_cfg_id_r16;
+ pur_implicit_release_after_r16_e_ pur_implicit_release_after_r16;
+ pur_start_time_params_r16_s_ pur_start_time_params_r16;
+ pur_num_occasions_r16_e_ pur_num_occasions_r16;
+ fixed_bitstring<16> pur_rnti_r16;
+ uint8_t pur_time_align_timer_r16 = 1;
+ setup_release_c<pur_rsrp_change_thres_r16_s> pur_rsrp_change_thres_r16;
+ pur_resp_win_timer_r16_e_ pur_resp_win_timer_r16;
+ pur_mpdcch_cfg_r16_s pur_mpdcch_cfg_r16;
+ bool pur_pdsch_freq_hop_r16 = false;
+ pur_pucch_cfg_r16_s pur_pucch_cfg_r16;
+ pur_pusch_cfg_r16_s pur_pusch_cfg_r16;
+ // ...
+ // group 0
+ bool pur_pdsch_max_tbs_r17_present = false;
+ bool pur_pdsch_max_tbs_r17 = false;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// RRC-InactiveConfig-v1610 ::= SEQUENCE
+struct rrc_inactive_cfg_v1610_s {
+ struct ran_paging_cycle_v1610_opts {
+ enum options { rf512, rf1024, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<ran_paging_cycle_v1610_opts> ran_paging_cycle_v1610_e_;
+
+ // member variables
+ ran_paging_cycle_v1610_e_ ran_paging_cycle_v1610;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// RRCConnectionReconfiguration-v1530-IEs ::= SEQUENCE
struct rrc_conn_recfg_v1530_ies_s {
using ded_info_nas_list_r15_l_ = bounded_array<dyn_octstring, 15>;
@@ -405,6 +880,18 @@ struct rrc_conn_recfg_v1530_ies_s {
ded_info_nas_list_r15_l_ ded_info_nas_list_r15;
int8_t p_max_ue_fr1_r15 = -30;
mtc_ssb_nr_r15_s smtc_r15;
+ rrc_conn_recfg_v1610_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;
+};
+
+// RRCConnectionRelease-v1650-IEs ::= SEQUENCE
+struct rrc_conn_release_v1650_ies_s {
+ bool mps_prio_ind_r16_present = false;
+ bool non_crit_ext_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -609,40 +1096,6 @@ using sl_tx_pool_to_add_mod_list_v2x_r14_l = dyn_array<sl_tx_pool_to_add_mod_r14
// SL-TxPoolToReleaseListV2X-r14 ::= SEQUENCE (SIZE (1..8)) OF INTEGER (1..8)
using sl_tx_pool_to_release_list_v2x_r14_l = bounded_array<uint8_t, 8>;
-// TDM-PatternConfig-r15 ::= CHOICE
-struct tdm_pattern_cfg_r15_c {
- struct setup_s_ {
- sf_assign_r15_e sf_assign_r15;
- uint8_t harq_offset_r15 = 0;
- };
- using types = setup_e;
-
- // choice methods
- tdm_pattern_cfg_r15_c() = default;
- void set(types::options e = types::nulltype);
- types type() const { return type_; }
- SRSASN_CODE pack(bit_ref& bref) const;
- SRSASN_CODE unpack(cbit_ref& bref);
- void to_json(json_writer& j) const;
- // getters
- setup_s_& setup()
- {
- assert_choice_type(types::setup, type_, "TDM-PatternConfig-r15");
- return c;
- }
- const setup_s_& setup() const
- {
- assert_choice_type(types::setup, type_, "TDM-PatternConfig-r15");
- return c;
- }
- void set_release();
- setup_s_& set_setup();
-
-private:
- types type_;
- setup_s_ c;
-};
-
// TunnelConfigLWIP-r13 ::= SEQUENCE
struct tunnel_cfg_lwip_r13_s {
bool ext = false;
@@ -659,6 +1112,9 @@ struct tunnel_cfg_lwip_r13_s {
void to_json(json_writer& j) const;
};
+// ValidityCellList-r16 ::= SEQUENCE (SIZE (1..8)) OF PhysCellIdRange
+using validity_cell_list_r16_l = dyn_array<pci_range_s>;
+
// WLAN-MobilityConfig-r13 ::= SEQUENCE
struct wlan_mob_cfg_r13_s {
struct assoc_timer_r13_opts {
@@ -911,6 +1367,39 @@ struct rrc_conn_recfg_v1510_ies_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionRelease-v1610-IEs ::= SEQUENCE
+struct rrc_conn_release_v1610_ies_s {
+ struct t323_r16_opts {
+ enum options { min5, min10, min20, min30, min60, min120, min180, min720, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<t323_r16_opts> t323_r16_e_;
+
+ // member variables
+ bool full_i_rnti_r16_present = false;
+ bool short_i_rnti_r16_present = false;
+ bool pur_cfg_r16_present = false;
+ bool rrc_inactive_cfg_v1610_present = false;
+ bool release_idle_meas_cfg_r16_present = false;
+ bool alt_freq_priorities_r16_present = false;
+ bool t323_r16_present = false;
+ bool non_crit_ext_present = false;
+ fixed_bitstring<40> full_i_rnti_r16;
+ fixed_bitstring<24> short_i_rnti_r16;
+ setup_release_c<pur_cfg_r16_s> pur_cfg_r16;
+ rrc_inactive_cfg_v1610_s rrc_inactive_cfg_v1610;
+ t323_r16_e_ t323_r16;
+ rrc_conn_release_v1650_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;
+};
+
// SCellToReleaseList-r10 ::= SEQUENCE (SIZE (1..4)) OF INTEGER (1..7)
using scell_to_release_list_r10_l = bounded_array<uint8_t, 4>;
@@ -1183,6 +1672,18 @@ struct sl_v2x_cfg_ded_r14_s {
void to_json(json_writer& j) const;
};
+// ValidityArea-r16 ::= SEQUENCE
+struct validity_area_r16_s {
+ bool validity_cell_list_r16_present = false;
+ uint32_t carrier_freq_r16 = 0;
+ validity_cell_list_r16_l validity_cell_list_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// LWA-Configuration-r13 ::= CHOICE
struct lwa_cfg_r13_c {
struct setup_s_ {
@@ -1264,7 +1765,7 @@ struct pwr_coordination_info_r12_s {
// RAN-NotificationAreaInfo-r15 ::= CHOICE
struct ran_notif_area_info_r15_c {
struct types_opts {
- enum options { cell_list_r15, ran_area_cfg_list_r15, nulltype } value;
+ enum options { cell_list, ran_area_cfg_list, nulltype } value;
const char* to_string() const;
};
@@ -1281,28 +1782,28 @@ struct ran_notif_area_info_r15_c {
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
- plmn_ran_area_cell_list_r15_l& cell_list_r15()
+ plmn_ran_area_cell_list_r15_l& cell_list()
{
- assert_choice_type(types::cell_list_r15, type_, "RAN-NotificationAreaInfo-r15");
+ assert_choice_type(types::cell_list, type_, "RAN-NotificationAreaInfo-r15");
return c.get<plmn_ran_area_cell_list_r15_l>();
}
- plmn_ran_area_cfg_list_r15_l& ran_area_cfg_list_r15()
+ plmn_ran_area_cfg_list_r15_l& ran_area_cfg_list()
{
- assert_choice_type(types::ran_area_cfg_list_r15, type_, "RAN-NotificationAreaInfo-r15");
+ assert_choice_type(types::ran_area_cfg_list, type_, "RAN-NotificationAreaInfo-r15");
return c.get<plmn_ran_area_cfg_list_r15_l>();
}
- const plmn_ran_area_cell_list_r15_l& cell_list_r15() const
+ const plmn_ran_area_cell_list_r15_l& cell_list() const
{
- assert_choice_type(types::cell_list_r15, type_, "RAN-NotificationAreaInfo-r15");
+ assert_choice_type(types::cell_list, type_, "RAN-NotificationAreaInfo-r15");
return c.get<plmn_ran_area_cell_list_r15_l>();
}
- const plmn_ran_area_cfg_list_r15_l& ran_area_cfg_list_r15() const
+ const plmn_ran_area_cfg_list_r15_l& ran_area_cfg_list() const
{
- assert_choice_type(types::ran_area_cfg_list_r15, type_, "RAN-NotificationAreaInfo-r15");
+ assert_choice_type(types::ran_area_cfg_list, type_, "RAN-NotificationAreaInfo-r15");
return c.get<plmn_ran_area_cfg_list_r15_l>();
}
- plmn_ran_area_cell_list_r15_l& set_cell_list_r15();
- plmn_ran_area_cfg_list_r15_l& set_ran_area_cfg_list_r15();
+ plmn_ran_area_cell_list_r15_l& set_cell_list();
+ plmn_ran_area_cfg_list_r15_l& set_ran_area_cfg_list();
private:
types type_;
@@ -1364,8 +1865,9 @@ struct rrc_conn_recfg_v1430_ies_s {
// RRCConnectionRelease-v15b0-IEs ::= SEQUENCE
struct rrc_conn_release_v15b0_ies_s {
- bool no_last_cell_upd_r15_present = false;
- bool non_crit_ext_present = false;
+ bool no_last_cell_upd_r15_present = false;
+ bool non_crit_ext_present = false;
+ rrc_conn_release_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1454,6 +1956,9 @@ using sl_tf_idx_pair_list_r12_l = dyn_array<sl_tf_idx_pair_r12_s>;
// SL-TxPoolToReleaseListExt-r13 ::= SEQUENCE (SIZE (1..4)) OF INTEGER (5..8)
using sl_tx_pool_to_release_list_ext_r13_l = bounded_array<uint8_t, 4>;
+// ValidityAreaList-r16 ::= SEQUENCE (SIZE (1..8)) OF ValidityArea-r16
+using validity_area_list_r16_l = dyn_array<validity_area_r16_s>;
+
// FlightPathInfoReportConfig-r15 ::= SEQUENCE
struct flight_path_info_report_cfg_r15_s {
bool include_time_stamp_r15_present = false;
@@ -1482,6 +1987,9 @@ struct meas_idle_cfg_ded_r15_s {
eutra_carrier_list_r15_l meas_idle_carrier_list_eutra_r15;
meas_idle_dur_r15_e_ meas_idle_dur_r15;
// ...
+ // group 0
+ copy_ptr<nr_carrier_list_r16_l> meas_idle_carrier_list_nr_r16;
+ copy_ptr<validity_area_list_r16_l> validity_area_list_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1607,6 +2115,42 @@ private:
setup_s_ c;
};
+// SCellToAddMod-r16 ::= SEQUENCE
+struct scell_to_add_mod_r16_s {
+ struct cell_identif_r16_s_ {
+ uint16_t pci_r16 = 0;
+ uint32_t dl_carrier_freq_r16 = 0;
+ };
+ struct scell_state_r16_opts {
+ enum options { activ, dormant, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<scell_state_r16_opts> scell_state_r16_e_;
+
+ // member variables
+ bool ext = false;
+ bool cell_identif_r16_present = false;
+ bool rr_cfg_common_scell_r16_present = false;
+ bool rr_cfg_ded_scell_r16_present = false;
+ bool ant_info_ded_scell_r16_present = false;
+ bool srs_switch_from_serv_cell_idx_r16_present = false;
+ bool scell_state_r16_present = false;
+ uint8_t scell_idx_r16 = 1;
+ cell_identif_r16_s_ cell_identif_r16;
+ rr_cfg_common_scell_r10_s rr_cfg_common_scell_r16;
+ rr_cfg_ded_scell_r10_s rr_cfg_ded_scell_r16;
+ ant_info_ded_v10i0_s ant_info_ded_scell_r16;
+ uint8_t srs_switch_from_serv_cell_idx_r16 = 0;
+ scell_state_r16_e_ scell_state_r16;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// SL-CommConfig-r12 ::= SEQUENCE
struct sl_comm_cfg_r12_s {
struct comm_tx_res_r12_c_ {
@@ -2181,6 +2725,17 @@ struct sl_sync_tx_ctrl_r12_s {
void to_json(json_writer& j) const;
};
+// UEInformationRequest-v1710-IEs ::= SEQUENCE
+struct ue_info_request_v1710_ies_s {
+ bool coarse_location_req_r17_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;
+};
+
// CandidateServingFreqListNR-r15 ::= SEQUENCE (SIZE (1..32)) OF INTEGER (0..3279165)
using candidate_serving_freq_list_nr_r15_l = bounded_array<uint32_t, 32>;
@@ -2280,6 +2835,20 @@ struct rrc_conn_release_v1530_ies_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionResume-v1700-IEs ::= SEQUENCE
+struct rrc_conn_resume_v1700_ies_s {
+ bool scg_state_r17_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;
+};
+
+// SCellToAddModList-r16 ::= SEQUENCE (SIZE (1..31)) OF SCellToAddMod-r16
+using scell_to_add_mod_list_r16_l = dyn_array<scell_to_add_mod_r16_s>;
+
// SystemInfoListGERAN ::= SEQUENCE (SIZE (1..10)) OF OCTET STRING (SIZE (1..23))
using sys_info_list_geran_l = bounded_array<bounded_octstring<1, 23>, 10>;
@@ -2303,6 +2872,7 @@ struct ue_info_request_v1530_ies_s {
bool flight_path_info_req_r15_present = false;
bool non_crit_ext_present = false;
flight_path_info_report_cfg_r15_s flight_path_info_req_r15;
+ ue_info_request_v1710_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2538,6 +3108,38 @@ struct rrc_conn_release_v1320_ies_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionResume-v1610-IEs ::= SEQUENCE
+struct rrc_conn_resume_v1610_ies_s {
+ bool idle_mode_meas_req_r16_present = false;
+ bool restore_mcg_scells_r16_present = false;
+ bool restore_scg_r16_present = false;
+ bool scell_to_add_mod_list_r16_present = false;
+ bool scell_to_release_list_r16_present = false;
+ bool scell_group_to_release_list_r16_present = false;
+ bool scell_group_to_add_mod_list_r16_present = false;
+ bool nr_secondary_cell_group_cfg_r16_present = false;
+ bool p_max_eutra_r16_present = false;
+ bool p_max_ue_fr1_r16_present = false;
+ bool tdm_pattern_cfg_r16_present = false;
+ bool tdm_pattern_cfg2_r16_present = false;
+ bool non_crit_ext_present = false;
+ scell_to_add_mod_list_r16_l scell_to_add_mod_list_r16;
+ scell_to_release_list_ext_r13_l scell_to_release_list_r16;
+ scell_group_to_release_list_r15_l scell_group_to_release_list_r16;
+ scell_group_to_add_mod_list_r15_l scell_group_to_add_mod_list_r16;
+ dyn_octstring nr_secondary_cell_group_cfg_r16;
+ int8_t p_max_eutra_r16 = -30;
+ int8_t p_max_ue_fr1_r16 = -30;
+ tdm_pattern_cfg_r15_c tdm_pattern_cfg_r16;
+ tdm_pattern_cfg_r15_c tdm_pattern_cfg2_r16;
+ rrc_conn_resume_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;
+};
+
// ReportProximityConfig-r9 ::= SEQUENCE
struct report_proximity_cfg_r9_s {
bool proximity_ind_eutra_r9_present = false;
@@ -2549,6 +3151,26 @@ struct report_proximity_cfg_r9_s {
void to_json(json_writer& j) const;
};
+// SCG-DeactivationPreferenceConfig-r17 ::= SEQUENCE
+struct scg_deactivation_pref_cfg_r17_s {
+ struct scg_deactivation_pref_prohibit_timer_r17_opts {
+ enum options { s0, s1, s2, s4, s8, s10, s20, s30, s60, s120, s180, s240, s300, s600, s900, s1800, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<scg_deactivation_pref_prohibit_timer_r17_opts> scg_deactivation_pref_prohibit_timer_r17_e_;
+
+ // member variables
+ scg_deactivation_pref_prohibit_timer_r17_e_ scg_deactivation_pref_prohibit_timer_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// TargetMBSFN-AreaList-r12 ::= SEQUENCE (SIZE (0..8)) OF TargetMBSFN-Area-r12
using target_mbsfn_area_list_r12_l = dyn_array<target_mbsfn_area_r12_s>;
@@ -2897,6 +3519,13 @@ struct other_cfg_r9_s {
bool ailc_bit_cfg_r15 = false;
copy_ptr<bt_name_list_cfg_r15_c> bt_name_list_cfg_r15;
copy_ptr<wlan_name_list_cfg_r15_c> wlan_name_list_cfg_r15;
+ // group 4
+ bool overheat_assist_cfg_for_scg_r16_present = false;
+ bool overheat_assist_cfg_for_scg_r16 = false;
+ // group 5
+ bool meas_uncom_bar_pre_r17_present = false;
+ bool meas_uncom_bar_pre_r17 = false;
+ copy_ptr<setup_release_c<scg_deactivation_pref_cfg_r17_s> > scg_deactivation_pref_cfg_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2937,8 +3566,9 @@ struct rrc_conn_release_v1020_ies_s {
// RRCConnectionResume-v1530-IEs ::= SEQUENCE
struct rrc_conn_resume_v1530_ies_s {
- bool full_cfg_r15_present = false;
- bool non_crit_ext_present = false;
+ bool full_cfg_r15_present = false;
+ bool non_crit_ext_present = false;
+ rrc_conn_resume_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2981,6 +3611,29 @@ struct carrier_info_nr_r15_s {
void to_json(json_writer& j) const;
};
+// CarrierInfoNR-r17 ::= SEQUENCE
+struct carrier_info_nr_r17_s {
+ struct subcarrier_spacing_ssb_r17_opts {
+ enum options { khz15, khz30, khz120, khz240, khz480, spare1, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<subcarrier_spacing_ssb_r17_opts> subcarrier_spacing_ssb_r17_e_;
+
+ // member variables
+ bool smtc_r17_present = false;
+ uint32_t carrier_freq_r17 = 0;
+ subcarrier_spacing_ssb_r17_e_ subcarrier_spacing_ssb_r17;
+ mtc_ssb_nr_r15_s smtc_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// CellGlobalIdList-r10 ::= SEQUENCE (SIZE (1..32)) OF CellGlobalIdEUTRA
using cell_global_id_list_r10_l = dyn_array<cell_global_id_eutra_s>;
@@ -2996,6 +3649,18 @@ struct counter_check_v1530_ies_s {
void to_json(json_writer& j) const;
};
+// DLInformationTransfer-v1610-IEs ::= SEQUENCE
+struct dl_info_transfer_v1610_ies_s {
+ bool ded_info_f1c_r16_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring ded_info_f1c_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// HandoverFromEUTRAPreparationRequest-v920-IEs ::= SEQUENCE
struct ho_from_eutra_prep_request_v920_ies_s {
bool concurr_prep_cdma2000_hrpd_r9_present = false;
@@ -3360,9 +4025,10 @@ struct counter_check_v8a0_ies_s {
// DLInformationTransfer-v8a0-IEs ::= SEQUENCE
struct dl_info_transfer_v8a0_ies_s {
- bool late_non_crit_ext_present = false;
- bool non_crit_ext_present = false;
- dyn_octstring late_non_crit_ext;
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring late_non_crit_ext;
+ dl_info_transfer_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -4044,12 +4710,13 @@ struct redirected_carrier_info_c {
// ...
utra_tdd_r10,
nr_r15,
+ nr_r17,
nulltype
} value;
const char* to_string() const;
};
- typedef enumerated<types_opts, true, 2> types;
+ typedef enumerated<types_opts, true, 3> types;
// choice methods
redirected_carrier_info_c() = default;
@@ -4102,6 +4769,11 @@ struct redirected_carrier_info_c {
assert_choice_type(types::nr_r15, type_, "RedirectedCarrierInfo");
return c.get<carrier_info_nr_r15_s>();
}
+ carrier_info_nr_r17_s& nr_r17()
+ {
+ assert_choice_type(types::nr_r17, type_, "RedirectedCarrierInfo");
+ return c.get<carrier_info_nr_r17_s>();
+ }
const uint32_t& eutra() const
{
assert_choice_type(types::eutra, type_, "RedirectedCarrierInfo");
@@ -4142,6 +4814,11 @@ struct redirected_carrier_info_c {
assert_choice_type(types::nr_r15, type_, "RedirectedCarrierInfo");
return c.get<carrier_info_nr_r15_s>();
}
+ const carrier_info_nr_r17_s& nr_r17() const
+ {
+ assert_choice_type(types::nr_r17, type_, "RedirectedCarrierInfo");
+ return c.get<carrier_info_nr_r17_s>();
+ }
uint32_t& set_eutra();
carrier_freqs_geran_s& set_geran();
uint16_t& set_utra_fdd();
@@ -4150,13 +4827,15 @@ struct redirected_carrier_info_c {
carrier_freq_cdma2000_s& set_cdma2000_minus1x_rtt();
carrier_freq_list_utra_tdd_r10_l& set_utra_tdd_r10();
carrier_info_nr_r15_s& set_nr_r15();
+ carrier_info_nr_r17_s& set_nr_r17();
private:
types type_;
choice_buffer_t<carrier_freq_cdma2000_s,
carrier_freq_list_utra_tdd_r10_l,
carrier_freqs_geran_s,
- carrier_info_nr_r15_s>
+ carrier_info_nr_r15_s,
+ carrier_info_nr_r17_s>
c;
void destroy_();
@@ -4208,11 +4887,34 @@ struct counter_check_r8_ies_s {
void to_json(json_writer& j) const;
};
+// DLDedicatedMessageSegment-r16-IEs ::= SEQUENCE
+struct dl_ded_msg_segment_r16_ies_s {
+ struct rrc_msg_segment_type_r16_opts {
+ enum options { not_last_segment, last_segment, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<rrc_msg_segment_type_r16_opts> rrc_msg_segment_type_r16_e_;
+
+ // member variables
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ uint8_t segment_num_r16 = 0;
+ dyn_octstring rrc_msg_segment_container_r16;
+ rrc_msg_segment_type_r16_e_ rrc_msg_segment_type_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;
+};
+
// DLInformationTransfer-r15-IEs ::= SEQUENCE
struct dl_info_transfer_r15_ies_s {
struct ded_info_type_r15_c_ {
struct types_opts {
- enum options { ded_info_nas_r15, ded_info_cdma2000_minus1_xrtt_r15, ded_info_cdma2000_hrpd_r15, nulltype } value;
+ enum options { ded_info_nas, ded_info_cdma2000_minus1_xrtt, ded_info_cdma2000_hrpd, nulltype } value;
const char* to_string() const;
};
@@ -4229,39 +4931,39 @@ struct dl_info_transfer_r15_ies_s {
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
- dyn_octstring& ded_info_nas_r15()
+ dyn_octstring& ded_info_nas()
{
- assert_choice_type(types::ded_info_nas_r15, type_, "dedicatedInfoType-r15");
+ assert_choice_type(types::ded_info_nas, type_, "dedicatedInfoType-r15");
return c.get<dyn_octstring>();
}
- dyn_octstring& ded_info_cdma2000_minus1_xrtt_r15()
+ dyn_octstring& ded_info_cdma2000_minus1_xrtt()
{
- assert_choice_type(types::ded_info_cdma2000_minus1_xrtt_r15, type_, "dedicatedInfoType-r15");
+ assert_choice_type(types::ded_info_cdma2000_minus1_xrtt, type_, "dedicatedInfoType-r15");
return c.get<dyn_octstring>();
}
- dyn_octstring& ded_info_cdma2000_hrpd_r15()
+ dyn_octstring& ded_info_cdma2000_hrpd()
{
- assert_choice_type(types::ded_info_cdma2000_hrpd_r15, type_, "dedicatedInfoType-r15");
+ assert_choice_type(types::ded_info_cdma2000_hrpd, type_, "dedicatedInfoType-r15");
return c.get<dyn_octstring>();
}
- const dyn_octstring& ded_info_nas_r15() const
+ const dyn_octstring& ded_info_nas() const
{
- assert_choice_type(types::ded_info_nas_r15, type_, "dedicatedInfoType-r15");
+ assert_choice_type(types::ded_info_nas, type_, "dedicatedInfoType-r15");
return c.get<dyn_octstring>();
}
- const dyn_octstring& ded_info_cdma2000_minus1_xrtt_r15() const
+ const dyn_octstring& ded_info_cdma2000_minus1_xrtt() const
{
- assert_choice_type(types::ded_info_cdma2000_minus1_xrtt_r15, type_, "dedicatedInfoType-r15");
+ assert_choice_type(types::ded_info_cdma2000_minus1_xrtt, type_, "dedicatedInfoType-r15");
return c.get<dyn_octstring>();
}
- const dyn_octstring& ded_info_cdma2000_hrpd_r15() const
+ const dyn_octstring& ded_info_cdma2000_hrpd() const
{
- assert_choice_type(types::ded_info_cdma2000_hrpd_r15, type_, "dedicatedInfoType-r15");
+ assert_choice_type(types::ded_info_cdma2000_hrpd, type_, "dedicatedInfoType-r15");
return c.get<dyn_octstring>();
}
- dyn_octstring& set_ded_info_nas_r15();
- dyn_octstring& set_ded_info_cdma2000_minus1_xrtt_r15();
- dyn_octstring& set_ded_info_cdma2000_hrpd_r15();
+ dyn_octstring& set_ded_info_nas();
+ dyn_octstring& set_ded_info_cdma2000_minus1_xrtt();
+ dyn_octstring& set_ded_info_cdma2000_hrpd();
private:
types type_;
@@ -4743,6 +5445,51 @@ struct counter_check_s {
void to_json(json_writer& j) const;
};
+// DLDedicatedMessageSegment-r16 ::= SEQUENCE
+struct dl_ded_msg_segment_r16_s {
+ struct crit_exts_c_ {
+ struct types_opts {
+ enum options { dl_ded_msg_segment_r16, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ crit_exts_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
+ dl_ded_msg_segment_r16_ies_s& dl_ded_msg_segment_r16()
+ {
+ assert_choice_type(types::dl_ded_msg_segment_r16, type_, "criticalExtensions");
+ return c;
+ }
+ const dl_ded_msg_segment_r16_ies_s& dl_ded_msg_segment_r16() const
+ {
+ assert_choice_type(types::dl_ded_msg_segment_r16, type_, "criticalExtensions");
+ return c;
+ }
+ dl_ded_msg_segment_r16_ies_s& set_dl_ded_msg_segment_r16();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ dl_ded_msg_segment_r16_ies_s c;
+ };
+
+ // member variables
+ crit_exts_c_ crit_exts;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// DLInformationTransfer ::= SEQUENCE
struct dl_info_transfer_s {
struct crit_exts_c_ {
@@ -5478,7 +6225,7 @@ struct dl_dcch_msg_type_c {
logged_meas_cfg_r10,
rn_recfg_r10,
rrc_conn_resume_r13,
- spare3,
+ dl_ded_msg_segment_r16,
spare2,
spare1,
nulltype
@@ -5566,6 +6313,11 @@ struct dl_dcch_msg_type_c {
assert_choice_type(types::rrc_conn_resume_r13, type_, "c1");
return c.get<rrc_conn_resume_r13_s>();
}
+ dl_ded_msg_segment_r16_s& dl_ded_msg_segment_r16()
+ {
+ assert_choice_type(types::dl_ded_msg_segment_r16, type_, "c1");
+ return c.get<dl_ded_msg_segment_r16_s>();
+ }
const csfb_params_resp_cdma2000_s& csfb_params_resp_cdma2000() const
{
assert_choice_type(types::csfb_params_resp_cdma2000, type_, "c1");
@@ -5631,6 +6383,11 @@ struct dl_dcch_msg_type_c {
assert_choice_type(types::rrc_conn_resume_r13, type_, "c1");
return c.get<rrc_conn_resume_r13_s>();
}
+ const dl_ded_msg_segment_r16_s& dl_ded_msg_segment_r16() const
+ {
+ assert_choice_type(types::dl_ded_msg_segment_r16, type_, "c1");
+ return c.get<dl_ded_msg_segment_r16_s>();
+ }
csfb_params_resp_cdma2000_s& set_csfb_params_resp_cdma2000();
dl_info_transfer_s& set_dl_info_transfer();
ho_from_eutra_prep_request_s& set_ho_from_eutra_prep_request();
@@ -5644,7 +6401,7 @@ struct dl_dcch_msg_type_c {
logged_meas_cfg_r10_s& set_logged_meas_cfg_r10();
rn_recfg_r10_s& set_rn_recfg_r10();
rrc_conn_resume_r13_s& set_rrc_conn_resume_r13();
- void set_spare3();
+ dl_ded_msg_segment_r16_s& set_dl_ded_msg_segment_r16();
void set_spare2();
void set_spare1();
@@ -5652,6 +6409,7 @@ struct dl_dcch_msg_type_c {
types type_;
choice_buffer_t<counter_check_s,
csfb_params_resp_cdma2000_s,
+ dl_ded_msg_segment_r16_s,
dl_info_transfer_s,
ho_from_eutra_prep_request_s,
logged_meas_cfg_r10_s,
diff --git a/lib/include/srsran/asn1/rrc/ho_cmd.h b/lib/include/srsran/asn1/rrc/ho_cmd.h
index 3b38cff61..67e01497a 100644
--- a/lib/include/srsran/asn1/rrc/ho_cmd.h
+++ b/lib/include/srsran/asn1/rrc/ho_cmd.h
@@ -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;
};
+// 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
struct scg_cfg_r12_s {
struct crit_exts_c_ {
@@ -214,6 +224,8 @@ struct as_cfg_s {
copy_ptr<as_cfg_v1550_s> as_cfg_v1550;
// group 5
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
SRSASN_CODE pack(bit_ref& bref) const;
@@ -348,10 +360,10 @@ struct as_context_v1130_s {
bool ext = false;
bool idc_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 mbms_interest_ind_r11;
- dyn_octstring pwr_pref_ind_r11;
+ dyn_octstring ue_assist_info_r11;
// ...
// group 0
bool sidelink_ue_info_r12_present = false;
@@ -380,6 +392,56 @@ struct as_context_v1320_s {
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
struct candidate_cell_info_r10_s {
bool ext = false;
@@ -499,11 +561,84 @@ struct ho_cmd_s {
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
struct ho_prep_info_v1540_ies_s {
- bool source_rb_cfg_intra5_gc_r15_present = false;
- bool non_crit_ext_present = false;
- dyn_octstring source_rb_cfg_intra5_gc_r15;
+ bool source_rb_cfg_intra5_gc_r15_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring source_rb_cfg_intra5_gc_r15;
+ ho_prep_info_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -610,11 +745,25 @@ struct ho_prep_info_v9d0_ies_s {
// HandoverPreparationInformation-v920-IEs ::= SEQUENCE
struct ho_prep_info_v920_ies_s {
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;
};
- 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
bool ue_cfg_release_r9_present = false;
diff --git a/lib/include/srsran/asn1/rrc/meascfg.h b/lib/include/srsran/asn1/rrc/meascfg.h
index f0f911de4..e28d30a13 100644
--- a/lib/include/srsran/asn1/rrc/meascfg.h
+++ b/lib/include/srsran/asn1/rrc/meascfg.h
@@ -12,7 +12,7 @@
/*******************************************************************************
*
- * 3GPP TS ASN1 RRC v15.11.0 (2020-09)
+ * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
*
******************************************************************************/
@@ -72,6 +72,16 @@ struct q_offset_range_opts {
};
typedef enumerated<q_offset_range_opts> q_offset_range_e;
+// RSS-MeasPowerBias-r16 ::= ENUMERATED
+struct rss_meas_pwr_bias_r16_opts {
+ enum options { db_minus6, db_minus3, db0, db3, db6, db9, db12, rss_not_used, nulltype } value;
+ typedef int8_t number_type;
+
+ const char* to_string() const;
+ int8_t to_number() const;
+};
+typedef enumerated<rss_meas_pwr_bias_r16_opts> rss_meas_pwr_bias_r16_e;
+
// SecondaryPreRegistrationZoneIdListHRPD ::= SEQUENCE (SIZE (1..2)) OF INTEGER (0..255)
using secondary_pre_regist_zone_id_list_hrpd_l = bounded_array<uint16_t, 2>;
@@ -119,112 +129,6 @@ typedef enumerated<band_ind_geran_opts> band_ind_geran_e;
// ExplicitListOfARFCNs ::= SEQUENCE (SIZE (0..31)) OF INTEGER (0..1023)
using explicit_list_of_arfcns_l = bounded_array<uint16_t, 31>;
-// PreRegistrationInfoHRPD ::= SEQUENCE
-struct pre_regist_info_hrpd_s {
- bool pre_regist_zone_id_present = false;
- bool secondary_pre_regist_zone_id_list_present = false;
- bool pre_regist_allowed = false;
- uint16_t pre_regist_zone_id = 0;
- secondary_pre_regist_zone_id_list_hrpd_l secondary_pre_regist_zone_id_list;
-
- // sequence methods
- SRSASN_CODE pack(bit_ref& bref) const;
- SRSASN_CODE unpack(cbit_ref& bref);
- void to_json(json_writer& j) const;
-};
-
-// CarrierFreqsGERAN ::= SEQUENCE
-struct carrier_freqs_geran_s {
- struct following_arfcns_c_ {
- struct equally_spaced_arfcns_s_ {
- uint8_t arfcn_spacing = 1;
- uint8_t nof_following_arfcns = 0;
- };
- struct types_opts {
- enum options { explicit_list_of_arfcns, equally_spaced_arfcns, variable_bit_map_of_arfcns, nulltype } value;
-
- const char* to_string() const;
- };
- typedef enumerated<types_opts> types;
-
- // choice methods
- following_arfcns_c_() = default;
- following_arfcns_c_(const following_arfcns_c_& other);
- following_arfcns_c_& operator=(const following_arfcns_c_& other);
- ~following_arfcns_c_() { destroy_(); }
- void set(types::options e = types::nulltype);
- types type() const { return type_; }
- SRSASN_CODE pack(bit_ref& bref) const;
- SRSASN_CODE unpack(cbit_ref& bref);
- void to_json(json_writer& j) const;
- bool operator==(const following_arfcns_c_& other) const;
- bool operator!=(const following_arfcns_c_& other) const { return not(*this == other); }
- // getters
- explicit_list_of_arfcns_l& explicit_list_of_arfcns()
- {
- assert_choice_type(types::explicit_list_of_arfcns, type_, "followingARFCNs");
- return c.get<explicit_list_of_arfcns_l>();
- }
- equally_spaced_arfcns_s_& equally_spaced_arfcns()
- {
- assert_choice_type(types::equally_spaced_arfcns, type_, "followingARFCNs");
- return c.get<equally_spaced_arfcns_s_>();
- }
- bounded_octstring<1, 16>& variable_bit_map_of_arfcns()
- {
- assert_choice_type(types::variable_bit_map_of_arfcns, type_, "followingARFCNs");
- return c.get<bounded_octstring<1, 16> >();
- }
- const explicit_list_of_arfcns_l& explicit_list_of_arfcns() const
- {
- assert_choice_type(types::explicit_list_of_arfcns, type_, "followingARFCNs");
- return c.get<explicit_list_of_arfcns_l>();
- }
- const equally_spaced_arfcns_s_& equally_spaced_arfcns() const
- {
- assert_choice_type(types::equally_spaced_arfcns, type_, "followingARFCNs");
- return c.get<equally_spaced_arfcns_s_>();
- }
- const bounded_octstring<1, 16>& variable_bit_map_of_arfcns() const
- {
- assert_choice_type(types::variable_bit_map_of_arfcns, type_, "followingARFCNs");
- return c.get<bounded_octstring<1, 16> >();
- }
- explicit_list_of_arfcns_l& set_explicit_list_of_arfcns();
- equally_spaced_arfcns_s_& set_equally_spaced_arfcns();
- bounded_octstring<1, 16>& set_variable_bit_map_of_arfcns();
-
- private:
- types type_;
- choice_buffer_t<bounded_octstring<1, 16>, equally_spaced_arfcns_s_, explicit_list_of_arfcns_l> c;
-
- void destroy_();
- };
-
- // member variables
- uint16_t start_arfcn = 0;
- band_ind_geran_e band_ind;
- following_arfcns_c_ following_arfcns;
-
- // 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 carrier_freqs_geran_s& other) const;
- bool operator!=(const carrier_freqs_geran_s& other) const { return not(*this == other); }
-};
-
-// CellReselectionSubPriority-r13 ::= ENUMERATED
-struct cell_resel_sub_prio_r13_opts {
- enum options { odot2, odot4, odot6, odot8, nulltype } value;
- typedef float number_type;
-
- const char* to_string() const;
- float to_number() const;
- const char* to_number_string() const;
-};
-typedef enumerated<cell_resel_sub_prio_r13_opts> cell_resel_sub_prio_r13_e;
-
// MTC-SSB-NR-r15 ::= SEQUENCE
struct mtc_ssb_nr_r15_s {
struct periodicity_and_offset_r15_c_ {
@@ -344,12 +248,23 @@ struct mtc_ssb_nr_r15_s {
bool operator!=(const mtc_ssb_nr_r15_s& other) const { return not(*this == other); }
};
-// MultiBandInfoList-r11 ::= SEQUENCE (SIZE (1..8)) OF INTEGER (1..256)
-using multi_band_info_list_r11_l = bounded_array<uint16_t, 8>;
-
// MultiFrequencyBandListNR-r15 ::= SEQUENCE (SIZE (1..32)) OF INTEGER (1..1024)
using multi_freq_band_list_nr_r15_l = bounded_array<uint16_t, 32>;
+// PreRegistrationInfoHRPD ::= SEQUENCE
+struct pre_regist_info_hrpd_s {
+ bool pre_regist_zone_id_present = false;
+ bool secondary_pre_regist_zone_id_list_present = false;
+ bool pre_regist_allowed = false;
+ uint16_t pre_regist_zone_id = 0;
+ secondary_pre_regist_zone_id_list_hrpd_l secondary_pre_regist_zone_id_list;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// SS-RSSI-Measurement-r15 ::= SEQUENCE
struct ss_rssi_meas_r15_s {
bounded_bitstring<1, 80> meas_slots_r15;
@@ -443,6 +358,144 @@ struct thres_list_nr_r15_s {
bool operator!=(const thres_list_nr_r15_s& other) const { return not(*this == other); }
};
+// CarrierFreqsGERAN ::= SEQUENCE
+struct carrier_freqs_geran_s {
+ struct following_arfcns_c_ {
+ struct equally_spaced_arfcns_s_ {
+ uint8_t arfcn_spacing = 1;
+ uint8_t nof_following_arfcns = 0;
+ };
+ struct types_opts {
+ enum options { explicit_list_of_arfcns, equally_spaced_arfcns, variable_bit_map_of_arfcns, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ following_arfcns_c_() = default;
+ following_arfcns_c_(const following_arfcns_c_& other);
+ following_arfcns_c_& operator=(const following_arfcns_c_& other);
+ ~following_arfcns_c_() { destroy_(); }
+ void set(types::options e = types::nulltype);
+ types type() const { return type_; }
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+ bool operator==(const following_arfcns_c_& other) const;
+ bool operator!=(const following_arfcns_c_& other) const { return not(*this == other); }
+ // getters
+ explicit_list_of_arfcns_l& explicit_list_of_arfcns()
+ {
+ assert_choice_type(types::explicit_list_of_arfcns, type_, "followingARFCNs");
+ return c.get<explicit_list_of_arfcns_l>();
+ }
+ equally_spaced_arfcns_s_& equally_spaced_arfcns()
+ {
+ assert_choice_type(types::equally_spaced_arfcns, type_, "followingARFCNs");
+ return c.get<equally_spaced_arfcns_s_>();
+ }
+ bounded_octstring<1, 16>& variable_bit_map_of_arfcns()
+ {
+ assert_choice_type(types::variable_bit_map_of_arfcns, type_, "followingARFCNs");
+ return c.get<bounded_octstring<1, 16> >();
+ }
+ const explicit_list_of_arfcns_l& explicit_list_of_arfcns() const
+ {
+ assert_choice_type(types::explicit_list_of_arfcns, type_, "followingARFCNs");
+ return c.get<explicit_list_of_arfcns_l>();
+ }
+ const equally_spaced_arfcns_s_& equally_spaced_arfcns() const
+ {
+ assert_choice_type(types::equally_spaced_arfcns, type_, "followingARFCNs");
+ return c.get<equally_spaced_arfcns_s_>();
+ }
+ const bounded_octstring<1, 16>& variable_bit_map_of_arfcns() const
+ {
+ assert_choice_type(types::variable_bit_map_of_arfcns, type_, "followingARFCNs");
+ return c.get<bounded_octstring<1, 16> >();
+ }
+ explicit_list_of_arfcns_l& set_explicit_list_of_arfcns();
+ equally_spaced_arfcns_s_& set_equally_spaced_arfcns();
+ bounded_octstring<1, 16>& set_variable_bit_map_of_arfcns();
+
+ private:
+ types type_;
+ choice_buffer_t<bounded_octstring<1, 16>, equally_spaced_arfcns_s_, explicit_list_of_arfcns_l> c;
+
+ void destroy_();
+ };
+
+ // member variables
+ uint16_t start_arfcn = 0;
+ band_ind_geran_e band_ind;
+ following_arfcns_c_ following_arfcns;
+
+ // 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 carrier_freqs_geran_s& other) const;
+ bool operator!=(const carrier_freqs_geran_s& other) const { return not(*this == other); }
+};
+
+// CellReselectionSubPriority-r13 ::= ENUMERATED
+struct cell_resel_sub_prio_r13_opts {
+ enum options { odot2, odot4, odot6, odot8, nulltype } value;
+ typedef float number_type;
+
+ const char* to_string() const;
+ float to_number() const;
+ const char* to_number_string() const;
+};
+typedef enumerated<cell_resel_sub_prio_r13_opts> cell_resel_sub_prio_r13_e;
+
+// MultiBandInfoList-r11 ::= SEQUENCE (SIZE (1..8)) OF INTEGER (1..256)
+using multi_band_info_list_r11_l = bounded_array<uint16_t, 8>;
+
+// RSS-ConfigCarrierInfo-r16 ::= SEQUENCE
+struct rss_cfg_carrier_info_r16_s {
+ struct time_offset_granularity_r16_opts {
+ enum options { g1, g2, g4, g8, g16, g32, g64, g128, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<time_offset_granularity_r16_opts> time_offset_granularity_r16_e_;
+
+ // member variables
+ bounded_bitstring<1, 15> nb_idx_r16;
+ time_offset_granularity_r16_e_ time_offset_granularity_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 rss_cfg_carrier_info_r16_s& other) const;
+ bool operator!=(const rss_cfg_carrier_info_r16_s& other) const { return not(*this == other); }
+};
+
+// SSB-PositionQCL-RelationNR-r16 ::= ENUMERATED
+struct ssb_position_qcl_relation_nr_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<ssb_position_qcl_relation_nr_r16_opts> ssb_position_qcl_relation_nr_r16_e;
+
+// SSB-PositionQCL-RelationNR-r17 ::= ENUMERATED
+struct ssb_position_qcl_relation_nr_r17_opts {
+ enum options { n32, n64, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+};
+typedef enumerated<ssb_position_qcl_relation_nr_r17_opts> ssb_position_qcl_relation_nr_r17_e;
+
// MobilityStateParameters ::= SEQUENCE
struct mob_state_params_s {
struct t_eval_opts {
@@ -487,6 +540,18 @@ struct carrier_freq_cdma2000_s {
bool operator!=(const carrier_freq_cdma2000_s& other) const { return not(*this == other); }
};
+// CellsToAddMod-v1610 ::= SEQUENCE
+struct cells_to_add_mod_v1610_s {
+ rss_meas_pwr_bias_r16_e rss_meas_pwr_bias_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 cells_to_add_mod_v1610_s& other) const;
+ bool operator!=(const cells_to_add_mod_v1610_s& other) const { return not(*this == other); }
+};
+
// MeasCSI-RS-Config-r12 ::= SEQUENCE
struct meas_csi_rs_cfg_r12_s {
bool ext = false;
@@ -520,6 +585,45 @@ struct pci_range_utra_fdd_r9_s {
bool operator!=(const pci_range_utra_fdd_r9_s& other) const { return not(*this == other); }
};
+// SSB-PositionQCL-CellsToAddNR-r16 ::= SEQUENCE
+struct ssb_position_qcl_cells_to_add_nr_r16_s {
+ uint16_t pci_r16 = 0;
+ ssb_position_qcl_relation_nr_r16_e ssb_position_qcl_nr_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 ssb_position_qcl_cells_to_add_nr_r16_s& other) const;
+ bool operator!=(const ssb_position_qcl_cells_to_add_nr_r16_s& other) const { return not(*this == other); }
+};
+
+// SSB-PositionQCL-CellsToAddNR-r17 ::= SEQUENCE
+struct ssb_position_qcl_cells_to_add_nr_r17_s {
+ uint16_t pci_nr_r17 = 0;
+ ssb_position_qcl_relation_nr_r17_e ssb_position_qcl_nr_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 ssb_position_qcl_cells_to_add_nr_r17_s& other) const;
+ bool operator!=(const ssb_position_qcl_cells_to_add_nr_r17_s& other) const { return not(*this == other); }
+};
+
+// AllowedCellsToAddMod-r13 ::= SEQUENCE
+struct allowed_cells_to_add_mod_r13_s {
+ uint8_t cell_idx_r13 = 1;
+ pci_range_s pci_range_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 allowed_cells_to_add_mod_r13_s& other) const;
+ bool operator!=(const allowed_cells_to_add_mod_r13_s& other) const { return not(*this == other); }
+};
+
// AltTTT-CellsToAddMod-r12 ::= SEQUENCE
struct alt_ttt_cells_to_add_mod_r12_s {
uint8_t cell_idx_r12 = 1;
@@ -536,19 +640,6 @@ struct alt_ttt_cells_to_add_mod_r12_s {
// BT-NameList-r15 ::= SEQUENCE (SIZE (1..4)) OF OCTET STRING (SIZE (1..248))
using bt_name_list_r15_l = bounded_array<bounded_octstring<1, 248>, 4>;
-// BlackCellsToAddMod ::= SEQUENCE
-struct black_cells_to_add_mod_s {
- uint8_t cell_idx = 1;
- pci_range_s pci_range;
-
- // 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 black_cells_to_add_mod_s& other) const;
- bool operator!=(const black_cells_to_add_mod_s& other) const { return not(*this == other); }
-};
-
// CellsToAddMod ::= SEQUENCE
struct cells_to_add_mod_s {
uint8_t cell_idx = 1;
@@ -576,6 +667,9 @@ struct cells_to_add_mod_cdma2000_s {
bool operator!=(const cells_to_add_mod_cdma2000_s& other) const { return not(*this == other); }
};
+// CellsToAddModList-v1610 ::= SEQUENCE (SIZE (1..32)) OF CellsToAddMod-v1610
+using cells_to_add_mod_list_v1610_l = dyn_array<cells_to_add_mod_v1610_s>;
+
// CellsToAddModNR-r15 ::= SEQUENCE
struct cells_to_add_mod_nr_r15_s {
uint8_t cell_idx_r15 = 1;
@@ -589,6 +683,20 @@ struct cells_to_add_mod_nr_r15_s {
bool operator!=(const cells_to_add_mod_nr_r15_s& other) const { return not(*this == other); }
};
+// CellsToAddModNR-r16 ::= SEQUENCE
+struct cells_to_add_mod_nr_r16_s {
+ uint8_t cell_idx_r16 = 1;
+ uint16_t pci_r16 = 0;
+ q_offset_range_e cell_individual_offset_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 cells_to_add_mod_nr_r16_s& other) const;
+ bool operator!=(const cells_to_add_mod_nr_r16_s& other) const { return not(*this == other); }
+};
+
// CellsToAddModUTRA-FDD ::= SEQUENCE
struct cells_to_add_mod_utra_fdd_s {
uint8_t cell_idx = 1;
@@ -615,6 +723,19 @@ struct cells_to_add_mod_utra_tdd_s {
bool operator!=(const cells_to_add_mod_utra_tdd_s& other) const { return not(*this == other); }
};
+// ExcludedCellsToAddMod ::= SEQUENCE
+struct excluded_cells_to_add_mod_s {
+ uint8_t cell_idx = 1;
+ pci_range_s pci_range;
+
+ // 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 excluded_cells_to_add_mod_s& other) const;
+ bool operator!=(const excluded_cells_to_add_mod_s& other) const { return not(*this == other); }
+};
+
// MeasCSI-RS-ToAddModList-r12 ::= SEQUENCE (SIZE (1..96)) OF MeasCSI-RS-Config-r12
using meas_csi_rs_to_add_mod_list_r12_l = dyn_array<meas_csi_rs_cfg_r12_s>;
@@ -627,25 +748,164 @@ using meas_sf_cell_list_r10_l = dyn_array<pci_range_s>;
// PhysCellIdRangeUTRA-FDDList-r9 ::= SEQUENCE (SIZE (1..4)) OF PhysCellIdRangeUTRA-FDD-r9
using pci_range_utra_fdd_list_r9_l = dyn_array<pci_range_utra_fdd_r9_s>;
-// WLAN-ChannelList-r13 ::= SEQUENCE (SIZE (1..16)) OF INTEGER (0..255)
-using wlan_ch_list_r13_l = bounded_array<uint16_t, 16>;
+// SSB-PositionQCL-CellsToAddModListNR-r16 ::= SEQUENCE (SIZE (1..32)) OF SSB-PositionQCL-CellsToAddNR-r16
+using ssb_position_qcl_cells_to_add_mod_list_nr_r16_l = dyn_array<ssb_position_qcl_cells_to_add_nr_r16_s>;
-// WLAN-NameList-r15 ::= SEQUENCE (SIZE (1..4)) OF OCTET STRING (SIZE (1..32))
-using wlan_name_list_r15_l = bounded_array<bounded_octstring<1, 32>, 4>;
+// SSB-PositionQCL-CellsToAddModListNR-r17 ::= SEQUENCE (SIZE (1..32)) OF SSB-PositionQCL-CellsToAddNR-r17
+using ssb_position_qcl_cells_to_add_mod_list_nr_r17_l = dyn_array<ssb_position_qcl_cells_to_add_nr_r17_s>;
-// WhiteCellsToAddMod-r13 ::= SEQUENCE
-struct white_cells_to_add_mod_r13_s {
- uint8_t cell_idx_r13 = 1;
- pci_range_s pci_range_r13;
+// ThresholdEUTRA ::= CHOICE
+struct thres_eutra_c {
+ struct types_opts {
+ enum options { thres_rsrp, thres_rsrq, nulltype } value;
- // sequence methods
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ thres_eutra_c() = default;
+ thres_eutra_c(const thres_eutra_c& other);
+ thres_eutra_c& operator=(const thres_eutra_c& other);
+ ~thres_eutra_c() { destroy_(); }
+ void set(types::options e = types::nulltype);
+ types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
- bool operator==(const white_cells_to_add_mod_r13_s& other) const;
- bool operator!=(const white_cells_to_add_mod_r13_s& other) const { return not(*this == other); }
+ bool operator==(const thres_eutra_c& other) const;
+ bool operator!=(const thres_eutra_c& other) const { return not(*this == other); }
+ // getters
+ uint8_t& thres_rsrp()
+ {
+ assert_choice_type(types::thres_rsrp, type_, "ThresholdEUTRA");
+ return c.get<uint8_t>();
+ }
+ uint8_t& thres_rsrq()
+ {
+ assert_choice_type(types::thres_rsrq, type_, "ThresholdEUTRA");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& thres_rsrp() const
+ {
+ assert_choice_type(types::thres_rsrp, type_, "ThresholdEUTRA");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& thres_rsrq() const
+ {
+ assert_choice_type(types::thres_rsrq, type_, "ThresholdEUTRA");
+ return c.get<uint8_t>();
+ }
+ uint8_t& set_thres_rsrp();
+ uint8_t& set_thres_rsrq();
+
+private:
+ types type_;
+ pod_choice_buffer_t c;
+
+ void destroy_();
+};
+
+// ThresholdNR-r15 ::= CHOICE
+struct thres_nr_r15_c {
+ struct types_opts {
+ enum options { nr_rsrp_r15, nr_rsrq_r15, nr_sinr_r15, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ thres_nr_r15_c() = default;
+ thres_nr_r15_c(const thres_nr_r15_c& other);
+ thres_nr_r15_c& operator=(const thres_nr_r15_c& other);
+ ~thres_nr_r15_c() { destroy_(); }
+ void set(types::options e = types::nulltype);
+ types type() const { return type_; }
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+ bool operator==(const thres_nr_r15_c& other) const;
+ bool operator!=(const thres_nr_r15_c& other) const { return not(*this == other); }
+ // getters
+ uint8_t& nr_rsrp_r15()
+ {
+ assert_choice_type(types::nr_rsrp_r15, type_, "ThresholdNR-r15");
+ return c.get<uint8_t>();
+ }
+ uint8_t& nr_rsrq_r15()
+ {
+ assert_choice_type(types::nr_rsrq_r15, type_, "ThresholdNR-r15");
+ return c.get<uint8_t>();
+ }
+ uint8_t& nr_sinr_r15()
+ {
+ assert_choice_type(types::nr_sinr_r15, type_, "ThresholdNR-r15");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& nr_rsrp_r15() const
+ {
+ assert_choice_type(types::nr_rsrp_r15, type_, "ThresholdNR-r15");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& nr_rsrq_r15() const
+ {
+ assert_choice_type(types::nr_rsrq_r15, type_, "ThresholdNR-r15");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& nr_sinr_r15() const
+ {
+ assert_choice_type(types::nr_sinr_r15, type_, "ThresholdNR-r15");
+ return c.get<uint8_t>();
+ }
+ uint8_t& set_nr_rsrp_r15();
+ uint8_t& set_nr_rsrq_r15();
+ uint8_t& set_nr_sinr_r15();
+
+private:
+ types type_;
+ pod_choice_buffer_t c;
+
+ void destroy_();
};
+// TimeToTrigger ::= ENUMERATED
+struct time_to_trigger_opts {
+ enum options {
+ ms0,
+ ms40,
+ ms64,
+ ms80,
+ ms100,
+ ms128,
+ ms160,
+ ms256,
+ ms320,
+ ms480,
+ ms512,
+ ms640,
+ ms1024,
+ ms1280,
+ ms2560,
+ ms5120,
+ nulltype
+ } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+};
+typedef enumerated<time_to_trigger_opts> time_to_trigger_e;
+
+// WLAN-ChannelList-r13 ::= SEQUENCE (SIZE (1..16)) OF INTEGER (0..255)
+using wlan_ch_list_r13_l = bounded_array<uint16_t, 16>;
+
+// WLAN-NameList-r15 ::= SEQUENCE (SIZE (1..4)) OF OCTET STRING (SIZE (1..32))
+using wlan_name_list_r15_l = bounded_array<bounded_octstring<1, 32>, 4>;
+
+// AllowedCellsToAddModList-r13 ::= SEQUENCE (SIZE (1..32)) OF AllowedCellsToAddMod-r13
+using allowed_cells_to_add_mod_list_r13_l = dyn_array<allowed_cells_to_add_mod_r13_s>;
+
// AltTTT-CellsToAddModList-r12 ::= SEQUENCE (SIZE (1..32)) OF AltTTT-CellsToAddMod-r12
using alt_ttt_cells_to_add_mod_list_r12_l = dyn_array<alt_ttt_cells_to_add_mod_r12_s>;
@@ -681,9 +941,6 @@ private:
bt_name_list_r15_l c;
};
-// BlackCellsToAddModList ::= SEQUENCE (SIZE (1..32)) OF BlackCellsToAddMod
-using black_cells_to_add_mod_list_l = dyn_array<black_cells_to_add_mod_s>;
-
// CDMA2000-Type ::= ENUMERATED
struct cdma2000_type_opts {
enum options { type1_xrtt, type_hrpd, nulltype } value;
@@ -719,12 +976,138 @@ using cells_to_add_mod_list_cdma2000_l = dyn_array<cells_to_add_mod_cdma2000_s>;
// CellsToAddModListNR-r15 ::= SEQUENCE (SIZE (1..32)) OF CellsToAddModNR-r15
using cells_to_add_mod_list_nr_r15_l = dyn_array<cells_to_add_mod_nr_r15_s>;
+// CellsToAddModListNR-r16 ::= SEQUENCE (SIZE (1..32)) OF CellsToAddModNR-r16
+using cells_to_add_mod_list_nr_r16_l = dyn_array<cells_to_add_mod_nr_r16_s>;
+
// CellsToAddModListUTRA-FDD ::= SEQUENCE (SIZE (1..32)) OF CellsToAddModUTRA-FDD
using cells_to_add_mod_list_utra_fdd_l = dyn_array<cells_to_add_mod_utra_fdd_s>;
// CellsToAddModListUTRA-TDD ::= SEQUENCE (SIZE (1..32)) OF CellsToAddModUTRA-TDD
using cells_to_add_mod_list_utra_tdd_l = dyn_array<cells_to_add_mod_utra_tdd_s>;
+// CondReconfigurationTriggerEUTRA-r16 ::= SEQUENCE
+struct cond_recfg_trigger_eutra_r16_s {
+ struct cond_event_id_r16_c_ {
+ struct cond_event_a3_r16_s_ {
+ int8_t a3_offset_r16 = -30;
+ uint8_t hysteresis_r16 = 0;
+ time_to_trigger_e time_to_trigger_r16;
+ };
+ struct cond_event_a5_r16_s_ {
+ thres_eutra_c a5_thres1_r16;
+ thres_eutra_c a5_thres2_r16;
+ uint8_t hysteresis_r16 = 0;
+ time_to_trigger_e time_to_trigger_r16;
+ };
+ struct types_opts {
+ enum options { cond_event_a3_r16, cond_event_a5_r16, /*...*/ nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<types_opts, true> types;
+
+ // choice methods
+ cond_event_id_r16_c_() = default;
+ cond_event_id_r16_c_(const cond_event_id_r16_c_& other);
+ cond_event_id_r16_c_& operator=(const cond_event_id_r16_c_& other);
+ ~cond_event_id_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;
+ bool operator==(const cond_event_id_r16_c_& other) const;
+ bool operator!=(const cond_event_id_r16_c_& other) const { return not(*this == other); }
+ // getters
+ cond_event_a3_r16_s_& cond_event_a3_r16()
+ {
+ assert_choice_type(types::cond_event_a3_r16, type_, "condEventId-r16");
+ return c.get<cond_event_a3_r16_s_>();
+ }
+ cond_event_a5_r16_s_& cond_event_a5_r16()
+ {
+ assert_choice_type(types::cond_event_a5_r16, type_, "condEventId-r16");
+ return c.get<cond_event_a5_r16_s_>();
+ }
+ const cond_event_a3_r16_s_& cond_event_a3_r16() const
+ {
+ assert_choice_type(types::cond_event_a3_r16, type_, "condEventId-r16");
+ return c.get<cond_event_a3_r16_s_>();
+ }
+ const cond_event_a5_r16_s_& cond_event_a5_r16() const
+ {
+ assert_choice_type(types::cond_event_a5_r16, type_, "condEventId-r16");
+ return c.get<cond_event_a5_r16_s_>();
+ }
+ cond_event_a3_r16_s_& set_cond_event_a3_r16();
+ cond_event_a5_r16_s_& set_cond_event_a5_r16();
+
+ private:
+ types type_;
+ choice_buffer_t<cond_event_a3_r16_s_, cond_event_a5_r16_s_> c;
+
+ void destroy_();
+ };
+
+ // member variables
+ cond_event_id_r16_c_ cond_event_id_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 cond_recfg_trigger_eutra_r16_s& other) const;
+ bool operator!=(const cond_recfg_trigger_eutra_r16_s& other) const { return not(*this == other); }
+};
+
+// CondReconfigurationTriggerNR-r17 ::= SEQUENCE
+struct cond_recfg_trigger_nr_r17_s {
+ struct cond_event_id_r17_c_ {
+ struct cond_event_b1_nr_r17_s_ {
+ thres_nr_r15_c b1_thres_nr_r17;
+ uint8_t hysteresis_r17 = 0;
+ time_to_trigger_e time_to_trigger_r17;
+ };
+ struct types_opts {
+ enum options { cond_event_b1_nr_r17, /*...*/ nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<types_opts, true> types;
+
+ // choice methods
+ types type() const { return types::cond_event_b1_nr_r17; }
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+ bool operator==(const cond_event_id_r17_c_& other) const;
+ bool operator!=(const cond_event_id_r17_c_& other) const { return not(*this == other); }
+ // getters
+ cond_event_b1_nr_r17_s_& cond_event_b1_nr_r17() { return c; }
+ const cond_event_b1_nr_r17_s_& cond_event_b1_nr_r17() const { return c; }
+
+ private:
+ cond_event_b1_nr_r17_s_ c;
+ };
+
+ // member variables
+ cond_event_id_r17_c_ cond_event_id_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 cond_recfg_trigger_nr_r17_s& other) const;
+ bool operator!=(const cond_recfg_trigger_nr_r17_s& other) const { return not(*this == other); }
+};
+
+// ExcludedCellsToAddModList ::= SEQUENCE (SIZE (1..32)) OF ExcludedCellsToAddMod
+using excluded_cells_to_add_mod_list_l = dyn_array<excluded_cells_to_add_mod_s>;
+
// MeasCycleSCell-r10 ::= ENUMERATED
struct meas_cycle_scell_r10_opts {
enum options { sf160, sf256, sf320, sf512, sf640, sf1024, sf1280, spare1, nulltype } value;
@@ -1196,6 +1579,21 @@ private:
setup_s_ c;
};
+// MeasRSS-DedicatedConfig-r16 ::= SEQUENCE
+struct meas_rss_ded_cfg_r16_s {
+ bool rss_cfg_carrier_info_r16_present = false;
+ bool cells_to_add_mod_list_v1610_present = false;
+ rss_cfg_carrier_info_r16_s rss_cfg_carrier_info_r16;
+ cells_to_add_mod_list_v1610_l cells_to_add_mod_list_v1610;
+
+ // 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 meas_rss_ded_cfg_r16_s& other) const;
+ bool operator!=(const meas_rss_ded_cfg_r16_s& other) const { return not(*this == other); }
+};
+
// MeasRSSI-ReportConfig-r13 ::= SEQUENCE
struct meas_rssi_report_cfg_r13_s {
bool ch_occupancy_thres_r13_present = false;
@@ -1359,6 +1757,80 @@ private:
setup_s_ c;
};
+// RMTC-ConfigNR-r16 ::= SEQUENCE
+struct rmtc_cfg_nr_r16_s {
+ struct rmtc_periodicity_nr_r16_opts {
+ enum options { ms40, ms80, ms160, ms320, ms640, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<rmtc_periodicity_nr_r16_opts> rmtc_periodicity_nr_r16_e_;
+ struct meas_dur_nr_r16_opts {
+ enum options { sym1, sym14or12, sym28or24, sym42or36, sym70or60, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<meas_dur_nr_r16_opts> meas_dur_nr_r16_e_;
+ struct ref_scs_cp_nr_r16_opts {
+ enum options { khz15, khz30, khz60_ncp, khz60_ecp, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<ref_scs_cp_nr_r16_opts> ref_scs_cp_nr_r16_e_;
+ struct rmtc_bw_nr_r17_opts {
+ enum options { mhz100, mhz400, mhz800, mhz1600, mhz2000, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<rmtc_bw_nr_r17_opts> rmtc_bw_nr_r17_e_;
+ struct meas_dur_nr_r17_opts {
+ enum options { sym140, sym560, sym1120, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<meas_dur_nr_r17_opts> meas_dur_nr_r17_e_;
+ struct ref_scs_cp_nr_r17_opts {
+ enum options { khz120, khz480, khz960, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<ref_scs_cp_nr_r17_opts> ref_scs_cp_nr_r17_e_;
+
+ // member variables
+ bool ext = false;
+ bool rmtc_sf_offset_nr_r16_present = false;
+ rmtc_periodicity_nr_r16_e_ rmtc_periodicity_nr_r16;
+ uint16_t rmtc_sf_offset_nr_r16 = 0;
+ meas_dur_nr_r16_e_ meas_dur_nr_r16;
+ uint32_t rmtc_freq_nr_r16 = 0;
+ ref_scs_cp_nr_r16_e_ ref_scs_cp_nr_r16;
+ // ...
+ // group 0
+ bool rmtc_bw_nr_r17_present = false;
+ bool meas_dur_nr_r17_present = false;
+ bool ref_scs_cp_nr_r17_present = false;
+ rmtc_bw_nr_r17_e_ rmtc_bw_nr_r17;
+ meas_dur_nr_r17_e_ meas_dur_nr_r17;
+ ref_scs_cp_nr_r17_e_ ref_scs_cp_nr_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 rmtc_cfg_nr_r16_s& other) const;
+ bool operator!=(const rmtc_cfg_nr_r16_s& other) const { return not(*this == other); }
+};
+
// RS-ConfigSSB-NR-r15 ::= SEQUENCE
struct rs_cfg_ssb_nr_r15_s {
struct subcarrier_spacing_ssb_r15_opts {
@@ -1399,6 +1871,16 @@ struct rs_cfg_ssb_nr_r15_s {
types type_;
ssb_to_measure_r15_c c;
};
+ using ssb_position_qcl_cells_to_rem_list_nr_r16_l_ = bounded_array<uint16_t, 32>;
+ struct subcarrier_spacing_ssb_r17_opts {
+ enum options { khz480, khz960, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<subcarrier_spacing_ssb_r17_opts> subcarrier_spacing_ssb_r17_e_;
+ using ssb_position_qcl_cells_to_rem_list_nr_r17_l_ = bounded_array<uint16_t, 32>;
// member variables
bool ext = false;
@@ -1407,6 +1889,18 @@ struct rs_cfg_ssb_nr_r15_s {
// ...
// group 0
copy_ptr<ssb_to_measure_r15_c_> ssb_to_measure_r15;
+ // group 1
+ bool ssb_position_qcl_common_nr_r16_present = false;
+ ssb_position_qcl_relation_nr_r16_e ssb_position_qcl_common_nr_r16;
+ copy_ptr<ssb_position_qcl_cells_to_add_mod_list_nr_r16_l> ssb_position_qcl_cells_to_add_mod_list_nr_r16;
+ copy_ptr<ssb_position_qcl_cells_to_rem_list_nr_r16_l_> ssb_position_qcl_cells_to_rem_list_nr_r16;
+ // group 2
+ bool subcarrier_spacing_ssb_r17_present = false;
+ bool ssb_position_qcl_common_nr_r17_present = false;
+ subcarrier_spacing_ssb_r17_e_ subcarrier_spacing_ssb_r17;
+ ssb_position_qcl_relation_nr_r17_e ssb_position_qcl_common_nr_r17;
+ copy_ptr<ssb_position_qcl_cells_to_add_mod_list_nr_r17_l> ssb_position_qcl_cells_to_add_mod_list_nr_r17;
+ copy_ptr<ssb_position_qcl_cells_to_rem_list_nr_r17_l_> ssb_position_qcl_cells_to_rem_list_nr_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1510,121 +2004,6 @@ struct report_quant_wlan_r13_s {
bool operator!=(const report_quant_wlan_r13_s& other) const { return not(*this == other); }
};
-// ThresholdEUTRA ::= CHOICE
-struct thres_eutra_c {
- struct types_opts {
- enum options { thres_rsrp, thres_rsrq, nulltype } value;
-
- const char* to_string() const;
- };
- typedef enumerated<types_opts> types;
-
- // choice methods
- thres_eutra_c() = default;
- thres_eutra_c(const thres_eutra_c& other);
- thres_eutra_c& operator=(const thres_eutra_c& other);
- ~thres_eutra_c() { destroy_(); }
- void set(types::options e = types::nulltype);
- types type() const { return type_; }
- SRSASN_CODE pack(bit_ref& bref) const;
- SRSASN_CODE unpack(cbit_ref& bref);
- void to_json(json_writer& j) const;
- bool operator==(const thres_eutra_c& other) const;
- bool operator!=(const thres_eutra_c& other) const { return not(*this == other); }
- // getters
- uint8_t& thres_rsrp()
- {
- assert_choice_type(types::thres_rsrp, type_, "ThresholdEUTRA");
- return c.get<uint8_t>();
- }
- uint8_t& thres_rsrq()
- {
- assert_choice_type(types::thres_rsrq, type_, "ThresholdEUTRA");
- return c.get<uint8_t>();
- }
- const uint8_t& thres_rsrp() const
- {
- assert_choice_type(types::thres_rsrp, type_, "ThresholdEUTRA");
- return c.get<uint8_t>();
- }
- const uint8_t& thres_rsrq() const
- {
- assert_choice_type(types::thres_rsrq, type_, "ThresholdEUTRA");
- return c.get<uint8_t>();
- }
- uint8_t& set_thres_rsrp();
- uint8_t& set_thres_rsrq();
-
-private:
- types type_;
- pod_choice_buffer_t c;
-
- void destroy_();
-};
-
-// ThresholdNR-r15 ::= CHOICE
-struct thres_nr_r15_c {
- struct types_opts {
- enum options { nr_rsrp_r15, nr_rsrq_r15, nr_sinr_r15, nulltype } value;
-
- const char* to_string() const;
- };
- typedef enumerated<types_opts> types;
-
- // choice methods
- thres_nr_r15_c() = default;
- thres_nr_r15_c(const thres_nr_r15_c& other);
- thres_nr_r15_c& operator=(const thres_nr_r15_c& other);
- ~thres_nr_r15_c() { destroy_(); }
- void set(types::options e = types::nulltype);
- types type() const { return type_; }
- SRSASN_CODE pack(bit_ref& bref) const;
- SRSASN_CODE unpack(cbit_ref& bref);
- void to_json(json_writer& j) const;
- bool operator==(const thres_nr_r15_c& other) const;
- bool operator!=(const thres_nr_r15_c& other) const { return not(*this == other); }
- // getters
- uint8_t& nr_rsrp_r15()
- {
- assert_choice_type(types::nr_rsrp_r15, type_, "ThresholdNR-r15");
- return c.get<uint8_t>();
- }
- uint8_t& nr_rsrq_r15()
- {
- assert_choice_type(types::nr_rsrq_r15, type_, "ThresholdNR-r15");
- return c.get<uint8_t>();
- }
- uint8_t& nr_sinr_r15()
- {
- assert_choice_type(types::nr_sinr_r15, type_, "ThresholdNR-r15");
- return c.get<uint8_t>();
- }
- const uint8_t& nr_rsrp_r15() const
- {
- assert_choice_type(types::nr_rsrp_r15, type_, "ThresholdNR-r15");
- return c.get<uint8_t>();
- }
- const uint8_t& nr_rsrq_r15() const
- {
- assert_choice_type(types::nr_rsrq_r15, type_, "ThresholdNR-r15");
- return c.get<uint8_t>();
- }
- const uint8_t& nr_sinr_r15() const
- {
- assert_choice_type(types::nr_sinr_r15, type_, "ThresholdNR-r15");
- return c.get<uint8_t>();
- }
- uint8_t& set_nr_rsrp_r15();
- uint8_t& set_nr_rsrq_r15();
- uint8_t& set_nr_sinr_r15();
-
-private:
- types type_;
- pod_choice_buffer_t c;
-
- void destroy_();
-};
-
// ThresholdUTRA ::= CHOICE
struct thres_utra_c {
struct types_opts {
@@ -1679,34 +2058,6 @@ private:
void destroy_();
};
-// TimeToTrigger ::= ENUMERATED
-struct time_to_trigger_opts {
- enum options {
- ms0,
- ms40,
- ms64,
- ms80,
- ms100,
- ms128,
- ms160,
- ms256,
- ms320,
- ms480,
- ms512,
- ms640,
- ms1024,
- ms1280,
- ms2560,
- ms5120,
- nulltype
- } value;
- typedef uint16_t number_type;
-
- const char* to_string() const;
- uint16_t to_number() const;
-};
-typedef enumerated<time_to_trigger_opts> time_to_trigger_e;
-
// Tx-ResourcePoolMeasList-r14 ::= SEQUENCE (SIZE (1..72)) OF INTEGER (1..72)
using tx_res_pool_meas_list_r14_l = dyn_array<uint8_t>;
@@ -1773,6 +2124,44 @@ private:
setup_s_ c;
};
+// UL-DelayValueConfig-r16 ::= CHOICE
+struct ul_delay_value_cfg_r16_c {
+ struct setup_s_ {
+ using delay_dr_blist_r16_l_ = bounded_array<uint8_t, 11>;
+
+ // member variables
+ delay_dr_blist_r16_l_ delay_dr_blist_r16;
+ };
+ using types = setup_e;
+
+ // choice methods
+ ul_delay_value_cfg_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;
+ bool operator==(const ul_delay_value_cfg_r16_c& other) const;
+ bool operator!=(const ul_delay_value_cfg_r16_c& other) const { return not(*this == other); }
+ // getters
+ setup_s_& setup()
+ {
+ assert_choice_type(types::setup, type_, "UL-DelayValueConfig-r16");
+ return c;
+ }
+ const setup_s_& setup() const
+ {
+ assert_choice_type(types::setup, type_, "UL-DelayValueConfig-r16");
+ return c;
+ }
+ void set_release();
+ setup_s_& set_setup();
+
+private:
+ types type_;
+ setup_s_ c;
+};
+
// WLAN-CarrierInfo-r13 ::= SEQUENCE
struct wlan_carrier_info_r13_s {
struct country_code_r13_opts {
@@ -1835,9 +2224,6 @@ private:
wlan_name_list_r15_l c;
};
-// WhiteCellsToAddModList-r13 ::= SEQUENCE (SIZE (1..32)) OF WhiteCellsToAddMod-r13
-using white_cells_to_add_mod_list_r13_l = dyn_array<white_cells_to_add_mod_r13_s>;
-
// MeasGapConfigPerCC-r14 ::= SEQUENCE
struct meas_gap_cfg_per_cc_r14_s {
uint8_t serv_cell_id_r14 = 0;
@@ -1916,23 +2302,23 @@ struct meas_obj_eutra_s {
};
// member variables
- bool ext = false;
- bool offset_freq_present = false;
- bool cells_to_rem_list_present = false;
- bool cells_to_add_mod_list_present = false;
- bool black_cells_to_rem_list_present = false;
- bool black_cells_to_add_mod_list_present = false;
- bool cell_for_which_to_report_cgi_present = false;
- uint32_t carrier_freq = 0;
- allowed_meas_bw_e allowed_meas_bw;
- bool presence_ant_port1 = false;
- fixed_bitstring<2> neigh_cell_cfg;
- q_offset_range_e offset_freq;
- cell_idx_list_l cells_to_rem_list;
- cells_to_add_mod_list_l cells_to_add_mod_list;
- cell_idx_list_l black_cells_to_rem_list;
- black_cells_to_add_mod_list_l black_cells_to_add_mod_list;
- uint16_t cell_for_which_to_report_cgi = 0;
+ bool ext = false;
+ bool offset_freq_present = false;
+ bool cells_to_rem_list_present = false;
+ bool cells_to_add_mod_list_present = false;
+ bool excluded_cells_to_rem_list_present = false;
+ bool excluded_cells_to_add_mod_list_present = false;
+ bool cell_for_which_to_report_cgi_present = false;
+ uint32_t carrier_freq = 0;
+ allowed_meas_bw_e allowed_meas_bw;
+ bool presence_ant_port1 = false;
+ fixed_bitstring<2> neigh_cell_cfg;
+ q_offset_range_e offset_freq;
+ cell_idx_list_l cells_to_rem_list;
+ cells_to_add_mod_list_l cells_to_add_mod_list;
+ cell_idx_list_l excluded_cells_to_rem_list;
+ excluded_cells_to_add_mod_list_l excluded_cells_to_add_mod_list;
+ uint16_t cell_for_which_to_report_cgi = 0;
// ...
// group 0
bool meas_cycle_scell_r10_present = false;
@@ -1949,11 +2335,11 @@ struct meas_obj_eutra_s {
bool reduced_meas_performance_r12 = false;
copy_ptr<meas_ds_cfg_r12_c> meas_ds_cfg_r12;
// group 3
- bool carrier_freq_r13_present = false;
- copy_ptr<cell_idx_list_l> white_cells_to_rem_list_r13;
- copy_ptr<white_cells_to_add_mod_list_r13_l> white_cells_to_add_mod_list_r13;
- copy_ptr<rmtc_cfg_r13_c> rmtc_cfg_r13;
- uint32_t carrier_freq_r13 = 65536;
+ bool carrier_freq_r13_present = false;
+ copy_ptr<cell_idx_list_l> allowed_cells_to_rem_list_r13;
+ copy_ptr<allowed_cells_to_add_mod_list_r13_l> allowed_cells_to_add_mod_list_r13;
+ copy_ptr<rmtc_cfg_r13_c> rmtc_cfg_r13;
+ uint32_t carrier_freq_r13 = 65536;
// group 4
bool fembms_mixed_carrier_r14_present = false;
copy_ptr<tx_res_pool_meas_list_r14_l> tx_res_pool_to_rem_list_r14;
@@ -1961,6 +2347,8 @@ struct meas_obj_eutra_s {
bool fembms_mixed_carrier_r14 = false;
// group 5
copy_ptr<meas_sensing_cfg_r15_s> meas_sensing_cfg_r15;
+ // group 6
+ copy_ptr<setup_release_c<meas_rss_ded_cfg_r16_s> > meas_rss_ded_cfg_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2039,16 +2427,16 @@ struct meas_obj_nr_r15_s {
bool thresh_rs_idx_r15_present = false;
bool max_rs_idx_cell_qual_r15_present = false;
bool offset_freq_r15_present = false;
- bool black_cells_to_rem_list_r15_present = false;
- bool black_cells_to_add_mod_list_r15_present = false;
+ bool excluded_cells_to_rem_list_r15_present = false;
+ bool excluded_cells_to_add_mod_list_r15_present = false;
bool cells_for_which_to_report_sftd_r15_present = false;
uint32_t carrier_freq_r15 = 0;
rs_cfg_ssb_nr_r15_s rs_cfg_ssb_r15;
thres_list_nr_r15_s thresh_rs_idx_r15;
uint8_t max_rs_idx_cell_qual_r15 = 1;
int8_t offset_freq_r15 = -15;
- cell_idx_list_l black_cells_to_rem_list_r15;
- cells_to_add_mod_list_nr_r15_l black_cells_to_add_mod_list_r15;
+ cell_idx_list_l excluded_cells_to_rem_list_r15;
+ cells_to_add_mod_list_nr_r15_l excluded_cells_to_add_mod_list_r15;
uint8_t quant_cfg_set_r15 = 1;
cells_for_which_to_report_sftd_r15_l_ cells_for_which_to_report_sftd_r15;
// ...
@@ -2059,6 +2447,11 @@ struct meas_obj_nr_r15_s {
bool derive_ssb_idx_from_cell_r15 = false;
copy_ptr<ss_rssi_meas_r15_s> ss_rssi_meas_r15;
copy_ptr<band_nr_r15_c_> band_nr_r15;
+ // group 1
+ copy_ptr<setup_release_c<rmtc_cfg_nr_r16_s> > rmtc_cfg_nr_r16;
+ // group 2
+ copy_ptr<cell_idx_list_l> cells_to_rem_list_r16;
+ copy_ptr<cells_to_add_mod_list_nr_r16_l> cells_to_add_mod_list_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2728,11 +3121,11 @@ struct report_cfg_eutra_s {
bool trigger_quant_csi_rs_r12 = false;
// group 3
bool report_sstd_meas_r13_present = false;
- bool use_white_cell_list_r13_present = false;
+ bool use_allowed_cell_list_r13_present = false;
bool include_multi_band_info_r13_present = false;
bool report_sstd_meas_r13 = false;
copy_ptr<rs_sinr_cfg_r13_c_> rs_sinr_cfg_r13;
- bool use_white_cell_list_r13 = false;
+ bool use_allowed_cell_list_r13 = false;
copy_ptr<meas_rssi_report_cfg_r13_s> meas_rssi_report_cfg_r13;
copy_ptr<ul_delay_cfg_r13_c> ul_delay_cfg_r13;
// group 4
@@ -2752,6 +3145,13 @@ struct report_cfg_eutra_s {
copy_ptr<wlan_name_list_cfg_r15_c> include_wlan_meas_r15;
uint8_t nof_trigger_cells_r15 = 2;
bool a4_a5_report_on_leave_r15 = false;
+ // group 8
+ copy_ptr<cond_recfg_trigger_eutra_r16_s> cond_recfg_trigger_eutra_r16;
+ copy_ptr<ul_delay_value_cfg_r16_c> ul_delay_value_cfg_r16;
+ // group 9
+ bool include_uncom_bar_pre_meas_r17_present = false;
+ bool coarse_location_req_r17_present = false;
+ bool include_uncom_bar_pre_meas_r17 = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -3180,6 +3580,11 @@ struct report_cfg_inter_rat_s {
copy_ptr<report_quant_nr_r15_s> report_quant_rs_idx_nr_r15;
bool report_rs_idx_results_nr = false;
report_sftd_meas_r15_e_ report_sftd_meas_r15;
+ // group 7
+ bool use_autonomous_gaps_nr_r16_present = false;
+ copy_ptr<meas_rssi_report_cfg_r13_s> meas_rssi_report_cfg_nr_r16;
+ // group 8
+ copy_ptr<cond_recfg_trigger_nr_r17_s> cond_recfg_trigger_nr_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -3491,6 +3896,170 @@ struct meas_obj_to_add_mod_ext_r13_s {
void to_json(json_writer& j) const;
};
+// PUR-PeriodicityAndOffset-r16 ::= CHOICE
+struct pur_periodicity_and_offset_r16_c {
+ struct types_opts {
+ enum options {
+ periodicity8,
+ periodicity16,
+ periodicity32,
+ periodicity64,
+ periodicity128,
+ periodicity256,
+ periodicity512,
+ periodicity1024,
+ periodicity2048,
+ periodicity4096,
+ periodicity8192,
+ nulltype
+ } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ pur_periodicity_and_offset_r16_c() = default;
+ pur_periodicity_and_offset_r16_c(const pur_periodicity_and_offset_r16_c& other);
+ pur_periodicity_and_offset_r16_c& operator=(const pur_periodicity_and_offset_r16_c& other);
+ ~pur_periodicity_and_offset_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& periodicity8()
+ {
+ assert_choice_type(types::periodicity8, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& periodicity16()
+ {
+ assert_choice_type(types::periodicity16, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& periodicity32()
+ {
+ assert_choice_type(types::periodicity32, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& periodicity64()
+ {
+ assert_choice_type(types::periodicity64, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& periodicity128()
+ {
+ assert_choice_type(types::periodicity128, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint8_t>();
+ }
+ uint16_t& periodicity256()
+ {
+ assert_choice_type(types::periodicity256, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ uint16_t& periodicity512()
+ {
+ assert_choice_type(types::periodicity512, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ uint16_t& periodicity1024()
+ {
+ assert_choice_type(types::periodicity1024, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ uint16_t& periodicity2048()
+ {
+ assert_choice_type(types::periodicity2048, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ uint16_t& periodicity4096()
+ {
+ assert_choice_type(types::periodicity4096, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ uint16_t& periodicity8192()
+ {
+ assert_choice_type(types::periodicity8192, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ const uint8_t& periodicity8() const
+ {
+ assert_choice_type(types::periodicity8, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& periodicity16() const
+ {
+ assert_choice_type(types::periodicity16, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& periodicity32() const
+ {
+ assert_choice_type(types::periodicity32, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& periodicity64() const
+ {
+ assert_choice_type(types::periodicity64, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& periodicity128() const
+ {
+ assert_choice_type(types::periodicity128, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint8_t>();
+ }
+ const uint16_t& periodicity256() const
+ {
+ assert_choice_type(types::periodicity256, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ const uint16_t& periodicity512() const
+ {
+ assert_choice_type(types::periodicity512, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ const uint16_t& periodicity1024() const
+ {
+ assert_choice_type(types::periodicity1024, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ const uint16_t& periodicity2048() const
+ {
+ assert_choice_type(types::periodicity2048, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ const uint16_t& periodicity4096() const
+ {
+ assert_choice_type(types::periodicity4096, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ const uint16_t& periodicity8192() const
+ {
+ assert_choice_type(types::periodicity8192, type_, "PUR-PeriodicityAndOffset-r16");
+ return c.get<uint16_t>();
+ }
+ uint8_t& set_periodicity8();
+ uint8_t& set_periodicity16();
+ uint8_t& set_periodicity32();
+ uint8_t& set_periodicity64();
+ uint8_t& set_periodicity128();
+ uint16_t& set_periodicity256();
+ uint16_t& set_periodicity512();
+ uint16_t& set_periodicity1024();
+ uint16_t& set_periodicity2048();
+ uint16_t& set_periodicity4096();
+ uint16_t& set_periodicity8192();
+
+private:
+ types type_;
+ pod_choice_buffer_t c;
+
+ void destroy_();
+};
+
// QuantityConfigCDMA2000 ::= SEQUENCE
struct quant_cfg_cdma2000_s {
struct meas_quant_cdma2000_opts {
@@ -4404,6 +4973,58 @@ struct meas_cfg_s {
void to_json(json_writer& j) const;
};
+// EventType-r17 ::= CHOICE
+struct event_type_r17_c {
+ struct event_l1_s_ {
+ thres_eutra_c l1_thres_r17;
+ uint8_t hysteresis_r17 = 0;
+ time_to_trigger_e time_to_trigger_r17;
+ };
+ struct types_opts {
+ enum options { out_of_coverage, event_l1, /*...*/ nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<types_opts, true> types;
+
+ // choice methods
+ event_type_r17_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
+ event_l1_s_& event_l1()
+ {
+ assert_choice_type(types::event_l1, type_, "EventType-r17");
+ return c;
+ }
+ const event_l1_s_& event_l1() const
+ {
+ assert_choice_type(types::event_l1, type_, "EventType-r17");
+ return c;
+ }
+ void set_out_of_coverage();
+ event_l1_s_& set_event_l1();
+
+private:
+ types type_;
+ event_l1_s_ c;
+};
+
+// LoggedEventTriggerConfig-r17 ::= SEQUENCE
+struct logged_event_trigger_cfg_r17_s {
+ event_type_r17_c event_type_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// CarrierFreqGERAN ::= SEQUENCE
struct carrier_freq_geran_s {
uint16_t arfcn = 0;
@@ -4415,13 +5036,27 @@ struct carrier_freq_geran_s {
void to_json(json_writer& j) const;
};
+// LoggedMeasurementConfiguration-v1700-IEs ::= SEQUENCE
+struct logged_meas_cfg_v1700_ies_s {
+ bool logged_event_trigger_cfg_r17_present = false;
+ bool meas_uncom_bar_pre_r17_present = false;
+ bool non_crit_ext_present = false;
+ 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;
+};
+
// LoggedMeasurementConfiguration-v1530-IEs ::= SEQUENCE
struct logged_meas_cfg_v1530_ies_s {
- bool bt_name_list_r15_present = false;
- bool wlan_name_list_r15_present = false;
- bool non_crit_ext_present = false;
- bt_name_list_r15_l bt_name_list_r15;
- wlan_name_list_r15_l wlan_name_list_r15;
+ bool bt_name_list_r15_present = false;
+ bool wlan_name_list_r15_present = false;
+ bool non_crit_ext_present = false;
+ bt_name_list_r15_l bt_name_list_r15;
+ wlan_name_list_r15_l wlan_name_list_r15;
+ logged_meas_cfg_v1700_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -4440,6 +5075,18 @@ struct cell_global_id_eutra_s {
void to_json(json_writer& j) const;
};
+// DAPS-PowerCoordinationInfo-r16 ::= SEQUENCE
+struct daps_pwr_coordination_info_r16_s {
+ uint8_t p_daps_source_r16 = 1;
+ uint8_t p_daps_target_r16 = 1;
+ uint8_t pwr_ctrl_mode_r16 = 1;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// CarrierBandwidthEUTRA ::= SEQUENCE
struct carrier_bw_eutra_s {
struct dl_bw_opts {
@@ -4530,6 +5177,19 @@ struct carrier_freq_eutra_v9e0_s {
void to_json(json_writer& j) const;
};
+// DAPS-Config-r16 ::= SEQUENCE
+struct daps_cfg_r16_s {
+ bool ext = false;
+ 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;
+};
+
// MobilityControlInfoV2X-r14 ::= SEQUENCE
struct mob_ctrl_info_v2x_r14_s {
bool v2x_comm_tx_pool_exceptional_r14_present = false;
@@ -4595,6 +5255,8 @@ struct mob_ctrl_info_s {
bool sched_info_sib1_br_r14_present = false;
bool mib_repeat_status_r14 = false;
uint8_t sched_info_sib1_br_r14 = 0;
+ // group 4
+ copy_ptr<daps_cfg_r16_s> daps_cfg_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -4613,6 +5275,52 @@ struct trace_ref_r10_s {
void to_json(json_writer& j) const;
};
+// PLMN-IdentityListNR-r15 ::= SEQUENCE (SIZE (1..12)) OF PLMN-Identity
+using plmn_id_list_nr_r15_l = dyn_array<plmn_id_s>;
+
+// MeasResultNR-r15 ::= SEQUENCE
+struct meas_result_nr_r15_s {
+ bool ext = false;
+ bool rsrp_result_r15_present = false;
+ bool rsrq_result_r15_present = false;
+ bool rs_sinr_result_r15_present = false;
+ uint8_t rsrp_result_r15 = 0;
+ uint8_t rsrq_result_r15 = 0;
+ uint8_t rs_sinr_result_r15 = 0;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// PLMN-IdentityInfoNR-r15 ::= SEQUENCE
+struct plmn_id_info_nr_r15_s {
+ bool tac_r15_present = false;
+ bool ran_area_code_r15_present = false;
+ plmn_id_list_nr_r15_l plmn_id_list_r15;
+ fixed_bitstring<24> tac_r15;
+ uint16_t ran_area_code_r15 = 0;
+ fixed_bitstring<36> cell_id_r15;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// PLMN-IdentityInfoNR-v1710 ::= SEQUENCE
+struct plmn_id_info_nr_v1710_s {
+ bool gnb_id_len_r17_present = false;
+ uint8_t gnb_id_len_r17 = 22;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// CellGlobalIdCDMA2000 ::= CHOICE
struct cell_global_id_cdma2000_c {
struct types_opts {
@@ -4665,6 +5373,26 @@ private:
void destroy_();
};
+// MeasResultSSB-Index-r15 ::= SEQUENCE
+struct meas_result_ssb_idx_r15_s {
+ bool ext = false;
+ bool meas_result_ssb_idx_r15_present = false;
+ uint8_t ssb_idx_r15 = 0;
+ meas_result_nr_r15_s meas_result_ssb_idx_r15;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// PLMN-IdentityInfoListNR-r15 ::= SEQUENCE (SIZE (1..12)) OF PLMN-IdentityInfoNR-r15
+using plmn_id_info_list_nr_r15_l = dyn_array<plmn_id_info_nr_r15_s>;
+
+// PLMN-IdentityInfoListNR-v1710 ::= SEQUENCE (SIZE (1..12)) OF PLMN-IdentityInfoNR-v1710
+using plmn_id_info_list_nr_v1710_l = dyn_array<plmn_id_info_nr_v1710_s>;
+
// AdditionalSI-Info-r9 ::= SEQUENCE
struct add_si_info_r9_s {
bool csg_member_status_r9_present = false;
@@ -4694,6 +5422,31 @@ struct bler_result_r12_s {
void to_json(json_writer& j) const;
};
+// CGI-InfoNR-r15 ::= SEQUENCE
+struct cgi_info_nr_r15_s {
+ struct no_sib1_r15_s_ {
+ uint8_t ssb_subcarrier_offset_r15 = 0;
+ uint16_t pdcch_cfg_sib1_r15 = 0;
+ };
+
+ // member variables
+ bool ext = false;
+ bool plmn_id_info_list_r15_present = false;
+ bool freq_band_list_r15_present = false;
+ bool no_sib1_r15_present = false;
+ plmn_id_info_list_nr_r15_l plmn_id_info_list_r15;
+ multi_freq_band_list_nr_r15_l freq_band_list_r15;
+ no_sib1_r15_s_ no_sib1_r15;
+ // ...
+ // group 0
+ copy_ptr<plmn_id_info_list_nr_v1710_l> plmn_id_info_list_v1710;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// CellGlobalIdUTRA ::= SEQUENCE
struct cell_global_id_utra_s {
plmn_id_s plmn_id;
@@ -4727,6 +5480,9 @@ struct meas_result_cdma2000_s {
void to_json(json_writer& j) const;
};
+// MeasResultSSB-IndexList-r15 ::= SEQUENCE (SIZE (1..32)) OF MeasResultSSB-Index-r15
+using meas_result_ssb_idx_list_r15_l = dyn_array<meas_result_ssb_idx_r15_s>;
+
// PLMN-IdentityList2 ::= SEQUENCE (SIZE (1..5)) OF PLMN-Identity
using plmn_id_list2_l = dyn_array<plmn_id_s>;
@@ -4753,6 +5509,23 @@ struct data_bler_mch_result_r12_s {
void to_json(json_writer& j) const;
};
+// MeasResultCellNR-r15 ::= SEQUENCE
+struct meas_result_cell_nr_r15_s {
+ bool ext = false;
+ bool meas_result_rs_idx_list_r15_present = false;
+ uint16_t pci_r15 = 0;
+ meas_result_nr_r15_s meas_result_cell_r15;
+ meas_result_ssb_idx_list_r15_l meas_result_rs_idx_list_r15;
+ // ...
+ // group 0
+ copy_ptr<cgi_info_nr_r15_s> cgi_info_r15;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// MeasResultEUTRA ::= SEQUENCE
struct meas_result_eutra_s {
struct cgi_info_s_ {
@@ -4904,9 +5677,6 @@ struct meas_result_utra_s {
void to_json(json_writer& j) const;
};
-// PLMN-IdentityListNR-r15 ::= SEQUENCE (SIZE (1..12)) OF PLMN-Identity
-using plmn_id_list_nr_r15_l = dyn_array<plmn_id_s>;
-
// DataBLER-MCH-ResultList-r12 ::= SEQUENCE (SIZE (1..15)) OF DataBLER-MCH-Result-r12
using data_bler_mch_result_list_r12_l = dyn_array<data_bler_mch_result_r12_s>;
@@ -5093,6 +5863,9 @@ struct location_info_r10_s {
void to_json(json_writer& j) const;
};
+// MeasResultCellListNR-r15 ::= SEQUENCE (SIZE (1..8)) OF MeasResultCellNR-r15
+using meas_result_cell_list_nr_r15_l = dyn_array<meas_result_cell_nr_r15_s>;
+
// MeasResultGERAN ::= SEQUENCE
struct meas_result_geran_s {
struct cgi_info_s_ {
@@ -5125,23 +5898,6 @@ using meas_result_list_eutra_l = dyn_array<meas_result_eutra_s>;
// MeasResultListUTRA ::= SEQUENCE (SIZE (1..8)) OF MeasResultUTRA
using meas_result_list_utra_l = dyn_array<meas_result_utra_s>;
-// MeasResultNR-r15 ::= SEQUENCE
-struct meas_result_nr_r15_s {
- bool ext = false;
- bool rsrp_result_r15_present = false;
- bool rsrq_result_r15_present = false;
- bool rs_sinr_result_r15_present = false;
- uint8_t rsrp_result_r15 = 0;
- uint8_t rsrq_result_r15 = 0;
- uint8_t rs_sinr_result_r15 = 0;
- // ...
-
- // sequence methods
- SRSASN_CODE pack(bit_ref& bref) const;
- SRSASN_CODE unpack(cbit_ref& bref);
- void to_json(json_writer& j) const;
-};
-
// MeasResultsCDMA2000 ::= SEQUENCE
struct meas_results_cdma2000_s {
bool pre_regist_status_hrpd = false;
@@ -5153,21 +5909,6 @@ struct meas_results_cdma2000_s {
void to_json(json_writer& j) const;
};
-// PLMN-IdentityInfoNR-r15 ::= SEQUENCE
-struct plmn_id_info_nr_r15_s {
- bool tac_r15_present = false;
- bool ran_area_code_r15_present = false;
- plmn_id_list_nr_r15_l plmn_id_list_r15;
- fixed_bitstring<24> tac_r15;
- uint16_t ran_area_code_r15 = 0;
- fixed_bitstring<36> cell_id_r15;
-
- // sequence methods
- SRSASN_CODE pack(bit_ref& bref) const;
- SRSASN_CODE unpack(cbit_ref& bref);
- void to_json(json_writer& j) const;
-};
-
// RSRQ-Type-r12 ::= SEQUENCE
struct rsrq_type_r12_s {
bool all_symbols_r12 = false;
@@ -5294,6 +6035,20 @@ struct meas_result2_utra_r9_s {
void to_json(json_writer& j) const;
};
+// MeasResultFreqFailNR-r15 ::= SEQUENCE
+struct meas_result_freq_fail_nr_r15_s {
+ bool ext = false;
+ bool meas_result_cell_list_r15_present = false;
+ uint32_t carrier_freq_r15 = 0;
+ meas_result_cell_list_nr_r15_l meas_result_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;
+};
+
// MeasResultListGERAN ::= SEQUENCE (SIZE (1..8)) OF MeasResultGERAN
using meas_result_list_geran_l = dyn_array<meas_result_geran_s>;
@@ -5321,52 +6076,15 @@ struct meas_result_mbsfn_r12_s {
void to_json(json_writer& j) const;
};
-// MeasResultSSB-Index-r15 ::= SEQUENCE
-struct meas_result_ssb_idx_r15_s {
- bool ext = false;
- bool meas_result_ssb_idx_r15_present = false;
- uint8_t ssb_idx_r15 = 0;
- meas_result_nr_r15_s meas_result_ssb_idx_r15;
- // ...
-
- // sequence methods
- SRSASN_CODE pack(bit_ref& bref) const;
- SRSASN_CODE unpack(cbit_ref& bref);
- void to_json(json_writer& j) const;
-};
-
-// PLMN-IdentityInfoListNR-r15 ::= SEQUENCE (SIZE (1..12)) OF PLMN-IdentityInfoNR-r15
-using plmn_id_info_list_nr_r15_l = dyn_array<plmn_id_info_nr_r15_s>;
-
-// CGI-InfoNR-r15 ::= SEQUENCE
-struct cgi_info_nr_r15_s {
- struct no_sib1_r15_s_ {
- uint8_t ssb_subcarrier_offset_r15 = 0;
- uint16_t pdcch_cfg_sib1_r15 = 0;
- };
-
- // member variables
- bool ext = false;
- bool plmn_id_info_list_r15_present = false;
- bool freq_band_list_r15_present = false;
- bool no_sib1_r15_present = false;
- plmn_id_info_list_nr_r15_l plmn_id_info_list_r15;
- multi_freq_band_list_nr_r15_l freq_band_list_r15;
- no_sib1_r15_s_ no_sib1_r15;
- // ...
-
- // sequence methods
- SRSASN_CODE pack(bit_ref& bref) const;
- SRSASN_CODE unpack(cbit_ref& bref);
- void to_json(json_writer& j) const;
-};
-
// LogMeasResultListBT-r15 ::= SEQUENCE (SIZE (1..32)) OF LogMeasResultBT-r15
using log_meas_result_list_bt_r15_l = dyn_array<log_meas_result_bt_r15_s>;
// LogMeasResultListWLAN-r15 ::= SEQUENCE (SIZE (1..32)) OF LogMeasResultWLAN-r15
using log_meas_result_list_wlan_r15_l = dyn_array<log_meas_result_wlan_r15_s>;
+// MeasResultFreqListNR-r16 ::= SEQUENCE (SIZE (1..7)) OF MeasResultFreqFailNR-r15
+using meas_result_freq_list_nr_r16_l = dyn_array<meas_result_freq_fail_nr_r15_s>;
+
// MeasResultList2CDMA2000-r9 ::= SEQUENCE (SIZE (1..8)) OF MeasResult2CDMA2000-r9
using meas_result_list2_cdma2000_r9_l = dyn_array<meas_result2_cdma2000_r9_s>;
@@ -5388,9 +6106,6 @@ using meas_result_list2_utra_r9_l = dyn_array<meas_result2_utra_r9_s>;
// MeasResultListMBSFN-r12 ::= SEQUENCE (SIZE (1..8)) OF MeasResultMBSFN-r12
using meas_result_list_mbsfn_r12_l = dyn_array<meas_result_mbsfn_r12_s>;
-// MeasResultSSB-IndexList-r15 ::= SEQUENCE (SIZE (1..32)) OF MeasResultSSB-Index-r15
-using meas_result_ssb_idx_list_r15_l = dyn_array<meas_result_ssb_idx_r15_s>;
-
// LogMeasInfo-r10 ::= SEQUENCE
struct log_meas_info_r10_s {
struct meas_result_serv_cell_r10_s_ {
@@ -5407,6 +6122,9 @@ struct log_meas_info_r10_s {
meas_result_list2_geran_r10_l meas_result_list_geran_r10;
meas_result_list2_cdma2000_r9_l meas_result_list_cdma2000_r10;
};
+ struct meas_result_list_nr_v1640_s_ {
+ uint32_t carrier_freq_nr_r16 = 0;
+ };
// member variables
bool ext = false;
@@ -5436,23 +6154,14 @@ struct log_meas_info_r10_s {
copy_ptr<log_meas_result_list_wlan_r15_l> log_meas_result_list_wlan_r15;
// group 5
bool any_cell_sel_detected_r15_present = false;
-
- // sequence methods
- SRSASN_CODE pack(bit_ref& bref) const;
- SRSASN_CODE unpack(cbit_ref& bref);
- void to_json(json_writer& j) const;
-};
-
-// MeasResultCellNR-r15 ::= SEQUENCE
-struct meas_result_cell_nr_r15_s {
- bool ext = false;
- bool meas_result_rs_idx_list_r15_present = false;
- uint16_t pci_r15 = 0;
- meas_result_nr_r15_s meas_result_cell_r15;
- meas_result_ssb_idx_list_r15_l meas_result_rs_idx_list_r15;
- // ...
- // group 0
- copy_ptr<cgi_info_nr_r15_s> cgi_info_r15;
+ // group 6
+ copy_ptr<meas_result_cell_list_nr_r15_l> meas_result_list_nr_r16;
+ // group 7
+ copy_ptr<meas_result_list_nr_v1640_s_> meas_result_list_nr_v1640;
+ copy_ptr<meas_result_freq_list_nr_r16_l> meas_result_list_ext_nr_r16;
+ // group 8
+ bool uncom_bar_pre_meas_result_r17_present = false;
+ dyn_octstring uncom_bar_pre_meas_result_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -5463,9 +6172,6 @@ struct meas_result_cell_nr_r15_s {
// LogMeasInfoList-r10 ::= SEQUENCE (SIZE (1..520)) OF LogMeasInfo-r10
using log_meas_info_list_r10_l = dyn_array<log_meas_info_r10_s>;
-// MeasResultCellListNR-r15 ::= SEQUENCE (SIZE (1..8)) OF MeasResultCellNR-r15
-using meas_result_cell_list_nr_r15_l = dyn_array<meas_result_cell_nr_r15_s>;
-
// LogMeasReport-r10 ::= SEQUENCE
struct log_meas_report_r10_s {
bool ext = false;
@@ -5680,6 +6386,19 @@ struct ul_pdcp_delay_result_r13_s {
void to_json(json_writer& j) const;
};
+// UL-PDCP-DelayValueResult-r16 ::= SEQUENCE
+struct ul_pdcp_delay_value_result_r16_s {
+ bool ext = false;
+ uint8_t drb_id_r16 = 1;
+ uint16_t average_delay_r16 = 0;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// MeasResultCSI-RS-List-r12 ::= SEQUENCE (SIZE (1..8)) OF MeasResultCSI-RS-r12
using meas_result_csi_rs_list_r12_l = dyn_array<meas_result_csi_rs_r12_s>;
@@ -5697,6 +6416,19 @@ struct meas_result_for_ecid_r9_s {
void to_json(json_writer& j) const;
};
+// MeasResultForRSSI-NR-r16 ::= SEQUENCE
+struct meas_result_for_rssi_nr_r16_s {
+ bool ext = false;
+ uint8_t rssi_result_nr_r16 = 0;
+ uint8_t ch_occupancy_nr_r16 = 0;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// MeasResultForRSSI-r13 ::= SEQUENCE
struct meas_result_for_rssi_r13_s {
bool ext = false;
@@ -5757,6 +6489,9 @@ using meas_result_serv_freq_list_nr_r15_l = dyn_array<meas_result_serv_freq_nr_r
// UL-PDCP-DelayResultList-r13 ::= SEQUENCE (SIZE (1..6)) OF UL-PDCP-DelayResult-r13
using ul_pdcp_delay_result_list_r13_l = dyn_array<ul_pdcp_delay_result_r13_s>;
+// UL-PDCP-DelayValueResultList-r16 ::= SEQUENCE (SIZE (1..11)) OF UL-PDCP-DelayValueResult-r16
+using ul_pdcp_delay_value_result_list_r16_l = dyn_array<ul_pdcp_delay_value_result_r16_s>;
+
// MeasResults ::= SEQUENCE
struct meas_results_s {
struct meas_result_pcell_s_ {
@@ -5903,6 +6638,14 @@ struct meas_results_s {
copy_ptr<log_meas_result_list_wlan_r15_l> log_meas_result_list_wlan_r15;
copy_ptr<meas_result_sensing_r15_s> meas_result_sensing_r15;
int16_t height_ue_r15 = -400;
+ // group 8
+ copy_ptr<ul_pdcp_delay_value_result_list_r16_l> ul_pdcp_delay_value_result_list_r16;
+ copy_ptr<meas_result_for_rssi_nr_r16_s> meas_result_for_rssi_nr_r16;
+ // group 9
+ bool uncom_bar_pre_meas_result_r17_present = false;
+ bool coarse_location_info_r17_present = false;
+ dyn_octstring uncom_bar_pre_meas_result_r17;
+ dyn_octstring coarse_location_info_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
diff --git a/lib/include/srsran/asn1/rrc/paging.h b/lib/include/srsran/asn1/rrc/paging.h
index 29ab78a73..101923f5a 100644
--- a/lib/include/srsran/asn1/rrc/paging.h
+++ b/lib/include/srsran/asn1/rrc/paging.h
@@ -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
******************************************************************************/
+// 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
struct paging_v1530_ies_s {
- bool access_type_present = false;
- bool non_crit_ext_present = false;
+ bool access_type_present = false;
+ bool non_crit_ext_present = false;
+ paging_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -384,6 +438,17 @@ struct ue_paging_coverage_info_s {
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
struct ue_radio_paging_info_v1310_ies_s {
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 non_crit_ext_present = false;
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
SRSASN_CODE pack(bit_ref& bref) const;
diff --git a/lib/include/srsran/asn1/rrc/phy_ded.h b/lib/include/srsran/asn1/rrc/phy_ded.h
index 40b273e9e..4f9f1fc50 100644
--- a/lib/include/srsran/asn1/rrc/phy_ded.h
+++ b/lib/include/srsran/asn1/rrc/phy_ded.h
@@ -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
#define SRSASN1_RRC_PHYCFG_H
-#include "common.h"
+#include "rr_common.h"
namespace asn1 {
namespace rrc {
@@ -28,6 +28,338 @@ namespace rrc {
* 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
struct nzp_freq_density_r14_opts {
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); }
};
+// 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
struct cqi_report_cfg_r15_c {
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); }
};
+// 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
struct srs_cfg_ap_r10_s {
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); }
};
+// 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
struct pucch_cfg_ded_s {
struct ack_nack_repeat_c_ {
@@ -6542,6 +7002,16 @@ struct pusch_cfg_ded_v1530_s {
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
struct pusch_enhance_cfg_r14_c {
struct setup_s_ {
@@ -6719,6 +7189,28 @@ private:
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
struct spucch_cfg_v1550_c {
struct setup_s_ {
@@ -6997,6 +7489,59 @@ private:
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
struct srs_ul_cfg_ded_aperiodic_r10_c {
struct setup_s_ {
@@ -7323,6 +7868,39 @@ private:
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
struct ul_pwr_ctrl_ded_s {
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); }
};
+// 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
struct phys_cfg_ded_s {
struct ant_info_c_ {
@@ -7837,6 +8428,18 @@ struct phys_cfg_ded_s {
types type_;
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
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;
// group 11
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
SRSASN_CODE pack(bit_ref& bref) const;
diff --git a/lib/include/srsran/asn1/rrc/rr_common.h b/lib/include/srsran/asn1/rrc/rr_common.h
index c6b2b0f85..503f78408 100644
--- a/lib/include/srsran/asn1/rrc/rr_common.h
+++ b/lib/include/srsran/asn1/rrc/rr_common.h
@@ -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); }
};
+// 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
struct prach_params_ce_r13_s {
struct prach_start_sf_r13_opts {
@@ -695,6 +721,173 @@ struct edt_prach_params_ce_r15_s {
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)
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;
};
+// 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
struct freq_hop_params_r13_s {
struct dummy_opts {
@@ -1111,6 +1325,39 @@ struct freq_hop_params_r13_s {
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
struct high_speed_cfg_r14_s {
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;
};
+// 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
struct pcch_cfg_s {
struct default_paging_cycle_opts {
@@ -1201,6 +1459,14 @@ struct pcch_cfg_v1310_s {
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
struct pdsch_cfg_common_s {
int8_t ref_sig_pwr = -60;
@@ -1366,6 +1632,26 @@ struct prach_cfg_sib_v1530_s {
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
struct pucch_cfg_common_s {
struct delta_pucch_shift_opts {
@@ -1465,6 +1751,26 @@ struct pucch_cfg_common_v1430_s {
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
struct pusch_cfg_common_s {
struct pusch_cfg_basic_s_ {
@@ -1537,6 +1843,26 @@ struct pusch_cfg_common_v1310_s {
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
struct rach_cfg_common_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); }
};
+// 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
struct wus_cfg_r15_s {
struct max_dur_factor_r15_opts {
@@ -1945,8 +2282,50 @@ struct wus_cfg_v1560_s {
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
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;
rach_cfg_common_s rach_cfg_common;
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;
// group 7
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
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;
// group 6
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
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2459,6 +2856,28 @@ struct prach_cfg_v1310_s {
// RadioResourceConfigCommon ::= SEQUENCE
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 rach_cfg_common_present = false;
bool pdsch_cfg_common_present = false;
@@ -2505,6 +2924,13 @@ struct rr_cfg_common_s {
// group 6
copy_ptr<ul_pwr_ctrl_common_v1530_s> ul_pwr_ctrl_common_v1530;
copy_ptr<high_speed_cfg_v1530_s> high_speed_cfg_v1530;
+ // 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
SRSASN_CODE pack(bit_ref& bref) const;
diff --git a/lib/include/srsran/asn1/rrc/rr_ded.h b/lib/include/srsran/asn1/rrc/rr_ded.h
index 7664ae2cf..ab208a434 100644
--- a/lib/include/srsran/asn1/rrc/rr_ded.h
+++ b/lib/include/srsran/asn1/rrc/rr_ded.h
@@ -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); }
};
+// 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
struct lc_ch_cfg_s {
struct ul_specific_params_s_ {
@@ -600,6 +650,14 @@ struct lc_ch_cfg_s {
types type_;
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
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<ch_access_prio_r15_c_> ch_access_prio_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
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); }
};
+// 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
struct ul_am_rlc_s {
struct max_retx_thres_opts {
@@ -1389,6 +1460,10 @@ struct pdcp_cfg_s {
// group 5
copy_ptr<ul_data_compress_r15_s_> ul_data_compress_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
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1672,6 +1747,18 @@ private:
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
struct sps_cfg_sl_r14_s {
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_bearer_cfg_r15_c> rlc_bearer_cfg_secondary_r15;
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
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)
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
struct periodic_bsr_timer_r12_opts {
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)
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
struct srb_to_add_mod_s {
struct rlc_cfg_c_ {
@@ -3096,6 +3226,8 @@ struct srb_to_add_mod_s {
uint8_t srb_id_v1530 = 4;
// group 1
copy_ptr<rlc_cfg_v1510_s> rlc_cfg_v1560;
+ // group 2
+ copy_ptr<rlc_cfg_v1700_s> rlc_cfg_v1700;
// sequence methods
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)
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
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;
bool mpdcch_ul_harq_ack_feedback_cfg_r15 = false;
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
SRSASN_CODE pack(bit_ref& bref) const;
@@ -3964,6 +4131,51 @@ private:
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
struct sps_cfg_s {
bool semi_persist_sched_c_rnti_present = false;
@@ -4186,6 +4398,11 @@ struct rr_cfg_ded_s {
copy_ptr<dummy_l_> dummy;
// group 7
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
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); }
};
+// 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
struct cqi_short_cfg_scell_r15_c {
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;
// group 8
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
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); }
};
+// 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
struct ant_info_ded_v10i0_s {
struct max_layers_mimo_r10_opts {
@@ -5883,6 +6131,8 @@ struct rr_cfg_ded_scell_r10_s {
bool crs_intf_mitig_enabled_r15 = false;
copy_ptr<neigh_cells_crs_info_r15_c> neigh_cells_crs_info_r15;
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
SRSASN_CODE pack(bit_ref& bref) const;
diff --git a/lib/include/srsran/asn1/rrc/security.h b/lib/include/srsran/asn1/rrc/security.h
index e57369d39..b4aed5dd2 100644
--- a/lib/include/srsran/asn1/rrc/security.h
+++ b/lib/include/srsran/asn1/rrc/security.h
@@ -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
struct security_cfg_ho_v1530_s {
struct handov_type_v1530_c_ {
- struct intra5_gc_r15_s_ {
+ struct intra5_gc_s_ {
bool security_algorithm_cfg_r15_present = false;
bool nas_container_r15_present = false;
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;
dyn_octstring nas_container_r15;
};
- struct fivegc_to_epc_r15_s_ {
+ struct fivegc_to_epc_s_ {
security_algorithm_cfg_s security_algorithm_cfg_r15;
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;
dyn_octstring nas_container_r15;
};
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;
};
@@ -86,43 +86,43 @@ struct security_cfg_ho_v1530_s {
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
- intra5_gc_r15_s_& intra5_gc_r15()
+ intra5_gc_s_& intra5_gc()
{
- assert_choice_type(types::intra5_gc_r15, type_, "handoverType-v1530");
- return c.get<intra5_gc_r15_s_>();
+ assert_choice_type(types::intra5_gc, type_, "handoverType-v1530");
+ 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");
- return c.get<fivegc_to_epc_r15_s_>();
+ assert_choice_type(types::fivegc_to_epc, type_, "handoverType-v1530");
+ 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");
- return c.get<epc_to5_gc_r15_s_>();
+ assert_choice_type(types::epc_to5_gc, type_, "handoverType-v1530");
+ 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");
- return c.get<intra5_gc_r15_s_>();
+ assert_choice_type(types::intra5_gc, type_, "handoverType-v1530");
+ 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");
- return c.get<fivegc_to_epc_r15_s_>();
+ assert_choice_type(types::fivegc_to_epc, type_, "handoverType-v1530");
+ 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");
- return c.get<epc_to5_gc_r15_s_>();
+ assert_choice_type(types::epc_to5_gc, type_, "handoverType-v1530");
+ return c.get<epc_to5_gc_s_>();
}
- intra5_gc_r15_s_& set_intra5_gc_r15();
- fivegc_to_epc_r15_s_& set_fivegc_to_epc_r15();
- epc_to5_gc_r15_s_& set_epc_to5_gc_r15();
+ intra5_gc_s_& set_intra5_gc();
+ fivegc_to_epc_s_& set_fivegc_to_epc();
+ epc_to5_gc_s_& set_epc_to5_gc();
private:
- types type_;
- choice_buffer_t<epc_to5_gc_r15_s_, fivegc_to_epc_r15_s_, intra5_gc_r15_s_> c;
+ types type_;
+ choice_buffer_t<epc_to5_gc_s_, fivegc_to_epc_s_, intra5_gc_s_> c;
void destroy_();
};
diff --git a/lib/include/srsran/asn1/rrc/si.h b/lib/include/srsran/asn1/rrc/si.h
index 97aef2c8a..147a59d09 100644
--- a/lib/include/srsran/asn1/rrc/si.h
+++ b/lib/include/srsran/asn1/rrc/si.h
@@ -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;
};
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
- dl_bw_e_ dl_bw;
- phich_cfg_s phich_cfg;
- fixed_bitstring<8> sys_frame_num;
- uint8_t sched_info_sib1_br_r13 = 0;
- bool sys_info_unchanged_br_r15 = false;
- fixed_bitstring<4> spare;
+ dl_bw_e_ dl_bw;
+ phich_cfg_s phich_cfg;
+ fixed_bitstring<8> sys_frame_num;
+ uint8_t sched_info_sib1_br_r13 = 0;
+ bool sys_info_unchanged_br_r15 = false;
+ part_earfcn_minus17_c_ part_earfcn_minus17;
+ fixed_bitstring<1> spare;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -53,14 +102,17 @@ struct mib_s {
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
struct gnss_id_r15_s {
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;
};
- 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
bool ext = false;
@@ -73,6 +125,17 @@ struct gnss_id_r15_s {
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
struct sbas_id_r15_s {
struct sbas_id_r15_opts {
@@ -93,6 +156,21 @@ struct sbas_id_r15_s {
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
struct pos_sib_type_r15_s {
struct pos_sib_type_r15_opts {
@@ -125,12 +203,23 @@ struct pos_sib_type_r15_s {
pos_sib_type2_minus19,
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
} value;
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
bool ext = false;
@@ -148,9 +237,39 @@ struct pos_sib_type_r15_s {
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
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
struct plmn_id_info_v1530_s {
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;
};
+// 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
struct cell_sel_info_ce_v1530_s {
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
struct sib_type1_v1540_ies_s {
- bool si_pos_offset_r15_present = false;
- bool non_crit_ext_present = false;
+ bool si_pos_offset_r15_present = false;
+ bool non_crit_ext_present = false;
+ sib_type1_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -927,14 +1063,16 @@ struct sib_type_opts {
sib_type24_v1530,
sib_type25_v1530,
sib_type26_v1530,
+ sib_type26a_v1610,
+ sib_type27_v1610,
+ sib_type28_v1610,
+ sib_type29_v1610,
nulltype
} value;
- typedef uint8_t number_type;
const char* to_string() const;
- uint8_t to_number() const;
};
-typedef enumerated<sib_type_opts, true, 6> sib_type_e;
+typedef enumerated<sib_type_opts, true, 10> sib_type_e;
// SystemInformationBlockType1-v1250-IEs ::= SEQUENCE
struct sib_type1_v1250_ies_s {
@@ -1195,6 +1333,14 @@ struct sib_type2_s {
ul_bw_e_ ul_bw;
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
bool ext = false;
@@ -1243,6 +1389,19 @@ struct sib_type2_s {
bool reduced_cp_latency_enabled_r15_present = false;
// group 10
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
SRSASN_CODE pack(bit_ref& bref) const;
diff --git a/lib/include/srsran/asn1/rrc/uecap.h b/lib/include/srsran/asn1/rrc/uecap.h
index b520117bd..582cf75ac 100644
--- a/lib/include/srsran/asn1/rrc/uecap.h
+++ b/lib/include/srsran/asn1/rrc/uecap.h
@@ -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,29 @@ namespace rrc {
* Struct Definitions
******************************************************************************/
+// UECapabilityEnquiry-v1710-IEs ::= SEQUENCE
+struct ue_cap_enquiry_v1710_ies_s {
+ bool sidelink_request_r17_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;
+};
+
+// UECapabilityEnquiry-v1610-IEs ::= SEQUENCE
+struct ue_cap_enquiry_v1610_ies_s {
+ bool rrc_seg_allowed_r16_present = false;
+ bool non_crit_ext_present = false;
+ ue_cap_enquiry_v1710_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;
+};
+
// CA-BandwidthClass-r10 ::= ENUMERATED
struct ca_bw_class_r10_opts {
enum options { a, b, c, d, e, f, /*...*/ nulltype } value;
@@ -38,9 +61,10 @@ typedef enumerated<ca_bw_class_r10_opts, true> ca_bw_class_r10_e;
// UECapabilityEnquiry-v1560-IEs ::= SEQUENCE
struct ue_cap_enquiry_v1560_ies_s {
- bool requested_cap_common_r15_present = false;
- bool non_crit_ext_present = false;
- dyn_octstring requested_cap_common_r15;
+ bool requested_cap_common_r15_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring requested_cap_common_r15;
+ ue_cap_enquiry_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -302,6 +326,14 @@ struct ue_radio_paging_info_r12_s {
bool wake_up_signal_min_gap_e_drx_tdd_r15_present = false;
wake_up_signal_min_gap_e_drx_r15_e_ wake_up_signal_min_gap_e_drx_r15;
wake_up_signal_min_gap_e_drx_tdd_r15_e_ wake_up_signal_min_gap_e_drx_tdd_r15;
+ // group 2
+ bool ue_category_dl_v1610_present = false;
+ bool group_wake_up_signal_r16_present = false;
+ bool group_wake_up_signal_tdd_r16_present = false;
+ bool group_wake_up_signal_alternation_r16_present = false;
+ bool group_wake_up_signal_alternation_tdd_r16_present = false;
+ // group 3
+ bool inactive_state_po_determination_r17_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1520,6 +1552,125 @@ struct band_combination_params_v1530_s {
void to_json(json_writer& j) const;
};
+// InterRAT-BandInfoNR-r16 ::= SEQUENCE
+struct inter_rat_band_info_nr_r16_s {
+ bool inter_rat_need_for_gaps_nr_r16 = false;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// InterRAT-BandListNR-r16 ::= SEQUENCE (SIZE (1..1024)) OF InterRAT-BandInfoNR-r16
+using inter_rat_band_list_nr_r16_l = dyn_array<inter_rat_band_info_nr_r16_s>;
+
+// SRS-CapabilityPerBandPair-v1610 ::= SEQUENCE
+struct srs_cap_per_band_pair_v1610_s {
+ bool add_srs_carrier_switching_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;
+};
+
+// BandParameters-v1610 ::= SEQUENCE
+struct band_params_v1610_s {
+ struct intra_freq_daps_r16_s_ {
+ bool intra_freq_async_daps_r16_present = false;
+ bool dummy_present = false;
+ bool intra_freq_two_tags_daps_r16_present = false;
+ };
+ struct add_srs_ant_switching_r16_s_ {
+ bool add_srs_minus1_t2_r_r16_present = false;
+ bool add_srs_minus1_t4_r_r16_present = false;
+ bool add_srs_minus2_t4_r_minus2pairs_r16_present = false;
+ bool add_srs_minus2_t4_r_minus3pairs_r16_present = false;
+ };
+ using srs_cap_per_band_pair_list_v1610_l_ = dyn_array<srs_cap_per_band_pair_v1610_s>;
+
+ // member variables
+ bool intra_freq_daps_r16_present = false;
+ bool add_srs_freq_hop_r16_present = false;
+ bool add_srs_ant_switching_r16_present = false;
+ bool srs_cap_per_band_pair_list_v1610_present = false;
+ intra_freq_daps_r16_s_ intra_freq_daps_r16;
+ add_srs_ant_switching_r16_s_ add_srs_ant_switching_r16;
+ srs_cap_per_band_pair_list_v1610_l_ srs_cap_per_band_pair_list_v1610;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// MeasGapInfoNR-r16 ::= SEQUENCE
+struct meas_gap_info_nr_r16_s {
+ bool inter_rat_band_list_nr_en_dc_r16_present = false;
+ bool inter_rat_band_list_nr_sa_r16_present = false;
+ inter_rat_band_list_nr_r16_l inter_rat_band_list_nr_en_dc_r16;
+ inter_rat_band_list_nr_r16_l inter_rat_band_list_nr_sa_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// BandCombinationParameters-v1610 ::= SEQUENCE
+struct band_combination_params_v1610_s {
+ using band_param_list_v1610_l_ = dyn_array<band_params_v1610_s>;
+ struct inter_freq_daps_r16_s_ {
+ bool inter_freq_async_daps_r16_present = false;
+ bool inter_freq_multi_ul_tx_daps_r16_present = false;
+ };
+
+ // member variables
+ bool meas_gap_info_nr_r16_present = false;
+ bool band_param_list_v1610_present = false;
+ bool inter_freq_daps_r16_present = false;
+ meas_gap_info_nr_r16_s meas_gap_info_nr_r16;
+ band_param_list_v1610_l_ band_param_list_v1610;
+ inter_freq_daps_r16_s_ inter_freq_daps_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// ScalingFactorSidelink-r16 ::= ENUMERATED
+struct scaling_factor_sidelink_r16_opts {
+ enum options { f0p4, f0p75, f0p8, f1, nulltype } value;
+
+ const char* to_string() const;
+};
+typedef enumerated<scaling_factor_sidelink_r16_opts> scaling_factor_sidelink_r16_e;
+
+// BandCombinationParameters-v1630 ::= SEQUENCE
+struct band_combination_params_v1630_s {
+ using scaling_factor_tx_sidelink_r16_l_ = dyn_array<scaling_factor_sidelink_r16_e>;
+ using scaling_factor_rx_sidelink_r16_l_ = dyn_array<scaling_factor_sidelink_r16_e>;
+
+ // member variables
+ bool v2x_supported_tx_band_comb_list_per_bc_v1630_present = false;
+ bool v2x_supported_rx_band_comb_list_per_bc_v1630_present = false;
+ bool scaling_factor_tx_sidelink_r16_present = false;
+ bool scaling_factor_rx_sidelink_r16_present = false;
+ bool inter_band_pwr_sharing_sync_daps_r16_present = false;
+ bool inter_band_pwr_sharing_async_daps_r16_present = false;
+ bounded_bitstring<1, 512> v2x_supported_tx_band_comb_list_per_bc_v1630;
+ bounded_bitstring<1, 512> v2x_supported_rx_band_comb_list_per_bc_v1630;
+ scaling_factor_tx_sidelink_r16_l_ scaling_factor_tx_sidelink_r16;
+ scaling_factor_rx_sidelink_r16_l_ scaling_factor_rx_sidelink_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// BandCombinationParametersExt-r10 ::= SEQUENCE
struct band_combination_params_ext_r10_s {
bool supported_bw_combination_set_r10_present = false;
@@ -2033,6 +2184,83 @@ struct mac_params_v1530_s {
void to_json(json_writer& j) const;
};
+// MBMS-SupportedBandInfo-r16 ::= SEQUENCE
+struct mbms_supported_band_info_r16_s {
+ struct subcarrier_spacing_mbms_khz0dot37_r16_s_ {
+ bool time_separation_slot2_r16_present = false;
+ bool time_separation_slot4_r16_present = false;
+ };
+
+ // member variables
+ bool subcarrier_spacing_mbms_khz2dot5_r16_present = false;
+ bool subcarrier_spacing_mbms_khz0dot37_r16_present = false;
+ subcarrier_spacing_mbms_khz0dot37_r16_s_ subcarrier_spacing_mbms_khz0dot37_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// MBMS-Parameters-v1610 ::= SEQUENCE
+struct mbms_params_v1610_s {
+ struct mbms_scaling_factor2dot5_r16_opts {
+ enum options { n2, n4, n6, n8, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<mbms_scaling_factor2dot5_r16_opts> mbms_scaling_factor2dot5_r16_e_;
+ struct mbms_scaling_factor0dot37_r16_opts {
+ enum options { n12, n16, n20, n24, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<mbms_scaling_factor0dot37_r16_opts> mbms_scaling_factor0dot37_r16_e_;
+ using mbms_supported_band_info_list_r16_l_ = dyn_array<mbms_supported_band_info_r16_s>;
+
+ // member variables
+ bool mbms_scaling_factor2dot5_r16_present = false;
+ bool mbms_scaling_factor0dot37_r16_present = false;
+ mbms_scaling_factor2dot5_r16_e_ mbms_scaling_factor2dot5_r16;
+ mbms_scaling_factor0dot37_r16_e_ mbms_scaling_factor0dot37_r16;
+ mbms_supported_band_info_list_r16_l_ mbms_supported_band_info_list_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// MBMS-SupportedBandInfo-v1700 ::= SEQUENCE
+struct mbms_supported_band_info_v1700_s {
+ bool pmch_bw_n40_r17_present = false;
+ bool pmch_bw_n35_r17_present = false;
+ bool pmch_bw_n30_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;
+};
+
+// MBMS-Parameters-v1700 ::= SEQUENCE
+struct mbms_params_v1700_s {
+ using mbms_supported_band_info_list_v1700_l_ = dyn_array<mbms_supported_band_info_v1700_s>;
+
+ // member variables
+ bool mbms_supported_band_info_list_v1700_present = false;
+ mbms_supported_band_info_list_v1700_l_ mbms_supported_band_info_list_v1700;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// MIMO-UE-BeamformedCapabilities-r13 ::= SEQUENCE
struct mimo_ue_bf_cap_r13_s {
bool alt_codebook_r13_present = false;
@@ -2080,7 +2308,7 @@ struct mimo_ue_params_r13_s {
struct mimo_ue_params_per_tm_v1430_s {
struct nzp_csi_rs_aperiodic_info_r14_s_ {
struct nmax_res_r14_opts {
- enum options { ffs1, ffs2, ffs3, ffs4, nulltype } value;
+ enum options { n1, n2, n4, n8, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
@@ -2094,7 +2322,7 @@ struct mimo_ue_params_per_tm_v1430_s {
};
struct nzp_csi_rs_periodic_info_r14_s_ {
struct nmax_res_r14_opts {
- enum options { ffs1, ffs2, ffs3, ffs4, nulltype } value;
+ enum options { n1, n2, n4, n8, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
@@ -2191,6 +2419,56 @@ struct meas_params_v1020_s {
void to_json(json_writer& j) const;
};
+// MeasParameters-v1610 ::= SEQUENCE
+struct meas_params_v1610_s {
+ using band_info_nr_v1610_l_ = dyn_array<meas_gap_info_nr_r16_s>;
+
+ // member variables
+ bool band_info_nr_v1610_present = false;
+ bool alt_freq_prio_r16_present = false;
+ bool ce_dl_ch_quality_report_r16_present = false;
+ bool ce_meas_rss_ded_r16_present = false;
+ bool eutra_idle_inactive_meass_r16_present = false;
+ bool nr_idle_inactive_meas_fr1_r16_present = false;
+ bool nr_idle_inactive_meas_fr2_r16_present = false;
+ bool idle_inactive_validity_area_list_r16_present = false;
+ bool meas_gap_patterns_nronly_r16_present = false;
+ bool meas_gap_patterns_nronly_endc_r16_present = false;
+ band_info_nr_v1610_l_ band_info_nr_v1610;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// SharedSpectrumMeasNR-r17 ::= SEQUENCE
+struct shared_spec_meas_nr_r17_s {
+ bool nr_rssi_ch_occupancy_report_r17 = false;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// MeasParameters-v1700 ::= SEQUENCE
+struct meas_params_v1700_s {
+ using shared_spec_meas_nr_en_dc_r17_l_ = dyn_array<shared_spec_meas_nr_r17_s>;
+ using shared_spec_meas_nr_sa_r17_l_ = dyn_array<shared_spec_meas_nr_r17_s>;
+
+ // member variables
+ bool shared_spec_meas_nr_en_dc_r17_present = false;
+ bool shared_spec_meas_nr_sa_r17_present = false;
+ shared_spec_meas_nr_en_dc_r17_l_ shared_spec_meas_nr_en_dc_r17;
+ shared_spec_meas_nr_sa_r17_l_ shared_spec_meas_nr_sa_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// NAICS-Capability-Entry-r12 ::= SEQUENCE
struct naics_cap_entry_r12_s {
struct nof_aggregated_prb_r12_opts {
@@ -2650,6 +2928,87 @@ struct phy_layer_params_v1530_s {
void to_json(json_writer& j) const;
};
+// CE-MultiTB-Parameters-r16 ::= SEQUENCE
+struct ce_multi_tb_params_r16_s {
+ bool pdsch_multi_tb_ce_mode_a_r16_present = false;
+ bool pdsch_multi_tb_ce_mode_b_r16_present = false;
+ bool pusch_multi_tb_ce_mode_a_r16_present = false;
+ bool pusch_multi_tb_ce_mode_b_r16_present = false;
+ bool ce_multi_tb_minus64_qam_r16_present = false;
+ bool ce_multi_tb_early_termination_r16_present = false;
+ bool ce_multi_tb_freq_hop_r16_present = false;
+ bool ce_multi_tb_harq_ack_bundling_r16_present = false;
+ bool ce_multi_tb_interleaving_r16_present = false;
+ bool ce_multi_tb_sub_prb_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-ResourceResvParameters-r16 ::= SEQUENCE
+struct ce_res_resv_params_r16_s {
+ bool sf_res_resv_dl_ce_mode_a_r16_present = false;
+ bool sf_res_resv_dl_ce_mode_b_r16_present = false;
+ bool sf_res_resv_ul_ce_mode_a_r16_present = false;
+ bool sf_res_resv_ul_ce_mode_b_r16_present = false;
+ bool slot_symbol_res_resv_dl_ce_mode_a_r16_present = false;
+ bool slot_symbol_res_resv_dl_ce_mode_b_r16_present = false;
+ bool slot_symbol_res_resv_ul_ce_mode_a_r16_present = false;
+ bool slot_symbol_res_resv_ul_ce_mode_b_r16_present = false;
+ bool subcarrier_puncturing_ce_mode_a_r16_present = false;
+ bool subcarrier_puncturing_ce_mode_b_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;
+};
+
+// PhyLayerParameters-v1610 ::= SEQUENCE
+struct phy_layer_params_v1610_s {
+ struct ce_cap_v1610_s_ {
+ bool ce_csi_rs_feedback_r16_present = false;
+ bool ce_csi_rs_feedback_codebook_restrict_r16_present = false;
+ bool crs_ch_est_mpdcch_ce_mode_a_r16_present = false;
+ bool crs_ch_est_mpdcch_ce_mode_b_r16_present = false;
+ bool crs_ch_est_mpdcch_csi_r16_present = false;
+ bool crs_ch_est_mpdcch_reciprocity_tdd_r16_present = false;
+ bool etws_cmas_rx_in_conn_ce_mode_a_r16_present = false;
+ bool etws_cmas_rx_in_conn_ce_mode_b_r16_present = false;
+ bool mpdcch_in_lte_ctrl_region_ce_mode_a_r16_present = false;
+ bool mpdcch_in_lte_ctrl_region_ce_mode_b_r16_present = false;
+ bool pdsch_in_lte_ctrl_region_ce_mode_a_r16_present = false;
+ bool pdsch_in_lte_ctrl_region_ce_mode_b_r16_present = false;
+ bool multi_tb_params_r16_present = false;
+ bool res_resv_params_r16_present = false;
+ ce_multi_tb_params_r16_s multi_tb_params_r16;
+ ce_res_resv_params_r16_s res_resv_params_r16;
+ };
+ struct add_srs_r16_s_ {
+ bool add_srs_freq_hop_r16_present = false;
+ bool add_srs_ant_switching_r16_present = false;
+ bool add_srs_carrier_switching_r16_present = false;
+ };
+
+ // member variables
+ bool ce_cap_v1610_present = false;
+ bool wideband_prg_slot_r16_present = false;
+ bool wideband_prg_subslot_r16_present = false;
+ bool wideband_prg_sf_r16_present = false;
+ bool add_srs_r16_present = false;
+ bool virtual_cell_id_basic_srs_r16_present = false;
+ bool virtual_cell_id_add_srs_r16_present = false;
+ ce_cap_v1610_s_ ce_cap_v1610;
+ add_srs_r16_s_ add_srs_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// SupportedBandEUTRA ::= SEQUENCE
struct supported_band_eutra_s {
uint8_t band_eutra = 1;
@@ -3114,6 +3473,54 @@ struct rf_params_v1530_s {
void to_json(json_writer& j) const;
};
+// SupportedBandCombination-v1610 ::= SEQUENCE (SIZE (1..128)) OF BandCombinationParameters-v1610
+using supported_band_combination_v1610_l = dyn_array<band_combination_params_v1610_s>;
+
+// SupportedBandCombinationAdd-v1610 ::= SEQUENCE (SIZE (1..256)) OF BandCombinationParameters-v1610
+using supported_band_combination_add_v1610_l = dyn_array<band_combination_params_v1610_s>;
+
+// SupportedBandCombinationReduced-v1610 ::= SEQUENCE (SIZE (1..384)) OF BandCombinationParameters-v1610
+using supported_band_combination_reduced_v1610_l = dyn_array<band_combination_params_v1610_s>;
+
+// RF-Parameters-v1610 ::= SEQUENCE
+struct rf_params_v1610_s {
+ bool supported_band_combination_v1610_present = false;
+ bool supported_band_combination_add_v1610_present = false;
+ bool supported_band_combination_reduced_v1610_present = false;
+ supported_band_combination_v1610_l supported_band_combination_v1610;
+ supported_band_combination_add_v1610_l supported_band_combination_add_v1610;
+ supported_band_combination_reduced_v1610_l supported_band_combination_reduced_v1610;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// SupportedBandCombination-v1630 ::= SEQUENCE (SIZE (1..128)) OF BandCombinationParameters-v1630
+using supported_band_combination_v1630_l = dyn_array<band_combination_params_v1630_s>;
+
+// SupportedBandCombinationAdd-v1630 ::= SEQUENCE (SIZE (1..256)) OF BandCombinationParameters-v1630
+using supported_band_combination_add_v1630_l = dyn_array<band_combination_params_v1630_s>;
+
+// SupportedBandCombinationReduced-v1630 ::= SEQUENCE (SIZE (1..384)) OF BandCombinationParameters-v1630
+using supported_band_combination_reduced_v1630_l = dyn_array<band_combination_params_v1630_s>;
+
+// RF-Parameters-v1630 ::= SEQUENCE
+struct rf_params_v1630_s {
+ bool supported_band_combination_v1630_present = false;
+ bool supported_band_combination_add_v1630_present = false;
+ bool supported_band_combination_reduced_v1630_present = false;
+ supported_band_combination_v1630_l supported_band_combination_v1630;
+ supported_band_combination_add_v1630_l supported_band_combination_add_v1630;
+ supported_band_combination_reduced_v1630_l supported_band_combination_reduced_v1630;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// SupportedBandEUTRA-v9e0 ::= SEQUENCE
struct supported_band_eutra_v9e0_s {
bool band_eutra_v9e0_present = false;
@@ -3273,6 +3680,568 @@ struct sl_params_v1530_s {
void to_json(json_writer& j) const;
};
+// V2X-BandParametersEUTRA-NR-r16 ::= CHOICE
+struct v2x_band_params_eutra_nr_r16_c {
+ struct eutra_s_ {
+ bool v2x_band_params1_r16_present = false;
+ bool v2x_band_params2_r16_present = false;
+ v2x_band_params_r14_s v2x_band_params1_r16;
+ v2x_band_params_v1530_s v2x_band_params2_r16;
+ };
+ struct nr_s_ {
+ bool v2x_band_params_nr_r16_present = false;
+ dyn_octstring v2x_band_params_nr_r16;
+ };
+ struct types_opts {
+ enum options { eutra, nr, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ v2x_band_params_eutra_nr_r16_c() = default;
+ v2x_band_params_eutra_nr_r16_c(const v2x_band_params_eutra_nr_r16_c& other);
+ v2x_band_params_eutra_nr_r16_c& operator=(const v2x_band_params_eutra_nr_r16_c& other);
+ ~v2x_band_params_eutra_nr_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
+ eutra_s_& eutra()
+ {
+ assert_choice_type(types::eutra, type_, "V2X-BandParametersEUTRA-NR-r16");
+ return c.get<eutra_s_>();
+ }
+ nr_s_& nr()
+ {
+ assert_choice_type(types::nr, type_, "V2X-BandParametersEUTRA-NR-r16");
+ return c.get<nr_s_>();
+ }
+ const eutra_s_& eutra() const
+ {
+ assert_choice_type(types::eutra, type_, "V2X-BandParametersEUTRA-NR-r16");
+ return c.get<eutra_s_>();
+ }
+ const nr_s_& nr() const
+ {
+ assert_choice_type(types::nr, type_, "V2X-BandParametersEUTRA-NR-r16");
+ return c.get<nr_s_>();
+ }
+ eutra_s_& set_eutra();
+ nr_s_& set_nr();
+
+private:
+ types type_;
+ choice_buffer_t<eutra_s_, nr_s_> c;
+
+ void destroy_();
+};
+
+// V2X-SupportedBandCombinationEUTRA-NR-r16 ::= SEQUENCE (SIZE (1..512)) OF V2X-BandParametersEUTRA-NR-r16
+using v2x_supported_band_combination_eutra_nr_r16_l = dyn_array<v2x_band_params_eutra_nr_r16_c>;
+
+// SL-Parameters-v1610 ::= SEQUENCE
+struct sl_params_v1610_s {
+ bool sl_param_nr_r16_present = false;
+ bool dummy_present = false;
+ dyn_octstring sl_param_nr_r16;
+ v2x_supported_band_combination_eutra_nr_r16_l dummy;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// V2X-BandParametersEUTRA-NR-v1630 ::= CHOICE
+struct v2x_band_params_eutra_nr_v1630_c {
+ struct nr_s_ {
+ bool tx_sidelink_r16_present = false;
+ bool rx_sidelink_r16_present = false;
+ };
+ struct types_opts {
+ enum options { eutra, nr, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ v2x_band_params_eutra_nr_v1630_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
+ nr_s_& nr()
+ {
+ assert_choice_type(types::nr, type_, "V2X-BandParametersEUTRA-NR-v1630");
+ return c;
+ }
+ const nr_s_& nr() const
+ {
+ assert_choice_type(types::nr, type_, "V2X-BandParametersEUTRA-NR-v1630");
+ return c;
+ }
+ void set_eutra();
+ nr_s_& set_nr();
+
+private:
+ types type_;
+ nr_s_ c;
+};
+
+// V2X-BandCombinationParametersEUTRA-NR-v1630 ::= SEQUENCE
+struct v2x_band_combination_params_eutra_nr_v1630_s {
+ using band_list_sidelink_eutra_nr_r16_l_ = dyn_array<v2x_band_params_eutra_nr_r16_c>;
+ using band_list_sidelink_eutra_nr_v1630_l_ = dyn_array<v2x_band_params_eutra_nr_v1630_c>;
+
+ // member variables
+ band_list_sidelink_eutra_nr_r16_l_ band_list_sidelink_eutra_nr_r16;
+ band_list_sidelink_eutra_nr_v1630_l_ band_list_sidelink_eutra_nr_v1630;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// V2X-SupportedBandCombinationEUTRA-NR-v1630 ::= SEQUENCE (SIZE (1..512)) OF
+// V2X-BandCombinationParametersEUTRA-NR-v1630
+using v2x_supported_band_combination_eutra_nr_v1630_l = dyn_array<v2x_band_combination_params_eutra_nr_v1630_s>;
+
+// SL-Parameters-v1630 ::= SEQUENCE
+struct sl_params_v1630_s {
+ bool v2x_supported_band_combination_list_eutra_nr_r16_present = false;
+ v2x_supported_band_combination_eutra_nr_v1630_l v2x_supported_band_combination_list_eutra_nr_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// V2X-BandParametersEUTRA-NR-v1710 ::= SEQUENCE
+struct v2x_band_params_eutra_nr_v1710_s {
+ bool v2x_band_params_eutra_nr_v1710_present = false;
+ dyn_octstring v2x_band_params_eutra_nr_v1710;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// V2X-BandCombinationParametersEUTRA-NR-v1710 ::= SEQUENCE (SIZE (1..64)) OF V2X-BandParametersEUTRA-NR-v1710
+using v2x_band_combination_params_eutra_nr_v1710_l = dyn_array<v2x_band_params_eutra_nr_v1710_s>;
+
+// V2X-SupportedBandCombinationEUTRA-NR-v1710 ::= SEQUENCE (SIZE (1..512)) OF
+// V2X-BandCombinationParametersEUTRA-NR-v1710
+using v2x_supported_band_combination_eutra_nr_v1710_l = dyn_array<v2x_band_combination_params_eutra_nr_v1710_l>;
+
+// SL-Parameters-v1710 ::= SEQUENCE
+struct sl_params_v1710_s {
+ bool v2x_supported_band_combination_list_eutra_nr_v1710_present = false;
+ v2x_supported_band_combination_eutra_nr_v1710_l v2x_supported_band_combination_list_eutra_nr_v1710;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// PhyLayerParameters-v1730 ::= SEQUENCE
+struct phy_layer_params_v1730_s {
+ bool csi_sf_set2_for_dormant_scell_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;
+};
+
+// NTN-Parameters-v1720 ::= SEQUENCE
+struct ntn_params_v1720_s {
+ struct ntn_segmented_precompensation_gaps_r17_opts {
+ enum options { sym1, sl1, sf1, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<ntn_segmented_precompensation_gaps_r17_opts> ntn_segmented_precompensation_gaps_r17_e_;
+
+ // member variables
+ bool ntn_segmented_precompensation_gaps_r17_present = false;
+ ntn_segmented_precompensation_gaps_r17_e_ ntn_segmented_precompensation_gaps_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// UE-EUTRA-Capability-v1730-IEs ::= SEQUENCE
+struct ue_eutra_cap_v1730_ies_s {
+ bool non_crit_ext_present = false;
+ phy_layer_params_v1730_s phy_layer_params_v1730;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// IRAT-ParametersNR-v1710 ::= SEQUENCE
+struct irat_params_nr_v1710_s {
+ bool extended_band_n77_minus2_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;
+};
+
+// NeighCellSI-AcquisitionParameters-v1710 ::= SEQUENCE
+struct neigh_cell_si_acquisition_params_v1710_s {
+ bool gnb_id_len_report_nr_en_dc_r17_present = false;
+ bool gnb_id_len_report_nr_no_en_dc_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;
+};
+
+// UE-EUTRA-Capability-v1720-IEs ::= SEQUENCE
+struct ue_eutra_cap_v1720_ies_s {
+ bool non_crit_ext_present = false;
+ ntn_params_v1720_s ntn_params_v1720;
+ ue_eutra_cap_v1730_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;
+};
+
+// IRAT-ParametersNR-v1700 ::= SEQUENCE
+struct irat_params_nr_v1700_s {
+ bool eutra_minus5_gc_ho_to_nr_tdd_fr2_minus2_r17_present = false;
+ bool eutra_epc_ho_to_nr_tdd_fr2_minus2_r17_present = false;
+ bool ce_eutra_minus5_gc_ho_to_nr_tdd_fr2_minus2_r17_present = false;
+ bool ims_voice_over_nr_fr2_minus2_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;
+};
+
+// NTN-Parameters-r17 ::= SEQUENCE
+struct ntn_params_r17_s {
+ struct ntn_scenario_support_r17_opts {
+ enum options { ngso, gso, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<ntn_scenario_support_r17_opts> ntn_scenario_support_r17_e_;
+
+ // member variables
+ bool ntn_connect_epc_r17_present = false;
+ bool ntn_ta_report_r17_present = false;
+ bool ntn_pur_timer_delay_r17_present = false;
+ bool ntn_offset_timing_enh_r17_present = false;
+ bool ntn_scenario_support_r17_present = false;
+ ntn_scenario_support_r17_e_ ntn_scenario_support_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// PhyLayerParameters-v1700 ::= SEQUENCE
+struct phy_layer_params_v1700_s {
+ struct ce_cap_v1700_s_ {
+ bool ce_pdsch_minus14_harq_processes_r17_present = false;
+ bool ce_pdsch_minus14_harq_processes_alt2_r17_present = false;
+ bool ce_pdsch_max_tbs_r17_present = false;
+ };
+
+ // member variables
+ bool ce_cap_v1700_present = false;
+ ce_cap_v1700_s_ ce_cap_v1700;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// UE-BasedNetwPerfMeasParameters-v1700 ::= SEQUENCE
+struct ue_based_netw_perf_meas_params_v1700_s {
+ bool logged_meas_idle_event_l1_r17_present = false;
+ bool logged_meas_idle_event_out_of_coverage_r17_present = false;
+ bool logged_meas_uncom_bar_pre_r17_present = false;
+ bool imm_meas_uncom_bar_pre_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;
+};
+
+// UE-EUTRA-Capability-v1710-IEs ::= SEQUENCE
+struct ue_eutra_cap_v1710_ies_s {
+ bool neigh_cell_si_acquisition_params_v1710_present = false;
+ bool sl_params_v1710_present = false;
+ bool sidelink_requested_r17_present = false;
+ bool non_crit_ext_present = false;
+ irat_params_nr_v1710_s irat_params_nr_v1710;
+ neigh_cell_si_acquisition_params_v1710_s neigh_cell_si_acquisition_params_v1710;
+ sl_params_v1710_s sl_params_v1710;
+ ue_eutra_cap_v1720_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;
+};
+
+// Other-Parameters-v1690 ::= SEQUENCE
+struct other_params_v1690_s {
+ bool ul_rrc_segmentation_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;
+};
+
+// UE-EUTRA-Capability-v1700-IEs ::= SEQUENCE
+struct ue_eutra_cap_v1700_ies_s {
+ bool meas_params_v1700_present = false;
+ bool ue_based_netw_perf_meas_params_v1700_present = false;
+ bool ntn_params_r17_present = false;
+ bool irat_params_nr_v1700_present = false;
+ bool non_crit_ext_present = false;
+ meas_params_v1700_s meas_params_v1700;
+ ue_based_netw_perf_meas_params_v1700_s ue_based_netw_perf_meas_params_v1700;
+ phy_layer_params_v1700_s phy_layer_params_v1700;
+ ntn_params_r17_s ntn_params_r17;
+ irat_params_nr_v1700_s irat_params_nr_v1700;
+ mbms_params_v1700_s mbms_params_v1700;
+ ue_eutra_cap_v1710_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;
+};
+
+// IRAT-ParametersNR-v1660 ::= SEQUENCE
+struct irat_params_nr_v1660_s {
+ bool extended_band_n77_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;
+};
+
+// UE-EUTRA-Capability-v1690-IEs ::= SEQUENCE
+struct ue_eutra_cap_v1690_ies_s {
+ bool non_crit_ext_present = false;
+ other_params_v1690_s other_params_v1690;
+ ue_eutra_cap_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;
+};
+
+// MeasParameters-v1630 ::= SEQUENCE
+struct meas_params_v1630_s {
+ bool nr_idle_inactive_beam_meas_fr1_r16_present = false;
+ bool nr_idle_inactive_beam_meas_fr2_r16_present = false;
+ bool ce_meas_rss_ded_same_rbs_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;
+};
+
+// Other-Parameters-v1650 ::= SEQUENCE
+struct other_params_v1650_s {
+ bool mps_prio_ind_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;
+};
+
+// UE-EUTRA-Capability-v1660-IEs ::= SEQUENCE
+struct ue_eutra_cap_v1660_ies_s {
+ bool non_crit_ext_present = false;
+ irat_params_nr_v1660_s irat_params_nr_v1660;
+ ue_eutra_cap_v1690_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;
+};
+
+// EUTRA-5GC-Parameters-v1610 ::= SEQUENCE
+struct eutra_minus5_gc_params_v1610_s {
+ bool ce_inactive_state_r16_present = false;
+ bool ce_eutra_minus5_gc_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;
+};
+
+// IRAT-ParametersNR-v1610 ::= SEQUENCE
+struct irat_params_nr_v1610_s {
+ bool nr_ho_to_en_dc_r16_present = false;
+ bool ce_eutra_minus5_gc_ho_to_nr_fdd_fr1_r16_present = false;
+ bool ce_eutra_minus5_gc_ho_to_nr_tdd_fr1_r16_present = false;
+ bool ce_eutra_minus5_gc_ho_to_nr_fdd_fr2_r16_present = false;
+ bool ce_eutra_minus5_gc_ho_to_nr_tdd_fr2_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;
+};
+
+// MAC-Parameters-v1630 ::= SEQUENCE
+struct mac_params_v1630_s {
+ bool direct_scg_scell_activation_nedc_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;
+};
+
+// MobilityParameters-v1610 ::= SEQUENCE
+struct mob_params_v1610_s {
+ bool cho_r16_present = false;
+ bool cho_fdd_tdd_r16_present = false;
+ bool cho_fail_r16_present = false;
+ bool cho_two_trigger_events_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;
+};
+
+// NeighCellSI-AcquisitionParameters-v1610 ::= SEQUENCE
+struct neigh_cell_si_acquisition_params_v1610_s {
+ bool eutra_si_acquisition_for_ho_endc_r16_present = false;
+ bool nr_autonomous_gaps_endc_fr1_r16_present = false;
+ bool nr_autonomous_gaps_endc_fr2_r16_present = false;
+ bool nr_autonomous_gaps_fr1_r16_present = false;
+ bool nr_autonomous_gaps_fr2_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;
+};
+
+// PUR-Parameters-r16 ::= SEQUENCE
+struct pur_params_r16_s {
+ bool pur_cp_minus5_gc_ce_mode_a_r16_present = false;
+ bool pur_cp_minus5_gc_ce_mode_b_r16_present = false;
+ bool pur_up_minus5_gc_ce_mode_a_r16_present = false;
+ bool pur_up_minus5_gc_ce_mode_b_r16_present = false;
+ bool pur_cp_epc_ce_mode_a_r16_present = false;
+ bool pur_cp_epc_ce_mode_b_r16_present = false;
+ bool pur_up_epc_ce_mode_a_r16_present = false;
+ bool pur_up_epc_ce_mode_b_r16_present = false;
+ bool pur_cp_l1_ack_r16_present = false;
+ bool pur_freq_hop_r16_present = false;
+ bool pur_pusch_nb_max_tbs_r16_present = false;
+ bool pur_rsrp_validation_r16_present = false;
+ bool pur_sub_prb_ce_mode_a_r16_present = false;
+ bool pur_sub_prb_ce_mode_b_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;
+};
+
+// UE-EUTRA-Capability-v1650-IEs ::= SEQUENCE
+struct ue_eutra_cap_v1650_ies_s {
+ bool other_params_v1650_present = false;
+ bool non_crit_ext_present = false;
+ other_params_v1650_s other_params_v1650;
+ ue_eutra_cap_v1660_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;
+};
+
+// UE-EUTRA-CapabilityAddXDD-Mode-v1630 ::= SEQUENCE
+struct ue_eutra_cap_add_xdd_mode_v1630_s {
+ meas_params_v1630_s meas_params_v1630;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// HighSpeedEnhParameters-v1610 ::= SEQUENCE
+struct high_speed_enh_params_v1610_s {
+ bool meas_enhance_scell_r16_present = false;
+ bool meas_enhance2_r16_present = false;
+ bool demod_enhance2_r16_present = false;
+ bool inter_rat_enhancement_nr_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;
+};
+
+// MAC-Parameters-v1610 ::= SEQUENCE
+struct mac_params_v1610_s {
+ bool direct_mcg_scell_activation_resume_r16_present = false;
+ bool direct_scg_scell_activation_resume_r16_present = false;
+ bool early_data_up_minus5_gc_r16_present = false;
+ bool rai_support_enh_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;
+};
+
+// MMTEL-Parameters-v1610 ::= SEQUENCE
+struct mmtel_params_v1610_s {
+ bool recommended_bit_rate_multiplier_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;
+};
+
// NeighCellSI-AcquisitionParameters-v15a0 ::= SEQUENCE
struct neigh_cell_si_acquisition_params_v15a0_s {
bool eutra_cgi_report_nedc_r15_present = false;
@@ -3283,6 +4252,64 @@ struct neigh_cell_si_acquisition_params_v15a0_s {
void to_json(json_writer& j) const;
};
+// Other-Parameters-v1610 ::= SEQUENCE
+struct other_params_v1610_s {
+ bool resume_with_stored_mcg_scells_r16_present = false;
+ bool resume_with_mcg_scell_cfg_r16_present = false;
+ bool resume_with_stored_scg_r16_present = false;
+ bool resume_with_scg_cfg_r16_present = false;
+ bool mcg_rlf_recovery_via_scg_r16_present = false;
+ bool overheat_ind_for_scg_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;
+};
+
+// PDCP-Parameters-v1610 ::= SEQUENCE
+struct pdcp_params_v1610_s {
+ struct max_num_ehc_contexts_r16_opts {
+ enum options {
+ cs2,
+ cs4,
+ cs8,
+ cs16,
+ cs32,
+ cs64,
+ cs128,
+ cs256,
+ cs512,
+ cs1024,
+ cs2048,
+ cs4096,
+ cs8192,
+ cs16384,
+ cs32768,
+ cs65536,
+ nulltype
+ } value;
+ typedef uint32_t number_type;
+
+ const char* to_string() const;
+ uint32_t to_number() const;
+ };
+ typedef enumerated<max_num_ehc_contexts_r16_opts> max_num_ehc_contexts_r16_e_;
+
+ // member variables
+ bool pdcp_version_change_without_ho_r16_present = false;
+ bool ehc_r16_present = false;
+ bool continue_ehc_context_r16_present = false;
+ bool max_num_ehc_contexts_r16_present = false;
+ bool joint_ehc_rohc_cfg_r16_present = false;
+ max_num_ehc_contexts_r16_e_ max_num_ehc_contexts_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// PhyLayerParameters-v1540 ::= SEQUENCE
struct phy_layer_params_v1540_s {
struct stti_spt_cap_v1540_s_ {};
@@ -3308,6 +4335,60 @@ struct phy_layer_params_v1550_s {
void to_json(json_writer& j) const;
};
+// UE-BasedNetwPerfMeasParameters-v1610 ::= SEQUENCE
+struct ue_based_netw_perf_meas_params_v1610_s {
+ bool ul_pdcp_avg_delay_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;
+};
+
+// UE-EUTRA-Capability-v1630-IEs ::= SEQUENCE
+struct ue_eutra_cap_v1630_ies_s {
+ bool rf_params_v1630_present = false;
+ bool sl_params_v1630_present = false;
+ bool early_security_reactivation_r16_present = false;
+ bool meas_params_v1630_present = false;
+ bool non_crit_ext_present = false;
+ rf_params_v1630_s rf_params_v1630;
+ sl_params_v1630_s sl_params_v1630;
+ mac_params_v1630_s mac_params_v1630;
+ meas_params_v1630_s meas_params_v1630;
+ ue_eutra_cap_add_xdd_mode_v1630_s fdd_add_ue_eutra_cap_v1630;
+ ue_eutra_cap_add_xdd_mode_v1630_s tdd_add_ue_eutra_cap_v1630;
+ ue_eutra_cap_v1650_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;
+};
+
+// UE-EUTRA-CapabilityAddXDD-Mode-v1610 ::= SEQUENCE
+struct ue_eutra_cap_add_xdd_mode_v1610_s {
+ bool phy_layer_params_v1610_present = false;
+ bool pur_params_r16_present = false;
+ bool meas_params_v1610_present = false;
+ bool eutra_minus5_gc_params_v1610_present = false;
+ bool irat_params_nr_v1610_present = false;
+ bool neigh_cell_si_acquisition_params_v1610_present = false;
+ bool mob_params_v1610_present = false;
+ phy_layer_params_v1610_s phy_layer_params_v1610;
+ pur_params_r16_s pur_params_r16;
+ meas_params_v1610_s meas_params_v1610;
+ eutra_minus5_gc_params_v1610_s eutra_minus5_gc_params_v1610;
+ irat_params_nr_v1610_s irat_params_nr_v1610;
+ neigh_cell_si_acquisition_params_v1610_s neigh_cell_si_acquisition_params_v1610;
+ mob_params_v1610_s mob_params_v1610;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// EUTRA-5GC-Parameters-r15 ::= SEQUENCE
struct eutra_minus5_gc_params_r15_s {
bool eutra_minus5_gc_r15_present = false;
@@ -3324,6 +4405,52 @@ struct eutra_minus5_gc_params_r15_s {
void to_json(json_writer& j) const;
};
+// UE-EUTRA-Capability-v1610-IEs ::= SEQUENCE
+struct ue_eutra_cap_v1610_ies_s {
+ bool high_speed_enh_params_v1610_present = false;
+ bool neigh_cell_si_acquisition_params_v1610_present = false;
+ bool mbms_params_v1610_present = false;
+ bool pdcp_params_v1610_present = false;
+ bool mac_params_v1610_present = false;
+ bool phy_layer_params_v1610_present = false;
+ bool meas_params_v1610_present = false;
+ bool pur_params_r16_present = false;
+ bool eutra_minus5_gc_params_v1610_present = false;
+ bool other_params_v1610_present = false;
+ bool dl_ded_msg_segmentation_r16_present = false;
+ bool irat_params_nr_v1610_present = false;
+ bool rf_params_v1610_present = false;
+ bool mob_params_v1610_present = false;
+ bool sl_params_v1610_present = false;
+ bool fdd_add_ue_eutra_cap_v1610_present = false;
+ bool tdd_add_ue_eutra_cap_v1610_present = false;
+ bool non_crit_ext_present = false;
+ high_speed_enh_params_v1610_s high_speed_enh_params_v1610;
+ neigh_cell_si_acquisition_params_v1610_s neigh_cell_si_acquisition_params_v1610;
+ mbms_params_v1610_s mbms_params_v1610;
+ pdcp_params_v1610_s pdcp_params_v1610;
+ mac_params_v1610_s mac_params_v1610;
+ phy_layer_params_v1610_s phy_layer_params_v1610;
+ meas_params_v1610_s meas_params_v1610;
+ pur_params_r16_s pur_params_r16;
+ eutra_minus5_gc_params_v1610_s eutra_minus5_gc_params_v1610;
+ other_params_v1610_s other_params_v1610;
+ mmtel_params_v1610_s mmtel_params_v1610;
+ irat_params_nr_v1610_s irat_params_nr_v1610;
+ rf_params_v1610_s rf_params_v1610;
+ mob_params_v1610_s mob_params_v1610;
+ ue_based_netw_perf_meas_params_v1610_s ue_based_netw_perf_meas_params_v1610;
+ sl_params_v1610_s sl_params_v1610;
+ ue_eutra_cap_add_xdd_mode_v1610_s fdd_add_ue_eutra_cap_v1610;
+ ue_eutra_cap_add_xdd_mode_v1610_s tdd_add_ue_eutra_cap_v1610;
+ ue_eutra_cap_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;
+};
+
// UE-EUTRA-CapabilityAddXDD-Mode-v15a0 ::= SEQUENCE
struct ue_eutra_cap_add_xdd_mode_v15a0_s {
bool phy_layer_params_v1530_present = false;
@@ -3393,6 +4520,7 @@ struct ue_eutra_cap_v15a0_ies_s {
eutra_minus5_gc_params_r15_s eutra_minus5_gc_params_r15;
ue_eutra_cap_add_xdd_mode_v15a0_s fdd_add_ue_eutra_cap_v15a0;
ue_eutra_cap_add_xdd_mode_v15a0_s tdd_add_ue_eutra_cap_v15a0;
+ ue_eutra_cap_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -4352,7 +5480,7 @@ struct mac_params_v1310_s {
// MeasParameters-v1310 ::= SEQUENCE
struct meas_params_v1310_s {
bool rs_sinr_meas_r13_present = false;
- bool white_cell_list_r13_present = false;
+ bool allowed_cell_list_r13_present = false;
bool extended_max_obj_id_r13_present = false;
bool ul_pdcp_delay_r13_present = false;
bool extended_freq_priorities_r13_present = false;
@@ -5073,13 +6201,13 @@ struct ue_eutra_cap_v940_ies_s {
// AccessStratumRelease ::= ENUMERATED
struct access_stratum_release_opts {
- enum options { rel8, rel9, rel10, rel11, rel12, rel13, rel14, rel15, /*...*/ nulltype } value;
+ enum options { rel8, rel9, rel10, rel11, rel12, rel13, rel14, rel15, /*...*/ rel16, rel17, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
-typedef enumerated<access_stratum_release_opts, true> access_stratum_release_e;
+typedef enumerated<access_stratum_release_opts, true, 2> access_stratum_release_e;
// PhyLayerParameters ::= SEQUENCE
struct phy_layer_params_s {
@@ -5151,6 +6279,55 @@ struct ue_eutra_cap_s {
void to_json(json_writer& j) const;
};
+// MeasParameters-v16c0 ::= SEQUENCE
+struct meas_params_v16c0_s {
+ bool nr_cell_individual_offset_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;
+};
+
+// UE-EUTRA-Capability-v16c0-IEs ::= SEQUENCE
+struct ue_eutra_cap_v16c0_ies_s {
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ meas_params_v16c0_s meas_params_v16c0;
+ 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;
+};
+
+// UE-EUTRA-Capability-v15x0-IEs ::= SEQUENCE
+struct ue_eutra_cap_v15x0_ies_s {
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring late_non_crit_ext;
+ ue_eutra_cap_v16c0_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;
+};
+
+// UE-EUTRA-Capability-v14x0-IEs ::= SEQUENCE
+struct ue_eutra_cap_v14x0_ies_s {
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring late_non_crit_ext;
+ ue_eutra_cap_v15x0_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;
+};
+
// PhyLayerParameters-v14a0 ::= SEQUENCE
struct phy_layer_params_v14a0_s {
bool ssp10_tdd_only_r14_present = false;
@@ -5163,9 +6340,10 @@ struct phy_layer_params_v14a0_s {
// UE-EUTRA-Capability-v14b0-IEs ::= SEQUENCE
struct ue_eutra_cap_v14b0_ies_s {
- bool rf_params_v14b0_present = false;
- bool non_crit_ext_present = false;
- rf_params_v14b0_s rf_params_v14b0;
+ bool rf_params_v14b0_present = false;
+ bool non_crit_ext_present = false;
+ rf_params_v14b0_s rf_params_v14b0;
+ ue_eutra_cap_v14x0_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
diff --git a/lib/include/srsran/asn1/rrc/ul_ccch_msg.h b/lib/include/srsran/asn1/rrc/ul_ccch_msg.h
index 18fe247cb..bdb7aff4e 100644
--- a/lib/include/srsran/asn1/rrc/ul_ccch_msg.h
+++ b/lib/include/srsran/asn1/rrc/ul_ccch_msg.h
@@ -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
******************************************************************************/
+// 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
struct establishment_cause_opts {
enum options {
@@ -46,8 +65,8 @@ struct establishment_cause_opts {
};
typedef enumerated<establishment_cause_opts> establishment_cause_e;
-// EstablishmentCause-5GC ::= ENUMERATED
-struct establishment_cause_minus5_gc_opts {
+// EstablishmentCause-5GC-r15 ::= ENUMERATED
+struct establishment_cause_minus5_gc_r15_opts {
enum options {
emergency,
high_prio_access,
@@ -62,7 +81,7 @@ struct establishment_cause_minus5_gc_opts {
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
struct init_ue_id_c {
@@ -114,8 +133,8 @@ private:
void destroy_();
};
-// InitialUE-Identity-5GC ::= CHOICE
-struct init_ue_id_minus5_gc_c {
+// InitialUE-Identity-5GC-r15 ::= CHOICE
+struct init_ue_id_minus5_gc_r15_c {
struct types_opts {
enum options { ng_minus5_g_s_tmsi_part1, random_value, nulltype } value;
typedef int8_t number_type;
@@ -126,10 +145,10 @@ struct init_ue_id_minus5_gc_c {
typedef enumerated<types_opts> types;
// choice methods
- init_ue_id_minus5_gc_c() = default;
- init_ue_id_minus5_gc_c(const init_ue_id_minus5_gc_c& other);
- init_ue_id_minus5_gc_c& operator=(const init_ue_id_minus5_gc_c& other);
- ~init_ue_id_minus5_gc_c() { destroy_(); }
+ init_ue_id_minus5_gc_r15_c() = default;
+ init_ue_id_minus5_gc_r15_c(const init_ue_id_minus5_gc_r15_c& other);
+ init_ue_id_minus5_gc_r15_c& operator=(const init_ue_id_minus5_gc_r15_c& other);
+ ~init_ue_id_minus5_gc_r15_c() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
@@ -138,22 +157,22 @@ struct init_ue_id_minus5_gc_c {
// getters
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> >();
}
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> >();
}
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> >();
}
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> >();
}
fixed_bitstring<40>& set_ng_minus5_g_s_tmsi_part1();
@@ -168,9 +187,10 @@ private:
// RRCEarlyDataRequest-v1590-IEs ::= SEQUENCE
struct rrc_early_data_request_v1590_ies_s {
- bool late_non_crit_ext_present = false;
- bool non_crit_ext_present = false;
- dyn_octstring late_non_crit_ext;
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring late_non_crit_ext;
+ rrc_early_data_request_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -208,7 +228,7 @@ struct resume_cause_opts {
mo_data,
delay_tolerant_access_v1020,
mo_voice_call_v1280,
- spare1,
+ mt_edt_v1610,
nulltype
} value;
@@ -248,9 +268,9 @@ struct rrc_conn_reest_request_r8_ies_s {
// RRCConnectionRequest-5GC-r15-IEs ::= SEQUENCE
struct rrc_conn_request_minus5_gc_r15_ies_s {
- init_ue_id_minus5_gc_c ue_id;
- establishment_cause_minus5_gc_e establishment_cause;
- fixed_bitstring<1> spare;
+ init_ue_id_minus5_gc_r15_c ue_id_r15;
+ establishment_cause_minus5_gc_r15_e establishment_cause_r15;
+ fixed_bitstring<1> spare;
// sequence methods
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;
};
+// 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
struct rrc_early_data_request_r15_ies_s {
struct establishment_cause_r15_opts {
@@ -586,6 +629,41 @@ struct rrc_conn_resume_request_r13_s {
// RRCEarlyDataRequest-r15 ::= SEQUENCE
struct rrc_early_data_request_r15_s {
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 {
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
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);
types type() const { return type_; }
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()
{
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
{
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();
- void set_crit_exts_future();
+ crit_exts_future_c_& set_crit_exts_future();
private:
- types type_;
- rrc_early_data_request_r15_ies_s c;
+ types type_;
+ choice_buffer_t<crit_exts_future_c_, rrc_early_data_request_r15_ies_s> c;
+
+ void destroy_();
};
// member variables
diff --git a/lib/include/srsran/asn1/rrc/ul_dcch_msg.h b/lib/include/srsran/asn1/rrc/ul_dcch_msg.h
index 88ba0cc98..9c15be9e6 100644
--- a/lib/include/srsran/asn1/rrc/ul_dcch_msg.h
+++ b/lib/include/srsran/asn1/rrc/ul_dcch_msg.h
@@ -12,7 +12,7 @@
/*******************************************************************************
*
- * 3GPP TS ASN1 RRC v15.11.0 (2020-09)
+ * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
*
******************************************************************************/
@@ -92,6 +92,97 @@ struct tmgi_r9_s {
void to_json(json_writer& j) const;
};
+// GNSS-ValidityDuration-r17 ::= ENUMERATED
+struct gnss_validity_dur_r17_opts {
+ enum options {
+ s10,
+ s20,
+ s30,
+ s40,
+ s50,
+ s60,
+ min5,
+ min10,
+ min15,
+ min20,
+ min25,
+ min30,
+ min50,
+ min90,
+ min120,
+ infinity,
+ nulltype
+ } value;
+
+ const char* to_string() const;
+};
+typedef enumerated<gnss_validity_dur_r17_opts> gnss_validity_dur_r17_e;
+
+// RRCConnectionSetupComplete-v1710-IEs ::= SEQUENCE
+struct rrc_conn_setup_complete_v1710_ies_s {
+ bool gnss_validity_dur_r17_present = false;
+ bool non_crit_ext_present = false;
+ gnss_validity_dur_r17_e gnss_validity_dur_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// RRCConnectionSetupComplete-v1690-IEs ::= SEQUENCE
+struct rrc_conn_setup_complete_v1690_ies_s {
+ bool ul_rrc_segmentation_r16_present = false;
+ bool non_crit_ext_present = false;
+ rrc_conn_setup_complete_v1710_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;
+};
+
+// ResultsPerSSB-IndexIdle-r16 ::= SEQUENCE
+struct results_per_ssb_idx_idle_r16_s {
+ struct ssb_results_r16_s_ {
+ bool ssb_rsrp_result_r16_present = false;
+ bool ssb_rsrq_result_r16_present = false;
+ uint8_t ssb_rsrp_result_r16 = 0;
+ uint8_t ssb_rsrq_result_r16 = 0;
+ };
+
+ // member variables
+ bool ssb_results_r16_present = false;
+ uint8_t ssb_idx_r16 = 0;
+ ssb_results_r16_s_ ssb_results_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// RRCConnectionSetupComplete-v1610-IEs ::= SEQUENCE
+struct rrc_conn_setup_complete_v1610_ies_s {
+ bool rlos_request_r16_present = false;
+ bool cp_cio_t_minus5_gs_optim_r16_present = false;
+ bool up_cio_t_minus5_gs_optim_r16_present = false;
+ bool pur_cfg_id_r16_present = false;
+ bool lte_m_r16_present = false;
+ bool iab_node_ind_r16_present = false;
+ bool non_crit_ext_present = false;
+ fixed_bitstring<20> pur_cfg_id_r16;
+ rrc_conn_setup_complete_v1690_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;
+};
+
+// ResultsPerSSB-IndexList-r16 ::= SEQUENCE (SIZE (1..32)) OF ResultsPerSSB-IndexIdle-r16
+using results_per_ssb_idx_list_r16_l = dyn_array<results_per_ssb_idx_idle_r16_s>;
+
// MeasResultIdleEUTRA-r15 ::= SEQUENCE
struct meas_result_idle_eutra_r15_s {
struct meas_result_r15_s_ {
@@ -112,6 +203,41 @@ struct meas_result_idle_eutra_r15_s {
void to_json(json_writer& j) const;
};
+// MeasResultsPerCellIdleNR-r16 ::= SEQUENCE
+struct meas_results_per_cell_idle_nr_r16_s {
+ struct meas_idle_result_nr_r16_s_ {
+ bool rsrp_result_nr_r16_present = false;
+ bool rsrq_result_nr_r16_present = false;
+ bool result_rs_idx_list_r16_present = false;
+ uint8_t rsrp_result_nr_r16 = 0;
+ uint8_t rsrq_result_nr_r16 = 0;
+ results_per_ssb_idx_list_r16_l result_rs_idx_list_r16;
+ };
+
+ // member variables
+ bool ext = false;
+ uint16_t pci_nr_r16 = 0;
+ meas_idle_result_nr_r16_s_ meas_idle_result_nr_r16;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// RRCConnectionReconfigurationComplete-v1710-IEs ::= SEQUENCE
+struct rrc_conn_recfg_complete_v1710_ies_s {
+ bool gnss_validity_dur_r17_present = false;
+ bool non_crit_ext_present = false;
+ gnss_validity_dur_r17_e gnss_validity_dur_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// RRCConnectionSetupComplete-v1540-IEs ::= SEQUENCE
struct rrc_conn_setup_complete_v1540_ies_s {
struct guami_type_r15_opts {
@@ -122,10 +248,11 @@ struct rrc_conn_setup_complete_v1540_ies_s {
typedef enumerated<guami_type_r15_opts> guami_type_r15_e_;
// member variables
- bool gummei_type_v1540_present = false;
- bool guami_type_r15_present = false;
- bool non_crit_ext_present = false;
- guami_type_r15_e_ guami_type_r15;
+ bool gummei_type_v1540_present = false;
+ bool guami_type_r15_present = false;
+ bool non_crit_ext_present = false;
+ guami_type_r15_e_ guami_type_r15;
+ rrc_conn_setup_complete_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -198,6 +325,35 @@ private:
// MeasResultIdleListEUTRA-r15 ::= SEQUENCE (SIZE (1..8)) OF MeasResultIdleEUTRA-r15
using meas_result_idle_list_eutra_r15_l = dyn_array<meas_result_idle_eutra_r15_s>;
+// MeasResultIdleNR-r16 ::= SEQUENCE
+struct meas_result_idle_nr_r16_s {
+ using meas_results_per_cell_list_idle_nr_r16_l_ = dyn_array<meas_results_per_cell_idle_nr_r16_s>;
+
+ // member variables
+ bool ext = false;
+ uint32_t carrier_freq_nr_r16 = 0;
+ meas_results_per_cell_list_idle_nr_r16_l_ meas_results_per_cell_list_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;
+};
+
+// RRCConnectionReconfigurationComplete-v1700-IEs ::= SEQUENCE
+struct rrc_conn_recfg_complete_v1700_ies_s {
+ bool sel_cond_recfg_to_apply_r17_present = false;
+ bool non_crit_ext_present = false;
+ uint8_t sel_cond_recfg_to_apply_r17 = 1;
+ rrc_conn_recfg_complete_v1710_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;
+};
+
// RRCConnectionSetupComplete-v1530-IEs ::= SEQUENCE
struct rrc_conn_setup_complete_v1530_ies_s {
using s_nssai_list_r15_l_ = dyn_array<s_nssai_r15_c>;
@@ -317,6 +473,22 @@ struct meas_result_idle_r15_s {
void to_json(json_writer& j) const;
};
+// MeasResultListExtIdle-r16 ::= SEQUENCE (SIZE (1..5)) OF MeasResultIdleListEUTRA-r15
+using meas_result_list_ext_idle_r16_l = dyn_array<meas_result_idle_list_eutra_r15_l>;
+
+// MeasResultListIdleNR-r16 ::= SEQUENCE (SIZE (1..8)) OF MeasResultIdleNR-r16
+using meas_result_list_idle_nr_r16_l = dyn_array<meas_result_idle_nr_r16_s>;
+
+// OverheatingAssistance-v1710 ::= SEQUENCE
+struct overheat_assist_v1710_s {
+ dyn_octstring overheat_assist_for_scg_fr2_minus2_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// PerCC-GapIndication-r14 ::= SEQUENCE
struct per_cc_gap_ind_r14_s {
struct gap_ind_r14_opts {
@@ -336,12 +508,36 @@ struct per_cc_gap_ind_r14_s {
void to_json(json_writer& j) const;
};
+// RACH-Report-v1610 ::= SEQUENCE
+struct rach_report_v1610_s {
+ uint8_t init_cel_r16 = 0;
+ bool edt_fallback_r16 = false;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// RRCConnectionReconfigurationComplete-v1530-IEs ::= SEQUENCE
struct rrc_conn_recfg_complete_v1530_ies_s {
- bool log_meas_available_bt_r15_present = false;
- bool log_meas_available_wlan_r15_present = false;
- bool flight_path_info_available_r15_present = false;
- bool non_crit_ext_present = false;
+ bool log_meas_available_bt_r15_present = false;
+ bool log_meas_available_wlan_r15_present = false;
+ bool flight_path_info_available_r15_present = false;
+ bool non_crit_ext_present = false;
+ rrc_conn_recfg_complete_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;
+};
+
+// RRCConnectionReestablishmentComplete-v1710-IEs ::= SEQUENCE
+struct rrc_conn_reest_complete_v1710_ies_s {
+ bool gnss_validity_dur_r17_present = false;
+ bool non_crit_ext_present = false;
+ gnss_validity_dur_r17_e gnss_validity_dur_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -362,6 +558,18 @@ struct rrc_conn_setup_complete_v1430_ies_s {
void to_json(json_writer& j) const;
};
+// UEInformationResponse-v1710-IEs ::= SEQUENCE
+struct ue_info_resp_v1710_ies_s {
+ bool coarse_location_info_r17_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring coarse_location_info_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// VictimSystemType-r11 ::= SEQUENCE
struct victim_sys_type_r11_s {
bool gps_r11_present = false;
@@ -489,7 +697,7 @@ struct flight_path_info_report_r15_s {
// member variables
bool flight_path_r15_present = false;
- bool non_crit_ext_present = false;
+ bool dummy_present = false;
flight_path_r15_l_ flight_path_r15;
// sequence methods
@@ -519,10 +727,11 @@ struct rrc_conn_recfg_complete_v1510_ies_s {
// RRCConnectionReestablishmentComplete-v1530-IEs ::= SEQUENCE
struct rrc_conn_reest_complete_v1530_ies_s {
- bool log_meas_available_bt_r15_present = false;
- bool log_meas_available_wlan_r15_present = false;
- bool flight_path_info_available_r15_present = false;
- bool non_crit_ext_present = false;
+ bool log_meas_available_bt_r15_present = false;
+ bool log_meas_available_wlan_r15_present = false;
+ bool flight_path_info_available_r15_present = false;
+ bool non_crit_ext_present = false;
+ rrc_conn_reest_complete_v1710_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -542,17 +751,71 @@ struct rrc_conn_setup_complete_v1330_ies_s {
void to_json(json_writer& j) const;
};
+// UEAssistanceInformation-v1710-IEs ::= SEQUENCE
+struct ueassist_info_v1710_ies_s {
+ bool overheat_assist_v1710_present = false;
+ bool non_crit_ext_present = false;
+ overheat_assist_v1710_s overheat_assist_v1710;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// UEInformationResponse-v1610-IEs ::= SEQUENCE
+struct ue_info_resp_v1610_ies_s {
+ bool rach_report_v1610_present = false;
+ bool meas_result_list_ext_idle_r16_present = false;
+ bool meas_result_list_idle_nr_r16_present = false;
+ bool non_crit_ext_present = false;
+ rach_report_v1610_s rach_report_v1610;
+ meas_result_list_ext_idle_r16_l meas_result_list_ext_idle_r16;
+ meas_result_list_idle_nr_r16_l meas_result_list_idle_nr_r16;
+ ue_info_resp_v1710_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;
+};
+
+// VictimSystemType-v1610 ::= SEQUENCE
+struct victim_sys_type_v1610_s {
+ bool navic_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;
+};
+
// VisitedCellInfoList-r12 ::= SEQUENCE (SIZE (1..16)) OF VisitedCellInfo-r12
using visited_cell_info_list_r12_l = dyn_array<visited_cell_info_r12_s>;
+// InDeviceCoexIndication-v1610-IEs ::= SEQUENCE
+struct in_dev_coex_ind_v1610_ies_s {
+ bool victim_sys_type_v1610_present = false;
+ bool non_crit_ext_present = false;
+ victim_sys_type_v1610_s victim_sys_type_v1610;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// MRDC-AssistanceInfo-r15 ::= SEQUENCE
struct mrdc_assist_info_r15_s {
- using affected_carrier_freq_comb_info_list_mrdc_r15_l_ = dyn_array<affected_carrier_freq_comb_info_mrdc_r15_s>;
+ using affected_carrier_freq_comb_info_list_mrdc_r15_l_ = dyn_array<affected_carrier_freq_comb_info_mrdc_r15_s>;
+ using affected_carrier_freq_comb_info_list_mrdc_v1610_l_ = dyn_array<victim_sys_type_v1610_s>;
// member variables
bool ext = false;
affected_carrier_freq_comb_info_list_mrdc_r15_l_ affected_carrier_freq_comb_info_list_mrdc_r15;
// ...
+ // group 0
+ copy_ptr<affected_carrier_freq_comb_info_list_mrdc_v1610_l_> affected_carrier_freq_comb_info_list_mrdc_v1610;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -563,6 +826,16 @@ struct mrdc_assist_info_r15_s {
// MobilityHistoryReport-r12 ::= VisitedCellInfoList-r12
using mob_history_report_r12_l = visited_cell_info_list_r12_l;
+// OverheatingAssistance-v1610 ::= SEQUENCE
+struct overheat_assist_v1610_s {
+ dyn_octstring overheat_assist_for_scg_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// RRCConnectionReconfigurationComplete-v1430-IEs ::= SEQUENCE
struct rrc_conn_recfg_complete_v1430_ies_s {
bool per_cc_gap_ind_list_r14_present = false;
@@ -622,6 +895,28 @@ struct traffic_pattern_info_v1530_s {
void to_json(json_writer& j) const;
};
+// UEAssistanceInformation-v1700-IEs ::= SEQUENCE
+struct ueassist_info_v1700_ies_s {
+ struct scg_deactivation_pref_r17_opts {
+ enum options { scg_deactivation_preferred, no_pref, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<scg_deactivation_pref_r17_opts> scg_deactivation_pref_r17_e_;
+
+ // member variables
+ bool ul_data_r17_present = false;
+ bool scg_deactivation_pref_r17_present = false;
+ bool non_crit_ext_present = false;
+ scg_deactivation_pref_r17_e_ scg_deactivation_pref_r17;
+ ueassist_info_v1710_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;
+};
+
// UEInformationResponse-v1530-IEs ::= SEQUENCE
struct ue_info_resp_v1530_ies_s {
bool meas_result_list_idle_r15_present = false;
@@ -629,6 +924,7 @@ struct ue_info_resp_v1530_ies_s {
bool non_crit_ext_present = false;
meas_result_list_idle_r15_l meas_result_list_idle_r15;
flight_path_info_report_r15_s flight_path_info_report_r15;
+ ue_info_resp_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -667,6 +963,9 @@ struct conn_est_fail_report_r11_s {
meas_result_list_geran_l meas_result_list_geran_r11;
meas_result_list2_cdma2000_r9_l meas_results_cdma2000_r11;
};
+ struct meas_result_list_nr_v1640_s_ {
+ uint32_t carrier_freq_nr_r16 = 0;
+ };
// member variables
bool ext = false;
@@ -694,6 +993,11 @@ struct conn_est_fail_report_r11_s {
// group 2
copy_ptr<log_meas_result_list_bt_r15_l> log_meas_result_list_bt_r15;
copy_ptr<log_meas_result_list_wlan_r15_l> log_meas_result_list_wlan_r15;
+ // group 3
+ copy_ptr<meas_result_cell_list_nr_r15_l> meas_result_list_nr_r16;
+ // group 4
+ copy_ptr<meas_result_list_nr_v1640_s_> meas_result_list_nr_v1640;
+ copy_ptr<meas_result_freq_list_nr_r16_l> meas_result_list_ext_nr_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -715,9 +1019,41 @@ struct drb_count_info_s {
// InDeviceCoexIndication-v1530-IEs ::= SEQUENCE
struct in_dev_coex_ind_v1530_ies_s {
- bool mrdc_assist_info_r15_present = false;
- bool non_crit_ext_present = false;
- mrdc_assist_info_r15_s mrdc_assist_info_r15;
+ bool mrdc_assist_info_r15_present = false;
+ bool non_crit_ext_present = false;
+ mrdc_assist_info_r15_s mrdc_assist_info_r15;
+ in_dev_coex_ind_v1610_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;
+};
+
+// MBMS-ROM-Info-r16 ::= SEQUENCE
+struct mbms_rom_info_r16_s {
+ struct mbms_rom_subcarrier_spacing_r16_opts {
+ enum options { khz2dot5, khz0dot37, nulltype } value;
+ typedef float number_type;
+
+ const char* to_string() const;
+ float to_number() const;
+ const char* to_number_string() const;
+ };
+ typedef enumerated<mbms_rom_subcarrier_spacing_r16_opts> mbms_rom_subcarrier_spacing_r16_e_;
+ struct mbms_bw_r16_opts {
+ enum options { n6, n15, n25, n50, n75, n100, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<mbms_bw_r16_opts> mbms_bw_r16_e_;
+
+ // member variables
+ uint32_t mbms_rom_freq_r16 = 0;
+ mbms_rom_subcarrier_spacing_r16_e_ mbms_rom_subcarrier_spacing_r16;
+ mbms_bw_r16_e_ mbms_bw_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -790,6 +1126,19 @@ struct sl_v2x_comm_tx_res_req_r14_s {
// TrafficPatternInfoList-v1530 ::= SEQUENCE (SIZE (1..8)) OF TrafficPatternInfo-v1530
using traffic_pattern_info_list_v1530_l = dyn_array<traffic_pattern_info_v1530_s>;
+// UEAssistanceInformation-v1610-IEs ::= SEQUENCE
+struct ueassist_info_v1610_ies_s {
+ bool overheat_assist_v1610_present = false;
+ bool non_crit_ext_present = false;
+ overheat_assist_v1610_s overheat_assist_v1610;
+ ueassist_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;
+};
+
// UEInformationResponse-v1250-IEs ::= SEQUENCE
struct ue_info_resp_v1250_ies_s {
bool mob_history_report_r12_present = false;
@@ -979,12 +1328,29 @@ struct mbms_service_info_r13_s {
void to_json(json_writer& j) const;
};
-// MeasResultFreqFailNR-r15 ::= SEQUENCE
-struct meas_result_freq_fail_nr_r15_s {
- bool ext = false;
- bool meas_result_cell_list_r15_present = false;
- uint32_t carrier_freq_r15 = 0;
- meas_result_cell_list_nr_r15_l meas_result_cell_list_r15;
+// MBMSInterestIndication-v1610-IEs ::= SEQUENCE
+struct mbms_interest_ind_v1610_ies_s {
+ using mbms_rom_info_list_r16_l_ = dyn_array<mbms_rom_info_r16_s>;
+
+ // member variables
+ bool mbms_rom_info_list_r16_present = false;
+ bool non_crit_ext_present = false;
+ mbms_rom_info_list_r16_l_ mbms_rom_info_list_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ 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
@@ -1040,6 +1406,18 @@ struct rrc_conn_reest_complete_v1020_ies_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionResumeComplete-v1710-IEs ::= SEQUENCE
+struct rrc_conn_resume_complete_v1710_ies_s {
+ bool gnss_validity_dur_r17_present = false;
+ bool non_crit_ext_present = false;
+ gnss_validity_dur_r17_e gnss_validity_dur_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// RRCConnectionSetupComplete-v1130-IEs ::= SEQUENCE
struct rrc_conn_setup_complete_v1130_ies_s {
bool conn_est_fail_info_available_r11_present = false;
@@ -1227,9 +1605,10 @@ struct ueassist_info_v1530_ies_s {
};
// member variables
- bool sps_assist_info_v1530_present = false;
- bool non_crit_ext_present = false;
- sps_assist_info_v1530_s_ sps_assist_info_v1530;
+ bool sps_assist_info_v1530_present = false;
+ bool non_crit_ext_present = false;
+ sps_assist_info_v1530_s_ sps_assist_info_v1530;
+ ueassist_info_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1305,6 +1684,19 @@ struct bw_pref_r14_s {
void to_json(json_writer& j) const;
};
+// CellGlobalIdNR-r16 ::= SEQUENCE
+struct cell_global_id_nr_r16_s {
+ bool tac_r16_present = false;
+ plmn_id_s plmn_id_r16;
+ fixed_bitstring<36> cell_id_r16;
+ fixed_bitstring<24> tac_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// CounterCheckResponse-v1530-IEs ::= SEQUENCE
struct counter_check_resp_v1530_ies_s {
bool drb_count_info_list_ext_r15_present = false;
@@ -1461,9 +1853,10 @@ struct mbms_interest_ind_v1540_ies_s {
using mbms_rom_info_list_r15_l_ = dyn_array<mbms_rom_info_r15_s>;
// member variables
- bool mbms_rom_info_list_r15_present = false;
- bool non_crit_ext_present = false;
- mbms_rom_info_list_r15_l_ mbms_rom_info_list_r15;
+ bool mbms_rom_info_list_r15_present = false;
+ bool non_crit_ext_present = false;
+ mbms_rom_info_list_r15_l_ mbms_rom_info_list_r15;
+ mbms_interest_ind_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1474,6 +1867,9 @@ struct mbms_interest_ind_v1540_ies_s {
// MeasResultFreqListFailNR-r15 ::= SEQUENCE (SIZE (1..5)) OF MeasResultFreqFailNR-r15
using meas_result_freq_list_fail_nr_r15_l = dyn_array<meas_result_freq_fail_nr_r15_s>;
+// MeasResultList3EUTRA-r15 ::= SEQUENCE (SIZE (1..8)) OF MeasResult3EUTRA-r15
+using meas_result_list3_eutra_r15_l = dyn_array<meas_result3_eutra_r15_s>;
+
// RRCConnectionReconfigurationComplete-v1020-IEs ::= SEQUENCE
struct rrc_conn_recfg_complete_v1020_ies_s {
bool rlf_info_available_r10_present = false;
@@ -1500,6 +1896,25 @@ struct rrc_conn_reest_complete_v8a0_ies_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionResumeComplete-v1610-IEs ::= SEQUENCE
+struct rrc_conn_resume_complete_v1610_ies_s {
+ bool meas_result_list_idle_r16_present = false;
+ bool meas_result_list_ext_idle_r16_present = false;
+ bool meas_result_list_idle_nr_r16_present = false;
+ bool scg_cfg_resp_nr_r16_present = false;
+ bool non_crit_ext_present = false;
+ meas_result_list_idle_r15_l meas_result_list_idle_r16;
+ meas_result_list_ext_idle_r16_l meas_result_list_ext_idle_r16;
+ meas_result_list_idle_nr_r16_l meas_result_list_idle_nr_r16;
+ dyn_octstring scg_cfg_resp_nr_r16;
+ rrc_conn_resume_complete_v1710_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;
+};
+
// RRCConnectionSetupComplete-v1020-IEs ::= SEQUENCE
struct rrc_conn_setup_complete_v1020_ies_s {
struct gummei_type_r10_opts {
@@ -1944,6 +2359,71 @@ using count_resp_list_r10_l = dyn_array<count_resp_info_r10_s>;
// DRB-CountInfoList ::= SEQUENCE (SIZE (0..11)) OF DRB-CountInfo
using drb_count_info_list_l = dyn_array<drb_count_info_s>;
+// FailedLogicalChannelIdentity-r16 ::= SEQUENCE
+struct failed_lc_ch_id_r16_s {
+ struct cell_group_ind_r16_opts {
+ enum options { mn, sn, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<cell_group_ind_r16_opts> cell_group_ind_r16_e_;
+
+ // member variables
+ bool lc_ch_id_r16_present = false;
+ bool lc_ch_id_ext_r16_present = false;
+ cell_group_ind_r16_e_ cell_group_ind_r16;
+ uint8_t lc_ch_id_r16 = 1;
+ uint8_t lc_ch_id_ext_r16 = 32;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// FailureReportMCG-r16 ::= SEQUENCE
+struct fail_report_mcg_r16_s {
+ struct fail_type_r16_opts {
+ enum options {
+ t310_expiry,
+ random_access_problem,
+ rlc_max_num_retx,
+ t312_expiry,
+ spare4,
+ spare3,
+ spare2,
+ spare1,
+ nulltype
+ } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<fail_type_r16_opts> fail_type_r16_e_;
+
+ // member variables
+ bool ext = false;
+ bool fail_type_r16_present = false;
+ bool meas_result_freq_list_eutra_r16_present = false;
+ bool meas_result_freq_list_nr_r16_present = false;
+ bool meas_result_freq_list_geran_r16_present = false;
+ bool meas_result_freq_list_utra_r16_present = false;
+ bool meas_result_scg_r16_present = false;
+ fail_type_r16_e_ fail_type_r16;
+ meas_result_list3_eutra_r15_l meas_result_freq_list_eutra_r16;
+ meas_result_freq_list_fail_nr_r15_l meas_result_freq_list_nr_r16;
+ meas_result_list2_geran_r10_l meas_result_freq_list_geran_r16;
+ meas_result_list2_utra_r9_l meas_result_freq_list_utra_r16;
+ dyn_octstring meas_result_scg_r16;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// FailureReportSCG-NR-r15 ::= SEQUENCE
struct fail_report_scg_nr_r15_s {
struct fail_type_r15_opts {
@@ -1954,6 +2434,7 @@ struct fail_report_scg_nr_r15_s {
synch_recfg_fail_scg,
scg_recfg_fail,
srb3_integrity_fail,
+ dummy,
nulltype
} value;
typedef uint16_t number_type;
@@ -1962,6 +2443,24 @@ struct fail_report_scg_nr_r15_s {
uint16_t to_number() const;
};
typedef enumerated<fail_type_r15_opts> fail_type_r15_e_;
+ struct fail_type_v1610_opts {
+ enum options {
+ t312_expiry,
+ scg_lbt_fail,
+ beam_fail_recovery_fail,
+ bh_rlf_r16,
+ beam_fail_r17,
+ spare3,
+ spare2,
+ spare1,
+ nulltype
+ } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<fail_type_v1610_opts> fail_type_v1610_e_;
// member variables
bool ext = false;
@@ -1971,6 +2470,12 @@ struct fail_report_scg_nr_r15_s {
meas_result_freq_list_fail_nr_r15_l meas_result_freq_list_nr_r15;
dyn_octstring meas_result_scg_r15;
// ...
+ // group 0
+ bool fail_type_v1610_present = false;
+ 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;
+ fail_type_v1610_e_ fail_type_v1610;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2065,6 +2570,17 @@ struct proximity_ind_v930_ies_s {
void to_json(json_writer& j) const;
};
+// RACH-Report-r16 ::= SEQUENCE
+struct rach_report_r16_s {
+ uint8_t nof_preambs_sent_r16 = 1;
+ bool contention_detected_r16 = false;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// RLF-Report-r9 ::= SEQUENCE
struct rlf_report_r9_s {
struct meas_result_last_serv_cell_r9_s_ {
@@ -2271,6 +2787,116 @@ struct rlf_report_r9_s {
struct failed_pcell_id_v1250_s_ {
fixed_bitstring<16> tac_failed_pcell_r12;
};
+ struct failed_nr_pcell_id_r16_c_ {
+ struct pci_arfcn_s_ {
+ uint16_t pci_r16 = 0;
+ uint32_t carrier_freq_r16 = 0;
+ };
+ struct types_opts {
+ enum options { cell_global_id, pci_arfcn, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ failed_nr_pcell_id_r16_c_() = default;
+ failed_nr_pcell_id_r16_c_(const failed_nr_pcell_id_r16_c_& other);
+ failed_nr_pcell_id_r16_c_& operator=(const failed_nr_pcell_id_r16_c_& other);
+ ~failed_nr_pcell_id_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
+ cell_global_id_nr_r16_s& cell_global_id()
+ {
+ assert_choice_type(types::cell_global_id, type_, "failedNR-PCellId-r16");
+ return c.get<cell_global_id_nr_r16_s>();
+ }
+ pci_arfcn_s_& pci_arfcn()
+ {
+ assert_choice_type(types::pci_arfcn, type_, "failedNR-PCellId-r16");
+ return c.get<pci_arfcn_s_>();
+ }
+ const cell_global_id_nr_r16_s& cell_global_id() const
+ {
+ assert_choice_type(types::cell_global_id, type_, "failedNR-PCellId-r16");
+ return c.get<cell_global_id_nr_r16_s>();
+ }
+ const pci_arfcn_s_& pci_arfcn() const
+ {
+ assert_choice_type(types::pci_arfcn, type_, "failedNR-PCellId-r16");
+ return c.get<pci_arfcn_s_>();
+ }
+ cell_global_id_nr_r16_s& set_cell_global_id();
+ pci_arfcn_s_& set_pci_arfcn();
+
+ private:
+ types type_;
+ choice_buffer_t<cell_global_id_nr_r16_s, pci_arfcn_s_> c;
+
+ void destroy_();
+ };
+ struct reconnect_cell_id_r16_c_ {
+ struct eutra_reconnect_cell_id_s_ {
+ bool tac_epc_r16_present = false;
+ bool tac_minus5_gc_r16_present = false;
+ cell_global_id_eutra_s cell_global_id_r16;
+ fixed_bitstring<16> tac_epc_r16;
+ fixed_bitstring<24> tac_minus5_gc_r16;
+ };
+ struct types_opts {
+ enum options { nr_reconnect_cell_id, eutra_reconnect_cell_id, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ reconnect_cell_id_r16_c_() = default;
+ reconnect_cell_id_r16_c_(const reconnect_cell_id_r16_c_& other);
+ reconnect_cell_id_r16_c_& operator=(const reconnect_cell_id_r16_c_& other);
+ ~reconnect_cell_id_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
+ cell_global_id_nr_r16_s& nr_reconnect_cell_id()
+ {
+ assert_choice_type(types::nr_reconnect_cell_id, type_, "reconnectCellId-r16");
+ return c.get<cell_global_id_nr_r16_s>();
+ }
+ eutra_reconnect_cell_id_s_& eutra_reconnect_cell_id()
+ {
+ assert_choice_type(types::eutra_reconnect_cell_id, type_, "reconnectCellId-r16");
+ return c.get<eutra_reconnect_cell_id_s_>();
+ }
+ const cell_global_id_nr_r16_s& nr_reconnect_cell_id() const
+ {
+ assert_choice_type(types::nr_reconnect_cell_id, type_, "reconnectCellId-r16");
+ return c.get<cell_global_id_nr_r16_s>();
+ }
+ const eutra_reconnect_cell_id_s_& eutra_reconnect_cell_id() const
+ {
+ assert_choice_type(types::eutra_reconnect_cell_id, type_, "reconnectCellId-r16");
+ return c.get<eutra_reconnect_cell_id_s_>();
+ }
+ cell_global_id_nr_r16_s& set_nr_reconnect_cell_id();
+ eutra_reconnect_cell_id_s_& set_eutra_reconnect_cell_id();
+
+ private:
+ types type_;
+ choice_buffer_t<cell_global_id_nr_r16_s, eutra_reconnect_cell_id_s_> c;
+
+ void destroy_();
+ };
+ struct meas_result_list_nr_v1640_s_ {
+ uint32_t carrier_freq_nr_r16 = 0;
+ };
// member variables
bool ext = false;
@@ -2307,6 +2933,16 @@ struct rlf_report_r9_s {
// group 6
copy_ptr<log_meas_result_list_bt_r15_l> log_meas_result_list_bt_r15;
copy_ptr<log_meas_result_list_wlan_r15_l> log_meas_result_list_wlan_r15;
+ // group 7
+ bool time_until_reconn_r16_present = false;
+ copy_ptr<meas_result_cell_list_nr_r15_l> meas_result_list_nr_r16;
+ copy_ptr<cell_global_id_nr_r16_s> prev_nr_pcell_id_r16;
+ copy_ptr<failed_nr_pcell_id_r16_c_> failed_nr_pcell_id_r16;
+ copy_ptr<reconnect_cell_id_r16_c_> reconnect_cell_id_r16;
+ uint32_t time_until_reconn_r16 = 0;
+ // group 8
+ copy_ptr<meas_result_list_nr_v1640_s_> meas_result_list_nr_v1640;
+ copy_ptr<meas_result_freq_list_nr_r16_l> meas_result_list_ext_nr_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2341,11 +2977,12 @@ struct rrc_conn_reest_complete_v920_ies_s {
// RRCConnectionResumeComplete-v1530-IEs ::= SEQUENCE
struct rrc_conn_resume_complete_v1530_ies_s {
- bool log_meas_available_bt_r15_present = false;
- bool log_meas_available_wlan_r15_present = false;
- bool idle_meas_available_r15_present = false;
- bool flight_path_info_available_r15_present = false;
- bool non_crit_ext_present = false;
+ bool log_meas_available_bt_r15_present = false;
+ bool log_meas_available_wlan_r15_present = false;
+ bool idle_meas_available_r15_present = false;
+ bool flight_path_info_available_r15_present = false;
+ bool non_crit_ext_present = false;
+ rrc_conn_resume_complete_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2689,6 +3326,28 @@ struct failed_lc_ch_info_r15_s {
void to_json(json_writer& j) const;
};
+// FailureInformation-r16-IEs ::= SEQUENCE
+struct fail_info_r16_ies_s {
+ struct fail_type_r16_opts {
+ enum options { dupl, daps_ho_fail, spare2, spare1, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<fail_type_r16_opts> fail_type_r16_e_;
+
+ // member variables
+ bool failed_lc_ch_id_r16_present = false;
+ bool fail_type_r16_present = false;
+ bool non_crit_ext_present = false;
+ failed_lc_ch_id_r16_s failed_lc_ch_id_r16;
+ fail_type_r16_e_ fail_type_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// InDeviceCoexIndication-r11-IEs ::= SEQUENCE
struct in_dev_coex_ind_r11_ies_s {
bool affected_carrier_freq_list_r11_present = false;
@@ -2789,6 +3448,20 @@ struct mbms_interest_ind_r11_ies_s {
void to_json(json_writer& j) const;
};
+// MCGFailureInformation-r16-IEs ::= SEQUENCE
+struct mcg_fail_info_r16_ies_s {
+ bool fail_report_mcg_r16_present = false;
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ fail_report_mcg_r16_s fail_report_mcg_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;
+};
+
// MeasReportAppLayer-r15-IEs ::= SEQUENCE
struct meas_report_app_layer_r15_ies_s {
struct service_type_r15_opts {
@@ -2812,6 +3485,146 @@ struct meas_report_app_layer_r15_ies_s {
void to_json(json_writer& j) const;
};
+// PURConfigurationRequest-r16-IEs ::= SEQUENCE
+struct pur_cfg_request_r16_ies_s {
+ struct pur_cfg_request_r16_c_ {
+ struct pur_setup_request_s_ {
+ struct requested_num_occasions_r16_opts {
+ enum options { one, infinite, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<requested_num_occasions_r16_opts> requested_num_occasions_r16_e_;
+ struct requested_tbs_r16_opts {
+ enum options {
+ b328,
+ b344,
+ b376,
+ b392,
+ b408,
+ b424,
+ b440,
+ b456,
+ b472,
+ b488,
+ b504,
+ b536,
+ b568,
+ b584,
+ b616,
+ b648,
+ b680,
+ b712,
+ b744,
+ b776,
+ b808,
+ b840,
+ b872,
+ b904,
+ b936,
+ b968,
+ b1000,
+ b1032,
+ b1064,
+ b1096,
+ b1128,
+ b1160,
+ b1192,
+ b1224,
+ b1256,
+ b1288,
+ b1320,
+ b1352,
+ b1384,
+ b1416,
+ b1480,
+ b1544,
+ b1608,
+ b1672,
+ b1736,
+ b1800,
+ b1864,
+ b1928,
+ b1992,
+ b2024,
+ b2088,
+ b2152,
+ b2216,
+ b2280,
+ b2344,
+ b2408,
+ b2472,
+ b2536,
+ b2600,
+ b2664,
+ b2728,
+ b2792,
+ b2856,
+ b2984,
+ nulltype
+ } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<requested_tbs_r16_opts> requested_tbs_r16_e_;
+
+ // member variables
+ bool requested_periodicity_and_offset_r16_present = false;
+ bool rrc_ack_r16_present = false;
+ requested_num_occasions_r16_e_ requested_num_occasions_r16;
+ pur_periodicity_and_offset_r16_c requested_periodicity_and_offset_r16;
+ requested_tbs_r16_e_ requested_tbs_r16;
+ };
+ struct types_opts {
+ enum options { pur_release_request, pur_setup_request, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ pur_cfg_request_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
+ pur_setup_request_s_& pur_setup_request()
+ {
+ assert_choice_type(types::pur_setup_request, type_, "pur-ConfigRequest-r16");
+ return c;
+ }
+ const pur_setup_request_s_& pur_setup_request() const
+ {
+ assert_choice_type(types::pur_setup_request, type_, "pur-ConfigRequest-r16");
+ return c;
+ }
+ void set_pur_release_request();
+ pur_setup_request_s_& set_pur_setup_request();
+
+ private:
+ types type_;
+ pur_setup_request_s_ c;
+ };
+
+ // member variables
+ bool pur_cfg_request_r16_present = false;
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ pur_cfg_request_r16_c_ pur_cfg_request_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;
+};
+
// ProximityIndication-r9-IEs ::= SEQUENCE
struct proximity_ind_r9_ies_s {
struct type_r9_opts {
@@ -3046,16 +3859,10 @@ struct ueassist_info_r11_ies_s {
// UEInformationResponse-r9-IEs ::= SEQUENCE
struct ue_info_resp_r9_ies_s {
- struct rach_report_r9_s_ {
- uint8_t nof_preambs_sent_r9 = 1;
- bool contention_detected_r9 = false;
- };
-
- // member variables
bool rach_report_r9_present = false;
bool rlf_report_r9_present = false;
bool non_crit_ext_present = false;
- rach_report_r9_s_ rach_report_r9;
+ rach_report_r16_s rach_report_r9;
rlf_report_r9_s rlf_report_r9;
ue_info_resp_v930_ies_s non_crit_ext;
@@ -3065,6 +3872,29 @@ struct ue_info_resp_r9_ies_s {
void to_json(json_writer& j) const;
};
+// ULDedicatedMessageSegment-r16-IEs ::= SEQUENCE
+struct ul_ded_msg_segment_r16_ies_s {
+ struct rrc_msg_segment_type_r16_opts {
+ enum options { not_last_segment, last_segment, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<rrc_msg_segment_type_r16_opts> rrc_msg_segment_type_r16_e_;
+
+ // member variables
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ uint8_t segment_num_r16 = 0;
+ dyn_octstring rrc_msg_segment_container_r16;
+ rrc_msg_segment_type_r16_e_ rrc_msg_segment_type_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;
+};
+
// ULHandoverPreparationTransfer-r8-IEs ::= SEQUENCE
struct ul_ho_prep_transfer_r8_ies_s {
bool meid_present = false;
@@ -3080,6 +3910,82 @@ struct ul_ho_prep_transfer_r8_ies_s {
void to_json(json_writer& j) const;
};
+// ULInformationTransfer-r16-IEs ::= SEQUENCE
+struct ul_info_transfer_r16_ies_s {
+ struct ded_info_type_r16_c_ {
+ struct types_opts {
+ enum options { ded_info_nas_r16, ded_info_cdma2000_minus1_xrtt_r16, ded_info_cdma2000_hrpd_r16, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ ded_info_type_r16_c_() = default;
+ ded_info_type_r16_c_(const ded_info_type_r16_c_& other);
+ ded_info_type_r16_c_& operator=(const ded_info_type_r16_c_& other);
+ ~ded_info_type_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
+ dyn_octstring& ded_info_nas_r16()
+ {
+ assert_choice_type(types::ded_info_nas_r16, type_, "dedicatedInfoType-r16");
+ return c.get<dyn_octstring>();
+ }
+ dyn_octstring& ded_info_cdma2000_minus1_xrtt_r16()
+ {
+ assert_choice_type(types::ded_info_cdma2000_minus1_xrtt_r16, type_, "dedicatedInfoType-r16");
+ return c.get<dyn_octstring>();
+ }
+ dyn_octstring& ded_info_cdma2000_hrpd_r16()
+ {
+ assert_choice_type(types::ded_info_cdma2000_hrpd_r16, type_, "dedicatedInfoType-r16");
+ return c.get<dyn_octstring>();
+ }
+ const dyn_octstring& ded_info_nas_r16() const
+ {
+ assert_choice_type(types::ded_info_nas_r16, type_, "dedicatedInfoType-r16");
+ return c.get<dyn_octstring>();
+ }
+ const dyn_octstring& ded_info_cdma2000_minus1_xrtt_r16() const
+ {
+ assert_choice_type(types::ded_info_cdma2000_minus1_xrtt_r16, type_, "dedicatedInfoType-r16");
+ return c.get<dyn_octstring>();
+ }
+ const dyn_octstring& ded_info_cdma2000_hrpd_r16() const
+ {
+ assert_choice_type(types::ded_info_cdma2000_hrpd_r16, type_, "dedicatedInfoType-r16");
+ return c.get<dyn_octstring>();
+ }
+ dyn_octstring& set_ded_info_nas_r16();
+ dyn_octstring& set_ded_info_cdma2000_minus1_xrtt_r16();
+ dyn_octstring& set_ded_info_cdma2000_hrpd_r16();
+
+ private:
+ types type_;
+ choice_buffer_t<dyn_octstring> c;
+
+ void destroy_();
+ };
+
+ // member variables
+ bool ded_info_type_r16_present = false;
+ bool ded_info_f1c_r16_present = false;
+ bool non_crit_ext_present = false;
+ ded_info_type_r16_c_ ded_info_type_r16;
+ dyn_octstring ded_info_f1c_r16;
+ ul_info_transfer_v8a0_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;
+};
+
// ULInformationTransfer-r8-IEs ::= SEQUENCE
struct ul_info_transfer_r8_ies_s {
struct ded_info_type_c_ {
@@ -3153,6 +4059,20 @@ struct ul_info_transfer_r8_ies_s {
void to_json(json_writer& j) const;
};
+// ULInformationTransferIRAT-r16-IEs ::= SEQUENCE
+struct ul_info_transfer_irat_r16_ies_s {
+ bool ul_dcch_msg_nr_r16_present = false;
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring ul_dcch_msg_nr_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;
+};
+
// ULInformationTransferMRDC-r15-IEs ::= SEQUENCE
struct ul_info_transfer_mrdc_r15_ies_s {
bool ul_dcch_msg_nr_r15_present = false;
@@ -3285,6 +4205,51 @@ struct fail_info_r15_s {
void to_json(json_writer& j) const;
};
+// FailureInformation-r16 ::= SEQUENCE
+struct fail_info_r16_s {
+ struct crit_exts_c_ {
+ struct types_opts {
+ enum options { fail_info_r16, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ crit_exts_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
+ fail_info_r16_ies_s& fail_info_r16()
+ {
+ assert_choice_type(types::fail_info_r16, type_, "criticalExtensions");
+ return c;
+ }
+ const fail_info_r16_ies_s& fail_info_r16() const
+ {
+ assert_choice_type(types::fail_info_r16, type_, "criticalExtensions");
+ return c;
+ }
+ fail_info_r16_ies_s& set_fail_info_r16();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ fail_info_r16_ies_s c;
+ };
+
+ // member variables
+ crit_exts_c_ crit_exts;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// InDeviceCoexIndication-r11 ::= SEQUENCE
struct in_dev_coex_ind_r11_s {
struct crit_exts_c_ {
@@ -3585,6 +4550,51 @@ struct mbms_interest_ind_r11_s {
void to_json(json_writer& j) const;
};
+// MCGFailureInformation-r16 ::= SEQUENCE
+struct mcg_fail_info_r16_s {
+ struct crit_exts_c_ {
+ struct types_opts {
+ enum options { mcg_fail_info, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ crit_exts_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
+ mcg_fail_info_r16_ies_s& mcg_fail_info()
+ {
+ assert_choice_type(types::mcg_fail_info, type_, "criticalExtensions");
+ return c;
+ }
+ const mcg_fail_info_r16_ies_s& mcg_fail_info() const
+ {
+ assert_choice_type(types::mcg_fail_info, type_, "criticalExtensions");
+ return c;
+ }
+ mcg_fail_info_r16_ies_s& set_mcg_fail_info();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ mcg_fail_info_r16_ies_s c;
+ };
+
+ // member variables
+ crit_exts_c_ crit_exts;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// MeasReportAppLayer-r15 ::= SEQUENCE
struct meas_report_app_layer_r15_s {
struct crit_exts_c_ {
@@ -3630,6 +4640,51 @@ struct meas_report_app_layer_r15_s {
void to_json(json_writer& j) const;
};
+// PURConfigurationRequest-r16 ::= SEQUENCE
+struct pur_cfg_request_r16_s {
+ struct crit_exts_c_ {
+ struct types_opts {
+ enum options { pur_cfg_request, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ crit_exts_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
+ pur_cfg_request_r16_ies_s& pur_cfg_request()
+ {
+ assert_choice_type(types::pur_cfg_request, type_, "criticalExtensions");
+ return c;
+ }
+ const pur_cfg_request_r16_ies_s& pur_cfg_request() const
+ {
+ assert_choice_type(types::pur_cfg_request, type_, "criticalExtensions");
+ return c;
+ }
+ pur_cfg_request_r16_ies_s& set_pur_cfg_request();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ pur_cfg_request_r16_ies_s c;
+ };
+
+ // member variables
+ crit_exts_c_ crit_exts;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// ProximityIndication-r9 ::= SEQUENCE
struct proximity_ind_r9_s {
struct crit_exts_c_ {
@@ -4371,6 +5426,51 @@ struct ue_info_resp_r9_s {
void to_json(json_writer& j) const;
};
+// ULDedicatedMessageSegment-r16 ::= SEQUENCE
+struct ul_ded_msg_segment_r16_s {
+ struct crit_exts_c_ {
+ struct types_opts {
+ enum options { ul_ded_msg_segment_r16, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ crit_exts_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
+ ul_ded_msg_segment_r16_ies_s& ul_ded_msg_segment_r16()
+ {
+ assert_choice_type(types::ul_ded_msg_segment_r16, type_, "criticalExtensions");
+ return c;
+ }
+ const ul_ded_msg_segment_r16_ies_s& ul_ded_msg_segment_r16() const
+ {
+ assert_choice_type(types::ul_ded_msg_segment_r16, type_, "criticalExtensions");
+ return c;
+ }
+ ul_ded_msg_segment_r16_ies_s& set_ul_ded_msg_segment_r16();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ ul_ded_msg_segment_r16_ies_s c;
+ };
+
+ // member variables
+ crit_exts_c_ crit_exts;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// ULHandoverPreparationTransfer ::= SEQUENCE
struct ul_ho_prep_transfer_s {
struct crit_exts_c_ {
@@ -4451,7 +5551,7 @@ struct ul_info_transfer_s {
struct crit_exts_c_ {
struct c1_c_ {
struct types_opts {
- enum options { ul_info_transfer_r8, spare3, spare2, spare1, nulltype } value;
+ enum options { ul_info_transfer_r8, ul_info_transfer_r16, spare2, spare1, nulltype } value;
const char* to_string() const;
};
@@ -4459,6 +5559,9 @@ struct ul_info_transfer_s {
// choice methods
c1_c_() = default;
+ c1_c_(const c1_c_& other);
+ c1_c_& operator=(const c1_c_& other);
+ ~c1_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
@@ -4468,21 +5571,108 @@ struct ul_info_transfer_s {
ul_info_transfer_r8_ies_s& ul_info_transfer_r8()
{
assert_choice_type(types::ul_info_transfer_r8, type_, "c1");
- return c;
+ return c.get<ul_info_transfer_r8_ies_s>();
+ }
+ ul_info_transfer_r16_ies_s& ul_info_transfer_r16()
+ {
+ assert_choice_type(types::ul_info_transfer_r16, type_, "c1");
+ return c.get<ul_info_transfer_r16_ies_s>();
}
const ul_info_transfer_r8_ies_s& ul_info_transfer_r8() const
{
assert_choice_type(types::ul_info_transfer_r8, type_, "c1");
+ return c.get<ul_info_transfer_r8_ies_s>();
+ }
+ const ul_info_transfer_r16_ies_s& ul_info_transfer_r16() const
+ {
+ assert_choice_type(types::ul_info_transfer_r16, type_, "c1");
+ return c.get<ul_info_transfer_r16_ies_s>();
+ }
+ ul_info_transfer_r8_ies_s& set_ul_info_transfer_r8();
+ ul_info_transfer_r16_ies_s& set_ul_info_transfer_r16();
+ void set_spare2();
+ void set_spare1();
+
+ private:
+ types type_;
+ choice_buffer_t<ul_info_transfer_r16_ies_s, ul_info_transfer_r8_ies_s> c;
+
+ void destroy_();
+ };
+ using types = c1_or_crit_ext_e;
+
+ // choice methods
+ crit_exts_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
+ c1_c_& c1()
+ {
+ assert_choice_type(types::c1, type_, "criticalExtensions");
+ return c;
+ }
+ const c1_c_& c1() const
+ {
+ assert_choice_type(types::c1, type_, "criticalExtensions");
+ return c;
+ }
+ c1_c_& set_c1();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ c1_c_ c;
+ };
+
+ // member variables
+ crit_exts_c_ crit_exts;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// ULInformationTransferIRAT-r16 ::= SEQUENCE
+struct ul_info_transfer_irat_r16_s {
+ struct crit_exts_c_ {
+ struct c1_c_ {
+ struct types_opts {
+ enum options { ul_info_transfer_irat_r16, spare3, spare2, spare1, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ c1_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
+ ul_info_transfer_irat_r16_ies_s& ul_info_transfer_irat_r16()
+ {
+ assert_choice_type(types::ul_info_transfer_irat_r16, type_, "c1");
return c;
}
- ul_info_transfer_r8_ies_s& set_ul_info_transfer_r8();
- void set_spare3();
- void set_spare2();
- void set_spare1();
+ const ul_info_transfer_irat_r16_ies_s& ul_info_transfer_irat_r16() const
+ {
+ assert_choice_type(types::ul_info_transfer_irat_r16, type_, "c1");
+ return c;
+ }
+ ul_info_transfer_irat_r16_ies_s& set_ul_info_transfer_irat_r16();
+ void set_spare3();
+ void set_spare2();
+ void set_spare1();
private:
- types type_;
- ul_info_transfer_r8_ies_s c;
+ types type_;
+ ul_info_transfer_irat_r16_ies_s c;
};
using types = c1_or_crit_ext_e;
@@ -4926,11 +6116,11 @@ struct ul_dcch_msg_type_c {
scg_fail_info_nr_r15,
meas_report_app_layer_r15,
fail_info_r15,
- spare5,
- spare4,
- spare3,
- spare2,
- spare1,
+ ul_ded_msg_segment_r16,
+ pur_cfg_request_r16,
+ fail_info_r16,
+ mcg_fail_info_r16,
+ ul_info_transfer_irat_r16,
nulltype
} value;
@@ -5004,6 +6194,31 @@ struct ul_dcch_msg_type_c {
assert_choice_type(types::fail_info_r15, type_, "c2");
return c.get<fail_info_r15_s>();
}
+ ul_ded_msg_segment_r16_s& ul_ded_msg_segment_r16()
+ {
+ assert_choice_type(types::ul_ded_msg_segment_r16, type_, "c2");
+ return c.get<ul_ded_msg_segment_r16_s>();
+ }
+ pur_cfg_request_r16_s& pur_cfg_request_r16()
+ {
+ assert_choice_type(types::pur_cfg_request_r16, type_, "c2");
+ return c.get<pur_cfg_request_r16_s>();
+ }
+ fail_info_r16_s& fail_info_r16()
+ {
+ assert_choice_type(types::fail_info_r16, type_, "c2");
+ return c.get<fail_info_r16_s>();
+ }
+ mcg_fail_info_r16_s& mcg_fail_info_r16()
+ {
+ assert_choice_type(types::mcg_fail_info_r16, type_, "c2");
+ return c.get<mcg_fail_info_r16_s>();
+ }
+ ul_info_transfer_irat_r16_s& ul_info_transfer_irat_r16()
+ {
+ assert_choice_type(types::ul_info_transfer_irat_r16, type_, "c2");
+ return c.get<ul_info_transfer_irat_r16_s>();
+ }
const ueassist_info_r11_s& ue_assist_info_r11() const
{
assert_choice_type(types::ue_assist_info_r11, type_, "c2");
@@ -5059,6 +6274,31 @@ struct ul_dcch_msg_type_c {
assert_choice_type(types::fail_info_r15, type_, "c2");
return c.get<fail_info_r15_s>();
}
+ const ul_ded_msg_segment_r16_s& ul_ded_msg_segment_r16() const
+ {
+ assert_choice_type(types::ul_ded_msg_segment_r16, type_, "c2");
+ return c.get<ul_ded_msg_segment_r16_s>();
+ }
+ const pur_cfg_request_r16_s& pur_cfg_request_r16() const
+ {
+ assert_choice_type(types::pur_cfg_request_r16, type_, "c2");
+ return c.get<pur_cfg_request_r16_s>();
+ }
+ const fail_info_r16_s& fail_info_r16() const
+ {
+ assert_choice_type(types::fail_info_r16, type_, "c2");
+ return c.get<fail_info_r16_s>();
+ }
+ const mcg_fail_info_r16_s& mcg_fail_info_r16() const
+ {
+ assert_choice_type(types::mcg_fail_info_r16, type_, "c2");
+ return c.get<mcg_fail_info_r16_s>();
+ }
+ const ul_info_transfer_irat_r16_s& ul_info_transfer_irat_r16() const
+ {
+ assert_choice_type(types::ul_info_transfer_irat_r16, type_, "c2");
+ return c.get<ul_info_transfer_irat_r16_s>();
+ }
ueassist_info_r11_s& set_ue_assist_info_r11();
in_dev_coex_ind_r11_s& set_in_dev_coex_ind_r11();
mbms_interest_ind_r11_s& set_mbms_interest_ind_r11();
@@ -5070,23 +6310,28 @@ struct ul_dcch_msg_type_c {
scg_fail_info_nr_r15_s& set_scg_fail_info_nr_r15();
meas_report_app_layer_r15_s& set_meas_report_app_layer_r15();
fail_info_r15_s& set_fail_info_r15();
- void set_spare5();
- void set_spare4();
- void set_spare3();
- void set_spare2();
- void set_spare1();
+ ul_ded_msg_segment_r16_s& set_ul_ded_msg_segment_r16();
+ pur_cfg_request_r16_s& set_pur_cfg_request_r16();
+ fail_info_r16_s& set_fail_info_r16();
+ mcg_fail_info_r16_s& set_mcg_fail_info_r16();
+ ul_info_transfer_irat_r16_s& set_ul_info_transfer_irat_r16();
private:
types type_;
choice_buffer_t<fail_info_r15_s,
+ fail_info_r16_s,
in_dev_coex_ind_r11_s,
mbms_interest_ind_r11_s,
+ mcg_fail_info_r16_s,
meas_report_app_layer_r15_s,
+ pur_cfg_request_r16_s,
rrc_conn_resume_complete_r13_s,
scg_fail_info_nr_r15_s,
scg_fail_info_r12_s,
sidelink_ue_info_r12_s,
ueassist_info_r11_s,
+ ul_ded_msg_segment_r16_s,
+ ul_info_transfer_irat_r16_s,
ul_info_transfer_mrdc_r15_s,
wlan_conn_status_report_r13_s>
c;
diff --git a/lib/include/srsran/asn1/rrc_nbiot.h b/lib/include/srsran/asn1/rrc_nbiot.h
index d87d0da41..9ea1d65e5 100644
--- a/lib/include/srsran/asn1/rrc_nbiot.h
+++ b/lib/include/srsran/asn1/rrc_nbiot.h
@@ -12,7 +12,7 @@
/*******************************************************************************
*
- * 3GPP TS ASN1 RRC v15.11.0 (2020-09)
+ * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
*
******************************************************************************/
@@ -60,33 +60,38 @@ struct ab_cfg_plmn_nb_r13_s {
void to_json(json_writer& j) const;
};
-// T-PollRetransmit-NB-r13 ::= ENUMERATED
-struct t_poll_retx_nb_r13_opts {
- enum options {
- ms250,
- ms500,
- ms1000,
- ms2000,
- ms3000,
- ms4000,
- ms6000,
- ms10000,
- ms15000,
- ms25000,
- ms40000,
- ms60000,
- ms90000,
- ms120000,
- ms180000,
- ms300000_v1530,
- nulltype
- } value;
- typedef uint32_t number_type;
+// ANR-ExcludedCellList-NB-r16 ::= SEQUENCE (SIZE (1..16)) OF INTEGER (0..503)
+using anr_excluded_cell_list_nb_r16_l = bounded_array<uint16_t, 16>;
- const char* to_string() const;
- uint32_t to_number() const;
+// ANR-Carrier-NB-r16 ::= SEQUENCE
+struct anr_carrier_nb_r16_s {
+ bool ext = false;
+ bool excluded_cell_list_r16_present = false;
+ uint8_t carrier_freq_idx_r16 = 1;
+ anr_excluded_cell_list_nb_r16_l excluded_cell_list_r16;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// ANR-CarrierList-NB-r16 ::= SEQUENCE (SIZE (1..2)) OF ANR-Carrier-NB-r16
+using anr_carrier_list_nb_r16_l = dyn_array<anr_carrier_nb_r16_s>;
+
+// ANR-MeasConfig-NB-r16 ::= SEQUENCE
+struct anr_meas_cfg_nb_r16_s {
+ bool ext = false;
+ uint8_t anr_quality_thres_r16 = 0;
+ anr_carrier_list_nb_r16_l anr_carrier_list_r16;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
};
-typedef enumerated<t_poll_retx_nb_r13_opts> t_poll_retx_nb_r13_e;
// CarrierFreq-NB-r13 ::= SEQUENCE
struct carrier_freq_nb_r13_s {
@@ -134,6 +139,89 @@ struct carrier_freq_nb_r13_s {
void to_json(json_writer& j) const;
};
+// MeasResultServCell-NB-r14 ::= SEQUENCE
+struct meas_result_serv_cell_nb_r14_s {
+ uint8_t nrsrp_result_r14 = 0;
+ int8_t nrsrq_result_r14 = -30;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// ANR-MeasResult-NB-r16 ::= SEQUENCE
+struct anr_meas_result_nb_r16_s {
+ struct cgi_info_r16_s_ {
+ bool plmn_id_list_r16_present = false;
+ cell_global_id_eutra_s cell_global_id_r16;
+ fixed_bitstring<16> tac_r16;
+ plmn_id_list2_l plmn_id_list_r16;
+ };
+
+ // member variables
+ bool pci_r16_present = false;
+ bool meas_result_r16_present = false;
+ bool cgi_info_r16_present = false;
+ carrier_freq_nb_r13_s carrier_freq_r16;
+ uint16_t pci_r16 = 0;
+ meas_result_serv_cell_nb_r14_s meas_result_last_serv_cell_r16;
+ uint8_t meas_result_r16 = 0;
+ cgi_info_r16_s_ cgi_info_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// ANR-MeasReport-NB-r16 ::= SEQUENCE
+struct anr_meas_report_nb_r16_s {
+ using meas_result_list_r16_l_ = dyn_array<anr_meas_result_nb_r16_s>;
+
+ // member variables
+ bool ext = false;
+ bool serv_cell_id_r16_present = false;
+ cell_global_id_eutra_s serv_cell_id_r16;
+ meas_result_serv_cell_nb_r14_s meas_result_serv_cell_r16;
+ uint8_t relative_time_stamp_r16 = 0;
+ meas_result_list_r16_l_ meas_result_list_r16;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// T-PollRetransmit-NB-r13 ::= ENUMERATED
+struct t_poll_retx_nb_r13_opts {
+ enum options {
+ ms250,
+ ms500,
+ ms1000,
+ ms2000,
+ ms3000,
+ ms4000,
+ ms6000,
+ ms10000,
+ ms15000,
+ ms25000,
+ ms40000,
+ ms60000,
+ ms90000,
+ ms120000,
+ ms180000,
+ ms300000_v1530,
+ nulltype
+ } value;
+ typedef uint32_t number_type;
+
+ const char* to_string() const;
+ uint32_t to_number() const;
+};
+typedef enumerated<t_poll_retx_nb_r13_opts> t_poll_retx_nb_r13_e;
+
// CarrierFreq-NB-v1550 ::= SEQUENCE
struct carrier_freq_nb_v1550_s {
struct carrier_freq_offset_v1550_opts {
@@ -505,6 +593,58 @@ struct lc_ch_cfg_nb_r13_s {
void to_json(json_writer& j) const;
};
+// NPDSCH-16QAM-Config-NB-r17 ::= SEQUENCE
+struct npdsch_minus16_qam_cfg_nb_r17_s {
+ struct nrs_pwr_ratio_r17_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<nrs_pwr_ratio_r17_opts> nrs_pwr_ratio_r17_e_;
+ struct nrs_pwr_ratio_with_crs_r17_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<nrs_pwr_ratio_with_crs_r17_opts> nrs_pwr_ratio_with_crs_r17_e_;
+
+ // member variables
+ bool nrs_pwr_ratio_r17_present = false;
+ bool nrs_pwr_ratio_with_crs_r17_present = false;
+ nrs_pwr_ratio_r17_e_ nrs_pwr_ratio_r17;
+ nrs_pwr_ratio_with_crs_r17_e_ nrs_pwr_ratio_with_crs_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// NPDSCH-MultiTB-Config-NB-r16 ::= SEQUENCE
+struct npdsch_multi_tb_cfg_nb_r16_s {
+ struct multi_tb_cfg_r16_opts {
+ enum options { interleaved, non_interleaved, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<multi_tb_cfg_r16_opts> multi_tb_cfg_r16_e_;
+
+ // member variables
+ bool harq_ack_bundling_r16_present = false;
+ multi_tb_cfg_r16_e_ 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;
+};
+
// PDCP-Config-NB-r13 ::= SEQUENCE
struct pdcp_cfg_nb_r13_s {
struct discard_timer_r13_opts {
@@ -573,6 +713,8 @@ struct pdcp_cfg_nb_r13_s {
discard_timer_r13_e_ discard_timer_r13;
hdr_compress_r13_c_ hdr_compress_r13;
// ...
+ // group 0
+ bool ciphering_disabled_r16_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -632,6 +774,16 @@ struct rlc_cfg_nb_v1430_s {
void to_json(json_writer& j) const;
};
+// RLC-Config-NB-v1700 ::= SEQUENCE
+struct rlc_cfg_nb_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;
+};
+
// SR-NPRACH-Resource-NB-r15 ::= SEQUENCE
struct sr_nprach_res_nb_r15_s {
struct nprach_sub_carrier_idx_r15_c_ {
@@ -707,6 +859,16 @@ struct sr_nprach_res_nb_r15_s {
void to_json(json_writer& j) const;
};
+// SR-ProhibitTimerOffset-NB-r17 ::= ENUMERATED
+struct sr_prohibit_timer_offset_nb_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_nb_r17_opts> sr_prohibit_timer_offset_nb_r17_e;
+
// UL-CarrierConfigDedicated-NB-r13 ::= SEQUENCE
struct ul_carrier_cfg_ded_nb_r13_s {
bool ext = false;
@@ -751,6 +913,11 @@ struct drb_to_add_mod_nb_r13_s {
// ...
// group 0
copy_ptr<rlc_cfg_nb_v1430_s> rlc_cfg_v1430;
+ // group 1
+ bool pdu_session_r16_present = false;
+ uint16_t pdu_session_r16 = 0;
+ // group 2
+ copy_ptr<rlc_cfg_nb_v1700_s> rlc_cfg_v1700;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -971,6 +1138,27 @@ struct npdcch_cfg_ded_nb_v1530_s {
void to_json(json_writer& j) const;
};
+// NPDSCH-ConfigDedicated-NB-r16 ::= SEQUENCE
+struct npdsch_cfg_ded_nb_r16_s {
+ bool npdsch_multi_tb_cfg_r16_present = false;
+ npdsch_multi_tb_cfg_nb_r16_s npdsch_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;
+};
+
+// NPDSCH-ConfigDedicated-NB-v1710 ::= SEQUENCE
+struct npdsch_cfg_ded_nb_v1710_s {
+ setup_release_c<npdsch_minus16_qam_cfg_nb_r17_s> npdsch_minus16_qam_cfg_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// NPUSCH-ConfigDedicated-NB-r13 ::= SEQUENCE
struct npusch_cfg_ded_nb_r13_s {
bool ack_nack_num_repeats_r13_present = false;
@@ -985,6 +1173,83 @@ struct npusch_cfg_ded_nb_r13_s {
void to_json(json_writer& j) const;
};
+// NPUSCH-ConfigDedicated-NB-v1610 ::= SEQUENCE
+struct npusch_cfg_ded_nb_v1610_s {
+ struct npusch_multi_tb_cfg_r16_opts {
+ enum options { interleaved, non_interleaved, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<npusch_multi_tb_cfg_r16_opts> npusch_multi_tb_cfg_r16_e_;
+
+ // member variables
+ npusch_multi_tb_cfg_r16_e_ npusch_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;
+};
+
+// NPUSCH-ConfigDedicated-NB-v1700 ::= SEQUENCE
+struct npusch_cfg_ded_nb_v1700_s {
+ bool npusch_minus16_qam_cfg_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;
+};
+
+// NPUSCH-TxDuration-NB-r17 ::= SEQUENCE
+struct npusch_tx_dur_nb_r17_s {
+ struct npusch_tx_dur_r17_opts {
+ enum options { ms2, ms4, ms8, ms16, ms32, ms64, ms128, ms256, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<npusch_tx_dur_r17_opts> npusch_tx_dur_r17_e_;
+
+ // member variables
+ npusch_tx_dur_r17_e_ npusch_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;
+};
+
+// OffsetThresholdTA-NB-r17 ::= ENUMERATED
+struct offset_thres_ta_nb_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_nb_r17_opts> offset_thres_ta_nb_r17_e;
+
// PeriodicBSR-Timer-NB-r13 ::= ENUMERATED
struct periodic_bsr_timer_nb_r13_opts {
enum options { pp2, pp4, pp8, pp16, pp64, pp128, infinity, spare, nulltype } value;
@@ -995,6 +1260,244 @@ struct periodic_bsr_timer_nb_r13_opts {
};
typedef enumerated<periodic_bsr_timer_nb_r13_opts> periodic_bsr_timer_nb_r13_e;
+// ResourceReservationConfig-NB-r16 ::= SEQUENCE
+struct res_reserv_cfg_nb_r16_s {
+ struct periodicity_r16_opts {
+ enum options { ms10, ms20, ms40, ms80, ms160, spare3, spare2, spare1, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<periodicity_r16_opts> periodicity_r16_e_;
+ struct res_reserv_r16_c_ {
+ struct sf_bitmap_r16_c_ {
+ struct types_opts {
+ enum options { sf_pattern10ms, sf_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
+ sf_bitmap_r16_c_() = default;
+ sf_bitmap_r16_c_(const sf_bitmap_r16_c_& other);
+ sf_bitmap_r16_c_& operator=(const sf_bitmap_r16_c_& other);
+ ~sf_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<10>& sf_pattern10ms()
+ {
+ assert_choice_type(types::sf_pattern10ms, type_, "subframeBitmap-r16");
+ return c.get<fixed_bitstring<10> >();
+ }
+ fixed_bitstring<40>& sf_pattern40ms()
+ {
+ assert_choice_type(types::sf_pattern40ms, type_, "subframeBitmap-r16");
+ return c.get<fixed_bitstring<40> >();
+ }
+ const fixed_bitstring<10>& sf_pattern10ms() const
+ {
+ assert_choice_type(types::sf_pattern10ms, type_, "subframeBitmap-r16");
+ return c.get<fixed_bitstring<10> >();
+ }
+ const fixed_bitstring<40>& sf_pattern40ms() const
+ {
+ assert_choice_type(types::sf_pattern40ms, type_, "subframeBitmap-r16");
+ return c.get<fixed_bitstring<40> >();
+ }
+ fixed_bitstring<10>& set_sf_pattern10ms();
+ fixed_bitstring<40>& set_sf_pattern40ms();
+
+ private:
+ types type_;
+ choice_buffer_t<fixed_bitstring<40> > c;
+
+ void destroy_();
+ };
+ struct slot_cfg_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_();
+ };
+ struct symbol_bitmap_r16_c_ {
+ struct symbol_bitmap_fdd_dl_s_ {
+ bool symbol_bitmap1_r16_present = false;
+ bool symbol_bitmap2_r16_present = false;
+ fixed_bitstring<5> symbol_bitmap1_r16;
+ fixed_bitstring<5> symbol_bitmap2_r16;
+ };
+ struct symbol_bitmap_fdd_ul_or_tdd_s_ {
+ bool symbol_bitmap1_r16_present = false;
+ bool symbol_bitmap2_r16_present = false;
+ fixed_bitstring<7> symbol_bitmap1_r16;
+ fixed_bitstring<7> symbol_bitmap2_r16;
+ };
+ struct types_opts {
+ enum options { symbol_bitmap_fdd_dl, symbol_bitmap_fdd_ul_or_tdd, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ symbol_bitmap_r16_c_() = default;
+ symbol_bitmap_r16_c_(const symbol_bitmap_r16_c_& other);
+ symbol_bitmap_r16_c_& operator=(const symbol_bitmap_r16_c_& other);
+ ~symbol_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
+ symbol_bitmap_fdd_dl_s_& symbol_bitmap_fdd_dl()
+ {
+ assert_choice_type(types::symbol_bitmap_fdd_dl, type_, "symbolBitmap-r16");
+ return c.get<symbol_bitmap_fdd_dl_s_>();
+ }
+ symbol_bitmap_fdd_ul_or_tdd_s_& symbol_bitmap_fdd_ul_or_tdd()
+ {
+ assert_choice_type(types::symbol_bitmap_fdd_ul_or_tdd, type_, "symbolBitmap-r16");
+ return c.get<symbol_bitmap_fdd_ul_or_tdd_s_>();
+ }
+ const symbol_bitmap_fdd_dl_s_& symbol_bitmap_fdd_dl() const
+ {
+ assert_choice_type(types::symbol_bitmap_fdd_dl, type_, "symbolBitmap-r16");
+ return c.get<symbol_bitmap_fdd_dl_s_>();
+ }
+ const symbol_bitmap_fdd_ul_or_tdd_s_& symbol_bitmap_fdd_ul_or_tdd() const
+ {
+ assert_choice_type(types::symbol_bitmap_fdd_ul_or_tdd, type_, "symbolBitmap-r16");
+ return c.get<symbol_bitmap_fdd_ul_or_tdd_s_>();
+ }
+ symbol_bitmap_fdd_dl_s_& set_symbol_bitmap_fdd_dl();
+ symbol_bitmap_fdd_ul_or_tdd_s_& set_symbol_bitmap_fdd_ul_or_tdd();
+
+ private:
+ types type_;
+ choice_buffer_t<symbol_bitmap_fdd_dl_s_, symbol_bitmap_fdd_ul_or_tdd_s_> c;
+
+ void destroy_();
+ };
+
+ // member variables
+ slot_bitmap_r16_c_ slot_bitmap_r16;
+ symbol_bitmap_r16_c_ symbol_bitmap_r16;
+ };
+ struct types_opts {
+ enum options { sf_bitmap_r16, slot_cfg_r16, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ res_reserv_r16_c_() = default;
+ res_reserv_r16_c_(const res_reserv_r16_c_& other);
+ res_reserv_r16_c_& operator=(const res_reserv_r16_c_& other);
+ ~res_reserv_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
+ sf_bitmap_r16_c_& sf_bitmap_r16()
+ {
+ assert_choice_type(types::sf_bitmap_r16, type_, "resourceReservation-r16");
+ return c.get<sf_bitmap_r16_c_>();
+ }
+ slot_cfg_r16_s_& slot_cfg_r16()
+ {
+ assert_choice_type(types::slot_cfg_r16, type_, "resourceReservation-r16");
+ return c.get<slot_cfg_r16_s_>();
+ }
+ const sf_bitmap_r16_c_& sf_bitmap_r16() const
+ {
+ assert_choice_type(types::sf_bitmap_r16, type_, "resourceReservation-r16");
+ return c.get<sf_bitmap_r16_c_>();
+ }
+ const slot_cfg_r16_s_& slot_cfg_r16() const
+ {
+ assert_choice_type(types::slot_cfg_r16, type_, "resourceReservation-r16");
+ return c.get<slot_cfg_r16_s_>();
+ }
+ sf_bitmap_r16_c_& set_sf_bitmap_r16();
+ slot_cfg_r16_s_& set_slot_cfg_r16();
+
+ private:
+ types type_;
+ choice_buffer_t<sf_bitmap_r16_c_, slot_cfg_r16_s_> c;
+
+ void destroy_();
+ };
+
+ // member variables
+ bool ext = false;
+ periodicity_r16_e_ periodicity_r16;
+ uint8_t start_position_r16 = 0;
+ res_reserv_r16_c_ res_reserv_r16;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// RetxBSR-Timer-NB-r13 ::= ENUMERATED
struct retx_bsr_timer_nb_r13_opts {
enum options { pp4, pp16, pp64, pp128, pp256, pp512, infinity, spare, nulltype } value;
@@ -1085,6 +1588,17 @@ private:
setup_s_ c;
};
+// SR-WithoutHARQ-ACK-Config-NB-v1700 ::= SEQUENCE
+struct sr_without_harq_ack_cfg_nb_v1700_s {
+ bool sr_prohibit_timer_offset_r17_present = false;
+ setup_release_c<sr_prohibit_timer_offset_nb_r17_e> sr_prohibit_timer_offset_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// SRB-ToAddMod-NB-r13 ::= SEQUENCE
struct srb_to_add_mod_nb_r13_s {
struct rlc_cfg_r13_c_ {
@@ -1163,6 +1677,8 @@ struct srb_to_add_mod_nb_r13_s {
// ...
// group 0
copy_ptr<rlc_cfg_nb_v1430_s> rlc_cfg_v1430;
+ // group 1
+ copy_ptr<rlc_cfg_nb_v1700_s> rlc_cfg_v1700;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1180,6 +1696,26 @@ struct ul_pwr_ctrl_ded_nb_r13_s {
void to_json(json_writer& j) const;
};
+// UplinkPowerControlDedicated-NB-v1700 ::= SEQUENCE
+struct ul_pwr_ctrl_ded_nb_v1700_s {
+ struct delta_mcs_enabled_r17_opts {
+ enum options { en0, en1, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<delta_mcs_enabled_r17_opts> delta_mcs_enabled_r17_e_;
+
+ // member variables
+ delta_mcs_enabled_r17_e_ delta_mcs_enabled_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// DRB-ToAddModList-NB-r13 ::= SEQUENCE (SIZE (1..2)) OF DRB-ToAddMod-NB-r13
using drb_to_add_mod_list_nb_r13_l = dyn_array<drb_to_add_mod_nb_r13_s>;
@@ -1292,6 +1828,8 @@ struct mac_main_cfg_nb_r13_s {
drx_cycle_v1430_e_ drx_cycle_v1430;
// group 2
bool ra_cfra_cfg_r14_present = false;
+ // group 3
+ copy_ptr<setup_release_c<offset_thres_ta_nb_r17_e> > offset_thres_ta_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1301,6 +1839,17 @@ struct mac_main_cfg_nb_r13_s {
// PhysicalConfigDedicated-NB-r13 ::= SEQUENCE
struct phys_cfg_ded_nb_r13_s {
+ struct ntn_cfg_ded_r17_s_ {
+ setup_release_c<npusch_tx_dur_nb_r17_s> npusch_tx_dur_r17;
+ };
+ struct ul_segmented_precompensation_gap_r17_opts {
+ enum options { sym1, sl1, sl2, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<ul_segmented_precompensation_gap_r17_opts> ul_segmented_precompensation_gap_r17_e_;
+
+ // member variables
bool ext = false;
bool carrier_cfg_ded_r13_present = false;
bool npdcch_cfg_ded_r13_present = false;
@@ -1319,6 +1868,20 @@ struct phys_cfg_ded_nb_r13_s {
copy_ptr<npdcch_cfg_ded_nb_v1530_s> npdcch_cfg_ded_v1530;
// group 3
bool add_tx_sib1_cfg_v1540_present = false;
+ // group 4
+ copy_ptr<npusch_cfg_ded_nb_v1610_s> npusch_cfg_ded_v1610;
+ copy_ptr<npdsch_cfg_ded_nb_r16_s> npdsch_cfg_ded_r16;
+ copy_ptr<setup_release_c<res_reserv_cfg_nb_r16_s> > res_reserv_cfg_dl_r16;
+ copy_ptr<setup_release_c<res_reserv_cfg_nb_r16_s> > res_reserv_cfg_ul_r16;
+ // group 5
+ copy_ptr<ntn_cfg_ded_r17_s_> ntn_cfg_ded_r17;
+ copy_ptr<npdsch_cfg_ded_nb_v1710_s> npdsch_cfg_ded_v1700;
+ copy_ptr<ul_pwr_ctrl_ded_nb_v1700_s> ul_pwr_ctrl_ded_v1700;
+ // group 6
+ bool ul_segmented_precompensation_gap_r17_present = false;
+ ul_segmented_precompensation_gap_r17_e_ ul_segmented_precompensation_gap_r17;
+ // group 7
+ copy_ptr<npusch_cfg_ded_nb_v1700_s> npusch_cfg_ded_v1740;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1456,6 +2019,8 @@ struct sched_request_cfg_nb_r15_s {
sr_without_harq_ack_cfg_nb_r15_c sr_without_harq_ack_cfg_r15;
sr_sps_bsr_cfg_nb_r15_c sr_sps_bsr_cfg_r15;
// ...
+ // group 0
+ copy_ptr<sr_without_harq_ack_cfg_nb_v1700_s> sr_without_harq_ack_cfg_v1700;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1516,6 +2081,9 @@ struct rr_cfg_ded_nb_r13_s {
// ...
// group 0
copy_ptr<sched_request_cfg_nb_r15_s> sched_request_cfg_r15;
+ // group 1
+ bool new_ue_id_r16_present = false;
+ fixed_bitstring<16> new_ue_id_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -1709,6 +2277,54 @@ struct mib_nb_s {
void destroy_();
};
+ 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
fixed_bitstring<4> sys_frame_num_msb_r13;
@@ -1717,8 +2333,10 @@ struct mib_nb_s {
uint8_t sys_info_value_tag_r13 = 0;
bool ab_enabled_r13 = false;
operation_mode_info_r13_c_ operation_mode_info_r13;
- bool add_tx_sib1_r15 = false;
- fixed_bitstring<10> spare;
+ bool add_tx_sib1_r15 = false;
+ bool ab_enabled_minus5_gc_r16 = false;
+ part_earfcn_minus17_c_ part_earfcn_minus17;
+ fixed_bitstring<6> spare;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2059,7 +2677,8 @@ struct mib_tdd_nb_r15_s {
bool ab_enabled_r15 = false;
operation_mode_info_r15_c_ operation_mode_info_r15;
sib1_carrier_info_r15_e_ sib1_carrier_info_r15;
- fixed_bitstring<9> spare;
+ bool ab_enabled_minus5_gc_r16 = false;
+ fixed_bitstring<8> spare;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -2080,6 +2699,9 @@ struct bcch_bch_msg_tdd_nb_s {
void to_json(json_writer& j) const;
};
+// TrackingAreaList-NB-r17 ::= SEQUENCE (SIZE (1..12)) OF BIT STRING (SIZE (16))
+using tracking_area_list_nb_r17_l = bounded_array<fixed_bitstring<16>, 12>;
+
// NS-PmaxValue-NB-r13 ::= SEQUENCE
struct ns_pmax_value_nb_r13_s {
bool add_pmax_r13_present = false;
@@ -2092,9 +2714,30 @@ struct ns_pmax_value_nb_r13_s {
void to_json(json_writer& j) const;
};
+// PLMN-IdentityInfo-NB-v1700 ::= SEQUENCE
+struct plmn_id_info_nb_v1700_s {
+ bool tracking_area_list_r17_present = false;
+ tracking_area_list_nb_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;
+};
+
// SIB-Type-NB-v1530 ::= ENUMERATED
struct sib_type_nb_v1530_opts {
- enum options { sib_type23_nb_r15, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value;
+ enum options {
+ sib_type23_nb_r15,
+ sib_type27_nb_r16,
+ sib_type31_nb_r17,
+ sib_type32_nb_r17,
+ spare4,
+ spare3,
+ spare2,
+ spare1,
+ nulltype
+ } value;
typedef uint8_t number_type;
const char* to_string() const;
@@ -2102,6 +2745,16 @@ struct sib_type_nb_v1530_opts {
};
typedef enumerated<sib_type_nb_v1530_opts> sib_type_nb_v1530_e;
+// GWUS-NumGroups-NB-r16 ::= ENUMERATED
+struct gwus_num_groups_nb_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_nb_r16_opts> gwus_num_groups_nb_r16_e;
+
// NS-PmaxList-NB-r13 ::= SEQUENCE (SIZE (1..4)) OF NS-PmaxValue-NB-r13
using ns_pmax_list_nb_r13_l = dyn_array<ns_pmax_value_nb_r13_s>;
@@ -2135,6 +2788,78 @@ struct nsss_rrm_cfg_nb_r15_s {
void to_json(json_writer& j) const;
};
+// PLMN-IdentityInfo-5GC-NB-r16 ::= SEQUENCE
+struct plmn_id_info_minus5_gc_nb_r16_s {
+ struct plmn_id_minus5_gc_r16_c_ {
+ struct types_opts {
+ enum options { plmn_id_r16, plmn_idx_r16, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ plmn_id_minus5_gc_r16_c_() = default;
+ plmn_id_minus5_gc_r16_c_(const plmn_id_minus5_gc_r16_c_& other);
+ plmn_id_minus5_gc_r16_c_& operator=(const plmn_id_minus5_gc_r16_c_& other);
+ ~plmn_id_minus5_gc_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
+ plmn_id_s& plmn_id_r16()
+ {
+ assert_choice_type(types::plmn_id_r16, type_, "plmn-Identity-5GC-r16");
+ return c.get<plmn_id_s>();
+ }
+ uint8_t& plmn_idx_r16()
+ {
+ assert_choice_type(types::plmn_idx_r16, type_, "plmn-Identity-5GC-r16");
+ return c.get<uint8_t>();
+ }
+ const plmn_id_s& plmn_id_r16() const
+ {
+ assert_choice_type(types::plmn_id_r16, type_, "plmn-Identity-5GC-r16");
+ return c.get<plmn_id_s>();
+ }
+ const uint8_t& plmn_idx_r16() const
+ {
+ assert_choice_type(types::plmn_idx_r16, type_, "plmn-Identity-5GC-r16");
+ return c.get<uint8_t>();
+ }
+ plmn_id_s& set_plmn_id_r16();
+ uint8_t& set_plmn_idx_r16();
+
+ private:
+ types type_;
+ choice_buffer_t<plmn_id_s> c;
+
+ void destroy_();
+ };
+ struct cell_reserved_for_oper_r16_opts {
+ enum options { reserved, not_reserved, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<cell_reserved_for_oper_r16_opts> cell_reserved_for_oper_r16_e_;
+
+ // member variables
+ bool ng_u_data_transfer_r16_present = false;
+ bool up_cio_t_minus5_gs_optim_r16_present = false;
+ plmn_id_minus5_gc_r16_c_ plmn_id_minus5_gc_r16;
+ cell_reserved_for_oper_r16_e_ cell_reserved_for_oper_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// PLMN-IdentityList-NB-v1700 ::= SEQUENCE (SIZE (1..6)) OF PLMN-IdentityInfo-NB-v1700
+using plmn_id_list_nb_v1700_l = dyn_array<plmn_id_info_nb_v1700_s>;
+
// SIB-MappingInfo-NB-v1530 ::= SEQUENCE (SIZE (1..8)) OF SIB-Type-NB-v1530
using sib_map_info_nb_v1530_l = bounded_array<sib_type_nb_v1530_e, 8>;
@@ -2159,6 +2884,22 @@ struct edt_tbs_nb_r15_s {
void to_json(json_writer& j) const;
};
+// GWUS-GroupsForServiceList-NB-r16 ::= SEQUENCE (SIZE (1..3)) OF INTEGER (1..15)
+using gwus_groups_for_service_list_nb_r16_l = bounded_array<uint8_t, 3>;
+
+// GWUS-NumGroupsList-NB-r16 ::= SEQUENCE (SIZE (1..2)) OF GWUS-NumGroups-NB-r16
+using gwus_num_groups_list_nb_r16_l = bounded_array<gwus_num_groups_nb_r16_e, 2>;
+
+// GWUS-Paging-ProbThresh-NB-r16 ::= ENUMERATED
+struct gwus_paging_prob_thresh_nb_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_nb_r16_opts> gwus_paging_prob_thresh_nb_r16_e;
+
// InterFreqNeighCellInfo-NB-v1530 ::= SEQUENCE
struct inter_freq_neigh_cell_info_nb_v1530_s {
bool nsss_rrm_cfg_r15_present = false;
@@ -2783,6 +3524,9 @@ struct nprach_params_tdd_nb_v1550_s {
void to_json(json_writer& j) const;
};
+// PLMN-IdentityList-5GC-NB-r16 ::= SEQUENCE (SIZE (1..6)) OF PLMN-IdentityInfo-5GC-NB-r16
+using plmn_id_list_minus5_gc_nb_r16_l = dyn_array<plmn_id_info_minus5_gc_nb_r16_s>;
+
// PagingWeight-NB-r14 ::= ENUMERATED
struct paging_weight_nb_r14_opts {
enum options { w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, nulltype } value;
@@ -2853,6 +3597,64 @@ struct sched_info_nb_v1530_s {
void to_json(json_writer& j) const;
};
+// SystemInformationBlockType1-NB-v1700 ::= SEQUENCE
+struct sib_type1_nb_v1700_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_nb_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;
+};
+
+// UAC-BarringPerCat-NB-r16 ::= SEQUENCE
+struct uac_barr_per_cat_nb_r16_s {
+ struct uac_barr_factor_r16_opts {
+ enum options { p00, p05, p10, p15, p20, p25, p30, p40, p50, p60, p70, p75, p80, p85, p90, p95, nulltype } value;
+ typedef float number_type;
+
+ const char* to_string() const;
+ float to_number() const;
+ const char* to_number_string() const;
+ };
+ typedef enumerated<uac_barr_factor_r16_opts> uac_barr_factor_r16_e_;
+ struct uac_barr_time_r16_opts {
+ enum options { s4, s8, s16, s32, s64, s128, s256, s512, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<uac_barr_time_r16_opts> uac_barr_time_r16_e_;
+
+ // member variables
+ uint8_t uac_access_category_r16 = 1;
+ uac_barr_factor_r16_e_ uac_barr_factor_r16;
+ uac_barr_time_r16_e_ uac_barr_time_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// WUS-MaxDurationFactor-NB-r15 ::= ENUMERATED
struct wus_max_dur_factor_nb_r15_opts {
enum options { one128th, one64th, one32th, one16th, one_eighth, one_quarter, one_half, nulltype } value;
@@ -3046,8 +3848,33 @@ struct dl_carrier_cfg_common_nb_r14_s {
// EDT-TBS-InfoList-NB-r15 ::= SEQUENCE (SIZE (1..3)) OF EDT-TBS-NB-r15
using edt_tbs_info_list_nb_r15_l = dyn_array<edt_tbs_nb_r15_s>;
-// InterFreqBlackCellList-NB-r13 ::= SEQUENCE (SIZE (1..16)) OF INTEGER (0..503)
-using inter_freq_black_cell_list_nb_r13_l = bounded_array<uint16_t, 16>;
+// GWUS-ProbThreshList-NB-r16 ::= SEQUENCE (SIZE (1..3)) OF GWUS-Paging-ProbThresh-NB-r16
+using gwus_prob_thresh_list_nb_r16_l = bounded_array<gwus_paging_prob_thresh_nb_r16_e, 3>;
+
+// GWUS-ResourceConfig-NB-r16 ::= SEQUENCE
+struct gwus_res_cfg_nb_r16_s {
+ struct res_position_r16_opts {
+ enum options { primary, secondary, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<res_position_r16_opts> res_position_r16_e_;
+
+ // member variables
+ bool num_groups_list_r16_present = false;
+ bool groups_for_service_list_r16_present = false;
+ res_position_r16_e_ res_position_r16;
+ gwus_num_groups_list_nb_r16_l num_groups_list_r16;
+ gwus_groups_for_service_list_nb_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;
+};
+
+// InterFreqExcludedCellList-NB-r13 ::= SEQUENCE (SIZE (1..16)) OF INTEGER (0..503)
+using inter_freq_excluded_cell_list_nb_r13_l = bounded_array<uint16_t, 16>;
// InterFreqNeighCellList-NB-r13 ::= SEQUENCE (SIZE (1..16)) OF INTEGER (0..503)
using inter_freq_neigh_cell_list_nb_r13_l = bounded_array<uint16_t, 16>;
@@ -3119,6 +3946,31 @@ struct pcch_cfg_nb_r14_s {
void to_json(json_writer& j) const;
};
+// PCCH-Config-NB-r17 ::= SEQUENCE
+struct pcch_cfg_nb_r17_s {
+ struct npdcch_num_repeat_paging_r17_opts {
+ enum options { r1, r2, r4, r8, r16, r32, r64, r128, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<npdcch_num_repeat_paging_r17_opts> npdcch_num_repeat_paging_r17_e_;
+
+ // member variables
+ bool ext = false;
+ bool paging_weight_r17_present = false;
+ uint8_t cbp_idx_r17 = 1;
+ npdcch_num_repeat_paging_r17_e_ npdcch_num_repeat_paging_r17;
+ paging_weight_nb_r14_e paging_weight_r17;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// PowerRampingParameters-NB-v1450 ::= SEQUENCE
struct pwr_ramp_params_nb_v1450_s {
struct preamb_init_rx_target_pwr_v1450_opts {
@@ -3216,6 +4068,36 @@ using rsrp_thress_nprach_info_list_nb_r13_l = bounded_array<uint8_t, 2>;
// SchedulingInfoList-NB-v1530 ::= SEQUENCE (SIZE (1..8)) OF SchedulingInfo-NB-v1530
using sched_info_list_nb_v1530_l = dyn_array<sched_info_nb_v1530_s>;
+// SystemInformationBlockType1-NB-v1610 ::= SEQUENCE
+struct sib_type1_nb_v1610_s {
+ struct cell_access_related_info_minus5_gc_r16_s_ {
+ struct cell_barred_minus5_gc_r16_opts {
+ enum options { barred, not_barred, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<cell_barred_minus5_gc_r16_opts> cell_barred_minus5_gc_r16_e_;
+
+ // member variables
+ bool cell_id_r16_present = false;
+ plmn_id_list_minus5_gc_nb_r16_l plmn_id_list_r16;
+ fixed_bitstring<24> tac_minus5_gc_r16;
+ fixed_bitstring<28> cell_id_r16;
+ cell_barred_minus5_gc_r16_e_ cell_barred_minus5_gc_r16;
+ };
+
+ // member variables
+ bool cell_access_related_info_minus5_gc_r16_present = false;
+ bool non_crit_ext_present = false;
+ cell_access_related_info_minus5_gc_r16_s_ cell_access_related_info_minus5_gc_r16;
+ sib_type1_nb_v1700_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;
+};
+
// TDD-Config-NB-r15 ::= SEQUENCE
struct tdd_cfg_nb_r15_s {
struct sf_assign_r15_opts {
@@ -3257,6 +4139,9 @@ struct tdd_cfg_nb_r15_s {
void to_json(json_writer& j) const;
};
+// UAC-BarringPerCatList-NB-r16 ::= SEQUENCE (SIZE (1..63)) OF UAC-BarringPerCat-NB-r16
+using uac_barr_per_cat_list_nb_r16_l = dyn_array<uac_barr_per_cat_nb_r16_s>;
+
// UL-ReferenceSignalsNPUSCH-NB-r13 ::= SEQUENCE
struct ul_ref_sigs_npusch_nb_r13_s {
bool group_hop_enabled_r13 = false;
@@ -3268,6 +4153,67 @@ struct ul_ref_sigs_npusch_nb_r13_s {
void to_json(json_writer& j) const;
};
+// WUS-Config-NB-r15 ::= SEQUENCE
+struct wus_cfg_nb_r15_s {
+ struct num_pos_r15_opts {
+ enum options { n1, n2, n4, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<num_pos_r15_opts> num_pos_r15_e_;
+ struct num_drx_cycles_relaxed_r15_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_r15_opts> num_drx_cycles_relaxed_r15_e_;
+ struct time_offset_drx_r15_opts {
+ enum options { ms40, ms80, ms160, ms240, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<time_offset_drx_r15_opts> time_offset_drx_r15_e_;
+ struct time_offset_e_drx_short_r15_opts {
+ enum options { ms40, ms80, ms160, ms240, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<time_offset_e_drx_short_r15_opts> time_offset_e_drx_short_r15_e_;
+ struct time_offset_e_drx_long_r15_opts {
+ enum options { ms1000, ms2000, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<time_offset_e_drx_long_r15_opts> time_offset_e_drx_long_r15_e_;
+
+ // member variables
+ bool ext = false;
+ bool num_pos_r15_present = false;
+ bool time_offset_e_drx_long_r15_present = false;
+ wus_max_dur_factor_nb_r15_e max_dur_factor_r15;
+ num_pos_r15_e_ num_pos_r15;
+ num_drx_cycles_relaxed_r15_e_ num_drx_cycles_relaxed_r15;
+ time_offset_drx_r15_e_ time_offset_drx_r15;
+ time_offset_e_drx_short_r15_e_ time_offset_e_drx_short_r15;
+ time_offset_e_drx_long_r15_e_ time_offset_e_drx_long_r15;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// WUS-ConfigPerCarrier-NB-r15 ::= SEQUENCE
struct wus_cfg_per_carrier_nb_r15_s {
wus_max_dur_factor_nb_r15_e max_dur_factor_r15;
@@ -3298,6 +4244,85 @@ struct bcch_cfg_nb_r13_s {
void to_json(json_writer& j) const;
};
+// CBP-Config-NB-r17 ::= SEQUENCE
+struct cbp_cfg_nb_r17_s {
+ struct nb_r17_opts {
+ enum options {
+ four_t,
+ two_t,
+ one_t,
+ half_t,
+ quarter_t,
+ one8th_t,
+ one16th_t,
+ one32nd_t,
+ one64th_t,
+ one128th_t,
+ one256th_t,
+ one512th_t,
+ one1024th_t,
+ spare3,
+ spare2,
+ spare1,
+ nulltype
+ } value;
+ typedef float number_type;
+
+ const char* to_string() const;
+ float to_number() const;
+ const char* to_number_string() const;
+ };
+ typedef enumerated<nb_r17_opts> nb_r17_e_;
+ struct ue_specific_drx_cycle_min_r17_opts {
+ enum options { rf32, rf64, rf128, rf256, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<ue_specific_drx_cycle_min_r17_opts> ue_specific_drx_cycle_min_r17_e_;
+
+ // member variables
+ bool nb_r17_present = false;
+ bool ue_specific_drx_cycle_min_r17_present = false;
+ uint8_t nrsrp_min_r17 = 0;
+ nb_r17_e_ nb_r17;
+ ue_specific_drx_cycle_min_r17_e_ ue_specific_drx_cycle_min_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// CarrierFreqEUTRA-NB-r16 ::= SEQUENCE
+struct carrier_freq_eutra_nb_r16_s {
+ bool ext = false;
+ bool sib1_r16_present = false;
+ bool sib1_br_r16_present = false;
+ uint32_t carrier_freq_r16 = 0;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// CarrierFreqsGERAN-NB-r16 ::= SEQUENCE
+struct carrier_freqs_geran_nb_r16_s {
+ bool ext = false;
+ bool ec_gsm_iot_r16_present = false;
+ bool peo_r16_present = false;
+ carrier_freqs_geran_s carrier_freqs_r16;
+ // ...
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// DL-ConfigCommon-NB-r14 ::= SEQUENCE
struct dl_cfg_common_nb_r14_s {
bool ext = false;
@@ -3307,6 +4332,43 @@ struct dl_cfg_common_nb_r14_s {
// ...
// group 0
copy_ptr<wus_cfg_per_carrier_nb_r15_s> wus_cfg_r15;
+ // group 1
+ copy_ptr<wus_cfg_per_carrier_nb_r15_s> gwus_cfg_r16;
+ // group 2
+ copy_ptr<pcch_cfg_nb_r17_s> pcch_cfg_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// GWUS-Config-NB-r16 ::= SEQUENCE
+struct gwus_cfg_nb_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 ext = false;
+ 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;
+ common_seq_r16_e_ common_seq_r16;
+ wus_cfg_nb_r15_s time_params_r16;
+ gwus_res_cfg_nb_r16_s res_cfg_drx_r16;
+ gwus_res_cfg_nb_r16_s res_cfg_e_drx_short_r16;
+ gwus_res_cfg_nb_r16_s res_cfg_e_drx_long_r16;
+ gwus_prob_thresh_list_nb_r16_l prob_thresh_list_r16;
+ // ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -3334,21 +4396,21 @@ struct inter_freq_carrier_freq_info_nb_r13_s {
typedef enumerated<ce_authorisation_offset_r14_opts> ce_authorisation_offset_r14_e_;
// member variables
- bool ext = false;
- bool q_qual_min_r13_present = false;
- bool p_max_r13_present = false;
- bool q_offset_freq_r13_present = false;
- bool inter_freq_neigh_cell_list_r13_present = false;
- bool inter_freq_black_cell_list_r13_present = false;
- bool multi_band_info_list_r13_present = false;
- carrier_freq_nb_r13_s dl_carrier_freq_r13;
- int8_t q_rx_lev_min_r13 = -70;
- int8_t q_qual_min_r13 = -34;
- int8_t p_max_r13 = -30;
- q_offset_range_e q_offset_freq_r13;
- inter_freq_neigh_cell_list_nb_r13_l inter_freq_neigh_cell_list_r13;
- inter_freq_black_cell_list_nb_r13_l inter_freq_black_cell_list_r13;
- multi_band_info_list_nb_r13_l multi_band_info_list_r13;
+ bool ext = false;
+ bool q_qual_min_r13_present = false;
+ bool p_max_r13_present = false;
+ bool q_offset_freq_r13_present = false;
+ bool inter_freq_neigh_cell_list_r13_present = false;
+ bool inter_freq_excluded_cell_list_r13_present = false;
+ bool multi_band_info_list_r13_present = false;
+ carrier_freq_nb_r13_s dl_carrier_freq_r13;
+ int8_t q_rx_lev_min_r13 = -70;
+ int8_t q_qual_min_r13 = -34;
+ int8_t p_max_r13 = -30;
+ q_offset_range_e q_offset_freq_r13;
+ inter_freq_neigh_cell_list_nb_r13_l inter_freq_neigh_cell_list_r13;
+ inter_freq_excluded_cell_list_nb_r13_l inter_freq_excluded_cell_list_r13;
+ multi_band_info_list_nb_r13_l multi_band_info_list_r13;
// ...
// group 0
bool delta_rx_lev_min_v1350_present = false;
@@ -3563,6 +4625,46 @@ struct nprach_probability_anchor_nb_r14_s {
void to_json(json_writer& j) const;
};
+// NPRACH-TxDurationFmt01-NB-r17 ::= SEQUENCE
+struct nprach_tx_dur_fmt01_nb_r17_s {
+ struct nprach_tx_dur_fmt01_r17_opts {
+ enum options { n2, n4, n8, n16, n32, n64, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<nprach_tx_dur_fmt01_r17_opts> nprach_tx_dur_fmt01_r17_e_;
+
+ // member variables
+ nprach_tx_dur_fmt01_r17_e_ nprach_tx_dur_fmt01_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// NPRACH-TxDurationFmt2-NB-r17 ::= SEQUENCE
+struct nprach_tx_dur_fmt2_nb_r17_s {
+ struct nprach_tx_dur_fmt2_r17_opts {
+ enum options { n1, n2, n4, n8, n16, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<nprach_tx_dur_fmt2_r17_opts> nprach_tx_dur_fmt2_r17_e_;
+
+ // member variables
+ nprach_tx_dur_fmt2_r17_e_ nprach_tx_dur_fmt2_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// NPUSCH-ConfigCommon-NB-r13 ::= SEQUENCE
struct npusch_cfg_common_nb_r13_s {
using ack_nack_num_repeats_msg4_r13_l_ = bounded_array<ack_nack_num_repeats_nb_r13_e, 3>;
@@ -3755,6 +4857,21 @@ struct sib_type1_nb_v1530_s {
bool non_crit_ext_present = false;
tdd_params_r15_s_ tdd_params_r15;
sched_info_list_nb_v1530_l sched_info_list_v1530;
+ sib_type1_nb_v1610_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;
+};
+
+// UAC-Barring-NB-r16 ::= SEQUENCE
+struct uac_barr_nb_r16_s {
+ bool uac_barr_per_cat_list_r16_present = false;
+ bool uac_ac1_select_assist_info_r16_present = false;
+ uac_barr_per_cat_list_nb_r16_l uac_barr_per_cat_list_r16;
+ uac_ac1_select_assist_info_r15_e uac_ac1_select_assist_info_r16;
+ fixed_bitstring<7> uac_barr_for_access_id_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -3771,6 +4888,8 @@ struct ul_cfg_common_nb_r14_s {
// ...
// group 0
copy_ptr<nprach_params_list_nb_r14_l> nprach_params_list_edt_r15;
+ // group 1
+ copy_ptr<rsrp_thress_nprach_info_list_nb_r13_l> rsrp_thress_prach_info_list_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -3830,66 +4949,11 @@ struct ul_pwr_ctrl_common_nb_r13_s {
void to_json(json_writer& j) const;
};
-// WUS-Config-NB-r15 ::= SEQUENCE
-struct wus_cfg_nb_r15_s {
- struct num_pos_r15_opts {
- enum options { n1, n2, n4, nulltype } value;
- typedef uint8_t number_type;
-
- const char* to_string() const;
- uint8_t to_number() const;
- };
- typedef enumerated<num_pos_r15_opts> num_pos_r15_e_;
- struct num_drx_cycles_relaxed_r15_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_r15_opts> num_drx_cycles_relaxed_r15_e_;
- struct time_offset_drx_r15_opts {
- enum options { ms40, ms80, ms160, ms240, nulltype } value;
- typedef uint8_t number_type;
-
- const char* to_string() const;
- uint8_t to_number() const;
- };
- typedef enumerated<time_offset_drx_r15_opts> time_offset_drx_r15_e_;
- struct time_offset_e_drx_short_r15_opts {
- enum options { ms40, ms80, ms160, ms240, nulltype } value;
- typedef uint8_t number_type;
-
- const char* to_string() const;
- uint8_t to_number() const;
- };
- typedef enumerated<time_offset_e_drx_short_r15_opts> time_offset_e_drx_short_r15_e_;
- struct time_offset_e_drx_long_r15_opts {
- enum options { ms1000, ms2000, nulltype } value;
- typedef uint16_t number_type;
-
- const char* to_string() const;
- uint16_t to_number() const;
- };
- typedef enumerated<time_offset_e_drx_long_r15_opts> time_offset_e_drx_long_r15_e_;
+// CarrierFreqListEUTRA-NB-r16 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqEUTRA-NB-r16
+using carrier_freq_list_eutra_nb_r16_l = dyn_array<carrier_freq_eutra_nb_r16_s>;
- // member variables
- bool ext = false;
- bool num_pos_r15_present = false;
- bool time_offset_e_drx_long_r15_present = false;
- wus_max_dur_factor_nb_r15_e max_dur_factor_r15;
- num_pos_r15_e_ num_pos_r15;
- num_drx_cycles_relaxed_r15_e_ num_drx_cycles_relaxed_r15;
- time_offset_drx_r15_e_ time_offset_drx_r15;
- time_offset_e_drx_short_r15_e_ time_offset_e_drx_short_r15;
- time_offset_e_drx_long_r15_e_ time_offset_e_drx_long_r15;
- // ...
-
- // sequence methods
- SRSASN_CODE pack(bit_ref& bref) const;
- SRSASN_CODE unpack(cbit_ref& bref);
- void to_json(json_writer& j) const;
-};
+// CarrierFreqsListGERAN-NB-r16 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqsGERAN-NB-r16
+using carrier_freqs_list_geran_nb_r16_l = dyn_array<carrier_freqs_geran_nb_r16_s>;
// CellReselectionInfoCommon-NB-v1450 ::= SEQUENCE
struct cell_resel_info_common_nb_v1450_s {
@@ -3942,6 +5006,66 @@ struct cell_sel_info_nb_v1430_s {
void to_json(json_writer& j) const;
};
+// ConnMeasConfig-NB-r17 ::= SEQUENCE
+struct conn_meas_cfg_nb_r17_s {
+ struct neigh_cell_meas_criteria_r17_s_ {
+ struct s_measure_delta_p_r17_opts {
+ enum options { db6, db9, db12, db15, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<s_measure_delta_p_r17_opts> s_measure_delta_p_r17_e_;
+ struct t_measure_delta_p_r17_opts {
+ enum options { s15, s30, s45, s60, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<t_measure_delta_p_r17_opts> t_measure_delta_p_r17_e_;
+
+ // member variables
+ s_measure_delta_p_r17_e_ s_measure_delta_p_r17;
+ t_measure_delta_p_r17_e_ t_measure_delta_p_r17;
+ };
+
+ // member variables
+ bool s_measure_inter_r17_present = false;
+ bool neigh_cell_meas_criteria_r17_present = false;
+ uint8_t s_measure_intra_r17 = 0;
+ uint8_t s_measure_inter_r17 = 0;
+ neigh_cell_meas_criteria_r17_s_ neigh_cell_meas_criteria_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// CoverageBasedPagingConfig-NB-r17 ::= SEQUENCE
+struct coverage_based_paging_cfg_nb_r17_s {
+ struct cbp_hyst_timer_r17_opts {
+ enum options { ms2560, ms7680, ms12800, ms17920, ms23040, ms28160, ms33280, ms40960, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<cbp_hyst_timer_r17_opts> cbp_hyst_timer_r17_e_;
+ using cbp_cfg_list_r17_l_ = dyn_array<cbp_cfg_nb_r17_s>;
+
+ // member variables
+ cbp_hyst_timer_r17_e_ cbp_hyst_timer_r17;
+ cbp_cfg_list_r17_l_ cbp_cfg_list_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// DL-ConfigCommonList-NB-r14 ::= SEQUENCE (SIZE (1..15)) OF DL-ConfigCommon-NB-r14
using dl_cfg_common_list_nb_r14_l = dyn_array<dl_cfg_common_nb_r14_s>;
@@ -4060,6 +5184,36 @@ using nprach_probability_anchor_list_nb_r14_l = dyn_array<nprach_probability_anc
// RadioResourceConfigCommonSIB-NB-r13 ::= SEQUENCE
struct rr_cfg_common_sib_nb_r13_s {
+ struct ue_specific_drx_cycle_min_r16_opts {
+ enum options { rf32, rf64, rf128, rf256, rf512, rf1024, nulltype } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<ue_specific_drx_cycle_min_r16_opts> ue_specific_drx_cycle_min_r16_e_;
+ struct ntn_cfg_common_r17_s_ {
+ struct t318_r17_opts {
+ enum options { ms0, ms200, ms500, ms1000, ms2000, ms4000, ms8000, 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 nprach_tx_dur_fmt01_r17_present = false;
+ bool nprach_tx_dur_fmt2_r17_present = false;
+ bool npusch_tx_dur_r17_present = false;
+ t318_r17_e_ t318_r17;
+ nprach_tx_dur_fmt01_nb_r17_s nprach_tx_dur_fmt01_r17;
+ nprach_tx_dur_fmt2_nb_r17_s nprach_tx_dur_fmt2_r17;
+ npusch_tx_dur_nb_r17_s npusch_tx_dur_r17;
+ };
+
+ // member variables
bool ext = false;
bool dl_gap_r13_present = false;
rach_cfg_common_nb_r13_s rach_cfg_common_r13;
@@ -4081,6 +5235,13 @@ struct rr_cfg_common_sib_nb_r13_s {
copy_ptr<wus_cfg_nb_r15_s> wus_cfg_r15;
// group 3
copy_ptr<nprach_cfg_sib_nb_v1550_s> nprach_cfg_v1550;
+ // group 4
+ bool nrs_non_anchor_cfg_r16_present = false;
+ bool ue_specific_drx_cycle_min_r16_present = false;
+ copy_ptr<gwus_cfg_nb_r16_s> gwus_cfg_r16;
+ ue_specific_drx_cycle_min_r16_e_ ue_specific_drx_cycle_min_r16;
+ // group 5
+ copy_ptr<ntn_cfg_common_r17_s_> ntn_cfg_common_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -4397,6 +5558,57 @@ struct t_resel_nb_r13_opts {
};
typedef enumerated<t_resel_nb_r13_opts> t_resel_nb_r13_e;
+// UAC-Param-NB-r16 ::= CHOICE
+struct uac_param_nb_r16_c {
+ using uac_barr_per_plmn_list_l_ = dyn_array<uac_barr_nb_r16_s>;
+ struct types_opts {
+ enum options { uac_barr_common, uac_barr_per_plmn_list, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ uac_param_nb_r16_c() = default;
+ uac_param_nb_r16_c(const uac_param_nb_r16_c& other);
+ uac_param_nb_r16_c& operator=(const uac_param_nb_r16_c& other);
+ ~uac_param_nb_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
+ uac_barr_nb_r16_s& uac_barr_common()
+ {
+ assert_choice_type(types::uac_barr_common, type_, "UAC-Param-NB-r16");
+ return c.get<uac_barr_nb_r16_s>();
+ }
+ uac_barr_per_plmn_list_l_& uac_barr_per_plmn_list()
+ {
+ assert_choice_type(types::uac_barr_per_plmn_list, type_, "UAC-Param-NB-r16");
+ return c.get<uac_barr_per_plmn_list_l_>();
+ }
+ const uac_barr_nb_r16_s& uac_barr_common() const
+ {
+ assert_choice_type(types::uac_barr_common, type_, "UAC-Param-NB-r16");
+ return c.get<uac_barr_nb_r16_s>();
+ }
+ const uac_barr_per_plmn_list_l_& uac_barr_per_plmn_list() const
+ {
+ assert_choice_type(types::uac_barr_per_plmn_list, type_, "UAC-Param-NB-r16");
+ return c.get<uac_barr_per_plmn_list_l_>();
+ }
+ uac_barr_nb_r16_s& set_uac_barr_common();
+ uac_barr_per_plmn_list_l_& set_uac_barr_per_plmn_list();
+
+private:
+ types type_;
+ choice_buffer_t<uac_barr_nb_r16_s, uac_barr_per_plmn_list_l_> c;
+
+ void destroy_();
+};
+
// UE-TimersAndConstants-NB-r13 ::= SEQUENCE
struct ue_timers_and_consts_nb_r13_s {
struct t300_r13_opts {
@@ -4677,6 +5889,8 @@ struct sib_type14_nb_r13_s {
// group 0
bool ab_per_nrsrp_r15_present = false;
ab_per_nrsrp_r15_e_ ab_per_nrsrp_r15;
+ // group 1
+ copy_ptr<uac_param_nb_r16_c> uac_param_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -4734,6 +5948,15 @@ struct sib_type2_nb_r13_s {
bool cp_edt_r15_present = false;
bool up_edt_r15_present = false;
copy_ptr<freq_info_v1530_s_> freq_info_v1530;
+ // group 3
+ 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 rai_activation_enh_r16_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -4872,6 +6095,8 @@ struct sib_type22_nb_r14_s {
// group 0
copy_ptr<mixed_operation_mode_cfg_r15_s_> mixed_operation_mode_cfg_r15;
copy_ptr<ul_cfg_common_list_tdd_nb_r15_l> ul_cfg_list_r15;
+ // group 1
+ copy_ptr<coverage_based_paging_cfg_nb_r17_s> coverage_based_paging_cfg_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -4896,6 +6121,23 @@ struct sib_type23_nb_r15_s {
void to_json(json_writer& j) const;
};
+// SystemInformationBlockType27-NB-r16 ::= SEQUENCE
+struct sib_type27_nb_r16_s {
+ bool ext = false;
+ bool carrier_freq_list_eutra_r16_present = false;
+ bool carrier_freqs_list_geran_r16_present = false;
+ bool late_non_crit_ext_present = false;
+ carrier_freq_list_eutra_nb_r16_l carrier_freq_list_eutra_r16;
+ carrier_freqs_list_geran_nb_r16_l carrier_freqs_list_geran_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;
+};
+
// SystemInformationBlockType3-NB-r13 ::= SEQUENCE
struct sib_type3_nb_r13_s {
struct cell_resel_info_common_r13_s_ {
@@ -4966,6 +6208,39 @@ struct sib_type3_nb_r13_s {
// group 4
bool npbch_rrm_cfg_r15_present = false;
copy_ptr<nsss_rrm_cfg_nb_r15_s> nsss_rrm_cfg_r15;
+ // group 5
+ bool t_service_r17_present = false;
+ copy_ptr<conn_meas_cfg_nb_r17_s> conn_meas_cfg_r17;
+ uint32_t t_service_r17 = 0;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// SystemInformationBlockType31-NB-r17 ::= SEQUENCE
+struct sib_type31_nb_r17_s {
+ bool ext = false;
+ bool late_non_crit_ext_present = false;
+ serving_satellite_info_r17_s serving_satellite_info_r17;
+ 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;
+};
+
+// SystemInformationBlockType32-NB-r17 ::= SEQUENCE
+struct sib_type32_nb_r17_s {
+ bool ext = false;
+ bool satellite_info_list_r17_present = false;
+ bool late_non_crit_ext_present = false;
+ satellite_info_list_r17_l satellite_info_list_r17;
+ dyn_octstring late_non_crit_ext;
+ // ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -4975,13 +6250,13 @@ struct sib_type3_nb_r13_s {
// SystemInformationBlockType4-NB-r13 ::= SEQUENCE
struct sib_type4_nb_r13_s {
- bool ext = false;
- bool intra_freq_neigh_cell_list_r13_present = false;
- bool intra_freq_black_cell_list_r13_present = false;
- bool late_non_crit_ext_present = false;
- intra_freq_neigh_cell_list_l intra_freq_neigh_cell_list_r13;
- intra_freq_black_cell_list_l intra_freq_black_cell_list_r13;
- dyn_octstring late_non_crit_ext;
+ bool ext = false;
+ bool intra_freq_neigh_cell_list_r13_present = false;
+ bool intra_freq_excluded_cell_list_r13_present = false;
+ bool late_non_crit_ext_present = false;
+ intra_freq_neigh_cell_list_l intra_freq_neigh_cell_list_r13;
+ intra_freq_excluded_cell_list_l intra_freq_excluded_cell_list_r13;
+ dyn_octstring late_non_crit_ext;
// ...
// group 0
copy_ptr<nsss_rrm_cfg_nb_r15_s> nsss_rrm_cfg_r15;
@@ -5036,6 +6311,9 @@ struct sys_info_nb_r13_ies_s {
sib20_v1430,
sib22_v1430,
sib23_v1530,
+ sib27_v1610,
+ sib31_v1700,
+ sib32_v1700,
nulltype
} value;
typedef uint8_t number_type;
@@ -5043,7 +6321,7 @@ struct sys_info_nb_r13_ies_s {
const char* to_string() const;
uint8_t to_number() const;
};
- typedef enumerated<types_opts, true, 4> types;
+ typedef enumerated<types_opts, true, 7> types;
// choice methods
sib_type_and_info_r13_item_c_() = default;
@@ -5106,6 +6384,21 @@ struct sys_info_nb_r13_ies_s {
assert_choice_type(types::sib23_v1530, type_, "sib-TypeAndInfo-r13-item");
return c.get<sib_type23_nb_r15_s>();
}
+ sib_type27_nb_r16_s& sib27_v1610()
+ {
+ assert_choice_type(types::sib27_v1610, type_, "sib-TypeAndInfo-r13-item");
+ return c.get<sib_type27_nb_r16_s>();
+ }
+ sib_type31_nb_r17_s& sib31_v1700()
+ {
+ assert_choice_type(types::sib31_v1700, type_, "sib-TypeAndInfo-r13-item");
+ return c.get<sib_type31_nb_r17_s>();
+ }
+ sib_type32_nb_r17_s& sib32_v1700()
+ {
+ assert_choice_type(types::sib32_v1700, type_, "sib-TypeAndInfo-r13-item");
+ return c.get<sib_type32_nb_r17_s>();
+ }
const sib_type2_nb_r13_s& sib2_r13() const
{
assert_choice_type(types::sib2_r13, type_, "sib-TypeAndInfo-r13-item");
@@ -5156,6 +6449,21 @@ struct sys_info_nb_r13_ies_s {
assert_choice_type(types::sib23_v1530, type_, "sib-TypeAndInfo-r13-item");
return c.get<sib_type23_nb_r15_s>();
}
+ const sib_type27_nb_r16_s& sib27_v1610() const
+ {
+ assert_choice_type(types::sib27_v1610, type_, "sib-TypeAndInfo-r13-item");
+ return c.get<sib_type27_nb_r16_s>();
+ }
+ const sib_type31_nb_r17_s& sib31_v1700() const
+ {
+ assert_choice_type(types::sib31_v1700, type_, "sib-TypeAndInfo-r13-item");
+ return c.get<sib_type31_nb_r17_s>();
+ }
+ const sib_type32_nb_r17_s& sib32_v1700() const
+ {
+ assert_choice_type(types::sib32_v1700, type_, "sib-TypeAndInfo-r13-item");
+ return c.get<sib_type32_nb_r17_s>();
+ }
sib_type2_nb_r13_s& set_sib2_r13();
sib_type3_nb_r13_s& set_sib3_r13();
sib_type4_nb_r13_s& set_sib4_r13();
@@ -5166,6 +6474,9 @@ struct sys_info_nb_r13_ies_s {
sib_type20_nb_r14_s& set_sib20_v1430();
sib_type22_nb_r14_s& set_sib22_v1430();
sib_type23_nb_r15_s& set_sib23_v1530();
+ sib_type27_nb_r16_s& set_sib27_v1610();
+ sib_type31_nb_r17_s& set_sib31_v1700();
+ sib_type32_nb_r17_s& set_sib32_v1700();
private:
types type_;
@@ -5175,7 +6486,10 @@ struct sys_info_nb_r13_ies_s {
sib_type20_nb_r14_s,
sib_type22_nb_r14_s,
sib_type23_nb_r15_s,
+ sib_type27_nb_r16_s,
sib_type2_nb_r13_s,
+ sib_type31_nb_r17_s,
+ sib_type32_nb_r17_s,
sib_type3_nb_r13_s,
sib_type4_nb_r13_s,
sib_type5_nb_r13_s>
@@ -5457,6 +6771,18 @@ struct bcch_dl_sch_msg_nb_s {
void to_json(json_writer& j) const;
};
+// RRCEarlyDataComplete-NB-v1700-IEs ::= SEQUENCE
+struct rrc_early_data_complete_nb_v1700_ies_s {
+ bool cbp_idx_r17_present = false;
+ bool non_crit_ext_present = false;
+ uint8_t cbp_idx_r17 = 1;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// RRCConnectionReestablishment-NB-v1430-IEs ::= SEQUENCE
struct rrc_conn_reest_nb_v1430_ies_s {
bool dl_nas_mac_present = false;
@@ -5469,11 +6795,24 @@ struct rrc_conn_reest_nb_v1430_ies_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionSetup-NB-v1610-IEs ::= SEQUENCE
+struct rrc_conn_setup_nb_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;
+};
+
// RRCEarlyDataComplete-NB-v1590-IEs ::= SEQUENCE
struct rrc_early_data_complete_nb_v1590_ies_s {
- bool late_non_crit_ext_present = false;
- bool non_crit_ext_present = false;
- dyn_octstring late_non_crit_ext;
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring late_non_crit_ext;
+ rrc_early_data_complete_nb_v1700_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -5562,10 +6901,11 @@ struct rrc_conn_reject_nb_r13_ies_s {
// RRCConnectionSetup-NB-r13-IEs ::= SEQUENCE
struct rrc_conn_setup_nb_r13_ies_s {
- bool late_non_crit_ext_present = false;
- bool non_crit_ext_present = false;
- rr_cfg_ded_nb_r13_s rr_cfg_ded_r13;
- dyn_octstring late_non_crit_ext;
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ rr_cfg_ded_nb_r13_s rr_cfg_ded_r13;
+ dyn_octstring late_non_crit_ext;
+ rrc_conn_setup_nb_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -6004,10 +7344,456 @@ struct dl_ccch_msg_nb_s {
void to_json(json_writer& j) const;
};
+// NRSRP-ChangeThresh-NB-r16 ::= ENUMERATED
+struct nrsrp_change_thresh_nb_r16_opts {
+ enum options {
+ db4,
+ db6,
+ db8,
+ db10,
+ db14,
+ db18,
+ db22,
+ db26,
+ db30,
+ db34,
+ spare6,
+ spare5,
+ spare4,
+ spare3,
+ spare2,
+ spare1,
+ nulltype
+ } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+};
+typedef enumerated<nrsrp_change_thresh_nb_r16_opts> nrsrp_change_thresh_nb_r16_e;
+
+// PUR-NRSRP-ChangeThreshold-NB-r16 ::= SEQUENCE
+struct pur_nrsrp_change_thres_nb_r16_s {
+ bool decrease_thresh_r16_present = false;
+ nrsrp_change_thresh_nb_r16_e increase_thresh_r16;
+ nrsrp_change_thresh_nb_r16_e decrease_thresh_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// PUR-PeriodicityAndOffset-NB-r16 ::= CHOICE
+struct pur_periodicity_and_offset_nb_r16_c {
+ struct types_opts {
+ enum options {
+ periodicity8,
+ periodicity16,
+ periodicity32,
+ periodicity64,
+ periodicity128,
+ periodicity256,
+ periodicity512,
+ periodicity1024,
+ periodicity2048,
+ periodicity4096,
+ periodicity8192,
+ nulltype
+ } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ pur_periodicity_and_offset_nb_r16_c() = default;
+ pur_periodicity_and_offset_nb_r16_c(const pur_periodicity_and_offset_nb_r16_c& other);
+ pur_periodicity_and_offset_nb_r16_c& operator=(const pur_periodicity_and_offset_nb_r16_c& other);
+ ~pur_periodicity_and_offset_nb_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& periodicity8()
+ {
+ assert_choice_type(types::periodicity8, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& periodicity16()
+ {
+ assert_choice_type(types::periodicity16, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& periodicity32()
+ {
+ assert_choice_type(types::periodicity32, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& periodicity64()
+ {
+ assert_choice_type(types::periodicity64, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& periodicity128()
+ {
+ assert_choice_type(types::periodicity128, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint8_t>();
+ }
+ uint16_t& periodicity256()
+ {
+ assert_choice_type(types::periodicity256, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ uint16_t& periodicity512()
+ {
+ assert_choice_type(types::periodicity512, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ uint16_t& periodicity1024()
+ {
+ assert_choice_type(types::periodicity1024, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ uint16_t& periodicity2048()
+ {
+ assert_choice_type(types::periodicity2048, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ uint16_t& periodicity4096()
+ {
+ assert_choice_type(types::periodicity4096, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ uint16_t& periodicity8192()
+ {
+ assert_choice_type(types::periodicity8192, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ const uint8_t& periodicity8() const
+ {
+ assert_choice_type(types::periodicity8, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& periodicity16() const
+ {
+ assert_choice_type(types::periodicity16, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& periodicity32() const
+ {
+ assert_choice_type(types::periodicity32, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& periodicity64() const
+ {
+ assert_choice_type(types::periodicity64, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& periodicity128() const
+ {
+ assert_choice_type(types::periodicity128, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint8_t>();
+ }
+ const uint16_t& periodicity256() const
+ {
+ assert_choice_type(types::periodicity256, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ const uint16_t& periodicity512() const
+ {
+ assert_choice_type(types::periodicity512, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ const uint16_t& periodicity1024() const
+ {
+ assert_choice_type(types::periodicity1024, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ const uint16_t& periodicity2048() const
+ {
+ assert_choice_type(types::periodicity2048, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ const uint16_t& periodicity4096() const
+ {
+ assert_choice_type(types::periodicity4096, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ const uint16_t& periodicity8192() const
+ {
+ assert_choice_type(types::periodicity8192, type_, "PUR-PeriodicityAndOffset-NB-r16");
+ return c.get<uint16_t>();
+ }
+ uint8_t& set_periodicity8();
+ uint8_t& set_periodicity16();
+ uint8_t& set_periodicity32();
+ uint8_t& set_periodicity64();
+ uint8_t& set_periodicity128();
+ uint16_t& set_periodicity256();
+ uint16_t& set_periodicity512();
+ uint16_t& set_periodicity1024();
+ uint16_t& set_periodicity2048();
+ uint16_t& set_periodicity4096();
+ uint16_t& set_periodicity8192();
+
+private:
+ types type_;
+ pod_choice_buffer_t c;
+
+ void destroy_();
+};
+
+// PUR-UL-16QAM-Config-NB-r17 ::= SEQUENCE
+struct pur_ul_minus16_qam_cfg_nb_r17_s {
+ ul_pwr_ctrl_ded_nb_v1700_s ul_pwr_ctrl_ded_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// PUR-Config-NB-r16 ::= SEQUENCE
+struct pur_cfg_nb_r16_s {
+ struct pur_implicit_release_after_r16_opts {
+ enum options { n2, n4, n8, spare, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<pur_implicit_release_after_r16_opts> pur_implicit_release_after_r16_e_;
+ struct pur_resp_win_timer_r16_opts {
+ enum options { pp1, pp2, pp3, pp4, pp8, pp16, pp32, pp64, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<pur_resp_win_timer_r16_opts> pur_resp_win_timer_r16_e_;
+ struct pur_start_time_params_r16_s_ {
+ pur_periodicity_and_offset_nb_r16_c periodicity_and_offset_r16;
+ uint16_t start_sfn_r16 = 0;
+ uint8_t start_sf_r16 = 0;
+ fixed_bitstring<1> hsfn_lsb_info_r16;
+ };
+ struct pur_num_occasions_r16_opts {
+ enum options { one, infinite, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<pur_num_occasions_r16_opts> pur_num_occasions_r16_e_;
+ struct pur_phys_cfg_r16_s_ {
+ struct npusch_sub_carrier_set_idx_r16_c_ {
+ struct types_opts {
+ enum options { khz15, khz3dot75, 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
+ npusch_sub_carrier_set_idx_r16_c_() = default;
+ npusch_sub_carrier_set_idx_r16_c_(const npusch_sub_carrier_set_idx_r16_c_& other);
+ npusch_sub_carrier_set_idx_r16_c_& operator=(const npusch_sub_carrier_set_idx_r16_c_& other);
+ ~npusch_sub_carrier_set_idx_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& khz15()
+ {
+ assert_choice_type(types::khz15, type_, "npusch-SubCarrierSetIndex-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& khz3dot75()
+ {
+ assert_choice_type(types::khz3dot75, type_, "npusch-SubCarrierSetIndex-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& khz15() const
+ {
+ assert_choice_type(types::khz15, type_, "npusch-SubCarrierSetIndex-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& khz3dot75() const
+ {
+ assert_choice_type(types::khz3dot75, type_, "npusch-SubCarrierSetIndex-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& set_khz15();
+ uint8_t& set_khz3dot75();
+
+ private:
+ types type_;
+ pod_choice_buffer_t c;
+
+ void destroy_();
+ };
+ struct npusch_mcs_r16_c_ {
+ struct types_opts {
+ enum options { single_tone, multi_tone, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ npusch_mcs_r16_c_() = default;
+ npusch_mcs_r16_c_(const npusch_mcs_r16_c_& other);
+ npusch_mcs_r16_c_& operator=(const npusch_mcs_r16_c_& other);
+ ~npusch_mcs_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& single_tone()
+ {
+ assert_choice_type(types::single_tone, type_, "npusch-MCS-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& multi_tone()
+ {
+ assert_choice_type(types::multi_tone, type_, "npusch-MCS-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& single_tone() const
+ {
+ assert_choice_type(types::single_tone, type_, "npusch-MCS-r16");
+ return c.get<uint8_t>();
+ }
+ const uint8_t& multi_tone() const
+ {
+ assert_choice_type(types::multi_tone, type_, "npusch-MCS-r16");
+ return c.get<uint8_t>();
+ }
+ uint8_t& set_single_tone();
+ uint8_t& set_multi_tone();
+
+ private:
+ types type_;
+ pod_choice_buffer_t c;
+
+ void destroy_();
+ };
+ struct alpha_r16_opts {
+ enum options { al0, al04, al05, al06, al07, al08, al09, al1, nulltype } value;
+ typedef float number_type;
+
+ const char* to_string() const;
+ float to_number() const;
+ const char* to_number_string() const;
+ };
+ typedef enumerated<alpha_r16_opts> alpha_r16_e_;
+ struct npusch_cyclic_shift_r16_opts {
+ enum options { n0, n6, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<npusch_cyclic_shift_r16_opts> npusch_cyclic_shift_r16_e_;
+
+ // member variables
+ carrier_cfg_ded_nb_r13_s carrier_cfg_r16;
+ uint8_t npusch_num_rus_idx_r16 = 0;
+ uint8_t npusch_num_repeats_idx_r16 = 0;
+ npusch_sub_carrier_set_idx_r16_c_ npusch_sub_carrier_set_idx_r16;
+ npusch_mcs_r16_c_ npusch_mcs_r16;
+ int8_t p0_ue_npusch_r16 = -8;
+ alpha_r16_e_ alpha_r16;
+ npusch_cyclic_shift_r16_e_ npusch_cyclic_shift_r16;
+ npdcch_cfg_ded_nb_r13_s npdcch_cfg_r16;
+ };
+ struct pur_phys_cfg_v1650_s_ {
+ ack_nack_num_repeats_nb_r13_e ack_nack_num_repeats_r16;
+ };
+ struct pur_phys_cfg_v1700_s_ {
+ bool pur_ul_minus16_qam_cfg_r17_present = false;
+ bool pur_dl_minus16_qam_cfg_r17_present = false;
+ setup_release_c<pur_ul_minus16_qam_cfg_nb_r17_s> pur_ul_minus16_qam_cfg_r17;
+ setup_release_c<npdsch_minus16_qam_cfg_nb_r17_s> pur_dl_minus16_qam_cfg_r17;
+ };
+
+ // member variables
+ bool ext = false;
+ bool pur_cfg_id_r16_present = false;
+ bool pur_time_align_timer_r16_present = false;
+ bool pur_nrsrp_change_thres_r16_present = false;
+ bool pur_implicit_release_after_r16_present = false;
+ bool pur_rnti_r16_present = false;
+ bool pur_resp_win_timer_r16_present = false;
+ bool pur_start_time_params_r16_present = false;
+ bool pur_phys_cfg_r16_present = false;
+ fixed_bitstring<20> pur_cfg_id_r16;
+ uint8_t pur_time_align_timer_r16 = 1;
+ setup_release_c<pur_nrsrp_change_thres_nb_r16_s> pur_nrsrp_change_thres_r16;
+ pur_implicit_release_after_r16_e_ pur_implicit_release_after_r16;
+ fixed_bitstring<16> pur_rnti_r16;
+ pur_resp_win_timer_r16_e_ pur_resp_win_timer_r16;
+ pur_start_time_params_r16_s_ pur_start_time_params_r16;
+ pur_num_occasions_r16_e_ pur_num_occasions_r16;
+ pur_phys_cfg_r16_s_ pur_phys_cfg_r16;
+ // ...
+ // group 0
+ copy_ptr<pur_phys_cfg_v1650_s_> pur_phys_cfg_v1650;
+ // group 1
+ copy_ptr<pur_phys_cfg_v1700_s_> pur_phys_cfg_v1700;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// RRCConnectionRelease-NB-v1700-IEs ::= SEQUENCE
+struct rrc_conn_release_nb_v1700_ies_s {
+ bool cbp_idx_r17_present = false;
+ bool non_crit_ext_present = false;
+ uint8_t cbp_idx_r17 = 1;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// RRCConnectionRelease-NB-v1610-IEs ::= SEQUENCE
+struct rrc_conn_release_nb_v1610_ies_s {
+ bool resume_id_r16_present = false;
+ bool anr_meas_cfg_r16_present = false;
+ bool pur_cfg_r16_present = false;
+ bool non_crit_ext_present = false;
+ fixed_bitstring<40> resume_id_r16;
+ anr_meas_cfg_nb_r16_s anr_meas_cfg_r16;
+ setup_release_c<pur_cfg_nb_r16_s> pur_cfg_r16;
+ rrc_conn_release_nb_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;
+};
+
// RRCConnectionRelease-NB-v15b0-IEs ::= SEQUENCE
struct rrc_conn_release_nb_v15b0_ies_s {
- bool no_last_cell_upd_r15_present = false;
- bool non_crit_ext_present = false;
+ bool no_last_cell_upd_r15_present = false;
+ bool non_crit_ext_present = false;
+ rrc_conn_release_nb_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -6060,6 +7846,17 @@ struct rrc_conn_release_nb_v1430_ies_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionResume-NB-v1610-IEs ::= SEQUENCE
+struct rrc_conn_resume_nb_v1610_ies_s {
+ bool full_cfg_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;
+};
+
// ReleaseCause-NB-r13 ::= ENUMERATED
struct release_cause_nb_r13_opts {
enum options { load_balancing_ta_urequired, other, rrc_suspend, spare1, nulltype } value;
@@ -6123,13 +7920,14 @@ struct rrc_conn_release_nb_r13_ies_s {
// RRCConnectionResume-NB-r13-IEs ::= SEQUENCE
struct rrc_conn_resume_nb_r13_ies_s {
- bool rr_cfg_ded_r13_present = false;
- bool drb_continue_rohc_r13_present = false;
- bool late_non_crit_ext_present = false;
- bool non_crit_ext_present = false;
- rr_cfg_ded_nb_r13_s rr_cfg_ded_r13;
- uint8_t next_hop_chaining_count_r13 = 0;
- dyn_octstring late_non_crit_ext;
+ bool rr_cfg_ded_r13_present = false;
+ bool drb_continue_rohc_r13_present = false;
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ rr_cfg_ded_nb_r13_s rr_cfg_ded_r13;
+ uint8_t next_hop_chaining_count_r13 = 0;
+ dyn_octstring late_non_crit_ext;
+ rrc_conn_resume_nb_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -6149,6 +7947,21 @@ struct ue_cap_enquiry_nb_r13_ies_s {
void to_json(json_writer& j) const;
};
+// UEInformationRequest-NB-r16-IEs ::= SEQUENCE
+struct ue_info_request_nb_r16_ies_s {
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ bool rach_report_req_r16 = false;
+ bool rlf_report_req_r16 = false;
+ bool anr_report_req_r16 = false;
+ 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;
+};
+
// DLInformationTransfer-NB ::= SEQUENCE
struct dl_info_transfer_nb_s {
struct crit_exts_c_ {
@@ -6519,6 +8332,52 @@ struct ue_cap_enquiry_nb_s {
void to_json(json_writer& j) const;
};
+// UEInformationRequest-NB-r16 ::= SEQUENCE
+struct ue_info_request_nb_r16_s {
+ struct crit_exts_c_ {
+ struct types_opts {
+ enum options { ue_info_request_r16, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ crit_exts_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
+ ue_info_request_nb_r16_ies_s& ue_info_request_r16()
+ {
+ assert_choice_type(types::ue_info_request_r16, type_, "criticalExtensions");
+ return c;
+ }
+ const ue_info_request_nb_r16_ies_s& ue_info_request_r16() const
+ {
+ assert_choice_type(types::ue_info_request_r16, type_, "criticalExtensions");
+ return c;
+ }
+ ue_info_request_nb_r16_ies_s& set_ue_info_request_r16();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ ue_info_request_nb_r16_ies_s c;
+ };
+
+ // member variables
+ uint8_t rrc_transaction_id = 0;
+ crit_exts_c_ crit_exts;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// DL-DCCH-MessageType-NB ::= CHOICE
struct dl_dcch_msg_type_nb_c {
struct c1_c_ {
@@ -6530,7 +8389,7 @@ struct dl_dcch_msg_type_nb_c {
security_mode_cmd_r13,
ue_cap_enquiry_r13,
rrc_conn_resume_r13,
- spare2,
+ ue_info_request_r16,
spare1,
nulltype
} value;
@@ -6580,6 +8439,11 @@ struct dl_dcch_msg_type_nb_c {
assert_choice_type(types::rrc_conn_resume_r13, type_, "c1");
return c.get<rrc_conn_resume_nb_s>();
}
+ ue_info_request_nb_r16_s& ue_info_request_r16()
+ {
+ assert_choice_type(types::ue_info_request_r16, type_, "c1");
+ return c.get<ue_info_request_nb_r16_s>();
+ }
const dl_info_transfer_nb_s& dl_info_transfer_r13() const
{
assert_choice_type(types::dl_info_transfer_r13, type_, "c1");
@@ -6610,14 +8474,19 @@ struct dl_dcch_msg_type_nb_c {
assert_choice_type(types::rrc_conn_resume_r13, type_, "c1");
return c.get<rrc_conn_resume_nb_s>();
}
- dl_info_transfer_nb_s& set_dl_info_transfer_r13();
- rrc_conn_recfg_nb_s& set_rrc_conn_recfg_r13();
- rrc_conn_release_nb_s& set_rrc_conn_release_r13();
- security_mode_cmd_s& set_security_mode_cmd_r13();
- ue_cap_enquiry_nb_s& set_ue_cap_enquiry_r13();
- rrc_conn_resume_nb_s& set_rrc_conn_resume_r13();
- void set_spare2();
- void set_spare1();
+ const ue_info_request_nb_r16_s& ue_info_request_r16() const
+ {
+ assert_choice_type(types::ue_info_request_r16, type_, "c1");
+ return c.get<ue_info_request_nb_r16_s>();
+ }
+ dl_info_transfer_nb_s& set_dl_info_transfer_r13();
+ rrc_conn_recfg_nb_s& set_rrc_conn_recfg_r13();
+ rrc_conn_release_nb_s& set_rrc_conn_release_r13();
+ security_mode_cmd_s& set_security_mode_cmd_r13();
+ ue_cap_enquiry_nb_s& set_ue_cap_enquiry_r13();
+ rrc_conn_resume_nb_s& set_rrc_conn_resume_r13();
+ ue_info_request_nb_r16_s& set_ue_info_request_r16();
+ void set_spare1();
private:
types type_;
@@ -6626,7 +8495,8 @@ struct dl_dcch_msg_type_nb_c {
rrc_conn_release_nb_s,
rrc_conn_resume_nb_s,
security_mode_cmd_s,
- ue_cap_enquiry_nb_s>
+ ue_cap_enquiry_nb_s,
+ ue_info_request_nb_r16_s>
c;
void destroy_();
@@ -6692,7 +8562,7 @@ using supported_band_list_nb_r13_l = dyn_array<supported_band_nb_r13_s>;
// AccessStratumRelease-NB-r13 ::= ENUMERATED
struct access_stratum_release_nb_r13_opts {
- enum options { rel13, rel14, rel15, spare5, spare4, spare3, spare2, spare1, /*...*/ nulltype } value;
+ enum options { rel13, rel14, rel15, rel16, rel17, spare3, spare2, spare1, /*...*/ nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
@@ -6976,10 +8846,61 @@ struct ho_prep_info_nb_s {
void to_json(json_writer& j) const;
};
-// MeasResultServCell-NB-r14 ::= SEQUENCE
-struct meas_result_serv_cell_nb_r14_s {
- uint8_t nrsrp_result_r14 = 0;
- int8_t nrsrq_result_r14 = -30;
+// InitialUE-Identity-5GC-NB-r16 ::= CHOICE
+struct init_ue_id_minus5_gc_nb_r16_c {
+ struct types_opts {
+ enum options { ng_minus5_g_s_tmsi_r16, random_value, nulltype } value;
+ typedef int8_t number_type;
+
+ const char* to_string() const;
+ int8_t to_number() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ init_ue_id_minus5_gc_nb_r16_c() = default;
+ init_ue_id_minus5_gc_nb_r16_c(const init_ue_id_minus5_gc_nb_r16_c& other);
+ init_ue_id_minus5_gc_nb_r16_c& operator=(const init_ue_id_minus5_gc_nb_r16_c& other);
+ ~init_ue_id_minus5_gc_nb_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<48>& ng_minus5_g_s_tmsi_r16()
+ {
+ assert_choice_type(types::ng_minus5_g_s_tmsi_r16, type_, "InitialUE-Identity-5GC-NB-r16");
+ return c.get<fixed_bitstring<48> >();
+ }
+ fixed_bitstring<48>& random_value()
+ {
+ assert_choice_type(types::random_value, type_, "InitialUE-Identity-5GC-NB-r16");
+ return c.get<fixed_bitstring<48> >();
+ }
+ const fixed_bitstring<48>& ng_minus5_g_s_tmsi_r16() const
+ {
+ assert_choice_type(types::ng_minus5_g_s_tmsi_r16, type_, "InitialUE-Identity-5GC-NB-r16");
+ return c.get<fixed_bitstring<48> >();
+ }
+ const fixed_bitstring<48>& random_value() const
+ {
+ assert_choice_type(types::random_value, type_, "InitialUE-Identity-5GC-NB-r16");
+ return c.get<fixed_bitstring<48> >();
+ }
+ fixed_bitstring<48>& set_ng_minus5_g_s_tmsi_r16();
+ fixed_bitstring<48>& set_random_value();
+
+private:
+ types type_;
+ choice_buffer_t<fixed_bitstring<48> > c;
+
+ void destroy_();
+};
+
+// PagingRecord-NB-v1610 ::= SEQUENCE
+struct paging_record_nb_v1610_s {
+ bool mt_edt_r16_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -6999,6 +8920,21 @@ struct paging_record_nb_r13_s {
void to_json(json_writer& j) const;
};
+// PagingRecordList-NB-v1610 ::= SEQUENCE (SIZE (1..16)) OF PagingRecord-NB-v1610
+using paging_record_list_nb_v1610_l = dyn_array<paging_record_nb_v1610_s>;
+
+// Paging-NB-v1610-IEs ::= SEQUENCE
+struct paging_nb_v1610_ies_s {
+ bool paging_record_list_v1610_present = false;
+ bool non_crit_ext_present = false;
+ paging_record_list_nb_v1610_l paging_record_list_v1610;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// PagingRecordList-NB-r13 ::= SEQUENCE (SIZE (1..16)) OF PagingRecord-NB-r13
using paging_record_list_nb_r13_l = dyn_array<paging_record_nb_r13_s>;
@@ -7009,6 +8945,7 @@ struct paging_nb_s {
bool sys_info_mod_e_drx_r13_present = false;
bool non_crit_ext_present = false;
paging_record_list_nb_r13_l paging_record_list_r13;
+ paging_nb_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -7095,6 +9032,182 @@ struct pci_arfcn_nb_r14_s {
void to_json(json_writer& j) const;
};
+// PUR-ConfigRequest-NB-r16 ::= CHOICE
+struct pur_cfg_request_nb_r16_c {
+ struct pur_setup_request_s_ {
+ struct requested_num_occasions_r16_opts {
+ enum options { one, infinite, nulltype } value;
+ typedef uint8_t number_type;
+
+ const char* to_string() const;
+ uint8_t to_number() const;
+ };
+ typedef enumerated<requested_num_occasions_r16_opts> requested_num_occasions_r16_e_;
+ struct requested_tbs_r16_opts {
+ enum options {
+ b328,
+ b376,
+ b424,
+ b472,
+ b504,
+ b552,
+ b584,
+ b616,
+ b680,
+ b744,
+ b776,
+ b808,
+ b872,
+ b904,
+ b936,
+ b968,
+ b1000,
+ b1032,
+ b1096,
+ b1128,
+ b1192,
+ b1224,
+ b1256,
+ b1352,
+ b1384,
+ b1544,
+ b1608,
+ b1736,
+ b1800,
+ b2024,
+ b2280,
+ b2536,
+ nulltype
+ } value;
+ typedef uint16_t number_type;
+
+ const char* to_string() const;
+ uint16_t to_number() const;
+ };
+ typedef enumerated<requested_tbs_r16_opts> requested_tbs_r16_e_;
+
+ // member variables
+ bool rrc_ack_r16_present = false;
+ requested_num_occasions_r16_e_ requested_num_occasions_r16;
+ pur_periodicity_and_offset_nb_r16_c requested_periodicity_and_offset_r16;
+ requested_tbs_r16_e_ requested_tbs_r16;
+ };
+ struct types_opts {
+ enum options { pur_release_request, pur_setup_request, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ pur_cfg_request_nb_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
+ pur_setup_request_s_& pur_setup_request()
+ {
+ assert_choice_type(types::pur_setup_request, type_, "PUR-ConfigRequest-NB-r16");
+ return c;
+ }
+ const pur_setup_request_s_& pur_setup_request() const
+ {
+ assert_choice_type(types::pur_setup_request, type_, "PUR-ConfigRequest-NB-r16");
+ return c;
+ }
+ void set_pur_release_request();
+ pur_setup_request_s_& set_pur_setup_request();
+
+private:
+ types type_;
+ pur_setup_request_s_ c;
+};
+
+// PURConfigurationRequest-NB-r16-IEs ::= SEQUENCE
+struct pur_cfg_request_nb_r16_ies_s {
+ bool pur_cfg_request_r16_present = false;
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ pur_cfg_request_nb_r16_c pur_cfg_request_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;
+};
+
+// PURConfigurationRequest-NB-r16 ::= SEQUENCE
+struct pur_cfg_request_nb_r16_s {
+ struct crit_exts_c_ {
+ struct types_opts {
+ enum options { pur_cfg_request_r16, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ crit_exts_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
+ pur_cfg_request_nb_r16_ies_s& pur_cfg_request_r16()
+ {
+ assert_choice_type(types::pur_cfg_request_r16, type_, "criticalExtensions");
+ return c;
+ }
+ const pur_cfg_request_nb_r16_ies_s& pur_cfg_request_r16() const
+ {
+ assert_choice_type(types::pur_cfg_request_r16, type_, "criticalExtensions");
+ return c;
+ }
+ pur_cfg_request_nb_r16_ies_s& set_pur_cfg_request_r16();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ pur_cfg_request_nb_r16_ies_s c;
+ };
+
+ // member variables
+ crit_exts_c_ crit_exts;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// SupportedBand-NB-v1710 ::= SEQUENCE
+struct supported_band_nb_v1710_s {
+ bool npusch_minus16_qam_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;
+};
+
+// SupportedBandList-NB-v1710 ::= SEQUENCE (SIZE (1..64)) OF SupportedBand-NB-v1710
+using supported_band_list_nb_v1710_l = dyn_array<supported_band_nb_v1710_s>;
+
+// RF-Parameters-NB-v1710 ::= SEQUENCE
+struct rf_params_nb_v1710_s {
+ bool supported_band_list_v1710_present = false;
+ supported_band_list_nb_v1710_l supported_band_list_v1710;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// RRCConnectionReconfigurationComplete-NB-r13-IEs ::= SEQUENCE
struct rrc_conn_recfg_complete_nb_r13_ies_s {
bool late_non_crit_ext_present = false;
@@ -7153,11 +9266,37 @@ struct rrc_conn_recfg_complete_nb_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionReestablishmentComplete-NB-v1710-IEs ::= SEQUENCE
+struct rrc_conn_reest_complete_nb_v1710_ies_s {
+ bool gnss_validity_dur_r17_present = false;
+ bool non_crit_ext_present = false;
+ gnss_validity_dur_r17_e gnss_validity_dur_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// RRCConnectionReestablishmentComplete-NB-v1610-IEs ::= SEQUENCE
+struct rrc_conn_reest_complete_nb_v1610_ies_s {
+ bool rlf_info_available_r16_present = false;
+ bool anr_info_available_r16_present = false;
+ bool non_crit_ext_present = false;
+ rrc_conn_reest_complete_nb_v1710_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;
+};
+
// RRCConnectionReestablishmentComplete-NB-v1470-IEs ::= SEQUENCE
struct rrc_conn_reest_complete_nb_v1470_ies_s {
- bool meas_result_serv_cell_r14_present = false;
- bool non_crit_ext_present = false;
- meas_result_serv_cell_nb_r14_s meas_result_serv_cell_r14;
+ bool meas_result_serv_cell_r14_present = false;
+ bool non_crit_ext_present = false;
+ meas_result_serv_cell_nb_r14_s meas_result_serv_cell_r14;
+ rrc_conn_reest_complete_nb_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -7224,6 +9363,49 @@ struct rrc_conn_reest_complete_nb_s {
void to_json(json_writer& j) const;
};
+// CQI-NPDCCH-Short-NB-r14 ::= ENUMERATED
+struct cqi_npdcch_short_nb_r14_opts {
+ enum options { no_meass, candidate_rep_minus1, candidate_rep_minus2, candidate_rep_minus3, nulltype } value;
+ typedef int8_t number_type;
+
+ const char* to_string() const;
+ int8_t to_number() const;
+};
+typedef enumerated<cqi_npdcch_short_nb_r14_opts> cqi_npdcch_short_nb_r14_e;
+
+// ReestabUE-Identity-CP-5GC-NB-r16 ::= SEQUENCE
+struct reestab_ue_id_cp_minus5_gc_nb_r16_s {
+ fixed_bitstring<40> truncated5_g_s_tmsi_r16;
+ fixed_bitstring<16> ul_nas_mac_r16;
+ fixed_bitstring<5> ul_nas_count_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// ReestablishmentCause-NB-r13 ::= ENUMERATED
+struct reest_cause_nb_r13_opts {
+ enum options { recfg_fail, other_fail, spare2, spare1, nulltype } value;
+
+ const char* to_string() const;
+};
+typedef enumerated<reest_cause_nb_r13_opts> reest_cause_nb_r13_e;
+
+// RRCConnectionReestablishmentRequest-5GC-NB-r16-IEs ::= SEQUENCE
+struct rrc_conn_reest_request_minus5_gc_nb_r16_ies_s {
+ reestab_ue_id_cp_minus5_gc_nb_r16_s ue_id_r16;
+ reest_cause_nb_r13_e reest_cause_r16;
+ cqi_npdcch_short_nb_r14_e cqi_npdcch_r16;
+ fixed_bitstring<1> spare;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// CQI-NPDCCH-NB-r14 ::= ENUMERATED
struct cqi_npdcch_nb_r14_opts {
enum options {
@@ -7247,16 +9429,6 @@ struct cqi_npdcch_nb_r14_opts {
};
typedef enumerated<cqi_npdcch_nb_r14_opts> cqi_npdcch_nb_r14_e;
-// CQI-NPDCCH-Short-NB-r14 ::= ENUMERATED
-struct cqi_npdcch_short_nb_r14_opts {
- enum options { no_meass, candidate_rep_minus1, candidate_rep_minus2, candidate_rep_minus3, nulltype } value;
- typedef int8_t number_type;
-
- const char* to_string() const;
- int8_t to_number() const;
-};
-typedef enumerated<cqi_npdcch_short_nb_r14_opts> cqi_npdcch_short_nb_r14_e;
-
// ReestabUE-Identity-CP-NB-r14 ::= SEQUENCE
struct reestab_ue_id_cp_nb_r14_s {
s_tmsi_s s_tmsi_r14;
@@ -7269,14 +9441,6 @@ struct reestab_ue_id_cp_nb_r14_s {
void to_json(json_writer& j) const;
};
-// ReestablishmentCause-NB-r13 ::= ENUMERATED
-struct reest_cause_nb_r13_opts {
- enum options { recfg_fail, other_fail, spare2, spare1, nulltype } value;
-
- const char* to_string() const;
-};
-typedef enumerated<reest_cause_nb_r13_opts> reest_cause_nb_r13_e;
-
// RRCConnectionReestablishmentRequest-NB-r13-IEs ::= SEQUENCE
struct rrc_conn_reest_request_nb_r13_ies_s {
reestab_ue_id_s ue_id_r13;
@@ -7309,8 +9473,41 @@ struct rrc_conn_reest_request_nb_r14_ies_s {
struct rrc_conn_reest_request_nb_s {
struct crit_exts_c_ {
struct later_c_ {
+ struct later_c__ {
+ struct types_opts {
+ enum options { rrc_conn_reest_request_r16, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ later_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_conn_reest_request_minus5_gc_nb_r16_ies_s& rrc_conn_reest_request_r16()
+ {
+ assert_choice_type(types::rrc_conn_reest_request_r16, type_, "later");
+ return c;
+ }
+ const rrc_conn_reest_request_minus5_gc_nb_r16_ies_s& rrc_conn_reest_request_r16() const
+ {
+ assert_choice_type(types::rrc_conn_reest_request_r16, type_, "later");
+ return c;
+ }
+ rrc_conn_reest_request_minus5_gc_nb_r16_ies_s& set_rrc_conn_reest_request_r16();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ rrc_conn_reest_request_minus5_gc_nb_r16_ies_s c;
+ };
struct types_opts {
- enum options { rrc_conn_reest_request_r14, crit_exts_future, nulltype } value;
+ enum options { rrc_conn_reest_request_r14, later, nulltype } value;
const char* to_string() const;
};
@@ -7318,6 +9515,9 @@ struct rrc_conn_reest_request_nb_s {
// choice methods
later_c_() = default;
+ later_c_(const later_c_& other);
+ later_c_& operator=(const later_c_& other);
+ ~later_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
@@ -7327,19 +9527,31 @@ struct rrc_conn_reest_request_nb_s {
rrc_conn_reest_request_nb_r14_ies_s& rrc_conn_reest_request_r14()
{
assert_choice_type(types::rrc_conn_reest_request_r14, type_, "later");
- return c;
+ return c.get<rrc_conn_reest_request_nb_r14_ies_s>();
+ }
+ later_c__& later()
+ {
+ assert_choice_type(types::later, type_, "later");
+ return c.get<later_c__>();
}
const rrc_conn_reest_request_nb_r14_ies_s& rrc_conn_reest_request_r14() const
{
assert_choice_type(types::rrc_conn_reest_request_r14, type_, "later");
- return c;
+ return c.get<rrc_conn_reest_request_nb_r14_ies_s>();
+ }
+ const later_c__& later() const
+ {
+ assert_choice_type(types::later, type_, "later");
+ return c.get<later_c__>();
}
rrc_conn_reest_request_nb_r14_ies_s& set_rrc_conn_reest_request_r14();
- void set_crit_exts_future();
+ later_c__& set_later();
private:
- types type_;
- rrc_conn_reest_request_nb_r14_ies_s c;
+ types type_;
+ choice_buffer_t<later_c__, rrc_conn_reest_request_nb_r14_ies_s> c;
+
+ void destroy_();
};
struct types_opts {
enum options { rrc_conn_reest_request_r13, later, nulltype } value;
@@ -7398,6 +9610,27 @@ struct rrc_conn_reest_request_nb_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionRequest-5GC-NB-r16-IEs ::= SEQUENCE
+struct rrc_conn_request_minus5_gc_nb_r16_ies_s {
+ struct establishment_cause_r16_opts {
+ enum options { mt_access, mo_sig, mo_data, mo_exception_data, spare4, spare3, spare2, spare1, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<establishment_cause_r16_opts> establishment_cause_r16_e_;
+
+ // member variables
+ init_ue_id_minus5_gc_nb_r16_c ue_id_r16;
+ establishment_cause_r16_e_ establishment_cause_r16;
+ cqi_npdcch_nb_r14_e cqi_npdcch_r16;
+ fixed_bitstring<11> spare;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// EstablishmentCause-NB-r13 ::= ENUMERATED
struct establishment_cause_nb_r13_opts {
enum options {
@@ -7406,7 +9639,7 @@ struct establishment_cause_nb_r13_opts {
mo_data,
mo_exception_data,
delay_tolerant_access_v1330,
- spare3,
+ mt_edt_v1610,
spare2,
spare1,
nulltype
@@ -7435,8 +9668,41 @@ struct rrc_conn_request_nb_r13_ies_s {
// RRCConnectionRequest-NB ::= SEQUENCE
struct rrc_conn_request_nb_s {
struct crit_exts_c_ {
+ struct later_c_ {
+ struct types_opts {
+ enum options { rrc_conn_request_r16, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ later_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_conn_request_minus5_gc_nb_r16_ies_s& rrc_conn_request_r16()
+ {
+ assert_choice_type(types::rrc_conn_request_r16, type_, "later");
+ return c;
+ }
+ const rrc_conn_request_minus5_gc_nb_r16_ies_s& rrc_conn_request_r16() const
+ {
+ assert_choice_type(types::rrc_conn_request_r16, type_, "later");
+ return c;
+ }
+ rrc_conn_request_minus5_gc_nb_r16_ies_s& set_rrc_conn_request_r16();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ rrc_conn_request_minus5_gc_nb_r16_ies_s c;
+ };
struct types_opts {
- enum options { rrc_conn_request_r13, crit_exts_future, nulltype } value;
+ enum options { rrc_conn_request_r13, later, nulltype } value;
const char* to_string() const;
};
@@ -7444,6 +9710,9 @@ struct rrc_conn_request_nb_s {
// choice methods
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);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
@@ -7453,19 +9722,31 @@ struct rrc_conn_request_nb_s {
rrc_conn_request_nb_r13_ies_s& rrc_conn_request_r13()
{
assert_choice_type(types::rrc_conn_request_r13, type_, "criticalExtensions");
- return c;
+ return c.get<rrc_conn_request_nb_r13_ies_s>();
+ }
+ later_c_& later()
+ {
+ assert_choice_type(types::later, type_, "criticalExtensions");
+ return c.get<later_c_>();
}
const rrc_conn_request_nb_r13_ies_s& rrc_conn_request_r13() const
{
assert_choice_type(types::rrc_conn_request_r13, type_, "criticalExtensions");
- return c;
+ return c.get<rrc_conn_request_nb_r13_ies_s>();
+ }
+ const later_c_& later() const
+ {
+ assert_choice_type(types::later, type_, "criticalExtensions");
+ return c.get<later_c_>();
}
rrc_conn_request_nb_r13_ies_s& set_rrc_conn_request_r13();
- void set_crit_exts_future();
+ later_c_& set_later();
private:
- types type_;
- rrc_conn_request_nb_r13_ies_s c;
+ types type_;
+ choice_buffer_t<later_c_, rrc_conn_request_nb_r13_ies_s> c;
+
+ void destroy_();
};
// member variables
@@ -7477,11 +9758,37 @@ struct rrc_conn_request_nb_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionResumeComplete-NB-v1710-IEs ::= SEQUENCE
+struct rrc_conn_resume_complete_nb_v1710_ies_s {
+ bool gnss_validity_dur_r17_present = false;
+ bool non_crit_ext_present = false;
+ gnss_validity_dur_r17_e gnss_validity_dur_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// RRCConnectionResumeComplete-NB-v1610-IEs ::= SEQUENCE
+struct rrc_conn_resume_complete_nb_v1610_ies_s {
+ bool rlf_info_available_r16_present = false;
+ bool anr_info_available_r16_present = false;
+ bool non_crit_ext_present = false;
+ rrc_conn_resume_complete_nb_v1710_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;
+};
+
// RRCConnectionResumeComplete-NB-v1470-IEs ::= SEQUENCE
struct rrc_conn_resume_complete_nb_v1470_ies_s {
- bool meas_result_serv_cell_r14_present = false;
- bool non_crit_ext_present = false;
- meas_result_serv_cell_nb_r14_s meas_result_serv_cell_r14;
+ bool meas_result_serv_cell_r14_present = false;
+ bool non_crit_ext_present = false;
+ meas_result_serv_cell_nb_r14_s meas_result_serv_cell_r14;
+ rrc_conn_resume_complete_nb_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -7552,6 +9859,20 @@ struct rrc_conn_resume_complete_nb_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionResumeRequest-5GC-NB-r16-IEs ::= SEQUENCE
+struct rrc_conn_resume_request_minus5_gc_nb_r16_ies_s {
+ fixed_bitstring<40> resume_id_r16;
+ fixed_bitstring<16> short_resume_mac_i_r16;
+ establishment_cause_nb_r13_e resume_cause_r16;
+ cqi_npdcch_nb_r14_e cqi_npdcch_r16;
+ fixed_bitstring<4> spare;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// RRCConnectionResumeRequest-NB-r13-IEs ::= SEQUENCE
struct rrc_conn_resume_request_nb_r13_ies_s {
fixed_bitstring<40> resume_id_r13;
@@ -7559,7 +9880,8 @@ struct rrc_conn_resume_request_nb_r13_ies_s {
establishment_cause_nb_r13_e resume_cause_r13;
bool early_contention_resolution_r14 = false;
cqi_npdcch_nb_r14_e cqi_npdcch_r14;
- fixed_bitstring<4> spare;
+ bool anr_info_available_r16 = false;
+ fixed_bitstring<3> spare;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -7570,8 +9892,41 @@ struct rrc_conn_resume_request_nb_r13_ies_s {
// RRCConnectionResumeRequest-NB ::= SEQUENCE
struct rrc_conn_resume_request_nb_s {
struct crit_exts_c_ {
+ struct later_c_ {
+ struct types_opts {
+ enum options { rrc_conn_resume_request_r16, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ later_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_conn_resume_request_minus5_gc_nb_r16_ies_s& rrc_conn_resume_request_r16()
+ {
+ assert_choice_type(types::rrc_conn_resume_request_r16, type_, "later");
+ return c;
+ }
+ const rrc_conn_resume_request_minus5_gc_nb_r16_ies_s& rrc_conn_resume_request_r16() const
+ {
+ assert_choice_type(types::rrc_conn_resume_request_r16, type_, "later");
+ return c;
+ }
+ rrc_conn_resume_request_minus5_gc_nb_r16_ies_s& set_rrc_conn_resume_request_r16();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ rrc_conn_resume_request_minus5_gc_nb_r16_ies_s c;
+ };
struct types_opts {
- enum options { rrc_conn_resume_request_r13, crit_exts_future, nulltype } value;
+ enum options { rrc_conn_resume_request_r13, later, nulltype } value;
const char* to_string() const;
};
@@ -7579,6 +9934,9 @@ struct rrc_conn_resume_request_nb_s {
// choice methods
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);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
@@ -7588,19 +9946,31 @@ struct rrc_conn_resume_request_nb_s {
rrc_conn_resume_request_nb_r13_ies_s& rrc_conn_resume_request_r13()
{
assert_choice_type(types::rrc_conn_resume_request_r13, type_, "criticalExtensions");
- return c;
+ return c.get<rrc_conn_resume_request_nb_r13_ies_s>();
+ }
+ later_c_& later()
+ {
+ assert_choice_type(types::later, type_, "criticalExtensions");
+ return c.get<later_c_>();
}
const rrc_conn_resume_request_nb_r13_ies_s& rrc_conn_resume_request_r13() const
{
assert_choice_type(types::rrc_conn_resume_request_r13, type_, "criticalExtensions");
- return c;
+ return c.get<rrc_conn_resume_request_nb_r13_ies_s>();
+ }
+ const later_c_& later() const
+ {
+ assert_choice_type(types::later, type_, "criticalExtensions");
+ return c.get<later_c_>();
}
rrc_conn_resume_request_nb_r13_ies_s& set_rrc_conn_resume_request_r13();
- void set_crit_exts_future();
+ later_c_& set_later();
private:
- types type_;
- rrc_conn_resume_request_nb_r13_ies_s c;
+ types type_;
+ choice_buffer_t<later_c_, rrc_conn_resume_request_nb_r13_ies_s> c;
+
+ void destroy_();
};
// member variables
@@ -7612,11 +9982,59 @@ struct rrc_conn_resume_request_nb_s {
void to_json(json_writer& j) const;
};
+// RRCConnectionSetupComplete-NB-v1710-IEs ::= SEQUENCE
+struct rrc_conn_setup_complete_nb_v1710_ies_s {
+ bool gnss_validity_dur_r17_present = false;
+ bool non_crit_ext_present = false;
+ gnss_validity_dur_r17_e gnss_validity_dur_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// RRCConnectionSetupComplete-NB-v1610-IEs ::= SEQUENCE
+struct rrc_conn_setup_complete_nb_v1610_ies_s {
+ struct guami_type_r16_opts {
+ enum options { native, mapped, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<guami_type_r16_opts> guami_type_r16_e_;
+ using s_nssai_list_r16_l_ = dyn_array<s_nssai_r15_c>;
+
+ // member variables
+ bool ng_minus5_g_s_tmsi_r16_present = false;
+ bool registered_amf_r16_present = false;
+ bool gummei_type_v1610_present = false;
+ bool guami_type_r16_present = false;
+ bool s_nssai_list_r16_present = false;
+ bool ng_u_data_transfer_r16_present = false;
+ bool up_cio_t_minus5_gs_optim_r16_present = false;
+ bool rlf_info_available_r16_present = false;
+ bool anr_info_available_r16_present = false;
+ bool pur_cfg_id_r16_present = false;
+ bool non_crit_ext_present = false;
+ fixed_bitstring<48> ng_minus5_g_s_tmsi_r16;
+ registered_amf_r15_s registered_amf_r16;
+ guami_type_r16_e_ guami_type_r16;
+ s_nssai_list_r16_l_ s_nssai_list_r16;
+ fixed_bitstring<20> pur_cfg_id_r16;
+ rrc_conn_setup_complete_nb_v1710_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;
+};
+
// RRCConnectionSetupComplete-NB-v1470-IEs ::= SEQUENCE
struct rrc_conn_setup_complete_nb_v1470_ies_s {
- bool meas_result_serv_cell_r14_present = false;
- bool non_crit_ext_present = false;
- meas_result_serv_cell_nb_r14_s meas_result_serv_cell_r14;
+ bool meas_result_serv_cell_r14_present = false;
+ bool non_crit_ext_present = false;
+ meas_result_serv_cell_nb_r14_s meas_result_serv_cell_r14;
+ rrc_conn_setup_complete_nb_v1610_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -7705,6 +10123,31 @@ struct rrc_conn_setup_complete_nb_s {
void to_json(json_writer& j) const;
};
+// RRCEarlyDataRequest-5GC-NB-r16-IEs ::= SEQUENCE
+struct rrc_early_data_request_minus5_gc_nb_r16_ies_s {
+ struct establishment_cause_r16_opts {
+ enum options { mo_data, mo_exception_data, mt_access, spare1, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<establishment_cause_r16_opts> establishment_cause_r16_e_;
+
+ // member variables
+ bool cqi_npdcch_r16_present = false;
+ 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;
+ cqi_npdcch_nb_r14_e cqi_npdcch_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-NB-v1590-IEs ::= SEQUENCE
struct rrc_early_data_request_nb_v1590_ies_s {
bool late_non_crit_ext_present = false;
@@ -7720,7 +10163,7 @@ struct rrc_early_data_request_nb_v1590_ies_s {
// RRCEarlyDataRequest-NB-r15-IEs ::= SEQUENCE
struct rrc_early_data_request_nb_r15_ies_s {
struct establishment_cause_r15_opts {
- enum options { mo_data, mo_exception_data, delay_tolerant_access, spare1, nulltype } value;
+ enum options { mo_data, mo_exception_data, delay_tolerant_access, mt_access_v1610, nulltype } value;
const char* to_string() const;
};
@@ -7744,8 +10187,41 @@ struct rrc_early_data_request_nb_r15_ies_s {
// RRCEarlyDataRequest-NB-r15 ::= SEQUENCE
struct rrc_early_data_request_nb_r15_s {
struct crit_exts_c_ {
+ struct later_c_ {
+ struct types_opts {
+ enum options { rrc_early_data_request_r16, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ later_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_nb_r16_ies_s& rrc_early_data_request_r16()
+ {
+ assert_choice_type(types::rrc_early_data_request_r16, type_, "later");
+ return c;
+ }
+ const rrc_early_data_request_minus5_gc_nb_r16_ies_s& rrc_early_data_request_r16() const
+ {
+ assert_choice_type(types::rrc_early_data_request_r16, type_, "later");
+ return c;
+ }
+ rrc_early_data_request_minus5_gc_nb_r16_ies_s& set_rrc_early_data_request_r16();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ rrc_early_data_request_minus5_gc_nb_r16_ies_s c;
+ };
struct types_opts {
- enum options { rrc_early_data_request_r15, crit_exts_future, nulltype } value;
+ enum options { rrc_early_data_request_r15, later, nulltype } value;
const char* to_string() const;
};
@@ -7753,6 +10229,9 @@ struct rrc_early_data_request_nb_r15_s {
// choice methods
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);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
@@ -7762,19 +10241,31 @@ struct rrc_early_data_request_nb_r15_s {
rrc_early_data_request_nb_r15_ies_s& rrc_early_data_request_r15()
{
assert_choice_type(types::rrc_early_data_request_r15, type_, "criticalExtensions");
- return c;
+ return c.get<rrc_early_data_request_nb_r15_ies_s>();
+ }
+ later_c_& later()
+ {
+ assert_choice_type(types::later, type_, "criticalExtensions");
+ return c.get<later_c_>();
}
const rrc_early_data_request_nb_r15_ies_s& rrc_early_data_request_r15() const
{
assert_choice_type(types::rrc_early_data_request_r15, type_, "criticalExtensions");
- return c;
+ return c.get<rrc_early_data_request_nb_r15_ies_s>();
+ }
+ const later_c_& later() const
+ {
+ assert_choice_type(types::later, type_, "criticalExtensions");
+ return c.get<later_c_>();
}
rrc_early_data_request_nb_r15_ies_s& set_rrc_early_data_request_r15();
- void set_crit_exts_future();
+ later_c_& set_later();
private:
- types type_;
- rrc_early_data_request_nb_r15_ies_s c;
+ types type_;
+ choice_buffer_t<later_c_, rrc_early_data_request_nb_r15_ies_s> c;
+
+ void destroy_();
};
// member variables
@@ -8180,6 +10671,29 @@ using sc_mtch_info_list_nb_r14_l = dyn_array<sc_mtch_info_nb_r14_s>;
// SCPTM-NeighbourCellList-NB-r14 ::= SEQUENCE (SIZE (1..8)) OF PCI-ARFCN-NB-r14
using scptm_neighbour_cell_list_nb_r14_l = dyn_array<pci_arfcn_nb_r14_s>;
+// SCPTMConfiguration-NB-v1610 ::= SEQUENCE
+struct scptm_cfg_nb_v1610_s {
+ struct multi_tb_gap_r16_opts {
+ enum options { sf16, sf32, sf64, sf128, 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_nb_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-NB-r14 ::= SEQUENCE
struct scptm_cfg_nb_r14_s {
bool scptm_neighbour_cell_list_r14_present = false;
@@ -8188,6 +10702,7 @@ struct scptm_cfg_nb_r14_s {
sc_mtch_info_list_nb_r14_l sc_mtch_info_list_r14;
scptm_neighbour_cell_list_nb_r14_l scptm_neighbour_cell_list_r14;
dyn_octstring late_non_crit_ext;
+ scptm_cfg_nb_v1610_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -8306,6 +10821,234 @@ struct tdd_ue_cap_nb_r15_s {
void to_json(json_writer& j) const;
};
+// PhyLayerParameters-NB-v1700 ::= SEQUENCE
+struct phy_layer_params_nb_v1700_s {
+ bool npdsch_minus16_qam_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;
+};
+
+// TDD-UE-Capability-NB-v1710 ::= SEQUENCE
+struct tdd_ue_cap_nb_v1710_s {
+ bool phy_layer_params_v1710_present = false;
+ phy_layer_params_nb_v1700_s phy_layer_params_v1710;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// NTN-Parameters-NB-v1720 ::= SEQUENCE
+struct ntn_params_nb_v1720_s {
+ struct ntn_segmented_precompensation_gaps_r17_opts {
+ enum options { sym1, sl1, sl2, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<ntn_segmented_precompensation_gaps_r17_opts> ntn_segmented_precompensation_gaps_r17_e_;
+
+ // member variables
+ bool ntn_segmented_precompensation_gaps_r17_present = false;
+ ntn_segmented_precompensation_gaps_r17_e_ ntn_segmented_precompensation_gaps_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// MeasParameters-NB-v1710 ::= SEQUENCE
+struct meas_params_nb_v1710_s {
+ bool conn_mode_meas_intra_freq_r17_present = false;
+ bool conn_mode_meas_inter_freq_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;
+};
+
+// UE-Capability-NB-v1720-IEs ::= SEQUENCE
+struct ue_cap_nb_v1720_ies_s {
+ bool non_crit_ext_present = false;
+ ntn_params_nb_v1720_s ntn_params_v1720;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// NTN-Parameters-NB-r17 ::= SEQUENCE
+struct ntn_params_nb_r17_s {
+ struct ntn_scenario_support_r17_opts {
+ enum options { ngso, gso, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<ntn_scenario_support_r17_opts> ntn_scenario_support_r17_e_;
+
+ // member variables
+ bool ntn_connect_epc_r17_present = false;
+ bool ntn_ta_report_r17_present = false;
+ bool ntn_pur_timer_delay_r17_present = false;
+ bool ntn_offset_timing_enh_r17_present = false;
+ bool ntn_scenario_support_r17_present = false;
+ ntn_scenario_support_r17_e_ ntn_scenario_support_r17;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// UE-Capability-NB-v1710-IEs ::= SEQUENCE
+struct ue_cap_nb_v1710_ies_s {
+ bool meas_params_v1710_present = false;
+ bool non_crit_ext_present = false;
+ meas_params_nb_v1710_s meas_params_v1710;
+ rf_params_nb_v1710_s rf_params_v1710;
+ tdd_ue_cap_nb_v1710_s tdd_ue_cap_v1710;
+ ue_cap_nb_v1720_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;
+};
+
+// UE-Capability-NB-v1700-IEs ::= SEQUENCE
+struct ue_cap_nb_v1700_ies_s {
+ bool coverage_based_paging_r17_present = false;
+ bool ntn_params_r17_present = false;
+ bool non_crit_ext_present = false;
+ phy_layer_params_nb_v1700_s phy_layer_params_v1700;
+ ntn_params_nb_r17_s ntn_params_r17;
+ ue_cap_nb_v1710_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;
+};
+
+// MAC-Parameters-NB-v1610 ::= SEQUENCE
+struct mac_params_nb_v1610_s {
+ bool rai_support_enh_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;
+};
+
+// MeasParameters-NB-r16 ::= SEQUENCE
+struct meas_params_nb_r16_s {
+ bool dl_ch_quality_report_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;
+};
+
+// PUR-Parameters-NB-r16 ::= SEQUENCE
+struct pur_params_nb_r16_s {
+ bool pur_cp_epc_r16_present = false;
+ bool pur_cp_minus5_gc_r16_present = false;
+ bool pur_up_epc_r16_present = false;
+ bool pur_up_minus5_gc_r16_present = false;
+ bool pur_nrsrp_validation_r16_present = false;
+ bool pur_cp_l1_ack_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;
+};
+
+// PhyLayerParameters-NB-v1610 ::= SEQUENCE
+struct phy_layer_params_nb_v1610_s {
+ bool npdsch_multi_tb_r16_present = false;
+ bool npdsch_multi_tb_interleaving_r16_present = false;
+ bool npusch_multi_tb_r16_present = false;
+ bool npusch_multi_tb_interleaving_r16_present = false;
+ bool multi_tb_harq_ack_bundling_r16_present = false;
+ bool slot_symbol_res_resv_dl_r16_present = false;
+ bool slot_symbol_res_resv_ul_r16_present = false;
+ bool sf_res_resv_dl_r16_present = false;
+ bool sf_res_resv_ul_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;
+};
+
+// SON-Parameters-NB-r16 ::= SEQUENCE
+struct son_params_nb_r16_s {
+ bool anr_report_r16_present = false;
+ bool rach_report_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;
+};
+
+// TDD-UE-Capability-NB-v1610 ::= SEQUENCE
+struct tdd_ue_cap_nb_v1610_s {
+ bool slot_symbol_res_resv_dl_r16_present = false;
+ bool slot_symbol_res_resv_ul_r16_present = false;
+ bool sf_res_resv_dl_r16_present = false;
+ bool sf_res_resv_ul_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;
+};
+
+// UE-Capability-NB-v16x0-IEs ::= SEQUENCE
+struct ue_cap_nb_v16x0_ies_s {
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring late_non_crit_ext;
+ ue_cap_nb_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;
+};
+
+// UE-Capability-NB-v1610-IEs ::= SEQUENCE
+struct ue_cap_nb_v1610_ies_s {
+ bool early_security_reactivation_r16_present = false;
+ bool early_data_up_minus5_gc_r16_present = false;
+ bool pur_params_r16_present = false;
+ bool phy_layer_params_v1610_present = false;
+ bool son_params_r16_present = false;
+ bool tdd_ue_cap_v1610_present = false;
+ bool non_crit_ext_present = false;
+ pur_params_nb_r16_s pur_params_r16;
+ mac_params_nb_v1610_s mac_params_v1610;
+ phy_layer_params_nb_v1610_s phy_layer_params_v1610;
+ son_params_nb_r16_s son_params_r16;
+ meas_params_nb_r16_s meas_params_r16;
+ tdd_ue_cap_nb_v1610_s tdd_ue_cap_v1610;
+ ue_cap_nb_v16x0_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;
+};
+
// MAC-Parameters-NB-v1530 ::= SEQUENCE
struct mac_params_nb_v1530_s {
bool sr_sps_bsr_r15_present = false;
@@ -8326,6 +11069,19 @@ struct rlc_params_nb_r15_s {
void to_json(json_writer& j) const;
};
+// UE-Capability-NB-v15x0-IEs ::= SEQUENCE
+struct ue_cap_nb_v15x0_ies_s {
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ dyn_octstring late_non_crit_ext;
+ ue_cap_nb_v1610_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;
+};
+
// UE-Capability-NB-v1530-IEs ::= SEQUENCE
struct ue_cap_nb_v1530_ies_s {
bool early_data_up_r15_present = false;
@@ -8336,6 +11092,7 @@ struct ue_cap_nb_v1530_ies_s {
mac_params_nb_v1530_s mac_params_v1530;
phy_layer_params_nb_v1530_s phy_layer_params_v1530;
tdd_ue_cap_nb_r15_s tdd_ue_cap_r15;
+ ue_cap_nb_v15x0_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -8440,6 +11197,10 @@ struct ue_radio_paging_info_nb_r13_s {
bool wake_up_signal_min_gap_e_drx_r15_present = false;
bool multi_carrier_paging_tdd_r15_present = false;
wake_up_signal_min_gap_e_drx_r15_e_ wake_up_signal_min_gap_e_drx_r15;
+ // group 2
+ bool ue_category_nb_r16_present = false;
+ bool group_wake_up_signal_r16_present = false;
+ bool group_wake_up_signal_alternation_r16_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -8519,11 +11280,101 @@ struct ue_cap_info_nb_s {
void to_json(json_writer& j) const;
};
+// RACH-Report-NB-r16 ::= SEQUENCE
+struct rach_report_nb_r16_s {
+ uint8_t nof_preambs_sent_r16 = 1;
+ bool contention_detected_r16 = false;
+ uint8_t init_nrsrp_level_r16 = 0;
+ bool edt_fallback_r16 = false;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// UEInformationResponse-NB-r16-IEs ::= SEQUENCE
+struct ue_info_resp_nb_r16_ies_s {
+ bool rach_report_r16_present = false;
+ bool rlf_report_r16_present = false;
+ bool anr_meas_report_r16_present = false;
+ bool late_non_crit_ext_present = false;
+ bool non_crit_ext_present = false;
+ rach_report_nb_r16_s rach_report_r16;
+ rlf_report_nb_r16_s rlf_report_r16;
+ anr_meas_report_nb_r16_s anr_meas_report_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;
+};
+
+// UEInformationResponse-NB-r16 ::= SEQUENCE
+struct ue_info_resp_nb_r16_s {
+ struct crit_exts_c_ {
+ struct types_opts {
+ enum options { ue_info_resp_r16, crit_exts_future, nulltype } value;
+
+ const char* to_string() const;
+ };
+ typedef enumerated<types_opts> types;
+
+ // choice methods
+ crit_exts_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
+ ue_info_resp_nb_r16_ies_s& ue_info_resp_r16()
+ {
+ assert_choice_type(types::ue_info_resp_r16, type_, "criticalExtensions");
+ return c;
+ }
+ const ue_info_resp_nb_r16_ies_s& ue_info_resp_r16() const
+ {
+ assert_choice_type(types::ue_info_resp_r16, type_, "criticalExtensions");
+ return c;
+ }
+ ue_info_resp_nb_r16_ies_s& set_ue_info_resp_r16();
+ void set_crit_exts_future();
+
+ private:
+ types type_;
+ ue_info_resp_nb_r16_ies_s c;
+ };
+
+ // member variables
+ uint8_t rrc_transaction_id = 0;
+ crit_exts_c_ crit_exts;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// UEPagingCoverageInformation-NB-v1700-IEs ::= SEQUENCE
+struct ue_paging_coverage_info_nb_v1700_ies_s {
+ bool cbp_idx_r17_present = false;
+ bool non_crit_ext_present = false;
+ uint8_t cbp_idx_r17 = 1;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
// UEPagingCoverageInformation-NB-IEs ::= SEQUENCE
struct ue_paging_coverage_info_nb_ies_s {
- bool npdcch_num_repeat_paging_r13_present = false;
- bool non_crit_ext_present = false;
- uint16_t npdcch_num_repeat_paging_r13 = 1;
+ bool npdcch_num_repeat_paging_r13_present = false;
+ bool non_crit_ext_present = false;
+ uint16_t npdcch_num_repeat_paging_r13 = 1;
+ ue_paging_coverage_info_nb_v1700_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
@@ -9002,8 +11853,8 @@ struct ul_dcch_msg_type_nb_c {
ue_cap_info_r13,
ul_info_transfer_r13,
rrc_conn_resume_complete_r13,
- spare8,
- spare7,
+ ue_info_resp_r16,
+ pur_cfg_request_r16,
spare6,
spare5,
spare4,
@@ -9068,6 +11919,16 @@ struct ul_dcch_msg_type_nb_c {
assert_choice_type(types::rrc_conn_resume_complete_r13, type_, "c1");
return c.get<rrc_conn_resume_complete_nb_s>();
}
+ ue_info_resp_nb_r16_s& ue_info_resp_r16()
+ {
+ assert_choice_type(types::ue_info_resp_r16, type_, "c1");
+ return c.get<ue_info_resp_nb_r16_s>();
+ }
+ pur_cfg_request_nb_r16_s& pur_cfg_request_r16()
+ {
+ assert_choice_type(types::pur_cfg_request_r16, type_, "c1");
+ return c.get<pur_cfg_request_nb_r16_s>();
+ }
const rrc_conn_recfg_complete_nb_s& rrc_conn_recfg_complete_r13() const
{
assert_choice_type(types::rrc_conn_recfg_complete_r13, type_, "c1");
@@ -9108,6 +11969,16 @@ struct ul_dcch_msg_type_nb_c {
assert_choice_type(types::rrc_conn_resume_complete_r13, type_, "c1");
return c.get<rrc_conn_resume_complete_nb_s>();
}
+ const ue_info_resp_nb_r16_s& ue_info_resp_r16() const
+ {
+ assert_choice_type(types::ue_info_resp_r16, type_, "c1");
+ return c.get<ue_info_resp_nb_r16_s>();
+ }
+ const pur_cfg_request_nb_r16_s& pur_cfg_request_r16() const
+ {
+ assert_choice_type(types::pur_cfg_request_r16, type_, "c1");
+ return c.get<pur_cfg_request_nb_r16_s>();
+ }
rrc_conn_recfg_complete_nb_s& set_rrc_conn_recfg_complete_r13();
rrc_conn_reest_complete_nb_s& set_rrc_conn_reest_complete_r13();
rrc_conn_setup_complete_nb_s& set_rrc_conn_setup_complete_r13();
@@ -9116,8 +11987,8 @@ struct ul_dcch_msg_type_nb_c {
ue_cap_info_nb_s& set_ue_cap_info_r13();
ul_info_transfer_nb_s& set_ul_info_transfer_r13();
rrc_conn_resume_complete_nb_s& set_rrc_conn_resume_complete_r13();
- void set_spare8();
- void set_spare7();
+ ue_info_resp_nb_r16_s& set_ue_info_resp_r16();
+ pur_cfg_request_nb_r16_s& set_pur_cfg_request_r16();
void set_spare6();
void set_spare5();
void set_spare4();
@@ -9127,13 +11998,15 @@ struct ul_dcch_msg_type_nb_c {
private:
types type_;
- choice_buffer_t<rrc_conn_recfg_complete_nb_s,
+ choice_buffer_t<pur_cfg_request_nb_r16_s,
+ rrc_conn_recfg_complete_nb_s,
rrc_conn_reest_complete_nb_s,
rrc_conn_resume_complete_nb_s,
rrc_conn_setup_complete_nb_s,
security_mode_complete_s,
security_mode_fail_s,
ue_cap_info_nb_s,
+ ue_info_resp_nb_r16_s,
ul_info_transfer_nb_s>
c;
@@ -9184,6 +12057,34 @@ struct ul_dcch_msg_nb_s {
void to_json(json_writer& j) const;
};
+// VarANR-MeasConfig-NB-r16 ::= SEQUENCE
+struct var_anr_meas_cfg_nb_r16_s {
+ uint8_t anr_quality_thres_r16 = 0;
+ anr_carrier_list_nb_r16_l anr_carrier_list_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
+// VarANR-MeasReport-NB-r16 ::= SEQUENCE
+struct var_anr_meas_report_nb_r16_s {
+ using meas_result_list_r16_l_ = dyn_array<anr_meas_result_nb_r16_s>;
+
+ // member variables
+ plmn_id_list3_r11_l plmn_id_list_r16;
+ cell_global_id_eutra_s serv_cell_id_r16;
+ meas_result_serv_cell_nb_r14_s meas_result_serv_cell_r16;
+ uint8_t relative_time_stamp_r16 = 0;
+ meas_result_list_r16_l_ meas_result_list_r16;
+
+ // sequence methods
+ SRSASN_CODE pack(bit_ref& bref) const;
+ SRSASN_CODE unpack(cbit_ref& bref);
+ void to_json(json_writer& j) const;
+};
+
} // namespace rrc
} // namespace asn1
diff --git a/lib/include/srsran/asn1/rrc_utils.h b/lib/include/srsran/asn1/rrc_utils.h
index ecae50bda..0eb77b368 100644
--- a/lib/include/srsran/asn1/rrc_utils.h
+++ b/lib/include/srsran/asn1/rrc_utils.h
@@ -58,7 +58,7 @@ struct sib_type13_r9_s;
// MeasConfig
struct cells_to_add_mod_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 meas_obj_to_add_mod_s;
struct report_cfg_to_add_mod_s;
diff --git a/lib/src/asn1/rrc.cc b/lib/src/asn1/rrc.cc
index f8fa6a91d..3c71f1524 100644
--- a/lib/src/asn1/rrc.cc
+++ b/lib/src/asn1/rrc.cc
@@ -20,12 +20,19 @@ using namespace asn1::rrc;
* Struct Methods
******************************************************************************/
+const char* mib_s::part_earfcn_minus17_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"spare", "earfcn-LSB"};
+ return convert_enum_idx(options, 2, value, "mib_s::part_earfcn_minus17_c_::types");
+}
+
// MasterInformationBlock-MBMS-r14 ::= SEQUENCE
SRSASN_CODE mib_mbms_r14_s::pack(bit_ref& bref) const
{
HANDLE_CODE(dl_bw_mbms_r14.pack(bref));
HANDLE_CODE(sys_frame_num_r14.pack(bref));
HANDLE_CODE(pack_integer(bref, add_non_mbsfn_sfs_r14, (uint8_t)0u, (uint8_t)3u));
+ HANDLE_CODE(pack_integer(bref, semi_static_cfi_mbms_r16, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
@@ -35,6 +42,7 @@ SRSASN_CODE mib_mbms_r14_s::unpack(cbit_ref& bref)
HANDLE_CODE(dl_bw_mbms_r14.unpack(bref));
HANDLE_CODE(sys_frame_num_r14.unpack(bref));
HANDLE_CODE(unpack_integer(add_non_mbsfn_sfs_r14, bref, (uint8_t)0u, (uint8_t)3u));
+ HANDLE_CODE(unpack_integer(semi_static_cfi_mbms_r16, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS;
@@ -45,6 +53,7 @@ void mib_mbms_r14_s::to_json(json_writer& j) const
j.write_str("dl-Bandwidth-MBMS-r14", dl_bw_mbms_r14.to_string());
j.write_str("systemFrameNumber-r14", sys_frame_num_r14.to_string());
j.write_int("additionalNonMBSFNSubframes-r14", add_non_mbsfn_sfs_r14);
+ j.write_int("semiStaticCFI-MBMS-r16", semi_static_cfi_mbms_r16);
j.write_str("spare", spare.to_string());
j.end_obj();
}
@@ -161,6 +170,17 @@ sl_disc_res_pool_r12_s::tx_params_r12_s_::ue_sel_res_cfg_r12_s_::pool_sel_r12_c_
options, 2, value, "sl_disc_res_pool_r12_s::tx_params_r12_s_::ue_sel_res_cfg_r12_s_::pool_sel_r12_c_::types");
}
+const char* mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"sf5-r15", "sf10-r15", "sf20-r15", "sf40-r15", "sf80-r15", "sf160-r15"};
+ return convert_enum_idx(options, 6, value, "mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::types");
+}
+uint8_t mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::types_opts::to_number() const
+{
+ static const uint8_t options[] = {5, 10, 20, 40, 80, 160};
+ return map_enum_number(options, 6, value, "mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::types");
+}
+
const char* plmn_id_info2_r12_c::types_opts::to_string() const
{
static const char* options[] = {"plmn-Index-r12", "plmnIdentity-r12"};
@@ -174,6 +194,12 @@ const char* sl_disc_tx_res_inter_freq_r13_c::types_opts::to_string() const
return convert_enum_idx(options, 4, value, "sl_disc_tx_res_inter_freq_r13_c::types");
}
+const char* ssb_to_measure_r15_c::types_opts::to_string() const
+{
+ static const char* options[] = {"shortBitmap-r15", "mediumBitmap-r15", "longBitmap-r15"};
+ return convert_enum_idx(options, 3, value, "ssb_to_measure_r15_c::types");
+}
+
const char*
sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_::types_opts::to_string() const
{
@@ -208,15 +234,10 @@ const char* carrier_freqs_geran_s::following_arfcns_c_::types_opts::to_string()
return convert_enum_idx(options, 3, value, "carrier_freqs_geran_s::following_arfcns_c_::types");
}
-const char* mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::types_opts::to_string() const
-{
- static const char* options[] = {"sf5-r15", "sf10-r15", "sf20-r15", "sf40-r15", "sf80-r15", "sf160-r15"};
- return convert_enum_idx(options, 6, value, "mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::types");
-}
-uint8_t mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::types_opts::to_number() const
+const char* gwus_res_cfg_r16_s::res_map_pattern_r16_c_::types_opts::to_string() const
{
- static const uint8_t options[] = {5, 10, 20, 40, 80, 160};
- return map_enum_number(options, 6, value, "mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::types");
+ static const char* options[] = {"resourceLocationWithWUS", "resourceLocationWithoutWUS"};
+ return convert_enum_idx(options, 2, value, "gwus_res_cfg_r16_s::res_map_pattern_r16_c_::types");
}
const char* params_cdma2000_r11_s::sys_time_info_r11_c_::types_opts::to_string() const
@@ -231,12 +252,6 @@ const char* sl_inter_freq_info_v2x_r14_s::add_spec_emission_v2x_r14_c_::types_op
return convert_enum_idx(options, 2, value, "sl_inter_freq_info_v2x_r14_s::add_spec_emission_v2x_r14_c_::types");
}
-const char* ssb_to_measure_r15_c::types_opts::to_string() const
-{
- static const char* options[] = {"shortBitmap-r15", "mediumBitmap-r15", "longBitmap-r15"};
- return convert_enum_idx(options, 3, value, "ssb_to_measure_r15_c::types");
-}
-
const char*
sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::fdd_dl_or_tdd_sf_bitmap_br_r13_c_::types_opts::to_string()
const
@@ -312,6 +327,24 @@ const char* prach_cfg_sib_v1310_s::mpdcch_start_sf_css_ra_r13_c_::types_opts::to
return convert_enum_idx(options, 2, value, "prach_cfg_sib_v1310_s::mpdcch_start_sf_css_ra_r13_c_::types");
}
+const char* periodicity_start_pos_r16_c::types_opts::to_string() const
+{
+ static const char* options[] = {"periodicity10ms",
+ "periodicity20ms",
+ "periodicity40ms",
+ "periodicity80ms",
+ "periodicity160ms",
+ "spare3",
+ "spare2",
+ "spare1"};
+ return convert_enum_idx(options, 8, value, "periodicity_start_pos_r16_c::types");
+}
+uint8_t periodicity_start_pos_r16_c::types_opts::to_number() const
+{
+ static const uint8_t options[] = {10, 20, 40, 80, 160};
+ return map_enum_number(options, 5, value, "periodicity_start_pos_r16_c::types");
+}
+
const char* sib8_per_plmn_r11_s::params_cdma2000_r11_c_::types_opts::to_string() const
{
static const char* options[] = {"explicitValue", "defaultValue"};
@@ -324,6 +357,52 @@ const char* uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::types_opts::t
return convert_enum_idx(options, 2, value, "uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::types");
}
+const char* applicable_disaster_info_r17_c::types_opts::to_string() const
+{
+ static const char* options[] = {
+ "noDisasterRoaming-r17", "disasterRelatedIndication-r17", "commonPLMNs-r17", "dedicatedPLMNs-r17"};
+ return convert_enum_idx(options, 4, value, "applicable_disaster_info_r17_c::types");
+}
+
+const char* res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {
+ "rbg-Bitmap1dot4", "rbg-Bitmap3", "rbg-Bitmap5", "rbg-Bitmap10", "rbg-Bitmap15", "rbg-Bitmap20"};
+ return convert_enum_idx(options, 6, value, "res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::types");
+}
+float res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::types_opts::to_number() const
+{
+ static const float options[] = {1.4, 3.0, 5.0, 10.0, 15.0, 20.0};
+ return map_enum_number(options, 6, value, "res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::types");
+}
+const char* res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::types_opts::to_number_string() const
+{
+ static const char* options[] = {"1.4", "3", "5", "10", "15", "20"};
+ return convert_enum_idx(options, 6, value, "res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::types");
+}
+
+const char* res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"slotPattern10ms", "slotPattern40ms"};
+ return convert_enum_idx(options, 2, value, "res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::types");
+}
+uint8_t res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::types_opts::to_number() const
+{
+ static const uint8_t options[] = {10, 40};
+ return map_enum_number(options, 2, value, "res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::types");
+}
+
+const char* res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"slotPattern10ms", "slotPattern40ms"};
+ return convert_enum_idx(options, 2, value, "res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::types");
+}
+uint8_t res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::types_opts::to_number() const
+{
+ static const uint8_t options[] = {10, 40};
+ return map_enum_number(options, 2, value, "res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::types");
+}
+
const char* sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::types_opts::to_string() const
{
static const char* options[] = {"sf10",
@@ -351,6 +430,12 @@ uint16_t sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::types
return map_enum_number(options, 16, value, "sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::types");
}
+const char* serving_satellite_info_r17_s::ephemeris_info_r17_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"stateVectors", "orbitalParameters"};
+ return convert_enum_idx(options, 2, value, "serving_satellite_info_r17_s::ephemeris_info_r17_c_::types");
+}
+
const char* sib_type14_r11_s::eab_param_r11_c_::types_opts::to_string() const
{
static const char* options[] = {"eab-Common-r11", "eab-PerPLMN-List-r11"};
@@ -373,27 +458,26 @@ const char* sib_type25_r15_s::uac_ac1_select_assist_info_r15_c_::types_opts::to_
const char* pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::types_opts::to_string() const
{
static const char* options[] = {
- "posSib1-1-r15", "posSib1-2-r15", "posSib1-3-r15", "posSib1-4-r15", "posSib1-5-r15", "posSib1-6-r15",
- "posSib1-7-r15", "posSib2-1-r15", "posSib2-2-r15", "posSib2-3-r15", "posSib2-4-r15", "posSib2-5-r15",
- "posSib2-6-r15", "posSib2-7-r15", "posSib2-8-r15", "posSib2-9-r15", "posSib2-10-r15", "posSib2-11-r15",
- "posSib2-12-r15", "posSib2-13-r15", "posSib2-14-r15", "posSib2-15-r15", "posSib2-16-r15", "posSib2-17-r15",
- "posSib2-18-r15", "posSib2-19-r15", "posSib3-1-r15"};
- return convert_enum_idx(options, 27, value, "pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::types");
+ "posSib1-1-r15", "posSib1-2-r15", "posSib1-3-r15", "posSib1-4-r15", "posSib1-5-r15",
+ "posSib1-6-r15", "posSib1-7-r15", "posSib2-1-r15", "posSib2-2-r15", "posSib2-3-r15",
+ "posSib2-4-r15", "posSib2-5-r15", "posSib2-6-r15", "posSib2-7-r15", "posSib2-8-r15",
+ "posSib2-9-r15", "posSib2-10-r15", "posSib2-11-r15", "posSib2-12-r15", "posSib2-13-r15",
+ "posSib2-14-r15", "posSib2-15-r15", "posSib2-16-r15", "posSib2-17-r15", "posSib2-18-r15",
+ "posSib2-19-r15", "posSib3-1-r15", "posSib1-8-v1610", "posSib2-20-v1610", "posSib2-21-v1610",
+ "posSib2-22-v1610", "posSib2-23-v1610", "posSib2-24-v1610", "posSib2-25-v1610", "posSib4-1-v1610",
+ "posSib5-1-v1610", "posSib1-9-v1700", "posSib1-10-v1700"};
+ return convert_enum_idx(options, 38, value, "pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::types");
}
const char* sys_info_r8_ies_s::sib_type_and_info_item_c_::types_opts::to_string() const
{
- static const char* options[] = {"sib2", "sib3", "sib4", "sib5", "sib6",
- "sib7", "sib8", "sib9", "sib10", "sib11",
- "sib12-v920", "sib13-v920", "sib14-v1130", "sib15-v1130", "sib16-v1130",
- "sib17-v1250", "sib18-v1250", "sib19-v1250", "sib20-v1310", "sib21-v1430",
- "sib24-v1530", "sib25-v1530", "sib26-v1530"};
- return convert_enum_idx(options, 23, value, "sib_info_item_c::types");
-}
-uint8_t sib_info_item_c::types_opts::to_number() const
-{
- static const uint8_t options[] = {2, 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, 23, value, "sib_info_item_c::types");
+ static const char* options[] = {"sib2", "sib3", "sib4", "sib5", "sib6",
+ "sib7", "sib8", "sib9", "sib10", "sib11",
+ "sib12-v920", "sib13-v920", "sib14-v1130", "sib15-v1130", "sib16-v1130",
+ "sib17-v1250", "sib18-v1250", "sib19-v1250", "sib20-v1310", "sib21-v1430",
+ "sib24-v1530", "sib25-v1530", "sib26-v1530", "sib26a-v1610", "sib27-v1610",
+ "sib28-v1610", "sib29-v1610", "sib30-v1700", "sib31-v1700", "sib32-v1700"};
+ return convert_enum_idx(options, 30, value, "sib_info_item_c::types");
}
const char* sys_info_s::crit_exts_c_::crit_exts_future_r15_c_::types_opts::to_string() const
@@ -1031,8 +1115,7 @@ const char* rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::types_opts::to_st
const char* redirected_carrier_info_r15_ies_c::types_opts::to_string() const
{
- static const char* options[] = {
- "eutra-r15", "geran-r15", "utra-FDD-r15", "cdma2000-HRPD-r15", "cdma2000-1xRTT-r15", "utra-TDD-r15"};
+ static const char* options[] = {"eutra", "geran", "utra-FDD", "cdma2000-HRPD", "cdma2000-1xRTT", "utra-TDD"};
return convert_enum_idx(options, 6, value, "redirected_carrier_info_r15_ies_c::types");
}
@@ -1153,6 +1236,40 @@ const char* phys_cfg_ded_scell_r10_s::semi_static_cfi_cfg_r15_c_::setup_c_::type
return convert_enum_idx(options, 2, value, "phys_cfg_ded_scell_r10_s::semi_static_cfi_cfg_r15_c_::setup_c_::types");
}
+const char* thres_eutra_c::types_opts::to_string() const
+{
+ static const char* options[] = {"threshold-RSRP", "threshold-RSRQ"};
+ return convert_enum_idx(options, 2, value, "thres_eutra_c::types");
+}
+
+const char* thres_nr_r15_c::types_opts::to_string() const
+{
+ static const char* options[] = {"nr-RSRP-r15", "nr-RSRQ-r15", "nr-SINR-r15"};
+ return convert_enum_idx(options, 3, value, "thres_nr_r15_c::types");
+}
+
+const char* cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"condEventA3-r16", "condEventA5-r16"};
+ return convert_enum_idx(options, 2, value, "cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::types");
+}
+uint8_t cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::types_opts::to_number() const
+{
+ static const uint8_t options[] = {3, 5};
+ return map_enum_number(options, 2, value, "cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::types");
+}
+
+const char* cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"condEventB1-NR-r17"};
+ return convert_enum_idx(options, 1, value, "cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::types");
+}
+uint8_t cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::types_opts::to_number() const
+{
+ static const uint8_t options[] = {1};
+ return map_enum_number(options, 1, value, "cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::types");
+}
+
const char* meas_ds_cfg_r12_c::setup_s_::dmtc_period_offset_r12_c_::types_opts::to_string() const
{
static const char* options[] = {"ms40-r12", "ms80-r12", "ms160-r12"};
@@ -1195,18 +1312,6 @@ const char* meas_gap_cfg_c::setup_s_::gap_offset_c_::types_opts::to_string() con
return convert_enum_idx(options, 20, value, "meas_gap_cfg_c::setup_s_::gap_offset_c_::types");
}
-const char* thres_eutra_c::types_opts::to_string() const
-{
- static const char* options[] = {"threshold-RSRP", "threshold-RSRQ"};
- return convert_enum_idx(options, 2, value, "thres_eutra_c::types");
-}
-
-const char* thres_nr_r15_c::types_opts::to_string() const
-{
- static const char* options[] = {"nr-RSRP-r15", "nr-RSRQ-r15", "nr-SINR-r15"};
- return convert_enum_idx(options, 3, value, "thres_nr_r15_c::types");
-}
-
const char* thres_utra_c::types_opts::to_string() const
{
static const char* options[] = {"utra-RSCP", "utra-EcN0"};
@@ -1352,6 +1457,39 @@ uint16_t meas_obj_to_add_mod_ext_r13_s::meas_obj_r13_c_::types_opts::to_number()
return 0;
}
+const char* pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"fdd", "tdd"};
+ return convert_enum_idx(options, 2, value, "pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::types");
+}
+
+const char* pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"ce-ModeA", "ce-ModeB"};
+ return convert_enum_idx(options, 2, value, "pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::types");
+}
+
+const char* pur_periodicity_and_offset_r16_c::types_opts::to_string() const
+{
+ static const char* options[] = {"periodicity8",
+ "periodicity16",
+ "periodicity32",
+ "periodicity64",
+ "periodicity128",
+ "periodicity256",
+ "periodicity512",
+ "periodicity1024",
+ "periodicity2048",
+ "periodicity4096",
+ "periodicity8192"};
+ return convert_enum_idx(options, 11, value, "pur_periodicity_and_offset_r16_c::types");
+}
+uint16_t pur_periodicity_and_offset_r16_c::types_opts::to_number() const
+{
+ static const uint16_t options[] = {8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192};
+ return map_enum_number(options, 11, value, "pur_periodicity_and_offset_r16_c::types");
+}
+
const char* report_cfg_to_add_mod_s::report_cfg_c_::types_opts::to_string() const
{
static const char* options[] = {"reportConfigEUTRA", "reportConfigInterRAT"};
@@ -1360,7 +1498,7 @@ const char* report_cfg_to_add_mod_s::report_cfg_c_::types_opts::to_string() cons
const char* security_cfg_ho_v1530_s::handov_type_v1530_c_::types_opts::to_string() const
{
- static const char* options[] = {"intra5GC-r15", "fivegc-ToEPC-r15", "epc-To5GC-r15"};
+ static const char* options[] = {"intra5GC", "fivegc-ToEPC", "epc-To5GC"};
return convert_enum_idx(options, 3, value, "security_cfg_ho_v1530_s::handov_type_v1530_c_::types");
}
@@ -1421,9 +1559,23 @@ const char* sl_v2x_cfg_ded_r14_s::comm_tx_res_v1530_c_::setup_c_::types_opts::to
return convert_enum_idx(options, 2, value, "sl_v2x_cfg_ded_r14_s::comm_tx_res_v1530_c_::setup_c_::types");
}
+const char* event_type_r17_c::types_opts::to_string() const
+{
+ static const char* options[] = {"outOfCoverage", "eventL1"};
+ return convert_enum_idx(options, 2, value, "event_type_r17_c::types");
+}
+uint8_t event_type_r17_c::types_opts::to_number() const
+{
+ if (value == event_l1) {
+ return 1;
+ }
+ invalid_enum_number(value, "event_type_r17_c::types");
+ return 0;
+}
+
const char* ran_notif_area_info_r15_c::types_opts::to_string() const
{
- static const char* options[] = {"cellList-r15", "ran-AreaConfigList-r15"};
+ static const char* options[] = {"cellList", "ran-AreaConfigList"};
return convert_enum_idx(options, 2, value, "ran_notif_area_info_r15_c::types");
}
@@ -1558,8 +1710,8 @@ const char* rn_sf_cfg_r10_s::rpdcch_cfg_r10_s_::pucch_cfg_r10_c_::types_opts::to
const char* redirected_carrier_info_c::types_opts::to_string() const
{
static const char* options[] = {
- "eutra", "geran", "utra-FDD", "utra-TDD", "cdma2000-HRPD", "cdma2000-1xRTT", "utra-TDD-r10", "nr-r15"};
- return convert_enum_idx(options, 8, value, "redirected_carrier_info_c::types");
+ "eutra", "geran", "utra-FDD", "utra-TDD", "cdma2000-HRPD", "cdma2000-1xRTT", "utra-TDD-r10", "nr-r15", "nr-r17"};
+ return convert_enum_idx(options, 9, value, "redirected_carrier_info_c::types");
}
const char* security_cfg_ho_s::handov_type_c_::types_opts::to_string() const
@@ -1570,8 +1722,7 @@ const char* security_cfg_ho_s::handov_type_c_::types_opts::to_string() const
const char* dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::types_opts::to_string() const
{
- static const char* options[] = {
- "dedicatedInfoNAS-r15", "dedicatedInfoCDMA2000-1XRTT-r15", "dedicatedInfoCDMA2000-HRPD-r15"};
+ static const char* options[] = {"dedicatedInfoNAS", "dedicatedInfoCDMA2000-1XRTT", "dedicatedInfoCDMA2000-HRPD"};
return convert_enum_idx(options, 3, value, "dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::types");
}
@@ -1610,6 +1761,12 @@ const char* counter_check_s::crit_exts_c_::c1_c_::types_opts::to_string() const
return convert_enum_idx(options, 4, value, "counter_check_s::crit_exts_c_::c1_c_::types");
}
+const char* dl_ded_msg_segment_r16_s::crit_exts_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"dlDedicatedMessageSegment-r16", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "dl_ded_msg_segment_r16_s::crit_exts_c_::types");
+}
+
const char* dl_info_transfer_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"dlInformationTransfer-r8", "dlInformationTransfer-r15", "spare2", "spare1"};
@@ -1692,7 +1849,7 @@ const char* dl_dcch_msg_type_c::c1_c_::types_opts::to_string() const
"loggedMeasurementConfiguration-r10",
"rnReconfiguration-r10",
"rrcConnectionResume-r13",
- "spare3",
+ "dlDedicatedMessageSegment-r16",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "dl_dcch_msg_type_c::c1_c_::types");
@@ -1759,6 +1916,166 @@ void mbms_session_info_r9_s::to_json(json_writer& j) const
j.end_obj();
}
+// MBSFN-SubframeConfig-v1610 ::= SEQUENCE
+SRSASN_CODE mbsfn_sf_cfg_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(sf_alloc_v1610.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mbsfn_sf_cfg_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(sf_alloc_v1610.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void mbsfn_sf_cfg_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("subframeAllocation-v1610");
+ sf_alloc_v1610.to_json(j);
+ j.end_obj();
+}
+
+void mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::destroy_()
+{
+ switch (type_) {
+ case types::one_frame_v1610:
+ c.destroy<fixed_bitstring<2> >();
+ break;
+ case types::four_frames_v1610:
+ c.destroy<fixed_bitstring<8> >();
+ break;
+ default:
+ break;
+ }
+}
+void mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::one_frame_v1610:
+ c.init<fixed_bitstring<2> >();
+ break;
+ case types::four_frames_v1610:
+ c.init<fixed_bitstring<8> >();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_");
+ }
+}
+mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::sf_alloc_v1610_c_(const mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::one_frame_v1610:
+ c.init(other.c.get<fixed_bitstring<2> >());
+ break;
+ case types::four_frames_v1610:
+ c.init(other.c.get<fixed_bitstring<8> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_");
+ }
+}
+mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_&
+mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::operator=(const mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::one_frame_v1610:
+ c.set(other.c.get<fixed_bitstring<2> >());
+ break;
+ case types::four_frames_v1610:
+ c.set(other.c.get<fixed_bitstring<8> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_");
+ }
+
+ return *this;
+}
+fixed_bitstring<2>& mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::set_one_frame_v1610()
+{
+ set(types::one_frame_v1610);
+ return c.get<fixed_bitstring<2> >();
+}
+fixed_bitstring<8>& mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::set_four_frames_v1610()
+{
+ set(types::four_frames_v1610);
+ return c.get<fixed_bitstring<8> >();
+}
+void mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::one_frame_v1610:
+ j.write_str("oneFrame-v1610", c.get<fixed_bitstring<2> >().to_string());
+ break;
+ case types::four_frames_v1610:
+ j.write_str("fourFrames-v1610", c.get<fixed_bitstring<8> >().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::one_frame_v1610:
+ HANDLE_CODE(c.get<fixed_bitstring<2> >().pack(bref));
+ break;
+ case types::four_frames_v1610:
+ HANDLE_CODE(c.get<fixed_bitstring<8> >().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::one_frame_v1610:
+ HANDLE_CODE(c.get<fixed_bitstring<2> >().unpack(bref));
+ break;
+ case types::four_frames_v1610:
+ HANDLE_CODE(c.get<fixed_bitstring<8> >().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"oneFrame-v1610", "fourFrames-v1610"};
+ return convert_enum_idx(options, 2, value, "mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::types");
+}
+uint8_t mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::types_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 4};
+ return map_enum_number(options, 2, value, "mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::types");
+}
+
// PMCH-Config-r12 ::= SEQUENCE
SRSASN_CODE pmch_cfg_r12_s::pack(bit_ref& bref) const
{
@@ -1952,6 +2269,47 @@ uint8_t pmch_cfg_r12_s::mch_sched_period_v1430_opts::to_number() const
return map_enum_number(options, 2, value, "pmch_cfg_r12_s::mch_sched_period_v1430_e_");
}
+// MBSFNAreaConfiguration-v1610-IEs ::= SEQUENCE
+SRSASN_CODE mbsfn_area_cfg_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(common_sf_alloc_v1610_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (common_sf_alloc_v1610_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, common_sf_alloc_v1610, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mbsfn_area_cfg_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(common_sf_alloc_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (common_sf_alloc_v1610_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(common_sf_alloc_v1610, bref, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void mbsfn_area_cfg_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (common_sf_alloc_v1610_present) {
+ j.start_array("commonSF-Alloc-v1610");
+ for (const auto& e1 : common_sf_alloc_v1610) {
+ 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();
+}
+
// PMCH-InfoExt-r12 ::= SEQUENCE
SRSASN_CODE pmch_info_ext_r12_s::pack(bit_ref& bref) const
{
@@ -1987,7 +2345,10 @@ SRSASN_CODE mbsfn_area_cfg_v1430_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
- HANDLE_CODE(pack_dyn_seq_of(bref, common_sf_alloc_r14, 1, 8));
+ HANDLE_CODE(pack_dyn_seq_of(bref, common_sf_alloc_v1430, 1, 8));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -1995,22 +2356,24 @@ SRSASN_CODE mbsfn_area_cfg_v1430_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
- HANDLE_CODE(unpack_dyn_seq_of(common_sf_alloc_r14, bref, 1, 8));
+ HANDLE_CODE(unpack_dyn_seq_of(common_sf_alloc_v1430, bref, 1, 8));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
void mbsfn_area_cfg_v1430_ies_s::to_json(json_writer& j) const
{
j.start_obj();
- j.start_array("commonSF-Alloc-r14");
- for (const auto& e1 : common_sf_alloc_r14) {
+ j.start_array("commonSF-Alloc-v1430");
+ for (const auto& e1 : common_sf_alloc_v1430) {
e1.to_json(j);
}
j.end_array();
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -3133,6 +3496,305 @@ uint16_t sc_mtch_sched_info_br_r14_s::sched_period_start_offset_scptm_r14_c_::ty
options, 16, value, "sc_mtch_sched_info_br_r14_s::sched_period_start_offset_scptm_r14_c_::types");
}
+// SC-MTCH-Info-BR-r14 ::= SEQUENCE
+SRSASN_CODE sc_mtch_info_br_r14_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(sc_mtch_sched_info_r14_present, 1));
+ HANDLE_CODE(bref.pack(sc_mtch_neighbour_cell_r14_present, 1));
+ HANDLE_CODE(bref.pack(p_a_r14_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, sc_mtch_carrier_freq_r14, (uint32_t)0u, (uint32_t)262143u));
+ HANDLE_CODE(mbms_session_info_r14.pack(bref));
+ HANDLE_CODE(g_rnti_r14.pack(bref));
+ if (sc_mtch_sched_info_r14_present) {
+ HANDLE_CODE(sc_mtch_sched_info_r14.pack(bref));
+ }
+ if (sc_mtch_neighbour_cell_r14_present) {
+ HANDLE_CODE(sc_mtch_neighbour_cell_r14.pack(bref));
+ }
+ HANDLE_CODE(pack_integer(bref, mpdcch_nb_sc_mtch_r14, (uint8_t)1u, (uint8_t)16u));
+ HANDLE_CODE(mpdcch_num_repeat_sc_mtch_r14.pack(bref));
+ HANDLE_CODE(mpdcch_start_sf_sc_mtch_r14.pack(bref));
+ HANDLE_CODE(mpdcch_pdsch_hop_cfg_sc_mtch_r14.pack(bref));
+ HANDLE_CODE(mpdcch_pdsch_cemode_cfg_sc_mtch_r14.pack(bref));
+ HANDLE_CODE(mpdcch_pdsch_max_bw_sc_mtch_r14.pack(bref));
+ HANDLE_CODE(mpdcch_offset_sc_mtch_r14.pack(bref));
+ if (p_a_r14_present) {
+ HANDLE_CODE(p_a_r14.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sc_mtch_info_br_r14_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(sc_mtch_sched_info_r14_present, 1));
+ HANDLE_CODE(bref.unpack(sc_mtch_neighbour_cell_r14_present, 1));
+ HANDLE_CODE(bref.unpack(p_a_r14_present, 1));
+
+ HANDLE_CODE(unpack_integer(sc_mtch_carrier_freq_r14, bref, (uint32_t)0u, (uint32_t)262143u));
+ HANDLE_CODE(mbms_session_info_r14.unpack(bref));
+ HANDLE_CODE(g_rnti_r14.unpack(bref));
+ if (sc_mtch_sched_info_r14_present) {
+ HANDLE_CODE(sc_mtch_sched_info_r14.unpack(bref));
+ }
+ if (sc_mtch_neighbour_cell_r14_present) {
+ HANDLE_CODE(sc_mtch_neighbour_cell_r14.unpack(bref));
+ }
+ HANDLE_CODE(unpack_integer(mpdcch_nb_sc_mtch_r14, bref, (uint8_t)1u, (uint8_t)16u));
+ HANDLE_CODE(mpdcch_num_repeat_sc_mtch_r14.unpack(bref));
+ HANDLE_CODE(mpdcch_start_sf_sc_mtch_r14.unpack(bref));
+ HANDLE_CODE(mpdcch_pdsch_hop_cfg_sc_mtch_r14.unpack(bref));
+ HANDLE_CODE(mpdcch_pdsch_cemode_cfg_sc_mtch_r14.unpack(bref));
+ HANDLE_CODE(mpdcch_pdsch_max_bw_sc_mtch_r14.unpack(bref));
+ HANDLE_CODE(mpdcch_offset_sc_mtch_r14.unpack(bref));
+ if (p_a_r14_present) {
+ HANDLE_CODE(p_a_r14.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sc_mtch_info_br_r14_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("sc-mtch-CarrierFreq-r14", sc_mtch_carrier_freq_r14);
+ j.write_fieldname("mbmsSessionInfo-r14");
+ mbms_session_info_r14.to_json(j);
+ j.write_str("g-RNTI-r14", g_rnti_r14.to_string());
+ if (sc_mtch_sched_info_r14_present) {
+ j.write_fieldname("sc-mtch-schedulingInfo-r14");
+ sc_mtch_sched_info_r14.to_json(j);
+ }
+ if (sc_mtch_neighbour_cell_r14_present) {
+ j.write_str("sc-mtch-neighbourCell-r14", sc_mtch_neighbour_cell_r14.to_string());
+ }
+ j.write_int("mpdcch-Narrowband-SC-MTCH-r14", mpdcch_nb_sc_mtch_r14);
+ j.write_str("mpdcch-NumRepetition-SC-MTCH-r14", mpdcch_num_repeat_sc_mtch_r14.to_string());
+ j.write_fieldname("mpdcch-StartSF-SC-MTCH-r14");
+ mpdcch_start_sf_sc_mtch_r14.to_json(j);
+ j.write_str("mpdcch-PDSCH-HoppingConfig-SC-MTCH-r14", mpdcch_pdsch_hop_cfg_sc_mtch_r14.to_string());
+ j.write_str("mpdcch-PDSCH-CEmodeConfig-SC-MTCH-r14", mpdcch_pdsch_cemode_cfg_sc_mtch_r14.to_string());
+ j.write_str("mpdcch-PDSCH-MaxBandwidth-SC-MTCH-r14", mpdcch_pdsch_max_bw_sc_mtch_r14.to_string());
+ j.write_str("mpdcch-Offset-SC-MTCH-r14", mpdcch_offset_sc_mtch_r14.to_string());
+ if (p_a_r14_present) {
+ j.write_str("p-a-r14", p_a_r14.to_string());
+ }
+ j.end_obj();
+}
+
+const char* sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_opts::to_string() const
+{
+ static const char* options[] = {"r1", "r2", "r4", "r8", "r16", "r32", "r64", "r128", "r256"};
+ return convert_enum_idx(options, 9, value, "sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_e_");
+}
+uint16_t sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_opts::to_number() const
+{
+ static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256};
+ return map_enum_number(options, 9, value, "sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_e_");
+}
+
+void sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::destroy_() {}
+void sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+}
+sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::mpdcch_start_sf_sc_mtch_r14_c_(
+ const sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::fdd_r14:
+ c.init(other.c.get<fdd_r14_e_>());
+ break;
+ case types::tdd_r14:
+ c.init(other.c.get<tdd_r14_e_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_");
+ }
+}
+sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_& sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::operator=(
+ const sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::fdd_r14:
+ c.set(other.c.get<fdd_r14_e_>());
+ break;
+ case types::tdd_r14:
+ c.set(other.c.get<tdd_r14_e_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_");
+ }
+
+ return *this;
+}
+sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_e_&
+sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::set_fdd_r14()
+{
+ set(types::fdd_r14);
+ return c.get<fdd_r14_e_>();
+}
+sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_e_&
+sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::set_tdd_r14()
+{
+ set(types::tdd_r14);
+ return c.get<tdd_r14_e_>();
+}
+void sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::fdd_r14:
+ j.write_str("fdd-r14", c.get<fdd_r14_e_>().to_string());
+ break;
+ case types::tdd_r14:
+ j.write_str("tdd-r14", c.get<tdd_r14_e_>().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::fdd_r14:
+ HANDLE_CODE(c.get<fdd_r14_e_>().pack(bref));
+ break;
+ case types::tdd_r14:
+ HANDLE_CODE(c.get<tdd_r14_e_>().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::fdd_r14:
+ HANDLE_CODE(c.get<fdd_r14_e_>().unpack(bref));
+ break;
+ case types::tdd_r14:
+ HANDLE_CODE(c.get<tdd_r14_e_>().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_opts::to_string() const
+{
+ static const char* options[] = {"v1", "v1dot5", "v2", "v2dot5", "v4", "v5", "v8", "v10"};
+ return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_e_");
+}
+float sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_opts::to_number() const
+{
+ static const float options[] = {1.0, 1.5, 2.0, 2.5, 4.0, 5.0, 8.0, 10.0};
+ return map_enum_number(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_e_");
+}
+const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_opts::to_number_string() const
+{
+ static const char* options[] = {"1", "1.5", "2", "2.5", "4", "5", "8", "10"};
+ return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_e_");
+}
+
+const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_opts::to_string() const
+{
+ static const char* options[] = {"v1", "v2", "v4", "v5", "v8", "v10", "v20"};
+ return convert_enum_idx(options, 7, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_e_");
+}
+uint8_t sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 5, 8, 10, 20};
+ return map_enum_number(options, 7, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_e_");
+}
+
+const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"fdd-r14", "tdd-r14"};
+ return convert_enum_idx(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::types");
+}
+
+const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_hop_cfg_sc_mtch_r14_opts::to_string() const
+{
+ static const char* options[] = {"on", "off"};
+ return convert_enum_idx(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_pdsch_hop_cfg_sc_mtch_r14_e_");
+}
+
+const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_cemode_cfg_sc_mtch_r14_opts::to_string() const
+{
+ static const char* options[] = {"ce-ModeA", "ce-ModeB"};
+ return convert_enum_idx(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_pdsch_cemode_cfg_sc_mtch_r14_e_");
+}
+
+const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_opts::to_string() const
+{
+ static const char* options[] = {"bw1dot4", "bw5"};
+ return convert_enum_idx(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_e_");
+}
+float sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_opts::to_number() const
+{
+ static const float options[] = {1.4, 5.0};
+ return map_enum_number(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_e_");
+}
+const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_opts::to_number_string() const
+{
+ static const char* options[] = {"1.4", "5"};
+ return convert_enum_idx(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_e_");
+}
+
+const char* sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_opts::to_string() const
+{
+ static const char* options[] = {
+ "zero", "oneEighth", "oneQuarter", "threeEighth", "oneHalf", "fiveEighth", "threeQuarter", "sevenEighth"};
+ return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_e_");
+}
+float sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_opts::to_number() const
+{
+ static const float options[] = {0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875};
+ return map_enum_number(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_e_");
+}
+const char* sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_opts::to_number_string() const
+{
+ static const char* options[] = {"0", "1/8", "1/4", "3/8", "1/2", "5/8", "3/4", "7/8"};
+ return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_e_");
+}
+
+const char* sc_mtch_info_br_r14_s::p_a_r14_opts::to_string() const
+{
+ static const char* options[] = {"dB-6", "dB-4dot77", "dB-3", "dB-1dot77", "dB0", "dB1", "dB2", "dB3"};
+ return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::p_a_r14_e_");
+}
+float sc_mtch_info_br_r14_s::p_a_r14_opts::to_number() const
+{
+ static const float options[] = {-6.0, -4.77, -3.0, -1.77, 0.0, 1.0, 2.0, 3.0};
+ return map_enum_number(options, 8, value, "sc_mtch_info_br_r14_s::p_a_r14_e_");
+}
+const char* sc_mtch_info_br_r14_s::p_a_r14_opts::to_number_string() const
+{
+ static const char* options[] = {"-6", "-4.77", "-3", "-1.77", "0", "1", "2", "3"};
+ return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::p_a_r14_e_");
+}
+
// SC-MTCH-SchedulingInfo-r13 ::= SEQUENCE
SRSASN_CODE sc_mtch_sched_info_r13_s::pack(bit_ref& bref) const
{
@@ -3660,305 +4322,6 @@ void pci_arfcn_r13_s::to_json(json_writer& j) const
j.end_obj();
}
-// SC-MTCH-Info-BR-r14 ::= SEQUENCE
-SRSASN_CODE sc_mtch_info_br_r14_s::pack(bit_ref& bref) const
-{
- bref.pack(ext, 1);
- HANDLE_CODE(bref.pack(sc_mtch_sched_info_r14_present, 1));
- HANDLE_CODE(bref.pack(sc_mtch_neighbour_cell_r14_present, 1));
- HANDLE_CODE(bref.pack(p_a_r14_present, 1));
-
- HANDLE_CODE(pack_integer(bref, sc_mtch_carrier_freq_r14, (uint32_t)0u, (uint32_t)262143u));
- HANDLE_CODE(mbms_session_info_r14.pack(bref));
- HANDLE_CODE(g_rnti_r14.pack(bref));
- if (sc_mtch_sched_info_r14_present) {
- HANDLE_CODE(sc_mtch_sched_info_r14.pack(bref));
- }
- if (sc_mtch_neighbour_cell_r14_present) {
- HANDLE_CODE(sc_mtch_neighbour_cell_r14.pack(bref));
- }
- HANDLE_CODE(pack_integer(bref, mpdcch_nb_sc_mtch_r14, (uint8_t)1u, (uint8_t)16u));
- HANDLE_CODE(mpdcch_num_repeat_sc_mtch_r14.pack(bref));
- HANDLE_CODE(mpdcch_start_sf_sc_mtch_r14.pack(bref));
- HANDLE_CODE(mpdcch_pdsch_hop_cfg_sc_mtch_r14.pack(bref));
- HANDLE_CODE(mpdcch_pdsch_cemode_cfg_sc_mtch_r14.pack(bref));
- HANDLE_CODE(mpdcch_pdsch_max_bw_sc_mtch_r14.pack(bref));
- HANDLE_CODE(mpdcch_offset_sc_mtch_r14.pack(bref));
- if (p_a_r14_present) {
- HANDLE_CODE(p_a_r14.pack(bref));
- }
-
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE sc_mtch_info_br_r14_s::unpack(cbit_ref& bref)
-{
- bref.unpack(ext, 1);
- HANDLE_CODE(bref.unpack(sc_mtch_sched_info_r14_present, 1));
- HANDLE_CODE(bref.unpack(sc_mtch_neighbour_cell_r14_present, 1));
- HANDLE_CODE(bref.unpack(p_a_r14_present, 1));
-
- HANDLE_CODE(unpack_integer(sc_mtch_carrier_freq_r14, bref, (uint32_t)0u, (uint32_t)262143u));
- HANDLE_CODE(mbms_session_info_r14.unpack(bref));
- HANDLE_CODE(g_rnti_r14.unpack(bref));
- if (sc_mtch_sched_info_r14_present) {
- HANDLE_CODE(sc_mtch_sched_info_r14.unpack(bref));
- }
- if (sc_mtch_neighbour_cell_r14_present) {
- HANDLE_CODE(sc_mtch_neighbour_cell_r14.unpack(bref));
- }
- HANDLE_CODE(unpack_integer(mpdcch_nb_sc_mtch_r14, bref, (uint8_t)1u, (uint8_t)16u));
- HANDLE_CODE(mpdcch_num_repeat_sc_mtch_r14.unpack(bref));
- HANDLE_CODE(mpdcch_start_sf_sc_mtch_r14.unpack(bref));
- HANDLE_CODE(mpdcch_pdsch_hop_cfg_sc_mtch_r14.unpack(bref));
- HANDLE_CODE(mpdcch_pdsch_cemode_cfg_sc_mtch_r14.unpack(bref));
- HANDLE_CODE(mpdcch_pdsch_max_bw_sc_mtch_r14.unpack(bref));
- HANDLE_CODE(mpdcch_offset_sc_mtch_r14.unpack(bref));
- if (p_a_r14_present) {
- HANDLE_CODE(p_a_r14.unpack(bref));
- }
-
- return SRSASN_SUCCESS;
-}
-void sc_mtch_info_br_r14_s::to_json(json_writer& j) const
-{
- j.start_obj();
- j.write_int("sc-mtch-CarrierFreq-r14", sc_mtch_carrier_freq_r14);
- j.write_fieldname("mbmsSessionInfo-r14");
- mbms_session_info_r14.to_json(j);
- j.write_str("g-RNTI-r14", g_rnti_r14.to_string());
- if (sc_mtch_sched_info_r14_present) {
- j.write_fieldname("sc-mtch-schedulingInfo-r14");
- sc_mtch_sched_info_r14.to_json(j);
- }
- if (sc_mtch_neighbour_cell_r14_present) {
- j.write_str("sc-mtch-neighbourCell-r14", sc_mtch_neighbour_cell_r14.to_string());
- }
- j.write_int("mpdcch-Narrowband-SC-MTCH-r14", mpdcch_nb_sc_mtch_r14);
- j.write_str("mpdcch-NumRepetition-SC-MTCH-r14", mpdcch_num_repeat_sc_mtch_r14.to_string());
- j.write_fieldname("mpdcch-StartSF-SC-MTCH-r14");
- mpdcch_start_sf_sc_mtch_r14.to_json(j);
- j.write_str("mpdcch-PDSCH-HoppingConfig-SC-MTCH-r14", mpdcch_pdsch_hop_cfg_sc_mtch_r14.to_string());
- j.write_str("mpdcch-PDSCH-CEmodeConfig-SC-MTCH-r14", mpdcch_pdsch_cemode_cfg_sc_mtch_r14.to_string());
- j.write_str("mpdcch-PDSCH-MaxBandwidth-SC-MTCH-r14", mpdcch_pdsch_max_bw_sc_mtch_r14.to_string());
- j.write_str("mpdcch-Offset-SC-MTCH-r14", mpdcch_offset_sc_mtch_r14.to_string());
- if (p_a_r14_present) {
- j.write_str("p-a-r14", p_a_r14.to_string());
- }
- j.end_obj();
-}
-
-const char* sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_opts::to_string() const
-{
- static const char* options[] = {"r1", "r2", "r4", "r8", "r16", "r32", "r64", "r128", "r256"};
- return convert_enum_idx(options, 9, value, "sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_e_");
-}
-uint16_t sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_opts::to_number() const
-{
- static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256};
- return map_enum_number(options, 9, value, "sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_e_");
-}
-
-void sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::destroy_() {}
-void sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::set(types::options e)
-{
- destroy_();
- type_ = e;
-}
-sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::mpdcch_start_sf_sc_mtch_r14_c_(
- const sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_& other)
-{
- type_ = other.type();
- switch (type_) {
- case types::fdd_r14:
- c.init(other.c.get<fdd_r14_e_>());
- break;
- case types::tdd_r14:
- c.init(other.c.get<tdd_r14_e_>());
- break;
- case types::nulltype:
- break;
- default:
- log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_");
- }
-}
-sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_& sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::operator=(
- const sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_& other)
-{
- if (this == &other) {
- return *this;
- }
- set(other.type());
- switch (type_) {
- case types::fdd_r14:
- c.set(other.c.get<fdd_r14_e_>());
- break;
- case types::tdd_r14:
- c.set(other.c.get<tdd_r14_e_>());
- break;
- case types::nulltype:
- break;
- default:
- log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_");
- }
-
- return *this;
-}
-sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_e_&
-sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::set_fdd_r14()
-{
- set(types::fdd_r14);
- return c.get<fdd_r14_e_>();
-}
-sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_e_&
-sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::set_tdd_r14()
-{
- set(types::tdd_r14);
- return c.get<tdd_r14_e_>();
-}
-void sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::to_json(json_writer& j) const
-{
- j.start_obj();
- switch (type_) {
- case types::fdd_r14:
- j.write_str("fdd-r14", c.get<fdd_r14_e_>().to_string());
- break;
- case types::tdd_r14:
- j.write_str("tdd-r14", c.get<tdd_r14_e_>().to_string());
- break;
- default:
- log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_");
- }
- j.end_obj();
-}
-SRSASN_CODE sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::pack(bit_ref& bref) const
-{
- type_.pack(bref);
- switch (type_) {
- case types::fdd_r14:
- HANDLE_CODE(c.get<fdd_r14_e_>().pack(bref));
- break;
- case types::tdd_r14:
- HANDLE_CODE(c.get<tdd_r14_e_>().pack(bref));
- break;
- default:
- log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_");
- return SRSASN_ERROR_ENCODE_FAIL;
- }
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::unpack(cbit_ref& bref)
-{
- types e;
- e.unpack(bref);
- set(e);
- switch (type_) {
- case types::fdd_r14:
- HANDLE_CODE(c.get<fdd_r14_e_>().unpack(bref));
- break;
- case types::tdd_r14:
- HANDLE_CODE(c.get<tdd_r14_e_>().unpack(bref));
- break;
- default:
- log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_");
- return SRSASN_ERROR_DECODE_FAIL;
- }
- return SRSASN_SUCCESS;
-}
-
-const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_opts::to_string() const
-{
- static const char* options[] = {"v1", "v1dot5", "v2", "v2dot5", "v4", "v5", "v8", "v10"};
- return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_e_");
-}
-float sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_opts::to_number() const
-{
- static const float options[] = {1.0, 1.5, 2.0, 2.5, 4.0, 5.0, 8.0, 10.0};
- return map_enum_number(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_e_");
-}
-const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_opts::to_number_string() const
-{
- static const char* options[] = {"1", "1.5", "2", "2.5", "4", "5", "8", "10"};
- return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_e_");
-}
-
-const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_opts::to_string() const
-{
- static const char* options[] = {"v1", "v2", "v4", "v5", "v8", "v10", "v20"};
- return convert_enum_idx(options, 7, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_e_");
-}
-uint8_t sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_opts::to_number() const
-{
- static const uint8_t options[] = {1, 2, 4, 5, 8, 10, 20};
- return map_enum_number(options, 7, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_e_");
-}
-
-const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::types_opts::to_string() const
-{
- static const char* options[] = {"fdd-r14", "tdd-r14"};
- return convert_enum_idx(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::types");
-}
-
-const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_hop_cfg_sc_mtch_r14_opts::to_string() const
-{
- static const char* options[] = {"on", "off"};
- return convert_enum_idx(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_pdsch_hop_cfg_sc_mtch_r14_e_");
-}
-
-const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_cemode_cfg_sc_mtch_r14_opts::to_string() const
-{
- static const char* options[] = {"ce-ModeA", "ce-ModeB"};
- return convert_enum_idx(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_pdsch_cemode_cfg_sc_mtch_r14_e_");
-}
-
-const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_opts::to_string() const
-{
- static const char* options[] = {"bw1dot4", "bw5"};
- return convert_enum_idx(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_e_");
-}
-float sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_opts::to_number() const
-{
- static const float options[] = {1.4, 5.0};
- return map_enum_number(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_e_");
-}
-const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_opts::to_number_string() const
-{
- static const char* options[] = {"1.4", "5"};
- return convert_enum_idx(options, 2, value, "sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_e_");
-}
-
-const char* sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_opts::to_string() const
-{
- static const char* options[] = {
- "zero", "oneEighth", "oneQuarter", "threeEighth", "oneHalf", "fiveEighth", "threeQuarter", "sevenEighth"};
- return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_e_");
-}
-float sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_opts::to_number() const
-{
- static const float options[] = {0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875};
- return map_enum_number(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_e_");
-}
-const char* sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_opts::to_number_string() const
-{
- static const char* options[] = {"0", "1/8", "1/4", "3/8", "1/2", "5/8", "3/4", "7/8"};
- return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_e_");
-}
-
-const char* sc_mtch_info_br_r14_s::p_a_r14_opts::to_string() const
-{
- static const char* options[] = {"dB-6", "dB-4dot77", "dB-3", "dB-1dot77", "dB0", "dB1", "dB2", "dB3"};
- return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::p_a_r14_e_");
-}
-float sc_mtch_info_br_r14_s::p_a_r14_opts::to_number() const
-{
- static const float options[] = {-6.0, -4.77, -3.0, -1.77, 0.0, 1.0, 2.0, 3.0};
- return map_enum_number(options, 8, value, "sc_mtch_info_br_r14_s::p_a_r14_e_");
-}
-const char* sc_mtch_info_br_r14_s::p_a_r14_opts::to_number_string() const
-{
- static const char* options[] = {"-6", "-4.77", "-3", "-1.77", "0", "1", "2", "3"};
- return convert_enum_idx(options, 8, value, "sc_mtch_info_br_r14_s::p_a_r14_e_");
-}
-
// SC-MTCH-Info-r13 ::= SEQUENCE
SRSASN_CODE sc_mtch_info_r13_s::pack(bit_ref& bref) const
{
@@ -4058,6 +4421,61 @@ const char* sc_mtch_info_r13_s::p_a_r13_opts::to_number_string() const
return convert_enum_idx(options, 8, value, "sc_mtch_info_r13_s::p_a_r13_e_");
}
+// SCPTMConfiguration-BR-v1610 ::= SEQUENCE
+SRSASN_CODE scptm_cfg_br_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(multi_tb_gap_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(pack_dyn_seq_of(bref, sc_mtch_info_list_multi_tb_r16, 0, 128));
+ if (multi_tb_gap_r16_present) {
+ HANDLE_CODE(multi_tb_gap_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE scptm_cfg_br_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(multi_tb_gap_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(unpack_dyn_seq_of(sc_mtch_info_list_multi_tb_r16, bref, 0, 128));
+ if (multi_tb_gap_r16_present) {
+ HANDLE_CODE(multi_tb_gap_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void scptm_cfg_br_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.start_array("sc-MTCH-InfoList-MultiTB-r16");
+ for (const auto& e1 : sc_mtch_info_list_multi_tb_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ if (multi_tb_gap_r16_present) {
+ j.write_str("multiTB-Gap-r16", multi_tb_gap_r16.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+const char* scptm_cfg_br_v1610_s::multi_tb_gap_r16_opts::to_string() const
+{
+ static const char* options[] = {"sf2", "sf4", "sf8", "sf16", "sf32", "sf64", "sf128", "spare"};
+ return convert_enum_idx(options, 8, value, "scptm_cfg_br_v1610_s::multi_tb_gap_r16_e_");
+}
+uint8_t scptm_cfg_br_v1610_s::multi_tb_gap_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {2, 4, 8, 16, 32, 64, 128};
+ return map_enum_number(options, 7, value, "scptm_cfg_br_v1610_s::multi_tb_gap_r16_e_");
+}
+
// SCPTMConfiguration-v1340 ::= SEQUENCE
SRSASN_CODE scptm_cfg_v1340_s::pack(bit_ref& bref) const
{
@@ -4113,6 +4531,9 @@ SRSASN_CODE scptm_cfg_br_r14_s::pack(bit_ref& bref) const
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -4133,6 +4554,9 @@ SRSASN_CODE scptm_cfg_br_r14_s::unpack(cbit_ref& bref)
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -4159,8 +4583,7 @@ void scptm_cfg_br_r14_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -4568,15 +4991,15 @@ const char* init_ue_id_c::types_opts::to_string() const
return convert_enum_idx(options, 2, value, "init_ue_id_c::types");
}
-const char* init_ue_id_minus5_gc_c::types_opts::to_string() const
+const char* init_ue_id_minus5_gc_r15_c::types_opts::to_string() const
{
static const char* options[] = {"ng-5G-S-TMSI-Part1", "randomValue"};
- return convert_enum_idx(options, 2, value, "init_ue_id_minus5_gc_c::types");
+ return convert_enum_idx(options, 2, value, "init_ue_id_minus5_gc_r15_c::types");
}
-int8_t init_ue_id_minus5_gc_c::types_opts::to_number() const
+int8_t init_ue_id_minus5_gc_r15_c::types_opts::to_number() const
{
static const int8_t options[] = {-5};
- return map_enum_number(options, 1, value, "init_ue_id_minus5_gc_c::types");
+ return map_enum_number(options, 1, value, "init_ue_id_minus5_gc_r15_c::types");
}
const char* rrc_conn_resume_request_minus5_gc_r15_ies_s::resume_id_r15_c_::types_opts::to_string() const
@@ -4609,6 +5032,17 @@ const char* rrc_conn_resume_request_r13_s::crit_exts_c_::types_opts::to_string()
return convert_enum_idx(options, 2, value, "rrc_conn_resume_request_r13_s::crit_exts_c_::types");
}
+const char* rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"rrcEarlyDataRequest-5GC-r16", "criticalExtensionsFuture-r16"};
+ return convert_enum_idx(options, 2, value, "rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_::types");
+}
+int8_t rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_::types_opts::to_number() const
+{
+ static const int8_t options[] = {-5};
+ return map_enum_number(options, 1, value, "rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_::types");
+}
+
const char* rrc_early_data_request_r15_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcEarlyDataRequest-r15", "criticalExtensionsFuture"};
@@ -4806,6 +5240,18 @@ const char* rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::types_opts::to
return convert_enum_idx(options, 2, value, "rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::types");
}
+const char* rlf_report_r9_s::failed_nr_pcell_id_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"cellGlobalId", "pci-arfcn"};
+ return convert_enum_idx(options, 2, value, "rlf_report_r9_s::failed_nr_pcell_id_r16_c_::types");
+}
+
+const char* rlf_report_r9_s::reconnect_cell_id_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"nrReconnectCellId", "eutraReconnectCellId"};
+ return convert_enum_idx(options, 2, value, "rlf_report_r9_s::reconnect_cell_id_r16_c_::types");
+}
+
const char* tdm_assist_info_r11_c::types_opts::to_string() const
{
static const char* options[] = {"drx-AssistanceInfo-r11", "idc-SubframePatternList-r11"};
@@ -4818,6 +5264,12 @@ const char* inter_freq_rstd_meas_ind_r10_ies_s::rstd_inter_freq_ind_r10_c_::type
return convert_enum_idx(options, 2, value, "inter_freq_rstd_meas_ind_r10_ies_s::rstd_inter_freq_ind_r10_c_::types");
}
+const char* pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"pur-ReleaseRequest", "pur-SetupRequest"};
+ return convert_enum_idx(options, 2, value, "pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::types");
+}
+
const char* proximity_ind_r9_ies_s::carrier_freq_r9_c_::types_opts::to_string() const
{
static const char* options[] = {"eutra-r9", "utra-r9", "eutra2-v9e0"};
@@ -4832,6 +5284,13 @@ uint8_t proximity_ind_r9_ies_s::carrier_freq_r9_c_::types_opts::to_number() cons
return 0;
}
+const char* ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {
+ "dedicatedInfoNAS-r16", "dedicatedInfoCDMA2000-1XRTT-r16", "dedicatedInfoCDMA2000-HRPD-r16"};
+ return convert_enum_idx(options, 3, value, "ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::types");
+}
+
const char* ul_info_transfer_r8_ies_s::ded_info_type_c_::types_opts::to_string() const
{
static const char* options[] = {"dedicatedInfoNAS", "dedicatedInfoCDMA2000-1XRTT", "dedicatedInfoCDMA2000-HRPD"};
@@ -4855,6 +5314,12 @@ const char* counter_check_resp_s::crit_exts_c_::types_opts::to_string() const
return convert_enum_idx(options, 2, value, "counter_check_resp_s::crit_exts_c_::types");
}
+const char* fail_info_r16_s::crit_exts_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"failureInformation-r16", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "fail_info_r16_s::crit_exts_c_::types");
+}
+
const char* in_dev_coex_ind_r11_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"inDeviceCoexIndication-r11", "spare3", "spare2", "spare1"};
@@ -4879,6 +5344,12 @@ const char* mbms_interest_ind_r11_s::crit_exts_c_::c1_c_::types_opts::to_string(
return convert_enum_idx(options, 4, value, "mbms_interest_ind_r11_s::crit_exts_c_::c1_c_::types");
}
+const char* mcg_fail_info_r16_s::crit_exts_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"mcgFailureInformation", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "mcg_fail_info_r16_s::crit_exts_c_::types");
+}
+
const char* meas_report_app_layer_r15_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"measReportAppLayer-r15", "criticalExtensionsFuture"};
@@ -4892,6 +5363,12 @@ const char* meas_report_s::crit_exts_c_::c1_c_::types_opts::to_string() const
return convert_enum_idx(options, 8, value, "meas_report_s::crit_exts_c_::c1_c_::types");
}
+const char* pur_cfg_request_r16_s::crit_exts_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"purConfigurationRequest", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "pur_cfg_request_r16_s::crit_exts_c_::types");
+}
+
const char* proximity_ind_r9_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"proximityIndication-r9", "spare3", "spare2", "spare1"};
@@ -4977,6 +5454,12 @@ const char* ue_info_resp_r9_s::crit_exts_c_::c1_c_::types_opts::to_string() cons
return convert_enum_idx(options, 4, value, "ue_info_resp_r9_s::crit_exts_c_::c1_c_::types");
}
+const char* ul_ded_msg_segment_r16_s::crit_exts_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"ulDedicatedMessageSegment-r16", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "ul_ded_msg_segment_r16_s::crit_exts_c_::types");
+}
+
const char* ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"ulHandoverPreparationTransfer-r8", "spare3", "spare2", "spare1"};
@@ -4985,10 +5468,16 @@ const char* ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::types_opts::to_string()
const char* ul_info_transfer_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
- static const char* options[] = {"ulInformationTransfer-r8", "spare3", "spare2", "spare1"};
+ static const char* options[] = {"ulInformationTransfer-r8", "ulInformationTransfer-r16", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "ul_info_transfer_s::crit_exts_c_::c1_c_::types");
}
+const char* ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"ulInformationTransferIRAT-r16", "spare3", "spare2", "spare1"};
+ return convert_enum_idx(options, 4, value, "ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::types");
+}
+
const char* ul_info_transfer_mrdc_r15_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"ulInformationTransferMRDC-r15", "spare3", "spare2", "spare1"};
@@ -5040,11 +5529,11 @@ const char* ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::types_opts::to_string()
"scgFailureInformationNR-r15",
"measReportAppLayer-r15",
"failureInformation-r15",
- "spare5",
- "spare4",
- "spare3",
- "spare2",
- "spare1"};
+ "ulDedicatedMessageSegment-r16",
+ "purConfigurationRequest-r16",
+ "failureInformation-r16",
+ "mcgFailureInformation-r16",
+ "ulInformationTransferIRAT-r16"};
return convert_enum_idx(options, 16, value, "ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::types");
}
@@ -5259,63 +5748,36 @@ void mimo_ue_params_v13e0_s::to_json(json_writer& j) const
j.end_obj();
}
-// MeasResult3EUTRA-r15 ::= SEQUENCE
-SRSASN_CODE meas_result3_eutra_r15_s::pack(bit_ref& bref) const
+// MeasResultSCG-FailureMRDC-r15 ::= SEQUENCE
+SRSASN_CODE meas_result_scg_fail_mrdc_r15_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
- HANDLE_CODE(bref.pack(meas_result_serving_cell_r15_present, 1));
- HANDLE_CODE(bref.pack(meas_result_neigh_cell_list_r15_present, 1));
-
- HANDLE_CODE(pack_integer(bref, carrier_freq_r15, (uint32_t)0u, (uint32_t)262143u));
- if (meas_result_serving_cell_r15_present) {
- HANDLE_CODE(meas_result_serving_cell_r15.pack(bref));
- }
- if (meas_result_neigh_cell_list_r15_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_neigh_cell_list_r15, 1, 8));
- }
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_freq_list_eutra_r15, 1, 8));
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE meas_result3_eutra_r15_s::unpack(cbit_ref& bref)
-{
- bref.unpack(ext, 1);
- HANDLE_CODE(bref.unpack(meas_result_serving_cell_r15_present, 1));
- HANDLE_CODE(bref.unpack(meas_result_neigh_cell_list_r15_present, 1));
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= location_info_r16.is_present();
+ group_flags[0] |= log_meas_result_list_bt_r16.is_present();
+ group_flags[0] |= log_meas_result_list_wlan_r16.is_present();
+ group_flags.pack(bref);
- HANDLE_CODE(unpack_integer(carrier_freq_r15, bref, (uint32_t)0u, (uint32_t)262143u));
- if (meas_result_serving_cell_r15_present) {
- HANDLE_CODE(meas_result_serving_cell_r15.unpack(bref));
- }
- if (meas_result_neigh_cell_list_r15_present) {
- HANDLE_CODE(unpack_dyn_seq_of(meas_result_neigh_cell_list_r15, bref, 1, 8));
- }
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
- return SRSASN_SUCCESS;
-}
-void meas_result3_eutra_r15_s::to_json(json_writer& j) const
-{
- j.start_obj();
- j.write_int("carrierFreq-r15", carrier_freq_r15);
- if (meas_result_serving_cell_r15_present) {
- j.write_fieldname("measResultServingCell-r15");
- meas_result_serving_cell_r15.to_json(j);
- }
- if (meas_result_neigh_cell_list_r15_present) {
- j.start_array("measResultNeighCellList-r15");
- for (const auto& e1 : meas_result_neigh_cell_list_r15) {
- e1.to_json(j);
+ HANDLE_CODE(bref.pack(location_info_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(log_meas_result_list_bt_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(log_meas_result_list_wlan_r16.is_present(), 1));
+ if (location_info_r16.is_present()) {
+ HANDLE_CODE(location_info_r16->pack(bref));
+ }
+ if (log_meas_result_list_bt_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *log_meas_result_list_bt_r16, 1, 32));
+ }
+ if (log_meas_result_list_wlan_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *log_meas_result_list_wlan_r16, 1, 32));
+ }
}
- j.end_array();
}
- j.end_obj();
-}
-
-// MeasResultSCG-FailureMRDC-r15 ::= SEQUENCE
-SRSASN_CODE meas_result_scg_fail_mrdc_r15_s::pack(bit_ref& bref) const
-{
- bref.pack(ext, 1);
- HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_freq_list_eutra_r15, 1, 8));
-
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_result_scg_fail_mrdc_r15_s::unpack(cbit_ref& bref)
@@ -5323,6 +5785,33 @@ SRSASN_CODE meas_result_scg_fail_mrdc_r15_s::unpack(cbit_ref& bref)
bref.unpack(ext, 1);
HANDLE_CODE(unpack_dyn_seq_of(meas_result_freq_list_eutra_r15, bref, 1, 8));
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool location_info_r16_present;
+ HANDLE_CODE(bref.unpack(location_info_r16_present, 1));
+ location_info_r16.set_present(location_info_r16_present);
+ bool log_meas_result_list_bt_r16_present;
+ HANDLE_CODE(bref.unpack(log_meas_result_list_bt_r16_present, 1));
+ log_meas_result_list_bt_r16.set_present(log_meas_result_list_bt_r16_present);
+ bool log_meas_result_list_wlan_r16_present;
+ HANDLE_CODE(bref.unpack(log_meas_result_list_wlan_r16_present, 1));
+ log_meas_result_list_wlan_r16.set_present(log_meas_result_list_wlan_r16_present);
+ if (location_info_r16.is_present()) {
+ HANDLE_CODE(location_info_r16->unpack(bref));
+ }
+ if (log_meas_result_list_bt_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*log_meas_result_list_bt_r16, bref, 1, 32));
+ }
+ if (log_meas_result_list_wlan_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*log_meas_result_list_wlan_r16, bref, 1, 32));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
void meas_result_scg_fail_mrdc_r15_s::to_json(json_writer& j) const
@@ -5333,6 +5822,26 @@ void meas_result_scg_fail_mrdc_r15_s::to_json(json_writer& j) const
e1.to_json(j);
}
j.end_array();
+ if (ext) {
+ if (location_info_r16.is_present()) {
+ j.write_fieldname("locationInfo-r16");
+ location_info_r16->to_json(j);
+ }
+ if (log_meas_result_list_bt_r16.is_present()) {
+ j.start_array("logMeasResultListBT-r16");
+ for (const auto& e1 : *log_meas_result_list_bt_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (log_meas_result_list_wlan_r16.is_present()) {
+ j.start_array("logMeasResultListWLAN-r16");
+ for (const auto& e1 : *log_meas_result_list_wlan_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ }
j.end_obj();
}
@@ -5395,6 +5904,18 @@ void scg_fail_info_v12d0b_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+const char* v2x_band_params_eutra_nr_r16_c::types_opts::to_string() const
+{
+ static const char* options[] = {"eutra", "nr"};
+ return convert_enum_idx(options, 2, value, "v2x_band_params_eutra_nr_r16_c::types");
+}
+
+const char* v2x_band_params_eutra_nr_v1630_c::types_opts::to_string() const
+{
+ static const char* options[] = {"eutra", "nr"};
+ return convert_enum_idx(options, 2, value, "v2x_band_params_eutra_nr_v1630_c::types");
+}
+
const char* mbms_params_v1470_s::mbms_max_bw_r14_c_::types_opts::to_string() const
{
static const char* options[] = {"implicitValue", "explicitValue"};
@@ -6114,6 +6635,81 @@ void meas_result_serv_cell_scg_r12_s::to_json(json_writer& j) const
j.end_obj();
}
+// RLF-Report-NB-r16 ::= SEQUENCE
+SRSASN_CODE rlf_report_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(reest_cell_id_r16_present, 1));
+ HANDLE_CODE(bref.pack(location_info_r16_present, 1));
+ HANDLE_CODE(bref.pack(time_since_fail_r16_present, 1));
+
+ HANDLE_CODE(failed_pcell_id_r16.pack(bref));
+ if (reest_cell_id_r16_present) {
+ HANDLE_CODE(reest_cell_id_r16.pack(bref));
+ }
+ if (location_info_r16_present) {
+ HANDLE_CODE(location_info_r16.pack(bref));
+ }
+ HANDLE_CODE(bref.pack(meas_result_last_serv_cell_r16.nrsrq_result_r16_present, 1));
+ HANDLE_CODE(pack_integer(bref, meas_result_last_serv_cell_r16.nrsrp_result_r16, (uint8_t)0u, (uint8_t)113u));
+ if (meas_result_last_serv_cell_r16.nrsrq_result_r16_present) {
+ HANDLE_CODE(pack_integer(bref, meas_result_last_serv_cell_r16.nrsrq_result_r16, (int8_t)-30, (int8_t)46));
+ }
+ if (time_since_fail_r16_present) {
+ HANDLE_CODE(pack_integer(bref, time_since_fail_r16, (uint32_t)0u, (uint32_t)172800u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rlf_report_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(reest_cell_id_r16_present, 1));
+ HANDLE_CODE(bref.unpack(location_info_r16_present, 1));
+ HANDLE_CODE(bref.unpack(time_since_fail_r16_present, 1));
+
+ HANDLE_CODE(failed_pcell_id_r16.unpack(bref));
+ if (reest_cell_id_r16_present) {
+ HANDLE_CODE(reest_cell_id_r16.unpack(bref));
+ }
+ if (location_info_r16_present) {
+ HANDLE_CODE(location_info_r16.unpack(bref));
+ }
+ HANDLE_CODE(bref.unpack(meas_result_last_serv_cell_r16.nrsrq_result_r16_present, 1));
+ HANDLE_CODE(unpack_integer(meas_result_last_serv_cell_r16.nrsrp_result_r16, bref, (uint8_t)0u, (uint8_t)113u));
+ if (meas_result_last_serv_cell_r16.nrsrq_result_r16_present) {
+ HANDLE_CODE(unpack_integer(meas_result_last_serv_cell_r16.nrsrq_result_r16, bref, (int8_t)-30, (int8_t)46));
+ }
+ if (time_since_fail_r16_present) {
+ HANDLE_CODE(unpack_integer(time_since_fail_r16, bref, (uint32_t)0u, (uint32_t)172800u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rlf_report_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("failedPCellId-r16");
+ failed_pcell_id_r16.to_json(j);
+ if (reest_cell_id_r16_present) {
+ j.write_fieldname("reestablishmentCellId-r16");
+ reest_cell_id_r16.to_json(j);
+ }
+ if (location_info_r16_present) {
+ j.write_fieldname("locationInfo-r16");
+ location_info_r16.to_json(j);
+ }
+ j.write_fieldname("measResultLastServCell-r16");
+ j.start_obj();
+ j.write_int("nrsrpResult-r16", meas_result_last_serv_cell_r16.nrsrp_result_r16);
+ if (meas_result_last_serv_cell_r16.nrsrq_result_r16_present) {
+ j.write_int("nrsrqResult-r16", meas_result_last_serv_cell_r16.nrsrq_result_r16);
+ }
+ j.end_obj();
+ if (time_since_fail_r16_present) {
+ j.write_int("timeSinceFailure-r16", time_since_fail_r16);
+ }
+ j.end_obj();
+}
+
// SBCCH-SL-BCH-Message ::= SEQUENCE
SRSASN_CODE sbcch_sl_bch_msg_s::pack(bit_ref& bref) const
{
@@ -8082,6 +8678,7 @@ SRSASN_CODE sl_v2x_precfg_r14_s::pack(bit_ref& bref) const
group_flags[0] |= sync_freq_list_r15.is_present();
group_flags[0] |= slss_tx_multi_freq_r15_present;
group_flags[0] |= v2x_tx_profile_list_r15.is_present();
+ group_flags[1] |= anchor_carrier_freq_list_nr_r16.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -8101,6 +8698,15 @@ SRSASN_CODE sl_v2x_precfg_r14_s::pack(bit_ref& bref) const
HANDLE_CODE(pack_dyn_seq_of(bref, *v2x_tx_profile_list_r15, 1, 256));
}
}
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(anchor_carrier_freq_list_nr_r16.is_present(), 1));
+ if (anchor_carrier_freq_list_nr_r16.is_present()) {
+ HANDLE_CODE(
+ pack_dyn_seq_of(bref, *anchor_carrier_freq_list_nr_r16, 1, 8, integer_packer<uint32_t>(0, 3279165)));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -8119,7 +8725,7 @@ SRSASN_CODE sl_v2x_precfg_r14_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(1);
+ ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -8145,6 +8751,17 @@ SRSASN_CODE sl_v2x_precfg_r14_s::unpack(cbit_ref& bref)
HANDLE_CODE(unpack_dyn_seq_of(*v2x_tx_profile_list_r15, bref, 1, 256));
}
}
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool anchor_carrier_freq_list_nr_r16_present;
+ HANDLE_CODE(bref.unpack(anchor_carrier_freq_list_nr_r16_present, 1));
+ anchor_carrier_freq_list_nr_r16.set_present(anchor_carrier_freq_list_nr_r16_present);
+ if (anchor_carrier_freq_list_nr_r16.is_present()) {
+ HANDLE_CODE(
+ unpack_dyn_seq_of(*anchor_carrier_freq_list_nr_r16, bref, 1, 8, integer_packer<uint32_t>(0, 3279165)));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -8189,6 +8806,13 @@ void sl_v2x_precfg_r14_s::to_json(json_writer& j) const
}
j.end_array();
}
+ if (anchor_carrier_freq_list_nr_r16.is_present()) {
+ j.start_array("anchorCarrierFreqListNR-r16");
+ for (const auto& e1 : *anchor_carrier_freq_list_nr_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
}
j.end_obj();
}
@@ -8214,6 +8838,40 @@ const char* ue_radio_paging_info_s::crit_exts_c_::c1_c_::types_opts::to_string()
return convert_enum_idx(options, 8, value, "ue_radio_paging_info_s::crit_exts_c_::c1_c_::types");
}
+// VarConditionalReconfiguration ::= SEQUENCE
+SRSASN_CODE var_conditional_recfg_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(cond_recfg_list_r16_present, 1));
+
+ if (cond_recfg_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, cond_recfg_list_r16, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE var_conditional_recfg_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(cond_recfg_list_r16_present, 1));
+
+ if (cond_recfg_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(cond_recfg_list_r16, bref, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void var_conditional_recfg_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (cond_recfg_list_r16_present) {
+ j.start_array("condReconfigurationList-r16");
+ for (const auto& e1 : cond_recfg_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
// VarConnEstFailReport-r11 ::= SEQUENCE
SRSASN_CODE var_conn_est_fail_report_r11_s::pack(bit_ref& bref) const
{
@@ -8483,6 +9141,117 @@ void var_log_meas_cfg_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// VarLogMeasConfig-r17 ::= SEQUENCE
+SRSASN_CODE var_log_meas_cfg_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(area_cfg_r10_present, 1));
+ HANDLE_CODE(bref.pack(area_cfg_v1130_present, 1));
+ HANDLE_CODE(bref.pack(target_mbsfn_area_list_r12_present, 1));
+ HANDLE_CODE(bref.pack(bt_name_list_r15_present, 1));
+ HANDLE_CODE(bref.pack(wlan_name_list_r15_present, 1));
+ HANDLE_CODE(bref.pack(logged_event_trigger_cfg_r17_present, 1));
+ HANDLE_CODE(bref.pack(meas_uncom_bar_pre_r17_present, 1));
+
+ if (area_cfg_r10_present) {
+ HANDLE_CODE(area_cfg_r10.pack(bref));
+ }
+ if (area_cfg_v1130_present) {
+ HANDLE_CODE(area_cfg_v1130.pack(bref));
+ }
+ HANDLE_CODE(logging_dur_r10.pack(bref));
+ HANDLE_CODE(logging_interv_r10.pack(bref));
+ if (target_mbsfn_area_list_r12_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, target_mbsfn_area_list_r12, 0, 8));
+ }
+ if (bt_name_list_r15_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, bt_name_list_r15, 1, 4));
+ }
+ if (wlan_name_list_r15_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, wlan_name_list_r15, 1, 4));
+ }
+ if (logged_event_trigger_cfg_r17_present) {
+ HANDLE_CODE(logged_event_trigger_cfg_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE var_log_meas_cfg_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(area_cfg_r10_present, 1));
+ HANDLE_CODE(bref.unpack(area_cfg_v1130_present, 1));
+ HANDLE_CODE(bref.unpack(target_mbsfn_area_list_r12_present, 1));
+ HANDLE_CODE(bref.unpack(bt_name_list_r15_present, 1));
+ HANDLE_CODE(bref.unpack(wlan_name_list_r15_present, 1));
+ HANDLE_CODE(bref.unpack(logged_event_trigger_cfg_r17_present, 1));
+ HANDLE_CODE(bref.unpack(meas_uncom_bar_pre_r17_present, 1));
+
+ if (area_cfg_r10_present) {
+ HANDLE_CODE(area_cfg_r10.unpack(bref));
+ }
+ if (area_cfg_v1130_present) {
+ HANDLE_CODE(area_cfg_v1130.unpack(bref));
+ }
+ HANDLE_CODE(logging_dur_r10.unpack(bref));
+ HANDLE_CODE(logging_interv_r10.unpack(bref));
+ if (target_mbsfn_area_list_r12_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(target_mbsfn_area_list_r12, bref, 0, 8));
+ }
+ if (bt_name_list_r15_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(bt_name_list_r15, bref, 1, 4));
+ }
+ if (wlan_name_list_r15_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(wlan_name_list_r15, bref, 1, 4));
+ }
+ if (logged_event_trigger_cfg_r17_present) {
+ HANDLE_CODE(logged_event_trigger_cfg_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void var_log_meas_cfg_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (area_cfg_r10_present) {
+ j.write_fieldname("areaConfiguration-r10");
+ area_cfg_r10.to_json(j);
+ }
+ if (area_cfg_v1130_present) {
+ j.write_fieldname("areaConfiguration-v1130");
+ area_cfg_v1130.to_json(j);
+ }
+ j.write_str("loggingDuration-r10", logging_dur_r10.to_string());
+ j.write_str("loggingInterval-r10", logging_interv_r10.to_string());
+ if (target_mbsfn_area_list_r12_present) {
+ j.start_array("targetMBSFN-AreaList-r12");
+ for (const auto& e1 : target_mbsfn_area_list_r12) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (bt_name_list_r15_present) {
+ j.start_array("bt-NameList-r15");
+ for (const auto& e1 : bt_name_list_r15) {
+ j.write_str(e1.to_string());
+ }
+ j.end_array();
+ }
+ if (wlan_name_list_r15_present) {
+ j.start_array("wlan-NameList-r15");
+ for (const auto& e1 : wlan_name_list_r15) {
+ j.write_str(e1.to_string());
+ }
+ j.end_array();
+ }
+ if (logged_event_trigger_cfg_r17_present) {
+ j.write_fieldname("loggedEventTriggerConfig-r17");
+ logged_event_trigger_cfg_r17.to_json(j);
+ }
+ if (meas_uncom_bar_pre_r17_present) {
+ j.write_str("measUncomBarPre-r17", "true");
+ }
+ j.end_obj();
+}
+
// VarLogMeasReport-r10 ::= SEQUENCE
SRSASN_CODE var_log_meas_report_r10_s::pack(bit_ref& bref) const
{
@@ -8616,6 +9385,55 @@ uint16_t var_meas_idle_cfg_r15_s::meas_idle_dur_r15_opts::to_number() const
return map_enum_number(options, 7, value, "var_meas_idle_cfg_r15_s::meas_idle_dur_r15_e_");
}
+// VarMeasIdleConfig-r16 ::= SEQUENCE
+SRSASN_CODE var_meas_idle_cfg_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(meas_idle_carrier_list_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(validity_area_list_r16_present, 1));
+
+ if (meas_idle_carrier_list_nr_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_idle_carrier_list_nr_r16, 1, 8));
+ }
+ if (validity_area_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, validity_area_list_r16, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE var_meas_idle_cfg_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(meas_idle_carrier_list_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(validity_area_list_r16_present, 1));
+
+ if (meas_idle_carrier_list_nr_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_idle_carrier_list_nr_r16, bref, 1, 8));
+ }
+ if (validity_area_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(validity_area_list_r16, bref, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void var_meas_idle_cfg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (meas_idle_carrier_list_nr_r16_present) {
+ j.start_array("measIdleCarrierListNR-r16");
+ for (const auto& e1 : meas_idle_carrier_list_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (validity_area_list_r16_present) {
+ j.start_array("validityAreaList-r16");
+ for (const auto& e1 : validity_area_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
// VarMeasIdleReport-r15 ::= SEQUENCE
SRSASN_CODE var_meas_idle_report_r15_s::pack(bit_ref& bref) const
{
@@ -8640,6 +9458,59 @@ void var_meas_idle_report_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// VarMeasIdleReport-r16 ::= SEQUENCE
+SRSASN_CODE var_meas_idle_report_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(meas_report_idle_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_report_idle_nr_r16_present, 1));
+
+ if (meas_report_idle_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_report_idle_r16, 1, 5, SeqOfPacker<Packer>(1, 8, Packer())));
+ }
+ if (meas_report_idle_nr_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_report_idle_nr_r16, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE var_meas_idle_report_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(meas_report_idle_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_report_idle_nr_r16_present, 1));
+
+ if (meas_report_idle_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_report_idle_r16, bref, 1, 5, SeqOfPacker<Packer>(1, 8, Packer())));
+ }
+ if (meas_report_idle_nr_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_report_idle_nr_r16, bref, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void var_meas_idle_report_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (meas_report_idle_r16_present) {
+ j.start_array("measReportIdle-r16");
+ for (const auto& e1 : meas_report_idle_r16) {
+ j.start_array();
+ for (const auto& e2 : e1) {
+ e2.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_array();
+ }
+ if (meas_report_idle_nr_r16_present) {
+ j.start_array("measReportIdleNR-r16");
+ for (const auto& e1 : meas_report_idle_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
// VarMeasReport ::= SEQUENCE
SRSASN_CODE var_meas_report_s::pack(bit_ref& bref) const
{
@@ -8721,6 +9592,34 @@ void var_meas_report_s::to_json(json_writer& j) const
j.end_obj();
}
+// VarRLF-Report-NB-r16 ::= SEQUENCE
+SRSASN_CODE var_rlf_report_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(rlf_report_r16.pack(bref));
+ HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_list_r16, 1, 16));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE var_rlf_report_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(rlf_report_r16.unpack(bref));
+ HANDLE_CODE(unpack_dyn_seq_of(plmn_id_list_r16, bref, 1, 16));
+
+ return SRSASN_SUCCESS;
+}
+void var_rlf_report_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("rlf-Report-r16");
+ rlf_report_r16.to_json(j);
+ j.start_array("plmn-IdentityList-r16");
+ for (const auto& e1 : plmn_id_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.end_obj();
+}
+
// VarRLF-Report-r10 ::= SEQUENCE
SRSASN_CODE var_rlf_report_r10_s::pack(bit_ref& bref) const
{
diff --git a/lib/src/asn1/rrc/bcch_msg.cc b/lib/src/asn1/rrc/bcch_msg.cc
index 02211a57d..08f81e4a6 100644
--- a/lib/src/asn1/rrc/bcch_msg.cc
+++ b/lib/src/asn1/rrc/bcch_msg.cc
@@ -261,6 +261,65 @@ void neigh_cells_per_bandclass_cdma2000_v920_s::to_json(json_writer& j) const
j.end_obj();
}
+// PhysCellIdRangeNR-r16 ::= SEQUENCE
+SRSASN_CODE pci_range_nr_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(range_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, start, (uint16_t)0u, (uint16_t)1007u));
+ if (range_present) {
+ HANDLE_CODE(range.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pci_range_nr_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(range_present, 1));
+
+ HANDLE_CODE(unpack_integer(start, bref, (uint16_t)0u, (uint16_t)1007u));
+ if (range_present) {
+ HANDLE_CODE(range.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void pci_range_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("start", start);
+ if (range_present) {
+ j.write_str("range", range.to_string());
+ }
+ j.end_obj();
+}
+
+const char* pci_range_nr_r16_s::range_opts::to_string() const
+{
+ static const char* options[] = {"n4",
+ "n8",
+ "n12",
+ "n16",
+ "n24",
+ "n32",
+ "n48",
+ "n64",
+ "n84",
+ "n96",
+ "n128",
+ "n168",
+ "n252",
+ "n504",
+ "n1008",
+ "spare1"};
+ return convert_enum_idx(options, 16, value, "pci_range_nr_r16_s::range_e_");
+}
+uint16_t pci_range_nr_r16_s::range_opts::to_number() const
+{
+ static const uint16_t options[] = {4, 8, 12, 16, 24, 32, 48, 64, 84, 96, 128, 168, 252, 504, 1008};
+ return map_enum_number(options, 15, value, "pci_range_nr_r16_s::range_e_");
+}
+
// RedistributionNeighCell-r13 ::= SEQUENCE
SRSASN_CODE redist_neigh_cell_r13_s::pack(bit_ref& bref) const
{
@@ -331,6 +390,38 @@ void ac_barr_cfg1_xrtt_r9_s::to_json(json_writer& j) const
j.end_obj();
}
+// BeamMeasConfigIdleNR-r16 ::= SEQUENCE
+SRSASN_CODE beam_meas_cfg_idle_nr_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(report_quant_rs_idx_nr_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, max_report_rs_idx_r16, (uint8_t)0u, (uint8_t)32u));
+ HANDLE_CODE(bref.pack(report_rs_idx_results_nr_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE beam_meas_cfg_idle_nr_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(report_quant_rs_idx_nr_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(max_report_rs_idx_r16, bref, (uint8_t)0u, (uint8_t)32u));
+ HANDLE_CODE(bref.unpack(report_rs_idx_results_nr_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+void beam_meas_cfg_idle_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("reportQuantityRS-IndexNR-r16", report_quant_rs_idx_nr_r16.to_string());
+ j.write_int("maxReportRS-Index-r16", max_report_rs_idx_r16);
+ j.write_bool("reportRS-IndexResultsNR-r16", report_rs_idx_results_nr_r16);
+ j.end_obj();
+}
+
+const char* beam_meas_cfg_idle_nr_r16_s::report_quant_rs_idx_nr_r16_opts::to_string() const
+{
+ static const char* options[] = {"rsrp", "rsrq", "both"};
+ return convert_enum_idx(options, 3, value, "beam_meas_cfg_idle_nr_r16_s::report_quant_rs_idx_nr_r16_e_");
+}
+
// CSFB-RegistrationParam1XRTT ::= SEQUENCE
SRSASN_CODE csfb_regist_param1_xrtt_s::pack(bit_ref& bref) const
{
@@ -474,6 +565,26 @@ void inter_freq_neigh_cell_info_s::to_json(json_writer& j) const
j.end_obj();
}
+// InterFreqNeighCellInfo-v1610 ::= SEQUENCE
+SRSASN_CODE inter_freq_neigh_cell_info_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(rss_meas_pwr_bias_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE inter_freq_neigh_cell_info_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(rss_meas_pwr_bias_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void inter_freq_neigh_cell_info_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("rss-MeasPowerBias-r16", rss_meas_pwr_bias_r16.to_string());
+ j.end_obj();
+}
+
// PLMN-IdentityInfo2-r12 ::= CHOICE
void plmn_id_info2_r12_c::destroy_()
{
@@ -774,6 +885,442 @@ void uac_barr_per_cat_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// MBSFN-AreaInfo-r16 ::= SEQUENCE
+SRSASN_CODE mbsfn_area_info_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(time_separation_r16_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, mbsfn_area_id_r16, (uint16_t)0u, (uint16_t)255u));
+ HANDLE_CODE(pack_integer(bref, notif_ind_r16, (uint8_t)0u, (uint8_t)7u));
+ HANDLE_CODE(mcch_cfg_r16.mcch_repeat_period_r16.pack(bref));
+ HANDLE_CODE(mcch_cfg_r16.mcch_mod_period_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, mcch_cfg_r16.mcch_offset_r16, (uint8_t)0u, (uint8_t)10u));
+ HANDLE_CODE(mcch_cfg_r16.sf_alloc_info_r16.pack(bref));
+ HANDLE_CODE(mcch_cfg_r16.sig_mcs_r16.pack(bref));
+ HANDLE_CODE(subcarrier_spacing_mbms_r16.pack(bref));
+ if (time_separation_r16_present) {
+ HANDLE_CODE(time_separation_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mbsfn_area_info_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(time_separation_r16_present, 1));
+
+ HANDLE_CODE(unpack_integer(mbsfn_area_id_r16, bref, (uint16_t)0u, (uint16_t)255u));
+ HANDLE_CODE(unpack_integer(notif_ind_r16, bref, (uint8_t)0u, (uint8_t)7u));
+ HANDLE_CODE(mcch_cfg_r16.mcch_repeat_period_r16.unpack(bref));
+ HANDLE_CODE(mcch_cfg_r16.mcch_mod_period_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(mcch_cfg_r16.mcch_offset_r16, bref, (uint8_t)0u, (uint8_t)10u));
+ HANDLE_CODE(mcch_cfg_r16.sf_alloc_info_r16.unpack(bref));
+ HANDLE_CODE(mcch_cfg_r16.sig_mcs_r16.unpack(bref));
+ HANDLE_CODE(subcarrier_spacing_mbms_r16.unpack(bref));
+ if (time_separation_r16_present) {
+ HANDLE_CODE(time_separation_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void mbsfn_area_info_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("mbsfn-AreaId-r16", mbsfn_area_id_r16);
+ j.write_int("notificationIndicator-r16", notif_ind_r16);
+ j.write_fieldname("mcch-Config-r16");
+ j.start_obj();
+ j.write_str("mcch-RepetitionPeriod-r16", mcch_cfg_r16.mcch_repeat_period_r16.to_string());
+ j.write_str("mcch-ModificationPeriod-r16", mcch_cfg_r16.mcch_mod_period_r16.to_string());
+ j.write_int("mcch-Offset-r16", mcch_cfg_r16.mcch_offset_r16);
+ j.write_str("sf-AllocInfo-r16", mcch_cfg_r16.sf_alloc_info_r16.to_string());
+ j.write_str("signallingMCS-r16", mcch_cfg_r16.sig_mcs_r16.to_string());
+ j.end_obj();
+ j.write_str("subcarrierSpacingMBMS-r16", subcarrier_spacing_mbms_r16.to_string());
+ if (time_separation_r16_present) {
+ j.write_str("timeSeparation-r16", time_separation_r16.to_string());
+ }
+ j.end_obj();
+}
+
+const char* mbsfn_area_info_r16_s::mcch_cfg_r16_s_::mcch_repeat_period_r16_opts::to_string() const
+{
+ static const char* options[] = {"rf1",
+ "rf2",
+ "rf4",
+ "rf8",
+ "rf16",
+ "rf32",
+ "rf64",
+ "rf128",
+ "rf256",
+ "spare7",
+ "spare6",
+ "spare5",
+ "spare4",
+ "spare3",
+ "spare2",
+ "spare1"};
+ return convert_enum_idx(options, 16, value, "mbsfn_area_info_r16_s::mcch_cfg_r16_s_::mcch_repeat_period_r16_e_");
+}
+uint16_t mbsfn_area_info_r16_s::mcch_cfg_r16_s_::mcch_repeat_period_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256};
+ return map_enum_number(options, 9, value, "mbsfn_area_info_r16_s::mcch_cfg_r16_s_::mcch_repeat_period_r16_e_");
+}
+
+const char* mbsfn_area_info_r16_s::mcch_cfg_r16_s_::mcch_mod_period_r16_opts::to_string() const
+{
+ static const char* options[] = {"rf1",
+ "rf2",
+ "rf4",
+ "rf8",
+ "rf16",
+ "rf32",
+ "rf64",
+ "rf128",
+ "rf256",
+ "rf512",
+ "rf1024",
+ "spare5",
+ "spare4",
+ "spare3",
+ "spare2",
+ "spare1"};
+ return convert_enum_idx(options, 16, value, "mbsfn_area_info_r16_s::mcch_cfg_r16_s_::mcch_mod_period_r16_e_");
+}
+uint16_t mbsfn_area_info_r16_s::mcch_cfg_r16_s_::mcch_mod_period_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024};
+ return map_enum_number(options, 11, value, "mbsfn_area_info_r16_s::mcch_cfg_r16_s_::mcch_mod_period_r16_e_");
+}
+
+const char* mbsfn_area_info_r16_s::mcch_cfg_r16_s_::sig_mcs_r16_opts::to_string() const
+{
+ static const char* options[] = {"n2", "n7", "n13", "n19"};
+ return convert_enum_idx(options, 4, value, "mbsfn_area_info_r16_s::mcch_cfg_r16_s_::sig_mcs_r16_e_");
+}
+uint8_t mbsfn_area_info_r16_s::mcch_cfg_r16_s_::sig_mcs_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {2, 7, 13, 19};
+ return map_enum_number(options, 4, value, "mbsfn_area_info_r16_s::mcch_cfg_r16_s_::sig_mcs_r16_e_");
+}
+
+const char* mbsfn_area_info_r16_s::subcarrier_spacing_mbms_r16_opts::to_string() const
+{
+ static const char* options[] = {
+ "kHz7dot5", "kHz2dot5", "kHz1dot25", "kHz0dot37", "kHz15-v1710", "spare3", "spare2", "spare1"};
+ return convert_enum_idx(options, 8, value, "mbsfn_area_info_r16_s::subcarrier_spacing_mbms_r16_e_");
+}
+float mbsfn_area_info_r16_s::subcarrier_spacing_mbms_r16_opts::to_number() const
+{
+ static const float options[] = {7.5, 2.5, 1.25, 0.37, 15.0};
+ return map_enum_number(options, 5, value, "mbsfn_area_info_r16_s::subcarrier_spacing_mbms_r16_e_");
+}
+const char* mbsfn_area_info_r16_s::subcarrier_spacing_mbms_r16_opts::to_number_string() const
+{
+ static const char* options[] = {"7.5", "2.5", "1.25", "0.37", "15"};
+ return convert_enum_idx(options, 8, value, "mbsfn_area_info_r16_s::subcarrier_spacing_mbms_r16_e_");
+}
+
+const char* mbsfn_area_info_r16_s::time_separation_r16_opts::to_string() const
+{
+ static const char* options[] = {"sl2", "sl4"};
+ return convert_enum_idx(options, 2, value, "mbsfn_area_info_r16_s::time_separation_r16_e_");
+}
+uint8_t mbsfn_area_info_r16_s::time_separation_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {2, 4};
+ return map_enum_number(options, 2, value, "mbsfn_area_info_r16_s::time_separation_r16_e_");
+}
+
+// MTC-SSB2-LP-NR-r16 ::= SEQUENCE
+SRSASN_CODE mtc_ssb2_lp_nr_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pci_list_r16_present, 1));
+
+ if (pci_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, pci_list_r16, 1, 64, integer_packer<uint16_t>(0, 1007)));
+ }
+ HANDLE_CODE(periodicity_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mtc_ssb2_lp_nr_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pci_list_r16_present, 1));
+
+ if (pci_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(pci_list_r16, bref, 1, 64, integer_packer<uint16_t>(0, 1007)));
+ }
+ HANDLE_CODE(periodicity_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void mtc_ssb2_lp_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pci_list_r16_present) {
+ j.start_array("pci-List-r16");
+ for (const auto& e1 : pci_list_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ j.write_str("periodicity-r16", periodicity_r16.to_string());
+ j.end_obj();
+}
+
+const char* mtc_ssb2_lp_nr_r16_s::periodicity_r16_opts::to_string() const
+{
+ static const char* options[] = {"sf10", "sf20", "sf40", "sf80", "sf160", "spare3", "spare2", "spare1"};
+ return convert_enum_idx(options, 8, value, "mtc_ssb2_lp_nr_r16_s::periodicity_r16_e_");
+}
+uint8_t mtc_ssb2_lp_nr_r16_s::periodicity_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {10, 20, 40, 80, 160};
+ return map_enum_number(options, 5, value, "mtc_ssb2_lp_nr_r16_s::periodicity_r16_e_");
+}
+
+// MeasIdleCarrierNR-r16 ::= SEQUENCE
+SRSASN_CODE meas_idle_carrier_nr_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(freq_band_list_present, 1));
+ HANDLE_CODE(bref.pack(meas_cell_list_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(quality_thres_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(ssb_meas_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(beam_meas_cfg_idle_r16_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, carrier_freq_nr_r16, (uint32_t)0u, (uint32_t)3279165u));
+ HANDLE_CODE(subcarrier_spacing_ssb_r16.pack(bref));
+ if (freq_band_list_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list, 1, 32, integer_packer<uint16_t>(1, 1024)));
+ }
+ if (meas_cell_list_nr_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_cell_list_nr_r16, 1, 8));
+ }
+ HANDLE_CODE(report_quantities_nr_r16.pack(bref));
+ if (quality_thres_nr_r16_present) {
+ HANDLE_CODE(bref.pack(quality_thres_nr_r16.idle_rsrp_thres_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(quality_thres_nr_r16.idle_rsrq_thres_nr_r16_present, 1));
+ if (quality_thres_nr_r16.idle_rsrp_thres_nr_r16_present) {
+ HANDLE_CODE(pack_integer(bref, quality_thres_nr_r16.idle_rsrp_thres_nr_r16, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (quality_thres_nr_r16.idle_rsrq_thres_nr_r16_present) {
+ HANDLE_CODE(pack_integer(bref, quality_thres_nr_r16.idle_rsrq_thres_nr_r16, (uint8_t)0u, (uint8_t)127u));
+ }
+ }
+ if (ssb_meas_cfg_r16_present) {
+ HANDLE_CODE(bref.pack(ssb_meas_cfg_r16.max_rs_idx_cell_qual_r16_present, 1));
+ HANDLE_CODE(bref.pack(ssb_meas_cfg_r16.thresh_rs_idx_r16_present, 1));
+ HANDLE_CODE(bref.pack(ssb_meas_cfg_r16.meas_timing_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(ssb_meas_cfg_r16.ssb_to_measure_r16_present, 1));
+ HANDLE_CODE(bref.pack(ssb_meas_cfg_r16.ss_rssi_meas_r16_present, 1));
+ if (ssb_meas_cfg_r16.max_rs_idx_cell_qual_r16_present) {
+ HANDLE_CODE(pack_integer(bref, ssb_meas_cfg_r16.max_rs_idx_cell_qual_r16, (uint8_t)1u, (uint8_t)16u));
+ }
+ if (ssb_meas_cfg_r16.thresh_rs_idx_r16_present) {
+ HANDLE_CODE(ssb_meas_cfg_r16.thresh_rs_idx_r16.pack(bref));
+ }
+ if (ssb_meas_cfg_r16.meas_timing_cfg_r16_present) {
+ HANDLE_CODE(ssb_meas_cfg_r16.meas_timing_cfg_r16.pack(bref));
+ }
+ if (ssb_meas_cfg_r16.ssb_to_measure_r16_present) {
+ HANDLE_CODE(ssb_meas_cfg_r16.ssb_to_measure_r16.pack(bref));
+ }
+ HANDLE_CODE(bref.pack(ssb_meas_cfg_r16.derive_ssb_idx_from_cell_r16, 1));
+ if (ssb_meas_cfg_r16.ss_rssi_meas_r16_present) {
+ HANDLE_CODE(ssb_meas_cfg_r16.ss_rssi_meas_r16.pack(bref));
+ }
+ }
+ if (beam_meas_cfg_idle_r16_present) {
+ HANDLE_CODE(beam_meas_cfg_idle_r16.pack(bref));
+ }
+
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= subcarrier_spacing_ssb_r17_present;
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(subcarrier_spacing_ssb_r17_present, 1));
+ if (subcarrier_spacing_ssb_r17_present) {
+ HANDLE_CODE(subcarrier_spacing_ssb_r17.pack(bref));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_idle_carrier_nr_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(freq_band_list_present, 1));
+ HANDLE_CODE(bref.unpack(meas_cell_list_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(quality_thres_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ssb_meas_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(beam_meas_cfg_idle_r16_present, 1));
+
+ HANDLE_CODE(unpack_integer(carrier_freq_nr_r16, bref, (uint32_t)0u, (uint32_t)3279165u));
+ HANDLE_CODE(subcarrier_spacing_ssb_r16.unpack(bref));
+ if (freq_band_list_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(freq_band_list, bref, 1, 32, integer_packer<uint16_t>(1, 1024)));
+ }
+ if (meas_cell_list_nr_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_cell_list_nr_r16, bref, 1, 8));
+ }
+ HANDLE_CODE(report_quantities_nr_r16.unpack(bref));
+ if (quality_thres_nr_r16_present) {
+ HANDLE_CODE(bref.unpack(quality_thres_nr_r16.idle_rsrp_thres_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(quality_thres_nr_r16.idle_rsrq_thres_nr_r16_present, 1));
+ if (quality_thres_nr_r16.idle_rsrp_thres_nr_r16_present) {
+ HANDLE_CODE(unpack_integer(quality_thres_nr_r16.idle_rsrp_thres_nr_r16, bref, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (quality_thres_nr_r16.idle_rsrq_thres_nr_r16_present) {
+ HANDLE_CODE(unpack_integer(quality_thres_nr_r16.idle_rsrq_thres_nr_r16, bref, (uint8_t)0u, (uint8_t)127u));
+ }
+ }
+ if (ssb_meas_cfg_r16_present) {
+ HANDLE_CODE(bref.unpack(ssb_meas_cfg_r16.max_rs_idx_cell_qual_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ssb_meas_cfg_r16.thresh_rs_idx_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ssb_meas_cfg_r16.meas_timing_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ssb_meas_cfg_r16.ssb_to_measure_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ssb_meas_cfg_r16.ss_rssi_meas_r16_present, 1));
+ if (ssb_meas_cfg_r16.max_rs_idx_cell_qual_r16_present) {
+ HANDLE_CODE(unpack_integer(ssb_meas_cfg_r16.max_rs_idx_cell_qual_r16, bref, (uint8_t)1u, (uint8_t)16u));
+ }
+ if (ssb_meas_cfg_r16.thresh_rs_idx_r16_present) {
+ HANDLE_CODE(ssb_meas_cfg_r16.thresh_rs_idx_r16.unpack(bref));
+ }
+ if (ssb_meas_cfg_r16.meas_timing_cfg_r16_present) {
+ HANDLE_CODE(ssb_meas_cfg_r16.meas_timing_cfg_r16.unpack(bref));
+ }
+ if (ssb_meas_cfg_r16.ssb_to_measure_r16_present) {
+ HANDLE_CODE(ssb_meas_cfg_r16.ssb_to_measure_r16.unpack(bref));
+ }
+ HANDLE_CODE(bref.unpack(ssb_meas_cfg_r16.derive_ssb_idx_from_cell_r16, 1));
+ if (ssb_meas_cfg_r16.ss_rssi_meas_r16_present) {
+ HANDLE_CODE(ssb_meas_cfg_r16.ss_rssi_meas_r16.unpack(bref));
+ }
+ }
+ if (beam_meas_cfg_idle_r16_present) {
+ HANDLE_CODE(beam_meas_cfg_idle_r16.unpack(bref));
+ }
+
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(subcarrier_spacing_ssb_r17_present, 1));
+ if (subcarrier_spacing_ssb_r17_present) {
+ HANDLE_CODE(subcarrier_spacing_ssb_r17.unpack(bref));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+void meas_idle_carrier_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("carrierFreqNR-r16", carrier_freq_nr_r16);
+ j.write_str("subcarrierSpacingSSB-r16", subcarrier_spacing_ssb_r16.to_string());
+ if (freq_band_list_present) {
+ j.start_array("frequencyBandList");
+ for (const auto& e1 : freq_band_list) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ if (meas_cell_list_nr_r16_present) {
+ j.start_array("measCellListNR-r16");
+ for (const auto& e1 : meas_cell_list_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.write_str("reportQuantitiesNR-r16", report_quantities_nr_r16.to_string());
+ if (quality_thres_nr_r16_present) {
+ j.write_fieldname("qualityThresholdNR-r16");
+ j.start_obj();
+ if (quality_thres_nr_r16.idle_rsrp_thres_nr_r16_present) {
+ j.write_int("idleRSRP-ThresholdNR-r16", quality_thres_nr_r16.idle_rsrp_thres_nr_r16);
+ }
+ if (quality_thres_nr_r16.idle_rsrq_thres_nr_r16_present) {
+ j.write_int("idleRSRQ-ThresholdNR-r16", quality_thres_nr_r16.idle_rsrq_thres_nr_r16);
+ }
+ j.end_obj();
+ }
+ if (ssb_meas_cfg_r16_present) {
+ j.write_fieldname("ssb-MeasConfig-r16");
+ j.start_obj();
+ if (ssb_meas_cfg_r16.max_rs_idx_cell_qual_r16_present) {
+ j.write_int("maxRS-IndexCellQual-r16", ssb_meas_cfg_r16.max_rs_idx_cell_qual_r16);
+ }
+ if (ssb_meas_cfg_r16.thresh_rs_idx_r16_present) {
+ j.write_fieldname("threshRS-Index-r16");
+ ssb_meas_cfg_r16.thresh_rs_idx_r16.to_json(j);
+ }
+ if (ssb_meas_cfg_r16.meas_timing_cfg_r16_present) {
+ j.write_fieldname("measTimingConfig-r16");
+ ssb_meas_cfg_r16.meas_timing_cfg_r16.to_json(j);
+ }
+ if (ssb_meas_cfg_r16.ssb_to_measure_r16_present) {
+ j.write_fieldname("ssb-ToMeasure-r16");
+ ssb_meas_cfg_r16.ssb_to_measure_r16.to_json(j);
+ }
+ j.write_bool("deriveSSB-IndexFromCell-r16", ssb_meas_cfg_r16.derive_ssb_idx_from_cell_r16);
+ if (ssb_meas_cfg_r16.ss_rssi_meas_r16_present) {
+ j.write_fieldname("ss-RSSI-Measurement-r16");
+ ssb_meas_cfg_r16.ss_rssi_meas_r16.to_json(j);
+ }
+ j.end_obj();
+ }
+ if (beam_meas_cfg_idle_r16_present) {
+ j.write_fieldname("beamMeasConfigIdle-r16");
+ beam_meas_cfg_idle_r16.to_json(j);
+ }
+ if (ext) {
+ if (subcarrier_spacing_ssb_r17_present) {
+ j.write_str("subcarrierSpacingSSB-r17", subcarrier_spacing_ssb_r17.to_string());
+ }
+ }
+ j.end_obj();
+}
+
+const char* meas_idle_carrier_nr_r16_s::subcarrier_spacing_ssb_r16_opts::to_string() const
+{
+ static const char* options[] = {"kHz15", "kHz30", "kHz120", "kHz240"};
+ return convert_enum_idx(options, 4, value, "meas_idle_carrier_nr_r16_s::subcarrier_spacing_ssb_r16_e_");
+}
+uint8_t meas_idle_carrier_nr_r16_s::subcarrier_spacing_ssb_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {15, 30, 120, 240};
+ return map_enum_number(options, 4, value, "meas_idle_carrier_nr_r16_s::subcarrier_spacing_ssb_r16_e_");
+}
+
+const char* meas_idle_carrier_nr_r16_s::report_quantities_nr_r16_opts::to_string() const
+{
+ static const char* options[] = {"rsrp", "rsrq", "both"};
+ return convert_enum_idx(options, 3, value, "meas_idle_carrier_nr_r16_s::report_quantities_nr_r16_e_");
+}
+
+const char* meas_idle_carrier_nr_r16_s::subcarrier_spacing_ssb_r17_opts::to_string() const
+{
+ static const char* options[] = {"kHz480", "spare1"};
+ return convert_enum_idx(options, 2, value, "meas_idle_carrier_nr_r16_s::subcarrier_spacing_ssb_r17_e_");
+}
+uint16_t meas_idle_carrier_nr_r16_s::subcarrier_spacing_ssb_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {480};
+ return map_enum_number(options, 1, value, "meas_idle_carrier_nr_r16_s::subcarrier_spacing_ssb_r17_e_");
+}
+
// NeighCellCDMA2000 ::= SEQUENCE
SRSASN_CODE neigh_cell_cdma2000_s::pack(bit_ref& bref) const
{
@@ -1146,6 +1693,93 @@ void sl_disc_cfg_other_inter_freq_r13_s::to_json(json_writer& j) const
j.end_obj();
}
+// TLE-EphemerisParameters-r17 ::= SEQUENCE
+SRSASN_CODE tle_ephemeris_params_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, inclination_r17, (uint32_t)0u, (uint32_t)2097151u));
+ HANDLE_CODE(pack_integer(bref, argument_perigee_r17, (uint32_t)0u, (uint32_t)4194303u));
+ HANDLE_CODE(pack_integer(bref, right_ascension_r17, (uint32_t)0u, (uint32_t)4194303u));
+ HANDLE_CODE(pack_integer(bref, mean_anomaly_r17, (uint32_t)0u, (uint32_t)4194303u));
+ HANDLE_CODE(pack_integer(bref, eccentricity_r17, (uint32_t)0u, (uint32_t)16777215u));
+ HANDLE_CODE(pack_integer(bref, mean_motion_r17, (uint64_t)0u, (uint64_t)17179869183u));
+ HANDLE_CODE(pack_integer(bref, bstar_decimal_r17, (int32_t)-99999, (int32_t)99999));
+ HANDLE_CODE(pack_integer(bref, bstar_exponent_r17, (int8_t)-9, (int8_t)9));
+ HANDLE_CODE(pack_integer(bref, epoch_star_r17, (int32_t)-1048575, (int32_t)1048575));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE tle_ephemeris_params_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(inclination_r17, bref, (uint32_t)0u, (uint32_t)2097151u));
+ HANDLE_CODE(unpack_integer(argument_perigee_r17, bref, (uint32_t)0u, (uint32_t)4194303u));
+ HANDLE_CODE(unpack_integer(right_ascension_r17, bref, (uint32_t)0u, (uint32_t)4194303u));
+ HANDLE_CODE(unpack_integer(mean_anomaly_r17, bref, (uint32_t)0u, (uint32_t)4194303u));
+ HANDLE_CODE(unpack_integer(eccentricity_r17, bref, (uint32_t)0u, (uint32_t)16777215u));
+ HANDLE_CODE(unpack_integer(mean_motion_r17, bref, (uint64_t)0u, (uint64_t)17179869183u));
+ HANDLE_CODE(unpack_integer(bstar_decimal_r17, bref, (int32_t)-99999, (int32_t)99999));
+ HANDLE_CODE(unpack_integer(bstar_exponent_r17, bref, (int8_t)-9, (int8_t)9));
+ HANDLE_CODE(unpack_integer(epoch_star_r17, bref, (int32_t)-1048575, (int32_t)1048575));
+
+ return SRSASN_SUCCESS;
+}
+void tle_ephemeris_params_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("inclination-r17", inclination_r17);
+ j.write_int("argumentPerigee-r17", argument_perigee_r17);
+ j.write_int("rightAscension-r17", right_ascension_r17);
+ j.write_int("meanAnomaly-r17", mean_anomaly_r17);
+ j.write_int("eccentricity-r17", eccentricity_r17);
+ j.write_int("meanMotion-r17", mean_motion_r17);
+ j.write_int("bStarDecimal-r17", bstar_decimal_r17);
+ j.write_int("bStarExponent-r17", bstar_exponent_r17);
+ j.write_int("epochStar-r17", epoch_star_r17);
+ j.end_obj();
+}
+
+// CarrierFreqNBIOT-r16 ::= SEQUENCE
+SRSASN_CODE carrier_freq_nbiot_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, carrier_freq_r16, (uint32_t)0u, (uint32_t)262143u));
+ HANDLE_CODE(carrier_freq_offset_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE carrier_freq_nbiot_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(carrier_freq_r16, bref, (uint32_t)0u, (uint32_t)262143u));
+ HANDLE_CODE(carrier_freq_offset_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void carrier_freq_nbiot_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("carrierFreq-r16", carrier_freq_r16);
+ j.write_str("carrierFreqOffset-r16", carrier_freq_offset_r16.to_string());
+ j.end_obj();
+}
+
+const char* carrier_freq_nbiot_r16_s::carrier_freq_offset_r16_opts::to_string() const
+{
+ static const char* options[] = {"v-10", "v-9", "v-8dot5", "v-8", "v-7", "v-6", "v-5", "v-4dot5", "v-4",
+ "v-3", "v-2", "v-1", "v-0dot5", "v0", "v1", "v2", "v3", "v3dot5",
+ "v4", "v5", "v6", "v7", "v7dot5", "v8", "v9"};
+ return convert_enum_idx(options, 25, value, "carrier_freq_nbiot_r16_s::carrier_freq_offset_r16_e_");
+}
+float carrier_freq_nbiot_r16_s::carrier_freq_offset_r16_opts::to_number() const
+{
+ static const float options[] = {-10.0, -9.0, -8.5, -8.0, -7.0, -6.0, -5.0, -4.5, -4.0, -3.0, -2.0, -1.0, -0.5,
+ 0.0, 1.0, 2.0, 3.0, 3.5, 4.0, 5.0, 6.0, 7.0, 7.5, 8.0, 9.0};
+ return map_enum_number(options, 25, value, "carrier_freq_nbiot_r16_s::carrier_freq_offset_r16_e_");
+}
+const char* carrier_freq_nbiot_r16_s::carrier_freq_offset_r16_opts::to_number_string() const
+{
+ static const char* options[] = {"-10", "-9", "-8.5", "-8", "-7", "-6", "-5", "-4.5", "-4", "-3", "-2", "-1", "-0.5",
+ "0", "1", "2", "3", "3.5", "4", "5", "6", "7", "7.5", "8", "9"};
+ return convert_enum_idx(options, 25, value, "carrier_freq_nbiot_r16_s::carrier_freq_offset_r16_e_");
+}
+
// CarrierFreqNR-r15 ::= SEQUENCE
SRSASN_CODE carrier_freq_nr_r15_s::pack(bit_ref& bref) const
{
@@ -1435,6 +2069,154 @@ uint8_t carrier_freq_nr_r15_s::subcarrier_spacing_ssb_r15_opts::to_number() cons
return map_enum_number(options, 4, value, "carrier_freq_nr_r15_s::subcarrier_spacing_ssb_r15_e_");
}
+// CarrierFreqNR-v1610 ::= SEQUENCE
+SRSASN_CODE carrier_freq_nr_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(smtc2_lp_r16_present, 1));
+ HANDLE_CODE(bref.pack(ssb_position_qcl_common_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(allowed_cell_list_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(high_speed_carrier_nr_r16_present, 1));
+
+ if (smtc2_lp_r16_present) {
+ HANDLE_CODE(smtc2_lp_r16.pack(bref));
+ }
+ if (ssb_position_qcl_common_nr_r16_present) {
+ HANDLE_CODE(ssb_position_qcl_common_nr_r16.pack(bref));
+ }
+ if (allowed_cell_list_nr_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, allowed_cell_list_nr_r16, 1, 16, integer_packer<uint16_t>(0, 1007)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE carrier_freq_nr_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(smtc2_lp_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ssb_position_qcl_common_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(allowed_cell_list_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(high_speed_carrier_nr_r16_present, 1));
+
+ if (smtc2_lp_r16_present) {
+ HANDLE_CODE(smtc2_lp_r16.unpack(bref));
+ }
+ if (ssb_position_qcl_common_nr_r16_present) {
+ HANDLE_CODE(ssb_position_qcl_common_nr_r16.unpack(bref));
+ }
+ if (allowed_cell_list_nr_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(allowed_cell_list_nr_r16, bref, 1, 16, integer_packer<uint16_t>(0, 1007)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void carrier_freq_nr_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (smtc2_lp_r16_present) {
+ j.write_fieldname("smtc2-LP-r16");
+ smtc2_lp_r16.to_json(j);
+ }
+ if (ssb_position_qcl_common_nr_r16_present) {
+ j.write_str("ssb-PositionQCL-CommonNR-r16", ssb_position_qcl_common_nr_r16.to_string());
+ }
+ if (allowed_cell_list_nr_r16_present) {
+ j.start_array("allowedCellListNR-r16");
+ for (const auto& e1 : allowed_cell_list_nr_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ if (high_speed_carrier_nr_r16_present) {
+ j.write_str("highSpeedCarrierNR-r16", "true");
+ }
+ j.end_obj();
+}
+
+// CarrierFreqNR-v1700 ::= SEQUENCE
+SRSASN_CODE carrier_freq_nr_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(nr_freq_neigh_hsdn_cell_list_r17_present, 1));
+
+ if (nr_freq_neigh_hsdn_cell_list_r17_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, nr_freq_neigh_hsdn_cell_list_r17, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE carrier_freq_nr_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(nr_freq_neigh_hsdn_cell_list_r17_present, 1));
+
+ if (nr_freq_neigh_hsdn_cell_list_r17_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(nr_freq_neigh_hsdn_cell_list_r17, bref, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void carrier_freq_nr_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (nr_freq_neigh_hsdn_cell_list_r17_present) {
+ j.start_array("nr-FreqNeighHSDN-CellList-r17");
+ for (const auto& e1 : nr_freq_neigh_hsdn_cell_list_r17) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+// CarrierFreqNR-v1720 ::= SEQUENCE
+SRSASN_CODE carrier_freq_nr_v1720_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(subcarrier_spacing_ssb_r17_present, 1));
+ HANDLE_CODE(bref.pack(ssb_position_qcl_common_nr_r17_present, 1));
+
+ if (subcarrier_spacing_ssb_r17_present) {
+ HANDLE_CODE(subcarrier_spacing_ssb_r17.pack(bref));
+ }
+ if (ssb_position_qcl_common_nr_r17_present) {
+ HANDLE_CODE(ssb_position_qcl_common_nr_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE carrier_freq_nr_v1720_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(subcarrier_spacing_ssb_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ssb_position_qcl_common_nr_r17_present, 1));
+
+ if (subcarrier_spacing_ssb_r17_present) {
+ HANDLE_CODE(subcarrier_spacing_ssb_r17.unpack(bref));
+ }
+ if (ssb_position_qcl_common_nr_r17_present) {
+ HANDLE_CODE(ssb_position_qcl_common_nr_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void carrier_freq_nr_v1720_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (subcarrier_spacing_ssb_r17_present) {
+ j.write_str("subcarrierSpacingSSB-r17", subcarrier_spacing_ssb_r17.to_string());
+ }
+ if (ssb_position_qcl_common_nr_r17_present) {
+ j.write_str("ssb-PositionQCL-CommonNR-r17", ssb_position_qcl_common_nr_r17.to_string());
+ }
+ j.end_obj();
+}
+
+const char* carrier_freq_nr_v1720_s::subcarrier_spacing_ssb_r17_opts::to_string() const
+{
+ static const char* options[] = {"kHz480", "spare1"};
+ return convert_enum_idx(options, 2, value, "carrier_freq_nr_v1720_s::subcarrier_spacing_ssb_r17_e_");
+}
+uint16_t carrier_freq_nr_v1720_s::subcarrier_spacing_ssb_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {480};
+ return map_enum_number(options, 1, value, "carrier_freq_nr_v1720_s::subcarrier_spacing_ssb_r17_e_");
+}
+
// CarrierFreqUTRA-FDD ::= SEQUENCE
SRSASN_CODE carrier_freq_utra_fdd_s::pack(bit_ref& bref) const
{
@@ -1800,6 +2582,76 @@ const char* eab_cfg_r11_s::eab_category_r11_opts::to_string() const
return convert_enum_idx(options, 3, value, "eab_cfg_r11_s::eab_category_r11_e_");
}
+// EphemerisOrbitalParameters-r17 ::= SEQUENCE
+SRSASN_CODE ephemeris_orbital_params_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, semi_major_axis_r17, (uint64_t)0u, (uint64_t)8589934591u));
+ HANDLE_CODE(pack_integer(bref, eccentricity_r17, (uint32_t)0u, (uint32_t)1048575u));
+ HANDLE_CODE(pack_integer(bref, periapsis_r17, (uint32_t)0u, (uint32_t)268435455u));
+ HANDLE_CODE(pack_integer(bref, longitude_r17, (uint32_t)0u, (uint32_t)268435455u));
+ HANDLE_CODE(pack_integer(bref, inclination_r17, (int32_t)-67108864, (int32_t)67108863));
+ HANDLE_CODE(pack_integer(bref, anomaly_r17, (uint32_t)0u, (uint32_t)268435455u));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ephemeris_orbital_params_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(semi_major_axis_r17, bref, (uint64_t)0u, (uint64_t)8589934591u));
+ HANDLE_CODE(unpack_integer(eccentricity_r17, bref, (uint32_t)0u, (uint32_t)1048575u));
+ HANDLE_CODE(unpack_integer(periapsis_r17, bref, (uint32_t)0u, (uint32_t)268435455u));
+ HANDLE_CODE(unpack_integer(longitude_r17, bref, (uint32_t)0u, (uint32_t)268435455u));
+ HANDLE_CODE(unpack_integer(inclination_r17, bref, (int32_t)-67108864, (int32_t)67108863));
+ HANDLE_CODE(unpack_integer(anomaly_r17, bref, (uint32_t)0u, (uint32_t)268435455u));
+
+ return SRSASN_SUCCESS;
+}
+void ephemeris_orbital_params_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("semiMajorAxis-r17", semi_major_axis_r17);
+ j.write_int("eccentricity-r17", eccentricity_r17);
+ j.write_int("periapsis-r17", periapsis_r17);
+ j.write_int("longitude-r17", longitude_r17);
+ j.write_int("inclination-r17", inclination_r17);
+ j.write_int("anomaly-r17", anomaly_r17);
+ j.end_obj();
+}
+
+// EphemerisStateVectors-r17 ::= SEQUENCE
+SRSASN_CODE ephemeris_state_vectors_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, position_x_r17, (int32_t)-33554432, (int32_t)33554431));
+ HANDLE_CODE(pack_integer(bref, position_y_r17, (int32_t)-33554432, (int32_t)33554431));
+ HANDLE_CODE(pack_integer(bref, position_z_r17, (int32_t)-33554432, (int32_t)33554431));
+ HANDLE_CODE(pack_integer(bref, velocity_vx_r17, (int32_t)-131072, (int32_t)131071));
+ HANDLE_CODE(pack_integer(bref, velocity_vy_r17, (int32_t)-131072, (int32_t)131071));
+ HANDLE_CODE(pack_integer(bref, velocity_vz_r17, (int32_t)-131072, (int32_t)131071));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ephemeris_state_vectors_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(position_x_r17, bref, (int32_t)-33554432, (int32_t)33554431));
+ HANDLE_CODE(unpack_integer(position_y_r17, bref, (int32_t)-33554432, (int32_t)33554431));
+ HANDLE_CODE(unpack_integer(position_z_r17, bref, (int32_t)-33554432, (int32_t)33554431));
+ HANDLE_CODE(unpack_integer(velocity_vx_r17, bref, (int32_t)-131072, (int32_t)131071));
+ HANDLE_CODE(unpack_integer(velocity_vy_r17, bref, (int32_t)-131072, (int32_t)131071));
+ HANDLE_CODE(unpack_integer(velocity_vz_r17, bref, (int32_t)-131072, (int32_t)131071));
+
+ return SRSASN_SUCCESS;
+}
+void ephemeris_state_vectors_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("positionX-r17", position_x_r17);
+ j.write_int("positionY-r17", position_y_r17);
+ j.write_int("positionZ-r17", position_z_r17);
+ j.write_int("velocityVX-r17", velocity_vx_r17);
+ j.write_int("velocityVY-r17", velocity_vy_r17);
+ j.write_int("velocityVZ-r17", velocity_vz_r17);
+ j.end_obj();
+}
+
// InterFreqCarrierFreqInfo ::= SEQUENCE
SRSASN_CODE inter_freq_carrier_freq_info_s::pack(bit_ref& bref) const
{
@@ -1809,7 +2661,7 @@ SRSASN_CODE inter_freq_carrier_freq_info_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(cell_resel_prio_present, 1));
HANDLE_CODE(bref.pack(q_offset_freq_present, 1));
HANDLE_CODE(bref.pack(inter_freq_neigh_cell_list_present, 1));
- HANDLE_CODE(bref.pack(inter_freq_black_cell_list_present, 1));
+ HANDLE_CODE(bref.pack(inter_freq_excluded_cell_list_present, 1));
HANDLE_CODE(pack_integer(bref, dl_carrier_freq, (uint32_t)0u, (uint32_t)65535u));
HANDLE_CODE(pack_integer(bref, q_rx_lev_min, (int8_t)-70, (int8_t)-22));
@@ -1834,8 +2686,8 @@ SRSASN_CODE inter_freq_carrier_freq_info_s::pack(bit_ref& bref) const
if (inter_freq_neigh_cell_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_neigh_cell_list, 1, 16));
}
- if (inter_freq_black_cell_list_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_black_cell_list, 1, 16));
+ if (inter_freq_excluded_cell_list_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_excluded_cell_list, 1, 16));
}
if (ext) {
@@ -1877,7 +2729,7 @@ SRSASN_CODE inter_freq_carrier_freq_info_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(cell_resel_prio_present, 1));
HANDLE_CODE(bref.unpack(q_offset_freq_present, 1));
HANDLE_CODE(bref.unpack(inter_freq_neigh_cell_list_present, 1));
- HANDLE_CODE(bref.unpack(inter_freq_black_cell_list_present, 1));
+ HANDLE_CODE(bref.unpack(inter_freq_excluded_cell_list_present, 1));
HANDLE_CODE(unpack_integer(dl_carrier_freq, bref, (uint32_t)0u, (uint32_t)65535u));
HANDLE_CODE(unpack_integer(q_rx_lev_min, bref, (int8_t)-70, (int8_t)-22));
@@ -1902,8 +2754,8 @@ SRSASN_CODE inter_freq_carrier_freq_info_s::unpack(cbit_ref& bref)
if (inter_freq_neigh_cell_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(inter_freq_neigh_cell_list, bref, 1, 16));
}
- if (inter_freq_black_cell_list_present) {
- HANDLE_CODE(unpack_dyn_seq_of(inter_freq_black_cell_list, bref, 1, 16));
+ if (inter_freq_excluded_cell_list_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(inter_freq_excluded_cell_list, bref, 1, 16));
}
if (ext) {
@@ -1967,9 +2819,9 @@ void inter_freq_carrier_freq_info_s::to_json(json_writer& j) const
}
j.end_array();
}
- if (inter_freq_black_cell_list_present) {
- j.start_array("interFreqBlackCellList");
- for (const auto& e1 : inter_freq_black_cell_list) {
+ if (inter_freq_excluded_cell_list_present) {
+ j.start_array("interFreqExcludedCellList");
+ for (const auto& e1 : inter_freq_excluded_cell_list) {
e1.to_json(j);
}
j.end_array();
@@ -2001,7 +2853,7 @@ SRSASN_CODE inter_freq_carrier_freq_info_r12_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(cell_resel_prio_r12_present, 1));
HANDLE_CODE(bref.pack(q_offset_freq_r12_present, 1));
HANDLE_CODE(bref.pack(inter_freq_neigh_cell_list_r12_present, 1));
- HANDLE_CODE(bref.pack(inter_freq_black_cell_list_r12_present, 1));
+ HANDLE_CODE(bref.pack(inter_freq_excluded_cell_list_r12_present, 1));
HANDLE_CODE(bref.pack(q_qual_min_r12_present, 1));
HANDLE_CODE(bref.pack(thresh_x_q_r12_present, 1));
HANDLE_CODE(bref.pack(q_qual_min_wb_r12_present, 1));
@@ -2032,8 +2884,8 @@ SRSASN_CODE inter_freq_carrier_freq_info_r12_s::pack(bit_ref& bref) const
if (inter_freq_neigh_cell_list_r12_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_neigh_cell_list_r12, 1, 16));
}
- if (inter_freq_black_cell_list_r12_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_black_cell_list_r12, 1, 16));
+ if (inter_freq_excluded_cell_list_r12_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_excluded_cell_list_r12, 1, 16));
}
if (q_qual_min_r12_present) {
HANDLE_CODE(pack_integer(bref, q_qual_min_r12, (int8_t)-34, (int8_t)-3));
@@ -2062,7 +2914,7 @@ SRSASN_CODE inter_freq_carrier_freq_info_r12_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(cell_resel_prio_r12_present, 1));
HANDLE_CODE(bref.unpack(q_offset_freq_r12_present, 1));
HANDLE_CODE(bref.unpack(inter_freq_neigh_cell_list_r12_present, 1));
- HANDLE_CODE(bref.unpack(inter_freq_black_cell_list_r12_present, 1));
+ HANDLE_CODE(bref.unpack(inter_freq_excluded_cell_list_r12_present, 1));
HANDLE_CODE(bref.unpack(q_qual_min_r12_present, 1));
HANDLE_CODE(bref.unpack(thresh_x_q_r12_present, 1));
HANDLE_CODE(bref.unpack(q_qual_min_wb_r12_present, 1));
@@ -2093,8 +2945,8 @@ SRSASN_CODE inter_freq_carrier_freq_info_r12_s::unpack(cbit_ref& bref)
if (inter_freq_neigh_cell_list_r12_present) {
HANDLE_CODE(unpack_dyn_seq_of(inter_freq_neigh_cell_list_r12, bref, 1, 16));
}
- if (inter_freq_black_cell_list_r12_present) {
- HANDLE_CODE(unpack_dyn_seq_of(inter_freq_black_cell_list_r12, bref, 1, 16));
+ if (inter_freq_excluded_cell_list_r12_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(inter_freq_excluded_cell_list_r12, bref, 1, 16));
}
if (q_qual_min_r12_present) {
HANDLE_CODE(unpack_integer(q_qual_min_r12, bref, (int8_t)-34, (int8_t)-3));
@@ -2146,9 +2998,9 @@ void inter_freq_carrier_freq_info_r12_s::to_json(json_writer& j) const
}
j.end_array();
}
- if (inter_freq_black_cell_list_r12_present) {
- j.start_array("interFreqBlackCellList-r12");
- for (const auto& e1 : inter_freq_black_cell_list_r12) {
+ if (inter_freq_excluded_cell_list_r12_present) {
+ j.start_array("interFreqExcludedCellList-r12");
+ for (const auto& e1 : inter_freq_excluded_cell_list_r12) {
e1.to_json(j);
}
j.end_array();
@@ -2446,6 +3298,74 @@ void inter_freq_carrier_freq_info_v1530_s::to_json(json_writer& j) const
j.end_obj();
}
+// InterFreqCarrierFreqInfo-v1610 ::= SEQUENCE
+SRSASN_CODE inter_freq_carrier_freq_info_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(alt_cell_resel_prio_r16_present, 1));
+ HANDLE_CODE(bref.pack(alt_cell_resel_sub_prio_r16_present, 1));
+ HANDLE_CODE(bref.pack(rss_cfg_carrier_info_r16_present, 1));
+ HANDLE_CODE(bref.pack(inter_freq_neigh_cell_list_v1610_present, 1));
+
+ if (alt_cell_resel_prio_r16_present) {
+ HANDLE_CODE(pack_integer(bref, alt_cell_resel_prio_r16, (uint8_t)0u, (uint8_t)7u));
+ }
+ if (alt_cell_resel_sub_prio_r16_present) {
+ HANDLE_CODE(alt_cell_resel_sub_prio_r16.pack(bref));
+ }
+ if (rss_cfg_carrier_info_r16_present) {
+ HANDLE_CODE(rss_cfg_carrier_info_r16.pack(bref));
+ }
+ if (inter_freq_neigh_cell_list_v1610_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_neigh_cell_list_v1610, 1, 16));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE inter_freq_carrier_freq_info_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(alt_cell_resel_prio_r16_present, 1));
+ HANDLE_CODE(bref.unpack(alt_cell_resel_sub_prio_r16_present, 1));
+ HANDLE_CODE(bref.unpack(rss_cfg_carrier_info_r16_present, 1));
+ HANDLE_CODE(bref.unpack(inter_freq_neigh_cell_list_v1610_present, 1));
+
+ if (alt_cell_resel_prio_r16_present) {
+ HANDLE_CODE(unpack_integer(alt_cell_resel_prio_r16, bref, (uint8_t)0u, (uint8_t)7u));
+ }
+ if (alt_cell_resel_sub_prio_r16_present) {
+ HANDLE_CODE(alt_cell_resel_sub_prio_r16.unpack(bref));
+ }
+ if (rss_cfg_carrier_info_r16_present) {
+ HANDLE_CODE(rss_cfg_carrier_info_r16.unpack(bref));
+ }
+ if (inter_freq_neigh_cell_list_v1610_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(inter_freq_neigh_cell_list_v1610, bref, 1, 16));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void inter_freq_carrier_freq_info_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (alt_cell_resel_prio_r16_present) {
+ j.write_int("altCellReselectionPriority-r16", alt_cell_resel_prio_r16);
+ }
+ if (alt_cell_resel_sub_prio_r16_present) {
+ j.write_str("altCellReselectionSubPriority-r16", alt_cell_resel_sub_prio_r16.to_string());
+ }
+ if (rss_cfg_carrier_info_r16_present) {
+ j.write_fieldname("rss-ConfigCarrierInfo-r16");
+ rss_cfg_carrier_info_r16.to_json(j);
+ }
+ if (inter_freq_neigh_cell_list_v1610_present) {
+ j.start_array("interFreqNeighCellList-v1610");
+ for (const auto& e1 : inter_freq_neigh_cell_list_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
// IntraFreqNeighCellInfo ::= SEQUENCE
SRSASN_CODE intra_freq_neigh_cell_info_s::pack(bit_ref& bref) const
{
@@ -2471,6 +3391,26 @@ void intra_freq_neigh_cell_info_s::to_json(json_writer& j) const
j.end_obj();
}
+// IntraFreqNeighCellInfo-v1610 ::= SEQUENCE
+SRSASN_CODE intra_freq_neigh_cell_info_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(rss_meas_pwr_bias_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE intra_freq_neigh_cell_info_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(rss_meas_pwr_bias_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void intra_freq_neigh_cell_info_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("rss-MeasPowerBias-r16", rss_meas_pwr_bias_r16.to_string());
+ j.end_obj();
+}
+
// MBMS-CarrierType-r14 ::= SEQUENCE
SRSASN_CODE mbms_carrier_type_r14_s::pack(bit_ref& bref) const
{
@@ -2571,6 +3511,43 @@ void mbms_sai_inter_freq_v1140_s::to_json(json_writer& j) const
j.end_obj();
}
+// MBSFN-AreaInfo-r17 ::= SEQUENCE
+SRSASN_CODE mbsfn_area_info_r17_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(mbsfn_area_info_r17.pack(bref));
+ HANDLE_CODE(pmch_bw_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mbsfn_area_info_r17_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(mbsfn_area_info_r17.unpack(bref));
+ HANDLE_CODE(pmch_bw_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void mbsfn_area_info_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("mbsfn-AreaInfo-r17");
+ mbsfn_area_info_r17.to_json(j);
+ j.write_str("pmch-Bandwidth-r17", pmch_bw_r17.to_string());
+ j.end_obj();
+}
+
+const char* mbsfn_area_info_r17_s::pmch_bw_r17_opts::to_string() const
+{
+ static const char* options[] = {"n40", "n35", "n30", "spare1"};
+ return convert_enum_idx(options, 4, value, "mbsfn_area_info_r17_s::pmch_bw_r17_e_");
+}
+uint8_t mbsfn_area_info_r17_s::pmch_bw_r17_opts::to_number() const
+{
+ static const uint8_t options[] = {40, 35, 30};
+ return map_enum_number(options, 3, value, "mbsfn_area_info_r17_s::pmch_bw_r17_e_");
+}
+
// MBSFN-AreaInfo-r9 ::= SEQUENCE
SRSASN_CODE mbsfn_area_info_r9_s::pack(bit_ref& bref) const
{
@@ -2767,6 +3744,36 @@ const char* mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_opts::to_number_st
return convert_enum_idx(options, 2, value, "mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_e_");
}
+// PLMN-Info-r16 ::= SEQUENCE
+SRSASN_CODE plmn_info_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(nr_band_list_r16_present, 1));
+
+ if (nr_band_list_r16_present) {
+ HANDLE_CODE(nr_band_list_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE plmn_info_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(nr_band_list_r16_present, 1));
+
+ if (nr_band_list_r16_present) {
+ HANDLE_CODE(nr_band_list_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void plmn_info_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (nr_band_list_r16_present) {
+ j.write_str("nr-BandList-r16", nr_band_list_r16.to_string());
+ }
+ j.end_obj();
+}
+
// ReselectionInfoRelay-r13 ::= SEQUENCE
SRSASN_CODE resel_info_relay_r13_s::pack(bit_ref& bref) const
{
@@ -3033,6 +4040,113 @@ void sl_pppp_tx_cfg_idx_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// SatelliteInfo-r17 ::= SEQUENCE
+SRSASN_CODE satellite_info_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, satellite_id_r17, (uint16_t)0u, (uint16_t)255u));
+ HANDLE_CODE(bref.pack(service_info_r17.tle_ephemeris_params_r17_present, 1));
+ HANDLE_CODE(bref.pack(service_info_r17.t_service_start_r17_present, 1));
+ if (service_info_r17.tle_ephemeris_params_r17_present) {
+ HANDLE_CODE(service_info_r17.tle_ephemeris_params_r17.pack(bref));
+ }
+ if (service_info_r17.t_service_start_r17_present) {
+ HANDLE_CODE(pack_integer(bref, service_info_r17.t_service_start_r17, (uint32_t)0u, (uint32_t)1048575u));
+ }
+ HANDLE_CODE(bref.pack(footprint_info_r17.ref_point_r17_present, 1));
+ HANDLE_CODE(bref.pack(footprint_info_r17.elevation_angles_r17_present, 1));
+ HANDLE_CODE(bref.pack(footprint_info_r17.radius_r17_present, 1));
+ if (footprint_info_r17.ref_point_r17_present) {
+ HANDLE_CODE(pack_integer(bref, footprint_info_r17.ref_point_r17.longitude_r17, (int32_t)-131072, (int32_t)131071));
+ HANDLE_CODE(pack_integer(bref, footprint_info_r17.ref_point_r17.latitude_r17, (int32_t)-131072, (int32_t)131071));
+ }
+ if (footprint_info_r17.elevation_angles_r17_present) {
+ HANDLE_CODE(bref.pack(footprint_info_r17.elevation_angles_r17.elevation_angle_left_r17_present, 1));
+ HANDLE_CODE(
+ pack_integer(bref, footprint_info_r17.elevation_angles_r17.elevation_angle_right_r17, (int8_t)-14, (int8_t)14));
+ if (footprint_info_r17.elevation_angles_r17.elevation_angle_left_r17_present) {
+ HANDLE_CODE(pack_integer(
+ bref, footprint_info_r17.elevation_angles_r17.elevation_angle_left_r17, (int8_t)-14, (int8_t)14));
+ }
+ }
+ if (footprint_info_r17.radius_r17_present) {
+ HANDLE_CODE(pack_integer(bref, footprint_info_r17.radius_r17, (uint16_t)1u, (uint16_t)256u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE satellite_info_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(satellite_id_r17, bref, (uint16_t)0u, (uint16_t)255u));
+ HANDLE_CODE(bref.unpack(service_info_r17.tle_ephemeris_params_r17_present, 1));
+ HANDLE_CODE(bref.unpack(service_info_r17.t_service_start_r17_present, 1));
+ if (service_info_r17.tle_ephemeris_params_r17_present) {
+ HANDLE_CODE(service_info_r17.tle_ephemeris_params_r17.unpack(bref));
+ }
+ if (service_info_r17.t_service_start_r17_present) {
+ HANDLE_CODE(unpack_integer(service_info_r17.t_service_start_r17, bref, (uint32_t)0u, (uint32_t)1048575u));
+ }
+ HANDLE_CODE(bref.unpack(footprint_info_r17.ref_point_r17_present, 1));
+ HANDLE_CODE(bref.unpack(footprint_info_r17.elevation_angles_r17_present, 1));
+ HANDLE_CODE(bref.unpack(footprint_info_r17.radius_r17_present, 1));
+ if (footprint_info_r17.ref_point_r17_present) {
+ HANDLE_CODE(
+ unpack_integer(footprint_info_r17.ref_point_r17.longitude_r17, bref, (int32_t)-131072, (int32_t)131071));
+ HANDLE_CODE(unpack_integer(footprint_info_r17.ref_point_r17.latitude_r17, bref, (int32_t)-131072, (int32_t)131071));
+ }
+ if (footprint_info_r17.elevation_angles_r17_present) {
+ HANDLE_CODE(bref.unpack(footprint_info_r17.elevation_angles_r17.elevation_angle_left_r17_present, 1));
+ HANDLE_CODE(unpack_integer(
+ footprint_info_r17.elevation_angles_r17.elevation_angle_right_r17, bref, (int8_t)-14, (int8_t)14));
+ if (footprint_info_r17.elevation_angles_r17.elevation_angle_left_r17_present) {
+ HANDLE_CODE(unpack_integer(
+ footprint_info_r17.elevation_angles_r17.elevation_angle_left_r17, bref, (int8_t)-14, (int8_t)14));
+ }
+ }
+ if (footprint_info_r17.radius_r17_present) {
+ HANDLE_CODE(unpack_integer(footprint_info_r17.radius_r17, bref, (uint16_t)1u, (uint16_t)256u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void satellite_info_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("satelliteId-r17", satellite_id_r17);
+ j.write_fieldname("serviceInfo-r17");
+ j.start_obj();
+ if (service_info_r17.tle_ephemeris_params_r17_present) {
+ j.write_fieldname("tle-EphemerisParameters-r17");
+ service_info_r17.tle_ephemeris_params_r17.to_json(j);
+ }
+ if (service_info_r17.t_service_start_r17_present) {
+ j.write_int("t-ServiceStart-r17", service_info_r17.t_service_start_r17);
+ }
+ j.end_obj();
+ j.write_fieldname("footprintInfo-r17");
+ j.start_obj();
+ if (footprint_info_r17.ref_point_r17_present) {
+ j.write_fieldname("referencePoint-r17");
+ j.start_obj();
+ j.write_int("longitude-r17", footprint_info_r17.ref_point_r17.longitude_r17);
+ j.write_int("latitude-r17", footprint_info_r17.ref_point_r17.latitude_r17);
+ j.end_obj();
+ }
+ if (footprint_info_r17.elevation_angles_r17_present) {
+ j.write_fieldname("elevationAngles-r17");
+ j.start_obj();
+ j.write_int("elevationAngleRight-r17", footprint_info_r17.elevation_angles_r17.elevation_angle_right_r17);
+ if (footprint_info_r17.elevation_angles_r17.elevation_angle_left_r17_present) {
+ j.write_int("elevationAngleLeft-r17", footprint_info_r17.elevation_angles_r17.elevation_angle_left_r17);
+ }
+ j.end_obj();
+ }
+ if (footprint_info_r17.radius_r17_present) {
+ j.write_int("radius-r17", footprint_info_r17.radius_r17);
+ }
+ j.end_obj();
+ j.end_obj();
+}
+
// UAC-BarringInfoSet-r15 ::= SEQUENCE
SRSASN_CODE uac_barr_info_set_r15_s::pack(bit_ref& bref) const
{
@@ -3088,6 +4202,54 @@ uint16_t uac_barr_info_set_r15_s::uac_barr_time_r15_opts::to_number() const
return map_enum_number(options, 8, value, "uac_barr_info_set_r15_s::uac_barr_time_r15_e_");
}
+// UAC-BarringInfoSet-v1700 ::= SEQUENCE
+SRSASN_CODE uac_barr_info_set_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(uac_barr_factor_for_ai3_r17_present, 1));
+
+ if (uac_barr_factor_for_ai3_r17_present) {
+ HANDLE_CODE(uac_barr_factor_for_ai3_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE uac_barr_info_set_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(uac_barr_factor_for_ai3_r17_present, 1));
+
+ if (uac_barr_factor_for_ai3_r17_present) {
+ HANDLE_CODE(uac_barr_factor_for_ai3_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void uac_barr_info_set_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (uac_barr_factor_for_ai3_r17_present) {
+ j.write_str("uac-BarringFactorForAI3-r17", uac_barr_factor_for_ai3_r17.to_string());
+ }
+ j.end_obj();
+}
+
+const char* uac_barr_info_set_v1700_s::uac_barr_factor_for_ai3_r17_opts::to_string() const
+{
+ static const char* options[] = {
+ "p00", "p05", "p10", "p15", "p20", "p25", "p30", "p40", "p50", "p60", "p70", "p75", "p80", "p85", "p90", "p95"};
+ return convert_enum_idx(options, 16, value, "uac_barr_info_set_v1700_s::uac_barr_factor_for_ai3_r17_e_");
+}
+float uac_barr_info_set_v1700_s::uac_barr_factor_for_ai3_r17_opts::to_number() const
+{
+ static const float options[] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5};
+ return map_enum_number(options, 16, value, "uac_barr_info_set_v1700_s::uac_barr_factor_for_ai3_r17_e_");
+}
+const char* uac_barr_info_set_v1700_s::uac_barr_factor_for_ai3_r17_opts::to_number_string() const
+{
+ static const char* options[] = {
+ "0.0", "0.5", "1.0", "1.5", "2.0", "2.5", "3.0", "4.0", "5.0", "6.0", "7.0", "7.5", "8.0", "8.5", "9.0", "9.5"};
+ return convert_enum_idx(options, 16, value, "uac_barr_info_set_v1700_s::uac_barr_factor_for_ai3_r17_e_");
+}
+
// UAC-BarringPerPLMN-r15 ::= SEQUENCE
SRSASN_CODE uac_barr_per_plmn_r15_s::pack(bit_ref& bref) const
{
@@ -3266,6 +4428,91 @@ SRSASN_CODE uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::unpack(cbit_r
return SRSASN_SUCCESS;
}
+// ApplicableDisasterInfo-r17 ::= CHOICE
+void applicable_disaster_info_r17_c::set(types::options e)
+{
+ type_ = e;
+}
+void applicable_disaster_info_r17_c::set_no_disaster_roaming_r17()
+{
+ set(types::no_disaster_roaming_r17);
+}
+void applicable_disaster_info_r17_c::set_disaster_related_ind_r17()
+{
+ set(types::disaster_related_ind_r17);
+}
+void applicable_disaster_info_r17_c::set_common_plmns_r17()
+{
+ set(types::common_plmns_r17);
+}
+applicable_disaster_info_r17_c::ded_plmns_r17_l_& applicable_disaster_info_r17_c::set_ded_plmns_r17()
+{
+ set(types::ded_plmns_r17);
+ return c;
+}
+void applicable_disaster_info_r17_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::no_disaster_roaming_r17:
+ break;
+ case types::disaster_related_ind_r17:
+ break;
+ case types::common_plmns_r17:
+ break;
+ case types::ded_plmns_r17:
+ j.start_array("dedicatedPLMNs-r17");
+ for (const auto& e1 : c) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ break;
+ default:
+ log_invalid_choice_id(type_, "applicable_disaster_info_r17_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE applicable_disaster_info_r17_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::no_disaster_roaming_r17:
+ break;
+ case types::disaster_related_ind_r17:
+ break;
+ case types::common_plmns_r17:
+ break;
+ case types::ded_plmns_r17:
+ HANDLE_CODE(pack_dyn_seq_of(bref, c, 1, 6));
+ break;
+ default:
+ log_invalid_choice_id(type_, "applicable_disaster_info_r17_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE applicable_disaster_info_r17_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::no_disaster_roaming_r17:
+ break;
+ case types::disaster_related_ind_r17:
+ break;
+ case types::common_plmns_r17:
+ break;
+ case types::ded_plmns_r17:
+ HANDLE_CODE(unpack_dyn_seq_of(c, bref, 1, 6));
+ break;
+ default:
+ log_invalid_choice_id(type_, "applicable_disaster_info_r17_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
// CarrierFreqInfoUTRA-v1250 ::= SEQUENCE
SRSASN_CODE carrier_freq_info_utra_v1250_s::pack(bit_ref& bref) const
{
@@ -3431,6 +4678,47 @@ void cell_resel_serving_freq_info_v1310_s::to_json(json_writer& j) const
j.end_obj();
}
+// CellReselectionServingFreqInfo-v1610 ::= SEQUENCE
+SRSASN_CODE cell_resel_serving_freq_info_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(alt_cell_resel_prio_r16_present, 1));
+ HANDLE_CODE(bref.pack(alt_cell_resel_sub_prio_r16_present, 1));
+
+ if (alt_cell_resel_prio_r16_present) {
+ HANDLE_CODE(pack_integer(bref, alt_cell_resel_prio_r16, (uint8_t)0u, (uint8_t)7u));
+ }
+ if (alt_cell_resel_sub_prio_r16_present) {
+ HANDLE_CODE(alt_cell_resel_sub_prio_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cell_resel_serving_freq_info_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(alt_cell_resel_prio_r16_present, 1));
+ HANDLE_CODE(bref.unpack(alt_cell_resel_sub_prio_r16_present, 1));
+
+ if (alt_cell_resel_prio_r16_present) {
+ HANDLE_CODE(unpack_integer(alt_cell_resel_prio_r16, bref, (uint8_t)0u, (uint8_t)7u));
+ }
+ if (alt_cell_resel_sub_prio_r16_present) {
+ HANDLE_CODE(alt_cell_resel_sub_prio_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void cell_resel_serving_freq_info_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (alt_cell_resel_prio_r16_present) {
+ j.write_int("altCellReselectionPriority-r16", alt_cell_resel_prio_r16);
+ }
+ if (alt_cell_resel_sub_prio_r16_present) {
+ j.write_str("altCellReselectionSubPriority-r16", alt_cell_resel_sub_prio_r16.to_string());
+ }
+ j.end_obj();
+}
+
// EAB-ConfigPLMN-r11 ::= SEQUENCE
SRSASN_CODE eab_cfg_plmn_r11_s::pack(bit_ref& bref) const
{
@@ -3519,6 +4807,32 @@ void mbms_notif_cfg_v1430_s::to_json(json_writer& j) const
j.end_obj();
}
+// MeasIdleConfigSIB-NR-r16 ::= SEQUENCE
+SRSASN_CODE meas_idle_cfg_sib_nr_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_idle_carrier_list_nr_r16, 1, 8));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_idle_cfg_sib_nr_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(unpack_dyn_seq_of(meas_idle_carrier_list_nr_r16, bref, 1, 8));
+
+ return SRSASN_SUCCESS;
+}
+void meas_idle_cfg_sib_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.start_array("measIdleCarrierListNR-r16");
+ for (const auto& e1 : meas_idle_carrier_list_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.end_obj();
+}
+
// MeasIdleConfigSIB-r15 ::= SEQUENCE
SRSASN_CODE meas_idle_cfg_sib_r15_s::pack(bit_ref& bref) const
{
@@ -4184,6 +5498,261 @@ uint8_t sl_disc_cfg_remote_ue_r13_s::hyst_max_r13_opts::to_number() const
return map_enum_number(options, 5, value, "sl_disc_cfg_remote_ue_r13_s::hyst_max_r13_e_");
}
+// ServingSatelliteInfo-r17 ::= SEQUENCE
+SRSASN_CODE serving_satellite_info_r17_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(epoch_time_r17_present, 1));
+ HANDLE_CODE(bref.pack(k_mac_r17_present, 1));
+
+ HANDLE_CODE(ephemeris_info_r17.pack(bref));
+ HANDLE_CODE(bref.pack(nta_common_params_minus17.nta_common_r17_present, 1));
+ HANDLE_CODE(bref.pack(nta_common_params_minus17.nta_common_drift_r17_present, 1));
+ HANDLE_CODE(bref.pack(nta_common_params_minus17.nta_common_drift_variation_r17_present, 1));
+ if (nta_common_params_minus17.nta_common_r17_present) {
+ HANDLE_CODE(pack_integer(bref, nta_common_params_minus17.nta_common_r17, (uint32_t)0u, (uint32_t)8316827u));
+ }
+ if (nta_common_params_minus17.nta_common_drift_r17_present) {
+ HANDLE_CODE(pack_integer(bref, nta_common_params_minus17.nta_common_drift_r17, (int32_t)-261935, (int32_t)261935));
+ }
+ if (nta_common_params_minus17.nta_common_drift_variation_r17_present) {
+ HANDLE_CODE(
+ pack_integer(bref, nta_common_params_minus17.nta_common_drift_variation_r17, (uint16_t)0u, (uint16_t)29479u));
+ }
+ HANDLE_CODE(ul_sync_validity_dur_r17.pack(bref));
+ if (epoch_time_r17_present) {
+ HANDLE_CODE(pack_integer(bref, epoch_time_r17.start_sfn_r17, (uint16_t)0u, (uint16_t)1023u));
+ HANDLE_CODE(pack_integer(bref, epoch_time_r17.start_sub_frame_r17, (uint8_t)0u, (uint8_t)9u));
+ }
+ HANDLE_CODE(pack_integer(bref, k_offset_r17, (uint16_t)0u, (uint16_t)1023u));
+ if (k_mac_r17_present) {
+ HANDLE_CODE(pack_integer(bref, k_mac_r17, (uint16_t)1u, (uint16_t)512u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE serving_satellite_info_r17_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(epoch_time_r17_present, 1));
+ HANDLE_CODE(bref.unpack(k_mac_r17_present, 1));
+
+ HANDLE_CODE(ephemeris_info_r17.unpack(bref));
+ HANDLE_CODE(bref.unpack(nta_common_params_minus17.nta_common_r17_present, 1));
+ HANDLE_CODE(bref.unpack(nta_common_params_minus17.nta_common_drift_r17_present, 1));
+ HANDLE_CODE(bref.unpack(nta_common_params_minus17.nta_common_drift_variation_r17_present, 1));
+ if (nta_common_params_minus17.nta_common_r17_present) {
+ HANDLE_CODE(unpack_integer(nta_common_params_minus17.nta_common_r17, bref, (uint32_t)0u, (uint32_t)8316827u));
+ }
+ if (nta_common_params_minus17.nta_common_drift_r17_present) {
+ HANDLE_CODE(
+ unpack_integer(nta_common_params_minus17.nta_common_drift_r17, bref, (int32_t)-261935, (int32_t)261935));
+ }
+ if (nta_common_params_minus17.nta_common_drift_variation_r17_present) {
+ HANDLE_CODE(
+ unpack_integer(nta_common_params_minus17.nta_common_drift_variation_r17, bref, (uint16_t)0u, (uint16_t)29479u));
+ }
+ HANDLE_CODE(ul_sync_validity_dur_r17.unpack(bref));
+ if (epoch_time_r17_present) {
+ HANDLE_CODE(unpack_integer(epoch_time_r17.start_sfn_r17, bref, (uint16_t)0u, (uint16_t)1023u));
+ HANDLE_CODE(unpack_integer(epoch_time_r17.start_sub_frame_r17, bref, (uint8_t)0u, (uint8_t)9u));
+ }
+ HANDLE_CODE(unpack_integer(k_offset_r17, bref, (uint16_t)0u, (uint16_t)1023u));
+ if (k_mac_r17_present) {
+ HANDLE_CODE(unpack_integer(k_mac_r17, bref, (uint16_t)1u, (uint16_t)512u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void serving_satellite_info_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("ephemerisInfo-r17");
+ ephemeris_info_r17.to_json(j);
+ j.write_fieldname("nta-CommonParameters-17");
+ j.start_obj();
+ if (nta_common_params_minus17.nta_common_r17_present) {
+ j.write_int("nta-Common-r17", nta_common_params_minus17.nta_common_r17);
+ }
+ if (nta_common_params_minus17.nta_common_drift_r17_present) {
+ j.write_int("nta-CommonDrift-r17", nta_common_params_minus17.nta_common_drift_r17);
+ }
+ if (nta_common_params_minus17.nta_common_drift_variation_r17_present) {
+ j.write_int("nta-CommonDriftVariation-r17", nta_common_params_minus17.nta_common_drift_variation_r17);
+ }
+ j.end_obj();
+ j.write_str("ul-SyncValidityDuration-r17", ul_sync_validity_dur_r17.to_string());
+ if (epoch_time_r17_present) {
+ j.write_fieldname("epochTime-r17");
+ j.start_obj();
+ j.write_int("startSFN-r17", epoch_time_r17.start_sfn_r17);
+ j.write_int("startSubFrame-r17", epoch_time_r17.start_sub_frame_r17);
+ j.end_obj();
+ }
+ j.write_int("k-Offset-r17", k_offset_r17);
+ if (k_mac_r17_present) {
+ j.write_int("k-Mac-r17", k_mac_r17);
+ }
+ j.end_obj();
+}
+
+void serving_satellite_info_r17_s::ephemeris_info_r17_c_::destroy_()
+{
+ switch (type_) {
+ case types::state_vectors:
+ c.destroy<ephemeris_state_vectors_r17_s>();
+ break;
+ case types::orbital_params:
+ c.destroy<ephemeris_orbital_params_r17_s>();
+ break;
+ default:
+ break;
+ }
+}
+void serving_satellite_info_r17_s::ephemeris_info_r17_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::state_vectors:
+ c.init<ephemeris_state_vectors_r17_s>();
+ break;
+ case types::orbital_params:
+ c.init<ephemeris_orbital_params_r17_s>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "serving_satellite_info_r17_s::ephemeris_info_r17_c_");
+ }
+}
+serving_satellite_info_r17_s::ephemeris_info_r17_c_::ephemeris_info_r17_c_(
+ const serving_satellite_info_r17_s::ephemeris_info_r17_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::state_vectors:
+ c.init(other.c.get<ephemeris_state_vectors_r17_s>());
+ break;
+ case types::orbital_params:
+ c.init(other.c.get<ephemeris_orbital_params_r17_s>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "serving_satellite_info_r17_s::ephemeris_info_r17_c_");
+ }
+}
+serving_satellite_info_r17_s::ephemeris_info_r17_c_& serving_satellite_info_r17_s::ephemeris_info_r17_c_::operator=(
+ const serving_satellite_info_r17_s::ephemeris_info_r17_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::state_vectors:
+ c.set(other.c.get<ephemeris_state_vectors_r17_s>());
+ break;
+ case types::orbital_params:
+ c.set(other.c.get<ephemeris_orbital_params_r17_s>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "serving_satellite_info_r17_s::ephemeris_info_r17_c_");
+ }
+
+ return *this;
+}
+ephemeris_state_vectors_r17_s& serving_satellite_info_r17_s::ephemeris_info_r17_c_::set_state_vectors()
+{
+ set(types::state_vectors);
+ return c.get<ephemeris_state_vectors_r17_s>();
+}
+ephemeris_orbital_params_r17_s& serving_satellite_info_r17_s::ephemeris_info_r17_c_::set_orbital_params()
+{
+ set(types::orbital_params);
+ return c.get<ephemeris_orbital_params_r17_s>();
+}
+void serving_satellite_info_r17_s::ephemeris_info_r17_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::state_vectors:
+ j.write_fieldname("stateVectors");
+ c.get<ephemeris_state_vectors_r17_s>().to_json(j);
+ break;
+ case types::orbital_params:
+ j.write_fieldname("orbitalParameters");
+ c.get<ephemeris_orbital_params_r17_s>().to_json(j);
+ break;
+ default:
+ log_invalid_choice_id(type_, "serving_satellite_info_r17_s::ephemeris_info_r17_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE serving_satellite_info_r17_s::ephemeris_info_r17_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::state_vectors:
+ HANDLE_CODE(c.get<ephemeris_state_vectors_r17_s>().pack(bref));
+ break;
+ case types::orbital_params:
+ HANDLE_CODE(c.get<ephemeris_orbital_params_r17_s>().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "serving_satellite_info_r17_s::ephemeris_info_r17_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE serving_satellite_info_r17_s::ephemeris_info_r17_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::state_vectors:
+ HANDLE_CODE(c.get<ephemeris_state_vectors_r17_s>().unpack(bref));
+ break;
+ case types::orbital_params:
+ HANDLE_CODE(c.get<ephemeris_orbital_params_r17_s>().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "serving_satellite_info_r17_s::ephemeris_info_r17_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* serving_satellite_info_r17_s::ul_sync_validity_dur_r17_opts::to_string() const
+{
+ static const char* options[] = {"s5",
+ "s10",
+ "s15",
+ "s20",
+ "s25",
+ "s30",
+ "s35",
+ "s40",
+ "s45",
+ "s50",
+ "s55",
+ "s60",
+ "s120",
+ "s180",
+ "s240",
+ "s900"};
+ return convert_enum_idx(options, 16, value, "serving_satellite_info_r17_s::ul_sync_validity_dur_r17_e_");
+}
+uint16_t serving_satellite_info_r17_s::ul_sync_validity_dur_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 120, 180, 240, 900};
+ return map_enum_number(options, 16, value, "serving_satellite_info_r17_s::ul_sync_validity_dur_r17_e_");
+}
+
// UAC-AC1-SelectAssistInfo-r15 ::= ENUMERATED
const char* uac_ac1_select_assist_info_r15_opts::to_string() const
{
@@ -4191,6 +5760,13 @@ const char* uac_ac1_select_assist_info_r15_opts::to_string() const
return convert_enum_idx(options, 3, value, "uac_ac1_select_assist_info_r15_e");
}
+// UAC-AC1-SelectAssistInfo-r16 ::= ENUMERATED
+const char* uac_ac1_select_assist_info_r16_opts::to_string() const
+{
+ static const char* options[] = {"a", "b", "c", "notConfigured"};
+ return convert_enum_idx(options, 4, value, "uac_ac1_select_assist_info_r16_e");
+}
+
// SystemInformation-v8a0-IEs ::= SEQUENCE
SRSASN_CODE sys_info_v8a0_ies_s::pack(bit_ref& bref) const
{
@@ -4506,6 +6082,8 @@ SRSASN_CODE sib_type13_r9_s::pack(bit_ref& bref) const
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= notif_cfg_v1430.is_present();
+ group_flags[1] |= mbsfn_area_info_list_r16.is_present();
+ group_flags[2] |= mbsfn_area_info_list_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -4516,6 +6094,22 @@ SRSASN_CODE sib_type13_r9_s::pack(bit_ref& bref) const
HANDLE_CODE(notif_cfg_v1430->pack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(mbsfn_area_info_list_r16.is_present(), 1));
+ if (mbsfn_area_info_list_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *mbsfn_area_info_list_r16, 1, 8));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(mbsfn_area_info_list_r17.is_present(), 1));
+ if (mbsfn_area_info_list_r17.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *mbsfn_area_info_list_r17, 1, 8));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -4531,7 +6125,7 @@ SRSASN_CODE sib_type13_r9_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(1);
+ ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -4544,6 +6138,26 @@ SRSASN_CODE sib_type13_r9_s::unpack(cbit_ref& bref)
HANDLE_CODE(notif_cfg_v1430->unpack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool mbsfn_area_info_list_r16_present;
+ HANDLE_CODE(bref.unpack(mbsfn_area_info_list_r16_present, 1));
+ mbsfn_area_info_list_r16.set_present(mbsfn_area_info_list_r16_present);
+ if (mbsfn_area_info_list_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*mbsfn_area_info_list_r16, bref, 1, 8));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool mbsfn_area_info_list_r17_present;
+ HANDLE_CODE(bref.unpack(mbsfn_area_info_list_r17_present, 1));
+ mbsfn_area_info_list_r17.set_present(mbsfn_area_info_list_r17_present);
+ if (mbsfn_area_info_list_r17.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*mbsfn_area_info_list_r17, bref, 1, 8));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -4565,6 +6179,20 @@ void sib_type13_r9_s::to_json(json_writer& j) const
j.write_fieldname("notificationConfig-v1430");
notif_cfg_v1430->to_json(j);
}
+ if (mbsfn_area_info_list_r16.is_present()) {
+ j.start_array("mbsfn-AreaInfoList-r16");
+ for (const auto& e1 : *mbsfn_area_info_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (mbsfn_area_info_list_r17.is_present()) {
+ j.start_array("mbsfn-AreaInfoList-r17");
+ for (const auto& e1 : *mbsfn_area_info_list_r17) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
}
j.end_obj();
}
@@ -5905,6 +7533,21 @@ SRSASN_CODE sib_type21_r14_s::pack(bit_ref& bref) const
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= anchor_carrier_freq_list_nr_r16.is_present();
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(anchor_carrier_freq_list_nr_r16.is_present(), 1));
+ if (anchor_carrier_freq_list_nr_r16.is_present()) {
+ HANDLE_CODE(
+ pack_dyn_seq_of(bref, *anchor_carrier_freq_list_nr_r16, 1, 8, integer_packer<uint32_t>(0, 3279165)));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
SRSASN_CODE sib_type21_r14_s::unpack(cbit_ref& bref)
@@ -5920,6 +7563,22 @@ SRSASN_CODE sib_type21_r14_s::unpack(cbit_ref& bref)
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool anchor_carrier_freq_list_nr_r16_present;
+ HANDLE_CODE(bref.unpack(anchor_carrier_freq_list_nr_r16_present, 1));
+ anchor_carrier_freq_list_nr_r16.set_present(anchor_carrier_freq_list_nr_r16_present);
+ if (anchor_carrier_freq_list_nr_r16.is_present()) {
+ HANDLE_CODE(
+ unpack_dyn_seq_of(*anchor_carrier_freq_list_nr_r16, bref, 1, 8, integer_packer<uint32_t>(0, 3279165)));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
void sib_type21_r14_s::to_json(json_writer& j) const
@@ -5932,6 +7591,15 @@ void sib_type21_r14_s::to_json(json_writer& j) const
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
+ if (ext) {
+ if (anchor_carrier_freq_list_nr_r16.is_present()) {
+ j.start_array("anchorCarrierFreqListNR-r16");
+ for (const auto& e1 : *anchor_carrier_freq_list_nr_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ }
j.end_obj();
}
@@ -5954,6 +7622,38 @@ SRSASN_CODE sib_type24_r15_s::pack(bit_ref& bref) const
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= carrier_freq_list_nr_v1610.is_present();
+ group_flags[1] |= carrier_freq_list_nr_v1700.is_present();
+ group_flags[2] |= carrier_freq_list_nr_v1720.is_present();
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(carrier_freq_list_nr_v1610.is_present(), 1));
+ if (carrier_freq_list_nr_v1610.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *carrier_freq_list_nr_v1610, 1, 8));
+ }
+ }
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(carrier_freq_list_nr_v1700.is_present(), 1));
+ if (carrier_freq_list_nr_v1700.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *carrier_freq_list_nr_v1700, 1, 8));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(carrier_freq_list_nr_v1720.is_present(), 1));
+ if (carrier_freq_list_nr_v1720.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *carrier_freq_list_nr_v1720, 1, 8));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
SRSASN_CODE sib_type24_r15_s::unpack(cbit_ref& bref)
@@ -5974,6 +7674,41 @@ SRSASN_CODE sib_type24_r15_s::unpack(cbit_ref& bref)
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(3);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool carrier_freq_list_nr_v1610_present;
+ HANDLE_CODE(bref.unpack(carrier_freq_list_nr_v1610_present, 1));
+ carrier_freq_list_nr_v1610.set_present(carrier_freq_list_nr_v1610_present);
+ if (carrier_freq_list_nr_v1610.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*carrier_freq_list_nr_v1610, bref, 1, 8));
+ }
+ }
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool carrier_freq_list_nr_v1700_present;
+ HANDLE_CODE(bref.unpack(carrier_freq_list_nr_v1700_present, 1));
+ carrier_freq_list_nr_v1700.set_present(carrier_freq_list_nr_v1700_present);
+ if (carrier_freq_list_nr_v1700.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*carrier_freq_list_nr_v1700, bref, 1, 8));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool carrier_freq_list_nr_v1720_present;
+ HANDLE_CODE(bref.unpack(carrier_freq_list_nr_v1720_present, 1));
+ carrier_freq_list_nr_v1720.set_present(carrier_freq_list_nr_v1720_present);
+ if (carrier_freq_list_nr_v1720.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*carrier_freq_list_nr_v1720, bref, 1, 8));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
void sib_type24_r15_s::to_json(json_writer& j) const
@@ -5994,6 +7729,29 @@ void sib_type24_r15_s::to_json(json_writer& j) const
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
+ if (ext) {
+ if (carrier_freq_list_nr_v1610.is_present()) {
+ j.start_array("carrierFreqListNR-v1610");
+ for (const auto& e1 : *carrier_freq_list_nr_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (carrier_freq_list_nr_v1700.is_present()) {
+ j.start_array("carrierFreqListNR-v1700");
+ for (const auto& e1 : *carrier_freq_list_nr_v1700) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (carrier_freq_list_nr_v1720.is_present()) {
+ j.start_array("carrierFreqListNR-v1720");
+ for (const auto& e1 : *carrier_freq_list_nr_v1720) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ }
j.end_obj();
}
@@ -6020,6 +7778,38 @@ SRSASN_CODE sib_type25_r15_s::pack(bit_ref& bref) const
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= ab_per_rsrp_r16_present;
+ group_flags[1] |= uac_ac1_select_assist_info_r16.is_present();
+ group_flags[2] |= uac_barr_info_set_list_v1700.is_present();
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ab_per_rsrp_r16_present, 1));
+ if (ab_per_rsrp_r16_present) {
+ HANDLE_CODE(ab_per_rsrp_r16.pack(bref));
+ }
+ }
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(uac_ac1_select_assist_info_r16.is_present(), 1));
+ if (uac_ac1_select_assist_info_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *uac_ac1_select_assist_info_r16, 2, 6));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(uac_barr_info_set_list_v1700.is_present(), 1));
+ if (uac_barr_info_set_list_v1700.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *uac_barr_info_set_list_v1700, 1, 8));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
SRSASN_CODE sib_type25_r15_s::unpack(cbit_ref& bref)
@@ -6044,6 +7834,39 @@ SRSASN_CODE sib_type25_r15_s::unpack(cbit_ref& bref)
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(3);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(ab_per_rsrp_r16_present, 1));
+ if (ab_per_rsrp_r16_present) {
+ HANDLE_CODE(ab_per_rsrp_r16.unpack(bref));
+ }
+ }
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool uac_ac1_select_assist_info_r16_present;
+ HANDLE_CODE(bref.unpack(uac_ac1_select_assist_info_r16_present, 1));
+ uac_ac1_select_assist_info_r16.set_present(uac_ac1_select_assist_info_r16_present);
+ if (uac_ac1_select_assist_info_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*uac_ac1_select_assist_info_r16, bref, 2, 6));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool uac_barr_info_set_list_v1700_present;
+ HANDLE_CODE(bref.unpack(uac_barr_info_set_list_v1700_present, 1));
+ uac_barr_info_set_list_v1700.set_present(uac_barr_info_set_list_v1700_present);
+ if (uac_barr_info_set_list_v1700.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*uac_barr_info_set_list_v1700, bref, 1, 8));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
void sib_type25_r15_s::to_json(json_writer& j) const
@@ -6075,6 +7898,25 @@ void sib_type25_r15_s::to_json(json_writer& j) const
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
+ if (ext) {
+ if (ab_per_rsrp_r16_present) {
+ j.write_str("ab-PerRSRP-r16", ab_per_rsrp_r16.to_string());
+ }
+ if (uac_ac1_select_assist_info_r16.is_present()) {
+ j.start_array("uac-AC1-SelectAssistInfo-r16");
+ for (const auto& e1 : *uac_ac1_select_assist_info_r16) {
+ j.write_str(e1.to_string());
+ }
+ j.end_array();
+ }
+ if (uac_barr_info_set_list_v1700.is_present()) {
+ j.start_array("uac-BarringInfoSetList-v1700");
+ for (const auto& e1 : *uac_barr_info_set_list_v1700) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ }
j.end_obj();
}
@@ -6208,6 +8050,17 @@ SRSASN_CODE sib_type25_r15_s::uac_ac1_select_assist_info_r15_c_::unpack(cbit_ref
return SRSASN_SUCCESS;
}
+const char* sib_type25_r15_s::ab_per_rsrp_r16_opts::to_string() const
+{
+ static const char* options[] = {"thresh0", "thresh1", "thresh2", "thresh3"};
+ return convert_enum_idx(options, 4, value, "sib_type25_r15_s::ab_per_rsrp_r16_e_");
+}
+uint8_t sib_type25_r15_s::ab_per_rsrp_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {0, 1, 2, 3};
+ return map_enum_number(options, 4, value, "sib_type25_r15_s::ab_per_rsrp_r16_e_");
+}
+
// SystemInformationBlockType26-r15 ::= SEQUENCE
SRSASN_CODE sib_type26_r15_s::pack(bit_ref& bref) const
{
@@ -6336,6 +8189,202 @@ void sib_type26_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// SystemInformationBlockType26a-r16 ::= SEQUENCE
+SRSASN_CODE sib_type26a_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+
+ HANDLE_CODE(pack_dyn_seq_of(bref, plmn_info_list_r16, 0, 6));
+ HANDLE_CODE(pack_dyn_seq_of(bref, band_list_endc_r16, 1, 10, integer_packer<uint16_t>(1, 1024)));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type26a_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+
+ HANDLE_CODE(unpack_dyn_seq_of(plmn_info_list_r16, bref, 0, 6));
+ HANDLE_CODE(unpack_dyn_seq_of(band_list_endc_r16, bref, 1, 10, integer_packer<uint16_t>(1, 1024)));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type26a_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.start_array("plmn-InfoList-r16");
+ for (const auto& e1 : plmn_info_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.start_array("bandListENDC-r16");
+ for (const auto& e1 : band_list_endc_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ j.end_obj();
+}
+
+// SystemInformationBlockType27-r16 ::= SEQUENCE
+SRSASN_CODE sib_type27_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(carrier_freq_list_nbiot_r16_present, 1));
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+
+ if (carrier_freq_list_nbiot_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, carrier_freq_list_nbiot_r16, 1, 8));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type27_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(carrier_freq_list_nbiot_r16_present, 1));
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+
+ if (carrier_freq_list_nbiot_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(carrier_freq_list_nbiot_r16, bref, 1, 8));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type27_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (carrier_freq_list_nbiot_r16_present) {
+ j.start_array("carrierFreqListNBIOT-r16");
+ for (const auto& e1 : carrier_freq_list_nbiot_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ j.end_obj();
+}
+
+// SystemInformationBlockType28-r16 ::= SEQUENCE
+SRSASN_CODE sib_type28_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, segment_num_r16, (uint8_t)0u, (uint8_t)63u));
+ HANDLE_CODE(segment_type_r16.pack(bref));
+ HANDLE_CODE(segment_container_r16.pack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type28_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+
+ HANDLE_CODE(unpack_integer(segment_num_r16, bref, (uint8_t)0u, (uint8_t)63u));
+ HANDLE_CODE(segment_type_r16.unpack(bref));
+ HANDLE_CODE(segment_container_r16.unpack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type28_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("segmentNumber-r16", segment_num_r16);
+ j.write_str("segmentType-r16", segment_type_r16.to_string());
+ j.write_str("segmentContainer-r16", segment_container_r16.to_string());
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ j.end_obj();
+}
+
+const char* sib_type28_r16_s::segment_type_r16_opts::to_string() const
+{
+ static const char* options[] = {"notLastSegment", "lastSegment"};
+ return convert_enum_idx(options, 2, value, "sib_type28_r16_s::segment_type_r16_e_");
+}
+
+// SystemInformationBlockType29-r16 ::= SEQUENCE
+SRSASN_CODE sib_type29_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(res_reserv_cfg_common_dl_r16_present, 1));
+ HANDLE_CODE(bref.pack(res_reserv_cfg_common_ul_r16_present, 1));
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+
+ if (res_reserv_cfg_common_dl_r16_present) {
+ HANDLE_CODE(res_reserv_cfg_common_dl_r16.pack(bref));
+ }
+ if (res_reserv_cfg_common_ul_r16_present) {
+ HANDLE_CODE(res_reserv_cfg_common_ul_r16.pack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type29_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(res_reserv_cfg_common_dl_r16_present, 1));
+ HANDLE_CODE(bref.unpack(res_reserv_cfg_common_ul_r16_present, 1));
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+
+ if (res_reserv_cfg_common_dl_r16_present) {
+ HANDLE_CODE(res_reserv_cfg_common_dl_r16.unpack(bref));
+ }
+ if (res_reserv_cfg_common_ul_r16_present) {
+ HANDLE_CODE(res_reserv_cfg_common_ul_r16.unpack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type29_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (res_reserv_cfg_common_dl_r16_present) {
+ j.write_fieldname("resourceReservationConfigCommonDL-r16");
+ res_reserv_cfg_common_dl_r16.to_json(j);
+ }
+ if (res_reserv_cfg_common_ul_r16_present) {
+ j.write_fieldname("resourceReservationConfigCommonUL-r16");
+ res_reserv_cfg_common_ul_r16.to_json(j);
+ }
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ j.end_obj();
+}
+
// SystemInformationBlockType3 ::= SEQUENCE
SRSASN_CODE sib_type3_s::pack(bit_ref& bref) const
{
@@ -6393,6 +8442,8 @@ SRSASN_CODE sib_type3_s::pack(bit_ref& bref) const
group_flags[8] |= cell_resel_info_hsdn_r15.is_present();
group_flags[8] |= cell_sel_info_ce_v1530.is_present();
group_flags[8] |= crs_intf_mitig_neigh_cells_ce_r15_present;
+ group_flags[9] |= cell_resel_serving_freq_info_v1610.is_present();
+ group_flags[10] |= t_service_r17_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -6495,6 +8546,22 @@ SRSASN_CODE sib_type3_s::pack(bit_ref& bref) const
HANDLE_CODE(cell_sel_info_ce_v1530->pack(bref));
}
}
+ if (group_flags[9]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(cell_resel_serving_freq_info_v1610.is_present(), 1));
+ if (cell_resel_serving_freq_info_v1610.is_present()) {
+ HANDLE_CODE(cell_resel_serving_freq_info_v1610->pack(bref));
+ }
+ }
+ if (group_flags[10]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(t_service_r17_present, 1));
+ if (t_service_r17_present) {
+ HANDLE_CODE(pack_integer(bref, t_service_r17, (uint32_t)0u, (uint32_t)1048575u));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -6536,7 +8603,7 @@ SRSASN_CODE sib_type3_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(9);
+ ext_groups_unpacker_guard group_flags(11);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -6659,6 +8726,24 @@ SRSASN_CODE sib_type3_s::unpack(cbit_ref& bref)
HANDLE_CODE(cell_sel_info_ce_v1530->unpack(bref));
}
}
+ if (group_flags[9]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool cell_resel_serving_freq_info_v1610_present;
+ HANDLE_CODE(bref.unpack(cell_resel_serving_freq_info_v1610_present, 1));
+ cell_resel_serving_freq_info_v1610.set_present(cell_resel_serving_freq_info_v1610_present);
+ if (cell_resel_serving_freq_info_v1610.is_present()) {
+ HANDLE_CODE(cell_resel_serving_freq_info_v1610->unpack(bref));
+ }
+ }
+ if (group_flags[10]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(t_service_r17_present, 1));
+ if (t_service_r17_present) {
+ HANDLE_CODE(unpack_integer(t_service_r17, bref, (uint32_t)0u, (uint32_t)1048575u));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -6777,6 +8862,13 @@ void sib_type3_s::to_json(json_writer& j) const
if (crs_intf_mitig_neigh_cells_ce_r15_present) {
j.write_str("crs-IntfMitigNeighCellsCE-r15", "enabled");
}
+ if (cell_resel_serving_freq_info_v1610.is_present()) {
+ j.write_fieldname("cellReselectionServingFreqInfo-v1610");
+ cell_resel_serving_freq_info_v1610->to_json(j);
+ }
+ if (t_service_r17_present) {
+ j.write_int("t-Service-r17", t_service_r17);
+ }
}
j.end_obj();
}
@@ -6842,19 +8934,164 @@ int8_t sib_type3_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst
options, 4, value, "sib_type3_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_high_e_");
}
+// SystemInformationBlockType30-r17 ::= SEQUENCE
+SRSASN_CODE sib_type30_r17_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(common_plmns_with_disaster_condition_r17_present, 1));
+ HANDLE_CODE(bref.pack(applicable_disaster_info_list_r17_present, 1));
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+
+ if (common_plmns_with_disaster_condition_r17_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, common_plmns_with_disaster_condition_r17, 1, 6));
+ }
+ if (applicable_disaster_info_list_r17_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, applicable_disaster_info_list_r17, 1, 6));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type30_r17_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(common_plmns_with_disaster_condition_r17_present, 1));
+ HANDLE_CODE(bref.unpack(applicable_disaster_info_list_r17_present, 1));
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+
+ if (common_plmns_with_disaster_condition_r17_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(common_plmns_with_disaster_condition_r17, bref, 1, 6));
+ }
+ if (applicable_disaster_info_list_r17_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(applicable_disaster_info_list_r17, bref, 1, 6));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type30_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (common_plmns_with_disaster_condition_r17_present) {
+ j.start_array("commonPLMNsWithDisasterCondition-r17");
+ for (const auto& e1 : common_plmns_with_disaster_condition_r17) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (applicable_disaster_info_list_r17_present) {
+ j.start_array("applicableDisasterInfoList-r17");
+ for (const auto& e1 : applicable_disaster_info_list_r17) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ j.end_obj();
+}
+
+// SystemInformationBlockType31-r17 ::= SEQUENCE
+SRSASN_CODE sib_type31_r17_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+
+ HANDLE_CODE(serving_satellite_info_r17.pack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type31_r17_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+
+ HANDLE_CODE(serving_satellite_info_r17.unpack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type31_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("servingSatelliteInfo-r17");
+ serving_satellite_info_r17.to_json(j);
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ j.end_obj();
+}
+
+// SystemInformationBlockType32-r17 ::= SEQUENCE
+SRSASN_CODE sib_type32_r17_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(satellite_info_list_r17_present, 1));
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+
+ if (satellite_info_list_r17_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, satellite_info_list_r17, 1, 4));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type32_r17_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(satellite_info_list_r17_present, 1));
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+
+ if (satellite_info_list_r17_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(satellite_info_list_r17, bref, 1, 4));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type32_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (satellite_info_list_r17_present) {
+ j.start_array("satelliteInfoList-r17");
+ for (const auto& e1 : satellite_info_list_r17) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ j.end_obj();
+}
+
// SystemInformationBlockType4 ::= SEQUENCE
SRSASN_CODE sib_type4_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(intra_freq_neigh_cell_list_present, 1));
- HANDLE_CODE(bref.pack(intra_freq_black_cell_list_present, 1));
+ HANDLE_CODE(bref.pack(intra_freq_excluded_cell_list_present, 1));
HANDLE_CODE(bref.pack(csg_pci_range_present, 1));
if (intra_freq_neigh_cell_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, intra_freq_neigh_cell_list, 1, 16));
}
- if (intra_freq_black_cell_list_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, intra_freq_black_cell_list, 1, 16));
+ if (intra_freq_excluded_cell_list_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, intra_freq_excluded_cell_list, 1, 16));
}
if (csg_pci_range_present) {
HANDLE_CODE(csg_pci_range.pack(bref));
@@ -6864,6 +9101,8 @@ SRSASN_CODE sib_type4_s::pack(bit_ref& bref) const
ext_groups_packer_guard group_flags;
group_flags[0] |= late_non_crit_ext_present;
group_flags[1] |= intra_freq_neigh_hsdn_cell_list_r15.is_present();
+ group_flags[2] |= rss_cfg_carrier_info_r16.is_present();
+ group_flags[2] |= intra_freq_neigh_cell_list_v1610.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -6879,6 +9118,18 @@ SRSASN_CODE sib_type4_s::pack(bit_ref& bref) const
HANDLE_CODE(pack_dyn_seq_of(bref, *intra_freq_neigh_hsdn_cell_list_r15, 1, 16));
}
}
+ if (group_flags[2]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(rss_cfg_carrier_info_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(intra_freq_neigh_cell_list_v1610.is_present(), 1));
+ if (rss_cfg_carrier_info_r16.is_present()) {
+ HANDLE_CODE(rss_cfg_carrier_info_r16->pack(bref));
+ }
+ if (intra_freq_neigh_cell_list_v1610.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *intra_freq_neigh_cell_list_v1610, 1, 16));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -6886,21 +9137,21 @@ SRSASN_CODE sib_type4_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(intra_freq_neigh_cell_list_present, 1));
- HANDLE_CODE(bref.unpack(intra_freq_black_cell_list_present, 1));
+ HANDLE_CODE(bref.unpack(intra_freq_excluded_cell_list_present, 1));
HANDLE_CODE(bref.unpack(csg_pci_range_present, 1));
if (intra_freq_neigh_cell_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(intra_freq_neigh_cell_list, bref, 1, 16));
}
- if (intra_freq_black_cell_list_present) {
- HANDLE_CODE(unpack_dyn_seq_of(intra_freq_black_cell_list, bref, 1, 16));
+ if (intra_freq_excluded_cell_list_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(intra_freq_excluded_cell_list, bref, 1, 16));
}
if (csg_pci_range_present) {
HANDLE_CODE(csg_pci_range.unpack(bref));
}
if (ext) {
- ext_groups_unpacker_guard group_flags(2);
+ ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -6918,6 +9169,22 @@ SRSASN_CODE sib_type4_s::unpack(cbit_ref& bref)
HANDLE_CODE(unpack_dyn_seq_of(*intra_freq_neigh_hsdn_cell_list_r15, bref, 1, 16));
}
}
+ if (group_flags[2]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool rss_cfg_carrier_info_r16_present;
+ HANDLE_CODE(bref.unpack(rss_cfg_carrier_info_r16_present, 1));
+ rss_cfg_carrier_info_r16.set_present(rss_cfg_carrier_info_r16_present);
+ bool intra_freq_neigh_cell_list_v1610_present;
+ HANDLE_CODE(bref.unpack(intra_freq_neigh_cell_list_v1610_present, 1));
+ intra_freq_neigh_cell_list_v1610.set_present(intra_freq_neigh_cell_list_v1610_present);
+ if (rss_cfg_carrier_info_r16.is_present()) {
+ HANDLE_CODE(rss_cfg_carrier_info_r16->unpack(bref));
+ }
+ if (intra_freq_neigh_cell_list_v1610.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*intra_freq_neigh_cell_list_v1610, bref, 1, 16));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -6931,9 +9198,9 @@ void sib_type4_s::to_json(json_writer& j) const
}
j.end_array();
}
- if (intra_freq_black_cell_list_present) {
- j.start_array("intraFreqBlackCellList");
- for (const auto& e1 : intra_freq_black_cell_list) {
+ if (intra_freq_excluded_cell_list_present) {
+ j.start_array("intraFreqExcludedCellList");
+ for (const auto& e1 : intra_freq_excluded_cell_list) {
e1.to_json(j);
}
j.end_array();
@@ -6953,6 +9220,17 @@ void sib_type4_s::to_json(json_writer& j) const
}
j.end_array();
}
+ if (rss_cfg_carrier_info_r16.is_present()) {
+ j.write_fieldname("rss-ConfigCarrierInfo-r16");
+ rss_cfg_carrier_info_r16->to_json(j);
+ }
+ if (intra_freq_neigh_cell_list_v1610.is_present()) {
+ j.start_array("intraFreqNeighCellList-v1610");
+ for (const auto& e1 : *intra_freq_neigh_cell_list_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
}
j.end_obj();
}
@@ -6978,6 +9256,9 @@ SRSASN_CODE sib_type5_s::pack(bit_ref& bref) const
group_flags[7] |= inter_freq_carrier_freq_list_v1530.is_present();
group_flags[7] |= inter_freq_carrier_freq_list_ext_v1530.is_present();
group_flags[7] |= meas_idle_cfg_sib_r15.is_present();
+ group_flags[8] |= inter_freq_carrier_freq_list_v1610.is_present();
+ group_flags[8] |= inter_freq_carrier_freq_list_ext_v1610.is_present();
+ group_flags[8] |= meas_idle_cfg_sib_nr_r16.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -7061,6 +9342,22 @@ SRSASN_CODE sib_type5_s::pack(bit_ref& bref) const
HANDLE_CODE(meas_idle_cfg_sib_r15->pack(bref));
}
}
+ if (group_flags[8]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(inter_freq_carrier_freq_list_v1610.is_present(), 1));
+ HANDLE_CODE(bref.pack(inter_freq_carrier_freq_list_ext_v1610.is_present(), 1));
+ HANDLE_CODE(bref.pack(meas_idle_cfg_sib_nr_r16.is_present(), 1));
+ if (inter_freq_carrier_freq_list_v1610.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *inter_freq_carrier_freq_list_v1610, 1, 8));
+ }
+ if (inter_freq_carrier_freq_list_ext_v1610.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *inter_freq_carrier_freq_list_ext_v1610, 1, 8));
+ }
+ if (meas_idle_cfg_sib_nr_r16.is_present()) {
+ HANDLE_CODE(meas_idle_cfg_sib_nr_r16->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -7070,7 +9367,7 @@ SRSASN_CODE sib_type5_s::unpack(cbit_ref& bref)
HANDLE_CODE(unpack_dyn_seq_of(inter_freq_carrier_freq_list, bref, 1, 8));
if (ext) {
- ext_groups_unpacker_guard group_flags(8);
+ ext_groups_unpacker_guard group_flags(9);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -7176,6 +9473,28 @@ SRSASN_CODE sib_type5_s::unpack(cbit_ref& bref)
HANDLE_CODE(meas_idle_cfg_sib_r15->unpack(bref));
}
}
+ if (group_flags[8]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool inter_freq_carrier_freq_list_v1610_present;
+ HANDLE_CODE(bref.unpack(inter_freq_carrier_freq_list_v1610_present, 1));
+ inter_freq_carrier_freq_list_v1610.set_present(inter_freq_carrier_freq_list_v1610_present);
+ bool inter_freq_carrier_freq_list_ext_v1610_present;
+ HANDLE_CODE(bref.unpack(inter_freq_carrier_freq_list_ext_v1610_present, 1));
+ inter_freq_carrier_freq_list_ext_v1610.set_present(inter_freq_carrier_freq_list_ext_v1610_present);
+ bool meas_idle_cfg_sib_nr_r16_present;
+ HANDLE_CODE(bref.unpack(meas_idle_cfg_sib_nr_r16_present, 1));
+ meas_idle_cfg_sib_nr_r16.set_present(meas_idle_cfg_sib_nr_r16_present);
+ if (inter_freq_carrier_freq_list_v1610.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*inter_freq_carrier_freq_list_v1610, bref, 1, 8));
+ }
+ if (inter_freq_carrier_freq_list_ext_v1610.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*inter_freq_carrier_freq_list_ext_v1610, bref, 1, 8));
+ }
+ if (meas_idle_cfg_sib_nr_r16.is_present()) {
+ HANDLE_CODE(meas_idle_cfg_sib_nr_r16->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -7268,6 +9587,24 @@ void sib_type5_s::to_json(json_writer& j) const
j.write_fieldname("measIdleConfigSIB-r15");
meas_idle_cfg_sib_r15->to_json(j);
}
+ if (inter_freq_carrier_freq_list_v1610.is_present()) {
+ j.start_array("interFreqCarrierFreqList-v1610");
+ for (const auto& e1 : *inter_freq_carrier_freq_list_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (inter_freq_carrier_freq_list_ext_v1610.is_present()) {
+ j.start_array("interFreqCarrierFreqListExt-v1610");
+ for (const auto& e1 : *inter_freq_carrier_freq_list_ext_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (meas_idle_cfg_sib_nr_r16.is_present()) {
+ j.write_fieldname("measIdleConfigSIB-NR-r16");
+ meas_idle_cfg_sib_nr_r16->to_json(j);
+ }
}
j.end_obj();
}
@@ -7956,6 +10293,39 @@ void pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::destroy_()
case types::pos_sib3_minus1_r15:
c.destroy<sib_pos_r15_s>();
break;
+ case types::pos_sib1_minus8_v1610:
+ c.destroy<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus20_v1610:
+ c.destroy<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus21_v1610:
+ c.destroy<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus22_v1610:
+ c.destroy<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus23_v1610:
+ c.destroy<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus24_v1610:
+ c.destroy<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus25_v1610:
+ c.destroy<sib_pos_r15_s>();
+ break;
+ case types::pos_sib4_minus1_v1610:
+ c.destroy<sib_pos_r15_s>();
+ break;
+ case types::pos_sib5_minus1_v1610:
+ c.destroy<sib_pos_r15_s>();
+ break;
+ case types::pos_sib1_minus9_v1700:
+ c.destroy<sib_pos_r15_s>();
+ break;
+ case types::pos_sib1_minus10_v1700:
+ c.destroy<sib_pos_r15_s>();
+ break;
default:
break;
}
@@ -8046,6 +10416,39 @@ void pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set(types::optio
case types::pos_sib3_minus1_r15:
c.init<sib_pos_r15_s>();
break;
+ case types::pos_sib1_minus8_v1610:
+ c.init<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus20_v1610:
+ c.init<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus21_v1610:
+ c.init<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus22_v1610:
+ c.init<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus23_v1610:
+ c.init<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus24_v1610:
+ c.init<sib_pos_r15_s>();
+ break;
+ case types::pos_sib2_minus25_v1610:
+ c.init<sib_pos_r15_s>();
+ break;
+ case types::pos_sib4_minus1_v1610:
+ c.init<sib_pos_r15_s>();
+ break;
+ case types::pos_sib5_minus1_v1610:
+ c.init<sib_pos_r15_s>();
+ break;
+ case types::pos_sib1_minus9_v1700:
+ c.init<sib_pos_r15_s>();
+ break;
+ case types::pos_sib1_minus10_v1700:
+ c.init<sib_pos_r15_s>();
+ break;
case types::nulltype:
break;
default:
@@ -8138,6 +10541,39 @@ pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::pos_sib_type_and_info
case types::pos_sib3_minus1_r15:
c.init(other.c.get<sib_pos_r15_s>());
break;
+ case types::pos_sib1_minus8_v1610:
+ c.init(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus20_v1610:
+ c.init(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus21_v1610:
+ c.init(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus22_v1610:
+ c.init(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus23_v1610:
+ c.init(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus24_v1610:
+ c.init(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus25_v1610:
+ c.init(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib4_minus1_v1610:
+ c.init(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib5_minus1_v1610:
+ c.init(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib1_minus9_v1700:
+ c.init(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib1_minus10_v1700:
+ c.init(other.c.get<sib_pos_r15_s>());
+ break;
case types::nulltype:
break;
default:
@@ -8234,6 +10670,39 @@ pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::operator=(
case types::pos_sib3_minus1_r15:
c.set(other.c.get<sib_pos_r15_s>());
break;
+ case types::pos_sib1_minus8_v1610:
+ c.set(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus20_v1610:
+ c.set(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus21_v1610:
+ c.set(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus22_v1610:
+ c.set(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus23_v1610:
+ c.set(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus24_v1610:
+ c.set(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib2_minus25_v1610:
+ c.set(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib4_minus1_v1610:
+ c.set(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib5_minus1_v1610:
+ c.set(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib1_minus9_v1700:
+ c.set(other.c.get<sib_pos_r15_s>());
+ break;
+ case types::pos_sib1_minus10_v1700:
+ c.set(other.c.get<sib_pos_r15_s>());
+ break;
case types::nulltype:
break;
default:
@@ -8377,6 +10846,61 @@ sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_po
set(types::pos_sib3_minus1_r15);
return c.get<sib_pos_r15_s>();
}
+sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib1_minus8_v1610()
+{
+ set(types::pos_sib1_minus8_v1610);
+ return c.get<sib_pos_r15_s>();
+}
+sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus20_v1610()
+{
+ set(types::pos_sib2_minus20_v1610);
+ return c.get<sib_pos_r15_s>();
+}
+sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus21_v1610()
+{
+ set(types::pos_sib2_minus21_v1610);
+ return c.get<sib_pos_r15_s>();
+}
+sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus22_v1610()
+{
+ set(types::pos_sib2_minus22_v1610);
+ return c.get<sib_pos_r15_s>();
+}
+sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus23_v1610()
+{
+ set(types::pos_sib2_minus23_v1610);
+ return c.get<sib_pos_r15_s>();
+}
+sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus24_v1610()
+{
+ set(types::pos_sib2_minus24_v1610);
+ return c.get<sib_pos_r15_s>();
+}
+sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus25_v1610()
+{
+ set(types::pos_sib2_minus25_v1610);
+ return c.get<sib_pos_r15_s>();
+}
+sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib4_minus1_v1610()
+{
+ set(types::pos_sib4_minus1_v1610);
+ return c.get<sib_pos_r15_s>();
+}
+sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib5_minus1_v1610()
+{
+ set(types::pos_sib5_minus1_v1610);
+ return c.get<sib_pos_r15_s>();
+}
+sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib1_minus9_v1700()
+{
+ set(types::pos_sib1_minus9_v1700);
+ return c.get<sib_pos_r15_s>();
+}
+sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib1_minus10_v1700()
+{
+ set(types::pos_sib1_minus10_v1700);
+ return c.get<sib_pos_r15_s>();
+}
void pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::to_json(json_writer& j) const
{
j.start_obj();
@@ -8489,6 +11013,50 @@ void pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::to_json(json_wri
j.write_fieldname("posSib3-1-r15");
c.get<sib_pos_r15_s>().to_json(j);
break;
+ case types::pos_sib1_minus8_v1610:
+ j.write_fieldname("posSib1-8-v1610");
+ c.get<sib_pos_r15_s>().to_json(j);
+ break;
+ case types::pos_sib2_minus20_v1610:
+ j.write_fieldname("posSib2-20-v1610");
+ c.get<sib_pos_r15_s>().to_json(j);
+ break;
+ case types::pos_sib2_minus21_v1610:
+ j.write_fieldname("posSib2-21-v1610");
+ c.get<sib_pos_r15_s>().to_json(j);
+ break;
+ case types::pos_sib2_minus22_v1610:
+ j.write_fieldname("posSib2-22-v1610");
+ c.get<sib_pos_r15_s>().to_json(j);
+ break;
+ case types::pos_sib2_minus23_v1610:
+ j.write_fieldname("posSib2-23-v1610");
+ c.get<sib_pos_r15_s>().to_json(j);
+ break;
+ case types::pos_sib2_minus24_v1610:
+ j.write_fieldname("posSib2-24-v1610");
+ c.get<sib_pos_r15_s>().to_json(j);
+ break;
+ case types::pos_sib2_minus25_v1610:
+ j.write_fieldname("posSib2-25-v1610");
+ c.get<sib_pos_r15_s>().to_json(j);
+ break;
+ case types::pos_sib4_minus1_v1610:
+ j.write_fieldname("posSib4-1-v1610");
+ c.get<sib_pos_r15_s>().to_json(j);
+ break;
+ case types::pos_sib5_minus1_v1610:
+ j.write_fieldname("posSib5-1-v1610");
+ c.get<sib_pos_r15_s>().to_json(j);
+ break;
+ case types::pos_sib1_minus9_v1700:
+ j.write_fieldname("posSib1-9-v1700");
+ c.get<sib_pos_r15_s>().to_json(j);
+ break;
+ case types::pos_sib1_minus10_v1700:
+ j.write_fieldname("posSib1-10-v1700");
+ c.get<sib_pos_r15_s>().to_json(j);
+ break;
default:
log_invalid_choice_id(type_, "pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_");
}
@@ -8579,6 +11147,50 @@ SRSASN_CODE pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::pack(bit_
case types::pos_sib3_minus1_r15:
HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
break;
+ case types::pos_sib1_minus8_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
+ } break;
+ case types::pos_sib2_minus20_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
+ } break;
+ case types::pos_sib2_minus21_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
+ } break;
+ case types::pos_sib2_minus22_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
+ } break;
+ case types::pos_sib2_minus23_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
+ } break;
+ case types::pos_sib2_minus24_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
+ } break;
+ case types::pos_sib2_minus25_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
+ } break;
+ case types::pos_sib4_minus1_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
+ } break;
+ case types::pos_sib5_minus1_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
+ } break;
+ case types::pos_sib1_minus9_v1700: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
+ } break;
+ case types::pos_sib1_minus10_v1700: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().pack(bref));
+ } break;
default:
log_invalid_choice_id(type_, "pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_");
return SRSASN_ERROR_ENCODE_FAIL;
@@ -8672,6 +11284,50 @@ SRSASN_CODE pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::unpack(cb
case types::pos_sib3_minus1_r15:
HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
break;
+ case types::pos_sib1_minus8_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
+ } break;
+ case types::pos_sib2_minus20_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
+ } break;
+ case types::pos_sib2_minus21_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
+ } break;
+ case types::pos_sib2_minus22_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
+ } break;
+ case types::pos_sib2_minus23_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
+ } break;
+ case types::pos_sib2_minus24_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
+ } break;
+ case types::pos_sib2_minus25_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
+ } break;
+ case types::pos_sib4_minus1_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
+ } break;
+ case types::pos_sib5_minus1_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
+ } break;
+ case types::pos_sib1_minus9_v1700: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
+ } break;
+ case types::pos_sib1_minus10_v1700: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_pos_r15_s>().unpack(bref));
+ } break;
default:
log_invalid_choice_id(type_, "pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_");
return SRSASN_ERROR_DECODE_FAIL;
@@ -8751,6 +11407,27 @@ void sib_info_item_c::destroy_()
case types::sib26_v1530:
c.destroy<sib_type26_r15_s>();
break;
+ case types::sib26a_v1610:
+ c.destroy<sib_type26a_r16_s>();
+ break;
+ case types::sib27_v1610:
+ c.destroy<sib_type27_r16_s>();
+ break;
+ case types::sib28_v1610:
+ c.destroy<sib_type28_r16_s>();
+ break;
+ case types::sib29_v1610:
+ c.destroy<sib_type29_r16_s>();
+ break;
+ case types::sib30_v1700:
+ c.destroy<sib_type30_r17_s>();
+ break;
+ case types::sib31_v1700:
+ c.destroy<sib_type31_r17_s>();
+ break;
+ case types::sib32_v1700:
+ c.destroy<sib_type32_r17_s>();
+ break;
default:
break;
}
@@ -8829,6 +11506,27 @@ void sib_info_item_c::set(types::options e)
case types::sib26_v1530:
c.init<sib_type26_r15_s>();
break;
+ case types::sib26a_v1610:
+ c.init<sib_type26a_r16_s>();
+ break;
+ case types::sib27_v1610:
+ c.init<sib_type27_r16_s>();
+ break;
+ case types::sib28_v1610:
+ c.init<sib_type28_r16_s>();
+ break;
+ case types::sib29_v1610:
+ c.init<sib_type29_r16_s>();
+ break;
+ case types::sib30_v1700:
+ c.init<sib_type30_r17_s>();
+ break;
+ case types::sib31_v1700:
+ c.init<sib_type31_r17_s>();
+ break;
+ case types::sib32_v1700:
+ c.init<sib_type32_r17_s>();
+ break;
case types::nulltype:
break;
default:
@@ -8908,6 +11606,27 @@ sib_info_item_c::sib_info_item_c(const sib_info_item_c& other)
case types::sib26_v1530:
c.init(other.c.get<sib_type26_r15_s>());
break;
+ case types::sib26a_v1610:
+ c.init(other.c.get<sib_type26a_r16_s>());
+ break;
+ case types::sib27_v1610:
+ c.init(other.c.get<sib_type27_r16_s>());
+ break;
+ case types::sib28_v1610:
+ c.init(other.c.get<sib_type28_r16_s>());
+ break;
+ case types::sib29_v1610:
+ c.init(other.c.get<sib_type29_r16_s>());
+ break;
+ case types::sib30_v1700:
+ c.init(other.c.get<sib_type30_r17_s>());
+ break;
+ case types::sib31_v1700:
+ c.init(other.c.get<sib_type31_r17_s>());
+ break;
+ case types::sib32_v1700:
+ c.init(other.c.get<sib_type32_r17_s>());
+ break;
case types::nulltype:
break;
default:
@@ -8990,6 +11709,27 @@ sib_info_item_c& sib_info_item_c::operator=(const sib_info_item_c& other)
case types::sib26_v1530:
c.set(other.c.get<sib_type26_r15_s>());
break;
+ case types::sib26a_v1610:
+ c.set(other.c.get<sib_type26a_r16_s>());
+ break;
+ case types::sib27_v1610:
+ c.set(other.c.get<sib_type27_r16_s>());
+ break;
+ case types::sib28_v1610:
+ c.set(other.c.get<sib_type28_r16_s>());
+ break;
+ case types::sib29_v1610:
+ c.set(other.c.get<sib_type29_r16_s>());
+ break;
+ case types::sib30_v1700:
+ c.set(other.c.get<sib_type30_r17_s>());
+ break;
+ case types::sib31_v1700:
+ c.set(other.c.get<sib_type31_r17_s>());
+ break;
+ case types::sib32_v1700:
+ c.set(other.c.get<sib_type32_r17_s>());
+ break;
case types::nulltype:
break;
default:
@@ -9113,6 +11853,41 @@ sib_type26_r15_s& sib_info_item_c::set_sib26_v1530()
set(types::sib26_v1530);
return c.get<sib_type26_r15_s>();
}
+sib_type26a_r16_s& sib_info_item_c::set_sib26a_v1610()
+{
+ set(types::sib26a_v1610);
+ return c.get<sib_type26a_r16_s>();
+}
+sib_type27_r16_s& sib_info_item_c::set_sib27_v1610()
+{
+ set(types::sib27_v1610);
+ return c.get<sib_type27_r16_s>();
+}
+sib_type28_r16_s& sib_info_item_c::set_sib28_v1610()
+{
+ set(types::sib28_v1610);
+ return c.get<sib_type28_r16_s>();
+}
+sib_type29_r16_s& sib_info_item_c::set_sib29_v1610()
+{
+ set(types::sib29_v1610);
+ return c.get<sib_type29_r16_s>();
+}
+sib_type30_r17_s& sib_info_item_c::set_sib30_v1700()
+{
+ set(types::sib30_v1700);
+ return c.get<sib_type30_r17_s>();
+}
+sib_type31_r17_s& sib_info_item_c::set_sib31_v1700()
+{
+ set(types::sib31_v1700);
+ return c.get<sib_type31_r17_s>();
+}
+sib_type32_r17_s& sib_info_item_c::set_sib32_v1700()
+{
+ set(types::sib32_v1700);
+ return c.get<sib_type32_r17_s>();
+}
void sib_info_item_c::to_json(json_writer& j) const
{
j.start_obj();
@@ -9209,6 +11984,34 @@ void sib_info_item_c::to_json(json_writer& j) const
j.write_fieldname("sib26-v1530");
c.get<sib_type26_r15_s>().to_json(j);
break;
+ case types::sib26a_v1610:
+ j.write_fieldname("sib26a-v1610");
+ c.get<sib_type26a_r16_s>().to_json(j);
+ break;
+ case types::sib27_v1610:
+ j.write_fieldname("sib27-v1610");
+ c.get<sib_type27_r16_s>().to_json(j);
+ break;
+ case types::sib28_v1610:
+ j.write_fieldname("sib28-v1610");
+ c.get<sib_type28_r16_s>().to_json(j);
+ break;
+ case types::sib29_v1610:
+ j.write_fieldname("sib29-v1610");
+ c.get<sib_type29_r16_s>().to_json(j);
+ break;
+ case types::sib30_v1700:
+ j.write_fieldname("sib30-v1700");
+ c.get<sib_type30_r17_s>().to_json(j);
+ break;
+ case types::sib31_v1700:
+ j.write_fieldname("sib31-v1700");
+ c.get<sib_type31_r17_s>().to_json(j);
+ break;
+ case types::sib32_v1700:
+ j.write_fieldname("sib32-v1700");
+ c.get<sib_type32_r17_s>().to_json(j);
+ break;
default:
log_invalid_choice_id(type_, "sib_info_item_c");
}
@@ -9300,6 +12103,34 @@ SRSASN_CODE sib_info_item_c::pack(bit_ref& bref) const
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<sib_type26_r15_s>().pack(bref));
} break;
+ case types::sib26a_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type26a_r16_s>().pack(bref));
+ } break;
+ case types::sib27_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type27_r16_s>().pack(bref));
+ } break;
+ case types::sib28_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type28_r16_s>().pack(bref));
+ } break;
+ case types::sib29_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type29_r16_s>().pack(bref));
+ } break;
+ case types::sib30_v1700: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type30_r17_s>().pack(bref));
+ } break;
+ case types::sib31_v1700: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type31_r17_s>().pack(bref));
+ } break;
+ case types::sib32_v1700: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type32_r17_s>().pack(bref));
+ } break;
default:
log_invalid_choice_id(type_, "sib_info_item_c");
return SRSASN_ERROR_ENCODE_FAIL;
@@ -9394,6 +12225,34 @@ SRSASN_CODE sib_info_item_c::unpack(cbit_ref& bref)
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<sib_type26_r15_s>().unpack(bref));
} break;
+ case types::sib26a_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type26a_r16_s>().unpack(bref));
+ } break;
+ case types::sib27_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type27_r16_s>().unpack(bref));
+ } break;
+ case types::sib28_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type28_r16_s>().unpack(bref));
+ } break;
+ case types::sib29_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type29_r16_s>().unpack(bref));
+ } break;
+ case types::sib30_v1700: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type30_r17_s>().unpack(bref));
+ } break;
+ case types::sib31_v1700: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type31_r17_s>().unpack(bref));
+ } break;
+ case types::sib32_v1700: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type32_r17_s>().unpack(bref));
+ } break;
default:
log_invalid_choice_id(type_, "sib_info_item_c");
return SRSASN_ERROR_DECODE_FAIL;
@@ -10541,23 +13400,18 @@ const char* sib_type_v12j0_opts::to_string() const
"sibType24-v1530",
"sibType25-v1530",
"sibType26-v1530",
- "spare10",
- "spare9",
- "spare8",
- "spare7",
- "spare6",
- "spare5",
- "spare4",
+ "sibType26a-v1610",
+ "sibType27-v1610",
+ "sibType28-v1610",
+ "sibType29-v1610",
+ "sibType30-v1700",
+ "sibType31-v1700",
+ "sibType32-v1700",
"spare3",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "sib_type_v12j0_e");
}
-uint8_t sib_type_v12j0_opts::to_number() const
-{
- static const uint8_t options[] = {19, 20, 21, 24, 25, 26};
- return map_enum_number(options, 6, value, "sib_type_v12j0_e");
-}
// SchedulingInfo-v12j0 ::= SEQUENCE
SRSASN_CODE sched_info_v12j0_s::pack(bit_ref& bref) const
@@ -10620,6 +13474,50 @@ void sched_info_ext_r12_s::to_json(json_writer& j) const
j.end_obj();
}
+// SystemInformationBlockType1-v15g0-IEs ::= SEQUENCE
+SRSASN_CODE sib_type1_v15g0_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(bw_reduced_access_related_info_v15g0_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (bw_reduced_access_related_info_v15g0_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, bw_reduced_access_related_info_v15g0.pos_sched_info_list_br_r15, 1, 32));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type1_v15g0_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(bw_reduced_access_related_info_v15g0_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (bw_reduced_access_related_info_v15g0_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(bw_reduced_access_related_info_v15g0.pos_sched_info_list_br_r15, bref, 1, 32));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type1_v15g0_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (bw_reduced_access_related_info_v15g0_present) {
+ j.write_fieldname("bandwidthReducedAccessRelatedInfo-v15g0");
+ j.start_obj();
+ j.start_array("posSchedulingInfoList-BR-r15");
+ for (const auto& e1 : bw_reduced_access_related_info_v15g0.pos_sched_info_list_br_r15) {
+ 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();
+}
+
// SystemInformationBlockType1-v12j0-IEs ::= SEQUENCE
SRSASN_CODE sib_type1_v12j0_ies_s::pack(bit_ref& bref) const
{
@@ -10633,6 +13531,9 @@ SRSASN_CODE sib_type1_v12j0_ies_s::pack(bit_ref& bref) const
if (sched_info_list_ext_r12_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sched_info_list_ext_r12, 1, 32));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -10648,6 +13549,9 @@ SRSASN_CODE sib_type1_v12j0_ies_s::unpack(cbit_ref& bref)
if (sched_info_list_ext_r12_present) {
HANDLE_CODE(unpack_dyn_seq_of(sched_info_list_ext_r12, bref, 1, 32));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -10670,8 +13574,7 @@ void sib_type1_v12j0_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
diff --git a/lib/src/asn1/rrc/dl_ccch_msg.cc b/lib/src/asn1/rrc/dl_ccch_msg.cc
index 4cfb8588a..2579b738c 100644
--- a/lib/src/asn1/rrc/dl_ccch_msg.cc
+++ b/lib/src/asn1/rrc/dl_ccch_msg.cc
@@ -417,6 +417,43 @@ void rrc_conn_reject_v1020_ies_s::to_json(json_writer& j) const
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
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) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
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) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
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) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
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_()
{
switch (type_) {
- case types::geran_r15:
+ case types::geran:
c.destroy<carrier_freqs_geran_s>();
break;
- case types::cdma2000_hrpd_r15:
+ case types::cdma2000_hrpd:
c.destroy<carrier_freq_cdma2000_s>();
break;
- case types::cdma2000_minus1x_rtt_r15:
+ case types::cdma2000_minus1x_rtt:
c.destroy<carrier_freq_cdma2000_s>();
break;
- case types::utra_tdd_r15:
+ case types::utra_tdd:
c.destroy<carrier_freq_list_utra_tdd_r10_l>();
break;
default:
@@ -897,20 +939,20 @@ void redirected_carrier_info_r15_ies_c::set(types::options e)
destroy_();
type_ = e;
switch (type_) {
- case types::eutra_r15:
+ case types::eutra:
break;
- case types::geran_r15:
+ case types::geran:
c.init<carrier_freqs_geran_s>();
break;
- case types::utra_fdd_r15:
+ case types::utra_fdd:
break;
- case types::cdma2000_hrpd_r15:
+ case types::cdma2000_hrpd:
c.init<carrier_freq_cdma2000_s>();
break;
- case types::cdma2000_minus1x_rtt_r15:
+ case types::cdma2000_minus1x_rtt:
c.init<carrier_freq_cdma2000_s>();
break;
- case types::utra_tdd_r15:
+ case types::utra_tdd:
c.init<carrier_freq_list_utra_tdd_r10_l>();
break;
case types::nulltype:
@@ -923,22 +965,22 @@ redirected_carrier_info_r15_ies_c::redirected_carrier_info_r15_ies_c(const redir
{
type_ = other.type();
switch (type_) {
- case types::eutra_r15:
+ case types::eutra:
c.init(other.c.get<uint32_t>());
break;
- case types::geran_r15:
+ case types::geran:
c.init(other.c.get<carrier_freqs_geran_s>());
break;
- case types::utra_fdd_r15:
+ case types::utra_fdd:
c.init(other.c.get<uint16_t>());
break;
- case types::cdma2000_hrpd_r15:
+ case types::cdma2000_hrpd:
c.init(other.c.get<carrier_freq_cdma2000_s>());
break;
- case types::cdma2000_minus1x_rtt_r15:
+ case types::cdma2000_minus1x_rtt:
c.init(other.c.get<carrier_freq_cdma2000_s>());
break;
- case types::utra_tdd_r15:
+ case types::utra_tdd:
c.init(other.c.get<carrier_freq_list_utra_tdd_r10_l>());
break;
case types::nulltype:
@@ -955,22 +997,22 @@ redirected_carrier_info_r15_ies_c::operator=(const redirected_carrier_info_r15_i
}
set(other.type());
switch (type_) {
- case types::eutra_r15:
+ case types::eutra:
c.set(other.c.get<uint32_t>());
break;
- case types::geran_r15:
+ case types::geran:
c.set(other.c.get<carrier_freqs_geran_s>());
break;
- case types::utra_fdd_r15:
+ case types::utra_fdd:
c.set(other.c.get<uint16_t>());
break;
- case types::cdma2000_hrpd_r15:
+ case types::cdma2000_hrpd:
c.set(other.c.get<carrier_freq_cdma2000_s>());
break;
- case types::cdma2000_minus1x_rtt_r15:
+ case types::cdma2000_minus1x_rtt:
c.set(other.c.get<carrier_freq_cdma2000_s>());
break;
- case types::utra_tdd_r15:
+ case types::utra_tdd:
c.set(other.c.get<carrier_freq_list_utra_tdd_r10_l>());
break;
case types::nulltype:
@@ -981,60 +1023,60 @@ redirected_carrier_info_r15_ies_c::operator=(const redirected_carrier_info_r15_i
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>();
}
-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>();
}
-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>();
}
-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>();
}
-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>();
}
-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>();
}
void redirected_carrier_info_r15_ies_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
- case types::eutra_r15:
- j.write_int("eutra-r15", c.get<uint32_t>());
+ case types::eutra:
+ j.write_int("eutra", c.get<uint32_t>());
break;
- case types::geran_r15:
- j.write_fieldname("geran-r15");
+ case types::geran:
+ j.write_fieldname("geran");
c.get<carrier_freqs_geran_s>().to_json(j);
break;
- case types::utra_fdd_r15:
- j.write_int("utra-FDD-r15", c.get<uint16_t>());
+ case types::utra_fdd:
+ j.write_int("utra-FDD", c.get<uint16_t>());
break;
- case types::cdma2000_hrpd_r15:
- j.write_fieldname("cdma2000-HRPD-r15");
+ case types::cdma2000_hrpd:
+ j.write_fieldname("cdma2000-HRPD");
c.get<carrier_freq_cdma2000_s>().to_json(j);
break;
- case types::cdma2000_minus1x_rtt_r15:
- j.write_fieldname("cdma2000-1xRTT-r15");
+ case types::cdma2000_minus1x_rtt:
+ j.write_fieldname("cdma2000-1xRTT");
c.get<carrier_freq_cdma2000_s>().to_json(j);
break;
- case types::utra_tdd_r15:
- j.start_array("utra-TDD-r15");
+ case types::utra_tdd:
+ j.start_array("utra-TDD");
for (const auto& e1 : c.get<carrier_freq_list_utra_tdd_r10_l>()) {
j.write_int(e1);
}
@@ -1049,22 +1091,22 @@ SRSASN_CODE redirected_carrier_info_r15_ies_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
- case types::eutra_r15:
+ case types::eutra:
HANDLE_CODE(pack_integer(bref, c.get<uint32_t>(), (uint32_t)0u, (uint32_t)262143u));
break;
- case types::geran_r15:
+ case types::geran:
HANDLE_CODE(c.get<carrier_freqs_geran_s>().pack(bref));
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));
break;
- case types::cdma2000_hrpd_r15:
+ case types::cdma2000_hrpd:
HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().pack(bref));
break;
- case types::cdma2000_minus1x_rtt_r15:
+ case types::cdma2000_minus1x_rtt:
HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().pack(bref));
break;
- case types::utra_tdd_r15:
+ case types::utra_tdd:
HANDLE_CODE(
pack_dyn_seq_of(bref, c.get<carrier_freq_list_utra_tdd_r10_l>(), 1, 6, integer_packer<uint16_t>(0, 16383)));
break;
@@ -1080,22 +1122,22 @@ SRSASN_CODE redirected_carrier_info_r15_ies_c::unpack(cbit_ref& bref)
e.unpack(bref);
set(e);
switch (type_) {
- case types::eutra_r15:
+ case types::eutra:
HANDLE_CODE(unpack_integer(c.get<uint32_t>(), bref, (uint32_t)0u, (uint32_t)262143u));
break;
- case types::geran_r15:
+ case types::geran:
HANDLE_CODE(c.get<carrier_freqs_geran_s>().unpack(bref));
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));
break;
- case types::cdma2000_hrpd_r15:
+ case types::cdma2000_hrpd:
HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().unpack(bref));
break;
- case types::cdma2000_minus1x_rtt_r15:
+ case types::cdma2000_minus1x_rtt:
HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().unpack(bref));
break;
- case types::utra_tdd_r15:
+ case types::utra_tdd:
HANDLE_CODE(
unpack_dyn_seq_of(c.get<carrier_freq_list_utra_tdd_r10_l>(), bref, 1, 6, integer_packer<uint16_t>(0, 16383)));
break;
diff --git a/lib/src/asn1/rrc/dl_dcch_msg.cc b/lib/src/asn1/rrc/dl_dcch_msg.cc
index 3c512982c..243d15147 100644
--- a/lib/src/asn1/rrc/dl_dcch_msg.cc
+++ b/lib/src/asn1/rrc/dl_dcch_msg.cc
@@ -20,6 +20,88 @@ using namespace asn1::rrc;
* Struct Methods
******************************************************************************/
+// CondReconfigurationAddMod-r16 ::= SEQUENCE
+SRSASN_CODE cond_recfg_add_mod_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(trigger_condition_r16_present, 1));
+ HANDLE_CODE(bref.pack(cond_recfg_to_apply_r16_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, cond_recfg_id_r16, (uint8_t)1u, (uint8_t)8u));
+ if (trigger_condition_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, trigger_condition_r16, 1, 2, integer_packer<uint8_t>(1, 32)));
+ }
+ if (cond_recfg_to_apply_r16_present) {
+ HANDLE_CODE(cond_recfg_to_apply_r16.pack(bref));
+ }
+
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= trigger_condition_sn_r17_present;
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(trigger_condition_sn_r17_present, 1));
+ if (trigger_condition_sn_r17_present) {
+ HANDLE_CODE(trigger_condition_sn_r17.pack(bref));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cond_recfg_add_mod_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(trigger_condition_r16_present, 1));
+ HANDLE_CODE(bref.unpack(cond_recfg_to_apply_r16_present, 1));
+
+ HANDLE_CODE(unpack_integer(cond_recfg_id_r16, bref, (uint8_t)1u, (uint8_t)8u));
+ if (trigger_condition_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(trigger_condition_r16, bref, 1, 2, integer_packer<uint8_t>(1, 32)));
+ }
+ if (cond_recfg_to_apply_r16_present) {
+ HANDLE_CODE(cond_recfg_to_apply_r16.unpack(bref));
+ }
+
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(trigger_condition_sn_r17_present, 1));
+ if (trigger_condition_sn_r17_present) {
+ HANDLE_CODE(trigger_condition_sn_r17.unpack(bref));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+void cond_recfg_add_mod_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("condReconfigurationId-r16", cond_recfg_id_r16);
+ if (trigger_condition_r16_present) {
+ j.start_array("triggerCondition-r16");
+ for (const auto& e1 : trigger_condition_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ if (cond_recfg_to_apply_r16_present) {
+ j.write_str("condReconfigurationToApply-r16", cond_recfg_to_apply_r16.to_string());
+ }
+ if (ext) {
+ if (trigger_condition_sn_r17_present) {
+ j.write_str("triggerConditionSN-r17", trigger_condition_sn_r17.to_string());
+ }
+ }
+ j.end_obj();
+}
+
// SCellConfigCommon-r15 ::= SEQUENCE
SRSASN_CODE scell_cfg_common_r15_s::pack(bit_ref& bref) const
{
@@ -140,6 +222,143 @@ void sl_tf_idx_pair_r12b_s::to_json(json_writer& j) const
j.end_obj();
}
+// SubframeAssignment-r15 ::= ENUMERATED
+const char* sf_assign_r15_opts::to_string() const
+{
+ static const char* options[] = {"sa0", "sa1", "sa2", "sa3", "sa4", "sa5", "sa6"};
+ return convert_enum_idx(options, 7, value, "sf_assign_r15_e");
+}
+uint8_t sf_assign_r15_opts::to_number() const
+{
+ static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6};
+ return map_enum_number(options, 7, value, "sf_assign_r15_e");
+}
+
+// ConditionalReconfiguration-r16 ::= SEQUENCE
+SRSASN_CODE conditional_recfg_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(cond_recfg_to_add_mod_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(cond_recfg_to_rem_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(attempt_cond_reconf_r16_present, 1));
+
+ if (cond_recfg_to_add_mod_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, cond_recfg_to_add_mod_list_r16, 1, 8));
+ }
+ if (cond_recfg_to_rem_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, cond_recfg_to_rem_list_r16, 1, 8, integer_packer<uint8_t>(1, 8)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE conditional_recfg_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(cond_recfg_to_add_mod_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(cond_recfg_to_rem_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(attempt_cond_reconf_r16_present, 1));
+
+ if (cond_recfg_to_add_mod_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(cond_recfg_to_add_mod_list_r16, bref, 1, 8));
+ }
+ if (cond_recfg_to_rem_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(cond_recfg_to_rem_list_r16, bref, 1, 8, integer_packer<uint8_t>(1, 8)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void conditional_recfg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (cond_recfg_to_add_mod_list_r16_present) {
+ j.start_array("condReconfigurationToAddModList-r16");
+ for (const auto& e1 : cond_recfg_to_add_mod_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (cond_recfg_to_rem_list_r16_present) {
+ j.start_array("condReconfigurationToRemoveList-r16");
+ for (const auto& e1 : cond_recfg_to_rem_list_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ if (attempt_cond_reconf_r16_present) {
+ j.write_str("attemptCondReconf-r16", "true");
+ }
+ j.end_obj();
+}
+
+// RRCConnectionReconfiguration-v1700-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_recfg_v1700_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(sib_type31_ded_r17_present, 1));
+ HANDLE_CODE(bref.pack(scg_state_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (sib_type31_ded_r17_present) {
+ HANDLE_CODE(sib_type31_ded_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_recfg_v1700_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(sib_type31_ded_r17_present, 1));
+ HANDLE_CODE(bref.unpack(scg_state_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (sib_type31_ded_r17_present) {
+ HANDLE_CODE(sib_type31_ded_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_recfg_v1700_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (sib_type31_ded_r17_present) {
+ j.write_str("systemInformationBlockType31Dedicated-r17", sib_type31_ded_r17.to_string());
+ }
+ if (scg_state_r17_present) {
+ j.write_str("scg-State-r17", "deactivated");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// RSRP-ChangeThresh-r16 ::= ENUMERATED
+const char* rsrp_change_thresh_r16_opts::to_string() const
+{
+ static const char* options[] = {"dB4",
+ "dB6",
+ "dB8",
+ "dB10",
+ "dB14",
+ "dB18",
+ "dB22",
+ "dB26",
+ "dB30",
+ "dB34",
+ "spare6",
+ "spare5",
+ "spare4",
+ "spare3",
+ "spare2",
+ "spare1"};
+ return convert_enum_idx(options, 16, value, "rsrp_change_thresh_r16_e");
+}
+uint8_t rsrp_change_thresh_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {4, 6, 8, 10, 14, 18, 22, 26, 30, 34};
+ return map_enum_number(options, 10, value, "rsrp_change_thresh_r16_e");
+}
+
// SCellGroupToAddMod-r15 ::= SEQUENCE
SRSASN_CODE scell_group_to_add_mod_r15_s::pack(bit_ref& bref) const
{
@@ -241,6 +460,73 @@ uint8_t sl_hop_cfg_disc_r12_s::c_r12_opts::to_number() const
return map_enum_number(options, 2, value, "sl_hop_cfg_disc_r12_s::c_r12_e_");
}
+// TDM-PatternConfig-r15 ::= CHOICE
+void tdm_pattern_cfg_r15_c::set(types::options e)
+{
+ type_ = e;
+}
+void tdm_pattern_cfg_r15_c::set_release()
+{
+ set(types::release);
+}
+tdm_pattern_cfg_r15_c::setup_s_& tdm_pattern_cfg_r15_c::set_setup()
+{
+ set(types::setup);
+ return c;
+}
+void tdm_pattern_cfg_r15_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ j.write_fieldname("setup");
+ j.start_obj();
+ j.write_str("subframeAssignment-r15", c.sf_assign_r15.to_string());
+ j.write_int("harq-Offset-r15", c.harq_offset_r15);
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "tdm_pattern_cfg_r15_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE tdm_pattern_cfg_r15_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ HANDLE_CODE(c.sf_assign_r15.pack(bref));
+ HANDLE_CODE(pack_integer(bref, c.harq_offset_r15, (uint8_t)0u, (uint8_t)9u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "tdm_pattern_cfg_r15_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE tdm_pattern_cfg_r15_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ HANDLE_CODE(c.sf_assign_r15.unpack(bref));
+ HANDLE_CODE(unpack_integer(c.harq_offset_r15, bref, (uint8_t)0u, (uint8_t)9u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "tdm_pattern_cfg_r15_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
// IKE-Identity-r13 ::= SEQUENCE
SRSASN_CODE ike_id_r13_s::pack(bit_ref& bref) const
{
@@ -389,6 +675,528 @@ SRSASN_CODE ip_address_r13_c::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// PUR-MPDCCH-Config-r16 ::= SEQUENCE
+SRSASN_CODE pur_mpdcch_cfg_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(mpdcch_freq_hop_r16, 1));
+ HANDLE_CODE(pack_integer(bref, mpdcch_nb_r16, (uint8_t)1u, (uint8_t)16u));
+ HANDLE_CODE(mpdcch_prb_pairs_cfg_r16.num_prb_pairs_r16.pack(bref));
+ HANDLE_CODE(mpdcch_prb_pairs_cfg_r16.res_block_assign_r16.pack(bref));
+ HANDLE_CODE(mpdcch_num_repeat_r16.pack(bref));
+ HANDLE_CODE(mpdcch_start_sf_uess_r16.pack(bref));
+ HANDLE_CODE(mpdcch_offset_pur_ss_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_mpdcch_cfg_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(mpdcch_freq_hop_r16, 1));
+ HANDLE_CODE(unpack_integer(mpdcch_nb_r16, bref, (uint8_t)1u, (uint8_t)16u));
+ HANDLE_CODE(mpdcch_prb_pairs_cfg_r16.num_prb_pairs_r16.unpack(bref));
+ HANDLE_CODE(mpdcch_prb_pairs_cfg_r16.res_block_assign_r16.unpack(bref));
+ HANDLE_CODE(mpdcch_num_repeat_r16.unpack(bref));
+ HANDLE_CODE(mpdcch_start_sf_uess_r16.unpack(bref));
+ HANDLE_CODE(mpdcch_offset_pur_ss_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void pur_mpdcch_cfg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_bool("mpdcch-FreqHopping-r16", mpdcch_freq_hop_r16);
+ j.write_int("mpdcch-Narrowband-r16", mpdcch_nb_r16);
+ j.write_fieldname("mpdcch-PRB-PairsConfig-r16");
+ j.start_obj();
+ j.write_str("numberPRB-Pairs-r16", mpdcch_prb_pairs_cfg_r16.num_prb_pairs_r16.to_string());
+ j.write_str("resourceBlockAssignment-r16", mpdcch_prb_pairs_cfg_r16.res_block_assign_r16.to_string());
+ j.end_obj();
+ j.write_str("mpdcch-NumRepetition-r16", mpdcch_num_repeat_r16.to_string());
+ j.write_fieldname("mpdcch-StartSF-UESS-r16");
+ mpdcch_start_sf_uess_r16.to_json(j);
+ j.write_str("mpdcch-Offset-PUR-SS-r16", mpdcch_offset_pur_ss_r16.to_string());
+ j.end_obj();
+}
+
+const char* pur_mpdcch_cfg_r16_s::mpdcch_prb_pairs_cfg_r16_s_::num_prb_pairs_r16_opts::to_string() const
+{
+ static const char* options[] = {"n2", "n4", "n6", "spare1"};
+ return convert_enum_idx(options, 4, value, "pur_mpdcch_cfg_r16_s::mpdcch_prb_pairs_cfg_r16_s_::num_prb_pairs_r16_e_");
+}
+uint8_t pur_mpdcch_cfg_r16_s::mpdcch_prb_pairs_cfg_r16_s_::num_prb_pairs_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {2, 4, 6};
+ return map_enum_number(options, 3, value, "pur_mpdcch_cfg_r16_s::mpdcch_prb_pairs_cfg_r16_s_::num_prb_pairs_r16_e_");
+}
+
+const char* pur_mpdcch_cfg_r16_s::mpdcch_num_repeat_r16_opts::to_string() const
+{
+ static const char* options[] = {"r1", "r2", "r4", "r8", "r16", "r32", "r64", "r128", "r256"};
+ return convert_enum_idx(options, 9, value, "pur_mpdcch_cfg_r16_s::mpdcch_num_repeat_r16_e_");
+}
+uint16_t pur_mpdcch_cfg_r16_s::mpdcch_num_repeat_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256};
+ return map_enum_number(options, 9, value, "pur_mpdcch_cfg_r16_s::mpdcch_num_repeat_r16_e_");
+}
+
+void pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::destroy_() {}
+void pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+}
+pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::mpdcch_start_sf_uess_r16_c_(
+ const pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::fdd:
+ c.init(other.c.get<fdd_e_>());
+ break;
+ case types::tdd:
+ c.init(other.c.get<tdd_e_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_");
+ }
+}
+pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_& pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::operator=(
+ const pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::fdd:
+ c.set(other.c.get<fdd_e_>());
+ break;
+ case types::tdd:
+ c.set(other.c.get<tdd_e_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_");
+ }
+
+ return *this;
+}
+pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::fdd_e_& pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::set_fdd()
+{
+ set(types::fdd);
+ return c.get<fdd_e_>();
+}
+pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::tdd_e_& pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::set_tdd()
+{
+ set(types::tdd);
+ return c.get<tdd_e_>();
+}
+void pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::fdd:
+ j.write_str("fdd", c.get<fdd_e_>().to_string());
+ break;
+ case types::tdd:
+ j.write_str("tdd", c.get<tdd_e_>().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::fdd:
+ HANDLE_CODE(c.get<fdd_e_>().pack(bref));
+ break;
+ case types::tdd:
+ HANDLE_CODE(c.get<tdd_e_>().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::fdd:
+ HANDLE_CODE(c.get<fdd_e_>().unpack(bref));
+ break;
+ case types::tdd:
+ HANDLE_CODE(c.get<tdd_e_>().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::fdd_opts::to_string() const
+{
+ static const char* options[] = {"v1", "v1dot5", "v2", "v2dot5", "v4", "v5", "v8", "v10"};
+ return convert_enum_idx(options, 8, value, "pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::fdd_e_");
+}
+float pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::fdd_opts::to_number() const
+{
+ static const float options[] = {1.0, 1.5, 2.0, 2.5, 4.0, 5.0, 8.0, 10.0};
+ return map_enum_number(options, 8, value, "pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::fdd_e_");
+}
+const char* pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::fdd_opts::to_number_string() const
+{
+ static const char* options[] = {"1", "1.5", "2", "2.5", "4", "5", "8", "10"};
+ return convert_enum_idx(options, 8, value, "pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::fdd_e_");
+}
+
+const char* pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::tdd_opts::to_string() const
+{
+ static const char* options[] = {"v1", "v2", "v4", "v5", "v8", "v10", "v20", "spare1"};
+ return convert_enum_idx(options, 8, value, "pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::tdd_e_");
+}
+uint8_t pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::tdd_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 5, 8, 10, 20};
+ return map_enum_number(options, 7, value, "pur_mpdcch_cfg_r16_s::mpdcch_start_sf_uess_r16_c_::tdd_e_");
+}
+
+const char* pur_mpdcch_cfg_r16_s::mpdcch_offset_pur_ss_r16_opts::to_string() const
+{
+ static const char* options[] = {
+ "zero", "oneEighth", "oneQuarter", "threeEighth", "oneHalf", "fiveEighth", "threeQuarter", "sevenEighth"};
+ return convert_enum_idx(options, 8, value, "pur_mpdcch_cfg_r16_s::mpdcch_offset_pur_ss_r16_e_");
+}
+float pur_mpdcch_cfg_r16_s::mpdcch_offset_pur_ss_r16_opts::to_number() const
+{
+ static const float options[] = {0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875};
+ return map_enum_number(options, 8, value, "pur_mpdcch_cfg_r16_s::mpdcch_offset_pur_ss_r16_e_");
+}
+const char* pur_mpdcch_cfg_r16_s::mpdcch_offset_pur_ss_r16_opts::to_number_string() const
+{
+ static const char* options[] = {"0", "1/8", "1/4", "3/8", "1/2", "5/8", "3/4", "7/8"};
+ return convert_enum_idx(options, 8, value, "pur_mpdcch_cfg_r16_s::mpdcch_offset_pur_ss_r16_e_");
+}
+
+// PUR-PUCCH-Config-r16 ::= SEQUENCE
+SRSASN_CODE pur_pucch_cfg_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(n1_pucch_an_r16_present, 1));
+ HANDLE_CODE(bref.pack(pucch_num_repeat_ce_format1_r16_present, 1));
+
+ if (n1_pucch_an_r16_present) {
+ HANDLE_CODE(pack_integer(bref, n1_pucch_an_r16, (uint16_t)0u, (uint16_t)2047u));
+ }
+ if (pucch_num_repeat_ce_format1_r16_present) {
+ HANDLE_CODE(pucch_num_repeat_ce_format1_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_pucch_cfg_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(n1_pucch_an_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pucch_num_repeat_ce_format1_r16_present, 1));
+
+ if (n1_pucch_an_r16_present) {
+ HANDLE_CODE(unpack_integer(n1_pucch_an_r16, bref, (uint16_t)0u, (uint16_t)2047u));
+ }
+ if (pucch_num_repeat_ce_format1_r16_present) {
+ HANDLE_CODE(pucch_num_repeat_ce_format1_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void pur_pucch_cfg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (n1_pucch_an_r16_present) {
+ j.write_int("n1PUCCH-AN-r16", n1_pucch_an_r16);
+ }
+ if (pucch_num_repeat_ce_format1_r16_present) {
+ j.write_str("pucch-NumRepetitionCE-Format1-r16", pucch_num_repeat_ce_format1_r16.to_string());
+ }
+ j.end_obj();
+}
+
+const char* pur_pucch_cfg_r16_s::pucch_num_repeat_ce_format1_r16_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n4", "n8"};
+ return convert_enum_idx(options, 4, value, "pur_pucch_cfg_r16_s::pucch_num_repeat_ce_format1_r16_e_");
+}
+uint8_t pur_pucch_cfg_r16_s::pucch_num_repeat_ce_format1_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 8};
+ return map_enum_number(options, 4, value, "pur_pucch_cfg_r16_s::pucch_num_repeat_ce_format1_r16_e_");
+}
+
+// PUR-PUSCH-Config-r16 ::= SEQUENCE
+SRSASN_CODE pur_pusch_cfg_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pur_grant_info_r16_present, 1));
+ HANDLE_CODE(bref.pack(location_ce_mode_b_r16_present, 1));
+
+ if (pur_grant_info_r16_present) {
+ HANDLE_CODE(pur_grant_info_r16.pack(bref));
+ }
+ HANDLE_CODE(bref.pack(pur_pusch_freq_hop_r16, 1));
+ HANDLE_CODE(pack_integer(bref, p0_ue_pusch_r16, (int8_t)-8, (int8_t)7));
+ HANDLE_CODE(alpha_r16.pack(bref));
+ HANDLE_CODE(pusch_cyclic_shift_r16.pack(bref));
+ HANDLE_CODE(bref.pack(pusch_nb_max_tbs_r16, 1));
+ if (location_ce_mode_b_r16_present) {
+ HANDLE_CODE(pack_integer(bref, location_ce_mode_b_r16, (uint8_t)0u, (uint8_t)5u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_pusch_cfg_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pur_grant_info_r16_present, 1));
+ HANDLE_CODE(bref.unpack(location_ce_mode_b_r16_present, 1));
+
+ if (pur_grant_info_r16_present) {
+ HANDLE_CODE(pur_grant_info_r16.unpack(bref));
+ }
+ HANDLE_CODE(bref.unpack(pur_pusch_freq_hop_r16, 1));
+ HANDLE_CODE(unpack_integer(p0_ue_pusch_r16, bref, (int8_t)-8, (int8_t)7));
+ HANDLE_CODE(alpha_r16.unpack(bref));
+ HANDLE_CODE(pusch_cyclic_shift_r16.unpack(bref));
+ HANDLE_CODE(bref.unpack(pusch_nb_max_tbs_r16, 1));
+ if (location_ce_mode_b_r16_present) {
+ HANDLE_CODE(unpack_integer(location_ce_mode_b_r16, bref, (uint8_t)0u, (uint8_t)5u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void pur_pusch_cfg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pur_grant_info_r16_present) {
+ j.write_fieldname("pur-GrantInfo-r16");
+ pur_grant_info_r16.to_json(j);
+ }
+ j.write_bool("pur-PUSCH-FreqHopping-r16", pur_pusch_freq_hop_r16);
+ j.write_int("p0-UE-PUSCH-r16", p0_ue_pusch_r16);
+ j.write_str("alpha-r16", alpha_r16.to_string());
+ j.write_str("pusch-CyclicShift-r16", pusch_cyclic_shift_r16.to_string());
+ j.write_bool("pusch-NB-MaxTBS-r16", pusch_nb_max_tbs_r16);
+ if (location_ce_mode_b_r16_present) {
+ j.write_int("locationCE-ModeB-r16", location_ce_mode_b_r16);
+ }
+ j.end_obj();
+}
+
+void pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::ce_mode_a:
+ c.destroy<ce_mode_a_s_>();
+ break;
+ case types::ce_mode_b:
+ c.destroy<ce_mode_b_s_>();
+ break;
+ default:
+ break;
+ }
+}
+void pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::ce_mode_a:
+ c.init<ce_mode_a_s_>();
+ break;
+ case types::ce_mode_b:
+ c.init<ce_mode_b_s_>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_pusch_cfg_r16_s::pur_grant_info_r16_c_");
+ }
+}
+pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::pur_grant_info_r16_c_(
+ const pur_pusch_cfg_r16_s::pur_grant_info_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::ce_mode_a:
+ c.init(other.c.get<ce_mode_a_s_>());
+ break;
+ case types::ce_mode_b:
+ c.init(other.c.get<ce_mode_b_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_pusch_cfg_r16_s::pur_grant_info_r16_c_");
+ }
+}
+pur_pusch_cfg_r16_s::pur_grant_info_r16_c_&
+pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::operator=(const pur_pusch_cfg_r16_s::pur_grant_info_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::ce_mode_a:
+ c.set(other.c.get<ce_mode_a_s_>());
+ break;
+ case types::ce_mode_b:
+ c.set(other.c.get<ce_mode_b_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_pusch_cfg_r16_s::pur_grant_info_r16_c_");
+ }
+
+ return *this;
+}
+pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::ce_mode_a_s_& pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::set_ce_mode_a()
+{
+ set(types::ce_mode_a);
+ return c.get<ce_mode_a_s_>();
+}
+pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::ce_mode_b_s_& pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::set_ce_mode_b()
+{
+ set(types::ce_mode_b);
+ return c.get<ce_mode_b_s_>();
+}
+void pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::ce_mode_a:
+ j.write_fieldname("ce-ModeA");
+ j.start_obj();
+ j.write_str("numRUs-r16", c.get<ce_mode_a_s_>().num_rus_r16.to_string());
+ j.write_str("prb-AllocationInfo-r16", c.get<ce_mode_a_s_>().prb_alloc_info_r16.to_string());
+ j.write_str("mcs-r16", c.get<ce_mode_a_s_>().mcs_r16.to_string());
+ j.write_str("numRepetitions-r16", c.get<ce_mode_a_s_>().num_repeats_r16.to_string());
+ j.end_obj();
+ break;
+ case types::ce_mode_b:
+ j.write_fieldname("ce-ModeB");
+ j.start_obj();
+ j.write_bool("subPRB-Allocation-r16", c.get<ce_mode_b_s_>().sub_prb_alloc_r16);
+ j.write_bool("numRUs-r16", c.get<ce_mode_b_s_>().num_rus_r16);
+ j.write_str("prb-AllocationInfo-r16", c.get<ce_mode_b_s_>().prb_alloc_info_r16.to_string());
+ j.write_str("mcs-r16", c.get<ce_mode_b_s_>().mcs_r16.to_string());
+ j.write_str("numRepetitions-r16", c.get<ce_mode_b_s_>().num_repeats_r16.to_string());
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_pusch_cfg_r16_s::pur_grant_info_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::ce_mode_a:
+ HANDLE_CODE(c.get<ce_mode_a_s_>().num_rus_r16.pack(bref));
+ HANDLE_CODE(c.get<ce_mode_a_s_>().prb_alloc_info_r16.pack(bref));
+ HANDLE_CODE(c.get<ce_mode_a_s_>().mcs_r16.pack(bref));
+ HANDLE_CODE(c.get<ce_mode_a_s_>().num_repeats_r16.pack(bref));
+ break;
+ case types::ce_mode_b:
+ HANDLE_CODE(bref.pack(c.get<ce_mode_b_s_>().sub_prb_alloc_r16, 1));
+ HANDLE_CODE(bref.pack(c.get<ce_mode_b_s_>().num_rus_r16, 1));
+ HANDLE_CODE(c.get<ce_mode_b_s_>().prb_alloc_info_r16.pack(bref));
+ HANDLE_CODE(c.get<ce_mode_b_s_>().mcs_r16.pack(bref));
+ HANDLE_CODE(c.get<ce_mode_b_s_>().num_repeats_r16.pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_pusch_cfg_r16_s::pur_grant_info_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_pusch_cfg_r16_s::pur_grant_info_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::ce_mode_a:
+ HANDLE_CODE(c.get<ce_mode_a_s_>().num_rus_r16.unpack(bref));
+ HANDLE_CODE(c.get<ce_mode_a_s_>().prb_alloc_info_r16.unpack(bref));
+ HANDLE_CODE(c.get<ce_mode_a_s_>().mcs_r16.unpack(bref));
+ HANDLE_CODE(c.get<ce_mode_a_s_>().num_repeats_r16.unpack(bref));
+ break;
+ case types::ce_mode_b:
+ HANDLE_CODE(bref.unpack(c.get<ce_mode_b_s_>().sub_prb_alloc_r16, 1));
+ HANDLE_CODE(bref.unpack(c.get<ce_mode_b_s_>().num_rus_r16, 1));
+ HANDLE_CODE(c.get<ce_mode_b_s_>().prb_alloc_info_r16.unpack(bref));
+ HANDLE_CODE(c.get<ce_mode_b_s_>().mcs_r16.unpack(bref));
+ HANDLE_CODE(c.get<ce_mode_b_s_>().num_repeats_r16.unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_pusch_cfg_r16_s::pur_grant_info_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* pur_pusch_cfg_r16_s::pusch_cyclic_shift_r16_opts::to_string() const
+{
+ static const char* options[] = {"n0", "n6"};
+ return convert_enum_idx(options, 2, value, "pur_pusch_cfg_r16_s::pusch_cyclic_shift_r16_e_");
+}
+uint8_t pur_pusch_cfg_r16_s::pusch_cyclic_shift_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {0, 6};
+ return map_enum_number(options, 2, value, "pur_pusch_cfg_r16_s::pusch_cyclic_shift_r16_e_");
+}
+
+// PUR-RSRP-ChangeThreshold-r16 ::= SEQUENCE
+SRSASN_CODE pur_rsrp_change_thres_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(decrease_thresh_r16_present, 1));
+
+ HANDLE_CODE(increase_thresh_r16.pack(bref));
+ if (decrease_thresh_r16_present) {
+ HANDLE_CODE(decrease_thresh_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_rsrp_change_thres_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(decrease_thresh_r16_present, 1));
+
+ HANDLE_CODE(increase_thresh_r16.unpack(bref));
+ if (decrease_thresh_r16_present) {
+ HANDLE_CODE(decrease_thresh_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void pur_rsrp_change_thres_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("increaseThresh-r16", increase_thresh_r16.to_string());
+ if (decrease_thresh_r16_present) {
+ j.write_str("decreaseThresh-r16", decrease_thresh_r16.to_string());
+ }
+ j.end_obj();
+}
+
// PhysicalConfigDedicated-v1370 ::= SEQUENCE
SRSASN_CODE phys_cfg_ded_v1370_s::pack(bit_ref& bref) const
{
@@ -457,6 +1265,88 @@ void ran_area_cfg_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// RRCConnectionReconfiguration-v1610-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_recfg_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(conditional_recfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(daps_source_release_r16_present, 1));
+ HANDLE_CODE(bref.pack(tdm_pattern_cfg2_r16_present, 1));
+ HANDLE_CODE(bref.pack(sl_cfg_ded_for_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(sl_ssb_prio_eutra_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (conditional_recfg_r16_present) {
+ HANDLE_CODE(conditional_recfg_r16.pack(bref));
+ }
+ if (tdm_pattern_cfg2_r16_present) {
+ HANDLE_CODE(tdm_pattern_cfg2_r16.pack(bref));
+ }
+ if (sl_cfg_ded_for_nr_r16_present) {
+ HANDLE_CODE(sl_cfg_ded_for_nr_r16.pack(bref));
+ }
+ if (sl_ssb_prio_eutra_r16_present) {
+ HANDLE_CODE(pack_integer(bref, sl_ssb_prio_eutra_r16, (uint8_t)1u, (uint8_t)8u));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_recfg_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(conditional_recfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(daps_source_release_r16_present, 1));
+ HANDLE_CODE(bref.unpack(tdm_pattern_cfg2_r16_present, 1));
+ HANDLE_CODE(bref.unpack(sl_cfg_ded_for_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(sl_ssb_prio_eutra_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (conditional_recfg_r16_present) {
+ HANDLE_CODE(conditional_recfg_r16.unpack(bref));
+ }
+ if (tdm_pattern_cfg2_r16_present) {
+ HANDLE_CODE(tdm_pattern_cfg2_r16.unpack(bref));
+ }
+ if (sl_cfg_ded_for_nr_r16_present) {
+ HANDLE_CODE(sl_cfg_ded_for_nr_r16.unpack(bref));
+ }
+ if (sl_ssb_prio_eutra_r16_present) {
+ HANDLE_CODE(unpack_integer(sl_ssb_prio_eutra_r16, bref, (uint8_t)1u, (uint8_t)8u));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_recfg_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (conditional_recfg_r16_present) {
+ j.write_fieldname("conditionalReconfiguration-r16");
+ conditional_recfg_r16.to_json(j);
+ }
+ if (daps_source_release_r16_present) {
+ j.write_str("daps-SourceRelease-r16", "true");
+ }
+ if (tdm_pattern_cfg2_r16_present) {
+ j.write_fieldname("tdm-PatternConfig2-r16");
+ tdm_pattern_cfg2_r16.to_json(j);
+ }
+ if (sl_cfg_ded_for_nr_r16_present) {
+ j.write_str("sl-ConfigDedicatedForNR-r16", sl_cfg_ded_for_nr_r16.to_string());
+ }
+ if (sl_ssb_prio_eutra_r16_present) {
+ j.write_int("sl-SSB-PriorityEUTRA-r16", sl_ssb_prio_eutra_r16);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// RadioResourceConfigCommonSCell-v1440 ::= SEQUENCE
SRSASN_CODE rr_cfg_common_scell_v1440_s::pack(bit_ref& bref) const
{
@@ -618,18 +1508,6 @@ void sl_tx_pool_to_add_mod_r14_s::to_json(json_writer& j) const
j.end_obj();
}
-// SubframeAssignment-r15 ::= ENUMERATED
-const char* sf_assign_r15_opts::to_string() const
-{
- static const char* options[] = {"sa0", "sa1", "sa2", "sa3", "sa4", "sa5", "sa6"};
- return convert_enum_idx(options, 7, value, "sf_assign_r15_e");
-}
-uint8_t sf_assign_r15_opts::to_number() const
-{
- static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6};
- return map_enum_number(options, 7, value, "sf_assign_r15_e");
-}
-
// UplinkPowerControlCommonPSCell-r12 ::= SEQUENCE
SRSASN_CODE ul_pwr_ctrl_common_ps_cell_r12_s::pack(bit_ref& bref) const
{
@@ -833,6 +1711,256 @@ void plmn_ran_area_cfg_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// PUR-Config-r16 ::= SEQUENCE
+SRSASN_CODE pur_cfg_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(pur_cfg_id_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_implicit_release_after_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_start_time_params_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_rnti_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_time_align_timer_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_rsrp_change_thres_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_resp_win_timer_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_mpdcch_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_pucch_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_pusch_cfg_r16_present, 1));
+
+ if (pur_cfg_id_r16_present) {
+ HANDLE_CODE(pur_cfg_id_r16.pack(bref));
+ }
+ if (pur_implicit_release_after_r16_present) {
+ HANDLE_CODE(pur_implicit_release_after_r16.pack(bref));
+ }
+ if (pur_start_time_params_r16_present) {
+ HANDLE_CODE(pur_start_time_params_r16.periodicity_and_offset_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, pur_start_time_params_r16.start_sfn_r16, (uint16_t)0u, (uint16_t)1023u));
+ HANDLE_CODE(pack_integer(bref, pur_start_time_params_r16.start_sub_frame_r16, (uint8_t)0u, (uint8_t)9u));
+ HANDLE_CODE(pur_start_time_params_r16.hsfn_lsb_info_r16.pack(bref));
+ }
+ HANDLE_CODE(pur_num_occasions_r16.pack(bref));
+ if (pur_rnti_r16_present) {
+ HANDLE_CODE(pur_rnti_r16.pack(bref));
+ }
+ if (pur_time_align_timer_r16_present) {
+ HANDLE_CODE(pack_integer(bref, pur_time_align_timer_r16, (uint8_t)1u, (uint8_t)8u));
+ }
+ if (pur_rsrp_change_thres_r16_present) {
+ HANDLE_CODE(pur_rsrp_change_thres_r16.pack(bref));
+ }
+ if (pur_resp_win_timer_r16_present) {
+ HANDLE_CODE(pur_resp_win_timer_r16.pack(bref));
+ }
+ if (pur_mpdcch_cfg_r16_present) {
+ HANDLE_CODE(pur_mpdcch_cfg_r16.pack(bref));
+ }
+ HANDLE_CODE(bref.pack(pur_pdsch_freq_hop_r16, 1));
+ if (pur_pucch_cfg_r16_present) {
+ HANDLE_CODE(pur_pucch_cfg_r16.pack(bref));
+ }
+ if (pur_pusch_cfg_r16_present) {
+ HANDLE_CODE(pur_pusch_cfg_r16.pack(bref));
+ }
+
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= pur_pdsch_max_tbs_r17_present;
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(pur_pdsch_max_tbs_r17_present, 1));
+ if (pur_pdsch_max_tbs_r17_present) {
+ HANDLE_CODE(bref.pack(pur_pdsch_max_tbs_r17, 1));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(pur_cfg_id_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_implicit_release_after_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_start_time_params_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_rnti_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_time_align_timer_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_rsrp_change_thres_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_resp_win_timer_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_mpdcch_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_pucch_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_pusch_cfg_r16_present, 1));
+
+ if (pur_cfg_id_r16_present) {
+ HANDLE_CODE(pur_cfg_id_r16.unpack(bref));
+ }
+ if (pur_implicit_release_after_r16_present) {
+ HANDLE_CODE(pur_implicit_release_after_r16.unpack(bref));
+ }
+ if (pur_start_time_params_r16_present) {
+ HANDLE_CODE(pur_start_time_params_r16.periodicity_and_offset_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(pur_start_time_params_r16.start_sfn_r16, bref, (uint16_t)0u, (uint16_t)1023u));
+ HANDLE_CODE(unpack_integer(pur_start_time_params_r16.start_sub_frame_r16, bref, (uint8_t)0u, (uint8_t)9u));
+ HANDLE_CODE(pur_start_time_params_r16.hsfn_lsb_info_r16.unpack(bref));
+ }
+ HANDLE_CODE(pur_num_occasions_r16.unpack(bref));
+ if (pur_rnti_r16_present) {
+ HANDLE_CODE(pur_rnti_r16.unpack(bref));
+ }
+ if (pur_time_align_timer_r16_present) {
+ HANDLE_CODE(unpack_integer(pur_time_align_timer_r16, bref, (uint8_t)1u, (uint8_t)8u));
+ }
+ if (pur_rsrp_change_thres_r16_present) {
+ HANDLE_CODE(pur_rsrp_change_thres_r16.unpack(bref));
+ }
+ if (pur_resp_win_timer_r16_present) {
+ HANDLE_CODE(pur_resp_win_timer_r16.unpack(bref));
+ }
+ if (pur_mpdcch_cfg_r16_present) {
+ HANDLE_CODE(pur_mpdcch_cfg_r16.unpack(bref));
+ }
+ HANDLE_CODE(bref.unpack(pur_pdsch_freq_hop_r16, 1));
+ if (pur_pucch_cfg_r16_present) {
+ HANDLE_CODE(pur_pucch_cfg_r16.unpack(bref));
+ }
+ if (pur_pusch_cfg_r16_present) {
+ HANDLE_CODE(pur_pusch_cfg_r16.unpack(bref));
+ }
+
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(pur_pdsch_max_tbs_r17_present, 1));
+ if (pur_pdsch_max_tbs_r17_present) {
+ HANDLE_CODE(bref.unpack(pur_pdsch_max_tbs_r17, 1));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+void pur_cfg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pur_cfg_id_r16_present) {
+ j.write_str("pur-ConfigID-r16", pur_cfg_id_r16.to_string());
+ }
+ if (pur_implicit_release_after_r16_present) {
+ j.write_str("pur-ImplicitReleaseAfter-r16", pur_implicit_release_after_r16.to_string());
+ }
+ if (pur_start_time_params_r16_present) {
+ j.write_fieldname("pur-StartTimeParameters-r16");
+ j.start_obj();
+ j.write_fieldname("periodicityAndOffset-r16");
+ pur_start_time_params_r16.periodicity_and_offset_r16.to_json(j);
+ j.write_int("startSFN-r16", pur_start_time_params_r16.start_sfn_r16);
+ j.write_int("startSubFrame-r16", pur_start_time_params_r16.start_sub_frame_r16);
+ j.write_str("hsfn-LSB-Info-r16", pur_start_time_params_r16.hsfn_lsb_info_r16.to_string());
+ j.end_obj();
+ }
+ j.write_str("pur-NumOccasions-r16", pur_num_occasions_r16.to_string());
+ if (pur_rnti_r16_present) {
+ j.write_str("pur-RNTI-r16", pur_rnti_r16.to_string());
+ }
+ if (pur_time_align_timer_r16_present) {
+ j.write_int("pur-TimeAlignmentTimer-r16", pur_time_align_timer_r16);
+ }
+ if (pur_rsrp_change_thres_r16_present) {
+ j.write_fieldname("pur-RSRP-ChangeThreshold-r16");
+ pur_rsrp_change_thres_r16.to_json(j);
+ }
+ if (pur_resp_win_timer_r16_present) {
+ j.write_str("pur-ResponseWindowTimer-r16", pur_resp_win_timer_r16.to_string());
+ }
+ if (pur_mpdcch_cfg_r16_present) {
+ j.write_fieldname("pur-MPDCCH-Config-r16");
+ pur_mpdcch_cfg_r16.to_json(j);
+ }
+ j.write_bool("pur-PDSCH-FreqHopping-r16", pur_pdsch_freq_hop_r16);
+ if (pur_pucch_cfg_r16_present) {
+ j.write_fieldname("pur-PUCCH-Config-r16");
+ pur_pucch_cfg_r16.to_json(j);
+ }
+ if (pur_pusch_cfg_r16_present) {
+ j.write_fieldname("pur-PUSCH-Config-r16");
+ pur_pusch_cfg_r16.to_json(j);
+ }
+ if (ext) {
+ if (pur_pdsch_max_tbs_r17_present) {
+ j.write_bool("pur-PDSCH-maxTBS-r17", pur_pdsch_max_tbs_r17);
+ }
+ }
+ j.end_obj();
+}
+
+const char* pur_cfg_r16_s::pur_implicit_release_after_r16_opts::to_string() const
+{
+ static const char* options[] = {"n2", "n4", "n8", "spare"};
+ return convert_enum_idx(options, 4, value, "pur_cfg_r16_s::pur_implicit_release_after_r16_e_");
+}
+uint8_t pur_cfg_r16_s::pur_implicit_release_after_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {2, 4, 8};
+ return map_enum_number(options, 3, value, "pur_cfg_r16_s::pur_implicit_release_after_r16_e_");
+}
+
+const char* pur_cfg_r16_s::pur_num_occasions_r16_opts::to_string() const
+{
+ static const char* options[] = {"one", "infinite"};
+ return convert_enum_idx(options, 2, value, "pur_cfg_r16_s::pur_num_occasions_r16_e_");
+}
+uint8_t pur_cfg_r16_s::pur_num_occasions_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1};
+ return map_enum_number(options, 1, value, "pur_cfg_r16_s::pur_num_occasions_r16_e_");
+}
+
+const char* pur_cfg_r16_s::pur_resp_win_timer_r16_opts::to_string() const
+{
+ static const char* options[] = {"sf240", "sf480", "sf960", "sf1920", "sf3840", "sf5760", "sf7680", "sf10240"};
+ return convert_enum_idx(options, 8, value, "pur_cfg_r16_s::pur_resp_win_timer_r16_e_");
+}
+uint16_t pur_cfg_r16_s::pur_resp_win_timer_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {240, 480, 960, 1920, 3840, 5760, 7680, 10240};
+ return map_enum_number(options, 8, value, "pur_cfg_r16_s::pur_resp_win_timer_r16_e_");
+}
+
+// RRC-InactiveConfig-v1610 ::= SEQUENCE
+SRSASN_CODE rrc_inactive_cfg_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(ran_paging_cycle_v1610.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_inactive_cfg_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(ran_paging_cycle_v1610.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void rrc_inactive_cfg_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("ran-PagingCycle-v1610", ran_paging_cycle_v1610.to_string());
+ j.end_obj();
+}
+
+const char* rrc_inactive_cfg_v1610_s::ran_paging_cycle_v1610_opts::to_string() const
+{
+ static const char* options[] = {"rf512", "rf1024"};
+ return convert_enum_idx(options, 2, value, "rrc_inactive_cfg_v1610_s::ran_paging_cycle_v1610_e_");
+}
+uint16_t rrc_inactive_cfg_v1610_s::ran_paging_cycle_v1610_opts::to_number() const
+{
+ static const uint16_t options[] = {512, 1024};
+ return map_enum_number(options, 2, value, "rrc_inactive_cfg_v1610_s::ran_paging_cycle_v1610_e_");
+}
+
// RRCConnectionReconfiguration-v1530-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_recfg_v1530_ies_s::pack(bit_ref& bref) const
{
@@ -862,6 +1990,9 @@ SRSASN_CODE rrc_conn_recfg_v1530_ies_s::pack(bit_ref& bref) const
if (smtc_r15_present) {
HANDLE_CODE(smtc_r15.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -893,6 +2024,9 @@ SRSASN_CODE rrc_conn_recfg_v1530_ies_s::unpack(cbit_ref& bref)
if (smtc_r15_present) {
HANDLE_CODE(smtc_r15.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -933,6 +2067,34 @@ void rrc_conn_recfg_v1530_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// RRCConnectionRelease-v1650-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_release_v1650_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(mps_prio_ind_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_release_v1650_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(mps_prio_ind_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_release_v1650_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (mps_prio_ind_r16_present) {
+ j.write_str("mpsPriorityIndication-r16", "true");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
@@ -1545,73 +2707,6 @@ SRSASN_CODE sl_disc_tx_res_r13_c::setup_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
-// TDM-PatternConfig-r15 ::= CHOICE
-void tdm_pattern_cfg_r15_c::set(types::options e)
-{
- type_ = e;
-}
-void tdm_pattern_cfg_r15_c::set_release()
-{
- set(types::release);
-}
-tdm_pattern_cfg_r15_c::setup_s_& tdm_pattern_cfg_r15_c::set_setup()
-{
- set(types::setup);
- return c;
-}
-void tdm_pattern_cfg_r15_c::to_json(json_writer& j) const
-{
- j.start_obj();
- switch (type_) {
- case types::release:
- break;
- case types::setup:
- j.write_fieldname("setup");
- j.start_obj();
- j.write_str("subframeAssignment-r15", c.sf_assign_r15.to_string());
- j.write_int("harq-Offset-r15", c.harq_offset_r15);
- j.end_obj();
- break;
- default:
- log_invalid_choice_id(type_, "tdm_pattern_cfg_r15_c");
- }
- j.end_obj();
-}
-SRSASN_CODE tdm_pattern_cfg_r15_c::pack(bit_ref& bref) const
-{
- type_.pack(bref);
- switch (type_) {
- case types::release:
- break;
- case types::setup:
- HANDLE_CODE(c.sf_assign_r15.pack(bref));
- HANDLE_CODE(pack_integer(bref, c.harq_offset_r15, (uint8_t)0u, (uint8_t)9u));
- break;
- default:
- log_invalid_choice_id(type_, "tdm_pattern_cfg_r15_c");
- return SRSASN_ERROR_ENCODE_FAIL;
- }
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE tdm_pattern_cfg_r15_c::unpack(cbit_ref& bref)
-{
- types e;
- e.unpack(bref);
- set(e);
- switch (type_) {
- case types::release:
- break;
- case types::setup:
- HANDLE_CODE(c.sf_assign_r15.unpack(bref));
- HANDLE_CODE(unpack_integer(c.harq_offset_r15, bref, (uint8_t)0u, (uint8_t)9u));
- break;
- default:
- log_invalid_choice_id(type_, "tdm_pattern_cfg_r15_c");
- return SRSASN_ERROR_DECODE_FAIL;
- }
- return SRSASN_SUCCESS;
-}
-
// TunnelConfigLWIP-r13 ::= SEQUENCE
SRSASN_CODE tunnel_cfg_lwip_r13_s::pack(bit_ref& bref) const
{
@@ -2475,6 +3570,115 @@ SRSASN_CODE rrc_conn_recfg_v1510_ies_s::nr_cfg_r15_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// RRCConnectionRelease-v1610-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_release_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(full_i_rnti_r16_present, 1));
+ HANDLE_CODE(bref.pack(short_i_rnti_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(rrc_inactive_cfg_v1610_present, 1));
+ HANDLE_CODE(bref.pack(release_idle_meas_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(alt_freq_priorities_r16_present, 1));
+ HANDLE_CODE(bref.pack(t323_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (full_i_rnti_r16_present) {
+ HANDLE_CODE(full_i_rnti_r16.pack(bref));
+ }
+ if (short_i_rnti_r16_present) {
+ HANDLE_CODE(short_i_rnti_r16.pack(bref));
+ }
+ if (pur_cfg_r16_present) {
+ HANDLE_CODE(pur_cfg_r16.pack(bref));
+ }
+ if (rrc_inactive_cfg_v1610_present) {
+ HANDLE_CODE(rrc_inactive_cfg_v1610.pack(bref));
+ }
+ if (t323_r16_present) {
+ HANDLE_CODE(t323_r16.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_release_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(full_i_rnti_r16_present, 1));
+ HANDLE_CODE(bref.unpack(short_i_rnti_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(rrc_inactive_cfg_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(release_idle_meas_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(alt_freq_priorities_r16_present, 1));
+ HANDLE_CODE(bref.unpack(t323_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (full_i_rnti_r16_present) {
+ HANDLE_CODE(full_i_rnti_r16.unpack(bref));
+ }
+ if (short_i_rnti_r16_present) {
+ HANDLE_CODE(short_i_rnti_r16.unpack(bref));
+ }
+ if (pur_cfg_r16_present) {
+ HANDLE_CODE(pur_cfg_r16.unpack(bref));
+ }
+ if (rrc_inactive_cfg_v1610_present) {
+ HANDLE_CODE(rrc_inactive_cfg_v1610.unpack(bref));
+ }
+ if (t323_r16_present) {
+ HANDLE_CODE(t323_r16.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_release_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (full_i_rnti_r16_present) {
+ j.write_str("fullI-RNTI-r16", full_i_rnti_r16.to_string());
+ }
+ if (short_i_rnti_r16_present) {
+ j.write_str("shortI-RNTI-r16", short_i_rnti_r16.to_string());
+ }
+ if (pur_cfg_r16_present) {
+ j.write_fieldname("pur-Config-r16");
+ pur_cfg_r16.to_json(j);
+ }
+ if (rrc_inactive_cfg_v1610_present) {
+ j.write_fieldname("rrc-InactiveConfig-v1610");
+ rrc_inactive_cfg_v1610.to_json(j);
+ }
+ if (release_idle_meas_cfg_r16_present) {
+ j.write_str("releaseIdleMeasConfig-r16", "true");
+ }
+ if (alt_freq_priorities_r16_present) {
+ j.write_str("altFreqPriorities-r16", "true");
+ }
+ if (t323_r16_present) {
+ j.write_str("t323-r16", t323_r16.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+const char* rrc_conn_release_v1610_ies_s::t323_r16_opts::to_string() const
+{
+ static const char* options[] = {"min5", "min10", "min20", "min30", "min60", "min120", "min180", "min720"};
+ return convert_enum_idx(options, 8, value, "rrc_conn_release_v1610_ies_s::t323_r16_e_");
+}
+uint16_t rrc_conn_release_v1610_ies_s::t323_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {5, 10, 20, 30, 60, 120, 180, 720};
+ return map_enum_number(options, 8, value, "rrc_conn_release_v1610_ies_s::t323_r16_e_");
+}
+
// SL-CommTxPoolToAddMod-r12 ::= SEQUENCE
SRSASN_CODE sl_comm_tx_pool_to_add_mod_r12_s::pack(bit_ref& bref) const
{
@@ -3354,6 +4558,43 @@ SRSASN_CODE sl_v2x_cfg_ded_r14_s::comm_tx_res_v1530_c_::setup_c_::unpack(cbit_re
return SRSASN_SUCCESS;
}
+// ValidityArea-r16 ::= SEQUENCE
+SRSASN_CODE validity_area_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(validity_cell_list_r16_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, carrier_freq_r16, (uint32_t)0u, (uint32_t)262143u));
+ if (validity_cell_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, validity_cell_list_r16, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE validity_area_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(validity_cell_list_r16_present, 1));
+
+ HANDLE_CODE(unpack_integer(carrier_freq_r16, bref, (uint32_t)0u, (uint32_t)262143u));
+ if (validity_cell_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(validity_cell_list_r16, bref, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void validity_area_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("carrierFreq-r16", carrier_freq_r16);
+ if (validity_cell_list_r16_present) {
+ j.start_array("validityCellList-r16");
+ for (const auto& e1 : validity_cell_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
// LWA-Configuration-r13 ::= CHOICE
void lwa_cfg_r13_c::set(types::options e)
{
@@ -3514,10 +4755,10 @@ void pwr_coordination_info_r12_s::to_json(json_writer& j) const
void ran_notif_area_info_r15_c::destroy_()
{
switch (type_) {
- case types::cell_list_r15:
+ case types::cell_list:
c.destroy<plmn_ran_area_cell_list_r15_l>();
break;
- case types::ran_area_cfg_list_r15:
+ case types::ran_area_cfg_list:
c.destroy<plmn_ran_area_cfg_list_r15_l>();
break;
default:
@@ -3529,10 +4770,10 @@ void ran_notif_area_info_r15_c::set(types::options e)
destroy_();
type_ = e;
switch (type_) {
- case types::cell_list_r15:
+ case types::cell_list:
c.init<plmn_ran_area_cell_list_r15_l>();
break;
- case types::ran_area_cfg_list_r15:
+ case types::ran_area_cfg_list:
c.init<plmn_ran_area_cfg_list_r15_l>();
break;
case types::nulltype:
@@ -3545,10 +4786,10 @@ ran_notif_area_info_r15_c::ran_notif_area_info_r15_c(const ran_notif_area_info_r
{
type_ = other.type();
switch (type_) {
- case types::cell_list_r15:
+ case types::cell_list:
c.init(other.c.get<plmn_ran_area_cell_list_r15_l>());
break;
- case types::ran_area_cfg_list_r15:
+ case types::ran_area_cfg_list:
c.init(other.c.get<plmn_ran_area_cfg_list_r15_l>());
break;
case types::nulltype:
@@ -3564,10 +4805,10 @@ ran_notif_area_info_r15_c& ran_notif_area_info_r15_c::operator=(const ran_notif_
}
set(other.type());
switch (type_) {
- case types::cell_list_r15:
+ case types::cell_list:
c.set(other.c.get<plmn_ran_area_cell_list_r15_l>());
break;
- case types::ran_area_cfg_list_r15:
+ case types::ran_area_cfg_list:
c.set(other.c.get<plmn_ran_area_cfg_list_r15_l>());
break;
case types::nulltype:
@@ -3578,29 +4819,29 @@ ran_notif_area_info_r15_c& ran_notif_area_info_r15_c::operator=(const ran_notif_
return *this;
}
-plmn_ran_area_cell_list_r15_l& ran_notif_area_info_r15_c::set_cell_list_r15()
+plmn_ran_area_cell_list_r15_l& ran_notif_area_info_r15_c::set_cell_list()
{
- set(types::cell_list_r15);
+ set(types::cell_list);
return c.get<plmn_ran_area_cell_list_r15_l>();
}
-plmn_ran_area_cfg_list_r15_l& ran_notif_area_info_r15_c::set_ran_area_cfg_list_r15()
+plmn_ran_area_cfg_list_r15_l& ran_notif_area_info_r15_c::set_ran_area_cfg_list()
{
- set(types::ran_area_cfg_list_r15);
+ set(types::ran_area_cfg_list);
return c.get<plmn_ran_area_cfg_list_r15_l>();
}
void ran_notif_area_info_r15_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
- case types::cell_list_r15:
- j.start_array("cellList-r15");
+ case types::cell_list:
+ j.start_array("cellList");
for (const auto& e1 : c.get<plmn_ran_area_cell_list_r15_l>()) {
e1.to_json(j);
}
j.end_array();
break;
- case types::ran_area_cfg_list_r15:
- j.start_array("ran-AreaConfigList-r15");
+ case types::ran_area_cfg_list:
+ j.start_array("ran-AreaConfigList");
for (const auto& e1 : c.get<plmn_ran_area_cfg_list_r15_l>()) {
e1.to_json(j);
}
@@ -3615,10 +4856,10 @@ SRSASN_CODE ran_notif_area_info_r15_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
- case types::cell_list_r15:
+ case types::cell_list:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<plmn_ran_area_cell_list_r15_l>(), 1, 8));
break;
- case types::ran_area_cfg_list_r15:
+ case types::ran_area_cfg_list:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<plmn_ran_area_cfg_list_r15_l>(), 1, 8));
break;
default:
@@ -3633,10 +4874,10 @@ SRSASN_CODE ran_notif_area_info_r15_c::unpack(cbit_ref& bref)
e.unpack(bref);
set(e);
switch (type_) {
- case types::cell_list_r15:
+ case types::cell_list:
HANDLE_CODE(unpack_dyn_seq_of(c.get<plmn_ran_area_cell_list_r15_l>(), bref, 1, 8));
break;
- case types::ran_area_cfg_list_r15:
+ case types::ran_area_cfg_list:
HANDLE_CODE(unpack_dyn_seq_of(c.get<plmn_ran_area_cfg_list_r15_l>(), bref, 1, 8));
break;
default:
@@ -3791,6 +5032,10 @@ SRSASN_CODE rrc_conn_release_v15b0_ies_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(no_last_cell_upd_r15_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_conn_release_v15b0_ies_s::unpack(cbit_ref& bref)
@@ -3798,6 +5043,10 @@ SRSASN_CODE rrc_conn_release_v15b0_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(no_last_cell_upd_r15_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
return SRSASN_SUCCESS;
}
void rrc_conn_release_v15b0_ies_s::to_json(json_writer& j) const
@@ -3808,8 +5057,7 @@ void rrc_conn_release_v15b0_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -4221,6 +5469,25 @@ SRSASN_CODE meas_idle_cfg_ded_r15_s::pack(bit_ref& bref) const
}
HANDLE_CODE(meas_idle_dur_r15.pack(bref));
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= meas_idle_carrier_list_nr_r16.is_present();
+ group_flags[0] |= validity_area_list_r16.is_present();
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(meas_idle_carrier_list_nr_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(validity_area_list_r16.is_present(), 1));
+ if (meas_idle_carrier_list_nr_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *meas_idle_carrier_list_nr_r16, 1, 8));
+ }
+ if (validity_area_list_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *validity_area_list_r16, 1, 8));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_idle_cfg_ded_r15_s::unpack(cbit_ref& bref)
@@ -4233,6 +5500,27 @@ SRSASN_CODE meas_idle_cfg_ded_r15_s::unpack(cbit_ref& bref)
}
HANDLE_CODE(meas_idle_dur_r15.unpack(bref));
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool meas_idle_carrier_list_nr_r16_present;
+ HANDLE_CODE(bref.unpack(meas_idle_carrier_list_nr_r16_present, 1));
+ meas_idle_carrier_list_nr_r16.set_present(meas_idle_carrier_list_nr_r16_present);
+ bool validity_area_list_r16_present;
+ HANDLE_CODE(bref.unpack(validity_area_list_r16_present, 1));
+ validity_area_list_r16.set_present(validity_area_list_r16_present);
+ if (meas_idle_carrier_list_nr_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*meas_idle_carrier_list_nr_r16, bref, 1, 8));
+ }
+ if (validity_area_list_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*validity_area_list_r16, bref, 1, 8));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
void meas_idle_cfg_ded_r15_s::to_json(json_writer& j) const
@@ -4246,6 +5534,22 @@ void meas_idle_cfg_ded_r15_s::to_json(json_writer& j) const
j.end_array();
}
j.write_str("measIdleDuration-r15", meas_idle_dur_r15.to_string());
+ if (ext) {
+ if (meas_idle_carrier_list_nr_r16.is_present()) {
+ j.start_array("measIdleCarrierListNR-r16");
+ for (const auto& e1 : *meas_idle_carrier_list_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (validity_area_list_r16.is_present()) {
+ j.start_array("validityAreaList-r16");
+ for (const auto& e1 : *validity_area_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ }
j.end_obj();
}
@@ -4607,6 +5911,111 @@ SRSASN_CODE scg_cfg_r12_c::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// SCellToAddMod-r16 ::= SEQUENCE
+SRSASN_CODE scell_to_add_mod_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(cell_identif_r16_present, 1));
+ HANDLE_CODE(bref.pack(rr_cfg_common_scell_r16_present, 1));
+ HANDLE_CODE(bref.pack(rr_cfg_ded_scell_r16_present, 1));
+ HANDLE_CODE(bref.pack(ant_info_ded_scell_r16_present, 1));
+ HANDLE_CODE(bref.pack(srs_switch_from_serv_cell_idx_r16_present, 1));
+ HANDLE_CODE(bref.pack(scell_state_r16_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, scell_idx_r16, (uint8_t)1u, (uint8_t)31u));
+ if (cell_identif_r16_present) {
+ HANDLE_CODE(pack_integer(bref, cell_identif_r16.pci_r16, (uint16_t)0u, (uint16_t)503u));
+ HANDLE_CODE(pack_integer(bref, cell_identif_r16.dl_carrier_freq_r16, (uint32_t)0u, (uint32_t)262143u));
+ }
+ if (rr_cfg_common_scell_r16_present) {
+ HANDLE_CODE(rr_cfg_common_scell_r16.pack(bref));
+ }
+ if (rr_cfg_ded_scell_r16_present) {
+ HANDLE_CODE(rr_cfg_ded_scell_r16.pack(bref));
+ }
+ if (ant_info_ded_scell_r16_present) {
+ HANDLE_CODE(ant_info_ded_scell_r16.pack(bref));
+ }
+ if (srs_switch_from_serv_cell_idx_r16_present) {
+ HANDLE_CODE(pack_integer(bref, srs_switch_from_serv_cell_idx_r16, (uint8_t)0u, (uint8_t)31u));
+ }
+ if (scell_state_r16_present) {
+ HANDLE_CODE(scell_state_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE scell_to_add_mod_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(cell_identif_r16_present, 1));
+ HANDLE_CODE(bref.unpack(rr_cfg_common_scell_r16_present, 1));
+ HANDLE_CODE(bref.unpack(rr_cfg_ded_scell_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ant_info_ded_scell_r16_present, 1));
+ HANDLE_CODE(bref.unpack(srs_switch_from_serv_cell_idx_r16_present, 1));
+ HANDLE_CODE(bref.unpack(scell_state_r16_present, 1));
+
+ HANDLE_CODE(unpack_integer(scell_idx_r16, bref, (uint8_t)1u, (uint8_t)31u));
+ if (cell_identif_r16_present) {
+ HANDLE_CODE(unpack_integer(cell_identif_r16.pci_r16, bref, (uint16_t)0u, (uint16_t)503u));
+ HANDLE_CODE(unpack_integer(cell_identif_r16.dl_carrier_freq_r16, bref, (uint32_t)0u, (uint32_t)262143u));
+ }
+ if (rr_cfg_common_scell_r16_present) {
+ HANDLE_CODE(rr_cfg_common_scell_r16.unpack(bref));
+ }
+ if (rr_cfg_ded_scell_r16_present) {
+ HANDLE_CODE(rr_cfg_ded_scell_r16.unpack(bref));
+ }
+ if (ant_info_ded_scell_r16_present) {
+ HANDLE_CODE(ant_info_ded_scell_r16.unpack(bref));
+ }
+ if (srs_switch_from_serv_cell_idx_r16_present) {
+ HANDLE_CODE(unpack_integer(srs_switch_from_serv_cell_idx_r16, bref, (uint8_t)0u, (uint8_t)31u));
+ }
+ if (scell_state_r16_present) {
+ HANDLE_CODE(scell_state_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void scell_to_add_mod_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("sCellIndex-r16", scell_idx_r16);
+ if (cell_identif_r16_present) {
+ j.write_fieldname("cellIdentification-r16");
+ j.start_obj();
+ j.write_int("physCellId-r16", cell_identif_r16.pci_r16);
+ j.write_int("dl-CarrierFreq-r16", cell_identif_r16.dl_carrier_freq_r16);
+ j.end_obj();
+ }
+ if (rr_cfg_common_scell_r16_present) {
+ j.write_fieldname("radioResourceConfigCommonSCell-r16");
+ rr_cfg_common_scell_r16.to_json(j);
+ }
+ if (rr_cfg_ded_scell_r16_present) {
+ j.write_fieldname("radioResourceConfigDedicatedSCell-r16");
+ rr_cfg_ded_scell_r16.to_json(j);
+ }
+ if (ant_info_ded_scell_r16_present) {
+ j.write_fieldname("antennaInfoDedicatedSCell-r16");
+ ant_info_ded_scell_r16.to_json(j);
+ }
+ if (srs_switch_from_serv_cell_idx_r16_present) {
+ j.write_int("srs-SwitchFromServCellIndex-r16", srs_switch_from_serv_cell_idx_r16);
+ }
+ if (scell_state_r16_present) {
+ j.write_str("sCellState-r16", scell_state_r16.to_string());
+ }
+ j.end_obj();
+}
+
+const char* scell_to_add_mod_r16_s::scell_state_r16_opts::to_string() const
+{
+ static const char* options[] = {"activated", "dormant"};
+ return convert_enum_idx(options, 2, value, "scell_to_add_mod_r16_s::scell_state_r16_e_");
+}
+
// SL-CommConfig-r12 ::= SEQUENCE
SRSASN_CODE sl_comm_cfg_r12_s::pack(bit_ref& bref) const
{
@@ -6231,6 +7640,35 @@ const char* sl_sync_tx_ctrl_r12_s::network_ctrl_sync_tx_r12_opts::to_string() co
return convert_enum_idx(options, 2, value, "sl_sync_tx_ctrl_r12_s::network_ctrl_sync_tx_r12_e_");
}
+// UEInformationRequest-v1710-IEs ::= SEQUENCE
+SRSASN_CODE ue_info_request_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(coarse_location_req_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_info_request_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(coarse_location_req_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void ue_info_request_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (coarse_location_req_r17_present) {
+ j.write_str("coarseLocationReq-r17", "true");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// RRCConnectionReconfiguration-v1250-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_recfg_v1250_ies_s::pack(bit_ref& bref) const
{
@@ -6507,6 +7945,35 @@ uint8_t rrc_conn_release_v1530_ies_s::cn_type_r15_opts::to_number() const
return 0;
}
+// RRCConnectionResume-v1700-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_resume_v1700_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(scg_state_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_resume_v1700_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(scg_state_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_resume_v1700_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (scg_state_r17_present) {
+ j.write_str("scg-State-r17", "deactivated");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// TargetMBSFN-Area-r12 ::= SEQUENCE
SRSASN_CODE target_mbsfn_area_r12_s::pack(bit_ref& bref) const
{
@@ -6552,6 +8019,9 @@ SRSASN_CODE ue_info_request_v1530_ies_s::pack(bit_ref& bref) const
if (flight_path_info_req_r15_present) {
HANDLE_CODE(flight_path_info_req_r15.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -6564,6 +8034,9 @@ SRSASN_CODE ue_info_request_v1530_ies_s::unpack(cbit_ref& bref)
if (flight_path_info_req_r15_present) {
HANDLE_CODE(flight_path_info_req_r15.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -6579,8 +8052,7 @@ void ue_info_request_v1530_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -7113,6 +8585,169 @@ void rrc_conn_release_v1320_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// RRCConnectionResume-v1610-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_resume_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(idle_mode_meas_req_r16_present, 1));
+ HANDLE_CODE(bref.pack(restore_mcg_scells_r16_present, 1));
+ HANDLE_CODE(bref.pack(restore_scg_r16_present, 1));
+ HANDLE_CODE(bref.pack(scell_to_add_mod_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(scell_to_release_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(scell_group_to_release_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(scell_group_to_add_mod_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(nr_secondary_cell_group_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(p_max_eutra_r16_present, 1));
+ HANDLE_CODE(bref.pack(p_max_ue_fr1_r16_present, 1));
+ HANDLE_CODE(bref.pack(tdm_pattern_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(tdm_pattern_cfg2_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (scell_to_add_mod_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, scell_to_add_mod_list_r16, 1, 31));
+ }
+ if (scell_to_release_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, scell_to_release_list_r16, 1, 31, integer_packer<uint8_t>(1, 31)));
+ }
+ if (scell_group_to_release_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, scell_group_to_release_list_r16, 1, 4, integer_packer<uint8_t>(1, 4)));
+ }
+ if (scell_group_to_add_mod_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, scell_group_to_add_mod_list_r16, 1, 4));
+ }
+ if (nr_secondary_cell_group_cfg_r16_present) {
+ HANDLE_CODE(nr_secondary_cell_group_cfg_r16.pack(bref));
+ }
+ if (p_max_eutra_r16_present) {
+ HANDLE_CODE(pack_integer(bref, p_max_eutra_r16, (int8_t)-30, (int8_t)33));
+ }
+ if (p_max_ue_fr1_r16_present) {
+ HANDLE_CODE(pack_integer(bref, p_max_ue_fr1_r16, (int8_t)-30, (int8_t)33));
+ }
+ if (tdm_pattern_cfg_r16_present) {
+ HANDLE_CODE(tdm_pattern_cfg_r16.pack(bref));
+ }
+ if (tdm_pattern_cfg2_r16_present) {
+ HANDLE_CODE(tdm_pattern_cfg2_r16.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_resume_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(idle_mode_meas_req_r16_present, 1));
+ HANDLE_CODE(bref.unpack(restore_mcg_scells_r16_present, 1));
+ HANDLE_CODE(bref.unpack(restore_scg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(scell_to_add_mod_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(scell_to_release_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(scell_group_to_release_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(scell_group_to_add_mod_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(nr_secondary_cell_group_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(p_max_eutra_r16_present, 1));
+ HANDLE_CODE(bref.unpack(p_max_ue_fr1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(tdm_pattern_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(tdm_pattern_cfg2_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (scell_to_add_mod_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(scell_to_add_mod_list_r16, bref, 1, 31));
+ }
+ if (scell_to_release_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(scell_to_release_list_r16, bref, 1, 31, integer_packer<uint8_t>(1, 31)));
+ }
+ if (scell_group_to_release_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(scell_group_to_release_list_r16, bref, 1, 4, integer_packer<uint8_t>(1, 4)));
+ }
+ if (scell_group_to_add_mod_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(scell_group_to_add_mod_list_r16, bref, 1, 4));
+ }
+ if (nr_secondary_cell_group_cfg_r16_present) {
+ HANDLE_CODE(nr_secondary_cell_group_cfg_r16.unpack(bref));
+ }
+ if (p_max_eutra_r16_present) {
+ HANDLE_CODE(unpack_integer(p_max_eutra_r16, bref, (int8_t)-30, (int8_t)33));
+ }
+ if (p_max_ue_fr1_r16_present) {
+ HANDLE_CODE(unpack_integer(p_max_ue_fr1_r16, bref, (int8_t)-30, (int8_t)33));
+ }
+ if (tdm_pattern_cfg_r16_present) {
+ HANDLE_CODE(tdm_pattern_cfg_r16.unpack(bref));
+ }
+ if (tdm_pattern_cfg2_r16_present) {
+ HANDLE_CODE(tdm_pattern_cfg2_r16.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_resume_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (idle_mode_meas_req_r16_present) {
+ j.write_str("idleModeMeasurementReq-r16", "true");
+ }
+ if (restore_mcg_scells_r16_present) {
+ j.write_str("restoreMCG-SCells-r16", "true");
+ }
+ if (restore_scg_r16_present) {
+ j.write_str("restoreSCG-r16", "true");
+ }
+ if (scell_to_add_mod_list_r16_present) {
+ j.start_array("sCellToAddModList-r16");
+ for (const auto& e1 : scell_to_add_mod_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (scell_to_release_list_r16_present) {
+ j.start_array("sCellToReleaseList-r16");
+ for (const auto& e1 : scell_to_release_list_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ if (scell_group_to_release_list_r16_present) {
+ j.start_array("sCellGroupToReleaseList-r16");
+ for (const auto& e1 : scell_group_to_release_list_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ if (scell_group_to_add_mod_list_r16_present) {
+ j.start_array("sCellGroupToAddModList-r16");
+ for (const auto& e1 : scell_group_to_add_mod_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (nr_secondary_cell_group_cfg_r16_present) {
+ j.write_str("nr-SecondaryCellGroupConfig-r16", nr_secondary_cell_group_cfg_r16.to_string());
+ }
+ if (p_max_eutra_r16_present) {
+ j.write_int("p-MaxEUTRA-r16", p_max_eutra_r16);
+ }
+ if (p_max_ue_fr1_r16_present) {
+ j.write_int("p-MaxUE-FR1-r16", p_max_ue_fr1_r16);
+ }
+ if (tdm_pattern_cfg_r16_present) {
+ j.write_fieldname("tdm-PatternConfig-r16");
+ tdm_pattern_cfg_r16.to_json(j);
+ }
+ if (tdm_pattern_cfg2_r16_present) {
+ j.write_fieldname("tdm-PatternConfig2-r16");
+ tdm_pattern_cfg2_r16.to_json(j);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// ReportProximityConfig-r9 ::= SEQUENCE
SRSASN_CODE report_proximity_cfg_r9_s::pack(bit_ref& bref) const
{
@@ -7140,6 +8775,54 @@ void report_proximity_cfg_r9_s::to_json(json_writer& j) const
j.end_obj();
}
+// SCG-DeactivationPreferenceConfig-r17 ::= SEQUENCE
+SRSASN_CODE scg_deactivation_pref_cfg_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(scg_deactivation_pref_prohibit_timer_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE scg_deactivation_pref_cfg_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(scg_deactivation_pref_prohibit_timer_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void scg_deactivation_pref_cfg_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("scg-DeactivationPreferenceProhibitTimer-r17", scg_deactivation_pref_prohibit_timer_r17.to_string());
+ j.end_obj();
+}
+
+const char* scg_deactivation_pref_cfg_r17_s::scg_deactivation_pref_prohibit_timer_r17_opts::to_string() const
+{
+ static const char* options[] = {"s0",
+ "s1",
+ "s2",
+ "s4",
+ "s8",
+ "s10",
+ "s20",
+ "s30",
+ "s60",
+ "s120",
+ "s180",
+ "s240",
+ "s300",
+ "s600",
+ "s900",
+ "s1800"};
+ return convert_enum_idx(
+ options, 16, value, "scg_deactivation_pref_cfg_r17_s::scg_deactivation_pref_prohibit_timer_r17_e_");
+}
+uint16_t scg_deactivation_pref_cfg_r17_s::scg_deactivation_pref_prohibit_timer_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {0, 1, 2, 4, 8, 10, 20, 30, 60, 120, 180, 240, 300, 600, 900, 1800};
+ return map_enum_number(
+ options, 16, value, "scg_deactivation_pref_cfg_r17_s::scg_deactivation_pref_prohibit_timer_r17_e_");
+}
+
// TrackingAreaCodeList-v1130 ::= SEQUENCE
SRSASN_CODE tac_list_v1130_s::pack(bit_ref& bref) const
{
@@ -7372,6 +9055,9 @@ SRSASN_CODE other_cfg_r9_s::pack(bit_ref& bref) const
group_flags[3] |= ailc_bit_cfg_r15_present;
group_flags[3] |= bt_name_list_cfg_r15.is_present();
group_flags[3] |= wlan_name_list_cfg_r15.is_present();
+ group_flags[4] |= overheat_assist_cfg_for_scg_r16_present;
+ group_flags[5] |= meas_uncom_bar_pre_r17_present;
+ group_flags[5] |= scg_deactivation_pref_cfg_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -7438,6 +9124,26 @@ SRSASN_CODE other_cfg_r9_s::pack(bit_ref& bref) const
HANDLE_CODE(wlan_name_list_cfg_r15->pack(bref));
}
}
+ if (group_flags[4]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(overheat_assist_cfg_for_scg_r16_present, 1));
+ if (overheat_assist_cfg_for_scg_r16_present) {
+ HANDLE_CODE(bref.pack(overheat_assist_cfg_for_scg_r16, 1));
+ }
+ }
+ if (group_flags[5]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(meas_uncom_bar_pre_r17_present, 1));
+ HANDLE_CODE(bref.pack(scg_deactivation_pref_cfg_r17.is_present(), 1));
+ if (meas_uncom_bar_pre_r17_present) {
+ HANDLE_CODE(bref.pack(meas_uncom_bar_pre_r17, 1));
+ }
+ if (scg_deactivation_pref_cfg_r17.is_present()) {
+ HANDLE_CODE(scg_deactivation_pref_cfg_r17->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -7451,7 +9157,7 @@ SRSASN_CODE other_cfg_r9_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(4);
+ ext_groups_unpacker_guard group_flags(6);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -7536,6 +9242,28 @@ SRSASN_CODE other_cfg_r9_s::unpack(cbit_ref& bref)
HANDLE_CODE(wlan_name_list_cfg_r15->unpack(bref));
}
}
+ if (group_flags[4]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(overheat_assist_cfg_for_scg_r16_present, 1));
+ if (overheat_assist_cfg_for_scg_r16_present) {
+ HANDLE_CODE(bref.unpack(overheat_assist_cfg_for_scg_r16, 1));
+ }
+ }
+ if (group_flags[5]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(meas_uncom_bar_pre_r17_present, 1));
+ bool scg_deactivation_pref_cfg_r17_present;
+ HANDLE_CODE(bref.unpack(scg_deactivation_pref_cfg_r17_present, 1));
+ scg_deactivation_pref_cfg_r17.set_present(scg_deactivation_pref_cfg_r17_present);
+ if (meas_uncom_bar_pre_r17_present) {
+ HANDLE_CODE(bref.unpack(meas_uncom_bar_pre_r17, 1));
+ }
+ if (scg_deactivation_pref_cfg_r17.is_present()) {
+ HANDLE_CODE(scg_deactivation_pref_cfg_r17->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -7592,6 +9320,16 @@ void other_cfg_r9_s::to_json(json_writer& j) const
j.write_fieldname("wlan-NameListConfig-r15");
wlan_name_list_cfg_r15->to_json(j);
}
+ if (overheat_assist_cfg_for_scg_r16_present) {
+ j.write_bool("overheatingAssistanceConfigForSCG-r16", overheat_assist_cfg_for_scg_r16);
+ }
+ if (meas_uncom_bar_pre_r17_present) {
+ j.write_bool("measUncomBarPre-r17", meas_uncom_bar_pre_r17);
+ }
+ if (scg_deactivation_pref_cfg_r17.is_present()) {
+ j.write_fieldname("scg-DeactivationPreferenceConfig-r17");
+ scg_deactivation_pref_cfg_r17->to_json(j);
+ }
}
j.end_obj();
}
@@ -8104,6 +9842,10 @@ SRSASN_CODE rrc_conn_resume_v1530_ies_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(full_cfg_r15_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_conn_resume_v1530_ies_s::unpack(cbit_ref& bref)
@@ -8111,6 +9853,10 @@ SRSASN_CODE rrc_conn_resume_v1530_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(full_cfg_r15_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
return SRSASN_SUCCESS;
}
void rrc_conn_resume_v1530_ies_s::to_json(json_writer& j) const
@@ -8121,8 +9867,7 @@ void rrc_conn_resume_v1530_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -8211,6 +9956,54 @@ uint8_t carrier_info_nr_r15_s::subcarrier_spacing_ssb_r15_opts::to_number() cons
return map_enum_number(options, 4, value, "carrier_info_nr_r15_s::subcarrier_spacing_ssb_r15_e_");
}
+// CarrierInfoNR-r17 ::= SEQUENCE
+SRSASN_CODE carrier_info_nr_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(smtc_r17_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, carrier_freq_r17, (uint32_t)0u, (uint32_t)3279165u));
+ HANDLE_CODE(subcarrier_spacing_ssb_r17.pack(bref));
+ if (smtc_r17_present) {
+ HANDLE_CODE(smtc_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE carrier_info_nr_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(smtc_r17_present, 1));
+
+ HANDLE_CODE(unpack_integer(carrier_freq_r17, bref, (uint32_t)0u, (uint32_t)3279165u));
+ HANDLE_CODE(subcarrier_spacing_ssb_r17.unpack(bref));
+ if (smtc_r17_present) {
+ HANDLE_CODE(smtc_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void carrier_info_nr_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("carrierFreq-r17", carrier_freq_r17);
+ j.write_str("subcarrierSpacingSSB-r17", subcarrier_spacing_ssb_r17.to_string());
+ if (smtc_r17_present) {
+ j.write_fieldname("smtc-r17");
+ smtc_r17.to_json(j);
+ }
+ j.end_obj();
+}
+
+const char* carrier_info_nr_r17_s::subcarrier_spacing_ssb_r17_opts::to_string() const
+{
+ static const char* options[] = {"kHz15", "kHz30", "kHz120", "kHz240", "kHz480", "spare1"};
+ return convert_enum_idx(options, 6, value, "carrier_info_nr_r17_s::subcarrier_spacing_ssb_r17_e_");
+}
+uint16_t carrier_info_nr_r17_s::subcarrier_spacing_ssb_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {15, 30, 120, 240, 480};
+ return map_enum_number(options, 5, value, "carrier_info_nr_r17_s::subcarrier_spacing_ssb_r17_e_");
+}
+
// CounterCheck-v1530-IEs ::= SEQUENCE
SRSASN_CODE counter_check_v1530_ies_s::pack(bit_ref& bref) const
{
@@ -8252,6 +10045,43 @@ void counter_check_v1530_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// DLInformationTransfer-v1610-IEs ::= SEQUENCE
+SRSASN_CODE dl_info_transfer_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ded_info_f1c_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (ded_info_f1c_r16_present) {
+ HANDLE_CODE(ded_info_f1c_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE dl_info_transfer_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ded_info_f1c_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (ded_info_f1c_r16_present) {
+ HANDLE_CODE(ded_info_f1c_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void dl_info_transfer_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ded_info_f1c_r16_present) {
+ j.write_str("dedicatedInfoF1c-r16", ded_info_f1c_r16.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// HandoverFromEUTRAPreparationRequest-v920-IEs ::= SEQUENCE
SRSASN_CODE ho_from_eutra_prep_request_v920_ies_s::pack(bit_ref& bref) const
{
@@ -9271,6 +11101,9 @@ SRSASN_CODE dl_info_transfer_v8a0_ies_s::pack(bit_ref& bref) const
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -9282,6 +11115,9 @@ SRSASN_CODE dl_info_transfer_v8a0_ies_s::unpack(cbit_ref& bref)
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -9293,8 +11129,7 @@ void dl_info_transfer_v8a0_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -10976,6 +12811,9 @@ void redirected_carrier_info_c::destroy_()
case types::nr_r15:
c.destroy<carrier_info_nr_r15_s>();
break;
+ case types::nr_r17:
+ c.destroy<carrier_info_nr_r17_s>();
+ break;
default:
break;
}
@@ -11006,6 +12844,9 @@ void redirected_carrier_info_c::set(types::options e)
case types::nr_r15:
c.init<carrier_info_nr_r15_s>();
break;
+ case types::nr_r17:
+ c.init<carrier_info_nr_r17_s>();
+ break;
case types::nulltype:
break;
default:
@@ -11040,6 +12881,9 @@ redirected_carrier_info_c::redirected_carrier_info_c(const redirected_carrier_in
case types::nr_r15:
c.init(other.c.get<carrier_info_nr_r15_s>());
break;
+ case types::nr_r17:
+ c.init(other.c.get<carrier_info_nr_r17_s>());
+ break;
case types::nulltype:
break;
default:
@@ -11077,6 +12921,9 @@ redirected_carrier_info_c& redirected_carrier_info_c::operator=(const redirected
case types::nr_r15:
c.set(other.c.get<carrier_info_nr_r15_s>());
break;
+ case types::nr_r17:
+ c.set(other.c.get<carrier_info_nr_r17_s>());
+ break;
case types::nulltype:
break;
default:
@@ -11125,6 +12972,11 @@ carrier_info_nr_r15_s& redirected_carrier_info_c::set_nr_r15()
set(types::nr_r15);
return c.get<carrier_info_nr_r15_s>();
}
+carrier_info_nr_r17_s& redirected_carrier_info_c::set_nr_r17()
+{
+ set(types::nr_r17);
+ return c.get<carrier_info_nr_r17_s>();
+}
void redirected_carrier_info_c::to_json(json_writer& j) const
{
j.start_obj();
@@ -11161,6 +13013,10 @@ void redirected_carrier_info_c::to_json(json_writer& j) const
j.write_fieldname("nr-r15");
c.get<carrier_info_nr_r15_s>().to_json(j);
break;
+ case types::nr_r17:
+ j.write_fieldname("nr-r17");
+ c.get<carrier_info_nr_r17_s>().to_json(j);
+ break;
default:
log_invalid_choice_id(type_, "redirected_carrier_info_c");
}
@@ -11197,6 +13053,10 @@ SRSASN_CODE redirected_carrier_info_c::pack(bit_ref& bref) const
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<carrier_info_nr_r15_s>().pack(bref));
} break;
+ case types::nr_r17: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<carrier_info_nr_r17_s>().pack(bref));
+ } break;
default:
log_invalid_choice_id(type_, "redirected_carrier_info_c");
return SRSASN_ERROR_ENCODE_FAIL;
@@ -11236,6 +13096,10 @@ SRSASN_CODE redirected_carrier_info_c::unpack(cbit_ref& bref)
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<carrier_info_nr_r15_s>().unpack(bref));
} break;
+ case types::nr_r17: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<carrier_info_nr_r17_s>().unpack(bref));
+ } break;
default:
log_invalid_choice_id(type_, "redirected_carrier_info_c");
return SRSASN_ERROR_DECODE_FAIL;
@@ -11368,6 +13232,58 @@ void counter_check_r8_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// DLDedicatedMessageSegment-r16-IEs ::= SEQUENCE
+SRSASN_CODE dl_ded_msg_segment_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(pack_integer(bref, segment_num_r16, (uint8_t)0u, (uint8_t)4u));
+ HANDLE_CODE(rrc_msg_segment_container_r16.pack(bref));
+ HANDLE_CODE(rrc_msg_segment_type_r16.pack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE dl_ded_msg_segment_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(unpack_integer(segment_num_r16, bref, (uint8_t)0u, (uint8_t)4u));
+ HANDLE_CODE(rrc_msg_segment_container_r16.unpack(bref));
+ HANDLE_CODE(rrc_msg_segment_type_r16.unpack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void dl_ded_msg_segment_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("segmentNumber-r16", segment_num_r16);
+ j.write_str("rrc-MessageSegmentContainer-r16", rrc_msg_segment_container_r16.to_string());
+ j.write_str("rrc-MessageSegmentType-r16", rrc_msg_segment_type_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* dl_ded_msg_segment_r16_ies_s::rrc_msg_segment_type_r16_opts::to_string() const
+{
+ static const char* options[] = {"notLastSegment", "lastSegment"};
+ return convert_enum_idx(options, 2, value, "dl_ded_msg_segment_r16_ies_s::rrc_msg_segment_type_r16_e_");
+}
+
// DLInformationTransfer-r15-IEs ::= SEQUENCE
SRSASN_CODE dl_info_transfer_r15_ies_s::pack(bit_ref& bref) const
{
@@ -11426,13 +13342,13 @@ void dl_info_transfer_r15_ies_s::to_json(json_writer& j) const
void dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::destroy_()
{
switch (type_) {
- case types::ded_info_nas_r15:
+ case types::ded_info_nas:
c.destroy<dyn_octstring>();
break;
- case types::ded_info_cdma2000_minus1_xrtt_r15:
+ case types::ded_info_cdma2000_minus1_xrtt:
c.destroy<dyn_octstring>();
break;
- case types::ded_info_cdma2000_hrpd_r15:
+ case types::ded_info_cdma2000_hrpd:
c.destroy<dyn_octstring>();
break;
default:
@@ -11444,13 +13360,13 @@ void dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::set(types::options e)
destroy_();
type_ = e;
switch (type_) {
- case types::ded_info_nas_r15:
+ case types::ded_info_nas:
c.init<dyn_octstring>();
break;
- case types::ded_info_cdma2000_minus1_xrtt_r15:
+ case types::ded_info_cdma2000_minus1_xrtt:
c.init<dyn_octstring>();
break;
- case types::ded_info_cdma2000_hrpd_r15:
+ case types::ded_info_cdma2000_hrpd:
c.init<dyn_octstring>();
break;
case types::nulltype:
@@ -11464,13 +13380,13 @@ dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::ded_info_type_r15_c_(
{
type_ = other.type();
switch (type_) {
- case types::ded_info_nas_r15:
+ case types::ded_info_nas:
c.init(other.c.get<dyn_octstring>());
break;
- case types::ded_info_cdma2000_minus1_xrtt_r15:
+ case types::ded_info_cdma2000_minus1_xrtt:
c.init(other.c.get<dyn_octstring>());
break;
- case types::ded_info_cdma2000_hrpd_r15:
+ case types::ded_info_cdma2000_hrpd:
c.init(other.c.get<dyn_octstring>());
break;
case types::nulltype:
@@ -11487,13 +13403,13 @@ dl_info_transfer_r15_ies_s::ded_info_type_r15_c_& dl_info_transfer_r15_ies_s::de
}
set(other.type());
switch (type_) {
- case types::ded_info_nas_r15:
+ case types::ded_info_nas:
c.set(other.c.get<dyn_octstring>());
break;
- case types::ded_info_cdma2000_minus1_xrtt_r15:
+ case types::ded_info_cdma2000_minus1_xrtt:
c.set(other.c.get<dyn_octstring>());
break;
- case types::ded_info_cdma2000_hrpd_r15:
+ case types::ded_info_cdma2000_hrpd:
c.set(other.c.get<dyn_octstring>());
break;
case types::nulltype:
@@ -11504,33 +13420,33 @@ dl_info_transfer_r15_ies_s::ded_info_type_r15_c_& dl_info_transfer_r15_ies_s::de
return *this;
}
-dyn_octstring& dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::set_ded_info_nas_r15()
+dyn_octstring& dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::set_ded_info_nas()
{
- set(types::ded_info_nas_r15);
+ set(types::ded_info_nas);
return c.get<dyn_octstring>();
}
-dyn_octstring& dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::set_ded_info_cdma2000_minus1_xrtt_r15()
+dyn_octstring& dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::set_ded_info_cdma2000_minus1_xrtt()
{
- set(types::ded_info_cdma2000_minus1_xrtt_r15);
+ set(types::ded_info_cdma2000_minus1_xrtt);
return c.get<dyn_octstring>();
}
-dyn_octstring& dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::set_ded_info_cdma2000_hrpd_r15()
+dyn_octstring& dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::set_ded_info_cdma2000_hrpd()
{
- set(types::ded_info_cdma2000_hrpd_r15);
+ set(types::ded_info_cdma2000_hrpd);
return c.get<dyn_octstring>();
}
void dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
- case types::ded_info_nas_r15:
- j.write_str("dedicatedInfoNAS-r15", c.get<dyn_octstring>().to_string());
+ case types::ded_info_nas:
+ j.write_str("dedicatedInfoNAS", c.get<dyn_octstring>().to_string());
break;
- case types::ded_info_cdma2000_minus1_xrtt_r15:
- j.write_str("dedicatedInfoCDMA2000-1XRTT-r15", c.get<dyn_octstring>().to_string());
+ case types::ded_info_cdma2000_minus1_xrtt:
+ j.write_str("dedicatedInfoCDMA2000-1XRTT", c.get<dyn_octstring>().to_string());
break;
- case types::ded_info_cdma2000_hrpd_r15:
- j.write_str("dedicatedInfoCDMA2000-HRPD-r15", c.get<dyn_octstring>().to_string());
+ case types::ded_info_cdma2000_hrpd:
+ j.write_str("dedicatedInfoCDMA2000-HRPD", c.get<dyn_octstring>().to_string());
break;
default:
log_invalid_choice_id(type_, "dl_info_transfer_r15_ies_s::ded_info_type_r15_c_");
@@ -11541,13 +13457,13 @@ SRSASN_CODE dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::pack(bit_ref& bref
{
type_.pack(bref);
switch (type_) {
- case types::ded_info_nas_r15:
+ case types::ded_info_nas:
HANDLE_CODE(c.get<dyn_octstring>().pack(bref));
break;
- case types::ded_info_cdma2000_minus1_xrtt_r15:
+ case types::ded_info_cdma2000_minus1_xrtt:
HANDLE_CODE(c.get<dyn_octstring>().pack(bref));
break;
- case types::ded_info_cdma2000_hrpd_r15:
+ case types::ded_info_cdma2000_hrpd:
HANDLE_CODE(c.get<dyn_octstring>().pack(bref));
break;
default:
@@ -11562,13 +13478,13 @@ SRSASN_CODE dl_info_transfer_r15_ies_s::ded_info_type_r15_c_::unpack(cbit_ref& b
e.unpack(bref);
set(e);
switch (type_) {
- case types::ded_info_nas_r15:
+ case types::ded_info_nas:
HANDLE_CODE(c.get<dyn_octstring>().unpack(bref));
break;
- case types::ded_info_cdma2000_minus1_xrtt_r15:
+ case types::ded_info_cdma2000_minus1_xrtt:
HANDLE_CODE(c.get<dyn_octstring>().unpack(bref));
break;
- case types::ded_info_cdma2000_hrpd_r15:
+ case types::ded_info_cdma2000_hrpd:
HANDLE_CODE(c.get<dyn_octstring>().unpack(bref));
break;
default:
@@ -12835,6 +14751,88 @@ SRSASN_CODE counter_check_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// DLDedicatedMessageSegment-r16 ::= SEQUENCE
+SRSASN_CODE dl_ded_msg_segment_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(crit_exts.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE dl_ded_msg_segment_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(crit_exts.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void dl_ded_msg_segment_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("criticalExtensions");
+ crit_exts.to_json(j);
+ j.end_obj();
+}
+
+void dl_ded_msg_segment_r16_s::crit_exts_c_::set(types::options e)
+{
+ type_ = e;
+}
+dl_ded_msg_segment_r16_ies_s& dl_ded_msg_segment_r16_s::crit_exts_c_::set_dl_ded_msg_segment_r16()
+{
+ set(types::dl_ded_msg_segment_r16);
+ return c;
+}
+void dl_ded_msg_segment_r16_s::crit_exts_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void dl_ded_msg_segment_r16_s::crit_exts_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::dl_ded_msg_segment_r16:
+ j.write_fieldname("dlDedicatedMessageSegment-r16");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "dl_ded_msg_segment_r16_s::crit_exts_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE dl_ded_msg_segment_r16_s::crit_exts_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::dl_ded_msg_segment_r16:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "dl_ded_msg_segment_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE dl_ded_msg_segment_r16_s::crit_exts_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::dl_ded_msg_segment_r16:
+ HANDLE_CODE(c.unpack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "dl_ded_msg_segment_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
// DLInformationTransfer ::= SEQUENCE
SRSASN_CODE dl_info_transfer_s::pack(bit_ref& bref) const
{
@@ -14633,6 +16631,9 @@ void dl_dcch_msg_type_c::c1_c_::destroy_()
case types::rrc_conn_resume_r13:
c.destroy<rrc_conn_resume_r13_s>();
break;
+ case types::dl_ded_msg_segment_r16:
+ c.destroy<dl_ded_msg_segment_r16_s>();
+ break;
default:
break;
}
@@ -14681,7 +16682,8 @@ void dl_dcch_msg_type_c::c1_c_::set(types::options e)
case types::rrc_conn_resume_r13:
c.init<rrc_conn_resume_r13_s>();
break;
- case types::spare3:
+ case types::dl_ded_msg_segment_r16:
+ c.init<dl_ded_msg_segment_r16_s>();
break;
case types::spare2:
break;
@@ -14736,7 +16738,8 @@ dl_dcch_msg_type_c::c1_c_::c1_c_(const dl_dcch_msg_type_c::c1_c_& other)
case types::rrc_conn_resume_r13:
c.init(other.c.get<rrc_conn_resume_r13_s>());
break;
- case types::spare3:
+ case types::dl_ded_msg_segment_r16:
+ c.init(other.c.get<dl_ded_msg_segment_r16_s>());
break;
case types::spare2:
break;
@@ -14794,7 +16797,8 @@ dl_dcch_msg_type_c::c1_c_& dl_dcch_msg_type_c::c1_c_::operator=(const dl_dcch_ms
case types::rrc_conn_resume_r13:
c.set(other.c.get<rrc_conn_resume_r13_s>());
break;
- case types::spare3:
+ case types::dl_ded_msg_segment_r16:
+ c.set(other.c.get<dl_ded_msg_segment_r16_s>());
break;
case types::spare2:
break;
@@ -14873,9 +16877,10 @@ rrc_conn_resume_r13_s& dl_dcch_msg_type_c::c1_c_::set_rrc_conn_resume_r13()
set(types::rrc_conn_resume_r13);
return c.get<rrc_conn_resume_r13_s>();
}
-void dl_dcch_msg_type_c::c1_c_::set_spare3()
+dl_ded_msg_segment_r16_s& dl_dcch_msg_type_c::c1_c_::set_dl_ded_msg_segment_r16()
{
- set(types::spare3);
+ set(types::dl_ded_msg_segment_r16);
+ return c.get<dl_ded_msg_segment_r16_s>();
}
void dl_dcch_msg_type_c::c1_c_::set_spare2()
{
@@ -14941,7 +16946,9 @@ void dl_dcch_msg_type_c::c1_c_::to_json(json_writer& j) const
j.write_fieldname("rrcConnectionResume-r13");
c.get<rrc_conn_resume_r13_s>().to_json(j);
break;
- case types::spare3:
+ case types::dl_ded_msg_segment_r16:
+ j.write_fieldname("dlDedicatedMessageSegment-r16");
+ c.get<dl_ded_msg_segment_r16_s>().to_json(j);
break;
case types::spare2:
break;
@@ -14995,7 +17002,8 @@ SRSASN_CODE dl_dcch_msg_type_c::c1_c_::pack(bit_ref& bref) const
case types::rrc_conn_resume_r13:
HANDLE_CODE(c.get<rrc_conn_resume_r13_s>().pack(bref));
break;
- case types::spare3:
+ case types::dl_ded_msg_segment_r16:
+ HANDLE_CODE(c.get<dl_ded_msg_segment_r16_s>().pack(bref));
break;
case types::spare2:
break;
@@ -15052,7 +17060,8 @@ SRSASN_CODE dl_dcch_msg_type_c::c1_c_::unpack(cbit_ref& bref)
case types::rrc_conn_resume_r13:
HANDLE_CODE(c.get<rrc_conn_resume_r13_s>().unpack(bref));
break;
- case types::spare3:
+ case types::dl_ded_msg_segment_r16:
+ HANDLE_CODE(c.get<dl_ded_msg_segment_r16_s>().unpack(bref));
break;
case types::spare2:
break;
diff --git a/lib/src/asn1/rrc/ho_cmd.cc b/lib/src/asn1/rrc/ho_cmd.cc
index f5c1970b3..f5eced7a0 100644
--- a/lib/src/asn1/rrc/ho_cmd.cc
+++ b/lib/src/asn1/rrc/ho_cmd.cc
@@ -258,6 +258,27 @@ void as_cfg_nr_v1570_s::to_json(json_writer& j) const
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
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[4] |= as_cfg_v1550.is_present();
group_flags[5] |= as_cfg_nr_v1570.is_present();
+ group_flags[6] |= as_cfg_nr_v1620.is_present();
group_flags.pack(bref);
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));
}
}
+ 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;
}
@@ -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));
if (ext) {
- ext_groups_unpacker_guard group_flags(6);
+ ext_groups_unpacker_guard group_flags(7);
group_flags.unpack(bref);
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));
}
}
+ 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;
}
@@ -665,6 +705,10 @@ void as_cfg_s::to_json(json_writer& j) const
j.write_fieldname("as-ConfigNR-v1570");
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();
}
@@ -1057,7 +1101,7 @@ SRSASN_CODE as_context_v1130_s::pack(bit_ref& bref) const
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(idc_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) {
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) {
HANDLE_CODE(mbms_interest_ind_r11.pack(bref));
}
- if (pwr_pref_ind_r11_present) {
- HANDLE_CODE(pwr_pref_ind_r11.pack(bref));
+ if (ue_assist_info_r11_present) {
+ HANDLE_CODE(ue_assist_info_r11.pack(bref));
}
if (ext) {
@@ -1108,7 +1152,7 @@ SRSASN_CODE as_context_v1130_s::unpack(cbit_ref& bref)
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(idc_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) {
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) {
HANDLE_CODE(mbms_interest_ind_r11.unpack(bref));
}
- if (pwr_pref_ind_r11_present) {
- HANDLE_CODE(pwr_pref_ind_r11.unpack(bref));
+ if (ue_assist_info_r11_present) {
+ HANDLE_CODE(ue_assist_info_r11.unpack(bref));
}
if (ext) {
@@ -1160,8 +1204,8 @@ void as_context_v1130_s::to_json(json_writer& j) const
if (mbms_interest_ind_r11_present) {
j.write_str("mbmsInterestIndication-r11", mbms_interest_ind_r11.to_string());
}
- if (pwr_pref_ind_r11_present) {
- j.write_str("powerPrefIndication-r11", pwr_pref_ind_r11.to_string());
+ if (ue_assist_info_r11_present) {
+ j.write_str("ueAssistanceInformation-r11", ue_assist_info_r11.to_string());
}
if (ext) {
if (sidelink_ue_info_r12_present) {
@@ -1207,6 +1251,162 @@ void as_context_v1320_s::to_json(json_writer& j) const
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
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;
}
+// 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
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) {
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;
}
@@ -1580,6 +2002,9 @@ SRSASN_CODE ho_prep_info_v1540_ies_s::unpack(cbit_ref& bref)
if (source_rb_cfg_intra5_gc_r15_present) {
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;
}
@@ -1591,8 +2016,7 @@ void ho_prep_info_v1540_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
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
{
static const char* options[] = {
- "rel9", "rel10", "rel11", "rel12", "v10j0", "v11e0", "v1280", "rel13", "rel14", "rel15"};
- return convert_enum_idx(options, 10, value, "ho_prep_info_v920_ies_s::ue_cfg_release_r9_e_");
+ "rel9", "rel10", "rel11", "rel12", "v10j0", "v11e0", "v1280", "rel13", "rel14", "rel15", "rel16", "rel17"};
+ return convert_enum_idx(options, 12, value, "ho_prep_info_v920_ies_s::ue_cfg_release_r9_e_");
}
// RRM-Config ::= SEQUENCE
diff --git a/lib/src/asn1/rrc/meascfg.cc b/lib/src/asn1/rrc/meascfg.cc
index 23ad861b5..3c9349ab0 100644
--- a/lib/src/asn1/rrc/meascfg.cc
+++ b/lib/src/asn1/rrc/meascfg.cc
@@ -36,6 +36,18 @@ int8_t q_offset_range_opts::to_number() const
return map_enum_number(options, 31, value, "q_offset_range_e");
}
+// RSS-MeasPowerBias-r16 ::= ENUMERATED
+const char* rss_meas_pwr_bias_r16_opts::to_string() const
+{
+ static const char* options[] = {"dB-6", "dB-3", "dB0", "dB3", "dB6", "dB9", "dB12", "rssNotUsed"};
+ return convert_enum_idx(options, 8, value, "rss_meas_pwr_bias_r16_e");
+}
+int8_t rss_meas_pwr_bias_r16_opts::to_number() const
+{
+ static const int8_t options[] = {-6, -3, 0, 3, 6, 9, 12};
+ return map_enum_number(options, 7, value, "rss_meas_pwr_bias_r16_e");
+}
+
// SpeedStateScaleFactors ::= SEQUENCE
SRSASN_CODE speed_state_scale_factors_s::pack(bit_ref& bref) const
{
@@ -103,290 +115,6 @@ uint16_t band_ind_geran_opts::to_number() const
return map_enum_number(options, 2, value, "band_ind_geran_e");
}
-// PreRegistrationInfoHRPD ::= SEQUENCE
-SRSASN_CODE pre_regist_info_hrpd_s::pack(bit_ref& bref) const
-{
- HANDLE_CODE(bref.pack(pre_regist_zone_id_present, 1));
- HANDLE_CODE(bref.pack(secondary_pre_regist_zone_id_list_present, 1));
-
- HANDLE_CODE(bref.pack(pre_regist_allowed, 1));
- if (pre_regist_zone_id_present) {
- HANDLE_CODE(pack_integer(bref, pre_regist_zone_id, (uint16_t)0u, (uint16_t)255u));
- }
- if (secondary_pre_regist_zone_id_list_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, secondary_pre_regist_zone_id_list, 1, 2, integer_packer<uint16_t>(0, 255)));
- }
-
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE pre_regist_info_hrpd_s::unpack(cbit_ref& bref)
-{
- HANDLE_CODE(bref.unpack(pre_regist_zone_id_present, 1));
- HANDLE_CODE(bref.unpack(secondary_pre_regist_zone_id_list_present, 1));
-
- HANDLE_CODE(bref.unpack(pre_regist_allowed, 1));
- if (pre_regist_zone_id_present) {
- HANDLE_CODE(unpack_integer(pre_regist_zone_id, bref, (uint16_t)0u, (uint16_t)255u));
- }
- if (secondary_pre_regist_zone_id_list_present) {
- HANDLE_CODE(unpack_dyn_seq_of(secondary_pre_regist_zone_id_list, bref, 1, 2, integer_packer<uint16_t>(0, 255)));
- }
-
- return SRSASN_SUCCESS;
-}
-void pre_regist_info_hrpd_s::to_json(json_writer& j) const
-{
- j.start_obj();
- j.write_bool("preRegistrationAllowed", pre_regist_allowed);
- if (pre_regist_zone_id_present) {
- j.write_int("preRegistrationZoneId", pre_regist_zone_id);
- }
- if (secondary_pre_regist_zone_id_list_present) {
- j.start_array("secondaryPreRegistrationZoneIdList");
- for (const auto& e1 : secondary_pre_regist_zone_id_list) {
- j.write_int(e1);
- }
- j.end_array();
- }
- j.end_obj();
-}
-
-// CarrierFreqsGERAN ::= SEQUENCE
-SRSASN_CODE carrier_freqs_geran_s::pack(bit_ref& bref) const
-{
- HANDLE_CODE(pack_integer(bref, start_arfcn, (uint16_t)0u, (uint16_t)1023u));
- HANDLE_CODE(band_ind.pack(bref));
- HANDLE_CODE(following_arfcns.pack(bref));
-
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE carrier_freqs_geran_s::unpack(cbit_ref& bref)
-{
- HANDLE_CODE(unpack_integer(start_arfcn, bref, (uint16_t)0u, (uint16_t)1023u));
- HANDLE_CODE(band_ind.unpack(bref));
- HANDLE_CODE(following_arfcns.unpack(bref));
-
- return SRSASN_SUCCESS;
-}
-void carrier_freqs_geran_s::to_json(json_writer& j) const
-{
- j.start_obj();
- j.write_int("startingARFCN", start_arfcn);
- j.write_str("bandIndicator", band_ind.to_string());
- j.write_fieldname("followingARFCNs");
- following_arfcns.to_json(j);
- j.end_obj();
-}
-bool carrier_freqs_geran_s::operator==(const carrier_freqs_geran_s& other) const
-{
- return start_arfcn == other.start_arfcn and band_ind == other.band_ind and following_arfcns == other.following_arfcns;
-}
-
-void carrier_freqs_geran_s::following_arfcns_c_::destroy_()
-{
- switch (type_) {
- case types::explicit_list_of_arfcns:
- c.destroy<explicit_list_of_arfcns_l>();
- break;
- case types::equally_spaced_arfcns:
- c.destroy<equally_spaced_arfcns_s_>();
- break;
- case types::variable_bit_map_of_arfcns:
- c.destroy<bounded_octstring<1, 16> >();
- break;
- default:
- break;
- }
-}
-void carrier_freqs_geran_s::following_arfcns_c_::set(types::options e)
-{
- destroy_();
- type_ = e;
- switch (type_) {
- case types::explicit_list_of_arfcns:
- c.init<explicit_list_of_arfcns_l>();
- break;
- case types::equally_spaced_arfcns:
- c.init<equally_spaced_arfcns_s_>();
- break;
- case types::variable_bit_map_of_arfcns:
- c.init<bounded_octstring<1, 16> >();
- break;
- case types::nulltype:
- break;
- default:
- log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
- }
-}
-carrier_freqs_geran_s::following_arfcns_c_::following_arfcns_c_(const carrier_freqs_geran_s::following_arfcns_c_& other)
-{
- type_ = other.type();
- switch (type_) {
- case types::explicit_list_of_arfcns:
- c.init(other.c.get<explicit_list_of_arfcns_l>());
- break;
- case types::equally_spaced_arfcns:
- c.init(other.c.get<equally_spaced_arfcns_s_>());
- break;
- case types::variable_bit_map_of_arfcns:
- c.init(other.c.get<bounded_octstring<1, 16> >());
- break;
- case types::nulltype:
- break;
- default:
- log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
- }
-}
-carrier_freqs_geran_s::following_arfcns_c_&
-carrier_freqs_geran_s::following_arfcns_c_::operator=(const carrier_freqs_geran_s::following_arfcns_c_& other)
-{
- if (this == &other) {
- return *this;
- }
- set(other.type());
- switch (type_) {
- case types::explicit_list_of_arfcns:
- c.set(other.c.get<explicit_list_of_arfcns_l>());
- break;
- case types::equally_spaced_arfcns:
- c.set(other.c.get<equally_spaced_arfcns_s_>());
- break;
- case types::variable_bit_map_of_arfcns:
- c.set(other.c.get<bounded_octstring<1, 16> >());
- break;
- case types::nulltype:
- break;
- default:
- log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
- }
-
- return *this;
-}
-explicit_list_of_arfcns_l& carrier_freqs_geran_s::following_arfcns_c_::set_explicit_list_of_arfcns()
-{
- set(types::explicit_list_of_arfcns);
- return c.get<explicit_list_of_arfcns_l>();
-}
-carrier_freqs_geran_s::following_arfcns_c_::equally_spaced_arfcns_s_&
-carrier_freqs_geran_s::following_arfcns_c_::set_equally_spaced_arfcns()
-{
- set(types::equally_spaced_arfcns);
- return c.get<equally_spaced_arfcns_s_>();
-}
-bounded_octstring<1, 16>& carrier_freqs_geran_s::following_arfcns_c_::set_variable_bit_map_of_arfcns()
-{
- set(types::variable_bit_map_of_arfcns);
- return c.get<bounded_octstring<1, 16> >();
-}
-void carrier_freqs_geran_s::following_arfcns_c_::to_json(json_writer& j) const
-{
- j.start_obj();
- switch (type_) {
- case types::explicit_list_of_arfcns:
- j.start_array("explicitListOfARFCNs");
- for (const auto& e1 : c.get<explicit_list_of_arfcns_l>()) {
- j.write_int(e1);
- }
- j.end_array();
- break;
- case types::equally_spaced_arfcns:
- j.write_fieldname("equallySpacedARFCNs");
- j.start_obj();
- j.write_int("arfcn-Spacing", c.get<equally_spaced_arfcns_s_>().arfcn_spacing);
- j.write_int("numberOfFollowingARFCNs", c.get<equally_spaced_arfcns_s_>().nof_following_arfcns);
- j.end_obj();
- break;
- case types::variable_bit_map_of_arfcns:
- j.write_str("variableBitMapOfARFCNs", c.get<bounded_octstring<1, 16> >().to_string());
- break;
- default:
- log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
- }
- j.end_obj();
-}
-SRSASN_CODE carrier_freqs_geran_s::following_arfcns_c_::pack(bit_ref& bref) const
-{
- type_.pack(bref);
- switch (type_) {
- case types::explicit_list_of_arfcns:
- HANDLE_CODE(pack_dyn_seq_of(bref, c.get<explicit_list_of_arfcns_l>(), 0, 31, integer_packer<uint16_t>(0, 1023)));
- break;
- case types::equally_spaced_arfcns:
- HANDLE_CODE(pack_integer(bref, c.get<equally_spaced_arfcns_s_>().arfcn_spacing, (uint8_t)1u, (uint8_t)8u));
- HANDLE_CODE(
- pack_integer(bref, c.get<equally_spaced_arfcns_s_>().nof_following_arfcns, (uint8_t)0u, (uint8_t)31u));
- break;
- case types::variable_bit_map_of_arfcns:
- HANDLE_CODE((c.get<bounded_octstring<1, 16> >().pack(bref)));
- break;
- default:
- log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
- return SRSASN_ERROR_ENCODE_FAIL;
- }
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE carrier_freqs_geran_s::following_arfcns_c_::unpack(cbit_ref& bref)
-{
- types e;
- e.unpack(bref);
- set(e);
- switch (type_) {
- case types::explicit_list_of_arfcns:
- HANDLE_CODE(
- unpack_dyn_seq_of(c.get<explicit_list_of_arfcns_l>(), bref, 0, 31, integer_packer<uint16_t>(0, 1023)));
- break;
- case types::equally_spaced_arfcns:
- HANDLE_CODE(unpack_integer(c.get<equally_spaced_arfcns_s_>().arfcn_spacing, bref, (uint8_t)1u, (uint8_t)8u));
- HANDLE_CODE(
- unpack_integer(c.get<equally_spaced_arfcns_s_>().nof_following_arfcns, bref, (uint8_t)0u, (uint8_t)31u));
- break;
- case types::variable_bit_map_of_arfcns:
- HANDLE_CODE((c.get<bounded_octstring<1, 16> >().unpack(bref)));
- break;
- default:
- log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
- return SRSASN_ERROR_DECODE_FAIL;
- }
- return SRSASN_SUCCESS;
-}
-bool carrier_freqs_geran_s::following_arfcns_c_::operator==(const following_arfcns_c_& other) const
-{
- if (type_ != other.type_) {
- return false;
- }
- switch (type_) {
- case types::explicit_list_of_arfcns:
- return c.get<explicit_list_of_arfcns_l>() == other.c.get<explicit_list_of_arfcns_l>();
- case types::equally_spaced_arfcns:
- return c.get<equally_spaced_arfcns_s_>().arfcn_spacing ==
- other.c.get<equally_spaced_arfcns_s_>().arfcn_spacing and
- c.get<equally_spaced_arfcns_s_>().nof_following_arfcns ==
- other.c.get<equally_spaced_arfcns_s_>().nof_following_arfcns;
- case types::variable_bit_map_of_arfcns:
- return c.get<bounded_octstring<1, 16> >() == other.c.get<bounded_octstring<1, 16> >();
- default:
- return true;
- }
- return true;
-}
-
-// CellReselectionSubPriority-r13 ::= ENUMERATED
-const char* cell_resel_sub_prio_r13_opts::to_string() const
-{
- static const char* options[] = {"oDot2", "oDot4", "oDot6", "oDot8"};
- return convert_enum_idx(options, 4, value, "cell_resel_sub_prio_r13_e");
-}
-float cell_resel_sub_prio_r13_opts::to_number() const
-{
- static const float options[] = {0.2, 0.4, 0.6, 0.8};
- return map_enum_number(options, 4, value, "cell_resel_sub_prio_r13_e");
-}
-const char* cell_resel_sub_prio_r13_opts::to_number_string() const
-{
- static const char* options[] = {"0.2", "0.4", "0.6", "0.8"};
- return convert_enum_idx(options, 4, value, "cell_resel_sub_prio_r13_e");
-}
-
// MTC-SSB-NR-r15 ::= SEQUENCE
SRSASN_CODE mtc_ssb_nr_r15_s::pack(bit_ref& bref) const
{
@@ -634,6 +362,54 @@ uint8_t mtc_ssb_nr_r15_s::ssb_dur_r15_opts::to_number() const
return map_enum_number(options, 5, value, "mtc_ssb_nr_r15_s::ssb_dur_r15_e_");
}
+// PreRegistrationInfoHRPD ::= SEQUENCE
+SRSASN_CODE pre_regist_info_hrpd_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pre_regist_zone_id_present, 1));
+ HANDLE_CODE(bref.pack(secondary_pre_regist_zone_id_list_present, 1));
+
+ HANDLE_CODE(bref.pack(pre_regist_allowed, 1));
+ if (pre_regist_zone_id_present) {
+ HANDLE_CODE(pack_integer(bref, pre_regist_zone_id, (uint16_t)0u, (uint16_t)255u));
+ }
+ if (secondary_pre_regist_zone_id_list_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, secondary_pre_regist_zone_id_list, 1, 2, integer_packer<uint16_t>(0, 255)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pre_regist_info_hrpd_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pre_regist_zone_id_present, 1));
+ HANDLE_CODE(bref.unpack(secondary_pre_regist_zone_id_list_present, 1));
+
+ HANDLE_CODE(bref.unpack(pre_regist_allowed, 1));
+ if (pre_regist_zone_id_present) {
+ HANDLE_CODE(unpack_integer(pre_regist_zone_id, bref, (uint16_t)0u, (uint16_t)255u));
+ }
+ if (secondary_pre_regist_zone_id_list_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(secondary_pre_regist_zone_id_list, bref, 1, 2, integer_packer<uint16_t>(0, 255)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void pre_regist_info_hrpd_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_bool("preRegistrationAllowed", pre_regist_allowed);
+ if (pre_regist_zone_id_present) {
+ j.write_int("preRegistrationZoneId", pre_regist_zone_id);
+ }
+ if (secondary_pre_regist_zone_id_list_present) {
+ j.start_array("secondaryPreRegistrationZoneIdList");
+ for (const auto& e1 : secondary_pre_regist_zone_id_list) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
// SS-RSSI-Measurement-r15 ::= SEQUENCE
SRSASN_CODE ss_rssi_meas_r15_s::pack(bit_ref& bref) const
{
@@ -893,6 +669,304 @@ bool thres_list_nr_r15_s::operator==(const thres_list_nr_r15_s& other) const
(not nr_sinr_r15_present or nr_sinr_r15 == other.nr_sinr_r15);
}
+// CarrierFreqsGERAN ::= SEQUENCE
+SRSASN_CODE carrier_freqs_geran_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, start_arfcn, (uint16_t)0u, (uint16_t)1023u));
+ HANDLE_CODE(band_ind.pack(bref));
+ HANDLE_CODE(following_arfcns.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE carrier_freqs_geran_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(start_arfcn, bref, (uint16_t)0u, (uint16_t)1023u));
+ HANDLE_CODE(band_ind.unpack(bref));
+ HANDLE_CODE(following_arfcns.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void carrier_freqs_geran_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("startingARFCN", start_arfcn);
+ j.write_str("bandIndicator", band_ind.to_string());
+ j.write_fieldname("followingARFCNs");
+ following_arfcns.to_json(j);
+ j.end_obj();
+}
+bool carrier_freqs_geran_s::operator==(const carrier_freqs_geran_s& other) const
+{
+ return start_arfcn == other.start_arfcn and band_ind == other.band_ind and following_arfcns == other.following_arfcns;
+}
+
+void carrier_freqs_geran_s::following_arfcns_c_::destroy_()
+{
+ switch (type_) {
+ case types::explicit_list_of_arfcns:
+ c.destroy<explicit_list_of_arfcns_l>();
+ break;
+ case types::equally_spaced_arfcns:
+ c.destroy<equally_spaced_arfcns_s_>();
+ break;
+ case types::variable_bit_map_of_arfcns:
+ c.destroy<bounded_octstring<1, 16> >();
+ break;
+ default:
+ break;
+ }
+}
+void carrier_freqs_geran_s::following_arfcns_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::explicit_list_of_arfcns:
+ c.init<explicit_list_of_arfcns_l>();
+ break;
+ case types::equally_spaced_arfcns:
+ c.init<equally_spaced_arfcns_s_>();
+ break;
+ case types::variable_bit_map_of_arfcns:
+ c.init<bounded_octstring<1, 16> >();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
+ }
+}
+carrier_freqs_geran_s::following_arfcns_c_::following_arfcns_c_(const carrier_freqs_geran_s::following_arfcns_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::explicit_list_of_arfcns:
+ c.init(other.c.get<explicit_list_of_arfcns_l>());
+ break;
+ case types::equally_spaced_arfcns:
+ c.init(other.c.get<equally_spaced_arfcns_s_>());
+ break;
+ case types::variable_bit_map_of_arfcns:
+ c.init(other.c.get<bounded_octstring<1, 16> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
+ }
+}
+carrier_freqs_geran_s::following_arfcns_c_&
+carrier_freqs_geran_s::following_arfcns_c_::operator=(const carrier_freqs_geran_s::following_arfcns_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::explicit_list_of_arfcns:
+ c.set(other.c.get<explicit_list_of_arfcns_l>());
+ break;
+ case types::equally_spaced_arfcns:
+ c.set(other.c.get<equally_spaced_arfcns_s_>());
+ break;
+ case types::variable_bit_map_of_arfcns:
+ c.set(other.c.get<bounded_octstring<1, 16> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
+ }
+
+ return *this;
+}
+explicit_list_of_arfcns_l& carrier_freqs_geran_s::following_arfcns_c_::set_explicit_list_of_arfcns()
+{
+ set(types::explicit_list_of_arfcns);
+ return c.get<explicit_list_of_arfcns_l>();
+}
+carrier_freqs_geran_s::following_arfcns_c_::equally_spaced_arfcns_s_&
+carrier_freqs_geran_s::following_arfcns_c_::set_equally_spaced_arfcns()
+{
+ set(types::equally_spaced_arfcns);
+ return c.get<equally_spaced_arfcns_s_>();
+}
+bounded_octstring<1, 16>& carrier_freqs_geran_s::following_arfcns_c_::set_variable_bit_map_of_arfcns()
+{
+ set(types::variable_bit_map_of_arfcns);
+ return c.get<bounded_octstring<1, 16> >();
+}
+void carrier_freqs_geran_s::following_arfcns_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::explicit_list_of_arfcns:
+ j.start_array("explicitListOfARFCNs");
+ for (const auto& e1 : c.get<explicit_list_of_arfcns_l>()) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ break;
+ case types::equally_spaced_arfcns:
+ j.write_fieldname("equallySpacedARFCNs");
+ j.start_obj();
+ j.write_int("arfcn-Spacing", c.get<equally_spaced_arfcns_s_>().arfcn_spacing);
+ j.write_int("numberOfFollowingARFCNs", c.get<equally_spaced_arfcns_s_>().nof_following_arfcns);
+ j.end_obj();
+ break;
+ case types::variable_bit_map_of_arfcns:
+ j.write_str("variableBitMapOfARFCNs", c.get<bounded_octstring<1, 16> >().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE carrier_freqs_geran_s::following_arfcns_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::explicit_list_of_arfcns:
+ HANDLE_CODE(pack_dyn_seq_of(bref, c.get<explicit_list_of_arfcns_l>(), 0, 31, integer_packer<uint16_t>(0, 1023)));
+ break;
+ case types::equally_spaced_arfcns:
+ HANDLE_CODE(pack_integer(bref, c.get<equally_spaced_arfcns_s_>().arfcn_spacing, (uint8_t)1u, (uint8_t)8u));
+ HANDLE_CODE(
+ pack_integer(bref, c.get<equally_spaced_arfcns_s_>().nof_following_arfcns, (uint8_t)0u, (uint8_t)31u));
+ break;
+ case types::variable_bit_map_of_arfcns:
+ HANDLE_CODE((c.get<bounded_octstring<1, 16> >().pack(bref)));
+ break;
+ default:
+ log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE carrier_freqs_geran_s::following_arfcns_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::explicit_list_of_arfcns:
+ HANDLE_CODE(
+ unpack_dyn_seq_of(c.get<explicit_list_of_arfcns_l>(), bref, 0, 31, integer_packer<uint16_t>(0, 1023)));
+ break;
+ case types::equally_spaced_arfcns:
+ HANDLE_CODE(unpack_integer(c.get<equally_spaced_arfcns_s_>().arfcn_spacing, bref, (uint8_t)1u, (uint8_t)8u));
+ HANDLE_CODE(
+ unpack_integer(c.get<equally_spaced_arfcns_s_>().nof_following_arfcns, bref, (uint8_t)0u, (uint8_t)31u));
+ break;
+ case types::variable_bit_map_of_arfcns:
+ HANDLE_CODE((c.get<bounded_octstring<1, 16> >().unpack(bref)));
+ break;
+ default:
+ log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+bool carrier_freqs_geran_s::following_arfcns_c_::operator==(const following_arfcns_c_& other) const
+{
+ if (type_ != other.type_) {
+ return false;
+ }
+ switch (type_) {
+ case types::explicit_list_of_arfcns:
+ return c.get<explicit_list_of_arfcns_l>() == other.c.get<explicit_list_of_arfcns_l>();
+ case types::equally_spaced_arfcns:
+ return c.get<equally_spaced_arfcns_s_>().arfcn_spacing ==
+ other.c.get<equally_spaced_arfcns_s_>().arfcn_spacing and
+ c.get<equally_spaced_arfcns_s_>().nof_following_arfcns ==
+ other.c.get<equally_spaced_arfcns_s_>().nof_following_arfcns;
+ case types::variable_bit_map_of_arfcns:
+ return c.get<bounded_octstring<1, 16> >() == other.c.get<bounded_octstring<1, 16> >();
+ default:
+ return true;
+ }
+ return true;
+}
+
+// CellReselectionSubPriority-r13 ::= ENUMERATED
+const char* cell_resel_sub_prio_r13_opts::to_string() const
+{
+ static const char* options[] = {"oDot2", "oDot4", "oDot6", "oDot8"};
+ return convert_enum_idx(options, 4, value, "cell_resel_sub_prio_r13_e");
+}
+float cell_resel_sub_prio_r13_opts::to_number() const
+{
+ static const float options[] = {0.2, 0.4, 0.6, 0.8};
+ return map_enum_number(options, 4, value, "cell_resel_sub_prio_r13_e");
+}
+const char* cell_resel_sub_prio_r13_opts::to_number_string() const
+{
+ static const char* options[] = {"0.2", "0.4", "0.6", "0.8"};
+ return convert_enum_idx(options, 4, value, "cell_resel_sub_prio_r13_e");
+}
+
+// RSS-ConfigCarrierInfo-r16 ::= SEQUENCE
+SRSASN_CODE rss_cfg_carrier_info_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(nb_idx_r16.pack(bref));
+ HANDLE_CODE(time_offset_granularity_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rss_cfg_carrier_info_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(nb_idx_r16.unpack(bref));
+ HANDLE_CODE(time_offset_granularity_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void rss_cfg_carrier_info_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("narrowbandIndex-r16", nb_idx_r16.to_string());
+ j.write_str("timeOffsetGranularity-r16", time_offset_granularity_r16.to_string());
+ j.end_obj();
+}
+bool rss_cfg_carrier_info_r16_s::operator==(const rss_cfg_carrier_info_r16_s& other) const
+{
+ return nb_idx_r16 == other.nb_idx_r16 and time_offset_granularity_r16 == other.time_offset_granularity_r16;
+}
+
+const char* rss_cfg_carrier_info_r16_s::time_offset_granularity_r16_opts::to_string() const
+{
+ static const char* options[] = {"g1", "g2", "g4", "g8", "g16", "g32", "g64", "g128"};
+ return convert_enum_idx(options, 8, value, "rss_cfg_carrier_info_r16_s::time_offset_granularity_r16_e_");
+}
+uint8_t rss_cfg_carrier_info_r16_s::time_offset_granularity_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 8, 16, 32, 64, 128};
+ return map_enum_number(options, 8, value, "rss_cfg_carrier_info_r16_s::time_offset_granularity_r16_e_");
+}
+
+// SSB-PositionQCL-RelationNR-r16 ::= ENUMERATED
+const char* ssb_position_qcl_relation_nr_r16_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n4", "n8"};
+ return convert_enum_idx(options, 4, value, "ssb_position_qcl_relation_nr_r16_e");
+}
+uint8_t ssb_position_qcl_relation_nr_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 8};
+ return map_enum_number(options, 4, value, "ssb_position_qcl_relation_nr_r16_e");
+}
+
+// SSB-PositionQCL-RelationNR-r17 ::= ENUMERATED
+const char* ssb_position_qcl_relation_nr_r17_opts::to_string() const
+{
+ static const char* options[] = {"n32", "n64"};
+ return convert_enum_idx(options, 2, value, "ssb_position_qcl_relation_nr_r17_e");
+}
+uint8_t ssb_position_qcl_relation_nr_r17_opts::to_number() const
+{
+ static const uint8_t options[] = {32, 64};
+ return map_enum_number(options, 2, value, "ssb_position_qcl_relation_nr_r17_e");
+}
+
// MobilityStateParameters ::= SEQUENCE
SRSASN_CODE mob_state_params_s::pack(bit_ref& bref) const
{
@@ -971,6 +1045,30 @@ bool carrier_freq_cdma2000_s::operator==(const carrier_freq_cdma2000_s& other) c
return band_class == other.band_class and arfcn == other.arfcn;
}
+// CellsToAddMod-v1610 ::= SEQUENCE
+SRSASN_CODE cells_to_add_mod_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(rss_meas_pwr_bias_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cells_to_add_mod_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(rss_meas_pwr_bias_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void cells_to_add_mod_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("rss-MeasPowerBias-r16", rss_meas_pwr_bias_r16.to_string());
+ j.end_obj();
+}
+bool cells_to_add_mod_v1610_s::operator==(const cells_to_add_mod_v1610_s& other) const
+{
+ return rss_meas_pwr_bias_r16 == other.rss_meas_pwr_bias_r16;
+}
+
// MeasCSI-RS-Config-r12 ::= SEQUENCE
SRSASN_CODE meas_csi_rs_cfg_r12_s::pack(bit_ref& bref) const
{
@@ -1052,60 +1150,114 @@ bool pci_range_utra_fdd_r9_s::operator==(const pci_range_utra_fdd_r9_s& other) c
(not range_r9_present or range_r9 == other.range_r9);
}
-// AltTTT-CellsToAddMod-r12 ::= SEQUENCE
-SRSASN_CODE alt_ttt_cells_to_add_mod_r12_s::pack(bit_ref& bref) const
+// SSB-PositionQCL-CellsToAddNR-r16 ::= SEQUENCE
+SRSASN_CODE ssb_position_qcl_cells_to_add_nr_r16_s::pack(bit_ref& bref) const
{
- HANDLE_CODE(pack_integer(bref, cell_idx_r12, (uint8_t)1u, (uint8_t)32u));
- HANDLE_CODE(pci_range_r12.pack(bref));
+ HANDLE_CODE(pack_integer(bref, pci_r16, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(ssb_position_qcl_nr_r16.pack(bref));
return SRSASN_SUCCESS;
}
-SRSASN_CODE alt_ttt_cells_to_add_mod_r12_s::unpack(cbit_ref& bref)
+SRSASN_CODE ssb_position_qcl_cells_to_add_nr_r16_s::unpack(cbit_ref& bref)
{
- HANDLE_CODE(unpack_integer(cell_idx_r12, bref, (uint8_t)1u, (uint8_t)32u));
- HANDLE_CODE(pci_range_r12.unpack(bref));
+ HANDLE_CODE(unpack_integer(pci_r16, bref, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(ssb_position_qcl_nr_r16.unpack(bref));
return SRSASN_SUCCESS;
}
-void alt_ttt_cells_to_add_mod_r12_s::to_json(json_writer& j) const
+void ssb_position_qcl_cells_to_add_nr_r16_s::to_json(json_writer& j) const
{
j.start_obj();
- j.write_int("cellIndex-r12", cell_idx_r12);
- j.write_fieldname("physCellIdRange-r12");
- pci_range_r12.to_json(j);
+ j.write_int("physCellId-r16", pci_r16);
+ j.write_str("ssb-PositionQCL-NR-r16", ssb_position_qcl_nr_r16.to_string());
j.end_obj();
}
-bool alt_ttt_cells_to_add_mod_r12_s::operator==(const alt_ttt_cells_to_add_mod_r12_s& other) const
+bool ssb_position_qcl_cells_to_add_nr_r16_s::operator==(const ssb_position_qcl_cells_to_add_nr_r16_s& other) const
{
- return cell_idx_r12 == other.cell_idx_r12 and pci_range_r12 == other.pci_range_r12;
+ return pci_r16 == other.pci_r16 and ssb_position_qcl_nr_r16 == other.ssb_position_qcl_nr_r16;
}
-// BlackCellsToAddMod ::= SEQUENCE
-SRSASN_CODE black_cells_to_add_mod_s::pack(bit_ref& bref) const
+// SSB-PositionQCL-CellsToAddNR-r17 ::= SEQUENCE
+SRSASN_CODE ssb_position_qcl_cells_to_add_nr_r17_s::pack(bit_ref& bref) const
{
- HANDLE_CODE(pack_integer(bref, cell_idx, (uint8_t)1u, (uint8_t)32u));
- HANDLE_CODE(pci_range.pack(bref));
+ HANDLE_CODE(pack_integer(bref, pci_nr_r17, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(ssb_position_qcl_nr_r17.pack(bref));
return SRSASN_SUCCESS;
}
-SRSASN_CODE black_cells_to_add_mod_s::unpack(cbit_ref& bref)
+SRSASN_CODE ssb_position_qcl_cells_to_add_nr_r17_s::unpack(cbit_ref& bref)
{
- HANDLE_CODE(unpack_integer(cell_idx, bref, (uint8_t)1u, (uint8_t)32u));
- HANDLE_CODE(pci_range.unpack(bref));
+ HANDLE_CODE(unpack_integer(pci_nr_r17, bref, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(ssb_position_qcl_nr_r17.unpack(bref));
return SRSASN_SUCCESS;
}
-void black_cells_to_add_mod_s::to_json(json_writer& j) const
+void ssb_position_qcl_cells_to_add_nr_r17_s::to_json(json_writer& j) const
{
j.start_obj();
- j.write_int("cellIndex", cell_idx);
- j.write_fieldname("physCellIdRange");
- pci_range.to_json(j);
+ j.write_int("physCellIdNR-r17", pci_nr_r17);
+ j.write_str("ssb-PositionQCL-NR-r17", ssb_position_qcl_nr_r17.to_string());
j.end_obj();
}
-bool black_cells_to_add_mod_s::operator==(const black_cells_to_add_mod_s& other) const
+bool ssb_position_qcl_cells_to_add_nr_r17_s::operator==(const ssb_position_qcl_cells_to_add_nr_r17_s& other) const
{
- return cell_idx == other.cell_idx and pci_range == other.pci_range;
+ return pci_nr_r17 == other.pci_nr_r17 and ssb_position_qcl_nr_r17 == other.ssb_position_qcl_nr_r17;
+}
+
+// AllowedCellsToAddMod-r13 ::= SEQUENCE
+SRSASN_CODE allowed_cells_to_add_mod_r13_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, cell_idx_r13, (uint8_t)1u, (uint8_t)32u));
+ HANDLE_CODE(pci_range_r13.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE allowed_cells_to_add_mod_r13_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(cell_idx_r13, bref, (uint8_t)1u, (uint8_t)32u));
+ HANDLE_CODE(pci_range_r13.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void allowed_cells_to_add_mod_r13_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("cellIndex-r13", cell_idx_r13);
+ j.write_fieldname("physCellIdRange-r13");
+ pci_range_r13.to_json(j);
+ j.end_obj();
+}
+bool allowed_cells_to_add_mod_r13_s::operator==(const allowed_cells_to_add_mod_r13_s& other) const
+{
+ return cell_idx_r13 == other.cell_idx_r13 and pci_range_r13 == other.pci_range_r13;
+}
+
+// AltTTT-CellsToAddMod-r12 ::= SEQUENCE
+SRSASN_CODE alt_ttt_cells_to_add_mod_r12_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, cell_idx_r12, (uint8_t)1u, (uint8_t)32u));
+ HANDLE_CODE(pci_range_r12.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE alt_ttt_cells_to_add_mod_r12_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(cell_idx_r12, bref, (uint8_t)1u, (uint8_t)32u));
+ HANDLE_CODE(pci_range_r12.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void alt_ttt_cells_to_add_mod_r12_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("cellIndex-r12", cell_idx_r12);
+ j.write_fieldname("physCellIdRange-r12");
+ pci_range_r12.to_json(j);
+ j.end_obj();
+}
+bool alt_ttt_cells_to_add_mod_r12_s::operator==(const alt_ttt_cells_to_add_mod_r12_s& other) const
+{
+ return cell_idx_r12 == other.cell_idx_r12 and pci_range_r12 == other.pci_range_r12;
}
// CellsToAddMod ::= SEQUENCE
@@ -1192,6 +1344,37 @@ bool cells_to_add_mod_nr_r15_s::operator==(const cells_to_add_mod_nr_r15_s& othe
return cell_idx_r15 == other.cell_idx_r15 and pci_r15 == other.pci_r15;
}
+// CellsToAddModNR-r16 ::= SEQUENCE
+SRSASN_CODE cells_to_add_mod_nr_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, cell_idx_r16, (uint8_t)1u, (uint8_t)32u));
+ HANDLE_CODE(pack_integer(bref, pci_r16, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(cell_individual_offset_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cells_to_add_mod_nr_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(cell_idx_r16, bref, (uint8_t)1u, (uint8_t)32u));
+ HANDLE_CODE(unpack_integer(pci_r16, bref, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(cell_individual_offset_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void cells_to_add_mod_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("cellIndex-r16", cell_idx_r16);
+ j.write_int("physCellId-r16", pci_r16);
+ j.write_str("cellIndividualOffset-r16", cell_individual_offset_r16.to_string());
+ j.end_obj();
+}
+bool cells_to_add_mod_nr_r16_s::operator==(const cells_to_add_mod_nr_r16_s& other) const
+{
+ return cell_idx_r16 == other.cell_idx_r16 and pci_r16 == other.pci_r16 and
+ cell_individual_offset_r16 == other.cell_individual_offset_r16;
+}
+
// CellsToAddModUTRA-FDD ::= SEQUENCE
SRSASN_CODE cells_to_add_mod_utra_fdd_s::pack(bit_ref& bref) const
{
@@ -1246,32 +1429,319 @@ bool cells_to_add_mod_utra_tdd_s::operator==(const cells_to_add_mod_utra_tdd_s&
return cell_idx == other.cell_idx and pci == other.pci;
}
-// WhiteCellsToAddMod-r13 ::= SEQUENCE
-SRSASN_CODE white_cells_to_add_mod_r13_s::pack(bit_ref& bref) const
+// ExcludedCellsToAddMod ::= SEQUENCE
+SRSASN_CODE excluded_cells_to_add_mod_s::pack(bit_ref& bref) const
{
- HANDLE_CODE(pack_integer(bref, cell_idx_r13, (uint8_t)1u, (uint8_t)32u));
- HANDLE_CODE(pci_range_r13.pack(bref));
+ HANDLE_CODE(pack_integer(bref, cell_idx, (uint8_t)1u, (uint8_t)32u));
+ HANDLE_CODE(pci_range.pack(bref));
return SRSASN_SUCCESS;
}
-SRSASN_CODE white_cells_to_add_mod_r13_s::unpack(cbit_ref& bref)
+SRSASN_CODE excluded_cells_to_add_mod_s::unpack(cbit_ref& bref)
{
- HANDLE_CODE(unpack_integer(cell_idx_r13, bref, (uint8_t)1u, (uint8_t)32u));
- HANDLE_CODE(pci_range_r13.unpack(bref));
+ HANDLE_CODE(unpack_integer(cell_idx, bref, (uint8_t)1u, (uint8_t)32u));
+ HANDLE_CODE(pci_range.unpack(bref));
return SRSASN_SUCCESS;
}
-void white_cells_to_add_mod_r13_s::to_json(json_writer& j) const
+void excluded_cells_to_add_mod_s::to_json(json_writer& j) const
{
j.start_obj();
- j.write_int("cellIndex-r13", cell_idx_r13);
- j.write_fieldname("physCellIdRange-r13");
- pci_range_r13.to_json(j);
+ j.write_int("cellIndex", cell_idx);
+ j.write_fieldname("physCellIdRange");
+ pci_range.to_json(j);
j.end_obj();
}
-bool white_cells_to_add_mod_r13_s::operator==(const white_cells_to_add_mod_r13_s& other) const
+bool excluded_cells_to_add_mod_s::operator==(const excluded_cells_to_add_mod_s& other) const
{
- return cell_idx_r13 == other.cell_idx_r13 and pci_range_r13 == other.pci_range_r13;
+ return cell_idx == other.cell_idx and pci_range == other.pci_range;
+}
+
+// ThresholdEUTRA ::= CHOICE
+void thres_eutra_c::destroy_() {}
+void thres_eutra_c::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+}
+thres_eutra_c::thres_eutra_c(const thres_eutra_c& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::thres_rsrp:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::thres_rsrq:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "thres_eutra_c");
+ }
+}
+thres_eutra_c& thres_eutra_c::operator=(const thres_eutra_c& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::thres_rsrp:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::thres_rsrq:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "thres_eutra_c");
+ }
+
+ return *this;
+}
+uint8_t& thres_eutra_c::set_thres_rsrp()
+{
+ set(types::thres_rsrp);
+ return c.get<uint8_t>();
+}
+uint8_t& thres_eutra_c::set_thres_rsrq()
+{
+ set(types::thres_rsrq);
+ return c.get<uint8_t>();
+}
+void thres_eutra_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::thres_rsrp:
+ j.write_int("threshold-RSRP", c.get<uint8_t>());
+ break;
+ case types::thres_rsrq:
+ j.write_int("threshold-RSRQ", c.get<uint8_t>());
+ break;
+ default:
+ log_invalid_choice_id(type_, "thres_eutra_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE thres_eutra_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::thres_rsrp:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)97u));
+ break;
+ case types::thres_rsrq:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)34u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "thres_eutra_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE thres_eutra_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::thres_rsrp:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)97u));
+ break;
+ case types::thres_rsrq:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)34u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "thres_eutra_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+bool thres_eutra_c::operator==(const thres_eutra_c& other) const
+{
+ if (type_ != other.type_) {
+ return false;
+ }
+ switch (type_) {
+ case types::thres_rsrp:
+ return c.get<uint8_t>() == other.c.get<uint8_t>();
+ case types::thres_rsrq:
+ return c.get<uint8_t>() == other.c.get<uint8_t>();
+ default:
+ return true;
+ }
+ return true;
+}
+
+// ThresholdNR-r15 ::= CHOICE
+void thres_nr_r15_c::destroy_() {}
+void thres_nr_r15_c::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+}
+thres_nr_r15_c::thres_nr_r15_c(const thres_nr_r15_c& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::nr_rsrp_r15:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::nr_rsrq_r15:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::nr_sinr_r15:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "thres_nr_r15_c");
+ }
+}
+thres_nr_r15_c& thres_nr_r15_c::operator=(const thres_nr_r15_c& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::nr_rsrp_r15:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::nr_rsrq_r15:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::nr_sinr_r15:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "thres_nr_r15_c");
+ }
+
+ return *this;
+}
+uint8_t& thres_nr_r15_c::set_nr_rsrp_r15()
+{
+ set(types::nr_rsrp_r15);
+ return c.get<uint8_t>();
+}
+uint8_t& thres_nr_r15_c::set_nr_rsrq_r15()
+{
+ set(types::nr_rsrq_r15);
+ return c.get<uint8_t>();
+}
+uint8_t& thres_nr_r15_c::set_nr_sinr_r15()
+{
+ set(types::nr_sinr_r15);
+ return c.get<uint8_t>();
+}
+void thres_nr_r15_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::nr_rsrp_r15:
+ j.write_int("nr-RSRP-r15", c.get<uint8_t>());
+ break;
+ case types::nr_rsrq_r15:
+ j.write_int("nr-RSRQ-r15", c.get<uint8_t>());
+ break;
+ case types::nr_sinr_r15:
+ j.write_int("nr-SINR-r15", c.get<uint8_t>());
+ break;
+ default:
+ log_invalid_choice_id(type_, "thres_nr_r15_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE thres_nr_r15_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::nr_rsrp_r15:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
+ break;
+ case types::nr_rsrq_r15:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
+ break;
+ case types::nr_sinr_r15:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "thres_nr_r15_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE thres_nr_r15_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::nr_rsrp_r15:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
+ break;
+ case types::nr_rsrq_r15:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
+ break;
+ case types::nr_sinr_r15:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "thres_nr_r15_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+bool thres_nr_r15_c::operator==(const thres_nr_r15_c& other) const
+{
+ if (type_ != other.type_) {
+ return false;
+ }
+ switch (type_) {
+ case types::nr_rsrp_r15:
+ return c.get<uint8_t>() == other.c.get<uint8_t>();
+ case types::nr_rsrq_r15:
+ return c.get<uint8_t>() == other.c.get<uint8_t>();
+ case types::nr_sinr_r15:
+ return c.get<uint8_t>() == other.c.get<uint8_t>();
+ default:
+ return true;
+ }
+ return true;
+}
+
+// TimeToTrigger ::= ENUMERATED
+const char* time_to_trigger_opts::to_string() const
+{
+ static const char* options[] = {"ms0",
+ "ms40",
+ "ms64",
+ "ms80",
+ "ms100",
+ "ms128",
+ "ms160",
+ "ms256",
+ "ms320",
+ "ms480",
+ "ms512",
+ "ms640",
+ "ms1024",
+ "ms1280",
+ "ms2560",
+ "ms5120"};
+ return convert_enum_idx(options, 16, value, "time_to_trigger_e");
+}
+uint16_t time_to_trigger_opts::to_number() const
+{
+ static const uint16_t options[] = {0, 40, 64, 80, 100, 128, 160, 256, 320, 480, 512, 640, 1024, 1280, 2560, 5120};
+ return map_enum_number(options, 16, value, "time_to_trigger_e");
}
// BT-NameListConfig-r15 ::= CHOICE
@@ -1394,6 +1864,271 @@ bool csg_allowed_report_cells_r9_s::operator==(const csg_allowed_report_cells_r9
(not pci_range_utra_fdd_list_r9_present or pci_range_utra_fdd_list_r9 == other.pci_range_utra_fdd_list_r9);
}
+// CondReconfigurationTriggerEUTRA-r16 ::= SEQUENCE
+SRSASN_CODE cond_recfg_trigger_eutra_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(cond_event_id_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cond_recfg_trigger_eutra_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(cond_event_id_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void cond_recfg_trigger_eutra_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("condEventId-r16");
+ cond_event_id_r16.to_json(j);
+ j.end_obj();
+}
+bool cond_recfg_trigger_eutra_r16_s::operator==(const cond_recfg_trigger_eutra_r16_s& other) const
+{
+ return cond_event_id_r16 == other.cond_event_id_r16;
+}
+
+void cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::cond_event_a3_r16:
+ c.destroy<cond_event_a3_r16_s_>();
+ break;
+ case types::cond_event_a5_r16:
+ c.destroy<cond_event_a5_r16_s_>();
+ break;
+ default:
+ break;
+ }
+}
+void cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::cond_event_a3_r16:
+ c.init<cond_event_a3_r16_s_>();
+ break;
+ case types::cond_event_a5_r16:
+ c.init<cond_event_a5_r16_s_>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_");
+ }
+}
+cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::cond_event_id_r16_c_(
+ const cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::cond_event_a3_r16:
+ c.init(other.c.get<cond_event_a3_r16_s_>());
+ break;
+ case types::cond_event_a5_r16:
+ c.init(other.c.get<cond_event_a5_r16_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_");
+ }
+}
+cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_& cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::operator=(
+ const cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::cond_event_a3_r16:
+ c.set(other.c.get<cond_event_a3_r16_s_>());
+ break;
+ case types::cond_event_a5_r16:
+ c.set(other.c.get<cond_event_a5_r16_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_");
+ }
+
+ return *this;
+}
+cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::cond_event_a3_r16_s_&
+cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::set_cond_event_a3_r16()
+{
+ set(types::cond_event_a3_r16);
+ return c.get<cond_event_a3_r16_s_>();
+}
+cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::cond_event_a5_r16_s_&
+cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::set_cond_event_a5_r16()
+{
+ set(types::cond_event_a5_r16);
+ return c.get<cond_event_a5_r16_s_>();
+}
+void cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::cond_event_a3_r16:
+ j.write_fieldname("condEventA3-r16");
+ j.start_obj();
+ j.write_int("a3-Offset-r16", c.get<cond_event_a3_r16_s_>().a3_offset_r16);
+ j.write_int("hysteresis-r16", c.get<cond_event_a3_r16_s_>().hysteresis_r16);
+ j.write_str("timeToTrigger-r16", c.get<cond_event_a3_r16_s_>().time_to_trigger_r16.to_string());
+ j.end_obj();
+ break;
+ case types::cond_event_a5_r16:
+ j.write_fieldname("condEventA5-r16");
+ j.start_obj();
+ j.write_fieldname("a5-Threshold1-r16");
+ c.get<cond_event_a5_r16_s_>().a5_thres1_r16.to_json(j);
+ j.write_fieldname("a5-Threshold2-r16");
+ c.get<cond_event_a5_r16_s_>().a5_thres2_r16.to_json(j);
+ j.write_int("hysteresis-r16", c.get<cond_event_a5_r16_s_>().hysteresis_r16);
+ j.write_str("timeToTrigger-r16", c.get<cond_event_a5_r16_s_>().time_to_trigger_r16.to_string());
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::cond_event_a3_r16:
+ HANDLE_CODE(pack_integer(bref, c.get<cond_event_a3_r16_s_>().a3_offset_r16, (int8_t)-30, (int8_t)30));
+ HANDLE_CODE(pack_integer(bref, c.get<cond_event_a3_r16_s_>().hysteresis_r16, (uint8_t)0u, (uint8_t)30u));
+ HANDLE_CODE(c.get<cond_event_a3_r16_s_>().time_to_trigger_r16.pack(bref));
+ break;
+ case types::cond_event_a5_r16:
+ HANDLE_CODE(c.get<cond_event_a5_r16_s_>().a5_thres1_r16.pack(bref));
+ HANDLE_CODE(c.get<cond_event_a5_r16_s_>().a5_thres2_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, c.get<cond_event_a5_r16_s_>().hysteresis_r16, (uint8_t)0u, (uint8_t)30u));
+ HANDLE_CODE(c.get<cond_event_a5_r16_s_>().time_to_trigger_r16.pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::cond_event_a3_r16:
+ HANDLE_CODE(unpack_integer(c.get<cond_event_a3_r16_s_>().a3_offset_r16, bref, (int8_t)-30, (int8_t)30));
+ HANDLE_CODE(unpack_integer(c.get<cond_event_a3_r16_s_>().hysteresis_r16, bref, (uint8_t)0u, (uint8_t)30u));
+ HANDLE_CODE(c.get<cond_event_a3_r16_s_>().time_to_trigger_r16.unpack(bref));
+ break;
+ case types::cond_event_a5_r16:
+ HANDLE_CODE(c.get<cond_event_a5_r16_s_>().a5_thres1_r16.unpack(bref));
+ HANDLE_CODE(c.get<cond_event_a5_r16_s_>().a5_thres2_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(c.get<cond_event_a5_r16_s_>().hysteresis_r16, bref, (uint8_t)0u, (uint8_t)30u));
+ HANDLE_CODE(c.get<cond_event_a5_r16_s_>().time_to_trigger_r16.unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+bool cond_recfg_trigger_eutra_r16_s::cond_event_id_r16_c_::operator==(const cond_event_id_r16_c_& other) const
+{
+ if (type_ != other.type_) {
+ return false;
+ }
+ switch (type_) {
+ case types::cond_event_a3_r16:
+ return c.get<cond_event_a3_r16_s_>().a3_offset_r16 == other.c.get<cond_event_a3_r16_s_>().a3_offset_r16 and
+ c.get<cond_event_a3_r16_s_>().hysteresis_r16 == other.c.get<cond_event_a3_r16_s_>().hysteresis_r16 and
+ c.get<cond_event_a3_r16_s_>().time_to_trigger_r16 ==
+ other.c.get<cond_event_a3_r16_s_>().time_to_trigger_r16;
+ case types::cond_event_a5_r16:
+ return c.get<cond_event_a5_r16_s_>().a5_thres1_r16 == other.c.get<cond_event_a5_r16_s_>().a5_thres1_r16 and
+ c.get<cond_event_a5_r16_s_>().a5_thres2_r16 == other.c.get<cond_event_a5_r16_s_>().a5_thres2_r16 and
+ c.get<cond_event_a5_r16_s_>().hysteresis_r16 == other.c.get<cond_event_a5_r16_s_>().hysteresis_r16 and
+ c.get<cond_event_a5_r16_s_>().time_to_trigger_r16 ==
+ other.c.get<cond_event_a5_r16_s_>().time_to_trigger_r16;
+ default:
+ return true;
+ }
+ return true;
+}
+
+// CondReconfigurationTriggerNR-r17 ::= SEQUENCE
+SRSASN_CODE cond_recfg_trigger_nr_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(cond_event_id_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cond_recfg_trigger_nr_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(cond_event_id_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void cond_recfg_trigger_nr_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("condEventId-r17");
+ cond_event_id_r17.to_json(j);
+ j.end_obj();
+}
+bool cond_recfg_trigger_nr_r17_s::operator==(const cond_recfg_trigger_nr_r17_s& other) const
+{
+ return cond_event_id_r17 == other.cond_event_id_r17;
+}
+
+void cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("condEventB1-NR-r17");
+ j.start_obj();
+ j.write_fieldname("b1-ThresholdNR-r17");
+ c.b1_thres_nr_r17.to_json(j);
+ j.write_int("hysteresis-r17", c.hysteresis_r17);
+ j.write_str("timeToTrigger-r17", c.time_to_trigger_r17.to_string());
+ j.end_obj();
+ j.end_obj();
+}
+SRSASN_CODE cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::pack(bit_ref& bref) const
+{
+ pack_enum(bref, type());
+ HANDLE_CODE(c.b1_thres_nr_r17.pack(bref));
+ HANDLE_CODE(pack_integer(bref, c.hysteresis_r17, (uint8_t)0u, (uint8_t)30u));
+ HANDLE_CODE(c.time_to_trigger_r17.pack(bref));
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ unpack_enum(e, bref);
+ if (e != type()) {
+ log_invalid_choice_id(e, "cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ HANDLE_CODE(c.b1_thres_nr_r17.unpack(bref));
+ HANDLE_CODE(unpack_integer(c.hysteresis_r17, bref, (uint8_t)0u, (uint8_t)30u));
+ HANDLE_CODE(c.time_to_trigger_r17.unpack(bref));
+ return SRSASN_SUCCESS;
+}
+bool cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::operator==(const cond_event_id_r17_c_& other) const
+{
+ return type() == other.type() and c.b1_thres_nr_r17 == other.c.b1_thres_nr_r17 and
+ c.hysteresis_r17 == other.c.hysteresis_r17 and c.time_to_trigger_r17 == other.c.time_to_trigger_r17;
+}
+
// MeasCycleSCell-r10 ::= ENUMERATED
const char* meas_cycle_scell_r10_opts::to_string() const
{
@@ -2347,6 +3082,59 @@ SRSASN_CODE meas_gap_cfg_c::setup_s_::gap_offset_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// MeasRSS-DedicatedConfig-r16 ::= SEQUENCE
+SRSASN_CODE meas_rss_ded_cfg_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(rss_cfg_carrier_info_r16_present, 1));
+ HANDLE_CODE(bref.pack(cells_to_add_mod_list_v1610_present, 1));
+
+ if (rss_cfg_carrier_info_r16_present) {
+ HANDLE_CODE(rss_cfg_carrier_info_r16.pack(bref));
+ }
+ if (cells_to_add_mod_list_v1610_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, cells_to_add_mod_list_v1610, 1, 32));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_rss_ded_cfg_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(rss_cfg_carrier_info_r16_present, 1));
+ HANDLE_CODE(bref.unpack(cells_to_add_mod_list_v1610_present, 1));
+
+ if (rss_cfg_carrier_info_r16_present) {
+ HANDLE_CODE(rss_cfg_carrier_info_r16.unpack(bref));
+ }
+ if (cells_to_add_mod_list_v1610_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(cells_to_add_mod_list_v1610, bref, 1, 32));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void meas_rss_ded_cfg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (rss_cfg_carrier_info_r16_present) {
+ j.write_fieldname("rss-ConfigCarrierInfo-r16");
+ rss_cfg_carrier_info_r16.to_json(j);
+ }
+ if (cells_to_add_mod_list_v1610_present) {
+ j.start_array("cellsToAddModList-v1610");
+ for (const auto& e1 : cells_to_add_mod_list_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+bool meas_rss_ded_cfg_r16_s::operator==(const meas_rss_ded_cfg_r16_s& other) const
+{
+ return rss_cfg_carrier_info_r16_present == other.rss_cfg_carrier_info_r16_present and
+ (not rss_cfg_carrier_info_r16_present or rss_cfg_carrier_info_r16 == other.rss_cfg_carrier_info_r16) and
+ cells_to_add_mod_list_v1610_present == other.cells_to_add_mod_list_v1610_present and
+ (not cells_to_add_mod_list_v1610_present or cells_to_add_mod_list_v1610 == other.cells_to_add_mod_list_v1610);
+}
+
// MeasRSSI-ReportConfig-r13 ::= SEQUENCE
SRSASN_CODE meas_rssi_report_cfg_r13_s::pack(bit_ref& bref) const
{
@@ -2713,6 +3501,181 @@ uint8_t rmtc_cfg_r13_c::setup_s_::meas_dur_r13_opts::to_number() const
return map_enum_number(options, 5, value, "rmtc_cfg_r13_c::setup_s_::meas_dur_r13_e_");
}
+// RMTC-ConfigNR-r16 ::= SEQUENCE
+SRSASN_CODE rmtc_cfg_nr_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(rmtc_sf_offset_nr_r16_present, 1));
+
+ HANDLE_CODE(rmtc_periodicity_nr_r16.pack(bref));
+ if (rmtc_sf_offset_nr_r16_present) {
+ HANDLE_CODE(pack_integer(bref, rmtc_sf_offset_nr_r16, (uint16_t)0u, (uint16_t)639u));
+ }
+ HANDLE_CODE(meas_dur_nr_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, rmtc_freq_nr_r16, (uint32_t)0u, (uint32_t)3279165u));
+ HANDLE_CODE(ref_scs_cp_nr_r16.pack(bref));
+
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= rmtc_bw_nr_r17_present;
+ group_flags[0] |= meas_dur_nr_r17_present;
+ group_flags[0] |= ref_scs_cp_nr_r17_present;
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(rmtc_bw_nr_r17_present, 1));
+ HANDLE_CODE(bref.pack(meas_dur_nr_r17_present, 1));
+ HANDLE_CODE(bref.pack(ref_scs_cp_nr_r17_present, 1));
+ if (rmtc_bw_nr_r17_present) {
+ HANDLE_CODE(rmtc_bw_nr_r17.pack(bref));
+ }
+ if (meas_dur_nr_r17_present) {
+ HANDLE_CODE(meas_dur_nr_r17.pack(bref));
+ }
+ if (ref_scs_cp_nr_r17_present) {
+ HANDLE_CODE(ref_scs_cp_nr_r17.pack(bref));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rmtc_cfg_nr_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(rmtc_sf_offset_nr_r16_present, 1));
+
+ HANDLE_CODE(rmtc_periodicity_nr_r16.unpack(bref));
+ if (rmtc_sf_offset_nr_r16_present) {
+ HANDLE_CODE(unpack_integer(rmtc_sf_offset_nr_r16, bref, (uint16_t)0u, (uint16_t)639u));
+ }
+ HANDLE_CODE(meas_dur_nr_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(rmtc_freq_nr_r16, bref, (uint32_t)0u, (uint32_t)3279165u));
+ HANDLE_CODE(ref_scs_cp_nr_r16.unpack(bref));
+
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(rmtc_bw_nr_r17_present, 1));
+ HANDLE_CODE(bref.unpack(meas_dur_nr_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ref_scs_cp_nr_r17_present, 1));
+ if (rmtc_bw_nr_r17_present) {
+ HANDLE_CODE(rmtc_bw_nr_r17.unpack(bref));
+ }
+ if (meas_dur_nr_r17_present) {
+ HANDLE_CODE(meas_dur_nr_r17.unpack(bref));
+ }
+ if (ref_scs_cp_nr_r17_present) {
+ HANDLE_CODE(ref_scs_cp_nr_r17.unpack(bref));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+void rmtc_cfg_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("rmtc-PeriodicityNR-r16", rmtc_periodicity_nr_r16.to_string());
+ if (rmtc_sf_offset_nr_r16_present) {
+ j.write_int("rmtc-SubframeOffsetNR-r16", rmtc_sf_offset_nr_r16);
+ }
+ j.write_str("measDurationNR-r16", meas_dur_nr_r16.to_string());
+ j.write_int("rmtc-FrequencyNR-r16", rmtc_freq_nr_r16);
+ j.write_str("refSCS-CP-NR-r16", ref_scs_cp_nr_r16.to_string());
+ if (ext) {
+ if (rmtc_bw_nr_r17_present) {
+ j.write_str("rmtc-BandwidthNR-r17", rmtc_bw_nr_r17.to_string());
+ }
+ if (meas_dur_nr_r17_present) {
+ j.write_str("measDurationNR-r17", meas_dur_nr_r17.to_string());
+ }
+ if (ref_scs_cp_nr_r17_present) {
+ j.write_str("refSCS-CP-NR-r17", ref_scs_cp_nr_r17.to_string());
+ }
+ }
+ j.end_obj();
+}
+bool rmtc_cfg_nr_r16_s::operator==(const rmtc_cfg_nr_r16_s& other) const
+{
+ return ext == other.ext and rmtc_periodicity_nr_r16 == other.rmtc_periodicity_nr_r16 and
+ rmtc_sf_offset_nr_r16_present == other.rmtc_sf_offset_nr_r16_present and
+ (not rmtc_sf_offset_nr_r16_present or rmtc_sf_offset_nr_r16 == other.rmtc_sf_offset_nr_r16) and
+ meas_dur_nr_r16 == other.meas_dur_nr_r16 and rmtc_freq_nr_r16 == other.rmtc_freq_nr_r16 and
+ ref_scs_cp_nr_r16 == other.ref_scs_cp_nr_r16 and
+ (not ext or (rmtc_bw_nr_r17_present == other.rmtc_bw_nr_r17_present and
+ (not rmtc_bw_nr_r17_present or rmtc_bw_nr_r17 == other.rmtc_bw_nr_r17) and
+ meas_dur_nr_r17_present == other.meas_dur_nr_r17_present and
+ (not meas_dur_nr_r17_present or meas_dur_nr_r17 == other.meas_dur_nr_r17) and
+ ref_scs_cp_nr_r17_present == other.ref_scs_cp_nr_r17_present and
+ (not ref_scs_cp_nr_r17_present or ref_scs_cp_nr_r17 == other.ref_scs_cp_nr_r17)));
+}
+
+const char* rmtc_cfg_nr_r16_s::rmtc_periodicity_nr_r16_opts::to_string() const
+{
+ static const char* options[] = {"ms40", "ms80", "ms160", "ms320", "ms640"};
+ return convert_enum_idx(options, 5, value, "rmtc_cfg_nr_r16_s::rmtc_periodicity_nr_r16_e_");
+}
+uint16_t rmtc_cfg_nr_r16_s::rmtc_periodicity_nr_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {40, 80, 160, 320, 640};
+ return map_enum_number(options, 5, value, "rmtc_cfg_nr_r16_s::rmtc_periodicity_nr_r16_e_");
+}
+
+const char* rmtc_cfg_nr_r16_s::meas_dur_nr_r16_opts::to_string() const
+{
+ static const char* options[] = {"sym1", "sym14or12", "sym28or24", "sym42or36", "sym70or60"};
+ return convert_enum_idx(options, 5, value, "rmtc_cfg_nr_r16_s::meas_dur_nr_r16_e_");
+}
+uint8_t rmtc_cfg_nr_r16_s::meas_dur_nr_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 14, 28, 42, 70};
+ return map_enum_number(options, 5, value, "rmtc_cfg_nr_r16_s::meas_dur_nr_r16_e_");
+}
+
+const char* rmtc_cfg_nr_r16_s::ref_scs_cp_nr_r16_opts::to_string() const
+{
+ static const char* options[] = {"kHz15", "kHz30", "kHz60-NCP", "kHz60-ECP"};
+ return convert_enum_idx(options, 4, value, "rmtc_cfg_nr_r16_s::ref_scs_cp_nr_r16_e_");
+}
+
+const char* rmtc_cfg_nr_r16_s::rmtc_bw_nr_r17_opts::to_string() const
+{
+ static const char* options[] = {"mhz100", "mhz400", "mhz800", "mhz1600", "mhz2000"};
+ return convert_enum_idx(options, 5, value, "rmtc_cfg_nr_r16_s::rmtc_bw_nr_r17_e_");
+}
+uint16_t rmtc_cfg_nr_r16_s::rmtc_bw_nr_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {100, 400, 800, 1600, 2000};
+ return map_enum_number(options, 5, value, "rmtc_cfg_nr_r16_s::rmtc_bw_nr_r17_e_");
+}
+
+const char* rmtc_cfg_nr_r16_s::meas_dur_nr_r17_opts::to_string() const
+{
+ static const char* options[] = {"sym140", "sym560", "sym1120"};
+ return convert_enum_idx(options, 3, value, "rmtc_cfg_nr_r16_s::meas_dur_nr_r17_e_");
+}
+uint16_t rmtc_cfg_nr_r16_s::meas_dur_nr_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {140, 560, 1120};
+ return map_enum_number(options, 3, value, "rmtc_cfg_nr_r16_s::meas_dur_nr_r17_e_");
+}
+
+const char* rmtc_cfg_nr_r16_s::ref_scs_cp_nr_r17_opts::to_string() const
+{
+ static const char* options[] = {"kHz120", "kHz480", "kHz960"};
+ return convert_enum_idx(options, 3, value, "rmtc_cfg_nr_r16_s::ref_scs_cp_nr_r17_e_");
+}
+uint16_t rmtc_cfg_nr_r16_s::ref_scs_cp_nr_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {120, 480, 960};
+ return map_enum_number(options, 3, value, "rmtc_cfg_nr_r16_s::ref_scs_cp_nr_r17_e_");
+}
+
// RS-ConfigSSB-NR-r15 ::= SEQUENCE
SRSASN_CODE rs_cfg_ssb_nr_r15_s::pack(bit_ref& bref) const
{
@@ -2723,6 +3686,13 @@ SRSASN_CODE rs_cfg_ssb_nr_r15_s::pack(bit_ref& bref) const
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= ssb_to_measure_r15.is_present();
+ group_flags[1] |= ssb_position_qcl_common_nr_r16_present;
+ group_flags[1] |= ssb_position_qcl_cells_to_add_mod_list_nr_r16.is_present();
+ group_flags[1] |= ssb_position_qcl_cells_to_rem_list_nr_r16.is_present();
+ group_flags[2] |= subcarrier_spacing_ssb_r17_present;
+ group_flags[2] |= ssb_position_qcl_common_nr_r17_present;
+ group_flags[2] |= ssb_position_qcl_cells_to_add_mod_list_nr_r17.is_present();
+ group_flags[2] |= ssb_position_qcl_cells_to_rem_list_nr_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -2733,6 +3703,44 @@ SRSASN_CODE rs_cfg_ssb_nr_r15_s::pack(bit_ref& bref) const
HANDLE_CODE(ssb_to_measure_r15->pack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ssb_position_qcl_common_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(ssb_position_qcl_cells_to_add_mod_list_nr_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(ssb_position_qcl_cells_to_rem_list_nr_r16.is_present(), 1));
+ if (ssb_position_qcl_common_nr_r16_present) {
+ HANDLE_CODE(ssb_position_qcl_common_nr_r16.pack(bref));
+ }
+ if (ssb_position_qcl_cells_to_add_mod_list_nr_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *ssb_position_qcl_cells_to_add_mod_list_nr_r16, 1, 32));
+ }
+ if (ssb_position_qcl_cells_to_rem_list_nr_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(
+ bref, *ssb_position_qcl_cells_to_rem_list_nr_r16, 1, 32, integer_packer<uint16_t>(0, 1007)));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(subcarrier_spacing_ssb_r17_present, 1));
+ HANDLE_CODE(bref.pack(ssb_position_qcl_common_nr_r17_present, 1));
+ HANDLE_CODE(bref.pack(ssb_position_qcl_cells_to_add_mod_list_nr_r17.is_present(), 1));
+ HANDLE_CODE(bref.pack(ssb_position_qcl_cells_to_rem_list_nr_r17.is_present(), 1));
+ if (subcarrier_spacing_ssb_r17_present) {
+ HANDLE_CODE(subcarrier_spacing_ssb_r17.pack(bref));
+ }
+ if (ssb_position_qcl_common_nr_r17_present) {
+ HANDLE_CODE(ssb_position_qcl_common_nr_r17.pack(bref));
+ }
+ if (ssb_position_qcl_cells_to_add_mod_list_nr_r17.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *ssb_position_qcl_cells_to_add_mod_list_nr_r17, 1, 32));
+ }
+ if (ssb_position_qcl_cells_to_rem_list_nr_r17.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(
+ bref, *ssb_position_qcl_cells_to_rem_list_nr_r17, 1, 32, integer_packer<uint16_t>(0, 1007)));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -2743,7 +3751,7 @@ SRSASN_CODE rs_cfg_ssb_nr_r15_s::unpack(cbit_ref& bref)
HANDLE_CODE(subcarrier_spacing_ssb_r15.unpack(bref));
if (ext) {
- ext_groups_unpacker_guard group_flags(1);
+ ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -2756,6 +3764,52 @@ SRSASN_CODE rs_cfg_ssb_nr_r15_s::unpack(cbit_ref& bref)
HANDLE_CODE(ssb_to_measure_r15->unpack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(ssb_position_qcl_common_nr_r16_present, 1));
+ bool ssb_position_qcl_cells_to_add_mod_list_nr_r16_present;
+ HANDLE_CODE(bref.unpack(ssb_position_qcl_cells_to_add_mod_list_nr_r16_present, 1));
+ ssb_position_qcl_cells_to_add_mod_list_nr_r16.set_present(ssb_position_qcl_cells_to_add_mod_list_nr_r16_present);
+ bool ssb_position_qcl_cells_to_rem_list_nr_r16_present;
+ HANDLE_CODE(bref.unpack(ssb_position_qcl_cells_to_rem_list_nr_r16_present, 1));
+ ssb_position_qcl_cells_to_rem_list_nr_r16.set_present(ssb_position_qcl_cells_to_rem_list_nr_r16_present);
+ if (ssb_position_qcl_common_nr_r16_present) {
+ HANDLE_CODE(ssb_position_qcl_common_nr_r16.unpack(bref));
+ }
+ if (ssb_position_qcl_cells_to_add_mod_list_nr_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*ssb_position_qcl_cells_to_add_mod_list_nr_r16, bref, 1, 32));
+ }
+ if (ssb_position_qcl_cells_to_rem_list_nr_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(
+ *ssb_position_qcl_cells_to_rem_list_nr_r16, bref, 1, 32, integer_packer<uint16_t>(0, 1007)));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(subcarrier_spacing_ssb_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ssb_position_qcl_common_nr_r17_present, 1));
+ bool ssb_position_qcl_cells_to_add_mod_list_nr_r17_present;
+ HANDLE_CODE(bref.unpack(ssb_position_qcl_cells_to_add_mod_list_nr_r17_present, 1));
+ ssb_position_qcl_cells_to_add_mod_list_nr_r17.set_present(ssb_position_qcl_cells_to_add_mod_list_nr_r17_present);
+ bool ssb_position_qcl_cells_to_rem_list_nr_r17_present;
+ HANDLE_CODE(bref.unpack(ssb_position_qcl_cells_to_rem_list_nr_r17_present, 1));
+ ssb_position_qcl_cells_to_rem_list_nr_r17.set_present(ssb_position_qcl_cells_to_rem_list_nr_r17_present);
+ if (subcarrier_spacing_ssb_r17_present) {
+ HANDLE_CODE(subcarrier_spacing_ssb_r17.unpack(bref));
+ }
+ if (ssb_position_qcl_common_nr_r17_present) {
+ HANDLE_CODE(ssb_position_qcl_common_nr_r17.unpack(bref));
+ }
+ if (ssb_position_qcl_cells_to_add_mod_list_nr_r17.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*ssb_position_qcl_cells_to_add_mod_list_nr_r17, bref, 1, 32));
+ }
+ if (ssb_position_qcl_cells_to_rem_list_nr_r17.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(
+ *ssb_position_qcl_cells_to_rem_list_nr_r17, bref, 1, 32, integer_packer<uint16_t>(0, 1007)));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -2770,6 +3824,43 @@ void rs_cfg_ssb_nr_r15_s::to_json(json_writer& j) const
j.write_fieldname("ssb-ToMeasure-r15");
ssb_to_measure_r15->to_json(j);
}
+ if (ssb_position_qcl_common_nr_r16_present) {
+ j.write_str("ssb-PositionQCL-CommonNR-r16", ssb_position_qcl_common_nr_r16.to_string());
+ }
+ if (ssb_position_qcl_cells_to_add_mod_list_nr_r16.is_present()) {
+ j.start_array("ssb-PositionQCL-CellsToAddModListNR-r16");
+ for (const auto& e1 : *ssb_position_qcl_cells_to_add_mod_list_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (ssb_position_qcl_cells_to_rem_list_nr_r16.is_present()) {
+ j.start_array("ssb-PositionQCL-CellsToRemoveListNR-r16");
+ for (const auto& e1 : *ssb_position_qcl_cells_to_rem_list_nr_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ if (subcarrier_spacing_ssb_r17_present) {
+ j.write_str("subcarrierSpacingSSB-r17", subcarrier_spacing_ssb_r17.to_string());
+ }
+ if (ssb_position_qcl_common_nr_r17_present) {
+ j.write_str("ssb-PositionQCL-CommonNR-r17", ssb_position_qcl_common_nr_r17.to_string());
+ }
+ if (ssb_position_qcl_cells_to_add_mod_list_nr_r17.is_present()) {
+ j.start_array("ssb-PositionQCL-CellsToAddModListNR-r17");
+ for (const auto& e1 : *ssb_position_qcl_cells_to_add_mod_list_nr_r17) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (ssb_position_qcl_cells_to_rem_list_nr_r17.is_present()) {
+ j.start_array("ssb-PositionQCL-CellsToRemoveListNR-r17");
+ for (const auto& e1 : *ssb_position_qcl_cells_to_rem_list_nr_r17) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
}
j.end_obj();
}
@@ -2777,8 +3868,34 @@ bool rs_cfg_ssb_nr_r15_s::operator==(const rs_cfg_ssb_nr_r15_s& other) const
{
return ext == other.ext and meas_timing_cfg_r15 == other.meas_timing_cfg_r15 and
subcarrier_spacing_ssb_r15 == other.subcarrier_spacing_ssb_r15 and
- (not ext or (ssb_to_measure_r15.is_present() == other.ssb_to_measure_r15.is_present() and
- (not ssb_to_measure_r15.is_present() or *ssb_to_measure_r15 == *other.ssb_to_measure_r15)));
+ (not ext or
+ (ssb_to_measure_r15.is_present() == other.ssb_to_measure_r15.is_present() and
+ (not ssb_to_measure_r15.is_present() or *ssb_to_measure_r15 == *other.ssb_to_measure_r15) and
+ ssb_position_qcl_common_nr_r16_present == other.ssb_position_qcl_common_nr_r16_present and
+ (not ssb_position_qcl_common_nr_r16_present or
+ ssb_position_qcl_common_nr_r16 == other.ssb_position_qcl_common_nr_r16) and
+ ssb_position_qcl_cells_to_add_mod_list_nr_r16.is_present() ==
+ other.ssb_position_qcl_cells_to_add_mod_list_nr_r16.is_present() and
+ (not ssb_position_qcl_cells_to_add_mod_list_nr_r16.is_present() or
+ *ssb_position_qcl_cells_to_add_mod_list_nr_r16 == *other.ssb_position_qcl_cells_to_add_mod_list_nr_r16) and
+ ssb_position_qcl_cells_to_rem_list_nr_r16.is_present() ==
+ other.ssb_position_qcl_cells_to_rem_list_nr_r16.is_present() and
+ (not ssb_position_qcl_cells_to_rem_list_nr_r16.is_present() or
+ *ssb_position_qcl_cells_to_rem_list_nr_r16 == *other.ssb_position_qcl_cells_to_rem_list_nr_r16) and
+ subcarrier_spacing_ssb_r17_present == other.subcarrier_spacing_ssb_r17_present and
+ (not subcarrier_spacing_ssb_r17_present or
+ subcarrier_spacing_ssb_r17 == other.subcarrier_spacing_ssb_r17) and
+ ssb_position_qcl_common_nr_r17_present == other.ssb_position_qcl_common_nr_r17_present and
+ (not ssb_position_qcl_common_nr_r17_present or
+ ssb_position_qcl_common_nr_r17 == other.ssb_position_qcl_common_nr_r17) and
+ ssb_position_qcl_cells_to_add_mod_list_nr_r17.is_present() ==
+ other.ssb_position_qcl_cells_to_add_mod_list_nr_r17.is_present() and
+ (not ssb_position_qcl_cells_to_add_mod_list_nr_r17.is_present() or
+ *ssb_position_qcl_cells_to_add_mod_list_nr_r17 == *other.ssb_position_qcl_cells_to_add_mod_list_nr_r17) and
+ ssb_position_qcl_cells_to_rem_list_nr_r17.is_present() ==
+ other.ssb_position_qcl_cells_to_rem_list_nr_r17.is_present() and
+ (not ssb_position_qcl_cells_to_rem_list_nr_r17.is_present() or
+ *ssb_position_qcl_cells_to_rem_list_nr_r17 == *other.ssb_position_qcl_cells_to_rem_list_nr_r17)));
}
const char* rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_opts::to_string() const
@@ -2857,6 +3974,17 @@ bool rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::operator==(const ssb_to_measure
return type() == other.type() and c == other.c;
}
+const char* rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r17_opts::to_string() const
+{
+ static const char* options[] = {"kHz480", "kHz960"};
+ return convert_enum_idx(options, 2, value, "rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r17_e_");
+}
+uint16_t rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {480, 960};
+ return map_enum_number(options, 2, value, "rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r17_e_");
+}
+
// RSRQ-RangeConfig-r12 ::= CHOICE
void rsrq_range_cfg_r12_c::set(types::options e)
{
@@ -3044,266 +4172,6 @@ bool report_quant_wlan_r13_s::operator==(const report_quant_wlan_r13_s& other) c
station_count_request_wlan_r13_present == other.station_count_request_wlan_r13_present;
}
-// ThresholdEUTRA ::= CHOICE
-void thres_eutra_c::destroy_() {}
-void thres_eutra_c::set(types::options e)
-{
- destroy_();
- type_ = e;
-}
-thres_eutra_c::thres_eutra_c(const thres_eutra_c& other)
-{
- type_ = other.type();
- switch (type_) {
- case types::thres_rsrp:
- c.init(other.c.get<uint8_t>());
- break;
- case types::thres_rsrq:
- c.init(other.c.get<uint8_t>());
- break;
- case types::nulltype:
- break;
- default:
- log_invalid_choice_id(type_, "thres_eutra_c");
- }
-}
-thres_eutra_c& thres_eutra_c::operator=(const thres_eutra_c& other)
-{
- if (this == &other) {
- return *this;
- }
- set(other.type());
- switch (type_) {
- case types::thres_rsrp:
- c.set(other.c.get<uint8_t>());
- break;
- case types::thres_rsrq:
- c.set(other.c.get<uint8_t>());
- break;
- case types::nulltype:
- break;
- default:
- log_invalid_choice_id(type_, "thres_eutra_c");
- }
-
- return *this;
-}
-uint8_t& thres_eutra_c::set_thres_rsrp()
-{
- set(types::thres_rsrp);
- return c.get<uint8_t>();
-}
-uint8_t& thres_eutra_c::set_thres_rsrq()
-{
- set(types::thres_rsrq);
- return c.get<uint8_t>();
-}
-void thres_eutra_c::to_json(json_writer& j) const
-{
- j.start_obj();
- switch (type_) {
- case types::thres_rsrp:
- j.write_int("threshold-RSRP", c.get<uint8_t>());
- break;
- case types::thres_rsrq:
- j.write_int("threshold-RSRQ", c.get<uint8_t>());
- break;
- default:
- log_invalid_choice_id(type_, "thres_eutra_c");
- }
- j.end_obj();
-}
-SRSASN_CODE thres_eutra_c::pack(bit_ref& bref) const
-{
- type_.pack(bref);
- switch (type_) {
- case types::thres_rsrp:
- HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)97u));
- break;
- case types::thres_rsrq:
- HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)34u));
- break;
- default:
- log_invalid_choice_id(type_, "thres_eutra_c");
- return SRSASN_ERROR_ENCODE_FAIL;
- }
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE thres_eutra_c::unpack(cbit_ref& bref)
-{
- types e;
- e.unpack(bref);
- set(e);
- switch (type_) {
- case types::thres_rsrp:
- HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)97u));
- break;
- case types::thres_rsrq:
- HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)34u));
- break;
- default:
- log_invalid_choice_id(type_, "thres_eutra_c");
- return SRSASN_ERROR_DECODE_FAIL;
- }
- return SRSASN_SUCCESS;
-}
-bool thres_eutra_c::operator==(const thres_eutra_c& other) const
-{
- if (type_ != other.type_) {
- return false;
- }
- switch (type_) {
- case types::thres_rsrp:
- return c.get<uint8_t>() == other.c.get<uint8_t>();
- case types::thres_rsrq:
- return c.get<uint8_t>() == other.c.get<uint8_t>();
- default:
- return true;
- }
- return true;
-}
-
-// ThresholdNR-r15 ::= CHOICE
-void thres_nr_r15_c::destroy_() {}
-void thres_nr_r15_c::set(types::options e)
-{
- destroy_();
- type_ = e;
-}
-thres_nr_r15_c::thres_nr_r15_c(const thres_nr_r15_c& other)
-{
- type_ = other.type();
- switch (type_) {
- case types::nr_rsrp_r15:
- c.init(other.c.get<uint8_t>());
- break;
- case types::nr_rsrq_r15:
- c.init(other.c.get<uint8_t>());
- break;
- case types::nr_sinr_r15:
- c.init(other.c.get<uint8_t>());
- break;
- case types::nulltype:
- break;
- default:
- log_invalid_choice_id(type_, "thres_nr_r15_c");
- }
-}
-thres_nr_r15_c& thres_nr_r15_c::operator=(const thres_nr_r15_c& other)
-{
- if (this == &other) {
- return *this;
- }
- set(other.type());
- switch (type_) {
- case types::nr_rsrp_r15:
- c.set(other.c.get<uint8_t>());
- break;
- case types::nr_rsrq_r15:
- c.set(other.c.get<uint8_t>());
- break;
- case types::nr_sinr_r15:
- c.set(other.c.get<uint8_t>());
- break;
- case types::nulltype:
- break;
- default:
- log_invalid_choice_id(type_, "thres_nr_r15_c");
- }
-
- return *this;
-}
-uint8_t& thres_nr_r15_c::set_nr_rsrp_r15()
-{
- set(types::nr_rsrp_r15);
- return c.get<uint8_t>();
-}
-uint8_t& thres_nr_r15_c::set_nr_rsrq_r15()
-{
- set(types::nr_rsrq_r15);
- return c.get<uint8_t>();
-}
-uint8_t& thres_nr_r15_c::set_nr_sinr_r15()
-{
- set(types::nr_sinr_r15);
- return c.get<uint8_t>();
-}
-void thres_nr_r15_c::to_json(json_writer& j) const
-{
- j.start_obj();
- switch (type_) {
- case types::nr_rsrp_r15:
- j.write_int("nr-RSRP-r15", c.get<uint8_t>());
- break;
- case types::nr_rsrq_r15:
- j.write_int("nr-RSRQ-r15", c.get<uint8_t>());
- break;
- case types::nr_sinr_r15:
- j.write_int("nr-SINR-r15", c.get<uint8_t>());
- break;
- default:
- log_invalid_choice_id(type_, "thres_nr_r15_c");
- }
- j.end_obj();
-}
-SRSASN_CODE thres_nr_r15_c::pack(bit_ref& bref) const
-{
- type_.pack(bref);
- switch (type_) {
- case types::nr_rsrp_r15:
- HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
- break;
- case types::nr_rsrq_r15:
- HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
- break;
- case types::nr_sinr_r15:
- HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
- break;
- default:
- log_invalid_choice_id(type_, "thres_nr_r15_c");
- return SRSASN_ERROR_ENCODE_FAIL;
- }
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE thres_nr_r15_c::unpack(cbit_ref& bref)
-{
- types e;
- e.unpack(bref);
- set(e);
- switch (type_) {
- case types::nr_rsrp_r15:
- HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
- break;
- case types::nr_rsrq_r15:
- HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
- break;
- case types::nr_sinr_r15:
- HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
- break;
- default:
- log_invalid_choice_id(type_, "thres_nr_r15_c");
- return SRSASN_ERROR_DECODE_FAIL;
- }
- return SRSASN_SUCCESS;
-}
-bool thres_nr_r15_c::operator==(const thres_nr_r15_c& other) const
-{
- if (type_ != other.type_) {
- return false;
- }
- switch (type_) {
- case types::nr_rsrp_r15:
- return c.get<uint8_t>() == other.c.get<uint8_t>();
- case types::nr_rsrq_r15:
- return c.get<uint8_t>() == other.c.get<uint8_t>();
- case types::nr_sinr_r15:
- return c.get<uint8_t>() == other.c.get<uint8_t>();
- default:
- return true;
- }
- return true;
-}
-
// ThresholdUTRA ::= CHOICE
void thres_utra_c::destroy_() {}
void thres_utra_c::set(types::options e)
@@ -3423,33 +4291,6 @@ bool thres_utra_c::operator==(const thres_utra_c& other) const
return true;
}
-// TimeToTrigger ::= ENUMERATED
-const char* time_to_trigger_opts::to_string() const
-{
- static const char* options[] = {"ms0",
- "ms40",
- "ms64",
- "ms80",
- "ms100",
- "ms128",
- "ms160",
- "ms256",
- "ms320",
- "ms480",
- "ms512",
- "ms640",
- "ms1024",
- "ms1280",
- "ms2560",
- "ms5120"};
- return convert_enum_idx(options, 16, value, "time_to_trigger_e");
-}
-uint16_t time_to_trigger_opts::to_number() const
-{
- static const uint16_t options[] = {0, 40, 64, 80, 100, 128, 160, 256, 320, 480, 512, 640, 1024, 1280, 2560, 5120};
- return map_enum_number(options, 16, value, "time_to_trigger_e");
-}
-
// UL-DelayConfig-r13 ::= CHOICE
void ul_delay_cfg_r13_c::set(types::options e)
{
@@ -3544,6 +4385,78 @@ uint16_t ul_delay_cfg_r13_c::setup_s_::delay_thres_r13_opts::to_number() const
return map_enum_number(options, 12, value, "ul_delay_cfg_r13_c::setup_s_::delay_thres_r13_e_");
}
+// UL-DelayValueConfig-r16 ::= CHOICE
+void ul_delay_value_cfg_r16_c::set(types::options e)
+{
+ type_ = e;
+}
+void ul_delay_value_cfg_r16_c::set_release()
+{
+ set(types::release);
+}
+ul_delay_value_cfg_r16_c::setup_s_& ul_delay_value_cfg_r16_c::set_setup()
+{
+ set(types::setup);
+ return c;
+}
+void ul_delay_value_cfg_r16_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ j.write_fieldname("setup");
+ j.start_obj();
+ j.start_array("delay-DRBlist-r16");
+ for (const auto& e1 : c.delay_dr_blist_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_delay_value_cfg_r16_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE ul_delay_value_cfg_r16_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ HANDLE_CODE(pack_dyn_seq_of(bref, c.delay_dr_blist_r16, 1, 11, integer_packer<uint8_t>(1, 32)));
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_delay_value_cfg_r16_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_delay_value_cfg_r16_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ HANDLE_CODE(unpack_dyn_seq_of(c.delay_dr_blist_r16, bref, 1, 11, integer_packer<uint8_t>(1, 32)));
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_delay_value_cfg_r16_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+bool ul_delay_value_cfg_r16_c::operator==(const ul_delay_value_cfg_r16_c& other) const
+{
+ return type() == other.type() and c.delay_dr_blist_r16 == other.c.delay_dr_blist_r16;
+}
+
// WLAN-CarrierInfo-r13 ::= SEQUENCE
SRSASN_CODE wlan_carrier_info_r13_s::pack(bit_ref& bref) const
{
@@ -3823,8 +4736,8 @@ SRSASN_CODE meas_obj_eutra_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(offset_freq_present, 1));
HANDLE_CODE(bref.pack(cells_to_rem_list_present, 1));
HANDLE_CODE(bref.pack(cells_to_add_mod_list_present, 1));
- HANDLE_CODE(bref.pack(black_cells_to_rem_list_present, 1));
- HANDLE_CODE(bref.pack(black_cells_to_add_mod_list_present, 1));
+ HANDLE_CODE(bref.pack(excluded_cells_to_rem_list_present, 1));
+ HANDLE_CODE(bref.pack(excluded_cells_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(cell_for_which_to_report_cgi_present, 1));
HANDLE_CODE(pack_integer(bref, carrier_freq, (uint32_t)0u, (uint32_t)65535u));
@@ -3840,11 +4753,11 @@ SRSASN_CODE meas_obj_eutra_s::pack(bit_ref& bref) const
if (cells_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, cells_to_add_mod_list, 1, 32));
}
- if (black_cells_to_rem_list_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, black_cells_to_rem_list, 1, 32, integer_packer<uint8_t>(1, 32)));
+ if (excluded_cells_to_rem_list_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, excluded_cells_to_rem_list, 1, 32, integer_packer<uint8_t>(1, 32)));
}
- if (black_cells_to_add_mod_list_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, black_cells_to_add_mod_list, 1, 32));
+ if (excluded_cells_to_add_mod_list_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, excluded_cells_to_add_mod_list, 1, 32));
}
if (cell_for_which_to_report_cgi_present) {
HANDLE_CODE(pack_integer(bref, cell_for_which_to_report_cgi, (uint16_t)0u, (uint16_t)503u));
@@ -3860,14 +4773,15 @@ SRSASN_CODE meas_obj_eutra_s::pack(bit_ref& bref) const
group_flags[2] |= t312_r12.is_present();
group_flags[2] |= reduced_meas_performance_r12_present;
group_flags[2] |= meas_ds_cfg_r12.is_present();
- group_flags[3] |= white_cells_to_rem_list_r13.is_present();
- group_flags[3] |= white_cells_to_add_mod_list_r13.is_present();
+ group_flags[3] |= allowed_cells_to_rem_list_r13.is_present();
+ group_flags[3] |= allowed_cells_to_add_mod_list_r13.is_present();
group_flags[3] |= rmtc_cfg_r13.is_present();
group_flags[3] |= carrier_freq_r13_present;
group_flags[4] |= tx_res_pool_to_rem_list_r14.is_present();
group_flags[4] |= tx_res_pool_to_add_list_r14.is_present();
group_flags[4] |= fembms_mixed_carrier_r14_present;
group_flags[5] |= meas_sensing_cfg_r15.is_present();
+ group_flags[6] |= meas_rss_ded_cfg_r16.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -3917,15 +4831,15 @@ SRSASN_CODE meas_obj_eutra_s::pack(bit_ref& bref) const
if (group_flags[3]) {
varlength_field_pack_guard varlen_scope(bref, false);
- HANDLE_CODE(bref.pack(white_cells_to_rem_list_r13.is_present(), 1));
- HANDLE_CODE(bref.pack(white_cells_to_add_mod_list_r13.is_present(), 1));
+ HANDLE_CODE(bref.pack(allowed_cells_to_rem_list_r13.is_present(), 1));
+ HANDLE_CODE(bref.pack(allowed_cells_to_add_mod_list_r13.is_present(), 1));
HANDLE_CODE(bref.pack(rmtc_cfg_r13.is_present(), 1));
HANDLE_CODE(bref.pack(carrier_freq_r13_present, 1));
- if (white_cells_to_rem_list_r13.is_present()) {
- HANDLE_CODE(pack_dyn_seq_of(bref, *white_cells_to_rem_list_r13, 1, 32, integer_packer<uint8_t>(1, 32)));
+ if (allowed_cells_to_rem_list_r13.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *allowed_cells_to_rem_list_r13, 1, 32, integer_packer<uint8_t>(1, 32)));
}
- if (white_cells_to_add_mod_list_r13.is_present()) {
- HANDLE_CODE(pack_dyn_seq_of(bref, *white_cells_to_add_mod_list_r13, 1, 32));
+ if (allowed_cells_to_add_mod_list_r13.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *allowed_cells_to_add_mod_list_r13, 1, 32));
}
if (rmtc_cfg_r13.is_present()) {
HANDLE_CODE(rmtc_cfg_r13->pack(bref));
@@ -3958,6 +4872,14 @@ SRSASN_CODE meas_obj_eutra_s::pack(bit_ref& bref) const
HANDLE_CODE(meas_sensing_cfg_r15->pack(bref));
}
}
+ if (group_flags[6]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(meas_rss_ded_cfg_r16.is_present(), 1));
+ if (meas_rss_ded_cfg_r16.is_present()) {
+ HANDLE_CODE(meas_rss_ded_cfg_r16->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -3967,8 +4889,8 @@ SRSASN_CODE meas_obj_eutra_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(offset_freq_present, 1));
HANDLE_CODE(bref.unpack(cells_to_rem_list_present, 1));
HANDLE_CODE(bref.unpack(cells_to_add_mod_list_present, 1));
- HANDLE_CODE(bref.unpack(black_cells_to_rem_list_present, 1));
- HANDLE_CODE(bref.unpack(black_cells_to_add_mod_list_present, 1));
+ HANDLE_CODE(bref.unpack(excluded_cells_to_rem_list_present, 1));
+ HANDLE_CODE(bref.unpack(excluded_cells_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(cell_for_which_to_report_cgi_present, 1));
HANDLE_CODE(unpack_integer(carrier_freq, bref, (uint32_t)0u, (uint32_t)65535u));
@@ -3984,18 +4906,18 @@ SRSASN_CODE meas_obj_eutra_s::unpack(cbit_ref& bref)
if (cells_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(cells_to_add_mod_list, bref, 1, 32));
}
- if (black_cells_to_rem_list_present) {
- HANDLE_CODE(unpack_dyn_seq_of(black_cells_to_rem_list, bref, 1, 32, integer_packer<uint8_t>(1, 32)));
+ if (excluded_cells_to_rem_list_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(excluded_cells_to_rem_list, bref, 1, 32, integer_packer<uint8_t>(1, 32)));
}
- if (black_cells_to_add_mod_list_present) {
- HANDLE_CODE(unpack_dyn_seq_of(black_cells_to_add_mod_list, bref, 1, 32));
+ if (excluded_cells_to_add_mod_list_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(excluded_cells_to_add_mod_list, bref, 1, 32));
}
if (cell_for_which_to_report_cgi_present) {
HANDLE_CODE(unpack_integer(cell_for_which_to_report_cgi, bref, (uint16_t)0u, (uint16_t)503u));
}
if (ext) {
- ext_groups_unpacker_guard group_flags(6);
+ ext_groups_unpacker_guard group_flags(7);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -4055,21 +4977,21 @@ SRSASN_CODE meas_obj_eutra_s::unpack(cbit_ref& bref)
if (group_flags[3]) {
varlength_field_unpack_guard varlen_scope(bref, false);
- bool white_cells_to_rem_list_r13_present;
- HANDLE_CODE(bref.unpack(white_cells_to_rem_list_r13_present, 1));
- white_cells_to_rem_list_r13.set_present(white_cells_to_rem_list_r13_present);
- bool white_cells_to_add_mod_list_r13_present;
- HANDLE_CODE(bref.unpack(white_cells_to_add_mod_list_r13_present, 1));
- white_cells_to_add_mod_list_r13.set_present(white_cells_to_add_mod_list_r13_present);
+ bool allowed_cells_to_rem_list_r13_present;
+ HANDLE_CODE(bref.unpack(allowed_cells_to_rem_list_r13_present, 1));
+ allowed_cells_to_rem_list_r13.set_present(allowed_cells_to_rem_list_r13_present);
+ bool allowed_cells_to_add_mod_list_r13_present;
+ HANDLE_CODE(bref.unpack(allowed_cells_to_add_mod_list_r13_present, 1));
+ allowed_cells_to_add_mod_list_r13.set_present(allowed_cells_to_add_mod_list_r13_present);
bool rmtc_cfg_r13_present;
HANDLE_CODE(bref.unpack(rmtc_cfg_r13_present, 1));
rmtc_cfg_r13.set_present(rmtc_cfg_r13_present);
HANDLE_CODE(bref.unpack(carrier_freq_r13_present, 1));
- if (white_cells_to_rem_list_r13.is_present()) {
- HANDLE_CODE(unpack_dyn_seq_of(*white_cells_to_rem_list_r13, bref, 1, 32, integer_packer<uint8_t>(1, 32)));
+ if (allowed_cells_to_rem_list_r13.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*allowed_cells_to_rem_list_r13, bref, 1, 32, integer_packer<uint8_t>(1, 32)));
}
- if (white_cells_to_add_mod_list_r13.is_present()) {
- HANDLE_CODE(unpack_dyn_seq_of(*white_cells_to_add_mod_list_r13, bref, 1, 32));
+ if (allowed_cells_to_add_mod_list_r13.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*allowed_cells_to_add_mod_list_r13, bref, 1, 32));
}
if (rmtc_cfg_r13.is_present()) {
HANDLE_CODE(rmtc_cfg_r13->unpack(bref));
@@ -4108,6 +5030,16 @@ SRSASN_CODE meas_obj_eutra_s::unpack(cbit_ref& bref)
HANDLE_CODE(meas_sensing_cfg_r15->unpack(bref));
}
}
+ if (group_flags[6]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool meas_rss_ded_cfg_r16_present;
+ HANDLE_CODE(bref.unpack(meas_rss_ded_cfg_r16_present, 1));
+ meas_rss_ded_cfg_r16.set_present(meas_rss_ded_cfg_r16_present);
+ if (meas_rss_ded_cfg_r16.is_present()) {
+ HANDLE_CODE(meas_rss_ded_cfg_r16->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -4135,16 +5067,16 @@ void meas_obj_eutra_s::to_json(json_writer& j) const
}
j.end_array();
}
- if (black_cells_to_rem_list_present) {
- j.start_array("blackCellsToRemoveList");
- for (const auto& e1 : black_cells_to_rem_list) {
+ if (excluded_cells_to_rem_list_present) {
+ j.start_array("excludedCellsToRemoveList");
+ for (const auto& e1 : excluded_cells_to_rem_list) {
j.write_int(e1);
}
j.end_array();
}
- if (black_cells_to_add_mod_list_present) {
- j.start_array("blackCellsToAddModList");
- for (const auto& e1 : black_cells_to_add_mod_list) {
+ if (excluded_cells_to_add_mod_list_present) {
+ j.start_array("excludedCellsToAddModList");
+ for (const auto& e1 : excluded_cells_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
@@ -4188,16 +5120,16 @@ void meas_obj_eutra_s::to_json(json_writer& j) const
j.write_fieldname("measDS-Config-r12");
meas_ds_cfg_r12->to_json(j);
}
- if (white_cells_to_rem_list_r13.is_present()) {
- j.start_array("whiteCellsToRemoveList-r13");
- for (const auto& e1 : *white_cells_to_rem_list_r13) {
+ if (allowed_cells_to_rem_list_r13.is_present()) {
+ j.start_array("allowedCellsToRemoveList-r13");
+ for (const auto& e1 : *allowed_cells_to_rem_list_r13) {
j.write_int(e1);
}
j.end_array();
}
- if (white_cells_to_add_mod_list_r13.is_present()) {
- j.start_array("whiteCellsToAddModList-r13");
- for (const auto& e1 : *white_cells_to_add_mod_list_r13) {
+ if (allowed_cells_to_add_mod_list_r13.is_present()) {
+ j.start_array("allowedCellsToAddModList-r13");
+ for (const auto& e1 : *allowed_cells_to_add_mod_list_r13) {
e1.to_json(j);
}
j.end_array();
@@ -4230,6 +5162,10 @@ void meas_obj_eutra_s::to_json(json_writer& j) const
j.write_fieldname("measSensing-Config-r15");
meas_sensing_cfg_r15->to_json(j);
}
+ if (meas_rss_ded_cfg_r16.is_present()) {
+ j.write_fieldname("measRSS-DedicatedConfig-r16");
+ meas_rss_ded_cfg_r16->to_json(j);
+ }
}
j.end_obj();
}
@@ -4243,11 +5179,11 @@ bool meas_obj_eutra_s::operator==(const meas_obj_eutra_s& other) const
(not cells_to_rem_list_present or cells_to_rem_list == other.cells_to_rem_list) and
cells_to_add_mod_list_present == other.cells_to_add_mod_list_present and
(not cells_to_add_mod_list_present or cells_to_add_mod_list == other.cells_to_add_mod_list) and
- black_cells_to_rem_list_present == other.black_cells_to_rem_list_present and
- (not black_cells_to_rem_list_present or black_cells_to_rem_list == other.black_cells_to_rem_list) and
- black_cells_to_add_mod_list_present == other.black_cells_to_add_mod_list_present and
- (not black_cells_to_add_mod_list_present or
- black_cells_to_add_mod_list == other.black_cells_to_add_mod_list) and
+ excluded_cells_to_rem_list_present == other.excluded_cells_to_rem_list_present and
+ (not excluded_cells_to_rem_list_present or excluded_cells_to_rem_list == other.excluded_cells_to_rem_list) and
+ excluded_cells_to_add_mod_list_present == other.excluded_cells_to_add_mod_list_present and
+ (not excluded_cells_to_add_mod_list_present or
+ excluded_cells_to_add_mod_list == other.excluded_cells_to_add_mod_list) and
cell_for_which_to_report_cgi_present == other.cell_for_which_to_report_cgi_present and
(not cell_for_which_to_report_cgi_present or
cell_for_which_to_report_cgi == other.cell_for_which_to_report_cgi) and
@@ -4272,12 +5208,12 @@ bool meas_obj_eutra_s::operator==(const meas_obj_eutra_s& other) const
reduced_meas_performance_r12 == other.reduced_meas_performance_r12) and
meas_ds_cfg_r12.is_present() == other.meas_ds_cfg_r12.is_present() and
(not meas_ds_cfg_r12.is_present() or *meas_ds_cfg_r12 == *other.meas_ds_cfg_r12) and
- white_cells_to_rem_list_r13.is_present() == other.white_cells_to_rem_list_r13.is_present() and
- (not white_cells_to_rem_list_r13.is_present() or
- *white_cells_to_rem_list_r13 == *other.white_cells_to_rem_list_r13) and
- white_cells_to_add_mod_list_r13.is_present() == other.white_cells_to_add_mod_list_r13.is_present() and
- (not white_cells_to_add_mod_list_r13.is_present() or
- *white_cells_to_add_mod_list_r13 == *other.white_cells_to_add_mod_list_r13) and
+ allowed_cells_to_rem_list_r13.is_present() == other.allowed_cells_to_rem_list_r13.is_present() and
+ (not allowed_cells_to_rem_list_r13.is_present() or
+ *allowed_cells_to_rem_list_r13 == *other.allowed_cells_to_rem_list_r13) and
+ allowed_cells_to_add_mod_list_r13.is_present() == other.allowed_cells_to_add_mod_list_r13.is_present() and
+ (not allowed_cells_to_add_mod_list_r13.is_present() or
+ *allowed_cells_to_add_mod_list_r13 == *other.allowed_cells_to_add_mod_list_r13) and
rmtc_cfg_r13.is_present() == other.rmtc_cfg_r13.is_present() and
(not rmtc_cfg_r13.is_present() or *rmtc_cfg_r13 == *other.rmtc_cfg_r13) and
carrier_freq_r13_present == other.carrier_freq_r13_present and
@@ -4291,7 +5227,9 @@ bool meas_obj_eutra_s::operator==(const meas_obj_eutra_s& other) const
fembms_mixed_carrier_r14_present == other.fembms_mixed_carrier_r14_present and
(not fembms_mixed_carrier_r14_present or fembms_mixed_carrier_r14 == other.fembms_mixed_carrier_r14) and
meas_sensing_cfg_r15.is_present() == other.meas_sensing_cfg_r15.is_present() and
- (not meas_sensing_cfg_r15.is_present() or *meas_sensing_cfg_r15 == *other.meas_sensing_cfg_r15)));
+ (not meas_sensing_cfg_r15.is_present() or *meas_sensing_cfg_r15 == *other.meas_sensing_cfg_r15) and
+ meas_rss_ded_cfg_r16.is_present() == other.meas_rss_ded_cfg_r16.is_present() and
+ (not meas_rss_ded_cfg_r16.is_present() or *meas_rss_ded_cfg_r16 == *other.meas_rss_ded_cfg_r16)));
}
void meas_obj_eutra_s::t312_r12_c_::set(types::options e)
@@ -4466,8 +5404,8 @@ SRSASN_CODE meas_obj_nr_r15_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(thresh_rs_idx_r15_present, 1));
HANDLE_CODE(bref.pack(max_rs_idx_cell_qual_r15_present, 1));
HANDLE_CODE(bref.pack(offset_freq_r15_present, 1));
- HANDLE_CODE(bref.pack(black_cells_to_rem_list_r15_present, 1));
- HANDLE_CODE(bref.pack(black_cells_to_add_mod_list_r15_present, 1));
+ HANDLE_CODE(bref.pack(excluded_cells_to_rem_list_r15_present, 1));
+ HANDLE_CODE(bref.pack(excluded_cells_to_add_mod_list_r15_present, 1));
HANDLE_CODE(bref.pack(cells_for_which_to_report_sftd_r15_present, 1));
HANDLE_CODE(pack_integer(bref, carrier_freq_r15, (uint32_t)0u, (uint32_t)3279165u));
@@ -4481,11 +5419,11 @@ SRSASN_CODE meas_obj_nr_r15_s::pack(bit_ref& bref) const
if (offset_freq_r15_present) {
HANDLE_CODE(pack_integer(bref, offset_freq_r15, (int8_t)-15, (int8_t)15));
}
- if (black_cells_to_rem_list_r15_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, black_cells_to_rem_list_r15, 1, 32, integer_packer<uint8_t>(1, 32)));
+ if (excluded_cells_to_rem_list_r15_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, excluded_cells_to_rem_list_r15, 1, 32, integer_packer<uint8_t>(1, 32)));
}
- if (black_cells_to_add_mod_list_r15_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, black_cells_to_add_mod_list_r15, 1, 32));
+ if (excluded_cells_to_add_mod_list_r15_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, excluded_cells_to_add_mod_list_r15, 1, 32));
}
HANDLE_CODE(pack_integer(bref, quant_cfg_set_r15, (uint8_t)1u, (uint8_t)2u));
if (cells_for_which_to_report_sftd_r15_present) {
@@ -4498,6 +5436,9 @@ SRSASN_CODE meas_obj_nr_r15_s::pack(bit_ref& bref) const
group_flags[0] |= derive_ssb_idx_from_cell_r15_present;
group_flags[0] |= ss_rssi_meas_r15.is_present();
group_flags[0] |= band_nr_r15.is_present();
+ group_flags[1] |= rmtc_cfg_nr_r16.is_present();
+ group_flags[2] |= cells_to_rem_list_r16.is_present();
+ group_flags[2] |= cells_to_add_mod_list_r16.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -4520,6 +5461,26 @@ SRSASN_CODE meas_obj_nr_r15_s::pack(bit_ref& bref) const
HANDLE_CODE(band_nr_r15->pack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(rmtc_cfg_nr_r16.is_present(), 1));
+ if (rmtc_cfg_nr_r16.is_present()) {
+ HANDLE_CODE(rmtc_cfg_nr_r16->pack(bref));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(cells_to_rem_list_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(cells_to_add_mod_list_r16.is_present(), 1));
+ if (cells_to_rem_list_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *cells_to_rem_list_r16, 1, 32, integer_packer<uint8_t>(1, 32)));
+ }
+ if (cells_to_add_mod_list_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *cells_to_add_mod_list_r16, 1, 32));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -4529,8 +5490,8 @@ SRSASN_CODE meas_obj_nr_r15_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(thresh_rs_idx_r15_present, 1));
HANDLE_CODE(bref.unpack(max_rs_idx_cell_qual_r15_present, 1));
HANDLE_CODE(bref.unpack(offset_freq_r15_present, 1));
- HANDLE_CODE(bref.unpack(black_cells_to_rem_list_r15_present, 1));
- HANDLE_CODE(bref.unpack(black_cells_to_add_mod_list_r15_present, 1));
+ HANDLE_CODE(bref.unpack(excluded_cells_to_rem_list_r15_present, 1));
+ HANDLE_CODE(bref.unpack(excluded_cells_to_add_mod_list_r15_present, 1));
HANDLE_CODE(bref.unpack(cells_for_which_to_report_sftd_r15_present, 1));
HANDLE_CODE(unpack_integer(carrier_freq_r15, bref, (uint32_t)0u, (uint32_t)3279165u));
@@ -4544,11 +5505,11 @@ SRSASN_CODE meas_obj_nr_r15_s::unpack(cbit_ref& bref)
if (offset_freq_r15_present) {
HANDLE_CODE(unpack_integer(offset_freq_r15, bref, (int8_t)-15, (int8_t)15));
}
- if (black_cells_to_rem_list_r15_present) {
- HANDLE_CODE(unpack_dyn_seq_of(black_cells_to_rem_list_r15, bref, 1, 32, integer_packer<uint8_t>(1, 32)));
+ if (excluded_cells_to_rem_list_r15_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(excluded_cells_to_rem_list_r15, bref, 1, 32, integer_packer<uint8_t>(1, 32)));
}
- if (black_cells_to_add_mod_list_r15_present) {
- HANDLE_CODE(unpack_dyn_seq_of(black_cells_to_add_mod_list_r15, bref, 1, 32));
+ if (excluded_cells_to_add_mod_list_r15_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(excluded_cells_to_add_mod_list_r15, bref, 1, 32));
}
HANDLE_CODE(unpack_integer(quant_cfg_set_r15, bref, (uint8_t)1u, (uint8_t)2u));
if (cells_for_which_to_report_sftd_r15_present) {
@@ -4556,7 +5517,7 @@ SRSASN_CODE meas_obj_nr_r15_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(1);
+ ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -4583,6 +5544,32 @@ SRSASN_CODE meas_obj_nr_r15_s::unpack(cbit_ref& bref)
HANDLE_CODE(band_nr_r15->unpack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool rmtc_cfg_nr_r16_present;
+ HANDLE_CODE(bref.unpack(rmtc_cfg_nr_r16_present, 1));
+ rmtc_cfg_nr_r16.set_present(rmtc_cfg_nr_r16_present);
+ if (rmtc_cfg_nr_r16.is_present()) {
+ HANDLE_CODE(rmtc_cfg_nr_r16->unpack(bref));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool cells_to_rem_list_r16_present;
+ HANDLE_CODE(bref.unpack(cells_to_rem_list_r16_present, 1));
+ cells_to_rem_list_r16.set_present(cells_to_rem_list_r16_present);
+ bool cells_to_add_mod_list_r16_present;
+ HANDLE_CODE(bref.unpack(cells_to_add_mod_list_r16_present, 1));
+ cells_to_add_mod_list_r16.set_present(cells_to_add_mod_list_r16_present);
+ if (cells_to_rem_list_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*cells_to_rem_list_r16, bref, 1, 32, integer_packer<uint8_t>(1, 32)));
+ }
+ if (cells_to_add_mod_list_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*cells_to_add_mod_list_r16, bref, 1, 32));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -4602,16 +5589,16 @@ void meas_obj_nr_r15_s::to_json(json_writer& j) const
if (offset_freq_r15_present) {
j.write_int("offsetFreq-r15", offset_freq_r15);
}
- if (black_cells_to_rem_list_r15_present) {
- j.start_array("blackCellsToRemoveList-r15");
- for (const auto& e1 : black_cells_to_rem_list_r15) {
+ if (excluded_cells_to_rem_list_r15_present) {
+ j.start_array("excludedCellsToRemoveList-r15");
+ for (const auto& e1 : excluded_cells_to_rem_list_r15) {
j.write_int(e1);
}
j.end_array();
}
- if (black_cells_to_add_mod_list_r15_present) {
- j.start_array("blackCellsToAddModList-r15");
- for (const auto& e1 : black_cells_to_add_mod_list_r15) {
+ if (excluded_cells_to_add_mod_list_r15_present) {
+ j.start_array("excludedCellsToAddModList-r15");
+ for (const auto& e1 : excluded_cells_to_add_mod_list_r15) {
e1.to_json(j);
}
j.end_array();
@@ -4639,6 +5626,24 @@ void meas_obj_nr_r15_s::to_json(json_writer& j) const
j.write_fieldname("bandNR-r15");
band_nr_r15->to_json(j);
}
+ if (rmtc_cfg_nr_r16.is_present()) {
+ j.write_fieldname("rmtc-ConfigNR-r16");
+ rmtc_cfg_nr_r16->to_json(j);
+ }
+ if (cells_to_rem_list_r16.is_present()) {
+ j.start_array("cellsToRemoveList-r16");
+ for (const auto& e1 : *cells_to_rem_list_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ if (cells_to_add_mod_list_r16.is_present()) {
+ j.start_array("cellsToAddModList-r16");
+ for (const auto& e1 : *cells_to_add_mod_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
}
j.end_obj();
}
@@ -4651,26 +5656,34 @@ bool meas_obj_nr_r15_s::operator==(const meas_obj_nr_r15_s& other) const
(not max_rs_idx_cell_qual_r15_present or max_rs_idx_cell_qual_r15 == other.max_rs_idx_cell_qual_r15) and
offset_freq_r15_present == other.offset_freq_r15_present and
(not offset_freq_r15_present or offset_freq_r15 == other.offset_freq_r15) and
- black_cells_to_rem_list_r15_present == other.black_cells_to_rem_list_r15_present and
- (not black_cells_to_rem_list_r15_present or
- black_cells_to_rem_list_r15 == other.black_cells_to_rem_list_r15) and
- black_cells_to_add_mod_list_r15_present == other.black_cells_to_add_mod_list_r15_present and
- (not black_cells_to_add_mod_list_r15_present or
- black_cells_to_add_mod_list_r15 == other.black_cells_to_add_mod_list_r15) and
+ excluded_cells_to_rem_list_r15_present == other.excluded_cells_to_rem_list_r15_present and
+ (not excluded_cells_to_rem_list_r15_present or
+ excluded_cells_to_rem_list_r15 == other.excluded_cells_to_rem_list_r15) and
+ excluded_cells_to_add_mod_list_r15_present == other.excluded_cells_to_add_mod_list_r15_present and
+ (not excluded_cells_to_add_mod_list_r15_present or
+ excluded_cells_to_add_mod_list_r15 == other.excluded_cells_to_add_mod_list_r15) and
quant_cfg_set_r15 == other.quant_cfg_set_r15 and
cells_for_which_to_report_sftd_r15_present == other.cells_for_which_to_report_sftd_r15_present and
(not cells_for_which_to_report_sftd_r15_present or
cells_for_which_to_report_sftd_r15 == other.cells_for_which_to_report_sftd_r15) and
- (not ext or (cell_for_which_to_report_cgi_r15_present == other.cell_for_which_to_report_cgi_r15_present and
- (not cell_for_which_to_report_cgi_r15_present or
- cell_for_which_to_report_cgi_r15 == other.cell_for_which_to_report_cgi_r15) and
- derive_ssb_idx_from_cell_r15_present == other.derive_ssb_idx_from_cell_r15_present and
- (not derive_ssb_idx_from_cell_r15_present or
- derive_ssb_idx_from_cell_r15 == other.derive_ssb_idx_from_cell_r15) and
- ss_rssi_meas_r15.is_present() == other.ss_rssi_meas_r15.is_present() and
- (not ss_rssi_meas_r15.is_present() or *ss_rssi_meas_r15 == *other.ss_rssi_meas_r15) and
- band_nr_r15.is_present() == other.band_nr_r15.is_present() and
- (not band_nr_r15.is_present() or *band_nr_r15 == *other.band_nr_r15)));
+ (not ext or
+ (cell_for_which_to_report_cgi_r15_present == other.cell_for_which_to_report_cgi_r15_present and
+ (not cell_for_which_to_report_cgi_r15_present or
+ cell_for_which_to_report_cgi_r15 == other.cell_for_which_to_report_cgi_r15) and
+ derive_ssb_idx_from_cell_r15_present == other.derive_ssb_idx_from_cell_r15_present and
+ (not derive_ssb_idx_from_cell_r15_present or
+ derive_ssb_idx_from_cell_r15 == other.derive_ssb_idx_from_cell_r15) and
+ ss_rssi_meas_r15.is_present() == other.ss_rssi_meas_r15.is_present() and
+ (not ss_rssi_meas_r15.is_present() or *ss_rssi_meas_r15 == *other.ss_rssi_meas_r15) and
+ band_nr_r15.is_present() == other.band_nr_r15.is_present() and
+ (not band_nr_r15.is_present() or *band_nr_r15 == *other.band_nr_r15) and
+ rmtc_cfg_nr_r16.is_present() == other.rmtc_cfg_nr_r16.is_present() and
+ (not rmtc_cfg_nr_r16.is_present() or *rmtc_cfg_nr_r16 == *other.rmtc_cfg_nr_r16) and
+ cells_to_rem_list_r16.is_present() == other.cells_to_rem_list_r16.is_present() and
+ (not cells_to_rem_list_r16.is_present() or *cells_to_rem_list_r16 == *other.cells_to_rem_list_r16) and
+ cells_to_add_mod_list_r16.is_present() == other.cells_to_add_mod_list_r16.is_present() and
+ (not cells_to_add_mod_list_r16.is_present() or
+ *cells_to_add_mod_list_r16 == *other.cells_to_add_mod_list_r16)));
}
void meas_obj_nr_r15_s::band_nr_r15_c_::set(types::options e)
@@ -5989,7 +7002,7 @@ SRSASN_CODE report_cfg_eutra_s::pack(bit_ref& bref) const
group_flags[2] |= trigger_quant_csi_rs_r12_present;
group_flags[3] |= report_sstd_meas_r13_present;
group_flags[3] |= rs_sinr_cfg_r13.is_present();
- group_flags[3] |= use_white_cell_list_r13_present;
+ group_flags[3] |= use_allowed_cell_list_r13_present;
group_flags[3] |= meas_rssi_report_cfg_r13.is_present();
group_flags[3] |= include_multi_band_info_r13_present;
group_flags[3] |= ul_delay_cfg_r13.is_present();
@@ -6001,6 +7014,10 @@ SRSASN_CODE report_cfg_eutra_s::pack(bit_ref& bref) const
group_flags[7] |= purpose_r15_present;
group_flags[7] |= nof_trigger_cells_r15_present;
group_flags[7] |= a4_a5_report_on_leave_r15_present;
+ group_flags[8] |= cond_recfg_trigger_eutra_r16.is_present();
+ group_flags[8] |= ul_delay_value_cfg_r16.is_present();
+ group_flags[9] |= include_uncom_bar_pre_meas_r17_present;
+ group_flags[9] |= coarse_location_req_r17_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -6056,7 +7073,7 @@ SRSASN_CODE report_cfg_eutra_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(report_sstd_meas_r13_present, 1));
HANDLE_CODE(bref.pack(rs_sinr_cfg_r13.is_present(), 1));
- HANDLE_CODE(bref.pack(use_white_cell_list_r13_present, 1));
+ HANDLE_CODE(bref.pack(use_allowed_cell_list_r13_present, 1));
HANDLE_CODE(bref.pack(meas_rssi_report_cfg_r13.is_present(), 1));
HANDLE_CODE(bref.pack(include_multi_band_info_r13_present, 1));
HANDLE_CODE(bref.pack(ul_delay_cfg_r13.is_present(), 1));
@@ -6066,8 +7083,8 @@ SRSASN_CODE report_cfg_eutra_s::pack(bit_ref& bref) const
if (rs_sinr_cfg_r13.is_present()) {
HANDLE_CODE(rs_sinr_cfg_r13->pack(bref));
}
- if (use_white_cell_list_r13_present) {
- HANDLE_CODE(bref.pack(use_white_cell_list_r13, 1));
+ if (use_allowed_cell_list_r13_present) {
+ HANDLE_CODE(bref.pack(use_allowed_cell_list_r13, 1));
}
if (meas_rssi_report_cfg_r13.is_present()) {
HANDLE_CODE(meas_rssi_report_cfg_r13->pack(bref));
@@ -6121,6 +7138,27 @@ SRSASN_CODE report_cfg_eutra_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(a4_a5_report_on_leave_r15, 1));
}
}
+ if (group_flags[8]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(cond_recfg_trigger_eutra_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(ul_delay_value_cfg_r16.is_present(), 1));
+ if (cond_recfg_trigger_eutra_r16.is_present()) {
+ HANDLE_CODE(cond_recfg_trigger_eutra_r16->pack(bref));
+ }
+ if (ul_delay_value_cfg_r16.is_present()) {
+ HANDLE_CODE(ul_delay_value_cfg_r16->pack(bref));
+ }
+ }
+ if (group_flags[9]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(include_uncom_bar_pre_meas_r17_present, 1));
+ HANDLE_CODE(bref.pack(coarse_location_req_r17_present, 1));
+ if (include_uncom_bar_pre_meas_r17_present) {
+ HANDLE_CODE(bref.pack(include_uncom_bar_pre_meas_r17, 1));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -6135,7 +7173,7 @@ SRSASN_CODE report_cfg_eutra_s::unpack(cbit_ref& bref)
HANDLE_CODE(report_amount.unpack(bref));
if (ext) {
- ext_groups_unpacker_guard group_flags(8);
+ ext_groups_unpacker_guard group_flags(10);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -6199,7 +7237,7 @@ SRSASN_CODE report_cfg_eutra_s::unpack(cbit_ref& bref)
bool rs_sinr_cfg_r13_present;
HANDLE_CODE(bref.unpack(rs_sinr_cfg_r13_present, 1));
rs_sinr_cfg_r13.set_present(rs_sinr_cfg_r13_present);
- HANDLE_CODE(bref.unpack(use_white_cell_list_r13_present, 1));
+ HANDLE_CODE(bref.unpack(use_allowed_cell_list_r13_present, 1));
bool meas_rssi_report_cfg_r13_present;
HANDLE_CODE(bref.unpack(meas_rssi_report_cfg_r13_present, 1));
meas_rssi_report_cfg_r13.set_present(meas_rssi_report_cfg_r13_present);
@@ -6213,8 +7251,8 @@ SRSASN_CODE report_cfg_eutra_s::unpack(cbit_ref& bref)
if (rs_sinr_cfg_r13.is_present()) {
HANDLE_CODE(rs_sinr_cfg_r13->unpack(bref));
}
- if (use_white_cell_list_r13_present) {
- HANDLE_CODE(bref.unpack(use_white_cell_list_r13, 1));
+ if (use_allowed_cell_list_r13_present) {
+ HANDLE_CODE(bref.unpack(use_allowed_cell_list_r13, 1));
}
if (meas_rssi_report_cfg_r13.is_present()) {
HANDLE_CODE(meas_rssi_report_cfg_r13->unpack(bref));
@@ -6272,6 +7310,31 @@ SRSASN_CODE report_cfg_eutra_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(a4_a5_report_on_leave_r15, 1));
}
}
+ if (group_flags[8]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool cond_recfg_trigger_eutra_r16_present;
+ HANDLE_CODE(bref.unpack(cond_recfg_trigger_eutra_r16_present, 1));
+ cond_recfg_trigger_eutra_r16.set_present(cond_recfg_trigger_eutra_r16_present);
+ bool ul_delay_value_cfg_r16_present;
+ HANDLE_CODE(bref.unpack(ul_delay_value_cfg_r16_present, 1));
+ ul_delay_value_cfg_r16.set_present(ul_delay_value_cfg_r16_present);
+ if (cond_recfg_trigger_eutra_r16.is_present()) {
+ HANDLE_CODE(cond_recfg_trigger_eutra_r16->unpack(bref));
+ }
+ if (ul_delay_value_cfg_r16.is_present()) {
+ HANDLE_CODE(ul_delay_value_cfg_r16->unpack(bref));
+ }
+ }
+ if (group_flags[9]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(include_uncom_bar_pre_meas_r17_present, 1));
+ HANDLE_CODE(bref.unpack(coarse_location_req_r17_present, 1));
+ if (include_uncom_bar_pre_meas_r17_present) {
+ HANDLE_CODE(bref.unpack(include_uncom_bar_pre_meas_r17, 1));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -6332,8 +7395,8 @@ void report_cfg_eutra_s::to_json(json_writer& j) const
j.write_fieldname("rs-sinr-Config-r13");
rs_sinr_cfg_r13->to_json(j);
}
- if (use_white_cell_list_r13_present) {
- j.write_bool("useWhiteCellList-r13", use_white_cell_list_r13);
+ if (use_allowed_cell_list_r13_present) {
+ j.write_bool("useAllowedCellList-r13", use_allowed_cell_list_r13);
}
if (meas_rssi_report_cfg_r13.is_present()) {
j.write_fieldname("measRSSI-ReportConfig-r13");
@@ -6372,6 +7435,20 @@ void report_cfg_eutra_s::to_json(json_writer& j) const
if (a4_a5_report_on_leave_r15_present) {
j.write_bool("a4-a5-ReportOnLeave-r15", a4_a5_report_on_leave_r15);
}
+ if (cond_recfg_trigger_eutra_r16.is_present()) {
+ j.write_fieldname("condReconfigurationTriggerEUTRA-r16");
+ cond_recfg_trigger_eutra_r16->to_json(j);
+ }
+ if (ul_delay_value_cfg_r16.is_present()) {
+ j.write_fieldname("ul-DelayValueConfig-r16");
+ ul_delay_value_cfg_r16->to_json(j);
+ }
+ if (include_uncom_bar_pre_meas_r17_present) {
+ j.write_bool("includeUncomBarPreMeas-r17", include_uncom_bar_pre_meas_r17);
+ }
+ if (coarse_location_req_r17_present) {
+ j.write_str("coarseLocationReq-r17", "true");
+ }
}
j.end_obj();
}
@@ -6406,8 +7483,8 @@ bool report_cfg_eutra_s::operator==(const report_cfg_eutra_s& other) const
(not report_sstd_meas_r13_present or report_sstd_meas_r13 == other.report_sstd_meas_r13) and
rs_sinr_cfg_r13.is_present() == other.rs_sinr_cfg_r13.is_present() and
(not rs_sinr_cfg_r13.is_present() or *rs_sinr_cfg_r13 == *other.rs_sinr_cfg_r13) and
- use_white_cell_list_r13_present == other.use_white_cell_list_r13_present and
- (not use_white_cell_list_r13_present or use_white_cell_list_r13 == other.use_white_cell_list_r13) and
+ use_allowed_cell_list_r13_present == other.use_allowed_cell_list_r13_present and
+ (not use_allowed_cell_list_r13_present or use_allowed_cell_list_r13 == other.use_allowed_cell_list_r13) and
meas_rssi_report_cfg_r13.is_present() == other.meas_rssi_report_cfg_r13.is_present() and
(not meas_rssi_report_cfg_r13.is_present() or
*meas_rssi_report_cfg_r13 == *other.meas_rssi_report_cfg_r13) and
@@ -6429,7 +7506,16 @@ bool report_cfg_eutra_s::operator==(const report_cfg_eutra_s& other) const
nof_trigger_cells_r15_present == other.nof_trigger_cells_r15_present and
(not nof_trigger_cells_r15_present or nof_trigger_cells_r15 == other.nof_trigger_cells_r15) and
a4_a5_report_on_leave_r15_present == other.a4_a5_report_on_leave_r15_present and
- (not a4_a5_report_on_leave_r15_present or a4_a5_report_on_leave_r15 == other.a4_a5_report_on_leave_r15)));
+ (not a4_a5_report_on_leave_r15_present or a4_a5_report_on_leave_r15 == other.a4_a5_report_on_leave_r15) and
+ cond_recfg_trigger_eutra_r16.is_present() == other.cond_recfg_trigger_eutra_r16.is_present() and
+ (not cond_recfg_trigger_eutra_r16.is_present() or
+ *cond_recfg_trigger_eutra_r16 == *other.cond_recfg_trigger_eutra_r16) and
+ ul_delay_value_cfg_r16.is_present() == other.ul_delay_value_cfg_r16.is_present() and
+ (not ul_delay_value_cfg_r16.is_present() or *ul_delay_value_cfg_r16 == *other.ul_delay_value_cfg_r16) and
+ include_uncom_bar_pre_meas_r17_present == other.include_uncom_bar_pre_meas_r17_present and
+ (not include_uncom_bar_pre_meas_r17_present or
+ include_uncom_bar_pre_meas_r17 == other.include_uncom_bar_pre_meas_r17) and
+ coarse_location_req_r17_present == other.coarse_location_req_r17_present));
}
void report_cfg_eutra_s::trigger_type_c_::destroy_()
@@ -6805,6 +7891,9 @@ SRSASN_CODE report_cfg_inter_rat_s::pack(bit_ref& bref) const
group_flags[6] |= report_quant_rs_idx_nr_r15.is_present();
group_flags[6] |= report_rs_idx_results_nr_present;
group_flags[6] |= report_sftd_meas_r15_present;
+ group_flags[7] |= use_autonomous_gaps_nr_r16_present;
+ group_flags[7] |= meas_rssi_report_cfg_nr_r16.is_present();
+ group_flags[8] |= cond_recfg_trigger_nr_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -6873,6 +7962,23 @@ SRSASN_CODE report_cfg_inter_rat_s::pack(bit_ref& bref) const
HANDLE_CODE(report_sftd_meas_r15.pack(bref));
}
}
+ if (group_flags[7]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(use_autonomous_gaps_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_rssi_report_cfg_nr_r16.is_present(), 1));
+ if (meas_rssi_report_cfg_nr_r16.is_present()) {
+ HANDLE_CODE(meas_rssi_report_cfg_nr_r16->pack(bref));
+ }
+ }
+ if (group_flags[8]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(cond_recfg_trigger_nr_r17.is_present(), 1));
+ if (cond_recfg_trigger_nr_r17.is_present()) {
+ HANDLE_CODE(cond_recfg_trigger_nr_r17->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -6885,7 +7991,7 @@ SRSASN_CODE report_cfg_inter_rat_s::unpack(cbit_ref& bref)
HANDLE_CODE(report_amount.unpack(bref));
if (ext) {
- ext_groups_unpacker_guard group_flags(7);
+ ext_groups_unpacker_guard group_flags(9);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -6962,6 +8068,27 @@ SRSASN_CODE report_cfg_inter_rat_s::unpack(cbit_ref& bref)
HANDLE_CODE(report_sftd_meas_r15.unpack(bref));
}
}
+ if (group_flags[7]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(use_autonomous_gaps_nr_r16_present, 1));
+ bool meas_rssi_report_cfg_nr_r16_present;
+ HANDLE_CODE(bref.unpack(meas_rssi_report_cfg_nr_r16_present, 1));
+ meas_rssi_report_cfg_nr_r16.set_present(meas_rssi_report_cfg_nr_r16_present);
+ if (meas_rssi_report_cfg_nr_r16.is_present()) {
+ HANDLE_CODE(meas_rssi_report_cfg_nr_r16->unpack(bref));
+ }
+ }
+ if (group_flags[8]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool cond_recfg_trigger_nr_r17_present;
+ HANDLE_CODE(bref.unpack(cond_recfg_trigger_nr_r17_present, 1));
+ cond_recfg_trigger_nr_r17.set_present(cond_recfg_trigger_nr_r17_present);
+ if (cond_recfg_trigger_nr_r17.is_present()) {
+ HANDLE_CODE(cond_recfg_trigger_nr_r17->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -7011,6 +8138,17 @@ void report_cfg_inter_rat_s::to_json(json_writer& j) const
if (report_sftd_meas_r15_present) {
j.write_str("reportSFTD-Meas-r15", report_sftd_meas_r15.to_string());
}
+ if (use_autonomous_gaps_nr_r16_present) {
+ j.write_str("useAutonomousGapsNR-r16", "setup");
+ }
+ if (meas_rssi_report_cfg_nr_r16.is_present()) {
+ j.write_fieldname("measRSSI-ReportConfigNR-r16");
+ meas_rssi_report_cfg_nr_r16->to_json(j);
+ }
+ if (cond_recfg_trigger_nr_r17.is_present()) {
+ j.write_fieldname("condReconfigurationTriggerNR-r17");
+ cond_recfg_trigger_nr_r17->to_json(j);
+ }
}
j.end_obj();
}
@@ -7040,7 +8178,14 @@ bool report_cfg_inter_rat_s::operator==(const report_cfg_inter_rat_s& other) con
report_rs_idx_results_nr_present == other.report_rs_idx_results_nr_present and
(not report_rs_idx_results_nr_present or report_rs_idx_results_nr == other.report_rs_idx_results_nr) and
report_sftd_meas_r15_present == other.report_sftd_meas_r15_present and
- (not report_sftd_meas_r15_present or report_sftd_meas_r15 == other.report_sftd_meas_r15)));
+ (not report_sftd_meas_r15_present or report_sftd_meas_r15 == other.report_sftd_meas_r15) and
+ use_autonomous_gaps_nr_r16_present == other.use_autonomous_gaps_nr_r16_present and
+ meas_rssi_report_cfg_nr_r16.is_present() == other.meas_rssi_report_cfg_nr_r16.is_present() and
+ (not meas_rssi_report_cfg_nr_r16.is_present() or
+ *meas_rssi_report_cfg_nr_r16 == *other.meas_rssi_report_cfg_nr_r16) and
+ cond_recfg_trigger_nr_r17.is_present() == other.cond_recfg_trigger_nr_r17.is_present() and
+ (not cond_recfg_trigger_nr_r17.is_present() or
+ *cond_recfg_trigger_nr_r17 == *other.cond_recfg_trigger_nr_r17)));
}
void report_cfg_inter_rat_s::trigger_type_c_::destroy_()
@@ -8671,6 +9816,291 @@ SRSASN_CODE meas_obj_to_add_mod_ext_r13_s::meas_obj_r13_c_::unpack(cbit_ref& bre
return SRSASN_SUCCESS;
}
+// PUR-PeriodicityAndOffset-r16 ::= CHOICE
+void pur_periodicity_and_offset_r16_c::destroy_() {}
+void pur_periodicity_and_offset_r16_c::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+}
+pur_periodicity_and_offset_r16_c::pur_periodicity_and_offset_r16_c(const pur_periodicity_and_offset_r16_c& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::periodicity8:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity16:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity32:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity64:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity128:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity256:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::periodicity512:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::periodicity1024:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::periodicity2048:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::periodicity4096:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::periodicity8192:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_periodicity_and_offset_r16_c");
+ }
+}
+pur_periodicity_and_offset_r16_c&
+pur_periodicity_and_offset_r16_c::operator=(const pur_periodicity_and_offset_r16_c& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::periodicity8:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity16:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity32:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity64:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity128:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity256:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::periodicity512:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::periodicity1024:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::periodicity2048:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::periodicity4096:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::periodicity8192:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_periodicity_and_offset_r16_c");
+ }
+
+ return *this;
+}
+uint8_t& pur_periodicity_and_offset_r16_c::set_periodicity8()
+{
+ set(types::periodicity8);
+ return c.get<uint8_t>();
+}
+uint8_t& pur_periodicity_and_offset_r16_c::set_periodicity16()
+{
+ set(types::periodicity16);
+ return c.get<uint8_t>();
+}
+uint8_t& pur_periodicity_and_offset_r16_c::set_periodicity32()
+{
+ set(types::periodicity32);
+ return c.get<uint8_t>();
+}
+uint8_t& pur_periodicity_and_offset_r16_c::set_periodicity64()
+{
+ set(types::periodicity64);
+ return c.get<uint8_t>();
+}
+uint8_t& pur_periodicity_and_offset_r16_c::set_periodicity128()
+{
+ set(types::periodicity128);
+ return c.get<uint8_t>();
+}
+uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity256()
+{
+ set(types::periodicity256);
+ return c.get<uint16_t>();
+}
+uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity512()
+{
+ set(types::periodicity512);
+ return c.get<uint16_t>();
+}
+uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity1024()
+{
+ set(types::periodicity1024);
+ return c.get<uint16_t>();
+}
+uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity2048()
+{
+ set(types::periodicity2048);
+ return c.get<uint16_t>();
+}
+uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity4096()
+{
+ set(types::periodicity4096);
+ return c.get<uint16_t>();
+}
+uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity8192()
+{
+ set(types::periodicity8192);
+ return c.get<uint16_t>();
+}
+void pur_periodicity_and_offset_r16_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::periodicity8:
+ j.write_int("periodicity8", c.get<uint8_t>());
+ break;
+ case types::periodicity16:
+ j.write_int("periodicity16", c.get<uint8_t>());
+ break;
+ case types::periodicity32:
+ j.write_int("periodicity32", c.get<uint8_t>());
+ break;
+ case types::periodicity64:
+ j.write_int("periodicity64", c.get<uint8_t>());
+ break;
+ case types::periodicity128:
+ j.write_int("periodicity128", c.get<uint8_t>());
+ break;
+ case types::periodicity256:
+ j.write_int("periodicity256", c.get<uint16_t>());
+ break;
+ case types::periodicity512:
+ j.write_int("periodicity512", c.get<uint16_t>());
+ break;
+ case types::periodicity1024:
+ j.write_int("periodicity1024", c.get<uint16_t>());
+ break;
+ case types::periodicity2048:
+ j.write_int("periodicity2048", c.get<uint16_t>());
+ break;
+ case types::periodicity4096:
+ j.write_int("periodicity4096", c.get<uint16_t>());
+ break;
+ case types::periodicity8192:
+ j.write_int("periodicity8192", c.get<uint16_t>());
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_periodicity_and_offset_r16_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE pur_periodicity_and_offset_r16_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::periodicity8:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)7u));
+ break;
+ case types::periodicity16:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)15u));
+ break;
+ case types::periodicity32:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)31u));
+ break;
+ case types::periodicity64:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)63u));
+ break;
+ case types::periodicity128:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)127u));
+ break;
+ case types::periodicity256:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)255u));
+ break;
+ case types::periodicity512:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)511u));
+ break;
+ case types::periodicity1024:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)1023u));
+ break;
+ case types::periodicity2048:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)2047u));
+ break;
+ case types::periodicity4096:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)4095u));
+ break;
+ case types::periodicity8192:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)8191u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_periodicity_and_offset_r16_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_periodicity_and_offset_r16_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::periodicity8:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)7u));
+ break;
+ case types::periodicity16:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)15u));
+ break;
+ case types::periodicity32:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)31u));
+ break;
+ case types::periodicity64:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)63u));
+ break;
+ case types::periodicity128:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)127u));
+ break;
+ case types::periodicity256:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)255u));
+ break;
+ case types::periodicity512:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)511u));
+ break;
+ case types::periodicity1024:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)1023u));
+ break;
+ case types::periodicity2048:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)2047u));
+ break;
+ case types::periodicity4096:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)4095u));
+ break;
+ case types::periodicity8192:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)8191u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_periodicity_and_offset_r16_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
// QuantityConfigCDMA2000 ::= SEQUENCE
SRSASN_CODE quant_cfg_cdma2000_s::pack(bit_ref& bref) const
{
@@ -10999,6 +12429,98 @@ SRSASN_CODE meas_cfg_s::height_thresh_ref_r15_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// EventType-r17 ::= CHOICE
+void event_type_r17_c::set(types::options e)
+{
+ type_ = e;
+}
+void event_type_r17_c::set_out_of_coverage()
+{
+ set(types::out_of_coverage);
+}
+event_type_r17_c::event_l1_s_& event_type_r17_c::set_event_l1()
+{
+ set(types::event_l1);
+ return c;
+}
+void event_type_r17_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::out_of_coverage:
+ break;
+ case types::event_l1:
+ j.write_fieldname("eventL1");
+ j.start_obj();
+ j.write_fieldname("l1-Threshold-r17");
+ c.l1_thres_r17.to_json(j);
+ j.write_int("hysteresis-r17", c.hysteresis_r17);
+ j.write_str("timeToTrigger-r17", c.time_to_trigger_r17.to_string());
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "event_type_r17_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE event_type_r17_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::out_of_coverage:
+ break;
+ case types::event_l1:
+ HANDLE_CODE(c.l1_thres_r17.pack(bref));
+ HANDLE_CODE(pack_integer(bref, c.hysteresis_r17, (uint8_t)0u, (uint8_t)30u));
+ HANDLE_CODE(c.time_to_trigger_r17.pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "event_type_r17_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE event_type_r17_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::out_of_coverage:
+ break;
+ case types::event_l1:
+ HANDLE_CODE(c.l1_thres_r17.unpack(bref));
+ HANDLE_CODE(unpack_integer(c.hysteresis_r17, bref, (uint8_t)0u, (uint8_t)30u));
+ HANDLE_CODE(c.time_to_trigger_r17.unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "event_type_r17_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+// LoggedEventTriggerConfig-r17 ::= SEQUENCE
+SRSASN_CODE logged_event_trigger_cfg_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(event_type_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE logged_event_trigger_cfg_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(event_type_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void logged_event_trigger_cfg_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("eventType-r17");
+ event_type_r17.to_json(j);
+ j.end_obj();
+}
+
// CarrierFreqGERAN ::= SEQUENCE
SRSASN_CODE carrier_freq_geran_s::pack(bit_ref& bref) const
{
@@ -11022,6 +12544,49 @@ void carrier_freq_geran_s::to_json(json_writer& j) const
j.end_obj();
}
+// LoggedMeasurementConfiguration-v1700-IEs ::= SEQUENCE
+SRSASN_CODE logged_meas_cfg_v1700_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(logged_event_trigger_cfg_r17_present, 1));
+ HANDLE_CODE(bref.pack(meas_uncom_bar_pre_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (logged_event_trigger_cfg_r17_present) {
+ HANDLE_CODE(logged_event_trigger_cfg_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE logged_meas_cfg_v1700_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(logged_event_trigger_cfg_r17_present, 1));
+ HANDLE_CODE(bref.unpack(meas_uncom_bar_pre_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (logged_event_trigger_cfg_r17_present) {
+ HANDLE_CODE(logged_event_trigger_cfg_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void logged_meas_cfg_v1700_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (logged_event_trigger_cfg_r17_present) {
+ j.write_fieldname("loggedEventTriggerConfig-r17");
+ logged_event_trigger_cfg_r17.to_json(j);
+ }
+ if (meas_uncom_bar_pre_r17_present) {
+ j.write_str("measUncomBarPre-r17", "true");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// LoggedMeasurementConfiguration-v1530-IEs ::= SEQUENCE
SRSASN_CODE logged_meas_cfg_v1530_ies_s::pack(bit_ref& bref) const
{
@@ -11035,6 +12600,9 @@ SRSASN_CODE logged_meas_cfg_v1530_ies_s::pack(bit_ref& bref) const
if (wlan_name_list_r15_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, wlan_name_list_r15, 1, 4));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -11050,6 +12618,9 @@ SRSASN_CODE logged_meas_cfg_v1530_ies_s::unpack(cbit_ref& bref)
if (wlan_name_list_r15_present) {
HANDLE_CODE(unpack_dyn_seq_of(wlan_name_list_r15, bref, 1, 4));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -11072,8 +12643,7 @@ void logged_meas_cfg_v1530_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -11102,6 +12672,32 @@ void cell_global_id_eutra_s::to_json(json_writer& j) const
j.end_obj();
}
+// DAPS-PowerCoordinationInfo-r16 ::= SEQUENCE
+SRSASN_CODE daps_pwr_coordination_info_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, p_daps_source_r16, (uint8_t)1u, (uint8_t)16u));
+ HANDLE_CODE(pack_integer(bref, p_daps_target_r16, (uint8_t)1u, (uint8_t)16u));
+ HANDLE_CODE(pack_integer(bref, pwr_ctrl_mode_r16, (uint8_t)1u, (uint8_t)2u));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE daps_pwr_coordination_info_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(p_daps_source_r16, bref, (uint8_t)1u, (uint8_t)16u));
+ HANDLE_CODE(unpack_integer(p_daps_target_r16, bref, (uint8_t)1u, (uint8_t)16u));
+ HANDLE_CODE(unpack_integer(pwr_ctrl_mode_r16, bref, (uint8_t)1u, (uint8_t)2u));
+
+ return SRSASN_SUCCESS;
+}
+void daps_pwr_coordination_info_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("p-DAPS-Source-r16", p_daps_source_r16);
+ j.write_int("p-DAPS-Target-r16", p_daps_target_r16);
+ j.write_int("powerControlMode-r16", pwr_ctrl_mode_r16);
+ j.end_obj();
+}
+
// CarrierBandwidthEUTRA ::= SEQUENCE
SRSASN_CODE carrier_bw_eutra_s::pack(bit_ref& bref) const
{
@@ -11253,6 +12849,39 @@ void carrier_freq_eutra_v9e0_s::to_json(json_writer& j) const
j.end_obj();
}
+// DAPS-Config-r16 ::= SEQUENCE
+SRSASN_CODE daps_cfg_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ 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 daps_cfg_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ 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 daps_cfg_r16_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();
+}
+
// MobilityControlInfoV2X-r14 ::= SEQUENCE
SRSASN_CODE mob_ctrl_info_v2x_r14_s::pack(bit_ref& bref) const
{
@@ -11363,6 +12992,7 @@ SRSASN_CODE mob_ctrl_info_s::pack(bit_ref& bref) const
group_flags[2] |= same_sfn_ind_r14_present;
group_flags[3] |= mib_repeat_status_r14_present;
group_flags[3] |= sched_info_sib1_br_r14_present;
+ group_flags[4] |= daps_cfg_r16.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -11408,6 +13038,14 @@ SRSASN_CODE mob_ctrl_info_s::pack(bit_ref& bref) const
HANDLE_CODE(pack_integer(bref, sched_info_sib1_br_r14, (uint8_t)0u, (uint8_t)31u));
}
}
+ if (group_flags[4]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(daps_cfg_r16.is_present(), 1));
+ if (daps_cfg_r16.is_present()) {
+ HANDLE_CODE(daps_cfg_r16->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -11437,7 +13075,7 @@ SRSASN_CODE mob_ctrl_info_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(4);
+ ext_groups_unpacker_guard group_flags(5);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -11489,6 +13127,16 @@ SRSASN_CODE mob_ctrl_info_s::unpack(cbit_ref& bref)
HANDLE_CODE(unpack_integer(sched_info_sib1_br_r14, bref, (uint8_t)0u, (uint8_t)31u));
}
}
+ if (group_flags[4]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool daps_cfg_r16_present;
+ HANDLE_CODE(bref.unpack(daps_cfg_r16_present, 1));
+ daps_cfg_r16.set_present(daps_cfg_r16_present);
+ if (daps_cfg_r16.is_present()) {
+ HANDLE_CODE(daps_cfg_r16->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -11546,6 +13194,10 @@ void mob_ctrl_info_s::to_json(json_writer& j) const
if (sched_info_sib1_br_r14_present) {
j.write_int("schedulingInfoSIB1-BR-r14", sched_info_sib1_br_r14);
}
+ if (daps_cfg_r16.is_present()) {
+ j.write_fieldname("daps-Config-r16");
+ daps_cfg_r16->to_json(j);
+ }
}
j.end_obj();
}
@@ -11591,6 +13243,141 @@ void trace_ref_r10_s::to_json(json_writer& j) const
j.end_obj();
}
+// MeasResultNR-r15 ::= SEQUENCE
+SRSASN_CODE meas_result_nr_r15_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(rsrp_result_r15_present, 1));
+ HANDLE_CODE(bref.pack(rsrq_result_r15_present, 1));
+ HANDLE_CODE(bref.pack(rs_sinr_result_r15_present, 1));
+
+ if (rsrp_result_r15_present) {
+ HANDLE_CODE(pack_integer(bref, rsrp_result_r15, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (rsrq_result_r15_present) {
+ HANDLE_CODE(pack_integer(bref, rsrq_result_r15, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (rs_sinr_result_r15_present) {
+ HANDLE_CODE(pack_integer(bref, rs_sinr_result_r15, (uint8_t)0u, (uint8_t)127u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_result_nr_r15_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(rsrp_result_r15_present, 1));
+ HANDLE_CODE(bref.unpack(rsrq_result_r15_present, 1));
+ HANDLE_CODE(bref.unpack(rs_sinr_result_r15_present, 1));
+
+ if (rsrp_result_r15_present) {
+ HANDLE_CODE(unpack_integer(rsrp_result_r15, bref, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (rsrq_result_r15_present) {
+ HANDLE_CODE(unpack_integer(rsrq_result_r15, bref, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (rs_sinr_result_r15_present) {
+ HANDLE_CODE(unpack_integer(rs_sinr_result_r15, bref, (uint8_t)0u, (uint8_t)127u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void meas_result_nr_r15_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (rsrp_result_r15_present) {
+ j.write_int("rsrpResult-r15", rsrp_result_r15);
+ }
+ if (rsrq_result_r15_present) {
+ j.write_int("rsrqResult-r15", rsrq_result_r15);
+ }
+ if (rs_sinr_result_r15_present) {
+ j.write_int("rs-sinr-Result-r15", rs_sinr_result_r15);
+ }
+ j.end_obj();
+}
+
+// PLMN-IdentityInfoNR-r15 ::= SEQUENCE
+SRSASN_CODE plmn_id_info_nr_r15_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(tac_r15_present, 1));
+ HANDLE_CODE(bref.pack(ran_area_code_r15_present, 1));
+
+ HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_list_r15, 1, 12));
+ if (tac_r15_present) {
+ HANDLE_CODE(tac_r15.pack(bref));
+ }
+ if (ran_area_code_r15_present) {
+ HANDLE_CODE(pack_integer(bref, ran_area_code_r15, (uint16_t)0u, (uint16_t)255u));
+ }
+ HANDLE_CODE(cell_id_r15.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE plmn_id_info_nr_r15_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(tac_r15_present, 1));
+ HANDLE_CODE(bref.unpack(ran_area_code_r15_present, 1));
+
+ HANDLE_CODE(unpack_dyn_seq_of(plmn_id_list_r15, bref, 1, 12));
+ if (tac_r15_present) {
+ HANDLE_CODE(tac_r15.unpack(bref));
+ }
+ if (ran_area_code_r15_present) {
+ HANDLE_CODE(unpack_integer(ran_area_code_r15, bref, (uint16_t)0u, (uint16_t)255u));
+ }
+ HANDLE_CODE(cell_id_r15.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void plmn_id_info_nr_r15_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.start_array("plmn-IdentityList-r15");
+ for (const auto& e1 : plmn_id_list_r15) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ if (tac_r15_present) {
+ j.write_str("trackingAreaCode-r15", tac_r15.to_string());
+ }
+ if (ran_area_code_r15_present) {
+ j.write_int("ran-AreaCode-r15", ran_area_code_r15);
+ }
+ j.write_str("cellIdentity-r15", cell_id_r15.to_string());
+ j.end_obj();
+}
+
+// PLMN-IdentityInfoNR-v1710 ::= SEQUENCE
+SRSASN_CODE plmn_id_info_nr_v1710_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(gnb_id_len_r17_present, 1));
+
+ if (gnb_id_len_r17_present) {
+ HANDLE_CODE(pack_integer(bref, gnb_id_len_r17, (uint8_t)22u, (uint8_t)32u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE plmn_id_info_nr_v1710_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(gnb_id_len_r17_present, 1));
+
+ if (gnb_id_len_r17_present) {
+ HANDLE_CODE(unpack_integer(gnb_id_len_r17, bref, (uint8_t)22u, (uint8_t)32u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void plmn_id_info_nr_v1710_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (gnb_id_len_r17_present) {
+ j.write_int("gNB-ID-Length-r17", gnb_id_len_r17);
+ }
+ j.end_obj();
+}
+
// CellGlobalIdCDMA2000 ::= CHOICE
void cell_global_id_cdma2000_c::destroy_()
{
@@ -11719,6 +13506,42 @@ SRSASN_CODE cell_global_id_cdma2000_c::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// MeasResultSSB-Index-r15 ::= SEQUENCE
+SRSASN_CODE meas_result_ssb_idx_r15_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(meas_result_ssb_idx_r15_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, ssb_idx_r15, (uint8_t)0u, (uint8_t)63u));
+ if (meas_result_ssb_idx_r15_present) {
+ HANDLE_CODE(meas_result_ssb_idx_r15.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_result_ssb_idx_r15_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(meas_result_ssb_idx_r15_present, 1));
+
+ HANDLE_CODE(unpack_integer(ssb_idx_r15, bref, (uint8_t)0u, (uint8_t)63u));
+ if (meas_result_ssb_idx_r15_present) {
+ HANDLE_CODE(meas_result_ssb_idx_r15.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void meas_result_ssb_idx_r15_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("ssb-Index-r15", ssb_idx_r15);
+ if (meas_result_ssb_idx_r15_present) {
+ j.write_fieldname("measResultSSB-Index-r15");
+ meas_result_ssb_idx_r15.to_json(j);
+ }
+ j.end_obj();
+}
+
// AdditionalSI-Info-r9 ::= SEQUENCE
SRSASN_CODE add_si_info_r9_s::pack(bit_ref& bref) const
{
@@ -11783,6 +13606,112 @@ void bler_result_r12_s::to_json(json_writer& j) const
j.end_obj();
}
+// CGI-InfoNR-r15 ::= SEQUENCE
+SRSASN_CODE cgi_info_nr_r15_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(plmn_id_info_list_r15_present, 1));
+ HANDLE_CODE(bref.pack(freq_band_list_r15_present, 1));
+ HANDLE_CODE(bref.pack(no_sib1_r15_present, 1));
+
+ if (plmn_id_info_list_r15_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_info_list_r15, 1, 12));
+ }
+ if (freq_band_list_r15_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list_r15, 1, 32, integer_packer<uint16_t>(1, 1024)));
+ }
+ if (no_sib1_r15_present) {
+ HANDLE_CODE(pack_integer(bref, no_sib1_r15.ssb_subcarrier_offset_r15, (uint8_t)0u, (uint8_t)15u));
+ HANDLE_CODE(pack_integer(bref, no_sib1_r15.pdcch_cfg_sib1_r15, (uint16_t)0u, (uint16_t)255u));
+ }
+
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= plmn_id_info_list_v1710.is_present();
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(plmn_id_info_list_v1710.is_present(), 1));
+ if (plmn_id_info_list_v1710.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *plmn_id_info_list_v1710, 1, 12));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cgi_info_nr_r15_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(plmn_id_info_list_r15_present, 1));
+ HANDLE_CODE(bref.unpack(freq_band_list_r15_present, 1));
+ HANDLE_CODE(bref.unpack(no_sib1_r15_present, 1));
+
+ if (plmn_id_info_list_r15_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(plmn_id_info_list_r15, bref, 1, 12));
+ }
+ if (freq_band_list_r15_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(freq_band_list_r15, bref, 1, 32, integer_packer<uint16_t>(1, 1024)));
+ }
+ if (no_sib1_r15_present) {
+ HANDLE_CODE(unpack_integer(no_sib1_r15.ssb_subcarrier_offset_r15, bref, (uint8_t)0u, (uint8_t)15u));
+ HANDLE_CODE(unpack_integer(no_sib1_r15.pdcch_cfg_sib1_r15, bref, (uint16_t)0u, (uint16_t)255u));
+ }
+
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool plmn_id_info_list_v1710_present;
+ HANDLE_CODE(bref.unpack(plmn_id_info_list_v1710_present, 1));
+ plmn_id_info_list_v1710.set_present(plmn_id_info_list_v1710_present);
+ if (plmn_id_info_list_v1710.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*plmn_id_info_list_v1710, bref, 1, 12));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+void cgi_info_nr_r15_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (plmn_id_info_list_r15_present) {
+ j.start_array("plmn-IdentityInfoList-r15");
+ for (const auto& e1 : plmn_id_info_list_r15) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (freq_band_list_r15_present) {
+ j.start_array("frequencyBandList-r15");
+ for (const auto& e1 : freq_band_list_r15) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ if (no_sib1_r15_present) {
+ j.write_fieldname("noSIB1-r15");
+ j.start_obj();
+ j.write_int("ssb-SubcarrierOffset-r15", no_sib1_r15.ssb_subcarrier_offset_r15);
+ j.write_int("pdcch-ConfigSIB1-r15", no_sib1_r15.pdcch_cfg_sib1_r15);
+ j.end_obj();
+ }
+ if (ext) {
+ if (plmn_id_info_list_v1710.is_present()) {
+ j.start_array("plmn-IdentityInfoList-v1710");
+ for (const auto& e1 : *plmn_id_info_list_v1710) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ }
+ j.end_obj();
+}
+
// CellGlobalIdUTRA ::= SEQUENCE
SRSASN_CODE cell_global_id_utra_s::pack(bit_ref& bref) const
{
@@ -11911,6 +13840,84 @@ void data_bler_mch_result_r12_s::to_json(json_writer& j) const
j.end_obj();
}
+// MeasResultCellNR-r15 ::= SEQUENCE
+SRSASN_CODE meas_result_cell_nr_r15_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(meas_result_rs_idx_list_r15_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, pci_r15, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(meas_result_cell_r15.pack(bref));
+ if (meas_result_rs_idx_list_r15_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_rs_idx_list_r15, 1, 32));
+ }
+
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= cgi_info_r15.is_present();
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(cgi_info_r15.is_present(), 1));
+ if (cgi_info_r15.is_present()) {
+ HANDLE_CODE(cgi_info_r15->pack(bref));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_result_cell_nr_r15_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(meas_result_rs_idx_list_r15_present, 1));
+
+ HANDLE_CODE(unpack_integer(pci_r15, bref, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(meas_result_cell_r15.unpack(bref));
+ if (meas_result_rs_idx_list_r15_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_rs_idx_list_r15, bref, 1, 32));
+ }
+
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool cgi_info_r15_present;
+ HANDLE_CODE(bref.unpack(cgi_info_r15_present, 1));
+ cgi_info_r15.set_present(cgi_info_r15_present);
+ if (cgi_info_r15.is_present()) {
+ HANDLE_CODE(cgi_info_r15->unpack(bref));
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+void meas_result_cell_nr_r15_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("pci-r15", pci_r15);
+ j.write_fieldname("measResultCell-r15");
+ meas_result_cell_r15.to_json(j);
+ if (meas_result_rs_idx_list_r15_present) {
+ j.start_array("measResultRS-IndexList-r15");
+ for (const auto& e1 : meas_result_rs_idx_list_r15) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (ext) {
+ if (cgi_info_r15.is_present()) {
+ j.write_fieldname("cgi-Info-r15");
+ cgi_info_r15->to_json(j);
+ }
+ }
+ j.end_obj();
+}
+
// MeasResultEUTRA ::= SEQUENCE
SRSASN_CODE meas_result_eutra_s::pack(bit_ref& bref) const
{
@@ -13001,60 +15008,6 @@ void meas_result_geran_s::to_json(json_writer& j) const
j.end_obj();
}
-// MeasResultNR-r15 ::= SEQUENCE
-SRSASN_CODE meas_result_nr_r15_s::pack(bit_ref& bref) const
-{
- bref.pack(ext, 1);
- HANDLE_CODE(bref.pack(rsrp_result_r15_present, 1));
- HANDLE_CODE(bref.pack(rsrq_result_r15_present, 1));
- HANDLE_CODE(bref.pack(rs_sinr_result_r15_present, 1));
-
- if (rsrp_result_r15_present) {
- HANDLE_CODE(pack_integer(bref, rsrp_result_r15, (uint8_t)0u, (uint8_t)127u));
- }
- if (rsrq_result_r15_present) {
- HANDLE_CODE(pack_integer(bref, rsrq_result_r15, (uint8_t)0u, (uint8_t)127u));
- }
- if (rs_sinr_result_r15_present) {
- HANDLE_CODE(pack_integer(bref, rs_sinr_result_r15, (uint8_t)0u, (uint8_t)127u));
- }
-
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE meas_result_nr_r15_s::unpack(cbit_ref& bref)
-{
- bref.unpack(ext, 1);
- HANDLE_CODE(bref.unpack(rsrp_result_r15_present, 1));
- HANDLE_CODE(bref.unpack(rsrq_result_r15_present, 1));
- HANDLE_CODE(bref.unpack(rs_sinr_result_r15_present, 1));
-
- if (rsrp_result_r15_present) {
- HANDLE_CODE(unpack_integer(rsrp_result_r15, bref, (uint8_t)0u, (uint8_t)127u));
- }
- if (rsrq_result_r15_present) {
- HANDLE_CODE(unpack_integer(rsrq_result_r15, bref, (uint8_t)0u, (uint8_t)127u));
- }
- if (rs_sinr_result_r15_present) {
- HANDLE_CODE(unpack_integer(rs_sinr_result_r15, bref, (uint8_t)0u, (uint8_t)127u));
- }
-
- return SRSASN_SUCCESS;
-}
-void meas_result_nr_r15_s::to_json(json_writer& j) const
-{
- j.start_obj();
- if (rsrp_result_r15_present) {
- j.write_int("rsrpResult-r15", rsrp_result_r15);
- }
- if (rsrq_result_r15_present) {
- j.write_int("rsrqResult-r15", rsrq_result_r15);
- }
- if (rs_sinr_result_r15_present) {
- j.write_int("rs-sinr-Result-r15", rs_sinr_result_r15);
- }
- j.end_obj();
-}
-
// MeasResultsCDMA2000 ::= SEQUENCE
SRSASN_CODE meas_results_cdma2000_s::pack(bit_ref& bref) const
{
@@ -13082,57 +15035,6 @@ void meas_results_cdma2000_s::to_json(json_writer& j) const
j.end_obj();
}
-// PLMN-IdentityInfoNR-r15 ::= SEQUENCE
-SRSASN_CODE plmn_id_info_nr_r15_s::pack(bit_ref& bref) const
-{
- HANDLE_CODE(bref.pack(tac_r15_present, 1));
- HANDLE_CODE(bref.pack(ran_area_code_r15_present, 1));
-
- HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_list_r15, 1, 12));
- if (tac_r15_present) {
- HANDLE_CODE(tac_r15.pack(bref));
- }
- if (ran_area_code_r15_present) {
- HANDLE_CODE(pack_integer(bref, ran_area_code_r15, (uint16_t)0u, (uint16_t)255u));
- }
- HANDLE_CODE(cell_id_r15.pack(bref));
-
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE plmn_id_info_nr_r15_s::unpack(cbit_ref& bref)
-{
- HANDLE_CODE(bref.unpack(tac_r15_present, 1));
- HANDLE_CODE(bref.unpack(ran_area_code_r15_present, 1));
-
- HANDLE_CODE(unpack_dyn_seq_of(plmn_id_list_r15, bref, 1, 12));
- if (tac_r15_present) {
- HANDLE_CODE(tac_r15.unpack(bref));
- }
- if (ran_area_code_r15_present) {
- HANDLE_CODE(unpack_integer(ran_area_code_r15, bref, (uint16_t)0u, (uint16_t)255u));
- }
- HANDLE_CODE(cell_id_r15.unpack(bref));
-
- return SRSASN_SUCCESS;
-}
-void plmn_id_info_nr_r15_s::to_json(json_writer& j) const
-{
- j.start_obj();
- j.start_array("plmn-IdentityList-r15");
- for (const auto& e1 : plmn_id_list_r15) {
- e1.to_json(j);
- }
- j.end_array();
- if (tac_r15_present) {
- j.write_str("trackingAreaCode-r15", tac_r15.to_string());
- }
- if (ran_area_code_r15_present) {
- j.write_int("ran-AreaCode-r15", ran_area_code_r15);
- }
- j.write_str("cellIdentity-r15", cell_id_r15.to_string());
- j.end_obj();
-}
-
// RSRQ-Type-r12 ::= SEQUENCE
SRSASN_CODE rsrq_type_r12_s::pack(bit_ref& bref) const
{
@@ -13424,6 +15326,45 @@ void meas_result2_utra_r9_s::to_json(json_writer& j) const
j.end_obj();
}
+// MeasResultFreqFailNR-r15 ::= SEQUENCE
+SRSASN_CODE meas_result_freq_fail_nr_r15_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(meas_result_cell_list_r15_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, carrier_freq_r15, (uint32_t)0u, (uint32_t)3279165u));
+ if (meas_result_cell_list_r15_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_cell_list_r15, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_result_freq_fail_nr_r15_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(meas_result_cell_list_r15_present, 1));
+
+ HANDLE_CODE(unpack_integer(carrier_freq_r15, bref, (uint32_t)0u, (uint32_t)3279165u));
+ if (meas_result_cell_list_r15_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_cell_list_r15, bref, 1, 8));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void meas_result_freq_fail_nr_r15_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("carrierFreq-r15", carrier_freq_r15);
+ if (meas_result_cell_list_r15_present) {
+ j.start_array("measResultCellList-r15");
+ for (const auto& e1 : meas_result_cell_list_r15) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
// MeasResultMBSFN-r12 ::= SEQUENCE
SRSASN_CODE meas_result_mbsfn_r12_s::pack(bit_ref& bref) const
{
@@ -13487,110 +15428,6 @@ void meas_result_mbsfn_r12_s::to_json(json_writer& j) const
j.end_obj();
}
-// MeasResultSSB-Index-r15 ::= SEQUENCE
-SRSASN_CODE meas_result_ssb_idx_r15_s::pack(bit_ref& bref) const
-{
- bref.pack(ext, 1);
- HANDLE_CODE(bref.pack(meas_result_ssb_idx_r15_present, 1));
-
- HANDLE_CODE(pack_integer(bref, ssb_idx_r15, (uint8_t)0u, (uint8_t)63u));
- if (meas_result_ssb_idx_r15_present) {
- HANDLE_CODE(meas_result_ssb_idx_r15.pack(bref));
- }
-
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE meas_result_ssb_idx_r15_s::unpack(cbit_ref& bref)
-{
- bref.unpack(ext, 1);
- HANDLE_CODE(bref.unpack(meas_result_ssb_idx_r15_present, 1));
-
- HANDLE_CODE(unpack_integer(ssb_idx_r15, bref, (uint8_t)0u, (uint8_t)63u));
- if (meas_result_ssb_idx_r15_present) {
- HANDLE_CODE(meas_result_ssb_idx_r15.unpack(bref));
- }
-
- return SRSASN_SUCCESS;
-}
-void meas_result_ssb_idx_r15_s::to_json(json_writer& j) const
-{
- j.start_obj();
- j.write_int("ssb-Index-r15", ssb_idx_r15);
- if (meas_result_ssb_idx_r15_present) {
- j.write_fieldname("measResultSSB-Index-r15");
- meas_result_ssb_idx_r15.to_json(j);
- }
- j.end_obj();
-}
-
-// CGI-InfoNR-r15 ::= SEQUENCE
-SRSASN_CODE cgi_info_nr_r15_s::pack(bit_ref& bref) const
-{
- bref.pack(ext, 1);
- HANDLE_CODE(bref.pack(plmn_id_info_list_r15_present, 1));
- HANDLE_CODE(bref.pack(freq_band_list_r15_present, 1));
- HANDLE_CODE(bref.pack(no_sib1_r15_present, 1));
-
- if (plmn_id_info_list_r15_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_info_list_r15, 1, 12));
- }
- if (freq_band_list_r15_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list_r15, 1, 32, integer_packer<uint16_t>(1, 1024)));
- }
- if (no_sib1_r15_present) {
- HANDLE_CODE(pack_integer(bref, no_sib1_r15.ssb_subcarrier_offset_r15, (uint8_t)0u, (uint8_t)15u));
- HANDLE_CODE(pack_integer(bref, no_sib1_r15.pdcch_cfg_sib1_r15, (uint16_t)0u, (uint16_t)255u));
- }
-
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE cgi_info_nr_r15_s::unpack(cbit_ref& bref)
-{
- bref.unpack(ext, 1);
- HANDLE_CODE(bref.unpack(plmn_id_info_list_r15_present, 1));
- HANDLE_CODE(bref.unpack(freq_band_list_r15_present, 1));
- HANDLE_CODE(bref.unpack(no_sib1_r15_present, 1));
-
- if (plmn_id_info_list_r15_present) {
- HANDLE_CODE(unpack_dyn_seq_of(plmn_id_info_list_r15, bref, 1, 12));
- }
- if (freq_band_list_r15_present) {
- HANDLE_CODE(unpack_dyn_seq_of(freq_band_list_r15, bref, 1, 32, integer_packer<uint16_t>(1, 1024)));
- }
- if (no_sib1_r15_present) {
- HANDLE_CODE(unpack_integer(no_sib1_r15.ssb_subcarrier_offset_r15, bref, (uint8_t)0u, (uint8_t)15u));
- HANDLE_CODE(unpack_integer(no_sib1_r15.pdcch_cfg_sib1_r15, bref, (uint16_t)0u, (uint16_t)255u));
- }
-
- return SRSASN_SUCCESS;
-}
-void cgi_info_nr_r15_s::to_json(json_writer& j) const
-{
- j.start_obj();
- if (plmn_id_info_list_r15_present) {
- j.start_array("plmn-IdentityInfoList-r15");
- for (const auto& e1 : plmn_id_info_list_r15) {
- e1.to_json(j);
- }
- j.end_array();
- }
- if (freq_band_list_r15_present) {
- j.start_array("frequencyBandList-r15");
- for (const auto& e1 : freq_band_list_r15) {
- j.write_int(e1);
- }
- j.end_array();
- }
- if (no_sib1_r15_present) {
- j.write_fieldname("noSIB1-r15");
- j.start_obj();
- j.write_int("ssb-SubcarrierOffset-r15", no_sib1_r15.ssb_subcarrier_offset_r15);
- j.write_int("pdcch-ConfigSIB1-r15", no_sib1_r15.pdcch_cfg_sib1_r15);
- j.end_obj();
- }
- j.end_obj();
-}
-
// LogMeasInfo-r10 ::= SEQUENCE
SRSASN_CODE log_meas_info_r10_s::pack(bit_ref& bref) const
{
@@ -13637,6 +15474,10 @@ SRSASN_CODE log_meas_info_r10_s::pack(bit_ref& bref) const
group_flags[4] |= log_meas_result_list_bt_r15.is_present();
group_flags[4] |= log_meas_result_list_wlan_r15.is_present();
group_flags[5] |= any_cell_sel_detected_r15_present;
+ group_flags[6] |= meas_result_list_nr_r16.is_present();
+ group_flags[7] |= meas_result_list_nr_v1640.is_present();
+ group_flags[7] |= meas_result_list_ext_nr_r16.is_present();
+ group_flags[8] |= uncom_bar_pre_meas_result_r17_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -13697,6 +15538,35 @@ SRSASN_CODE log_meas_info_r10_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(any_cell_sel_detected_r15_present, 1));
}
+ if (group_flags[6]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(meas_result_list_nr_r16.is_present(), 1));
+ if (meas_result_list_nr_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *meas_result_list_nr_r16, 1, 8));
+ }
+ }
+ if (group_flags[7]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(meas_result_list_nr_v1640.is_present(), 1));
+ HANDLE_CODE(bref.pack(meas_result_list_ext_nr_r16.is_present(), 1));
+ if (meas_result_list_nr_v1640.is_present()) {
+ HANDLE_CODE(
+ pack_integer(bref, meas_result_list_nr_v1640->carrier_freq_nr_r16, (uint32_t)0u, (uint32_t)3279165u));
+ }
+ if (meas_result_list_ext_nr_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *meas_result_list_ext_nr_r16, 1, 7));
+ }
+ }
+ if (group_flags[8]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(uncom_bar_pre_meas_result_r17_present, 1));
+ if (uncom_bar_pre_meas_result_r17_present) {
+ HANDLE_CODE(uncom_bar_pre_meas_result_r17.pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -13734,7 +15604,7 @@ SRSASN_CODE log_meas_info_r10_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(6);
+ ext_groups_unpacker_guard group_flags(9);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -13807,6 +15677,41 @@ SRSASN_CODE log_meas_info_r10_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(any_cell_sel_detected_r15_present, 1));
}
+ if (group_flags[6]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool meas_result_list_nr_r16_present;
+ HANDLE_CODE(bref.unpack(meas_result_list_nr_r16_present, 1));
+ meas_result_list_nr_r16.set_present(meas_result_list_nr_r16_present);
+ if (meas_result_list_nr_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*meas_result_list_nr_r16, bref, 1, 8));
+ }
+ }
+ if (group_flags[7]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool meas_result_list_nr_v1640_present;
+ HANDLE_CODE(bref.unpack(meas_result_list_nr_v1640_present, 1));
+ meas_result_list_nr_v1640.set_present(meas_result_list_nr_v1640_present);
+ bool meas_result_list_ext_nr_r16_present;
+ HANDLE_CODE(bref.unpack(meas_result_list_ext_nr_r16_present, 1));
+ meas_result_list_ext_nr_r16.set_present(meas_result_list_ext_nr_r16_present);
+ if (meas_result_list_nr_v1640.is_present()) {
+ HANDLE_CODE(
+ unpack_integer(meas_result_list_nr_v1640->carrier_freq_nr_r16, bref, (uint32_t)0u, (uint32_t)3279165u));
+ }
+ if (meas_result_list_ext_nr_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*meas_result_list_ext_nr_r16, bref, 1, 7));
+ }
+ }
+ if (group_flags[8]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(uncom_bar_pre_meas_result_r17_present, 1));
+ if (uncom_bar_pre_meas_result_r17_present) {
+ HANDLE_CODE(uncom_bar_pre_meas_result_r17.unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -13914,83 +15819,28 @@ void log_meas_info_r10_s::to_json(json_writer& j) const
if (any_cell_sel_detected_r15_present) {
j.write_str("anyCellSelectionDetected-r15", "true");
}
- }
- j.end_obj();
-}
-
-// MeasResultCellNR-r15 ::= SEQUENCE
-SRSASN_CODE meas_result_cell_nr_r15_s::pack(bit_ref& bref) const
-{
- bref.pack(ext, 1);
- HANDLE_CODE(bref.pack(meas_result_rs_idx_list_r15_present, 1));
-
- HANDLE_CODE(pack_integer(bref, pci_r15, (uint16_t)0u, (uint16_t)1007u));
- HANDLE_CODE(meas_result_cell_r15.pack(bref));
- if (meas_result_rs_idx_list_r15_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_rs_idx_list_r15, 1, 32));
- }
-
- if (ext) {
- ext_groups_packer_guard group_flags;
- group_flags[0] |= cgi_info_r15.is_present();
- group_flags.pack(bref);
-
- if (group_flags[0]) {
- varlength_field_pack_guard varlen_scope(bref, false);
-
- HANDLE_CODE(bref.pack(cgi_info_r15.is_present(), 1));
- if (cgi_info_r15.is_present()) {
- HANDLE_CODE(cgi_info_r15->pack(bref));
+ if (meas_result_list_nr_r16.is_present()) {
+ j.start_array("measResultListNR-r16");
+ for (const auto& e1 : *meas_result_list_nr_r16) {
+ e1.to_json(j);
}
+ j.end_array();
}
- }
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE meas_result_cell_nr_r15_s::unpack(cbit_ref& bref)
-{
- bref.unpack(ext, 1);
- HANDLE_CODE(bref.unpack(meas_result_rs_idx_list_r15_present, 1));
-
- HANDLE_CODE(unpack_integer(pci_r15, bref, (uint16_t)0u, (uint16_t)1007u));
- HANDLE_CODE(meas_result_cell_r15.unpack(bref));
- if (meas_result_rs_idx_list_r15_present) {
- HANDLE_CODE(unpack_dyn_seq_of(meas_result_rs_idx_list_r15, bref, 1, 32));
- }
-
- if (ext) {
- ext_groups_unpacker_guard group_flags(1);
- group_flags.unpack(bref);
-
- if (group_flags[0]) {
- varlength_field_unpack_guard varlen_scope(bref, false);
-
- bool cgi_info_r15_present;
- HANDLE_CODE(bref.unpack(cgi_info_r15_present, 1));
- cgi_info_r15.set_present(cgi_info_r15_present);
- if (cgi_info_r15.is_present()) {
- HANDLE_CODE(cgi_info_r15->unpack(bref));
- }
+ if (meas_result_list_nr_v1640.is_present()) {
+ j.write_fieldname("measResultListNR-v1640");
+ j.start_obj();
+ j.write_int("carrierFreqNR-r16", meas_result_list_nr_v1640->carrier_freq_nr_r16);
+ j.end_obj();
}
- }
- return SRSASN_SUCCESS;
-}
-void meas_result_cell_nr_r15_s::to_json(json_writer& j) const
-{
- j.start_obj();
- j.write_int("pci-r15", pci_r15);
- j.write_fieldname("measResultCell-r15");
- meas_result_cell_r15.to_json(j);
- if (meas_result_rs_idx_list_r15_present) {
- j.start_array("measResultRS-IndexList-r15");
- for (const auto& e1 : meas_result_rs_idx_list_r15) {
- e1.to_json(j);
+ if (meas_result_list_ext_nr_r16.is_present()) {
+ j.start_array("measResultListExtNR-r16");
+ for (const auto& e1 : *meas_result_list_ext_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
}
- j.end_array();
- }
- if (ext) {
- if (cgi_info_r15.is_present()) {
- j.write_fieldname("cgi-Info-r15");
- cgi_info_r15->to_json(j);
+ if (uncom_bar_pre_meas_result_r17_present) {
+ j.write_str("uncomBarPreMeasResult-r17", uncom_bar_pre_meas_result_r17.to_string());
}
}
j.end_obj();
@@ -14660,6 +16510,31 @@ uint8_t ul_pdcp_delay_result_r13_s::qci_id_r13_opts::to_number() const
return map_enum_number(options, 4, value, "ul_pdcp_delay_result_r13_s::qci_id_r13_e_");
}
+// UL-PDCP-DelayValueResult-r16 ::= SEQUENCE
+SRSASN_CODE ul_pdcp_delay_value_result_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(pack_integer(bref, drb_id_r16, (uint8_t)1u, (uint8_t)32u));
+ HANDLE_CODE(pack_integer(bref, average_delay_r16, (uint16_t)0u, (uint16_t)10000u));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_pdcp_delay_value_result_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(unpack_integer(drb_id_r16, bref, (uint8_t)1u, (uint8_t)32u));
+ HANDLE_CODE(unpack_integer(average_delay_r16, bref, (uint16_t)0u, (uint16_t)10000u));
+
+ return SRSASN_SUCCESS;
+}
+void ul_pdcp_delay_value_result_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("drb-Id-r16", drb_id_r16);
+ j.write_int("averageDelay-r16", average_delay_r16);
+ j.end_obj();
+}
+
// MeasResultForECID-r9 ::= SEQUENCE
SRSASN_CODE meas_result_for_ecid_r9_s::pack(bit_ref& bref) const
{
@@ -14683,6 +16558,31 @@ void meas_result_for_ecid_r9_s::to_json(json_writer& j) const
j.end_obj();
}
+// MeasResultForRSSI-NR-r16 ::= SEQUENCE
+SRSASN_CODE meas_result_for_rssi_nr_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(pack_integer(bref, rssi_result_nr_r16, (uint8_t)0u, (uint8_t)76u));
+ HANDLE_CODE(pack_integer(bref, ch_occupancy_nr_r16, (uint8_t)0u, (uint8_t)100u));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_result_for_rssi_nr_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(unpack_integer(rssi_result_nr_r16, bref, (uint8_t)0u, (uint8_t)76u));
+ HANDLE_CODE(unpack_integer(ch_occupancy_nr_r16, bref, (uint8_t)0u, (uint8_t)100u));
+
+ return SRSASN_SUCCESS;
+}
+void meas_result_for_rssi_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("rssi-ResultNR-r16", rssi_result_nr_r16);
+ j.write_int("channelOccupancyNR-r16", ch_occupancy_nr_r16);
+ j.end_obj();
+}
+
// MeasResultForRSSI-r13 ::= SEQUENCE
SRSASN_CODE meas_result_for_rssi_r13_s::pack(bit_ref& bref) const
{
@@ -14797,6 +16697,10 @@ SRSASN_CODE meas_results_s::pack(bit_ref& bref) const
group_flags[7] |= log_meas_result_list_wlan_r15.is_present();
group_flags[7] |= meas_result_sensing_r15.is_present();
group_flags[7] |= height_ue_r15_present;
+ group_flags[8] |= ul_pdcp_delay_value_result_list_r16.is_present();
+ group_flags[8] |= meas_result_for_rssi_nr_r16.is_present();
+ group_flags[9] |= uncom_bar_pre_meas_result_r17_present;
+ group_flags[9] |= coarse_location_info_r17_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -14915,6 +16819,30 @@ SRSASN_CODE meas_results_s::pack(bit_ref& bref) const
HANDLE_CODE(pack_integer(bref, height_ue_r15, (int16_t)-400, (int16_t)8880));
}
}
+ if (group_flags[8]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ul_pdcp_delay_value_result_list_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(meas_result_for_rssi_nr_r16.is_present(), 1));
+ if (ul_pdcp_delay_value_result_list_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *ul_pdcp_delay_value_result_list_r16, 1, 11));
+ }
+ if (meas_result_for_rssi_nr_r16.is_present()) {
+ HANDLE_CODE(meas_result_for_rssi_nr_r16->pack(bref));
+ }
+ }
+ if (group_flags[9]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(uncom_bar_pre_meas_result_r17_present, 1));
+ HANDLE_CODE(bref.pack(coarse_location_info_r17_present, 1));
+ if (uncom_bar_pre_meas_result_r17_present) {
+ HANDLE_CODE(uncom_bar_pre_meas_result_r17.pack(bref));
+ }
+ if (coarse_location_info_r17_present) {
+ HANDLE_CODE(coarse_location_info_r17.pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -14931,7 +16859,7 @@ SRSASN_CODE meas_results_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(8);
+ ext_groups_unpacker_guard group_flags(10);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -15084,6 +17012,34 @@ SRSASN_CODE meas_results_s::unpack(cbit_ref& bref)
HANDLE_CODE(unpack_integer(height_ue_r15, bref, (int16_t)-400, (int16_t)8880));
}
}
+ if (group_flags[8]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool ul_pdcp_delay_value_result_list_r16_present;
+ HANDLE_CODE(bref.unpack(ul_pdcp_delay_value_result_list_r16_present, 1));
+ ul_pdcp_delay_value_result_list_r16.set_present(ul_pdcp_delay_value_result_list_r16_present);
+ bool meas_result_for_rssi_nr_r16_present;
+ HANDLE_CODE(bref.unpack(meas_result_for_rssi_nr_r16_present, 1));
+ meas_result_for_rssi_nr_r16.set_present(meas_result_for_rssi_nr_r16_present);
+ if (ul_pdcp_delay_value_result_list_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*ul_pdcp_delay_value_result_list_r16, bref, 1, 11));
+ }
+ if (meas_result_for_rssi_nr_r16.is_present()) {
+ HANDLE_CODE(meas_result_for_rssi_nr_r16->unpack(bref));
+ }
+ }
+ if (group_flags[9]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(uncom_bar_pre_meas_result_r17_present, 1));
+ HANDLE_CODE(bref.unpack(coarse_location_info_r17_present, 1));
+ if (uncom_bar_pre_meas_result_r17_present) {
+ HANDLE_CODE(uncom_bar_pre_meas_result_r17.unpack(bref));
+ }
+ if (coarse_location_info_r17_present) {
+ HANDLE_CODE(coarse_location_info_r17.unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -15216,6 +17172,23 @@ void meas_results_s::to_json(json_writer& j) const
if (height_ue_r15_present) {
j.write_int("heightUE-r15", height_ue_r15);
}
+ if (ul_pdcp_delay_value_result_list_r16.is_present()) {
+ j.start_array("ul-PDCP-DelayValueResultList-r16");
+ for (const auto& e1 : *ul_pdcp_delay_value_result_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (meas_result_for_rssi_nr_r16.is_present()) {
+ j.write_fieldname("measResultForRSSI-NR-r16");
+ meas_result_for_rssi_nr_r16->to_json(j);
+ }
+ if (uncom_bar_pre_meas_result_r17_present) {
+ j.write_str("uncomBarPreMeasResult-r17", uncom_bar_pre_meas_result_r17.to_string());
+ }
+ if (coarse_location_info_r17_present) {
+ j.write_str("coarseLocationInfo-r17", coarse_location_info_r17.to_string());
+ }
}
j.end_obj();
}
diff --git a/lib/src/asn1/rrc/paging.cc b/lib/src/asn1/rrc/paging.cc
index a07a7c563..8849e04b5 100644
--- a/lib/src/asn1/rrc/paging.cc
+++ b/lib/src/asn1/rrc/paging.cc
@@ -20,12 +20,157 @@ using namespace asn1::rrc;
* 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
SRSASN_CODE paging_v1530_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(access_type_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
return SRSASN_SUCCESS;
}
SRSASN_CODE 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(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
return SRSASN_SUCCESS;
}
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) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
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;
}
+// 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
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(
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;
}
@@ -875,6 +1055,9 @@ SRSASN_CODE ue_radio_paging_info_v1310_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE(
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;
}
@@ -890,8 +1073,7 @@ void ue_radio_paging_info_v1310_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
diff --git a/lib/src/asn1/rrc/phy_ded.cc b/lib/src/asn1/rrc/phy_ded.cc
index e8e1d7b7f..c9bf3cffd 100644
--- a/lib/src/asn1/rrc/phy_ded.cc
+++ b/lib/src/asn1/rrc/phy_ded.cc
@@ -20,6 +20,819 @@ using namespace asn1::rrc;
* Struct Methods
******************************************************************************/
+// PeriodicityStartPos-r16 ::= CHOICE
+void periodicity_start_pos_r16_c::destroy_() {}
+void periodicity_start_pos_r16_c::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+}
+periodicity_start_pos_r16_c::periodicity_start_pos_r16_c(const periodicity_start_pos_r16_c& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::periodicity10ms:
+ break;
+ case types::periodicity20ms:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity40ms:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity80ms:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity160ms:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::spare3:
+ break;
+ case types::spare2:
+ break;
+ case types::spare1:
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "periodicity_start_pos_r16_c");
+ }
+}
+periodicity_start_pos_r16_c& periodicity_start_pos_r16_c::operator=(const periodicity_start_pos_r16_c& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::periodicity10ms:
+ break;
+ case types::periodicity20ms:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity40ms:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity80ms:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity160ms:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::spare3:
+ break;
+ case types::spare2:
+ break;
+ case types::spare1:
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "periodicity_start_pos_r16_c");
+ }
+
+ return *this;
+}
+void periodicity_start_pos_r16_c::set_periodicity10ms()
+{
+ set(types::periodicity10ms);
+}
+uint8_t& periodicity_start_pos_r16_c::set_periodicity20ms()
+{
+ set(types::periodicity20ms);
+ return c.get<uint8_t>();
+}
+uint8_t& periodicity_start_pos_r16_c::set_periodicity40ms()
+{
+ set(types::periodicity40ms);
+ return c.get<uint8_t>();
+}
+uint8_t& periodicity_start_pos_r16_c::set_periodicity80ms()
+{
+ set(types::periodicity80ms);
+ return c.get<uint8_t>();
+}
+uint8_t& periodicity_start_pos_r16_c::set_periodicity160ms()
+{
+ set(types::periodicity160ms);
+ return c.get<uint8_t>();
+}
+void periodicity_start_pos_r16_c::set_spare3()
+{
+ set(types::spare3);
+}
+void periodicity_start_pos_r16_c::set_spare2()
+{
+ set(types::spare2);
+}
+void periodicity_start_pos_r16_c::set_spare1()
+{
+ set(types::spare1);
+}
+void periodicity_start_pos_r16_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::periodicity10ms:
+ break;
+ case types::periodicity20ms:
+ j.write_int("periodicity20ms", c.get<uint8_t>());
+ break;
+ case types::periodicity40ms:
+ j.write_int("periodicity40ms", c.get<uint8_t>());
+ break;
+ case types::periodicity80ms:
+ j.write_int("periodicity80ms", c.get<uint8_t>());
+ break;
+ case types::periodicity160ms:
+ j.write_int("periodicity160ms", c.get<uint8_t>());
+ break;
+ case types::spare3:
+ break;
+ case types::spare2:
+ break;
+ case types::spare1:
+ break;
+ default:
+ log_invalid_choice_id(type_, "periodicity_start_pos_r16_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE periodicity_start_pos_r16_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::periodicity10ms:
+ break;
+ case types::periodicity20ms:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)1u));
+ break;
+ case types::periodicity40ms:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)3u));
+ break;
+ case types::periodicity80ms:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)7u));
+ break;
+ case types::periodicity160ms:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)15u));
+ break;
+ case types::spare3:
+ break;
+ case types::spare2:
+ break;
+ case types::spare1:
+ break;
+ default:
+ log_invalid_choice_id(type_, "periodicity_start_pos_r16_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE periodicity_start_pos_r16_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::periodicity10ms:
+ break;
+ case types::periodicity20ms:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)1u));
+ break;
+ case types::periodicity40ms:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)3u));
+ break;
+ case types::periodicity80ms:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)7u));
+ break;
+ case types::periodicity160ms:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)15u));
+ break;
+ case types::spare3:
+ break;
+ case types::spare2:
+ break;
+ case types::spare1:
+ break;
+ default:
+ log_invalid_choice_id(type_, "periodicity_start_pos_r16_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+// ResourceReservationConfigDL-r16 ::= SEQUENCE
+SRSASN_CODE res_reserv_cfg_dl_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(res_reserv_freq_r16_present, 1));
+ HANDLE_CODE(bref.pack(symbol_bitmap1_r16_present, 1));
+ HANDLE_CODE(bref.pack(symbol_bitmap2_r16_present, 1));
+
+ HANDLE_CODE(periodicity_start_pos_r16.pack(bref));
+ if (res_reserv_freq_r16_present) {
+ HANDLE_CODE(res_reserv_freq_r16.pack(bref));
+ }
+ HANDLE_CODE(slot_bitmap_r16.pack(bref));
+ if (symbol_bitmap1_r16_present) {
+ HANDLE_CODE(symbol_bitmap1_r16.pack(bref));
+ }
+ if (symbol_bitmap2_r16_present) {
+ HANDLE_CODE(symbol_bitmap2_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_dl_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(res_reserv_freq_r16_present, 1));
+ HANDLE_CODE(bref.unpack(symbol_bitmap1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(symbol_bitmap2_r16_present, 1));
+
+ HANDLE_CODE(periodicity_start_pos_r16.unpack(bref));
+ if (res_reserv_freq_r16_present) {
+ HANDLE_CODE(res_reserv_freq_r16.unpack(bref));
+ }
+ HANDLE_CODE(slot_bitmap_r16.unpack(bref));
+ if (symbol_bitmap1_r16_present) {
+ HANDLE_CODE(symbol_bitmap1_r16.unpack(bref));
+ }
+ if (symbol_bitmap2_r16_present) {
+ HANDLE_CODE(symbol_bitmap2_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void res_reserv_cfg_dl_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("periodicityStartPos-r16");
+ periodicity_start_pos_r16.to_json(j);
+ if (res_reserv_freq_r16_present) {
+ j.write_fieldname("resourceReservationFreq-r16");
+ res_reserv_freq_r16.to_json(j);
+ }
+ j.write_fieldname("slotBitmap-r16");
+ slot_bitmap_r16.to_json(j);
+ if (symbol_bitmap1_r16_present) {
+ j.write_str("symbolBitmap1-r16", symbol_bitmap1_r16.to_string());
+ }
+ if (symbol_bitmap2_r16_present) {
+ j.write_str("symbolBitmap2-r16", symbol_bitmap2_r16.to_string());
+ }
+ j.end_obj();
+}
+
+void res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::rbg_bitmap1dot4:
+ c.destroy<fixed_bitstring<6> >();
+ break;
+ case types::rbg_bitmap3:
+ c.destroy<fixed_bitstring<8> >();
+ break;
+ case types::rbg_bitmap5:
+ c.destroy<fixed_bitstring<13> >();
+ break;
+ case types::rbg_bitmap10:
+ c.destroy<fixed_bitstring<17> >();
+ break;
+ case types::rbg_bitmap15:
+ c.destroy<fixed_bitstring<19> >();
+ break;
+ case types::rbg_bitmap20:
+ c.destroy<fixed_bitstring<25> >();
+ break;
+ default:
+ break;
+ }
+}
+void res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::rbg_bitmap1dot4:
+ c.init<fixed_bitstring<6> >();
+ break;
+ case types::rbg_bitmap3:
+ c.init<fixed_bitstring<8> >();
+ break;
+ case types::rbg_bitmap5:
+ c.init<fixed_bitstring<13> >();
+ break;
+ case types::rbg_bitmap10:
+ c.init<fixed_bitstring<17> >();
+ break;
+ case types::rbg_bitmap15:
+ c.init<fixed_bitstring<19> >();
+ break;
+ case types::rbg_bitmap20:
+ c.init<fixed_bitstring<25> >();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_");
+ }
+}
+res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::res_reserv_freq_r16_c_(
+ const res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::rbg_bitmap1dot4:
+ c.init(other.c.get<fixed_bitstring<6> >());
+ break;
+ case types::rbg_bitmap3:
+ c.init(other.c.get<fixed_bitstring<8> >());
+ break;
+ case types::rbg_bitmap5:
+ c.init(other.c.get<fixed_bitstring<13> >());
+ break;
+ case types::rbg_bitmap10:
+ c.init(other.c.get<fixed_bitstring<17> >());
+ break;
+ case types::rbg_bitmap15:
+ c.init(other.c.get<fixed_bitstring<19> >());
+ break;
+ case types::rbg_bitmap20:
+ c.init(other.c.get<fixed_bitstring<25> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_");
+ }
+}
+res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_&
+res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::operator=(const res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::rbg_bitmap1dot4:
+ c.set(other.c.get<fixed_bitstring<6> >());
+ break;
+ case types::rbg_bitmap3:
+ c.set(other.c.get<fixed_bitstring<8> >());
+ break;
+ case types::rbg_bitmap5:
+ c.set(other.c.get<fixed_bitstring<13> >());
+ break;
+ case types::rbg_bitmap10:
+ c.set(other.c.get<fixed_bitstring<17> >());
+ break;
+ case types::rbg_bitmap15:
+ c.set(other.c.get<fixed_bitstring<19> >());
+ break;
+ case types::rbg_bitmap20:
+ c.set(other.c.get<fixed_bitstring<25> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_");
+ }
+
+ return *this;
+}
+fixed_bitstring<6>& res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::set_rbg_bitmap1dot4()
+{
+ set(types::rbg_bitmap1dot4);
+ return c.get<fixed_bitstring<6> >();
+}
+fixed_bitstring<8>& res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::set_rbg_bitmap3()
+{
+ set(types::rbg_bitmap3);
+ return c.get<fixed_bitstring<8> >();
+}
+fixed_bitstring<13>& res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::set_rbg_bitmap5()
+{
+ set(types::rbg_bitmap5);
+ return c.get<fixed_bitstring<13> >();
+}
+fixed_bitstring<17>& res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::set_rbg_bitmap10()
+{
+ set(types::rbg_bitmap10);
+ return c.get<fixed_bitstring<17> >();
+}
+fixed_bitstring<19>& res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::set_rbg_bitmap15()
+{
+ set(types::rbg_bitmap15);
+ return c.get<fixed_bitstring<19> >();
+}
+fixed_bitstring<25>& res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::set_rbg_bitmap20()
+{
+ set(types::rbg_bitmap20);
+ return c.get<fixed_bitstring<25> >();
+}
+void res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::rbg_bitmap1dot4:
+ j.write_str("rbg-Bitmap1dot4", c.get<fixed_bitstring<6> >().to_string());
+ break;
+ case types::rbg_bitmap3:
+ j.write_str("rbg-Bitmap3", c.get<fixed_bitstring<8> >().to_string());
+ break;
+ case types::rbg_bitmap5:
+ j.write_str("rbg-Bitmap5", c.get<fixed_bitstring<13> >().to_string());
+ break;
+ case types::rbg_bitmap10:
+ j.write_str("rbg-Bitmap10", c.get<fixed_bitstring<17> >().to_string());
+ break;
+ case types::rbg_bitmap15:
+ j.write_str("rbg-Bitmap15", c.get<fixed_bitstring<19> >().to_string());
+ break;
+ case types::rbg_bitmap20:
+ j.write_str("rbg-Bitmap20", c.get<fixed_bitstring<25> >().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::rbg_bitmap1dot4:
+ HANDLE_CODE(c.get<fixed_bitstring<6> >().pack(bref));
+ break;
+ case types::rbg_bitmap3:
+ HANDLE_CODE(c.get<fixed_bitstring<8> >().pack(bref));
+ break;
+ case types::rbg_bitmap5:
+ HANDLE_CODE(c.get<fixed_bitstring<13> >().pack(bref));
+ break;
+ case types::rbg_bitmap10:
+ HANDLE_CODE(c.get<fixed_bitstring<17> >().pack(bref));
+ break;
+ case types::rbg_bitmap15:
+ HANDLE_CODE(c.get<fixed_bitstring<19> >().pack(bref));
+ break;
+ case types::rbg_bitmap20:
+ HANDLE_CODE(c.get<fixed_bitstring<25> >().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::rbg_bitmap1dot4:
+ HANDLE_CODE(c.get<fixed_bitstring<6> >().unpack(bref));
+ break;
+ case types::rbg_bitmap3:
+ HANDLE_CODE(c.get<fixed_bitstring<8> >().unpack(bref));
+ break;
+ case types::rbg_bitmap5:
+ HANDLE_CODE(c.get<fixed_bitstring<13> >().unpack(bref));
+ break;
+ case types::rbg_bitmap10:
+ HANDLE_CODE(c.get<fixed_bitstring<17> >().unpack(bref));
+ break;
+ case types::rbg_bitmap15:
+ HANDLE_CODE(c.get<fixed_bitstring<19> >().unpack(bref));
+ break;
+ case types::rbg_bitmap20:
+ HANDLE_CODE(c.get<fixed_bitstring<25> >().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+void res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.destroy<fixed_bitstring<20> >();
+ break;
+ case types::slot_pattern40ms:
+ c.destroy<fixed_bitstring<80> >();
+ break;
+ default:
+ break;
+ }
+}
+void res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.init<fixed_bitstring<20> >();
+ break;
+ case types::slot_pattern40ms:
+ c.init<fixed_bitstring<80> >();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_");
+ }
+}
+res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::slot_bitmap_r16_c_(
+ const res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.init(other.c.get<fixed_bitstring<20> >());
+ break;
+ case types::slot_pattern40ms:
+ c.init(other.c.get<fixed_bitstring<80> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_");
+ }
+}
+res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_&
+res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::operator=(const res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.set(other.c.get<fixed_bitstring<20> >());
+ break;
+ case types::slot_pattern40ms:
+ c.set(other.c.get<fixed_bitstring<80> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_");
+ }
+
+ return *this;
+}
+fixed_bitstring<20>& res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::set_slot_pattern10ms()
+{
+ set(types::slot_pattern10ms);
+ return c.get<fixed_bitstring<20> >();
+}
+fixed_bitstring<80>& res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::set_slot_pattern40ms()
+{
+ set(types::slot_pattern40ms);
+ return c.get<fixed_bitstring<80> >();
+}
+void res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::slot_pattern10ms:
+ j.write_str("slotPattern10ms", c.get<fixed_bitstring<20> >().to_string());
+ break;
+ case types::slot_pattern40ms:
+ j.write_str("slotPattern40ms", c.get<fixed_bitstring<80> >().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::slot_pattern10ms:
+ HANDLE_CODE(c.get<fixed_bitstring<20> >().pack(bref));
+ break;
+ case types::slot_pattern40ms:
+ HANDLE_CODE(c.get<fixed_bitstring<80> >().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::slot_pattern10ms:
+ HANDLE_CODE(c.get<fixed_bitstring<20> >().unpack(bref));
+ break;
+ case types::slot_pattern40ms:
+ HANDLE_CODE(c.get<fixed_bitstring<80> >().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+// ResourceReservationConfigUL-r16 ::= SEQUENCE
+SRSASN_CODE res_reserv_cfg_ul_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(slot_bitmap_r16_present, 1));
+ HANDLE_CODE(bref.pack(symbol_bitmap1_r16_present, 1));
+ HANDLE_CODE(bref.pack(symbol_bitmap2_r16_present, 1));
+
+ HANDLE_CODE(periodicity_start_pos_r16.pack(bref));
+ if (slot_bitmap_r16_present) {
+ HANDLE_CODE(slot_bitmap_r16.pack(bref));
+ }
+ if (symbol_bitmap1_r16_present) {
+ HANDLE_CODE(symbol_bitmap1_r16.pack(bref));
+ }
+ if (symbol_bitmap2_r16_present) {
+ HANDLE_CODE(symbol_bitmap2_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_ul_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(slot_bitmap_r16_present, 1));
+ HANDLE_CODE(bref.unpack(symbol_bitmap1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(symbol_bitmap2_r16_present, 1));
+
+ HANDLE_CODE(periodicity_start_pos_r16.unpack(bref));
+ if (slot_bitmap_r16_present) {
+ HANDLE_CODE(slot_bitmap_r16.unpack(bref));
+ }
+ if (symbol_bitmap1_r16_present) {
+ HANDLE_CODE(symbol_bitmap1_r16.unpack(bref));
+ }
+ if (symbol_bitmap2_r16_present) {
+ HANDLE_CODE(symbol_bitmap2_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void res_reserv_cfg_ul_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("periodicityStartPos-r16");
+ periodicity_start_pos_r16.to_json(j);
+ if (slot_bitmap_r16_present) {
+ j.write_fieldname("slotBitmap-r16");
+ slot_bitmap_r16.to_json(j);
+ }
+ if (symbol_bitmap1_r16_present) {
+ j.write_str("symbolBitmap1-r16", symbol_bitmap1_r16.to_string());
+ }
+ if (symbol_bitmap2_r16_present) {
+ j.write_str("symbolBitmap2-r16", symbol_bitmap2_r16.to_string());
+ }
+ j.end_obj();
+}
+
+void res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.destroy<fixed_bitstring<20> >();
+ break;
+ case types::slot_pattern40ms:
+ c.destroy<fixed_bitstring<80> >();
+ break;
+ default:
+ break;
+ }
+}
+void res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.init<fixed_bitstring<20> >();
+ break;
+ case types::slot_pattern40ms:
+ c.init<fixed_bitstring<80> >();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_");
+ }
+}
+res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::slot_bitmap_r16_c_(
+ const res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.init(other.c.get<fixed_bitstring<20> >());
+ break;
+ case types::slot_pattern40ms:
+ c.init(other.c.get<fixed_bitstring<80> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_");
+ }
+}
+res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_&
+res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::operator=(const res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.set(other.c.get<fixed_bitstring<20> >());
+ break;
+ case types::slot_pattern40ms:
+ c.set(other.c.get<fixed_bitstring<80> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_");
+ }
+
+ return *this;
+}
+fixed_bitstring<20>& res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::set_slot_pattern10ms()
+{
+ set(types::slot_pattern10ms);
+ return c.get<fixed_bitstring<20> >();
+}
+fixed_bitstring<80>& res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::set_slot_pattern40ms()
+{
+ set(types::slot_pattern40ms);
+ return c.get<fixed_bitstring<80> >();
+}
+void res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::slot_pattern10ms:
+ j.write_str("slotPattern10ms", c.get<fixed_bitstring<20> >().to_string());
+ break;
+ case types::slot_pattern40ms:
+ j.write_str("slotPattern40ms", c.get<fixed_bitstring<80> >().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::slot_pattern10ms:
+ HANDLE_CODE(c.get<fixed_bitstring<20> >().pack(bref));
+ break;
+ case types::slot_pattern40ms:
+ HANDLE_CODE(c.get<fixed_bitstring<80> >().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::slot_pattern10ms:
+ HANDLE_CODE(c.get<fixed_bitstring<20> >().unpack(bref));
+ break;
+ case types::slot_pattern40ms:
+ HANDLE_CODE(c.get<fixed_bitstring<80> >().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
// NZP-FrequencyDensity-r14 ::= ENUMERATED
const char* nzp_freq_density_r14_opts::to_string() const
{
@@ -9037,6 +9850,86 @@ uint8_t ant_info_ul_stti_r15_s::tx_mode_ul_stti_r15_opts::to_number() const
return map_enum_number(options, 2, value, "ant_info_ul_stti_r15_s::tx_mode_ul_stti_r15_e_");
}
+// CE-PDSCH-14HARQ-Config-r17 ::= SEQUENCE
+SRSASN_CODE ce_pdsch_minus14_harq_cfg_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(ce_harq_ack_delay_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ce_pdsch_minus14_harq_cfg_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(ce_harq_ack_delay_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void ce_pdsch_minus14_harq_cfg_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("ce-HARQ-AckDelay-r17", ce_harq_ack_delay_r17.to_string());
+ j.end_obj();
+}
+
+const char* ce_pdsch_minus14_harq_cfg_r17_s::ce_harq_ack_delay_r17_opts::to_string() const
+{
+ static const char* options[] = {"alt-1", "alt-2e"};
+ return convert_enum_idx(options, 2, value, "ce_pdsch_minus14_harq_cfg_r17_s::ce_harq_ack_delay_r17_e_");
+}
+int8_t ce_pdsch_minus14_harq_cfg_r17_s::ce_harq_ack_delay_r17_opts::to_number() const
+{
+ static const int8_t options[] = {-1, -2};
+ return map_enum_number(options, 2, value, "ce_pdsch_minus14_harq_cfg_r17_s::ce_harq_ack_delay_r17_e_");
+}
+
+// CE-PDSCH-MultiTB-Config-r16 ::= SEQUENCE
+SRSASN_CODE ce_pdsch_multi_tb_cfg_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(interleaving_r16_present, 1));
+ HANDLE_CODE(bref.pack(harq_ack_bundling_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ce_pdsch_multi_tb_cfg_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(interleaving_r16_present, 1));
+ HANDLE_CODE(bref.unpack(harq_ack_bundling_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void ce_pdsch_multi_tb_cfg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (interleaving_r16_present) {
+ j.write_str("interleaving-r16", "on");
+ }
+ if (harq_ack_bundling_r16_present) {
+ j.write_str("harq-AckBundling-r16", "on");
+ }
+ j.end_obj();
+}
+
+// CE-PUSCH-MultiTB-Config-r16 ::= SEQUENCE
+SRSASN_CODE ce_pusch_multi_tb_cfg_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(interleaving_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ce_pusch_multi_tb_cfg_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(interleaving_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void ce_pusch_multi_tb_cfg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (interleaving_r16_present) {
+ j.write_str("interleaving-r16", "on");
+ }
+ j.end_obj();
+}
+
// CQI-ReportConfig-r15 ::= CHOICE
void cqi_report_cfg_r15_c::set(types::options e)
{
@@ -10508,6 +11401,133 @@ bool srs_cc_set_idx_r14_s::operator==(const srs_cc_set_idx_r14_s& other) const
return cc_set_idx_r14 == other.cc_set_idx_r14 and cc_idx_in_one_cc_set_r14 == other.cc_idx_in_one_cc_set_r14;
}
+// SRS-ConfigAdd-r16 ::= SEQUENCE
+SRSASN_CODE srs_cfg_add_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(srs_guard_symbol_as_add_r16_present, 1));
+ HANDLE_CODE(bref.pack(srs_guard_symbol_fh_add_r16_present, 1));
+
+ HANDLE_CODE(srs_rep_num_add_r16.pack(bref));
+ HANDLE_CODE(srs_bw_add_r16.pack(bref));
+ HANDLE_CODE(srs_hop_bw_add_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, srs_freq_domain_pos_add_r16, (uint8_t)0u, (uint8_t)23u));
+ HANDLE_CODE(srs_ant_port_add_r16.pack(bref));
+ HANDLE_CODE(srs_cyclic_shift_add_r16.pack(bref));
+ HANDLE_CODE(srs_tx_comb_num_add_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, srs_tx_comb_add_r16, (uint8_t)0u, (uint8_t)3u));
+ HANDLE_CODE(pack_integer(bref, srs_start_pos_add_r16, (uint8_t)1u, (uint8_t)13u));
+ HANDLE_CODE(pack_integer(bref, srs_dur_add_r16, (uint8_t)1u, (uint8_t)13u));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE srs_cfg_add_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(srs_guard_symbol_as_add_r16_present, 1));
+ HANDLE_CODE(bref.unpack(srs_guard_symbol_fh_add_r16_present, 1));
+
+ HANDLE_CODE(srs_rep_num_add_r16.unpack(bref));
+ HANDLE_CODE(srs_bw_add_r16.unpack(bref));
+ HANDLE_CODE(srs_hop_bw_add_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(srs_freq_domain_pos_add_r16, bref, (uint8_t)0u, (uint8_t)23u));
+ HANDLE_CODE(srs_ant_port_add_r16.unpack(bref));
+ HANDLE_CODE(srs_cyclic_shift_add_r16.unpack(bref));
+ HANDLE_CODE(srs_tx_comb_num_add_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(srs_tx_comb_add_r16, bref, (uint8_t)0u, (uint8_t)3u));
+ HANDLE_CODE(unpack_integer(srs_start_pos_add_r16, bref, (uint8_t)1u, (uint8_t)13u));
+ HANDLE_CODE(unpack_integer(srs_dur_add_r16, bref, (uint8_t)1u, (uint8_t)13u));
+
+ return SRSASN_SUCCESS;
+}
+void srs_cfg_add_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("srs-RepNumAdd-r16", srs_rep_num_add_r16.to_string());
+ j.write_str("srs-BandwidthAdd-r16", srs_bw_add_r16.to_string());
+ j.write_str("srs-HoppingBandwidthAdd-r16", srs_hop_bw_add_r16.to_string());
+ j.write_int("srs-FreqDomainPosAdd-r16", srs_freq_domain_pos_add_r16);
+ j.write_str("srs-AntennaPortAdd-r16", srs_ant_port_add_r16.to_string());
+ j.write_str("srs-CyclicShiftAdd-r16", srs_cyclic_shift_add_r16.to_string());
+ j.write_str("srs-TransmissionCombNumAdd-r16", srs_tx_comb_num_add_r16.to_string());
+ j.write_int("srs-TransmissionCombAdd-r16", srs_tx_comb_add_r16);
+ j.write_int("srs-StartPosAdd-r16", srs_start_pos_add_r16);
+ j.write_int("srs-DurationAdd-r16", srs_dur_add_r16);
+ if (srs_guard_symbol_as_add_r16_present) {
+ j.write_str("srs-GuardSymbolAS-Add-r16", "enabled");
+ }
+ if (srs_guard_symbol_fh_add_r16_present) {
+ j.write_str("srs-GuardSymbolFH-Add-r16", "enabled");
+ }
+ j.end_obj();
+}
+bool srs_cfg_add_r16_s::operator==(const srs_cfg_add_r16_s& other) const
+{
+ return srs_rep_num_add_r16 == other.srs_rep_num_add_r16 and srs_bw_add_r16 == other.srs_bw_add_r16 and
+ srs_hop_bw_add_r16 == other.srs_hop_bw_add_r16 and
+ srs_freq_domain_pos_add_r16 == other.srs_freq_domain_pos_add_r16 and
+ srs_ant_port_add_r16 == other.srs_ant_port_add_r16 and
+ srs_cyclic_shift_add_r16 == other.srs_cyclic_shift_add_r16 and
+ srs_tx_comb_num_add_r16 == other.srs_tx_comb_num_add_r16 and
+ srs_tx_comb_add_r16 == other.srs_tx_comb_add_r16 and srs_start_pos_add_r16 == other.srs_start_pos_add_r16 and
+ srs_dur_add_r16 == other.srs_dur_add_r16 and
+ srs_guard_symbol_as_add_r16_present == other.srs_guard_symbol_as_add_r16_present and
+ srs_guard_symbol_fh_add_r16_present == other.srs_guard_symbol_fh_add_r16_present;
+}
+
+const char* srs_cfg_add_r16_s::srs_rep_num_add_r16_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n3", "n4", "n6", "n7", "n8", "n9", "n12", "n13"};
+ return convert_enum_idx(options, 10, value, "srs_cfg_add_r16_s::srs_rep_num_add_r16_e_");
+}
+uint8_t srs_cfg_add_r16_s::srs_rep_num_add_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 3, 4, 6, 7, 8, 9, 12, 13};
+ return map_enum_number(options, 10, value, "srs_cfg_add_r16_s::srs_rep_num_add_r16_e_");
+}
+
+const char* srs_cfg_add_r16_s::srs_bw_add_r16_opts::to_string() const
+{
+ static const char* options[] = {"bw0", "bw1", "bw2", "bw3"};
+ return convert_enum_idx(options, 4, value, "srs_cfg_add_r16_s::srs_bw_add_r16_e_");
+}
+uint8_t srs_cfg_add_r16_s::srs_bw_add_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {0, 1, 2, 3};
+ return map_enum_number(options, 4, value, "srs_cfg_add_r16_s::srs_bw_add_r16_e_");
+}
+
+const char* srs_cfg_add_r16_s::srs_hop_bw_add_r16_opts::to_string() const
+{
+ static const char* options[] = {"hbw0", "hbw1", "hbw2", "hbw3"};
+ return convert_enum_idx(options, 4, value, "srs_cfg_add_r16_s::srs_hop_bw_add_r16_e_");
+}
+uint8_t srs_cfg_add_r16_s::srs_hop_bw_add_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {0, 1, 2, 3};
+ return map_enum_number(options, 4, value, "srs_cfg_add_r16_s::srs_hop_bw_add_r16_e_");
+}
+
+const char* srs_cfg_add_r16_s::srs_cyclic_shift_add_r16_opts::to_string() const
+{
+ static const char* options[] = {"cs0", "cs1", "cs2", "cs3", "cs4", "cs5", "cs6", "cs7", "cs8", "cs9", "cs10", "cs11"};
+ return convert_enum_idx(options, 12, value, "srs_cfg_add_r16_s::srs_cyclic_shift_add_r16_e_");
+}
+uint8_t srs_cfg_add_r16_s::srs_cyclic_shift_add_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
+ return map_enum_number(options, 12, value, "srs_cfg_add_r16_s::srs_cyclic_shift_add_r16_e_");
+}
+
+const char* srs_cfg_add_r16_s::srs_tx_comb_num_add_r16_opts::to_string() const
+{
+ static const char* options[] = {"n2", "n4"};
+ return convert_enum_idx(options, 2, value, "srs_cfg_add_r16_s::srs_tx_comb_num_add_r16_e_");
+}
+uint8_t srs_cfg_add_r16_s::srs_tx_comb_num_add_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {2, 4};
+ return map_enum_number(options, 2, value, "srs_cfg_add_r16_s::srs_tx_comb_num_add_r16_e_");
+}
+
// SRS-ConfigAp-r10 ::= SEQUENCE
SRSASN_CODE srs_cfg_ap_r10_s::pack(bit_ref& bref) const
{
@@ -13399,6 +14419,63 @@ const char* pdsch_cfg_ded_v1530_s::alt_mcs_table_scaling_cfg_r15_opts::to_number
return convert_enum_idx(options, 4, value, "pdsch_cfg_ded_v1530_s::alt_mcs_table_scaling_cfg_r15_e_");
}
+// PDSCH-ConfigDedicated-v1610 ::= SEQUENCE
+SRSASN_CODE pdsch_cfg_ded_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(ce_pdsch_multi_tb_cfg_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pdsch_cfg_ded_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(ce_pdsch_multi_tb_cfg_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void pdsch_cfg_ded_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("ce-PDSCH-MultiTB-Config-r16");
+ ce_pdsch_multi_tb_cfg_r16.to_json(j);
+ j.end_obj();
+}
+
+// PDSCH-ConfigDedicated-v1700 ::= SEQUENCE
+SRSASN_CODE pdsch_cfg_ded_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ce_pdsch_minus14_harq_cfg_r17_present, 1));
+ HANDLE_CODE(bref.pack(ce_pdsch_max_tbs_r17_present, 1));
+
+ if (ce_pdsch_minus14_harq_cfg_r17_present) {
+ HANDLE_CODE(ce_pdsch_minus14_harq_cfg_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pdsch_cfg_ded_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ce_pdsch_minus14_harq_cfg_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ce_pdsch_max_tbs_r17_present, 1));
+
+ if (ce_pdsch_minus14_harq_cfg_r17_present) {
+ HANDLE_CODE(ce_pdsch_minus14_harq_cfg_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void pdsch_cfg_ded_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ce_pdsch_minus14_harq_cfg_r17_present) {
+ j.write_fieldname("ce-PDSCH-14HARQ-Config-r17");
+ ce_pdsch_minus14_harq_cfg_r17.to_json(j);
+ }
+ if (ce_pdsch_max_tbs_r17_present) {
+ j.write_str("ce-PDSCH-maxTBS-r17", "enabled");
+ }
+ j.end_obj();
+}
+
// PUCCH-ConfigDedicated ::= SEQUENCE
SRSASN_CODE pucch_cfg_ded_s::pack(bit_ref& bref) const
{
@@ -16161,6 +17238,27 @@ SRSASN_CODE pusch_cfg_ded_v1530_s::ce_pusch_sub_prb_cfg_r15_c_::unpack(cbit_ref&
return SRSASN_SUCCESS;
}
+// PUSCH-ConfigDedicated-v1610 ::= SEQUENCE
+SRSASN_CODE pusch_cfg_ded_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(ce_pusch_multi_tb_cfg_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pusch_cfg_ded_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(ce_pusch_multi_tb_cfg_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void pusch_cfg_ded_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("ce-PUSCH-MultiTB-Config-r16");
+ ce_pusch_multi_tb_cfg_r16.to_json(j);
+ j.end_obj();
+}
+
// PUSCH-EnhancementsConfig-r14 ::= CHOICE
void pusch_enhance_cfg_r14_c::set(types::options e)
{
@@ -16758,6 +17856,68 @@ bool phys_cfg_ded_stti_r15_c::operator==(const phys_cfg_ded_stti_r15_c& other) c
(not c.short_tti_r15_present or c.short_tti_r15 == other.c.short_tti_r15);
}
+// ResourceReservationConfigDedicatedDL-r16 ::= SEQUENCE
+SRSASN_CODE res_reserv_cfg_ded_dl_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(res_reserv_ded_dl_r16_present, 1));
+
+ if (res_reserv_ded_dl_r16_present) {
+ HANDLE_CODE(res_reserv_ded_dl_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_ded_dl_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(res_reserv_ded_dl_r16_present, 1));
+
+ if (res_reserv_ded_dl_r16_present) {
+ HANDLE_CODE(res_reserv_ded_dl_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void res_reserv_cfg_ded_dl_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (res_reserv_ded_dl_r16_present) {
+ j.write_fieldname("resourceReservationDedicatedDL-r16");
+ res_reserv_ded_dl_r16.to_json(j);
+ }
+ j.end_obj();
+}
+
+// ResourceReservationConfigDedicatedUL-r16 ::= SEQUENCE
+SRSASN_CODE res_reserv_cfg_ded_ul_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(res_reserv_ded_ul_r16_present, 1));
+
+ if (res_reserv_ded_ul_r16_present) {
+ HANDLE_CODE(res_reserv_ded_ul_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_ded_ul_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(res_reserv_ded_ul_r16_present, 1));
+
+ if (res_reserv_ded_ul_r16_present) {
+ HANDLE_CODE(res_reserv_ded_ul_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void res_reserv_cfg_ded_ul_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (res_reserv_ded_ul_r16_present) {
+ j.write_fieldname("resourceReservationDedicatedUL-r16");
+ res_reserv_ded_ul_r16.to_json(j);
+ }
+ j.end_obj();
+}
+
// SPUCCH-Config-v1550 ::= CHOICE
void spucch_cfg_v1550_c::set(types::options e)
{
@@ -17317,6 +18477,136 @@ uint8_t srs_ul_cfg_ded_v1310_c::setup_s_::tx_comb_num_r13_opts::to_number() cons
return map_enum_number(options, 2, value, "srs_ul_cfg_ded_v1310_c::setup_s_::tx_comb_num_r13_e_");
}
+// SoundingRS-UL-ConfigDedicatedAdd-r16 ::= SEQUENCE
+SRSASN_CODE srs_ul_cfg_ded_add_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(srs_cfg_ap_dci_format4_r16_present, 1));
+ HANDLE_CODE(bref.pack(srs_activ_ap_r13_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, srs_cfg_idx_ap_r16, (uint8_t)0u, (uint8_t)31u));
+ if (srs_cfg_ap_dci_format4_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, srs_cfg_ap_dci_format4_r16, 1, 3));
+ }
+ if (srs_activ_ap_r13_present) {
+ HANDLE_CODE(srs_activ_ap_r13.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE srs_ul_cfg_ded_add_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(srs_cfg_ap_dci_format4_r16_present, 1));
+ HANDLE_CODE(bref.unpack(srs_activ_ap_r13_present, 1));
+
+ HANDLE_CODE(unpack_integer(srs_cfg_idx_ap_r16, bref, (uint8_t)0u, (uint8_t)31u));
+ if (srs_cfg_ap_dci_format4_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(srs_cfg_ap_dci_format4_r16, bref, 1, 3));
+ }
+ if (srs_activ_ap_r13_present) {
+ HANDLE_CODE(srs_activ_ap_r13.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void srs_ul_cfg_ded_add_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("srs-ConfigIndexAp-r16", srs_cfg_idx_ap_r16);
+ if (srs_cfg_ap_dci_format4_r16_present) {
+ j.start_array("srs-ConfigApDCI-Format4-r16");
+ for (const auto& e1 : srs_cfg_ap_dci_format4_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (srs_activ_ap_r13_present) {
+ j.write_fieldname("srs-ActivateAp-r13");
+ srs_activ_ap_r13.to_json(j);
+ }
+ j.end_obj();
+}
+bool srs_ul_cfg_ded_add_r16_s::operator==(const srs_ul_cfg_ded_add_r16_s& other) const
+{
+ return srs_cfg_idx_ap_r16 == other.srs_cfg_idx_ap_r16 and
+ srs_cfg_ap_dci_format4_r16_present == other.srs_cfg_ap_dci_format4_r16_present and
+ (not srs_cfg_ap_dci_format4_r16_present or srs_cfg_ap_dci_format4_r16 == other.srs_cfg_ap_dci_format4_r16) and
+ srs_activ_ap_r13_present == other.srs_activ_ap_r13_present and
+ (not srs_activ_ap_r13_present or srs_activ_ap_r13 == other.srs_activ_ap_r13);
+}
+
+void srs_ul_cfg_ded_add_r16_s::srs_activ_ap_r13_c_::set(types::options e)
+{
+ type_ = e;
+}
+void srs_ul_cfg_ded_add_r16_s::srs_activ_ap_r13_c_::set_release()
+{
+ set(types::release);
+}
+srs_ul_cfg_ded_add_r16_s::srs_activ_ap_r13_c_::setup_s_& srs_ul_cfg_ded_add_r16_s::srs_activ_ap_r13_c_::set_setup()
+{
+ set(types::setup);
+ return c;
+}
+void srs_ul_cfg_ded_add_r16_s::srs_activ_ap_r13_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ j.write_fieldname("setup");
+ j.start_obj();
+ j.write_fieldname("srs-ConfigApDCI-Format0-r16");
+ c.srs_cfg_ap_dci_format0_r16.to_json(j);
+ j.write_fieldname("srs-ConfigApDCI-Format1a2b2c-r16");
+ c.srs_cfg_ap_dci_format1a2b2c_r16.to_json(j);
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "srs_ul_cfg_ded_add_r16_s::srs_activ_ap_r13_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE srs_ul_cfg_ded_add_r16_s::srs_activ_ap_r13_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ HANDLE_CODE(c.srs_cfg_ap_dci_format0_r16.pack(bref));
+ HANDLE_CODE(c.srs_cfg_ap_dci_format1a2b2c_r16.pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "srs_ul_cfg_ded_add_r16_s::srs_activ_ap_r13_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE srs_ul_cfg_ded_add_r16_s::srs_activ_ap_r13_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ HANDLE_CODE(c.srs_cfg_ap_dci_format0_r16.unpack(bref));
+ HANDLE_CODE(c.srs_cfg_ap_dci_format1a2b2c_r16.unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "srs_ul_cfg_ded_add_r16_s::srs_activ_ap_r13_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+bool srs_ul_cfg_ded_add_r16_s::srs_activ_ap_r13_c_::operator==(const srs_activ_ap_r13_c_& other) const
+{
+ return type() == other.type() and c.srs_cfg_ap_dci_format0_r16 == other.c.srs_cfg_ap_dci_format0_r16 and
+ c.srs_cfg_ap_dci_format1a2b2c_r16 == other.c.srs_cfg_ap_dci_format1a2b2c_r16;
+}
+
// SoundingRS-UL-ConfigDedicatedAperiodic-r10 ::= CHOICE
void srs_ul_cfg_ded_aperiodic_r10_c::set(types::options e)
{
@@ -18034,6 +19324,115 @@ uint8_t srs_ul_cfg_ded_up_pts_ext_r13_c::setup_s_::tx_comb_num_r13_opts::to_numb
return map_enum_number(options, 2, value, "srs_ul_cfg_ded_up_pts_ext_r13_c::setup_s_::tx_comb_num_r13_e_");
}
+// SoundingRS-VirtualCellID-r16 ::= SEQUENCE
+SRSASN_CODE srs_virtual_cell_id_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, srs_virtual_cell_id_r16, (uint16_t)0u, (uint16_t)503u));
+ HANDLE_CODE(bref.pack(srs_virtual_cell_id_all_srs_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE srs_virtual_cell_id_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(srs_virtual_cell_id_r16, bref, (uint16_t)0u, (uint16_t)503u));
+ HANDLE_CODE(bref.unpack(srs_virtual_cell_id_all_srs_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+void srs_virtual_cell_id_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("srs-VirtualCellID-r16", srs_virtual_cell_id_r16);
+ j.write_bool("srs-VirtualCellID-AllSRS-r16", srs_virtual_cell_id_all_srs_r16);
+ j.end_obj();
+}
+bool srs_virtual_cell_id_r16_s::operator==(const srs_virtual_cell_id_r16_s& other) const
+{
+ return srs_virtual_cell_id_r16 == other.srs_virtual_cell_id_r16 and
+ srs_virtual_cell_id_all_srs_r16 == other.srs_virtual_cell_id_all_srs_r16;
+}
+
+// UplinkPowerControlAddSRS-r16 ::= SEQUENCE
+SRSASN_CODE ul_pwr_ctrl_add_srs_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(tpc_idx_srs_add_r16_present, 1));
+ HANDLE_CODE(bref.pack(start_bit_of_format3_b_srs_add_r16_present, 1));
+ HANDLE_CODE(bref.pack(field_type_format3_b_srs_add_r16_present, 1));
+ HANDLE_CODE(bref.pack(p0_ue_srs_add_r16_present, 1));
+
+ if (tpc_idx_srs_add_r16_present) {
+ HANDLE_CODE(tpc_idx_srs_add_r16.pack(bref));
+ }
+ if (start_bit_of_format3_b_srs_add_r16_present) {
+ HANDLE_CODE(pack_integer(bref, start_bit_of_format3_b_srs_add_r16, (uint8_t)0u, (uint8_t)31u));
+ }
+ if (field_type_format3_b_srs_add_r16_present) {
+ HANDLE_CODE(pack_integer(bref, field_type_format3_b_srs_add_r16, (uint8_t)1u, (uint8_t)2u));
+ }
+ if (p0_ue_srs_add_r16_present) {
+ HANDLE_CODE(pack_integer(bref, p0_ue_srs_add_r16, (int8_t)-16, (int8_t)15));
+ }
+ HANDLE_CODE(bref.pack(accumulation_enabled_srs_add_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_pwr_ctrl_add_srs_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(tpc_idx_srs_add_r16_present, 1));
+ HANDLE_CODE(bref.unpack(start_bit_of_format3_b_srs_add_r16_present, 1));
+ HANDLE_CODE(bref.unpack(field_type_format3_b_srs_add_r16_present, 1));
+ HANDLE_CODE(bref.unpack(p0_ue_srs_add_r16_present, 1));
+
+ if (tpc_idx_srs_add_r16_present) {
+ HANDLE_CODE(tpc_idx_srs_add_r16.unpack(bref));
+ }
+ if (start_bit_of_format3_b_srs_add_r16_present) {
+ HANDLE_CODE(unpack_integer(start_bit_of_format3_b_srs_add_r16, bref, (uint8_t)0u, (uint8_t)31u));
+ }
+ if (field_type_format3_b_srs_add_r16_present) {
+ HANDLE_CODE(unpack_integer(field_type_format3_b_srs_add_r16, bref, (uint8_t)1u, (uint8_t)2u));
+ }
+ if (p0_ue_srs_add_r16_present) {
+ HANDLE_CODE(unpack_integer(p0_ue_srs_add_r16, bref, (int8_t)-16, (int8_t)15));
+ }
+ HANDLE_CODE(bref.unpack(accumulation_enabled_srs_add_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+void ul_pwr_ctrl_add_srs_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (tpc_idx_srs_add_r16_present) {
+ j.write_fieldname("tpc-IndexSRS-Add-r16");
+ tpc_idx_srs_add_r16.to_json(j);
+ }
+ if (start_bit_of_format3_b_srs_add_r16_present) {
+ j.write_int("startingBitOfFormat3B-SRS-Add-r16", start_bit_of_format3_b_srs_add_r16);
+ }
+ if (field_type_format3_b_srs_add_r16_present) {
+ j.write_int("fieldTypeFormat3B-SRS-Add-r16", field_type_format3_b_srs_add_r16);
+ }
+ if (p0_ue_srs_add_r16_present) {
+ j.write_int("p0-UE-SRS-Add-r16", p0_ue_srs_add_r16);
+ }
+ j.write_bool("accumulationEnabledSRS-Add-r16", accumulation_enabled_srs_add_r16);
+ j.end_obj();
+}
+bool ul_pwr_ctrl_add_srs_r16_s::operator==(const ul_pwr_ctrl_add_srs_r16_s& other) const
+{
+ return tpc_idx_srs_add_r16_present == other.tpc_idx_srs_add_r16_present and
+ (not tpc_idx_srs_add_r16_present or tpc_idx_srs_add_r16 == other.tpc_idx_srs_add_r16) and
+ start_bit_of_format3_b_srs_add_r16_present == other.start_bit_of_format3_b_srs_add_r16_present and
+ (not start_bit_of_format3_b_srs_add_r16_present or
+ start_bit_of_format3_b_srs_add_r16 == other.start_bit_of_format3_b_srs_add_r16) and
+ field_type_format3_b_srs_add_r16_present == other.field_type_format3_b_srs_add_r16_present and
+ (not field_type_format3_b_srs_add_r16_present or
+ field_type_format3_b_srs_add_r16 == other.field_type_format3_b_srs_add_r16) and
+ p0_ue_srs_add_r16_present == other.p0_ue_srs_add_r16_present and
+ (not p0_ue_srs_add_r16_present or p0_ue_srs_add_r16 == other.p0_ue_srs_add_r16) and
+ accumulation_enabled_srs_add_r16 == other.accumulation_enabled_srs_add_r16;
+}
+
// UplinkPowerControlDedicated ::= SEQUENCE
SRSASN_CODE ul_pwr_ctrl_ded_s::pack(bit_ref& bref) const
{
@@ -18347,6 +19746,34 @@ bool ul_pwr_ctrl_ded_v1530_s::operator==(const ul_pwr_ctrl_ded_v1530_s& other) c
(not p0_ue_pusch_r15_present or p0_ue_pusch_r15 == other.p0_ue_pusch_r15);
}
+// WidebandPRG-r16 ::= SEQUENCE
+SRSASN_CODE wideband_prg_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(wideband_prg_sf_r16, 1));
+ HANDLE_CODE(bref.pack(wideband_prg_slot_subslot_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE wideband_prg_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(wideband_prg_sf_r16, 1));
+ HANDLE_CODE(bref.unpack(wideband_prg_slot_subslot_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+void wideband_prg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_bool("widebandPRG-Subframe-r16", wideband_prg_sf_r16);
+ j.write_bool("widebandPRG-SlotSubslot-r16", wideband_prg_slot_subslot_r16);
+ j.end_obj();
+}
+bool wideband_prg_r16_s::operator==(const wideband_prg_r16_s& other) const
+{
+ return wideband_prg_sf_r16 == other.wideband_prg_sf_r16 and
+ wideband_prg_slot_subslot_r16 == other.wideband_prg_slot_subslot_r16;
+}
+
// PhysicalConfigDedicated ::= SEQUENCE
SRSASN_CODE phys_cfg_ded_s::pack(bit_ref& bref) const
{
@@ -18469,6 +19896,18 @@ SRSASN_CODE phys_cfg_ded_s::pack(bit_ref& bref) const
group_flags[10] |= semi_static_cfi_cfg_r15.is_present();
group_flags[10] |= blind_pdsch_repeat_cfg_r15.is_present();
group_flags[11] |= spucch_cfg_v1550.is_present();
+ group_flags[12] |= pdsch_cfg_ded_v1610.is_present();
+ group_flags[12] |= pusch_cfg_ded_v1610.is_present();
+ group_flags[12] |= ce_csi_rs_feedback_r16_present;
+ group_flags[12] |= res_reserv_cfg_ded_dl_r16.is_present();
+ group_flags[12] |= res_reserv_cfg_ded_ul_r16.is_present();
+ group_flags[12] |= srs_ul_cfg_ded_add_r16.is_present();
+ group_flags[12] |= ul_pwr_ctrl_add_srs_r16.is_present();
+ group_flags[12] |= srs_virtual_cell_id_r16.is_present();
+ group_flags[12] |= wideband_prg_r16.is_present();
+ group_flags[13] |= pdsch_cfg_ded_v1700.is_present();
+ group_flags[13] |= ntn_cfg_ded_r17.is_present();
+ group_flags[14] |= ul_segmented_precompensation_gap_r17_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -18813,6 +20252,70 @@ SRSASN_CODE phys_cfg_ded_s::pack(bit_ref& bref) const
HANDLE_CODE(spucch_cfg_v1550->pack(bref));
}
}
+ if (group_flags[12]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(pdsch_cfg_ded_v1610.is_present(), 1));
+ HANDLE_CODE(bref.pack(pusch_cfg_ded_v1610.is_present(), 1));
+ HANDLE_CODE(bref.pack(ce_csi_rs_feedback_r16_present, 1));
+ HANDLE_CODE(bref.pack(res_reserv_cfg_ded_dl_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(res_reserv_cfg_ded_ul_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(srs_ul_cfg_ded_add_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(ul_pwr_ctrl_add_srs_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(srs_virtual_cell_id_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(wideband_prg_r16.is_present(), 1));
+ if (pdsch_cfg_ded_v1610.is_present()) {
+ HANDLE_CODE(pdsch_cfg_ded_v1610->pack(bref));
+ }
+ if (pusch_cfg_ded_v1610.is_present()) {
+ HANDLE_CODE(pusch_cfg_ded_v1610->pack(bref));
+ }
+ if (res_reserv_cfg_ded_dl_r16.is_present()) {
+ HANDLE_CODE(res_reserv_cfg_ded_dl_r16->pack(bref));
+ }
+ if (res_reserv_cfg_ded_ul_r16.is_present()) {
+ HANDLE_CODE(res_reserv_cfg_ded_ul_r16->pack(bref));
+ }
+ if (srs_ul_cfg_ded_add_r16.is_present()) {
+ HANDLE_CODE(srs_ul_cfg_ded_add_r16->pack(bref));
+ }
+ if (ul_pwr_ctrl_add_srs_r16.is_present()) {
+ HANDLE_CODE(ul_pwr_ctrl_add_srs_r16->pack(bref));
+ }
+ if (srs_virtual_cell_id_r16.is_present()) {
+ HANDLE_CODE(srs_virtual_cell_id_r16->pack(bref));
+ }
+ if (wideband_prg_r16.is_present()) {
+ HANDLE_CODE(wideband_prg_r16->pack(bref));
+ }
+ }
+ if (group_flags[13]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(pdsch_cfg_ded_v1700.is_present(), 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_ded_r17.is_present(), 1));
+ if (pdsch_cfg_ded_v1700.is_present()) {
+ HANDLE_CODE(pdsch_cfg_ded_v1700->pack(bref));
+ }
+ if (ntn_cfg_ded_r17.is_present()) {
+ HANDLE_CODE(bref.pack(ntn_cfg_ded_r17->pucch_tx_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_ded_r17->pusch_tx_dur_r17_present, 1));
+ if (ntn_cfg_ded_r17->pucch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_ded_r17->pucch_tx_dur_r17.pack(bref));
+ }
+ if (ntn_cfg_ded_r17->pusch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_ded_r17->pusch_tx_dur_r17.pack(bref));
+ }
+ }
+ }
+ if (group_flags[14]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ul_segmented_precompensation_gap_r17_present, 1));
+ if (ul_segmented_precompensation_gap_r17_present) {
+ HANDLE_CODE(ul_segmented_precompensation_gap_r17.pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -18862,7 +20365,7 @@ SRSASN_CODE phys_cfg_ded_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(12);
+ ext_groups_unpacker_guard group_flags(15);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -19349,6 +20852,90 @@ SRSASN_CODE phys_cfg_ded_s::unpack(cbit_ref& bref)
HANDLE_CODE(spucch_cfg_v1550->unpack(bref));
}
}
+ if (group_flags[12]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool pdsch_cfg_ded_v1610_present;
+ HANDLE_CODE(bref.unpack(pdsch_cfg_ded_v1610_present, 1));
+ pdsch_cfg_ded_v1610.set_present(pdsch_cfg_ded_v1610_present);
+ bool pusch_cfg_ded_v1610_present;
+ HANDLE_CODE(bref.unpack(pusch_cfg_ded_v1610_present, 1));
+ pusch_cfg_ded_v1610.set_present(pusch_cfg_ded_v1610_present);
+ HANDLE_CODE(bref.unpack(ce_csi_rs_feedback_r16_present, 1));
+ bool res_reserv_cfg_ded_dl_r16_present;
+ HANDLE_CODE(bref.unpack(res_reserv_cfg_ded_dl_r16_present, 1));
+ res_reserv_cfg_ded_dl_r16.set_present(res_reserv_cfg_ded_dl_r16_present);
+ bool res_reserv_cfg_ded_ul_r16_present;
+ HANDLE_CODE(bref.unpack(res_reserv_cfg_ded_ul_r16_present, 1));
+ res_reserv_cfg_ded_ul_r16.set_present(res_reserv_cfg_ded_ul_r16_present);
+ bool srs_ul_cfg_ded_add_r16_present;
+ HANDLE_CODE(bref.unpack(srs_ul_cfg_ded_add_r16_present, 1));
+ srs_ul_cfg_ded_add_r16.set_present(srs_ul_cfg_ded_add_r16_present);
+ bool ul_pwr_ctrl_add_srs_r16_present;
+ HANDLE_CODE(bref.unpack(ul_pwr_ctrl_add_srs_r16_present, 1));
+ ul_pwr_ctrl_add_srs_r16.set_present(ul_pwr_ctrl_add_srs_r16_present);
+ bool srs_virtual_cell_id_r16_present;
+ HANDLE_CODE(bref.unpack(srs_virtual_cell_id_r16_present, 1));
+ srs_virtual_cell_id_r16.set_present(srs_virtual_cell_id_r16_present);
+ bool wideband_prg_r16_present;
+ HANDLE_CODE(bref.unpack(wideband_prg_r16_present, 1));
+ wideband_prg_r16.set_present(wideband_prg_r16_present);
+ if (pdsch_cfg_ded_v1610.is_present()) {
+ HANDLE_CODE(pdsch_cfg_ded_v1610->unpack(bref));
+ }
+ if (pusch_cfg_ded_v1610.is_present()) {
+ HANDLE_CODE(pusch_cfg_ded_v1610->unpack(bref));
+ }
+ if (res_reserv_cfg_ded_dl_r16.is_present()) {
+ HANDLE_CODE(res_reserv_cfg_ded_dl_r16->unpack(bref));
+ }
+ if (res_reserv_cfg_ded_ul_r16.is_present()) {
+ HANDLE_CODE(res_reserv_cfg_ded_ul_r16->unpack(bref));
+ }
+ if (srs_ul_cfg_ded_add_r16.is_present()) {
+ HANDLE_CODE(srs_ul_cfg_ded_add_r16->unpack(bref));
+ }
+ if (ul_pwr_ctrl_add_srs_r16.is_present()) {
+ HANDLE_CODE(ul_pwr_ctrl_add_srs_r16->unpack(bref));
+ }
+ if (srs_virtual_cell_id_r16.is_present()) {
+ HANDLE_CODE(srs_virtual_cell_id_r16->unpack(bref));
+ }
+ if (wideband_prg_r16.is_present()) {
+ HANDLE_CODE(wideband_prg_r16->unpack(bref));
+ }
+ }
+ if (group_flags[13]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool pdsch_cfg_ded_v1700_present;
+ HANDLE_CODE(bref.unpack(pdsch_cfg_ded_v1700_present, 1));
+ pdsch_cfg_ded_v1700.set_present(pdsch_cfg_ded_v1700_present);
+ bool ntn_cfg_ded_r17_present;
+ HANDLE_CODE(bref.unpack(ntn_cfg_ded_r17_present, 1));
+ ntn_cfg_ded_r17.set_present(ntn_cfg_ded_r17_present);
+ if (pdsch_cfg_ded_v1700.is_present()) {
+ HANDLE_CODE(pdsch_cfg_ded_v1700->unpack(bref));
+ }
+ if (ntn_cfg_ded_r17.is_present()) {
+ HANDLE_CODE(bref.unpack(ntn_cfg_ded_r17->pucch_tx_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_cfg_ded_r17->pusch_tx_dur_r17_present, 1));
+ if (ntn_cfg_ded_r17->pucch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_ded_r17->pucch_tx_dur_r17.unpack(bref));
+ }
+ if (ntn_cfg_ded_r17->pusch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_ded_r17->pusch_tx_dur_r17.unpack(bref));
+ }
+ }
+ }
+ if (group_flags[14]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(ul_segmented_precompensation_gap_r17_present, 1));
+ if (ul_segmented_precompensation_gap_r17_present) {
+ HANDLE_CODE(ul_segmented_precompensation_gap_r17.unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -19719,6 +21306,61 @@ void phys_cfg_ded_s::to_json(json_writer& j) const
j.write_fieldname("spucch-Config-v1550");
spucch_cfg_v1550->to_json(j);
}
+ if (pdsch_cfg_ded_v1610.is_present()) {
+ j.write_fieldname("pdsch-ConfigDedicated-v1610");
+ pdsch_cfg_ded_v1610->to_json(j);
+ }
+ if (pusch_cfg_ded_v1610.is_present()) {
+ j.write_fieldname("pusch-ConfigDedicated-v1610");
+ pusch_cfg_ded_v1610->to_json(j);
+ }
+ if (ce_csi_rs_feedback_r16_present) {
+ j.write_str("ce-CSI-RS-Feedback-r16", "enabled");
+ }
+ if (res_reserv_cfg_ded_dl_r16.is_present()) {
+ j.write_fieldname("resourceReservationConfigDedicatedDL-r16");
+ res_reserv_cfg_ded_dl_r16->to_json(j);
+ }
+ if (res_reserv_cfg_ded_ul_r16.is_present()) {
+ j.write_fieldname("resourceReservationConfigDedicatedUL-r16");
+ res_reserv_cfg_ded_ul_r16->to_json(j);
+ }
+ if (srs_ul_cfg_ded_add_r16.is_present()) {
+ j.write_fieldname("soundingRS-UL-ConfigDedicatedAdd-r16");
+ srs_ul_cfg_ded_add_r16->to_json(j);
+ }
+ if (ul_pwr_ctrl_add_srs_r16.is_present()) {
+ j.write_fieldname("uplinkPowerControlAddSRS-r16");
+ ul_pwr_ctrl_add_srs_r16->to_json(j);
+ }
+ if (srs_virtual_cell_id_r16.is_present()) {
+ j.write_fieldname("soundingRS-VirtualCellID-r16");
+ srs_virtual_cell_id_r16->to_json(j);
+ }
+ if (wideband_prg_r16.is_present()) {
+ j.write_fieldname("widebandPRG-r16");
+ wideband_prg_r16->to_json(j);
+ }
+ if (pdsch_cfg_ded_v1700.is_present()) {
+ j.write_fieldname("pdsch-ConfigDedicated-v1700");
+ pdsch_cfg_ded_v1700->to_json(j);
+ }
+ if (ntn_cfg_ded_r17.is_present()) {
+ j.write_fieldname("ntn-ConfigDedicated-r17");
+ j.start_obj();
+ if (ntn_cfg_ded_r17->pucch_tx_dur_r17_present) {
+ j.write_fieldname("pucch-TxDuration-r17");
+ ntn_cfg_ded_r17->pucch_tx_dur_r17.to_json(j);
+ }
+ if (ntn_cfg_ded_r17->pusch_tx_dur_r17_present) {
+ j.write_fieldname("pusch-TxDuration-r17");
+ ntn_cfg_ded_r17->pusch_tx_dur_r17.to_json(j);
+ }
+ j.end_obj();
+ }
+ if (ul_segmented_precompensation_gap_r17_present) {
+ j.write_str("uplinkSegmentedPrecompensationGap-r17", ul_segmented_precompensation_gap_r17.to_string());
+ }
}
j.end_obj();
}
@@ -20593,3 +22235,9 @@ phys_cfg_ded_s::blind_pdsch_repeat_cfg_r15_c_::setup_s_::mcs_restrict_slot_subsl
value,
"phys_cfg_ded_s::blind_pdsch_repeat_cfg_r15_c_::setup_s_::mcs_restrict_slot_subslot_pdsch_repeats_r15_e_");
}
+
+const char* phys_cfg_ded_s::ul_segmented_precompensation_gap_r17_opts::to_string() const
+{
+ static const char* options[] = {"sym1", "sl1", "sf1"};
+ return convert_enum_idx(options, 3, value, "phys_cfg_ded_s::ul_segmented_precompensation_gap_r17_e_");
+}
diff --git a/lib/src/asn1/rrc/rr_common.cc b/lib/src/asn1/rrc/rr_common.cc
index 0a4c6fd96..58886acf5 100644
--- a/lib/src/asn1/rrc/rr_common.cc
+++ b/lib/src/asn1/rrc/rr_common.cc
@@ -518,6 +518,30 @@ uint8_t tdd_cfg_v1130_s::special_sf_patterns_v1130_opts::to_number() const
return map_enum_number(options, 2, value, "tdd_cfg_v1130_s::special_sf_patterns_v1130_e_");
}
+// GWUS-NumGroups-r16 ::= ENUMERATED
+const char* gwus_num_groups_r16_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n4", "n8"};
+ return convert_enum_idx(options, 4, value, "gwus_num_groups_r16_e");
+}
+uint8_t gwus_num_groups_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 8};
+ return map_enum_number(options, 4, value, "gwus_num_groups_r16_e");
+}
+
+// GWUS-PagingProbThresh-r16 ::= ENUMERATED
+const char* gwus_paging_prob_thresh_r16_opts::to_string() const
+{
+ static const char* options[] = {"p20", "p30", "p40", "p50", "p60", "p70", "p80", "p90"};
+ return convert_enum_idx(options, 8, value, "gwus_paging_prob_thresh_r16_e");
+}
+uint8_t gwus_paging_prob_thresh_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {20, 30, 40, 50, 60, 70, 80, 90};
+ return map_enum_number(options, 8, value, "gwus_paging_prob_thresh_r16_e");
+}
+
// PRACH-ParametersCE-r13 ::= SEQUENCE
SRSASN_CODE prach_params_ce_r13_s::pack(bit_ref& bref) const
{
@@ -1280,6 +1304,347 @@ uint16_t edt_prach_params_ce_r15_s::edt_prach_params_ce_r15_s_::prach_start_sf_r
options, 8, value, "edt_prach_params_ce_r15_s::edt_prach_params_ce_r15_s_::prach_start_sf_r15_e_");
}
+// GWUS-ResourceConfig-r16 ::= SEQUENCE
+SRSASN_CODE gwus_res_cfg_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(num_groups_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(groups_for_service_list_r16_present, 1));
+
+ HANDLE_CODE(res_map_pattern_r16.pack(bref));
+ if (num_groups_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, num_groups_list_r16, 1, 4));
+ }
+ if (groups_for_service_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, groups_for_service_list_r16, 1, 3, integer_packer<uint8_t>(1, 31)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE gwus_res_cfg_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(num_groups_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(groups_for_service_list_r16_present, 1));
+
+ HANDLE_CODE(res_map_pattern_r16.unpack(bref));
+ if (num_groups_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(num_groups_list_r16, bref, 1, 4));
+ }
+ if (groups_for_service_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(groups_for_service_list_r16, bref, 1, 3, integer_packer<uint8_t>(1, 31)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void gwus_res_cfg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("resourceMappingPattern-r16");
+ res_map_pattern_r16.to_json(j);
+ if (num_groups_list_r16_present) {
+ j.start_array("numGroupsList-r16");
+ for (const auto& e1 : num_groups_list_r16) {
+ j.write_str(e1.to_string());
+ }
+ j.end_array();
+ }
+ if (groups_for_service_list_r16_present) {
+ j.start_array("groupsForServiceList-r16");
+ for (const auto& e1 : groups_for_service_list_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+void gwus_res_cfg_r16_s::res_map_pattern_r16_c_::destroy_() {}
+void gwus_res_cfg_r16_s::res_map_pattern_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+}
+gwus_res_cfg_r16_s::res_map_pattern_r16_c_::res_map_pattern_r16_c_(
+ const gwus_res_cfg_r16_s::res_map_pattern_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::res_location_with_wus:
+ c.init(other.c.get<res_location_with_wus_e_>());
+ break;
+ case types::res_location_without_wus:
+ c.init(other.c.get<res_location_without_wus_e_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "gwus_res_cfg_r16_s::res_map_pattern_r16_c_");
+ }
+}
+gwus_res_cfg_r16_s::res_map_pattern_r16_c_&
+gwus_res_cfg_r16_s::res_map_pattern_r16_c_::operator=(const gwus_res_cfg_r16_s::res_map_pattern_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::res_location_with_wus:
+ c.set(other.c.get<res_location_with_wus_e_>());
+ break;
+ case types::res_location_without_wus:
+ c.set(other.c.get<res_location_without_wus_e_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "gwus_res_cfg_r16_s::res_map_pattern_r16_c_");
+ }
+
+ return *this;
+}
+gwus_res_cfg_r16_s::res_map_pattern_r16_c_::res_location_with_wus_e_&
+gwus_res_cfg_r16_s::res_map_pattern_r16_c_::set_res_location_with_wus()
+{
+ set(types::res_location_with_wus);
+ return c.get<res_location_with_wus_e_>();
+}
+gwus_res_cfg_r16_s::res_map_pattern_r16_c_::res_location_without_wus_e_&
+gwus_res_cfg_r16_s::res_map_pattern_r16_c_::set_res_location_without_wus()
+{
+ set(types::res_location_without_wus);
+ return c.get<res_location_without_wus_e_>();
+}
+void gwus_res_cfg_r16_s::res_map_pattern_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::res_location_with_wus:
+ j.write_str("resourceLocationWithWUS", c.get<res_location_with_wus_e_>().to_string());
+ break;
+ case types::res_location_without_wus:
+ j.write_str("resourceLocationWithoutWUS", c.get<res_location_without_wus_e_>().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "gwus_res_cfg_r16_s::res_map_pattern_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE gwus_res_cfg_r16_s::res_map_pattern_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::res_location_with_wus:
+ HANDLE_CODE(c.get<res_location_with_wus_e_>().pack(bref));
+ break;
+ case types::res_location_without_wus:
+ HANDLE_CODE(c.get<res_location_without_wus_e_>().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "gwus_res_cfg_r16_s::res_map_pattern_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE gwus_res_cfg_r16_s::res_map_pattern_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::res_location_with_wus:
+ HANDLE_CODE(c.get<res_location_with_wus_e_>().unpack(bref));
+ break;
+ case types::res_location_without_wus:
+ HANDLE_CODE(c.get<res_location_without_wus_e_>().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "gwus_res_cfg_r16_s::res_map_pattern_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* gwus_res_cfg_r16_s::res_map_pattern_r16_c_::res_location_with_wus_opts::to_string() const
+{
+ static const char* options[] = {"primary", "secondary", "primary3FDM"};
+ return convert_enum_idx(options, 3, value, "gwus_res_cfg_r16_s::res_map_pattern_r16_c_::res_location_with_wus_e_");
+}
+uint8_t gwus_res_cfg_r16_s::res_map_pattern_r16_c_::res_location_with_wus_opts::to_number() const
+{
+ if (value == primary3_fdm) {
+ return 3;
+ }
+ invalid_enum_number(value, "gwus_res_cfg_r16_s::res_map_pattern_r16_c_::res_location_with_wus_e_");
+ return 0;
+}
+
+const char* gwus_res_cfg_r16_s::res_map_pattern_r16_c_::res_location_without_wus_opts::to_string() const
+{
+ static const char* options[] = {"n0", "n2"};
+ return convert_enum_idx(options, 2, value, "gwus_res_cfg_r16_s::res_map_pattern_r16_c_::res_location_without_wus_e_");
+}
+uint8_t gwus_res_cfg_r16_s::res_map_pattern_r16_c_::res_location_without_wus_opts::to_number() const
+{
+ static const uint8_t options[] = {0, 2};
+ return map_enum_number(options, 2, value, "gwus_res_cfg_r16_s::res_map_pattern_r16_c_::res_location_without_wus_e_");
+}
+
+// GWUS-TimeParameters-r16 ::= SEQUENCE
+SRSASN_CODE gwus_time_params_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(num_pos_r16_present, 1));
+ HANDLE_CODE(bref.pack(time_offset_e_drx_long_r16_present, 1));
+ HANDLE_CODE(bref.pack(num_drx_cycles_relaxed_r16_present, 1));
+ HANDLE_CODE(bref.pack(pwr_boost_r16_present, 1));
+
+ HANDLE_CODE(max_dur_factor_r16.pack(bref));
+ if (num_pos_r16_present) {
+ HANDLE_CODE(num_pos_r16.pack(bref));
+ }
+ HANDLE_CODE(time_offset_drx_r16.pack(bref));
+ HANDLE_CODE(time_offset_e_drx_short_r16.pack(bref));
+ if (time_offset_e_drx_long_r16_present) {
+ HANDLE_CODE(time_offset_e_drx_long_r16.pack(bref));
+ }
+ if (num_drx_cycles_relaxed_r16_present) {
+ HANDLE_CODE(num_drx_cycles_relaxed_r16.pack(bref));
+ }
+ if (pwr_boost_r16_present) {
+ HANDLE_CODE(pwr_boost_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE gwus_time_params_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(num_pos_r16_present, 1));
+ HANDLE_CODE(bref.unpack(time_offset_e_drx_long_r16_present, 1));
+ HANDLE_CODE(bref.unpack(num_drx_cycles_relaxed_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pwr_boost_r16_present, 1));
+
+ HANDLE_CODE(max_dur_factor_r16.unpack(bref));
+ if (num_pos_r16_present) {
+ HANDLE_CODE(num_pos_r16.unpack(bref));
+ }
+ HANDLE_CODE(time_offset_drx_r16.unpack(bref));
+ HANDLE_CODE(time_offset_e_drx_short_r16.unpack(bref));
+ if (time_offset_e_drx_long_r16_present) {
+ HANDLE_CODE(time_offset_e_drx_long_r16.unpack(bref));
+ }
+ if (num_drx_cycles_relaxed_r16_present) {
+ HANDLE_CODE(num_drx_cycles_relaxed_r16.unpack(bref));
+ }
+ if (pwr_boost_r16_present) {
+ HANDLE_CODE(pwr_boost_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void gwus_time_params_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("maxDurationFactor-r16", max_dur_factor_r16.to_string());
+ if (num_pos_r16_present) {
+ j.write_str("numPOs-r16", num_pos_r16.to_string());
+ }
+ j.write_str("timeOffsetDRX-r16", time_offset_drx_r16.to_string());
+ j.write_str("timeOffset-eDRX-Short-r16", time_offset_e_drx_short_r16.to_string());
+ if (time_offset_e_drx_long_r16_present) {
+ j.write_str("timeOffset-eDRX-Long-r16", time_offset_e_drx_long_r16.to_string());
+ }
+ if (num_drx_cycles_relaxed_r16_present) {
+ j.write_str("numDRX-CyclesRelaxed-r16", num_drx_cycles_relaxed_r16.to_string());
+ }
+ if (pwr_boost_r16_present) {
+ j.write_str("powerBoost-r16", pwr_boost_r16.to_string());
+ }
+ j.end_obj();
+}
+
+const char* gwus_time_params_r16_s::max_dur_factor_r16_opts::to_string() const
+{
+ static const char* options[] = {"one32th", "one16th", "one8th", "one4th"};
+ return convert_enum_idx(options, 4, value, "gwus_time_params_r16_s::max_dur_factor_r16_e_");
+}
+uint8_t gwus_time_params_r16_s::max_dur_factor_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {32, 16, 8, 4};
+ return map_enum_number(options, 4, value, "gwus_time_params_r16_s::max_dur_factor_r16_e_");
+}
+
+const char* gwus_time_params_r16_s::num_pos_r16_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n4", "spare1"};
+ return convert_enum_idx(options, 4, value, "gwus_time_params_r16_s::num_pos_r16_e_");
+}
+uint8_t gwus_time_params_r16_s::num_pos_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4};
+ return map_enum_number(options, 3, value, "gwus_time_params_r16_s::num_pos_r16_e_");
+}
+
+const char* gwus_time_params_r16_s::time_offset_drx_r16_opts::to_string() const
+{
+ static const char* options[] = {"ms40", "ms80", "ms160", "ms240"};
+ return convert_enum_idx(options, 4, value, "gwus_time_params_r16_s::time_offset_drx_r16_e_");
+}
+uint8_t gwus_time_params_r16_s::time_offset_drx_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {40, 80, 160, 240};
+ return map_enum_number(options, 4, value, "gwus_time_params_r16_s::time_offset_drx_r16_e_");
+}
+
+const char* gwus_time_params_r16_s::time_offset_e_drx_short_r16_opts::to_string() const
+{
+ static const char* options[] = {"ms40", "ms80", "ms160", "ms240"};
+ return convert_enum_idx(options, 4, value, "gwus_time_params_r16_s::time_offset_e_drx_short_r16_e_");
+}
+uint8_t gwus_time_params_r16_s::time_offset_e_drx_short_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {40, 80, 160, 240};
+ return map_enum_number(options, 4, value, "gwus_time_params_r16_s::time_offset_e_drx_short_r16_e_");
+}
+
+const char* gwus_time_params_r16_s::time_offset_e_drx_long_r16_opts::to_string() const
+{
+ static const char* options[] = {"ms1000", "ms2000"};
+ return convert_enum_idx(options, 2, value, "gwus_time_params_r16_s::time_offset_e_drx_long_r16_e_");
+}
+uint16_t gwus_time_params_r16_s::time_offset_e_drx_long_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {1000, 2000};
+ return map_enum_number(options, 2, value, "gwus_time_params_r16_s::time_offset_e_drx_long_r16_e_");
+}
+
+const char* gwus_time_params_r16_s::num_drx_cycles_relaxed_r16_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n4", "n8"};
+ return convert_enum_idx(options, 4, value, "gwus_time_params_r16_s::num_drx_cycles_relaxed_r16_e_");
+}
+uint8_t gwus_time_params_r16_s::num_drx_cycles_relaxed_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 8};
+ return map_enum_number(options, 4, value, "gwus_time_params_r16_s::num_drx_cycles_relaxed_r16_e_");
+}
+
+const char* gwus_time_params_r16_s::pwr_boost_r16_opts::to_string() const
+{
+ static const char* options[] = {"dB0", "dB1dot8", "dB3", "dB4dot8"};
+ return convert_enum_idx(options, 4, value, "gwus_time_params_r16_s::pwr_boost_r16_e_");
+}
+float gwus_time_params_r16_s::pwr_boost_r16_opts::to_number() const
+{
+ static const float options[] = {0.0, 1.8, 3.0, 4.8};
+ return map_enum_number(options, 4, value, "gwus_time_params_r16_s::pwr_boost_r16_e_");
+}
+const char* gwus_time_params_r16_s::pwr_boost_r16_opts::to_number_string() const
+{
+ static const char* options[] = {"0", "1.8", "3", "4.8"};
+ return convert_enum_idx(options, 4, value, "gwus_time_params_r16_s::pwr_boost_r16_e_");
+}
+
// PRACH-ConfigInfo ::= SEQUENCE
SRSASN_CODE prach_cfg_info_s::pack(bit_ref& bref) const
{
@@ -1472,6 +1837,42 @@ void bcch_cfg_v1310_s::to_json(json_writer& j) const
j.end_obj();
}
+// CRS-ChEstMPDCCH-ConfigCommon-r16 ::= SEQUENCE
+SRSASN_CODE crs_ch_est_mpdcch_cfg_common_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pwr_ratio_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE crs_ch_est_mpdcch_cfg_common_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(pwr_ratio_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void crs_ch_est_mpdcch_cfg_common_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("powerRatio-r16", pwr_ratio_r16.to_string());
+ j.end_obj();
+}
+
+const char* crs_ch_est_mpdcch_cfg_common_r16_s::pwr_ratio_r16_opts::to_string() const
+{
+ static const char* options[] = {"dB-4dot77", "dB-3", "dB-1dot77", "dB0", "dB1", "dB2", "dB3", "dB4dot77"};
+ return convert_enum_idx(options, 8, value, "crs_ch_est_mpdcch_cfg_common_r16_s::pwr_ratio_r16_e_");
+}
+float crs_ch_est_mpdcch_cfg_common_r16_s::pwr_ratio_r16_opts::to_number() const
+{
+ static const float options[] = {-4.77, -3.0, -1.77, 0.0, 1.0, 2.0, 3.0, 4.77};
+ return map_enum_number(options, 8, value, "crs_ch_est_mpdcch_cfg_common_r16_s::pwr_ratio_r16_e_");
+}
+const char* crs_ch_est_mpdcch_cfg_common_r16_s::pwr_ratio_r16_opts::to_number_string() const
+{
+ static const char* options[] = {"-4.77", "-3", "-1.77", "0", "1", "2", "3", "4.77"};
+ return convert_enum_idx(options, 8, value, "crs_ch_est_mpdcch_cfg_common_r16_s::pwr_ratio_r16_e_");
+}
+
// FreqHoppingParameters-r13 ::= SEQUENCE
SRSASN_CODE freq_hop_params_r13_s::pack(bit_ref& bref) const
{
@@ -2092,6 +2493,122 @@ uint8_t freq_hop_params_r13_s::interv_ul_hop_cfg_common_mode_b_r13_c_::interv_td
options, 4, value, "freq_hop_params_r13_s::interv_ul_hop_cfg_common_mode_b_r13_c_::interv_tdd_r13_e_");
}
+// GWUS-Config-r16 ::= SEQUENCE
+SRSASN_CODE gwus_cfg_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(group_alternation_r16_present, 1));
+ HANDLE_CODE(bref.pack(common_seq_r16_present, 1));
+ HANDLE_CODE(bref.pack(time_params_r16_present, 1));
+ HANDLE_CODE(bref.pack(res_cfg_e_drx_short_r16_present, 1));
+ HANDLE_CODE(bref.pack(res_cfg_e_drx_long_r16_present, 1));
+ HANDLE_CODE(bref.pack(prob_thresh_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(group_narrow_band_list_r16_present, 1));
+
+ if (common_seq_r16_present) {
+ HANDLE_CODE(common_seq_r16.pack(bref));
+ }
+ if (time_params_r16_present) {
+ HANDLE_CODE(time_params_r16.pack(bref));
+ }
+ HANDLE_CODE(res_cfg_drx_r16.pack(bref));
+ if (res_cfg_e_drx_short_r16_present) {
+ HANDLE_CODE(res_cfg_e_drx_short_r16.pack(bref));
+ }
+ if (res_cfg_e_drx_long_r16_present) {
+ HANDLE_CODE(res_cfg_e_drx_long_r16.pack(bref));
+ }
+ if (prob_thresh_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, prob_thresh_list_r16, 1, 3));
+ }
+ if (group_narrow_band_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, group_narrow_band_list_r16, 1, 16, BitPacker(1)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE gwus_cfg_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(group_alternation_r16_present, 1));
+ HANDLE_CODE(bref.unpack(common_seq_r16_present, 1));
+ HANDLE_CODE(bref.unpack(time_params_r16_present, 1));
+ HANDLE_CODE(bref.unpack(res_cfg_e_drx_short_r16_present, 1));
+ HANDLE_CODE(bref.unpack(res_cfg_e_drx_long_r16_present, 1));
+ HANDLE_CODE(bref.unpack(prob_thresh_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(group_narrow_band_list_r16_present, 1));
+
+ if (common_seq_r16_present) {
+ HANDLE_CODE(common_seq_r16.unpack(bref));
+ }
+ if (time_params_r16_present) {
+ HANDLE_CODE(time_params_r16.unpack(bref));
+ }
+ HANDLE_CODE(res_cfg_drx_r16.unpack(bref));
+ if (res_cfg_e_drx_short_r16_present) {
+ HANDLE_CODE(res_cfg_e_drx_short_r16.unpack(bref));
+ }
+ if (res_cfg_e_drx_long_r16_present) {
+ HANDLE_CODE(res_cfg_e_drx_long_r16.unpack(bref));
+ }
+ if (prob_thresh_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(prob_thresh_list_r16, bref, 1, 3));
+ }
+ if (group_narrow_band_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(group_narrow_band_list_r16, bref, 1, 16, BitPacker(1)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void gwus_cfg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (group_alternation_r16_present) {
+ j.write_str("groupAlternation-r16", "true");
+ }
+ if (common_seq_r16_present) {
+ j.write_str("commonSequence-r16", common_seq_r16.to_string());
+ }
+ if (time_params_r16_present) {
+ j.write_fieldname("timeParameters-r16");
+ time_params_r16.to_json(j);
+ }
+ j.write_fieldname("resourceConfigDRX-r16");
+ res_cfg_drx_r16.to_json(j);
+ if (res_cfg_e_drx_short_r16_present) {
+ j.write_fieldname("resourceConfig-eDRX-Short-r16");
+ res_cfg_e_drx_short_r16.to_json(j);
+ }
+ if (res_cfg_e_drx_long_r16_present) {
+ j.write_fieldname("resourceConfig-eDRX-Long-r16");
+ res_cfg_e_drx_long_r16.to_json(j);
+ }
+ if (prob_thresh_list_r16_present) {
+ j.start_array("probThreshList-r16");
+ for (const auto& e1 : prob_thresh_list_r16) {
+ j.write_str(e1.to_string());
+ }
+ j.end_array();
+ }
+ if (group_narrow_band_list_r16_present) {
+ j.start_array("groupNarrowBandList-r16");
+ for (const auto& e1 : group_narrow_band_list_r16) {
+ j.write_bool(e1);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+const char* gwus_cfg_r16_s::common_seq_r16_opts::to_string() const
+{
+ static const char* options[] = {"g0", "g126"};
+ return convert_enum_idx(options, 2, value, "gwus_cfg_r16_s::common_seq_r16_e_");
+}
+uint8_t gwus_cfg_r16_s::common_seq_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {0, 126};
+ return map_enum_number(options, 2, value, "gwus_cfg_r16_s::common_seq_r16_e_");
+}
+
// HighSpeedConfig-r14 ::= SEQUENCE
SRSASN_CODE high_speed_cfg_r14_s::pack(bit_ref& bref) const
{
@@ -2135,6 +2652,33 @@ void high_speed_cfg_v1530_s::to_json(json_writer& j) const
j.end_obj();
}
+// HighSpeedConfig-v1610 ::= SEQUENCE
+SRSASN_CODE high_speed_cfg_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(high_speed_enh_meas_flag2_r16_present, 1));
+ HANDLE_CODE(bref.pack(high_speed_enh_demod_flag2_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE high_speed_cfg_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(high_speed_enh_meas_flag2_r16_present, 1));
+ HANDLE_CODE(bref.unpack(high_speed_enh_demod_flag2_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void high_speed_cfg_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (high_speed_enh_meas_flag2_r16_present) {
+ j.write_str("highSpeedEnhMeasFlag2-r16", "true");
+ }
+ if (high_speed_enh_demod_flag2_r16_present) {
+ j.write_str("highSpeedEnhDemodFlag2-r16", "true");
+ }
+ j.end_obj();
+}
+
// PCCH-Config ::= SEQUENCE
SRSASN_CODE pcch_cfg_s::pack(bit_ref& bref) const
{
@@ -2244,6 +2788,22 @@ uint16_t pcch_cfg_v1310_s::nb_v1310_opts::to_number() const
return map_enum_number(options, 3, value, "pcch_cfg_v1310_s::nb_v1310_e_");
}
+// PCCH-Config-v1700 ::= SEQUENCE
+SRSASN_CODE pcch_cfg_v1700_s::pack(bit_ref& bref) const
+{
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pcch_cfg_v1700_s::unpack(cbit_ref& bref)
+{
+ return SRSASN_SUCCESS;
+}
+void pcch_cfg_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("ranPagingInIdlePO-r17", "true");
+ j.end_obj();
+}
+
// PDSCH-ConfigCommon ::= SEQUENCE
SRSASN_CODE pdsch_cfg_common_s::pack(bit_ref& bref) const
{
@@ -2608,6 +3168,37 @@ void prach_cfg_sib_v1530_s::to_json(json_writer& j) const
j.end_obj();
}
+// PRACH-TxDuration-r17 ::= SEQUENCE
+SRSASN_CODE prach_tx_dur_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(prach_tx_dur_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE prach_tx_dur_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(prach_tx_dur_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void prach_tx_dur_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("prach-TxDuration-r17", prach_tx_dur_r17.to_string());
+ j.end_obj();
+}
+
+const char* prach_tx_dur_r17_s::prach_tx_dur_r17_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32", "n64", "n128"};
+ return convert_enum_idx(options, 8, value, "prach_tx_dur_r17_s::prach_tx_dur_r17_e_");
+}
+uint8_t prach_tx_dur_r17_s::prach_tx_dur_r17_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 8, 16, 32, 64, 128};
+ return map_enum_number(options, 8, value, "prach_tx_dur_r17_s::prach_tx_dur_r17_e_");
+}
+
// PUCCH-ConfigCommon ::= SEQUENCE
SRSASN_CODE pucch_cfg_common_s::pack(bit_ref& bref) const
{
@@ -2816,6 +3407,37 @@ uint8_t pucch_cfg_common_v1430_s::pucch_num_repeat_ce_msg4_level3_r14_opts::to_n
return map_enum_number(options, 2, value, "pucch_cfg_common_v1430_s::pucch_num_repeat_ce_msg4_level3_r14_e_");
}
+// PUCCH-TxDuration-r17 ::= SEQUENCE
+SRSASN_CODE pucch_tx_dur_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pucch_tx_dur_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pucch_tx_dur_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(pucch_tx_dur_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void pucch_tx_dur_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("pucch-TxDuration-r17", pucch_tx_dur_r17.to_string());
+ j.end_obj();
+}
+
+const char* pucch_tx_dur_r17_s::pucch_tx_dur_r17_opts::to_string() const
+{
+ static const char* options[] = {"sf2", "sf4", "sf8", "sf16", "sf32", "sf64", "sf128"};
+ return convert_enum_idx(options, 7, value, "pucch_tx_dur_r17_s::pucch_tx_dur_r17_e_");
+}
+uint8_t pucch_tx_dur_r17_s::pucch_tx_dur_r17_opts::to_number() const
+{
+ static const uint8_t options[] = {2, 4, 8, 16, 32, 64, 128};
+ return map_enum_number(options, 7, value, "pucch_tx_dur_r17_s::pucch_tx_dur_r17_e_");
+}
+
// PUSCH-ConfigCommon ::= SEQUENCE
SRSASN_CODE pusch_cfg_common_s::pack(bit_ref& bref) const
{
@@ -2960,6 +3582,37 @@ uint16_t pusch_cfg_common_v1310_s::pusch_max_num_repeat_cemode_b_r13_opts::to_nu
return map_enum_number(options, 8, value, "pusch_cfg_common_v1310_s::pusch_max_num_repeat_cemode_b_r13_e_");
}
+// PUSCH-TxDuration-r17 ::= SEQUENCE
+SRSASN_CODE pusch_tx_dur_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pusch_tx_dur_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pusch_tx_dur_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(pusch_tx_dur_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void pusch_tx_dur_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("pusch-TxDuration-r17", pusch_tx_dur_r17.to_string());
+ j.end_obj();
+}
+
+const char* pusch_tx_dur_r17_s::pusch_tx_dur_r17_opts::to_string() const
+{
+ static const char* options[] = {"n2", "n4", "n8", "n16", "n32", "n64", "n128", "n256"};
+ return convert_enum_idx(options, 8, value, "pusch_tx_dur_r17_s::pusch_tx_dur_r17_e_");
+}
+uint16_t pusch_tx_dur_r17_s::pusch_tx_dur_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {2, 4, 8, 16, 32, 64, 128, 256};
+ return map_enum_number(options, 8, value, "pusch_tx_dur_r17_s::pusch_tx_dur_r17_e_");
+}
+
// RACH-ConfigCommon ::= SEQUENCE
SRSASN_CODE rach_cfg_common_s::pack(bit_ref& bref) const
{
@@ -3534,6 +4187,29 @@ bool ul_pwr_ctrl_common_v1530_s::operator==(const ul_pwr_ctrl_common_v1530_s& ot
return delta_flist_spucch_r15 == other.delta_flist_spucch_r15;
}
+// UplinkPowerControlCommon-v1610 ::= SEQUENCE
+SRSASN_CODE ul_pwr_ctrl_common_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(alpha_srs_add_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, p0_nominal_srs_add_r16, (int8_t)-126, (int8_t)24));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_pwr_ctrl_common_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(alpha_srs_add_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(p0_nominal_srs_add_r16, bref, (int8_t)-126, (int8_t)24));
+
+ return SRSASN_SUCCESS;
+}
+void ul_pwr_ctrl_common_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("alphaSRS-Add-r16", alpha_srs_add_r16.to_string());
+ j.write_int("p0-NominalSRS-Add-r16", p0_nominal_srs_add_r16);
+ j.end_obj();
+}
+
// WUS-Config-r15 ::= SEQUENCE
SRSASN_CODE wus_cfg_r15_s::pack(bit_ref& bref) const
{
@@ -3689,6 +4365,37 @@ const char* wus_cfg_v1560_s::pwr_boost_r15_opts::to_number_string() const
return convert_enum_idx(options, 4, value, "wus_cfg_v1560_s::pwr_boost_r15_e_");
}
+// WUS-Config-v1610 ::= SEQUENCE
+SRSASN_CODE wus_cfg_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(num_drx_cycles_relaxed_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE wus_cfg_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(num_drx_cycles_relaxed_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void wus_cfg_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("numDRX-CyclesRelaxed-r16", num_drx_cycles_relaxed_r16.to_string());
+ j.end_obj();
+}
+
+const char* wus_cfg_v1610_s::num_drx_cycles_relaxed_r16_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n4", "n8"};
+ return convert_enum_idx(options, 4, value, "wus_cfg_v1610_s::num_drx_cycles_relaxed_r16_e_");
+}
+uint8_t wus_cfg_v1610_s::num_drx_cycles_relaxed_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 8};
+ return map_enum_number(options, 4, value, "wus_cfg_v1610_s::num_drx_cycles_relaxed_r16_e_");
+}
+
// RadioResourceConfigCommonSIB ::= SEQUENCE
SRSASN_CODE rr_cfg_common_sib_s::pack(bit_ref& bref) const
{
@@ -3725,6 +4432,17 @@ SRSASN_CODE rr_cfg_common_sib_s::pack(bit_ref& bref) const
group_flags[5] |= high_speed_cfg_v1530.is_present();
group_flags[6] |= ul_pwr_ctrl_common_v1540.is_present();
group_flags[7] |= wus_cfg_v1560.is_present();
+ group_flags[8] |= wus_cfg_v1610.is_present();
+ group_flags[8] |= high_speed_cfg_v1610.is_present();
+ group_flags[8] |= crs_ch_est_mpdcch_cfg_common_r16.is_present();
+ group_flags[8] |= gwus_cfg_r16.is_present();
+ group_flags[8] |= ul_pwr_ctrl_common_v1610.is_present();
+ group_flags[8] |= rss_meas_cfg_r16_present;
+ group_flags[8] |= rss_meas_non_ncl_r16_present;
+ group_flags[8] |= punctured_subcarriers_dl_r16_present;
+ group_flags[8] |= high_speed_inter_rat_nr_r16_present;
+ group_flags[9] |= pcch_cfg_v1700.is_present();
+ group_flags[9] |= ntn_cfg_common_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -3835,6 +4553,65 @@ SRSASN_CODE rr_cfg_common_sib_s::pack(bit_ref& bref) const
HANDLE_CODE(wus_cfg_v1560->pack(bref));
}
}
+ if (group_flags[8]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(wus_cfg_v1610.is_present(), 1));
+ HANDLE_CODE(bref.pack(high_speed_cfg_v1610.is_present(), 1));
+ HANDLE_CODE(bref.pack(crs_ch_est_mpdcch_cfg_common_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(gwus_cfg_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(ul_pwr_ctrl_common_v1610.is_present(), 1));
+ HANDLE_CODE(bref.pack(rss_meas_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(rss_meas_non_ncl_r16_present, 1));
+ HANDLE_CODE(bref.pack(punctured_subcarriers_dl_r16_present, 1));
+ HANDLE_CODE(bref.pack(high_speed_inter_rat_nr_r16_present, 1));
+ if (wus_cfg_v1610.is_present()) {
+ HANDLE_CODE(wus_cfg_v1610->pack(bref));
+ }
+ if (high_speed_cfg_v1610.is_present()) {
+ HANDLE_CODE(high_speed_cfg_v1610->pack(bref));
+ }
+ if (crs_ch_est_mpdcch_cfg_common_r16.is_present()) {
+ HANDLE_CODE(crs_ch_est_mpdcch_cfg_common_r16->pack(bref));
+ }
+ if (gwus_cfg_r16.is_present()) {
+ HANDLE_CODE(gwus_cfg_r16->pack(bref));
+ }
+ if (ul_pwr_ctrl_common_v1610.is_present()) {
+ HANDLE_CODE(ul_pwr_ctrl_common_v1610->pack(bref));
+ }
+ if (punctured_subcarriers_dl_r16_present) {
+ HANDLE_CODE(punctured_subcarriers_dl_r16.pack(bref));
+ }
+ if (high_speed_inter_rat_nr_r16_present) {
+ HANDLE_CODE(bref.pack(high_speed_inter_rat_nr_r16, 1));
+ }
+ }
+ if (group_flags[9]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(pcch_cfg_v1700.is_present(), 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17.is_present(), 1));
+ if (pcch_cfg_v1700.is_present()) {
+ HANDLE_CODE(pcch_cfg_v1700->pack(bref));
+ }
+ if (ntn_cfg_common_r17.is_present()) {
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->ta_report_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->prach_tx_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->pucch_tx_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->pusch_tx_dur_r17_present, 1));
+ HANDLE_CODE(ntn_cfg_common_r17->t318_r17.pack(bref));
+ if (ntn_cfg_common_r17->prach_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->prach_tx_dur_r17.pack(bref));
+ }
+ if (ntn_cfg_common_r17->pucch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->pucch_tx_dur_r17.pack(bref));
+ }
+ if (ntn_cfg_common_r17->pusch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->pusch_tx_dur_r17.pack(bref));
+ }
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -3853,7 +4630,7 @@ SRSASN_CODE rr_cfg_common_sib_s::unpack(cbit_ref& bref)
HANDLE_CODE(ul_cp_len.unpack(bref));
if (ext) {
- ext_groups_unpacker_guard group_flags(8);
+ ext_groups_unpacker_guard group_flags(10);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -4002,6 +4779,79 @@ SRSASN_CODE rr_cfg_common_sib_s::unpack(cbit_ref& bref)
HANDLE_CODE(wus_cfg_v1560->unpack(bref));
}
}
+ if (group_flags[8]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool wus_cfg_v1610_present;
+ HANDLE_CODE(bref.unpack(wus_cfg_v1610_present, 1));
+ wus_cfg_v1610.set_present(wus_cfg_v1610_present);
+ bool high_speed_cfg_v1610_present;
+ HANDLE_CODE(bref.unpack(high_speed_cfg_v1610_present, 1));
+ high_speed_cfg_v1610.set_present(high_speed_cfg_v1610_present);
+ bool crs_ch_est_mpdcch_cfg_common_r16_present;
+ HANDLE_CODE(bref.unpack(crs_ch_est_mpdcch_cfg_common_r16_present, 1));
+ crs_ch_est_mpdcch_cfg_common_r16.set_present(crs_ch_est_mpdcch_cfg_common_r16_present);
+ bool gwus_cfg_r16_present;
+ HANDLE_CODE(bref.unpack(gwus_cfg_r16_present, 1));
+ gwus_cfg_r16.set_present(gwus_cfg_r16_present);
+ bool ul_pwr_ctrl_common_v1610_present;
+ HANDLE_CODE(bref.unpack(ul_pwr_ctrl_common_v1610_present, 1));
+ ul_pwr_ctrl_common_v1610.set_present(ul_pwr_ctrl_common_v1610_present);
+ HANDLE_CODE(bref.unpack(rss_meas_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(rss_meas_non_ncl_r16_present, 1));
+ HANDLE_CODE(bref.unpack(punctured_subcarriers_dl_r16_present, 1));
+ HANDLE_CODE(bref.unpack(high_speed_inter_rat_nr_r16_present, 1));
+ if (wus_cfg_v1610.is_present()) {
+ HANDLE_CODE(wus_cfg_v1610->unpack(bref));
+ }
+ if (high_speed_cfg_v1610.is_present()) {
+ HANDLE_CODE(high_speed_cfg_v1610->unpack(bref));
+ }
+ if (crs_ch_est_mpdcch_cfg_common_r16.is_present()) {
+ HANDLE_CODE(crs_ch_est_mpdcch_cfg_common_r16->unpack(bref));
+ }
+ if (gwus_cfg_r16.is_present()) {
+ HANDLE_CODE(gwus_cfg_r16->unpack(bref));
+ }
+ if (ul_pwr_ctrl_common_v1610.is_present()) {
+ HANDLE_CODE(ul_pwr_ctrl_common_v1610->unpack(bref));
+ }
+ if (punctured_subcarriers_dl_r16_present) {
+ HANDLE_CODE(punctured_subcarriers_dl_r16.unpack(bref));
+ }
+ if (high_speed_inter_rat_nr_r16_present) {
+ HANDLE_CODE(bref.unpack(high_speed_inter_rat_nr_r16, 1));
+ }
+ }
+ if (group_flags[9]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool pcch_cfg_v1700_present;
+ HANDLE_CODE(bref.unpack(pcch_cfg_v1700_present, 1));
+ pcch_cfg_v1700.set_present(pcch_cfg_v1700_present);
+ bool ntn_cfg_common_r17_present;
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17_present, 1));
+ ntn_cfg_common_r17.set_present(ntn_cfg_common_r17_present);
+ if (pcch_cfg_v1700.is_present()) {
+ HANDLE_CODE(pcch_cfg_v1700->unpack(bref));
+ }
+ if (ntn_cfg_common_r17.is_present()) {
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->ta_report_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->prach_tx_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->pucch_tx_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->pusch_tx_dur_r17_present, 1));
+ HANDLE_CODE(ntn_cfg_common_r17->t318_r17.unpack(bref));
+ if (ntn_cfg_common_r17->prach_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->prach_tx_dur_r17.unpack(bref));
+ }
+ if (ntn_cfg_common_r17->pucch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->pucch_tx_dur_r17.unpack(bref));
+ }
+ if (ntn_cfg_common_r17->pusch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->pusch_tx_dur_r17.unpack(bref));
+ }
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -4104,10 +4954,78 @@ void rr_cfg_common_sib_s::to_json(json_writer& j) const
j.write_fieldname("wus-Config-v1560");
wus_cfg_v1560->to_json(j);
}
+ if (wus_cfg_v1610.is_present()) {
+ j.write_fieldname("wus-Config-v1610");
+ wus_cfg_v1610->to_json(j);
+ }
+ if (high_speed_cfg_v1610.is_present()) {
+ j.write_fieldname("highSpeedConfig-v1610");
+ high_speed_cfg_v1610->to_json(j);
+ }
+ if (crs_ch_est_mpdcch_cfg_common_r16.is_present()) {
+ j.write_fieldname("crs-ChEstMPDCCH-ConfigCommon-r16");
+ crs_ch_est_mpdcch_cfg_common_r16->to_json(j);
+ }
+ if (gwus_cfg_r16.is_present()) {
+ j.write_fieldname("gwus-Config-r16");
+ gwus_cfg_r16->to_json(j);
+ }
+ if (ul_pwr_ctrl_common_v1610.is_present()) {
+ j.write_fieldname("uplinkPowerControlCommon-v1610");
+ ul_pwr_ctrl_common_v1610->to_json(j);
+ }
+ if (rss_meas_cfg_r16_present) {
+ j.write_str("rss-MeasConfig-r16", "enabled");
+ }
+ if (rss_meas_non_ncl_r16_present) {
+ j.write_str("rss-MeasNonNCL-r16", "enabled");
+ }
+ if (punctured_subcarriers_dl_r16_present) {
+ j.write_str("puncturedSubcarriersDL-r16", punctured_subcarriers_dl_r16.to_string());
+ }
+ if (high_speed_inter_rat_nr_r16_present) {
+ j.write_bool("highSpeedInterRAT-NR-r16", high_speed_inter_rat_nr_r16);
+ }
+ if (pcch_cfg_v1700.is_present()) {
+ j.write_fieldname("pcch-Config-v1700");
+ pcch_cfg_v1700->to_json(j);
+ }
+ if (ntn_cfg_common_r17.is_present()) {
+ j.write_fieldname("ntn-ConfigCommon-r17");
+ j.start_obj();
+ if (ntn_cfg_common_r17->ta_report_r17_present) {
+ j.write_str("ta-Report-r17", "enabled");
+ }
+ j.write_str("t318-r17", ntn_cfg_common_r17->t318_r17.to_string());
+ if (ntn_cfg_common_r17->prach_tx_dur_r17_present) {
+ j.write_fieldname("prach-TxDuration-r17");
+ ntn_cfg_common_r17->prach_tx_dur_r17.to_json(j);
+ }
+ if (ntn_cfg_common_r17->pucch_tx_dur_r17_present) {
+ j.write_fieldname("pucch-TxDuration-r17");
+ ntn_cfg_common_r17->pucch_tx_dur_r17.to_json(j);
+ }
+ if (ntn_cfg_common_r17->pusch_tx_dur_r17_present) {
+ j.write_fieldname("pusch-TxDuration-r17");
+ ntn_cfg_common_r17->pusch_tx_dur_r17.to_json(j);
+ }
+ j.end_obj();
+ }
}
j.end_obj();
}
+const char* rr_cfg_common_sib_s::ntn_cfg_common_r17_s_::t318_r17_opts::to_string() const
+{
+ static const char* options[] = {"ms0", "ms50", "ms100", "ms200", "ms500", "ms1000", "ms2000", "ms4000"};
+ return convert_enum_idx(options, 8, value, "rr_cfg_common_sib_s::ntn_cfg_common_r17_s_::t318_r17_e_");
+}
+uint16_t rr_cfg_common_sib_s::ntn_cfg_common_r17_s_::t318_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {0, 50, 100, 200, 500, 1000, 2000, 4000};
+ return map_enum_number(options, 8, value, "rr_cfg_common_sib_s::ntn_cfg_common_r17_s_::t318_r17_e_");
+}
+
// TimeAlignmentTimer ::= ENUMERATED
const char* time_align_timer_opts::to_string() const
{
@@ -4583,6 +5501,7 @@ SRSASN_CODE rr_cfg_common_scell_r10_s::pack(bit_ref& bref) const
group_flags[4] |= srs_flex_timing_r14_present;
group_flags[5] |= mbsfn_sf_cfg_list_v1430.is_present();
group_flags[6] |= ul_pwr_ctrl_common_scell_v1530.is_present();
+ group_flags[7] |= high_speed_enh_meas_flag_scell_r16_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -4694,6 +5613,14 @@ SRSASN_CODE rr_cfg_common_scell_r10_s::pack(bit_ref& bref) const
HANDLE_CODE(ul_pwr_ctrl_common_scell_v1530->pack(bref));
}
}
+ if (group_flags[7]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(high_speed_enh_meas_flag_scell_r16_present, 1));
+ if (high_speed_enh_meas_flag_scell_r16_present) {
+ HANDLE_CODE(bref.pack(high_speed_enh_meas_flag_scell_r16, 1));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -4741,7 +5668,7 @@ SRSASN_CODE rr_cfg_common_scell_r10_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(7);
+ ext_groups_unpacker_guard group_flags(8);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -4877,6 +5804,14 @@ SRSASN_CODE rr_cfg_common_scell_r10_s::unpack(cbit_ref& bref)
HANDLE_CODE(ul_pwr_ctrl_common_scell_v1530->unpack(bref));
}
}
+ if (group_flags[7]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(high_speed_enh_meas_flag_scell_r16_present, 1));
+ if (high_speed_enh_meas_flag_scell_r16_present) {
+ HANDLE_CODE(bref.unpack(high_speed_enh_meas_flag_scell_r16, 1));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -5019,6 +5954,9 @@ void rr_cfg_common_scell_r10_s::to_json(json_writer& j) const
j.write_fieldname("uplinkPowerControlCommonSCell-v1530");
ul_pwr_ctrl_common_scell_v1530->to_json(j);
}
+ if (high_speed_enh_meas_flag_scell_r16_present) {
+ j.write_bool("highSpeedEnhMeasFlagSCell-r16", high_speed_enh_meas_flag_scell_r16);
+ }
}
j.end_obj();
}
@@ -5105,7 +6043,10 @@ bool rr_cfg_common_scell_r10_s::operator==(const rr_cfg_common_scell_r10_s& othe
(not mbsfn_sf_cfg_list_v1430.is_present() or *mbsfn_sf_cfg_list_v1430 == *other.mbsfn_sf_cfg_list_v1430) and
ul_pwr_ctrl_common_scell_v1530.is_present() == other.ul_pwr_ctrl_common_scell_v1530.is_present() and
(not ul_pwr_ctrl_common_scell_v1530.is_present() or
- *ul_pwr_ctrl_common_scell_v1530 == *other.ul_pwr_ctrl_common_scell_v1530)));
+ *ul_pwr_ctrl_common_scell_v1530 == *other.ul_pwr_ctrl_common_scell_v1530) and
+ high_speed_enh_meas_flag_scell_r16_present == other.high_speed_enh_meas_flag_scell_r16_present and
+ (not high_speed_enh_meas_flag_scell_r16_present or
+ high_speed_enh_meas_flag_scell_r16 == other.high_speed_enh_meas_flag_scell_r16)));
}
const char* rr_cfg_common_scell_r10_s::non_ul_cfg_r10_s_::dl_bw_r10_opts::to_string() const
@@ -5501,6 +6442,10 @@ SRSASN_CODE rr_cfg_common_s::pack(bit_ref& bref) const
group_flags[5] |= tdd_cfg_v1450.is_present();
group_flags[6] |= ul_pwr_ctrl_common_v1530.is_present();
group_flags[6] |= high_speed_cfg_v1530.is_present();
+ group_flags[7] |= high_speed_cfg_v1610.is_present();
+ group_flags[7] |= ul_pwr_ctrl_common_v1610.is_present();
+ group_flags[7] |= high_speed_inter_rat_nr_r16_present;
+ group_flags[8] |= ntn_cfg_common_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -5595,6 +6540,43 @@ SRSASN_CODE rr_cfg_common_s::pack(bit_ref& bref) const
HANDLE_CODE(high_speed_cfg_v1530->pack(bref));
}
}
+ if (group_flags[7]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(high_speed_cfg_v1610.is_present(), 1));
+ HANDLE_CODE(bref.pack(ul_pwr_ctrl_common_v1610.is_present(), 1));
+ HANDLE_CODE(bref.pack(high_speed_inter_rat_nr_r16_present, 1));
+ if (high_speed_cfg_v1610.is_present()) {
+ HANDLE_CODE(high_speed_cfg_v1610->pack(bref));
+ }
+ if (ul_pwr_ctrl_common_v1610.is_present()) {
+ HANDLE_CODE(ul_pwr_ctrl_common_v1610->pack(bref));
+ }
+ if (high_speed_inter_rat_nr_r16_present) {
+ HANDLE_CODE(bref.pack(high_speed_inter_rat_nr_r16, 1));
+ }
+ }
+ if (group_flags[8]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17.is_present(), 1));
+ if (ntn_cfg_common_r17.is_present()) {
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->ta_report_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->prach_tx_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->pucch_tx_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->pusch_tx_dur_r17_present, 1));
+ HANDLE_CODE(ntn_cfg_common_r17->t318_r17.pack(bref));
+ if (ntn_cfg_common_r17->prach_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->prach_tx_dur_r17.pack(bref));
+ }
+ if (ntn_cfg_common_r17->pucch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->pucch_tx_dur_r17.pack(bref));
+ }
+ if (ntn_cfg_common_r17->pusch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->pusch_tx_dur_r17.pack(bref));
+ }
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -5643,7 +6625,7 @@ SRSASN_CODE rr_cfg_common_s::unpack(cbit_ref& bref)
HANDLE_CODE(ul_cp_len.unpack(bref));
if (ext) {
- ext_groups_unpacker_guard group_flags(7);
+ ext_groups_unpacker_guard group_flags(9);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -5770,6 +6752,49 @@ SRSASN_CODE rr_cfg_common_s::unpack(cbit_ref& bref)
HANDLE_CODE(high_speed_cfg_v1530->unpack(bref));
}
}
+ if (group_flags[7]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool high_speed_cfg_v1610_present;
+ HANDLE_CODE(bref.unpack(high_speed_cfg_v1610_present, 1));
+ high_speed_cfg_v1610.set_present(high_speed_cfg_v1610_present);
+ bool ul_pwr_ctrl_common_v1610_present;
+ HANDLE_CODE(bref.unpack(ul_pwr_ctrl_common_v1610_present, 1));
+ ul_pwr_ctrl_common_v1610.set_present(ul_pwr_ctrl_common_v1610_present);
+ HANDLE_CODE(bref.unpack(high_speed_inter_rat_nr_r16_present, 1));
+ if (high_speed_cfg_v1610.is_present()) {
+ HANDLE_CODE(high_speed_cfg_v1610->unpack(bref));
+ }
+ if (ul_pwr_ctrl_common_v1610.is_present()) {
+ HANDLE_CODE(ul_pwr_ctrl_common_v1610->unpack(bref));
+ }
+ if (high_speed_inter_rat_nr_r16_present) {
+ HANDLE_CODE(bref.unpack(high_speed_inter_rat_nr_r16, 1));
+ }
+ }
+ if (group_flags[8]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool ntn_cfg_common_r17_present;
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17_present, 1));
+ ntn_cfg_common_r17.set_present(ntn_cfg_common_r17_present);
+ if (ntn_cfg_common_r17.is_present()) {
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->ta_report_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->prach_tx_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->pucch_tx_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->pusch_tx_dur_r17_present, 1));
+ HANDLE_CODE(ntn_cfg_common_r17->t318_r17.unpack(bref));
+ if (ntn_cfg_common_r17->prach_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->prach_tx_dur_r17.unpack(bref));
+ }
+ if (ntn_cfg_common_r17->pucch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->pucch_tx_dur_r17.unpack(bref));
+ }
+ if (ntn_cfg_common_r17->pusch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->pusch_tx_dur_r17.unpack(bref));
+ }
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -5881,6 +6906,49 @@ void rr_cfg_common_s::to_json(json_writer& j) const
j.write_fieldname("highSpeedConfig-v1530");
high_speed_cfg_v1530->to_json(j);
}
+ if (high_speed_cfg_v1610.is_present()) {
+ j.write_fieldname("highSpeedConfig-v1610");
+ high_speed_cfg_v1610->to_json(j);
+ }
+ if (ul_pwr_ctrl_common_v1610.is_present()) {
+ j.write_fieldname("uplinkPowerControlCommon-v1610");
+ ul_pwr_ctrl_common_v1610->to_json(j);
+ }
+ if (high_speed_inter_rat_nr_r16_present) {
+ j.write_bool("highSpeedInterRAT-NR-r16", high_speed_inter_rat_nr_r16);
+ }
+ if (ntn_cfg_common_r17.is_present()) {
+ j.write_fieldname("ntn-ConfigCommon-r17");
+ j.start_obj();
+ if (ntn_cfg_common_r17->ta_report_r17_present) {
+ j.write_str("ta-Report-r17", "enabled");
+ }
+ j.write_str("t318-r17", ntn_cfg_common_r17->t318_r17.to_string());
+ if (ntn_cfg_common_r17->prach_tx_dur_r17_present) {
+ j.write_fieldname("prach-TxDuration-r17");
+ ntn_cfg_common_r17->prach_tx_dur_r17.to_json(j);
+ }
+ if (ntn_cfg_common_r17->pucch_tx_dur_r17_present) {
+ j.write_fieldname("pucch-TxDuration-r17");
+ ntn_cfg_common_r17->pucch_tx_dur_r17.to_json(j);
+ }
+ if (ntn_cfg_common_r17->pusch_tx_dur_r17_present) {
+ j.write_fieldname("pusch-TxDuration-r17");
+ ntn_cfg_common_r17->pusch_tx_dur_r17.to_json(j);
+ }
+ j.end_obj();
+ }
}
j.end_obj();
}
+
+const char* rr_cfg_common_s::ntn_cfg_common_r17_s_::t318_r17_opts::to_string() const
+{
+ static const char* options[] = {"ms0", "ms50", "ms100", "ms200", "ms500", "ms1000", "ms2000", "ms4000", "ms6000"};
+ return convert_enum_idx(options, 9, value, "rr_cfg_common_s::ntn_cfg_common_r17_s_::t318_r17_e_");
+}
+uint16_t rr_cfg_common_s::ntn_cfg_common_r17_s_::t318_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {0, 50, 100, 200, 500, 1000, 2000, 4000, 6000};
+ return map_enum_number(options, 9, value, "rr_cfg_common_s::ntn_cfg_common_r17_s_::t318_r17_e_");
+}
diff --git a/lib/src/asn1/rrc/rr_ded.cc b/lib/src/asn1/rrc/rr_ded.cc
index 1f3628a56..4f4e018aa 100644
--- a/lib/src/asn1/rrc/rr_ded.cc
+++ b/lib/src/asn1/rrc/rr_ded.cc
@@ -377,6 +377,98 @@ bool dl_um_rlc_s::operator==(const dl_um_rlc_s& other) const
return sn_field_len == other.sn_field_len and t_reordering == other.t_reordering;
}
+// DiscardTimerExt-r17 ::= ENUMERATED
+const char* discard_timer_ext_r17_opts::to_string() const
+{
+ static const char* options[] = {"ms2000", "spare"};
+ return convert_enum_idx(options, 2, value, "discard_timer_ext_r17_e");
+}
+uint16_t discard_timer_ext_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {2000};
+ return map_enum_number(options, 1, value, "discard_timer_ext_r17_e");
+}
+
+// EthernetHeaderCompression-r16 ::= SEQUENCE
+SRSASN_CODE ethernet_hdr_compress_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(ehc_dl_r16_present, 1));
+ HANDLE_CODE(bref.pack(ehc_ul_r16_present, 1));
+
+ HANDLE_CODE(ehc_common_r16.ehc_cid_len_r16.pack(bref));
+ if (ehc_dl_r16_present) {
+ HANDLE_CODE(bref.pack(ehc_dl_r16.drb_continue_ehc_dl_r16_present, 1));
+ }
+ if (ehc_ul_r16_present) {
+ HANDLE_CODE(bref.pack(ehc_ul_r16.drb_continue_ehc_ul_r16_present, 1));
+ HANDLE_CODE(pack_integer(bref, ehc_ul_r16.max_cid_ehc_ul_r16, (uint16_t)1u, (uint16_t)32767u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ethernet_hdr_compress_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(ehc_dl_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ehc_ul_r16_present, 1));
+
+ HANDLE_CODE(ehc_common_r16.ehc_cid_len_r16.unpack(bref));
+ if (ehc_dl_r16_present) {
+ HANDLE_CODE(bref.unpack(ehc_dl_r16.drb_continue_ehc_dl_r16_present, 1));
+ }
+ if (ehc_ul_r16_present) {
+ HANDLE_CODE(bref.unpack(ehc_ul_r16.drb_continue_ehc_ul_r16_present, 1));
+ HANDLE_CODE(unpack_integer(ehc_ul_r16.max_cid_ehc_ul_r16, bref, (uint16_t)1u, (uint16_t)32767u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ethernet_hdr_compress_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("ehc-Common-r16");
+ j.start_obj();
+ j.write_str("ehc-CID-Length-r16", ehc_common_r16.ehc_cid_len_r16.to_string());
+ j.end_obj();
+ if (ehc_dl_r16_present) {
+ j.write_fieldname("ehc-Downlink-r16");
+ j.start_obj();
+ if (ehc_dl_r16.drb_continue_ehc_dl_r16_present) {
+ j.write_str("drb-ContinueEHC-DL-r16", "true");
+ }
+ j.end_obj();
+ }
+ if (ehc_ul_r16_present) {
+ j.write_fieldname("ehc-Uplink-r16");
+ j.start_obj();
+ j.write_int("maxCID-EHC-UL-r16", ehc_ul_r16.max_cid_ehc_ul_r16);
+ if (ehc_ul_r16.drb_continue_ehc_ul_r16_present) {
+ j.write_str("drb-ContinueEHC-UL-r16", "true");
+ }
+ j.end_obj();
+ }
+ j.end_obj();
+}
+bool ethernet_hdr_compress_r16_s::operator==(const ethernet_hdr_compress_r16_s& other) const
+{
+ return ext == other.ext and ehc_common_r16.ehc_cid_len_r16 == other.ehc_common_r16.ehc_cid_len_r16 and
+ ehc_dl_r16.drb_continue_ehc_dl_r16_present == other.ehc_dl_r16.drb_continue_ehc_dl_r16_present and
+ ehc_ul_r16.max_cid_ehc_ul_r16 == other.ehc_ul_r16.max_cid_ehc_ul_r16 and
+ ehc_ul_r16.drb_continue_ehc_ul_r16_present == other.ehc_ul_r16.drb_continue_ehc_ul_r16_present;
+}
+
+const char* ethernet_hdr_compress_r16_s::ehc_common_r16_s_::ehc_cid_len_r16_opts::to_string() const
+{
+ static const char* options[] = {"bits7", "bits15"};
+ return convert_enum_idx(options, 2, value, "ethernet_hdr_compress_r16_s::ehc_common_r16_s_::ehc_cid_len_r16_e_");
+}
+uint8_t ethernet_hdr_compress_r16_s::ehc_common_r16_s_::ehc_cid_len_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {7, 15};
+ return map_enum_number(options, 2, value, "ethernet_hdr_compress_r16_s::ehc_common_r16_s_::ehc_cid_len_r16_e_");
+}
+
// LogicalChannelConfig ::= SEQUENCE
SRSASN_CODE lc_ch_cfg_s::pack(bit_ref& bref) const
{
@@ -403,6 +495,7 @@ SRSASN_CODE lc_ch_cfg_s::pack(bit_ref& bref) const
group_flags[3] |= lc_ch_sr_restrict_r15.is_present();
group_flags[3] |= ch_access_prio_r15.is_present();
group_flags[3] |= lch_cell_restrict_r15_present;
+ group_flags[4] |= bit_rate_multiplier_r16_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -450,6 +543,14 @@ SRSASN_CODE lc_ch_cfg_s::pack(bit_ref& bref) const
HANDLE_CODE(lch_cell_restrict_r15.pack(bref));
}
}
+ if (group_flags[4]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(bit_rate_multiplier_r16_present, 1));
+ if (bit_rate_multiplier_r16_present) {
+ HANDLE_CODE(bit_rate_multiplier_r16.pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -469,7 +570,7 @@ SRSASN_CODE lc_ch_cfg_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(4);
+ ext_groups_unpacker_guard group_flags(5);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -523,6 +624,14 @@ SRSASN_CODE lc_ch_cfg_s::unpack(cbit_ref& bref)
HANDLE_CODE(lch_cell_restrict_r15.unpack(bref));
}
}
+ if (group_flags[4]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(bit_rate_multiplier_r16_present, 1));
+ if (bit_rate_multiplier_r16_present) {
+ HANDLE_CODE(bit_rate_multiplier_r16.unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -568,6 +677,9 @@ void lc_ch_cfg_s::to_json(json_writer& j) const
if (lch_cell_restrict_r15_present) {
j.write_str("lch-CellRestriction-r15", lch_cell_restrict_r15.to_string());
}
+ if (bit_rate_multiplier_r16_present) {
+ j.write_str("bitRateMultiplier-r16", bit_rate_multiplier_r16.to_string());
+ }
}
j.end_obj();
}
@@ -595,7 +707,9 @@ bool lc_ch_cfg_s::operator==(const lc_ch_cfg_s& other) const
ch_access_prio_r15.is_present() == other.ch_access_prio_r15.is_present() and
(not ch_access_prio_r15.is_present() or *ch_access_prio_r15 == *other.ch_access_prio_r15) and
lch_cell_restrict_r15_present == other.lch_cell_restrict_r15_present and
- (not lch_cell_restrict_r15_present or lch_cell_restrict_r15 == other.lch_cell_restrict_r15)));
+ (not lch_cell_restrict_r15_present or lch_cell_restrict_r15 == other.lch_cell_restrict_r15) and
+ bit_rate_multiplier_r16_present == other.bit_rate_multiplier_r16_present and
+ (not bit_rate_multiplier_r16_present or bit_rate_multiplier_r16 == other.bit_rate_multiplier_r16)));
}
const char* lc_ch_cfg_s::ul_specific_params_s_::prioritised_bit_rate_opts::to_string() const
@@ -855,6 +969,17 @@ bool lc_ch_cfg_s::ch_access_prio_r15_c_::operator==(const ch_access_prio_r15_c_&
return type() == other.type() and c == other.c;
}
+const char* lc_ch_cfg_s::bit_rate_multiplier_r16_opts::to_string() const
+{
+ static const char* options[] = {"x40", "x70", "x100", "x200"};
+ return convert_enum_idx(options, 4, value, "lc_ch_cfg_s::bit_rate_multiplier_r16_e_");
+}
+uint8_t lc_ch_cfg_s::bit_rate_multiplier_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {40, 70, 100, 200};
+ return map_enum_number(options, 4, value, "lc_ch_cfg_s::bit_rate_multiplier_r16_e_");
+}
+
// P-a ::= ENUMERATED
const char* p_a_opts::to_string() const
{
@@ -1149,6 +1274,18 @@ bool rlc_cfg_r15_s::mode_r15_c_::operator==(const mode_r15_c_& other) const
return true;
}
+// T-ReorderingExt-r17 ::= ENUMERATED
+const char* t_reordering_ext_r17_opts::to_string() const
+{
+ static const char* options[] = {"ms2200", "ms3200"};
+ return convert_enum_idx(options, 2, value, "t_reordering_ext_r17_e");
+}
+uint16_t t_reordering_ext_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {2200, 3200};
+ return map_enum_number(options, 2, value, "t_reordering_ext_r17_e");
+}
+
// UL-AM-RLC ::= SEQUENCE
SRSASN_CODE ul_am_rlc_s::pack(bit_ref& bref) const
{
@@ -1516,6 +1653,8 @@ SRSASN_CODE pdcp_cfg_s::pack(bit_ref& bref) const
group_flags[4] |= ul_only_hdr_compress_r14.is_present();
group_flags[5] |= ul_data_compress_r15.is_present();
group_flags[5] |= pdcp_dupl_cfg_r15.is_present();
+ group_flags[6] |= ethernet_hdr_compress_r16.is_present();
+ group_flags[7] |= discard_timer_ext_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -1582,6 +1721,22 @@ SRSASN_CODE pdcp_cfg_s::pack(bit_ref& bref) const
HANDLE_CODE(pdcp_dupl_cfg_r15->pack(bref));
}
}
+ if (group_flags[6]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ethernet_hdr_compress_r16.is_present(), 1));
+ if (ethernet_hdr_compress_r16.is_present()) {
+ HANDLE_CODE(ethernet_hdr_compress_r16->pack(bref));
+ }
+ }
+ if (group_flags[7]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(discard_timer_ext_r17.is_present(), 1));
+ if (discard_timer_ext_r17.is_present()) {
+ HANDLE_CODE(discard_timer_ext_r17->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -1604,7 +1759,7 @@ SRSASN_CODE pdcp_cfg_s::unpack(cbit_ref& bref)
HANDLE_CODE(hdr_compress.unpack(bref));
if (ext) {
- ext_groups_unpacker_guard group_flags(6);
+ ext_groups_unpacker_guard group_flags(8);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -1683,6 +1838,26 @@ SRSASN_CODE pdcp_cfg_s::unpack(cbit_ref& bref)
HANDLE_CODE(pdcp_dupl_cfg_r15->unpack(bref));
}
}
+ if (group_flags[6]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool ethernet_hdr_compress_r16_present;
+ HANDLE_CODE(bref.unpack(ethernet_hdr_compress_r16_present, 1));
+ ethernet_hdr_compress_r16.set_present(ethernet_hdr_compress_r16_present);
+ if (ethernet_hdr_compress_r16.is_present()) {
+ HANDLE_CODE(ethernet_hdr_compress_r16->unpack(bref));
+ }
+ }
+ if (group_flags[7]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool discard_timer_ext_r17_present;
+ HANDLE_CODE(bref.unpack(discard_timer_ext_r17_present, 1));
+ discard_timer_ext_r17.set_present(discard_timer_ext_r17_present);
+ if (discard_timer_ext_r17.is_present()) {
+ HANDLE_CODE(discard_timer_ext_r17->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -1751,6 +1926,14 @@ void pdcp_cfg_s::to_json(json_writer& j) const
j.write_fieldname("pdcp-DuplicationConfig-r15");
pdcp_dupl_cfg_r15->to_json(j);
}
+ if (ethernet_hdr_compress_r16.is_present()) {
+ j.write_fieldname("ethernetHeaderCompression-r16");
+ ethernet_hdr_compress_r16->to_json(j);
+ }
+ if (discard_timer_ext_r17.is_present()) {
+ j.write_fieldname("discardTimerExt-r17");
+ discard_timer_ext_r17->to_json(j);
+ }
}
j.end_obj();
}
@@ -1784,7 +1967,12 @@ bool pdcp_cfg_s::operator==(const pdcp_cfg_s& other) const
(not ul_data_compress_r15->dictionary_r15_present or
ul_data_compress_r15->dictionary_r15 == other.ul_data_compress_r15->dictionary_r15) and
pdcp_dupl_cfg_r15.is_present() == other.pdcp_dupl_cfg_r15.is_present() and
- (not pdcp_dupl_cfg_r15.is_present() or *pdcp_dupl_cfg_r15 == *other.pdcp_dupl_cfg_r15)));
+ (not pdcp_dupl_cfg_r15.is_present() or *pdcp_dupl_cfg_r15 == *other.pdcp_dupl_cfg_r15) and
+ ethernet_hdr_compress_r16.is_present() == other.ethernet_hdr_compress_r16.is_present() and
+ (not ethernet_hdr_compress_r16.is_present() or
+ *ethernet_hdr_compress_r16 == *other.ethernet_hdr_compress_r16) and
+ discard_timer_ext_r17.is_present() == other.discard_timer_ext_r17.is_present() and
+ (not discard_timer_ext_r17.is_present() or *discard_timer_ext_r17 == *other.discard_timer_ext_r17)));
}
const char* pdcp_cfg_s::discard_timer_opts::to_string() const
@@ -3129,6 +3317,31 @@ bool rlc_cfg_v1530_c::operator==(const rlc_cfg_v1530_c& other) const
return type() == other.type();
}
+// RLC-Config-v1700 ::= SEQUENCE
+SRSASN_CODE rlc_cfg_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(t_reordering_ext_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rlc_cfg_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(t_reordering_ext_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void rlc_cfg_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("t-ReorderingExt-r17");
+ t_reordering_ext_r17.to_json(j);
+ j.end_obj();
+}
+bool rlc_cfg_v1700_s::operator==(const rlc_cfg_v1700_s& other) const
+{
+ return t_reordering_ext_r17 == other.t_reordering_ext_r17;
+}
+
// SPS-ConfigSL-r14 ::= SEQUENCE
SRSASN_CODE sps_cfg_sl_r14_s::pack(bit_ref& bref) const
{
@@ -4149,6 +4362,8 @@ SRSASN_CODE drb_to_add_mod_s::pack(bit_ref& bref) const
group_flags[4] |= rlc_cfg_v1530.is_present();
group_flags[4] |= rlc_bearer_cfg_secondary_r15.is_present();
group_flags[4] |= lc_ch_id_r15_present;
+ group_flags[5] |= daps_ho_r16_present;
+ group_flags[6] |= rlc_cfg_v1700.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -4220,6 +4435,19 @@ SRSASN_CODE drb_to_add_mod_s::pack(bit_ref& bref) const
HANDLE_CODE(pack_integer(bref, lc_ch_id_r15, (uint8_t)32u, (uint8_t)38u));
}
}
+ if (group_flags[5]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(daps_ho_r16_present, 1));
+ }
+ if (group_flags[6]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(rlc_cfg_v1700.is_present(), 1));
+ if (rlc_cfg_v1700.is_present()) {
+ HANDLE_CODE(rlc_cfg_v1700->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -4250,7 +4478,7 @@ SRSASN_CODE drb_to_add_mod_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(5);
+ ext_groups_unpacker_guard group_flags(7);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -4334,6 +4562,21 @@ SRSASN_CODE drb_to_add_mod_s::unpack(cbit_ref& bref)
HANDLE_CODE(unpack_integer(lc_ch_id_r15, bref, (uint8_t)32u, (uint8_t)38u));
}
}
+ if (group_flags[5]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(daps_ho_r16_present, 1));
+ }
+ if (group_flags[6]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool rlc_cfg_v1700_present;
+ HANDLE_CODE(bref.unpack(rlc_cfg_v1700_present, 1));
+ rlc_cfg_v1700.set_present(rlc_cfg_v1700_present);
+ if (rlc_cfg_v1700.is_present()) {
+ HANDLE_CODE(rlc_cfg_v1700->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -4405,6 +4648,13 @@ void drb_to_add_mod_s::to_json(json_writer& j) const
if (lc_ch_id_r15_present) {
j.write_int("logicalChannelIdentity-r15", lc_ch_id_r15);
}
+ if (daps_ho_r16_present) {
+ j.write_str("daps-HO-r16", "true");
+ }
+ if (rlc_cfg_v1700.is_present()) {
+ j.write_fieldname("rlc-Config-v1700");
+ rlc_cfg_v1700->to_json(j);
+ }
}
j.end_obj();
}
@@ -4442,7 +4692,10 @@ bool drb_to_add_mod_s::operator==(const drb_to_add_mod_s& other) const
(not rlc_bearer_cfg_secondary_r15.is_present() or
*rlc_bearer_cfg_secondary_r15 == *other.rlc_bearer_cfg_secondary_r15) and
lc_ch_id_r15_present == other.lc_ch_id_r15_present and
- (not lc_ch_id_r15_present or lc_ch_id_r15 == other.lc_ch_id_r15)));
+ (not lc_ch_id_r15_present or lc_ch_id_r15 == other.lc_ch_id_r15) and
+ daps_ho_r16_present == other.daps_ho_r16_present and
+ rlc_cfg_v1700.is_present() == other.rlc_cfg_v1700.is_present() and
+ (not rlc_cfg_v1700.is_present() or *rlc_cfg_v1700 == *other.rlc_cfg_v1700)));
}
const char* drb_to_add_mod_s::drb_type_lwip_r13_opts::to_string() const
@@ -5385,6 +5638,39 @@ uint8_t data_inactivity_timer_r14_opts::to_number() const
return map_enum_number(options, 16, value, "data_inactivity_timer_r14_e");
}
+// OffsetThresholdTA-r17 ::= ENUMERATED
+const char* offset_thres_ta_r17_opts::to_string() const
+{
+ static const char* options[] = {"ms0dot5",
+ "ms1",
+ "ms2",
+ "ms3",
+ "ms4",
+ "ms5",
+ "ms6",
+ "ms7",
+ "ms8",
+ "ms9",
+ "ms10",
+ "ms11",
+ "ms12",
+ "ms13",
+ "ms14",
+ "ms15"};
+ return convert_enum_idx(options, 16, value, "offset_thres_ta_r17_e");
+}
+float offset_thres_ta_r17_opts::to_number() const
+{
+ static const float options[] = {0.5, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0};
+ return map_enum_number(options, 16, value, "offset_thres_ta_r17_e");
+}
+const char* offset_thres_ta_r17_opts::to_number_string() const
+{
+ static const char* options[] = {
+ "0.5", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"};
+ return convert_enum_idx(options, 16, value, "offset_thres_ta_r17_e");
+}
+
// PeriodicBSR-Timer-r12 ::= ENUMERATED
const char* periodic_bsr_timer_r12_opts::to_string() const
{
@@ -5858,6 +6144,18 @@ SRSASN_CODE sps_cfg_dl_stti_r15_c::setup_s_::two_ant_port_activ_r15_c_::unpack(c
return SRSASN_SUCCESS;
}
+// SR-ProhibitTimerOffset-r17 ::= ENUMERATED
+const char* sr_prohibit_timer_offset_r17_opts::to_string() const
+{
+ static const char* options[] = {"ms90", "ms180", "ms270", "ms360", "ms450", "ms540", "ms1080", "spare"};
+ return convert_enum_idx(options, 8, value, "sr_prohibit_timer_offset_r17_e");
+}
+uint16_t sr_prohibit_timer_offset_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {90, 180, 270, 360, 450, 540, 1080};
+ return map_enum_number(options, 7, value, "sr_prohibit_timer_offset_r17_e");
+}
+
// SRB-ToAddMod ::= SEQUENCE
SRSASN_CODE srb_to_add_mod_s::pack(bit_ref& bref) const
{
@@ -5880,6 +6178,7 @@ SRSASN_CODE srb_to_add_mod_s::pack(bit_ref& bref) const
group_flags[0] |= rlc_bearer_cfg_secondary_r15.is_present();
group_flags[0] |= srb_id_v1530_present;
group_flags[1] |= rlc_cfg_v1560.is_present();
+ group_flags[2] |= rlc_cfg_v1700.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -5907,6 +6206,14 @@ SRSASN_CODE srb_to_add_mod_s::pack(bit_ref& bref) const
HANDLE_CODE(rlc_cfg_v1560->pack(bref));
}
}
+ if (group_flags[2]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(rlc_cfg_v1700.is_present(), 1));
+ if (rlc_cfg_v1700.is_present()) {
+ HANDLE_CODE(rlc_cfg_v1700->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -5925,7 +6232,7 @@ SRSASN_CODE srb_to_add_mod_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(2);
+ ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -5959,6 +6266,16 @@ SRSASN_CODE srb_to_add_mod_s::unpack(cbit_ref& bref)
HANDLE_CODE(rlc_cfg_v1560->unpack(bref));
}
}
+ if (group_flags[2]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool rlc_cfg_v1700_present;
+ HANDLE_CODE(bref.unpack(rlc_cfg_v1700_present, 1));
+ rlc_cfg_v1700.set_present(rlc_cfg_v1700_present);
+ if (rlc_cfg_v1700.is_present()) {
+ HANDLE_CODE(rlc_cfg_v1700->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -5993,6 +6310,10 @@ void srb_to_add_mod_s::to_json(json_writer& j) const
j.write_fieldname("rlc-Config-v1560");
rlc_cfg_v1560->to_json(j);
}
+ if (rlc_cfg_v1700.is_present()) {
+ j.write_fieldname("rlc-Config-v1700");
+ rlc_cfg_v1700->to_json(j);
+ }
}
j.end_obj();
}
@@ -6010,7 +6331,9 @@ bool srb_to_add_mod_s::operator==(const srb_to_add_mod_s& other) const
srb_id_v1530_present == other.srb_id_v1530_present and
(not srb_id_v1530_present or srb_id_v1530 == other.srb_id_v1530) and
rlc_cfg_v1560.is_present() == other.rlc_cfg_v1560.is_present() and
- (not rlc_cfg_v1560.is_present() or *rlc_cfg_v1560 == *other.rlc_cfg_v1560)));
+ (not rlc_cfg_v1560.is_present() or *rlc_cfg_v1560 == *other.rlc_cfg_v1560) and
+ rlc_cfg_v1700.is_present() == other.rlc_cfg_v1700.is_present() and
+ (not rlc_cfg_v1700.is_present() or *rlc_cfg_v1700 == *other.rlc_cfg_v1700)));
}
void srb_to_add_mod_s::rlc_cfg_c_::set(types::options e)
@@ -6143,6 +6466,69 @@ bool srb_to_add_mod_s::lc_ch_cfg_c_::operator==(const lc_ch_cfg_c_& other) const
return type() == other.type() and c == other.c;
}
+// CRS-ChEstMPDCCH-ConfigDedicated-r16 ::= SEQUENCE
+SRSASN_CODE crs_ch_est_mpdcch_cfg_ded_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pwr_ratio_r16_present, 1));
+ HANDLE_CODE(bref.pack(localized_map_type_r16_present, 1));
+
+ if (pwr_ratio_r16_present) {
+ HANDLE_CODE(pwr_ratio_r16.pack(bref));
+ }
+ if (localized_map_type_r16_present) {
+ HANDLE_CODE(localized_map_type_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE crs_ch_est_mpdcch_cfg_ded_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pwr_ratio_r16_present, 1));
+ HANDLE_CODE(bref.unpack(localized_map_type_r16_present, 1));
+
+ if (pwr_ratio_r16_present) {
+ HANDLE_CODE(pwr_ratio_r16.unpack(bref));
+ }
+ if (localized_map_type_r16_present) {
+ HANDLE_CODE(localized_map_type_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void crs_ch_est_mpdcch_cfg_ded_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pwr_ratio_r16_present) {
+ j.write_str("powerRatio-r16", pwr_ratio_r16.to_string());
+ }
+ if (localized_map_type_r16_present) {
+ j.write_str("localizedMappingType-r16", localized_map_type_r16.to_string());
+ }
+ j.end_obj();
+}
+
+const char* crs_ch_est_mpdcch_cfg_ded_r16_s::pwr_ratio_r16_opts::to_string() const
+{
+ static const char* options[] = {"dB-4dot77", "dB-3", "dB-1dot77", "dB0", "dB1", "dB2", "dB3", "dB4dot77"};
+ return convert_enum_idx(options, 8, value, "crs_ch_est_mpdcch_cfg_ded_r16_s::pwr_ratio_r16_e_");
+}
+float crs_ch_est_mpdcch_cfg_ded_r16_s::pwr_ratio_r16_opts::to_number() const
+{
+ static const float options[] = {-4.77, -3.0, -1.77, 0.0, 1.0, 2.0, 3.0, 4.77};
+ return map_enum_number(options, 8, value, "crs_ch_est_mpdcch_cfg_ded_r16_s::pwr_ratio_r16_e_");
+}
+const char* crs_ch_est_mpdcch_cfg_ded_r16_s::pwr_ratio_r16_opts::to_number_string() const
+{
+ static const char* options[] = {"-4.77", "-3", "-1.77", "0", "1", "2", "3", "4.77"};
+ return convert_enum_idx(options, 8, value, "crs_ch_est_mpdcch_cfg_ded_r16_s::pwr_ratio_r16_e_");
+}
+
+const char* crs_ch_est_mpdcch_cfg_ded_r16_s::localized_map_type_r16_opts::to_string() const
+{
+ static const char* options[] = {"predefined", "csi-Based", "reciprocityBased"};
+ return convert_enum_idx(options, 3, value, "crs_ch_est_mpdcch_cfg_ded_r16_s::localized_map_type_r16_e_");
+}
+
// MAC-MainConfig ::= SEQUENCE
SRSASN_CODE mac_main_cfg_s::pack(bit_ref& bref) const
{
@@ -6191,6 +6577,9 @@ SRSASN_CODE mac_main_cfg_s::pack(bit_ref& bref) const
group_flags[8] |= short_tti_and_spt_r15.is_present();
group_flags[8] |= mpdcch_ul_harq_ack_feedback_cfg_r15_present;
group_flags[8] |= dormant_state_timers_r15.is_present();
+ group_flags[9] |= ce_etws_cmas_rx_in_conn_r16_present;
+ group_flags[10] |= offset_thres_ta_r17.is_present();
+ group_flags[10] |= sr_prohibit_timer_offset_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -6303,6 +6692,23 @@ SRSASN_CODE mac_main_cfg_s::pack(bit_ref& bref) const
HANDLE_CODE(dormant_state_timers_r15->pack(bref));
}
}
+ if (group_flags[9]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ce_etws_cmas_rx_in_conn_r16_present, 1));
+ }
+ if (group_flags[10]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(offset_thres_ta_r17.is_present(), 1));
+ HANDLE_CODE(bref.pack(sr_prohibit_timer_offset_r17.is_present(), 1));
+ if (offset_thres_ta_r17.is_present()) {
+ HANDLE_CODE(offset_thres_ta_r17->pack(bref));
+ }
+ if (sr_prohibit_timer_offset_r17.is_present()) {
+ HANDLE_CODE(sr_prohibit_timer_offset_r17->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -6334,7 +6740,7 @@ SRSASN_CODE mac_main_cfg_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(9);
+ ext_groups_unpacker_guard group_flags(11);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -6473,6 +6879,27 @@ SRSASN_CODE mac_main_cfg_s::unpack(cbit_ref& bref)
HANDLE_CODE(dormant_state_timers_r15->unpack(bref));
}
}
+ if (group_flags[9]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(ce_etws_cmas_rx_in_conn_r16_present, 1));
+ }
+ if (group_flags[10]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool offset_thres_ta_r17_present;
+ HANDLE_CODE(bref.unpack(offset_thres_ta_r17_present, 1));
+ offset_thres_ta_r17.set_present(offset_thres_ta_r17_present);
+ bool sr_prohibit_timer_offset_r17_present;
+ HANDLE_CODE(bref.unpack(sr_prohibit_timer_offset_r17_present, 1));
+ sr_prohibit_timer_offset_r17.set_present(sr_prohibit_timer_offset_r17_present);
+ if (offset_thres_ta_r17.is_present()) {
+ HANDLE_CODE(offset_thres_ta_r17->unpack(bref));
+ }
+ if (sr_prohibit_timer_offset_r17.is_present()) {
+ HANDLE_CODE(sr_prohibit_timer_offset_r17->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -6585,6 +7012,17 @@ void mac_main_cfg_s::to_json(json_writer& j) const
j.write_fieldname("dormantStateTimers-r15");
dormant_state_timers_r15->to_json(j);
}
+ if (ce_etws_cmas_rx_in_conn_r16_present) {
+ j.write_str("ce-ETWS-CMAS-RxInConn-r16", "true");
+ }
+ if (offset_thres_ta_r17.is_present()) {
+ j.write_fieldname("offsetThresholdTA-r17");
+ offset_thres_ta_r17->to_json(j);
+ }
+ if (sr_prohibit_timer_offset_r17.is_present()) {
+ j.write_fieldname("sr-ProhibitTimerOffset-r17");
+ sr_prohibit_timer_offset_r17->to_json(j);
+ }
}
j.end_obj();
}
@@ -8142,6 +8580,84 @@ uint8_t rlf_timers_and_consts_r9_c::setup_s_::n311_r9_opts::to_number() const
return map_enum_number(options, 8, value, "rlf_timers_and_consts_r9_c::setup_s_::n311_r9_e_");
}
+// RLF-TimersAndConstantsMCG-Failure-r16 ::= CHOICE
+void rlf_timers_and_consts_mcg_fail_r16_c::set(types::options e)
+{
+ type_ = e;
+}
+void rlf_timers_and_consts_mcg_fail_r16_c::set_release()
+{
+ set(types::release);
+}
+rlf_timers_and_consts_mcg_fail_r16_c::setup_s_& rlf_timers_and_consts_mcg_fail_r16_c::set_setup()
+{
+ set(types::setup);
+ return c;
+}
+void rlf_timers_and_consts_mcg_fail_r16_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ j.write_fieldname("setup");
+ j.start_obj();
+ j.write_str("t316-r16", c.t316_r16.to_string());
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_timers_and_consts_mcg_fail_r16_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE rlf_timers_and_consts_mcg_fail_r16_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ bref.pack(c.ext, 1);
+ HANDLE_CODE(c.t316_r16.pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_timers_and_consts_mcg_fail_r16_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rlf_timers_and_consts_mcg_fail_r16_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::release:
+ break;
+ case types::setup:
+ bref.unpack(c.ext, 1);
+ HANDLE_CODE(c.t316_r16.unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_timers_and_consts_mcg_fail_r16_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* rlf_timers_and_consts_mcg_fail_r16_c::setup_s_::t316_r16_opts::to_string() const
+{
+ static const char* options[] = {
+ "ms50", "ms100", "ms200", "ms300", "ms400", "ms500", "ms600", "ms1000", "ms1500", "ms2000"};
+ return convert_enum_idx(options, 10, value, "rlf_timers_and_consts_mcg_fail_r16_c::setup_s_::t316_r16_e_");
+}
+uint16_t rlf_timers_and_consts_mcg_fail_r16_c::setup_s_::t316_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {50, 100, 200, 300, 400, 500, 600, 1000, 1500, 2000};
+ return map_enum_number(options, 10, value, "rlf_timers_and_consts_mcg_fail_r16_c::setup_s_::t316_r16_e_");
+}
+
// SPS-Config ::= SEQUENCE
SRSASN_CODE sps_cfg_s::pack(bit_ref& bref) const
{
@@ -8498,6 +9014,9 @@ SRSASN_CODE rr_cfg_ded_s::pack(bit_ref& bref) const
group_flags[6] |= drb_to_release_list_r15.is_present();
group_flags[6] |= dummy.is_present();
group_flags[7] |= sps_cfg_v1540.is_present();
+ group_flags[8] |= rlf_timers_and_consts_mcg_fail_r16.is_present();
+ group_flags[8] |= crs_ch_est_mpdcch_cfg_ded_r16.is_present();
+ group_flags[8] |= new_ue_id_r16_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -8596,6 +9115,22 @@ SRSASN_CODE rr_cfg_ded_s::pack(bit_ref& bref) const
HANDLE_CODE(sps_cfg_v1540->pack(bref));
}
}
+ if (group_flags[8]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(rlf_timers_and_consts_mcg_fail_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(crs_ch_est_mpdcch_cfg_ded_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(new_ue_id_r16_present, 1));
+ if (rlf_timers_and_consts_mcg_fail_r16.is_present()) {
+ HANDLE_CODE(rlf_timers_and_consts_mcg_fail_r16->pack(bref));
+ }
+ if (crs_ch_est_mpdcch_cfg_ded_r16.is_present()) {
+ HANDLE_CODE(crs_ch_est_mpdcch_cfg_ded_r16->pack(bref));
+ }
+ if (new_ue_id_r16_present) {
+ HANDLE_CODE(new_ue_id_r16.pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -8629,7 +9164,7 @@ SRSASN_CODE rr_cfg_ded_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(8);
+ ext_groups_unpacker_guard group_flags(9);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -8758,6 +9293,26 @@ SRSASN_CODE rr_cfg_ded_s::unpack(cbit_ref& bref)
HANDLE_CODE(sps_cfg_v1540->unpack(bref));
}
}
+ if (group_flags[8]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool rlf_timers_and_consts_mcg_fail_r16_present;
+ HANDLE_CODE(bref.unpack(rlf_timers_and_consts_mcg_fail_r16_present, 1));
+ rlf_timers_and_consts_mcg_fail_r16.set_present(rlf_timers_and_consts_mcg_fail_r16_present);
+ bool crs_ch_est_mpdcch_cfg_ded_r16_present;
+ HANDLE_CODE(bref.unpack(crs_ch_est_mpdcch_cfg_ded_r16_present, 1));
+ crs_ch_est_mpdcch_cfg_ded_r16.set_present(crs_ch_est_mpdcch_cfg_ded_r16_present);
+ HANDLE_CODE(bref.unpack(new_ue_id_r16_present, 1));
+ if (rlf_timers_and_consts_mcg_fail_r16.is_present()) {
+ HANDLE_CODE(rlf_timers_and_consts_mcg_fail_r16->unpack(bref));
+ }
+ if (crs_ch_est_mpdcch_cfg_ded_r16.is_present()) {
+ HANDLE_CODE(crs_ch_est_mpdcch_cfg_ded_r16->unpack(bref));
+ }
+ if (new_ue_id_r16_present) {
+ HANDLE_CODE(new_ue_id_r16.unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -8873,6 +9428,17 @@ void rr_cfg_ded_s::to_json(json_writer& j) const
j.write_fieldname("sps-Config-v1540");
sps_cfg_v1540->to_json(j);
}
+ if (rlf_timers_and_consts_mcg_fail_r16.is_present()) {
+ j.write_fieldname("rlf-TimersAndConstantsMCG-Failure-r16");
+ rlf_timers_and_consts_mcg_fail_r16->to_json(j);
+ }
+ if (crs_ch_est_mpdcch_cfg_ded_r16.is_present()) {
+ j.write_fieldname("crs-ChEstMPDCCH-ConfigDedicated-r16");
+ crs_ch_est_mpdcch_cfg_ded_r16->to_json(j);
+ }
+ if (new_ue_id_r16_present) {
+ j.write_str("newUE-Identity-r16", new_ue_id_r16.to_string());
+ }
}
j.end_obj();
}
@@ -10278,6 +10844,45 @@ uint8_t cqi_report_cfg_scell_r15_s::alt_cqi_table_minus1024_qam_r15_opts::to_num
return 0;
}
+// CQI-ReportPeriodicSCell-v1730 ::= SEQUENCE
+SRSASN_CODE cqi_report_periodic_scell_v1730_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ri_cfg_idx2_dormant_r17_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, cqi_pmi_cfg_idx2_dormant_r17, (uint16_t)0u, (uint16_t)1023u));
+ if (ri_cfg_idx2_dormant_r17_present) {
+ HANDLE_CODE(pack_integer(bref, ri_cfg_idx2_dormant_r17, (uint16_t)0u, (uint16_t)1023u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cqi_report_periodic_scell_v1730_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ri_cfg_idx2_dormant_r17_present, 1));
+
+ HANDLE_CODE(unpack_integer(cqi_pmi_cfg_idx2_dormant_r17, bref, (uint16_t)0u, (uint16_t)1023u));
+ if (ri_cfg_idx2_dormant_r17_present) {
+ HANDLE_CODE(unpack_integer(ri_cfg_idx2_dormant_r17, bref, (uint16_t)0u, (uint16_t)1023u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void cqi_report_periodic_scell_v1730_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("cqi-pmi-ConfigIndex2Dormant-r17", cqi_pmi_cfg_idx2_dormant_r17);
+ if (ri_cfg_idx2_dormant_r17_present) {
+ j.write_int("ri-ConfigIndex2Dormant-r17", ri_cfg_idx2_dormant_r17);
+ }
+ j.end_obj();
+}
+bool cqi_report_periodic_scell_v1730_s::operator==(const cqi_report_periodic_scell_v1730_s& other) const
+{
+ return cqi_pmi_cfg_idx2_dormant_r17 == other.cqi_pmi_cfg_idx2_dormant_r17 and
+ ri_cfg_idx2_dormant_r17_present == other.ri_cfg_idx2_dormant_r17_present and
+ (not ri_cfg_idx2_dormant_r17_present or ri_cfg_idx2_dormant_r17 == other.ri_cfg_idx2_dormant_r17);
+}
+
// CQI-ShortConfigSCell-r15 ::= CHOICE
void cqi_short_cfg_scell_r15_c::set(types::options e)
{
@@ -12089,6 +12694,10 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::pack(bit_ref& bref) const
group_flags[7] |= semi_static_cfi_cfg_r15.is_present();
group_flags[7] |= blind_pdsch_repeat_cfg_r15.is_present();
group_flags[8] |= spucch_cfg_v1550.is_present();
+ group_flags[9] |= srs_ul_cfg_ded_add_r16.is_present();
+ group_flags[9] |= ul_pwr_ctrl_add_srs_r16.is_present();
+ group_flags[9] |= srs_virtual_cell_id_r16.is_present();
+ group_flags[9] |= wideband_prg_r16.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -12353,6 +12962,26 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::pack(bit_ref& bref) const
HANDLE_CODE(spucch_cfg_v1550->pack(bref));
}
}
+ if (group_flags[9]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(srs_ul_cfg_ded_add_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(ul_pwr_ctrl_add_srs_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(srs_virtual_cell_id_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(wideband_prg_r16.is_present(), 1));
+ if (srs_ul_cfg_ded_add_r16.is_present()) {
+ HANDLE_CODE(srs_ul_cfg_ded_add_r16->pack(bref));
+ }
+ if (ul_pwr_ctrl_add_srs_r16.is_present()) {
+ HANDLE_CODE(ul_pwr_ctrl_add_srs_r16->pack(bref));
+ }
+ if (srs_virtual_cell_id_r16.is_present()) {
+ HANDLE_CODE(srs_virtual_cell_id_r16->pack(bref));
+ }
+ if (wideband_prg_r16.is_present()) {
+ HANDLE_CODE(wideband_prg_r16->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -12412,7 +13041,7 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(9);
+ ext_groups_unpacker_guard group_flags(10);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -12787,6 +13416,34 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::unpack(cbit_ref& bref)
HANDLE_CODE(spucch_cfg_v1550->unpack(bref));
}
}
+ if (group_flags[9]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool srs_ul_cfg_ded_add_r16_present;
+ HANDLE_CODE(bref.unpack(srs_ul_cfg_ded_add_r16_present, 1));
+ srs_ul_cfg_ded_add_r16.set_present(srs_ul_cfg_ded_add_r16_present);
+ bool ul_pwr_ctrl_add_srs_r16_present;
+ HANDLE_CODE(bref.unpack(ul_pwr_ctrl_add_srs_r16_present, 1));
+ ul_pwr_ctrl_add_srs_r16.set_present(ul_pwr_ctrl_add_srs_r16_present);
+ bool srs_virtual_cell_id_r16_present;
+ HANDLE_CODE(bref.unpack(srs_virtual_cell_id_r16_present, 1));
+ srs_virtual_cell_id_r16.set_present(srs_virtual_cell_id_r16_present);
+ bool wideband_prg_r16_present;
+ HANDLE_CODE(bref.unpack(wideband_prg_r16_present, 1));
+ wideband_prg_r16.set_present(wideband_prg_r16_present);
+ if (srs_ul_cfg_ded_add_r16.is_present()) {
+ HANDLE_CODE(srs_ul_cfg_ded_add_r16->unpack(bref));
+ }
+ if (ul_pwr_ctrl_add_srs_r16.is_present()) {
+ HANDLE_CODE(ul_pwr_ctrl_add_srs_r16->unpack(bref));
+ }
+ if (srs_virtual_cell_id_r16.is_present()) {
+ HANDLE_CODE(srs_virtual_cell_id_r16->unpack(bref));
+ }
+ if (wideband_prg_r16.is_present()) {
+ HANDLE_CODE(wideband_prg_r16->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -13104,6 +13761,22 @@ void phys_cfg_ded_scell_r10_s::to_json(json_writer& j) const
j.write_fieldname("spucch-Config-v1550");
spucch_cfg_v1550->to_json(j);
}
+ if (srs_ul_cfg_ded_add_r16.is_present()) {
+ j.write_fieldname("soundingRS-UL-ConfigDedicatedAdd-r16");
+ srs_ul_cfg_ded_add_r16->to_json(j);
+ }
+ if (ul_pwr_ctrl_add_srs_r16.is_present()) {
+ j.write_fieldname("uplinkPowerControlAddSRS-r16");
+ ul_pwr_ctrl_add_srs_r16->to_json(j);
+ }
+ if (srs_virtual_cell_id_r16.is_present()) {
+ j.write_fieldname("soundingRS-VirtualCellID-r16");
+ srs_virtual_cell_id_r16->to_json(j);
+ }
+ if (wideband_prg_r16.is_present()) {
+ j.write_fieldname("widebandPRG-r16");
+ wideband_prg_r16->to_json(j);
+ }
}
j.end_obj();
}
@@ -13284,7 +13957,15 @@ bool phys_cfg_ded_scell_r10_s::operator==(const phys_cfg_ded_scell_r10_s& other)
(not blind_pdsch_repeat_cfg_r15.is_present() or
*blind_pdsch_repeat_cfg_r15 == *other.blind_pdsch_repeat_cfg_r15) and
spucch_cfg_v1550.is_present() == other.spucch_cfg_v1550.is_present() and
- (not spucch_cfg_v1550.is_present() or *spucch_cfg_v1550 == *other.spucch_cfg_v1550)));
+ (not spucch_cfg_v1550.is_present() or *spucch_cfg_v1550 == *other.spucch_cfg_v1550) and
+ srs_ul_cfg_ded_add_r16.is_present() == other.srs_ul_cfg_ded_add_r16.is_present() and
+ (not srs_ul_cfg_ded_add_r16.is_present() or *srs_ul_cfg_ded_add_r16 == *other.srs_ul_cfg_ded_add_r16) and
+ ul_pwr_ctrl_add_srs_r16.is_present() == other.ul_pwr_ctrl_add_srs_r16.is_present() and
+ (not ul_pwr_ctrl_add_srs_r16.is_present() or *ul_pwr_ctrl_add_srs_r16 == *other.ul_pwr_ctrl_add_srs_r16) and
+ srs_virtual_cell_id_r16.is_present() == other.srs_virtual_cell_id_r16.is_present() and
+ (not srs_virtual_cell_id_r16.is_present() or *srs_virtual_cell_id_r16 == *other.srs_virtual_cell_id_r16) and
+ wideband_prg_r16.is_present() == other.wideband_prg_r16.is_present() and
+ (not wideband_prg_r16.is_present() or *wideband_prg_r16 == *other.wideband_prg_r16)));
}
void phys_cfg_ded_scell_r10_s::pucch_scell_c_::set(types::options e)
@@ -14162,6 +14843,31 @@ bool phys_cfg_ded_scell_v1370_s::pucch_scell_v1370_c_::operator==(const pucch_sc
(not c.pucch_cfg_ded_v1370_present or c.pucch_cfg_ded_v1370 == other.c.pucch_cfg_ded_v1370);
}
+// PhysicalConfigDedicatedSCell-v1730 ::= SEQUENCE
+SRSASN_CODE phys_cfg_ded_scell_v1730_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(cqi_report_periodic_scell_v1730.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE phys_cfg_ded_scell_v1730_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(cqi_report_periodic_scell_v1730.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void phys_cfg_ded_scell_v1730_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("cqi-ReportPeriodicSCell-v1730");
+ cqi_report_periodic_scell_v1730.to_json(j);
+ j.end_obj();
+}
+bool phys_cfg_ded_scell_v1730_s::operator==(const phys_cfg_ded_scell_v1730_s& other) const
+{
+ return cqi_report_periodic_scell_v1730 == other.cqi_report_periodic_scell_v1730;
+}
+
// AntennaInfoDedicated-v10i0 ::= SEQUENCE
SRSASN_CODE ant_info_ded_v10i0_s::pack(bit_ref& bref) const
{
@@ -14227,6 +14933,7 @@ SRSASN_CODE rr_cfg_ded_scell_r10_s::pack(bit_ref& bref) const
group_flags[4] |= crs_intf_mitig_enabled_r15_present;
group_flags[4] |= neigh_cells_crs_info_r15.is_present();
group_flags[4] |= sps_cfg_v1530.is_present();
+ group_flags[5] |= phys_cfg_ded_scell_v1730.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -14277,6 +14984,14 @@ SRSASN_CODE rr_cfg_ded_scell_r10_s::pack(bit_ref& bref) const
HANDLE_CODE(sps_cfg_v1530->pack(bref));
}
}
+ if (group_flags[5]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(phys_cfg_ded_scell_v1730.is_present(), 1));
+ if (phys_cfg_ded_scell_v1730.is_present()) {
+ HANDLE_CODE(phys_cfg_ded_scell_v1730->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -14290,7 +15005,7 @@ SRSASN_CODE rr_cfg_ded_scell_r10_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(5);
+ ext_groups_unpacker_guard group_flags(6);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -14353,6 +15068,16 @@ SRSASN_CODE rr_cfg_ded_scell_r10_s::unpack(cbit_ref& bref)
HANDLE_CODE(sps_cfg_v1530->unpack(bref));
}
}
+ if (group_flags[5]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool phys_cfg_ded_scell_v1730_present;
+ HANDLE_CODE(bref.unpack(phys_cfg_ded_scell_v1730_present, 1));
+ phys_cfg_ded_scell_v1730.set_present(phys_cfg_ded_scell_v1730_present);
+ if (phys_cfg_ded_scell_v1730.is_present()) {
+ HANDLE_CODE(phys_cfg_ded_scell_v1730->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -14391,6 +15116,10 @@ void rr_cfg_ded_scell_r10_s::to_json(json_writer& j) const
j.write_fieldname("sps-Config-v1530");
sps_cfg_v1530->to_json(j);
}
+ if (phys_cfg_ded_scell_v1730.is_present()) {
+ j.write_fieldname("physicalConfigDedicatedSCell-v1730");
+ phys_cfg_ded_scell_v1730->to_json(j);
+ }
}
j.end_obj();
}
@@ -14416,7 +15145,10 @@ bool rr_cfg_ded_scell_r10_s::operator==(const rr_cfg_ded_scell_r10_s& other) con
(not neigh_cells_crs_info_r15.is_present() or
*neigh_cells_crs_info_r15 == *other.neigh_cells_crs_info_r15) and
sps_cfg_v1530.is_present() == other.sps_cfg_v1530.is_present() and
- (not sps_cfg_v1530.is_present() or *sps_cfg_v1530 == *other.sps_cfg_v1530)));
+ (not sps_cfg_v1530.is_present() or *sps_cfg_v1530 == *other.sps_cfg_v1530) and
+ phys_cfg_ded_scell_v1730.is_present() == other.phys_cfg_ded_scell_v1730.is_present() and
+ (not phys_cfg_ded_scell_v1730.is_present() or
+ *phys_cfg_ded_scell_v1730 == *other.phys_cfg_ded_scell_v1730)));
}
// SCellToAddModExt-r13 ::= SEQUENCE
diff --git a/lib/src/asn1/rrc/security.cc b/lib/src/asn1/rrc/security.cc
index 98c1eeb72..432b6124f 100644
--- a/lib/src/asn1/rrc/security.cc
+++ b/lib/src/asn1/rrc/security.cc
@@ -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_()
{
switch (type_) {
- case types::intra5_gc_r15:
- c.destroy<intra5_gc_r15_s_>();
+ case types::intra5_gc:
+ c.destroy<intra5_gc_s_>();
break;
- case types::fivegc_to_epc_r15:
- c.destroy<fivegc_to_epc_r15_s_>();
+ case types::fivegc_to_epc:
+ c.destroy<fivegc_to_epc_s_>();
break;
- case types::epc_to5_gc_r15:
- c.destroy<epc_to5_gc_r15_s_>();
+ case types::epc_to5_gc:
+ c.destroy<epc_to5_gc_s_>();
break;
default:
break;
@@ -98,14 +98,14 @@ void security_cfg_ho_v1530_s::handov_type_v1530_c_::set(types::options e)
destroy_();
type_ = e;
switch (type_) {
- case types::intra5_gc_r15:
- c.init<intra5_gc_r15_s_>();
+ case types::intra5_gc:
+ c.init<intra5_gc_s_>();
break;
- case types::fivegc_to_epc_r15:
- c.init<fivegc_to_epc_r15_s_>();
+ case types::fivegc_to_epc:
+ c.init<fivegc_to_epc_s_>();
break;
- case types::epc_to5_gc_r15:
- c.init<epc_to5_gc_r15_s_>();
+ case types::epc_to5_gc:
+ c.init<epc_to5_gc_s_>();
break;
case types::nulltype:
break;
@@ -118,14 +118,14 @@ security_cfg_ho_v1530_s::handov_type_v1530_c_::handov_type_v1530_c_(
{
type_ = other.type();
switch (type_) {
- case types::intra5_gc_r15:
- c.init(other.c.get<intra5_gc_r15_s_>());
+ case types::intra5_gc:
+ c.init(other.c.get<intra5_gc_s_>());
break;
- case types::fivegc_to_epc_r15:
- c.init(other.c.get<fivegc_to_epc_r15_s_>());
+ case types::fivegc_to_epc:
+ c.init(other.c.get<fivegc_to_epc_s_>());
break;
- case types::epc_to5_gc_r15:
- c.init(other.c.get<epc_to5_gc_r15_s_>());
+ case types::epc_to5_gc:
+ c.init(other.c.get<epc_to5_gc_s_>());
break;
case types::nulltype:
break;
@@ -141,14 +141,14 @@ security_cfg_ho_v1530_s::handov_type_v1530_c_::operator=(const security_cfg_ho_v
}
set(other.type());
switch (type_) {
- case types::intra5_gc_r15:
- c.set(other.c.get<intra5_gc_r15_s_>());
+ case types::intra5_gc:
+ c.set(other.c.get<intra5_gc_s_>());
break;
- case types::fivegc_to_epc_r15:
- c.set(other.c.get<fivegc_to_epc_r15_s_>());
+ case types::fivegc_to_epc:
+ c.set(other.c.get<fivegc_to_epc_s_>());
break;
- case types::epc_to5_gc_r15:
- c.set(other.c.get<epc_to5_gc_r15_s_>());
+ case types::epc_to5_gc:
+ c.set(other.c.get<epc_to5_gc_s_>());
break;
case types::nulltype:
break;
@@ -158,56 +158,56 @@ security_cfg_ho_v1530_s::handov_type_v1530_c_::operator=(const security_cfg_ho_v
return *this;
}
-security_cfg_ho_v1530_s::handov_type_v1530_c_::intra5_gc_r15_s_&
-security_cfg_ho_v1530_s::handov_type_v1530_c_::set_intra5_gc_r15()
+security_cfg_ho_v1530_s::handov_type_v1530_c_::intra5_gc_s_&
+security_cfg_ho_v1530_s::handov_type_v1530_c_::set_intra5_gc()
{
- set(types::intra5_gc_r15);
- return c.get<intra5_gc_r15_s_>();
+ set(types::intra5_gc);
+ 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_::set_fivegc_to_epc_r15()
+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()
{
- set(types::fivegc_to_epc_r15);
- return c.get<fivegc_to_epc_r15_s_>();
+ set(types::fivegc_to_epc);
+ 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_::set_epc_to5_gc_r15()
+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()
{
- set(types::epc_to5_gc_r15);
- return c.get<epc_to5_gc_r15_s_>();
+ set(types::epc_to5_gc);
+ return c.get<epc_to5_gc_s_>();
}
void security_cfg_ho_v1530_s::handov_type_v1530_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
- case types::intra5_gc_r15:
- j.write_fieldname("intra5GC-r15");
+ case types::intra5_gc:
+ j.write_fieldname("intra5GC");
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");
- 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_int("nextHopChainingCount-r15", c.get<intra5_gc_r15_s_>().next_hop_chaining_count_r15);
- if (c.get<intra5_gc_r15_s_>().nas_container_r15_present) {
- j.write_str("nas-Container-r15", c.get<intra5_gc_r15_s_>().nas_container_r15.to_string());
+ j.write_bool("keyChangeIndicator-r15", c.get<intra5_gc_s_>().key_change_ind_r15);
+ j.write_int("nextHopChainingCount-r15", c.get<intra5_gc_s_>().next_hop_chaining_count_r15);
+ if (c.get<intra5_gc_s_>().nas_container_r15_present) {
+ j.write_str("nas-Container-r15", c.get<intra5_gc_s_>().nas_container_r15.to_string());
}
j.end_obj();
break;
- case types::fivegc_to_epc_r15:
- j.write_fieldname("fivegc-ToEPC-r15");
+ case types::fivegc_to_epc:
+ j.write_fieldname("fivegc-ToEPC");
j.start_obj();
j.write_fieldname("securityAlgorithmConfig-r15");
- c.get<fivegc_to_epc_r15_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);
+ c.get<fivegc_to_epc_s_>().security_algorithm_cfg_r15.to_json(j);
+ j.write_int("nextHopChainingCount-r15", c.get<fivegc_to_epc_s_>().next_hop_chaining_count_r15);
j.end_obj();
break;
- case types::epc_to5_gc_r15:
- j.write_fieldname("epc-To5GC-r15");
+ case types::epc_to5_gc:
+ j.write_fieldname("epc-To5GC");
j.start_obj();
j.write_fieldname("securityAlgorithmConfig-r15");
- c.get<epc_to5_gc_r15_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());
+ c.get<epc_to5_gc_s_>().security_algorithm_cfg_r15.to_json(j);
+ j.write_str("nas-Container-r15", c.get<epc_to5_gc_s_>().nas_container_r15.to_string());
j.end_obj();
break;
default:
@@ -219,26 +219,25 @@ SRSASN_CODE security_cfg_ho_v1530_s::handov_type_v1530_c_::pack(bit_ref& bref) c
{
type_.pack(bref);
switch (type_) {
- case types::intra5_gc_r15:
- HANDLE_CODE(bref.pack(c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15_present, 1));
- HANDLE_CODE(bref.pack(c.get<intra5_gc_r15_s_>().nas_container_r15_present, 1));
- if (c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15_present) {
- HANDLE_CODE(c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15.pack(bref));
+ case types::intra5_gc:
+ HANDLE_CODE(bref.pack(c.get<intra5_gc_s_>().security_algorithm_cfg_r15_present, 1));
+ HANDLE_CODE(bref.pack(c.get<intra5_gc_s_>().nas_container_r15_present, 1));
+ if (c.get<intra5_gc_s_>().security_algorithm_cfg_r15_present) {
+ 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(pack_integer(bref, c.get<intra5_gc_r15_s_>().next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u));
- if (c.get<intra5_gc_r15_s_>().nas_container_r15_present) {
- HANDLE_CODE(c.get<intra5_gc_r15_s_>().nas_container_r15.pack(bref));
+ HANDLE_CODE(bref.pack(c.get<intra5_gc_s_>().key_change_ind_r15, 1));
+ 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_s_>().nas_container_r15_present) {
+ HANDLE_CODE(c.get<intra5_gc_s_>().nas_container_r15.pack(bref));
}
break;
- case types::fivegc_to_epc_r15:
- HANDLE_CODE(c.get<fivegc_to_epc_r15_s_>().security_algorithm_cfg_r15.pack(bref));
- HANDLE_CODE(
- pack_integer(bref, c.get<fivegc_to_epc_r15_s_>().next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u));
+ case types::fivegc_to_epc:
+ HANDLE_CODE(c.get<fivegc_to_epc_s_>().security_algorithm_cfg_r15.pack(bref));
+ HANDLE_CODE(pack_integer(bref, c.get<fivegc_to_epc_s_>().next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u));
break;
- case types::epc_to5_gc_r15:
- HANDLE_CODE(c.get<epc_to5_gc_r15_s_>().security_algorithm_cfg_r15.pack(bref));
- HANDLE_CODE(c.get<epc_to5_gc_r15_s_>().nas_container_r15.pack(bref));
+ case types::epc_to5_gc:
+ HANDLE_CODE(c.get<epc_to5_gc_s_>().security_algorithm_cfg_r15.pack(bref));
+ HANDLE_CODE(c.get<epc_to5_gc_s_>().nas_container_r15.pack(bref));
break;
default:
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);
set(e);
switch (type_) {
- case types::intra5_gc_r15:
- HANDLE_CODE(bref.unpack(c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15_present, 1));
- HANDLE_CODE(bref.unpack(c.get<intra5_gc_r15_s_>().nas_container_r15_present, 1));
- if (c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15_present) {
- HANDLE_CODE(c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15.unpack(bref));
+ case types::intra5_gc:
+ HANDLE_CODE(bref.unpack(c.get<intra5_gc_s_>().security_algorithm_cfg_r15_present, 1));
+ HANDLE_CODE(bref.unpack(c.get<intra5_gc_s_>().nas_container_r15_present, 1));
+ if (c.get<intra5_gc_s_>().security_algorithm_cfg_r15_present) {
+ 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(
- 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_r15_s_>().nas_container_r15_present) {
- HANDLE_CODE(c.get<intra5_gc_r15_s_>().nas_container_r15.unpack(bref));
+ HANDLE_CODE(bref.unpack(c.get<intra5_gc_s_>().key_change_ind_r15, 1));
+ HANDLE_CODE(unpack_integer(c.get<intra5_gc_s_>().next_hop_chaining_count_r15, bref, (uint8_t)0u, (uint8_t)7u));
+ if (c.get<intra5_gc_s_>().nas_container_r15_present) {
+ HANDLE_CODE(c.get<intra5_gc_s_>().nas_container_r15.unpack(bref));
}
break;
- case types::fivegc_to_epc_r15:
- HANDLE_CODE(c.get<fivegc_to_epc_r15_s_>().security_algorithm_cfg_r15.unpack(bref));
+ case types::fivegc_to_epc:
+ HANDLE_CODE(c.get<fivegc_to_epc_s_>().security_algorithm_cfg_r15.unpack(bref));
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;
- case types::epc_to5_gc_r15:
- HANDLE_CODE(c.get<epc_to5_gc_r15_s_>().security_algorithm_cfg_r15.unpack(bref));
- HANDLE_CODE(c.get<epc_to5_gc_r15_s_>().nas_container_r15.unpack(bref));
+ case types::epc_to5_gc:
+ HANDLE_CODE(c.get<epc_to5_gc_s_>().security_algorithm_cfg_r15.unpack(bref));
+ HANDLE_CODE(c.get<epc_to5_gc_s_>().nas_container_r15.unpack(bref));
break;
default:
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_");
diff --git a/lib/src/asn1/rrc/si.cc b/lib/src/asn1/rrc/si.cc
index c107c289a..58fb0b774 100644
--- a/lib/src/asn1/rrc/si.cc
+++ b/lib/src/asn1/rrc/si.cc
@@ -28,6 +28,7 @@ SRSASN_CODE mib_s::pack(bit_ref& bref) const
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(bref.pack(sys_info_unchanged_br_r15, 1));
+ HANDLE_CODE(part_earfcn_minus17.pack(bref));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
@@ -39,6 +40,7 @@ SRSASN_CODE mib_s::unpack(cbit_ref& 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(bref.unpack(sys_info_unchanged_br_r15, 1));
+ HANDLE_CODE(part_earfcn_minus17.unpack(bref));
HANDLE_CODE(spare.unpack(bref));
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_int("schedulingInfoSIB1-BR-r13", sched_info_sib1_br_r13);
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.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_");
}
+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
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
{
- static const char* options[] = {"gps", "sbas", "qzss", "galileo", "glonass", "bds"};
- return convert_enum_idx(options, 6, value, "gnss_id_r15_s::gnss_id_r15_e_");
+ static const char* options[] = {"gps", "sbas", "qzss", "galileo", "glonass", "bds", "navic-v1610"};
+ 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
@@ -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_");
}
+// 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
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
{
static const char* options[] = {
- "posSibType1-1", "posSibType1-2", "posSibType1-3", "posSibType1-4", "posSibType1-5", "posSibType1-6",
- "posSibType1-7", "posSibType2-1", "posSibType2-2", "posSibType2-3", "posSibType2-4", "posSibType2-5",
- "posSibType2-6", "posSibType2-7", "posSibType2-8", "posSibType2-9", "posSibType2-10", "posSibType2-11",
- "posSibType2-12", "posSibType2-13", "posSibType2-14", "posSibType2-15", "posSibType2-16", "posSibType2-17",
- "posSibType2-18", "posSibType2-19", "posSibType3-1"};
- return convert_enum_idx(options, 27, value, "pos_sib_type_r15_s::pos_sib_type_r15_e_");
+ "posSibType1-1", "posSibType1-2", "posSibType1-3", "posSibType1-4",
+ "posSibType1-5", "posSibType1-6", "posSibType1-7", "posSibType2-1",
+ "posSibType2-2", "posSibType2-3", "posSibType2-4", "posSibType2-5",
+ "posSibType2-6", "posSibType2-7", "posSibType2-8", "posSibType2-9",
+ "posSibType2-10", "posSibType2-11", "posSibType2-12", "posSibType2-13",
+ "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
@@ -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_");
}
+// 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
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(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
return SRSASN_SUCCESS;
}
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(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
return SRSASN_SUCCESS;
}
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) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
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
{
static const char* options[] = {
- "sibType3", "sibType4", "sibType5", "sibType6", "sibType7", "sibType8",
- "sibType9", "sibType10", "sibType11", "sibType12-v920", "sibType13-v920", "sibType14-v1130",
- "sibType15-v1130", "sibType16-v1130", "sibType17-v1250", "sibType18-v1250", "sibType19-v1250", "sibType20-v1310",
- "sibType21-v1430", "sibType24-v1530", "sibType25-v1530", "sibType26-v1530"};
- return convert_enum_idx(options, 22, 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");
+ "sibType3", "sibType4", "sibType5", "sibType6", "sibType7", "sibType8",
+ "sibType9", "sibType10", "sibType11", "sibType12-v920", "sibType13-v920", "sibType14-v1130",
+ "sibType15-v1130", "sibType16-v1130", "sibType17-v1250", "sibType18-v1250", "sibType19-v1250", "sibType20-v1310",
+ "sibType21-v1430", "sibType24-v1530", "sibType25-v1530", "sibType26-v1530", "sibType26a-v1610", "sibType27-v1610",
+ "sibType28-v1610", "sibType29-v1610"};
+ return convert_enum_idx(options, 26, value, "sib_type_e");
}
// 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] |= reduced_cp_latency_enabled_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);
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));
}
+ 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;
}
@@ -2782,7 +3139,7 @@ SRSASN_CODE sib_type2_s::unpack(cbit_ref& bref)
HANDLE_CODE(time_align_timer_common.unpack(bref));
if (ext) {
- ext_groups_unpacker_guard group_flags(12);
+ ext_groups_unpacker_guard group_flags(13);
group_flags.unpack(bref);
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));
}
+ 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;
}
@@ -3056,6 +3431,39 @@ void sib_type2_s::to_json(json_writer& j) const
if (mbms_rom_service_ind_r15_present) {
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();
}
@@ -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_");
}
+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
SRSASN_CODE sib_type1_v890_ies_s::pack(bit_ref& bref) const
{
diff --git a/lib/src/asn1/rrc/uecap.cc b/lib/src/asn1/rrc/uecap.cc
index dcb7f80f7..b72c5373d 100644
--- a/lib/src/asn1/rrc/uecap.cc
+++ b/lib/src/asn1/rrc/uecap.cc
@@ -20,6 +20,71 @@ using namespace asn1::rrc;
* Struct Methods
******************************************************************************/
+// UECapabilityEnquiry-v1710-IEs ::= SEQUENCE
+SRSASN_CODE ue_cap_enquiry_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(sidelink_request_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_cap_enquiry_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(sidelink_request_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void ue_cap_enquiry_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (sidelink_request_r17_present) {
+ j.write_str("sidelinkRequest-r17", "true");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// UECapabilityEnquiry-v1610-IEs ::= SEQUENCE
+SRSASN_CODE ue_cap_enquiry_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(rrc_seg_allowed_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_cap_enquiry_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(rrc_seg_allowed_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_cap_enquiry_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (rrc_seg_allowed_r16_present) {
+ j.write_str("rrc-SegAllowed-r16", "enabled");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// CA-BandwidthClass-r10 ::= ENUMERATED
const char* ca_bw_class_r10_opts::to_string() const
{
@@ -36,6 +101,9 @@ SRSASN_CODE ue_cap_enquiry_v1560_ies_s::pack(bit_ref& bref) const
if (requested_cap_common_r15_present) {
HANDLE_CODE(requested_cap_common_r15.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -47,6 +115,9 @@ SRSASN_CODE ue_cap_enquiry_v1560_ies_s::unpack(cbit_ref& bref)
if (requested_cap_common_r15_present) {
HANDLE_CODE(requested_cap_common_r15.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -58,8 +129,7 @@ void ue_cap_enquiry_v1560_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -672,6 +742,12 @@ SRSASN_CODE ue_radio_paging_info_r12_s::pack(bit_ref& bref) const
group_flags[1] |= wake_up_signal_tdd_r15_present;
group_flags[1] |= wake_up_signal_min_gap_e_drx_r15_present;
group_flags[1] |= wake_up_signal_min_gap_e_drx_tdd_r15_present;
+ group_flags[2] |= ue_category_dl_v1610_present;
+ group_flags[2] |= group_wake_up_signal_r16_present;
+ group_flags[2] |= group_wake_up_signal_tdd_r16_present;
+ group_flags[2] |= group_wake_up_signal_alternation_r16_present;
+ group_flags[2] |= group_wake_up_signal_alternation_tdd_r16_present;
+ group_flags[3] |= inactive_state_po_determination_r17_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -695,6 +771,20 @@ SRSASN_CODE ue_radio_paging_info_r12_s::pack(bit_ref& bref) const
HANDLE_CODE(wake_up_signal_min_gap_e_drx_tdd_r15.pack(bref));
}
}
+ if (group_flags[2]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ue_category_dl_v1610_present, 1));
+ HANDLE_CODE(bref.pack(group_wake_up_signal_r16_present, 1));
+ HANDLE_CODE(bref.pack(group_wake_up_signal_tdd_r16_present, 1));
+ HANDLE_CODE(bref.pack(group_wake_up_signal_alternation_r16_present, 1));
+ HANDLE_CODE(bref.pack(group_wake_up_signal_alternation_tdd_r16_present, 1));
+ }
+ if (group_flags[3]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(inactive_state_po_determination_r17_present, 1));
+ }
}
return SRSASN_SUCCESS;
}
@@ -708,7 +798,7 @@ SRSASN_CODE ue_radio_paging_info_r12_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(2);
+ ext_groups_unpacker_guard group_flags(4);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -732,6 +822,20 @@ SRSASN_CODE ue_radio_paging_info_r12_s::unpack(cbit_ref& bref)
HANDLE_CODE(wake_up_signal_min_gap_e_drx_tdd_r15.unpack(bref));
}
}
+ if (group_flags[2]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(ue_category_dl_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(group_wake_up_signal_r16_present, 1));
+ HANDLE_CODE(bref.unpack(group_wake_up_signal_tdd_r16_present, 1));
+ HANDLE_CODE(bref.unpack(group_wake_up_signal_alternation_r16_present, 1));
+ HANDLE_CODE(bref.unpack(group_wake_up_signal_alternation_tdd_r16_present, 1));
+ }
+ if (group_flags[3]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(inactive_state_po_determination_r17_present, 1));
+ }
}
return SRSASN_SUCCESS;
}
@@ -763,6 +867,24 @@ void ue_radio_paging_info_r12_s::to_json(json_writer& j) const
if (wake_up_signal_min_gap_e_drx_tdd_r15_present) {
j.write_str("wakeUpSignalMinGap-eDRX-TDD-r15", wake_up_signal_min_gap_e_drx_tdd_r15.to_string());
}
+ if (ue_category_dl_v1610_present) {
+ j.write_str("ue-CategoryDL-v1610", "m2");
+ }
+ if (group_wake_up_signal_r16_present) {
+ j.write_str("groupWakeUpSignal-r16", "true");
+ }
+ if (group_wake_up_signal_tdd_r16_present) {
+ j.write_str("groupWakeUpSignalTDD-r16", "true");
+ }
+ if (group_wake_up_signal_alternation_r16_present) {
+ j.write_str("groupWakeUpSignalAlternation-r16", "true");
+ }
+ if (group_wake_up_signal_alternation_tdd_r16_present) {
+ j.write_str("groupWakeUpSignalAlternationTDD-r16", "true");
+ }
+ if (inactive_state_po_determination_r17_present) {
+ j.write_str("inactiveStatePO-Determination-r17", "true");
+ }
}
j.end_obj();
}
@@ -3899,6 +4021,348 @@ void band_combination_params_v1530_s::to_json(json_writer& j) const
j.end_obj();
}
+// InterRAT-BandInfoNR-r16 ::= SEQUENCE
+SRSASN_CODE inter_rat_band_info_nr_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(inter_rat_need_for_gaps_nr_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE inter_rat_band_info_nr_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(inter_rat_need_for_gaps_nr_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+void inter_rat_band_info_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_bool("interRAT-NeedForGapsNR-r16", inter_rat_need_for_gaps_nr_r16);
+ j.end_obj();
+}
+
+// SRS-CapabilityPerBandPair-v1610 ::= SEQUENCE
+SRSASN_CODE srs_cap_per_band_pair_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(add_srs_carrier_switching_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE srs_cap_per_band_pair_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(add_srs_carrier_switching_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void srs_cap_per_band_pair_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (add_srs_carrier_switching_r16_present) {
+ j.write_str("addSRS-CarrierSwitching-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// BandParameters-v1610 ::= SEQUENCE
+SRSASN_CODE band_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(intra_freq_daps_r16_present, 1));
+ HANDLE_CODE(bref.pack(add_srs_freq_hop_r16_present, 1));
+ HANDLE_CODE(bref.pack(add_srs_ant_switching_r16_present, 1));
+ HANDLE_CODE(bref.pack(srs_cap_per_band_pair_list_v1610_present, 1));
+
+ if (intra_freq_daps_r16_present) {
+ HANDLE_CODE(bref.pack(intra_freq_daps_r16.intra_freq_async_daps_r16_present, 1));
+ HANDLE_CODE(bref.pack(intra_freq_daps_r16.dummy_present, 1));
+ HANDLE_CODE(bref.pack(intra_freq_daps_r16.intra_freq_two_tags_daps_r16_present, 1));
+ }
+ if (add_srs_ant_switching_r16_present) {
+ HANDLE_CODE(bref.pack(add_srs_ant_switching_r16.add_srs_minus1_t2_r_r16_present, 1));
+ HANDLE_CODE(bref.pack(add_srs_ant_switching_r16.add_srs_minus1_t4_r_r16_present, 1));
+ HANDLE_CODE(bref.pack(add_srs_ant_switching_r16.add_srs_minus2_t4_r_minus2pairs_r16_present, 1));
+ HANDLE_CODE(bref.pack(add_srs_ant_switching_r16.add_srs_minus2_t4_r_minus3pairs_r16_present, 1));
+ }
+ if (srs_cap_per_band_pair_list_v1610_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, srs_cap_per_band_pair_list_v1610, 1, 64));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE band_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(intra_freq_daps_r16_present, 1));
+ HANDLE_CODE(bref.unpack(add_srs_freq_hop_r16_present, 1));
+ HANDLE_CODE(bref.unpack(add_srs_ant_switching_r16_present, 1));
+ HANDLE_CODE(bref.unpack(srs_cap_per_band_pair_list_v1610_present, 1));
+
+ if (intra_freq_daps_r16_present) {
+ HANDLE_CODE(bref.unpack(intra_freq_daps_r16.intra_freq_async_daps_r16_present, 1));
+ HANDLE_CODE(bref.unpack(intra_freq_daps_r16.dummy_present, 1));
+ HANDLE_CODE(bref.unpack(intra_freq_daps_r16.intra_freq_two_tags_daps_r16_present, 1));
+ }
+ if (add_srs_ant_switching_r16_present) {
+ HANDLE_CODE(bref.unpack(add_srs_ant_switching_r16.add_srs_minus1_t2_r_r16_present, 1));
+ HANDLE_CODE(bref.unpack(add_srs_ant_switching_r16.add_srs_minus1_t4_r_r16_present, 1));
+ HANDLE_CODE(bref.unpack(add_srs_ant_switching_r16.add_srs_minus2_t4_r_minus2pairs_r16_present, 1));
+ HANDLE_CODE(bref.unpack(add_srs_ant_switching_r16.add_srs_minus2_t4_r_minus3pairs_r16_present, 1));
+ }
+ if (srs_cap_per_band_pair_list_v1610_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(srs_cap_per_band_pair_list_v1610, bref, 1, 64));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void band_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (intra_freq_daps_r16_present) {
+ j.write_fieldname("intraFreqDAPS-r16");
+ j.start_obj();
+ if (intra_freq_daps_r16.intra_freq_async_daps_r16_present) {
+ j.write_str("intraFreqAsyncDAPS-r16", "supported");
+ }
+ if (intra_freq_daps_r16.dummy_present) {
+ j.write_str("dummy", "supported");
+ }
+ if (intra_freq_daps_r16.intra_freq_two_tags_daps_r16_present) {
+ j.write_str("intraFreqTwoTAGs-DAPS-r16", "supported");
+ }
+ j.end_obj();
+ }
+ if (add_srs_freq_hop_r16_present) {
+ j.write_str("addSRS-FrequencyHopping-r16", "supported");
+ }
+ if (add_srs_ant_switching_r16_present) {
+ j.write_fieldname("addSRS-AntennaSwitching-r16");
+ j.start_obj();
+ if (add_srs_ant_switching_r16.add_srs_minus1_t2_r_r16_present) {
+ j.write_str("addSRS-1T2R-r16", "supported");
+ }
+ if (add_srs_ant_switching_r16.add_srs_minus1_t4_r_r16_present) {
+ j.write_str("addSRS-1T4R-r16", "supported");
+ }
+ if (add_srs_ant_switching_r16.add_srs_minus2_t4_r_minus2pairs_r16_present) {
+ j.write_str("addSRS-2T4R-2pairs-r16", "supported");
+ }
+ if (add_srs_ant_switching_r16.add_srs_minus2_t4_r_minus3pairs_r16_present) {
+ j.write_str("addSRS-2T4R-3pairs-r16", "supported");
+ }
+ j.end_obj();
+ }
+ if (srs_cap_per_band_pair_list_v1610_present) {
+ j.start_array("srs-CapabilityPerBandPairList-v1610");
+ for (const auto& e1 : srs_cap_per_band_pair_list_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+// MeasGapInfoNR-r16 ::= SEQUENCE
+SRSASN_CODE meas_gap_info_nr_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(inter_rat_band_list_nr_en_dc_r16_present, 1));
+ HANDLE_CODE(bref.pack(inter_rat_band_list_nr_sa_r16_present, 1));
+
+ if (inter_rat_band_list_nr_en_dc_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, inter_rat_band_list_nr_en_dc_r16, 1, 1024));
+ }
+ if (inter_rat_band_list_nr_sa_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, inter_rat_band_list_nr_sa_r16, 1, 1024));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_gap_info_nr_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(inter_rat_band_list_nr_en_dc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(inter_rat_band_list_nr_sa_r16_present, 1));
+
+ if (inter_rat_band_list_nr_en_dc_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(inter_rat_band_list_nr_en_dc_r16, bref, 1, 1024));
+ }
+ if (inter_rat_band_list_nr_sa_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(inter_rat_band_list_nr_sa_r16, bref, 1, 1024));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void meas_gap_info_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (inter_rat_band_list_nr_en_dc_r16_present) {
+ j.start_array("interRAT-BandListNR-EN-DC-r16");
+ for (const auto& e1 : inter_rat_band_list_nr_en_dc_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (inter_rat_band_list_nr_sa_r16_present) {
+ j.start_array("interRAT-BandListNR-SA-r16");
+ for (const auto& e1 : inter_rat_band_list_nr_sa_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+// BandCombinationParameters-v1610 ::= SEQUENCE
+SRSASN_CODE band_combination_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(meas_gap_info_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(band_param_list_v1610_present, 1));
+ HANDLE_CODE(bref.pack(inter_freq_daps_r16_present, 1));
+
+ if (meas_gap_info_nr_r16_present) {
+ HANDLE_CODE(meas_gap_info_nr_r16.pack(bref));
+ }
+ if (band_param_list_v1610_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, band_param_list_v1610, 1, 64));
+ }
+ if (inter_freq_daps_r16_present) {
+ HANDLE_CODE(bref.pack(inter_freq_daps_r16.inter_freq_async_daps_r16_present, 1));
+ HANDLE_CODE(bref.pack(inter_freq_daps_r16.inter_freq_multi_ul_tx_daps_r16_present, 1));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE band_combination_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(meas_gap_info_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(band_param_list_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(inter_freq_daps_r16_present, 1));
+
+ if (meas_gap_info_nr_r16_present) {
+ HANDLE_CODE(meas_gap_info_nr_r16.unpack(bref));
+ }
+ if (band_param_list_v1610_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(band_param_list_v1610, bref, 1, 64));
+ }
+ if (inter_freq_daps_r16_present) {
+ HANDLE_CODE(bref.unpack(inter_freq_daps_r16.inter_freq_async_daps_r16_present, 1));
+ HANDLE_CODE(bref.unpack(inter_freq_daps_r16.inter_freq_multi_ul_tx_daps_r16_present, 1));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void band_combination_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (meas_gap_info_nr_r16_present) {
+ j.write_fieldname("measGapInfoNR-r16");
+ meas_gap_info_nr_r16.to_json(j);
+ }
+ if (band_param_list_v1610_present) {
+ j.start_array("bandParameterList-v1610");
+ for (const auto& e1 : band_param_list_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (inter_freq_daps_r16_present) {
+ j.write_fieldname("interFreqDAPS-r16");
+ j.start_obj();
+ if (inter_freq_daps_r16.inter_freq_async_daps_r16_present) {
+ j.write_str("interFreqAsyncDAPS-r16", "supported");
+ }
+ if (inter_freq_daps_r16.inter_freq_multi_ul_tx_daps_r16_present) {
+ j.write_str("interFreqMultiUL-TransmissionDAPS-r16", "supported");
+ }
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// ScalingFactorSidelink-r16 ::= ENUMERATED
+const char* scaling_factor_sidelink_r16_opts::to_string() const
+{
+ static const char* options[] = {"f0p4", "f0p75", "f0p8", "f1"};
+ return convert_enum_idx(options, 4, value, "scaling_factor_sidelink_r16_e");
+}
+
+// BandCombinationParameters-v1630 ::= SEQUENCE
+SRSASN_CODE band_combination_params_v1630_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(v2x_supported_tx_band_comb_list_per_bc_v1630_present, 1));
+ HANDLE_CODE(bref.pack(v2x_supported_rx_band_comb_list_per_bc_v1630_present, 1));
+ HANDLE_CODE(bref.pack(scaling_factor_tx_sidelink_r16_present, 1));
+ HANDLE_CODE(bref.pack(scaling_factor_rx_sidelink_r16_present, 1));
+ HANDLE_CODE(bref.pack(inter_band_pwr_sharing_sync_daps_r16_present, 1));
+ HANDLE_CODE(bref.pack(inter_band_pwr_sharing_async_daps_r16_present, 1));
+
+ if (v2x_supported_tx_band_comb_list_per_bc_v1630_present) {
+ HANDLE_CODE(v2x_supported_tx_band_comb_list_per_bc_v1630.pack(bref));
+ }
+ if (v2x_supported_rx_band_comb_list_per_bc_v1630_present) {
+ HANDLE_CODE(v2x_supported_rx_band_comb_list_per_bc_v1630.pack(bref));
+ }
+ if (scaling_factor_tx_sidelink_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, scaling_factor_tx_sidelink_r16, 1, 512));
+ }
+ if (scaling_factor_rx_sidelink_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, scaling_factor_rx_sidelink_r16, 1, 512));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE band_combination_params_v1630_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(v2x_supported_tx_band_comb_list_per_bc_v1630_present, 1));
+ HANDLE_CODE(bref.unpack(v2x_supported_rx_band_comb_list_per_bc_v1630_present, 1));
+ HANDLE_CODE(bref.unpack(scaling_factor_tx_sidelink_r16_present, 1));
+ HANDLE_CODE(bref.unpack(scaling_factor_rx_sidelink_r16_present, 1));
+ HANDLE_CODE(bref.unpack(inter_band_pwr_sharing_sync_daps_r16_present, 1));
+ HANDLE_CODE(bref.unpack(inter_band_pwr_sharing_async_daps_r16_present, 1));
+
+ if (v2x_supported_tx_band_comb_list_per_bc_v1630_present) {
+ HANDLE_CODE(v2x_supported_tx_band_comb_list_per_bc_v1630.unpack(bref));
+ }
+ if (v2x_supported_rx_band_comb_list_per_bc_v1630_present) {
+ HANDLE_CODE(v2x_supported_rx_band_comb_list_per_bc_v1630.unpack(bref));
+ }
+ if (scaling_factor_tx_sidelink_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(scaling_factor_tx_sidelink_r16, bref, 1, 512));
+ }
+ if (scaling_factor_rx_sidelink_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(scaling_factor_rx_sidelink_r16, bref, 1, 512));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void band_combination_params_v1630_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (v2x_supported_tx_band_comb_list_per_bc_v1630_present) {
+ j.write_str("v2x-SupportedTxBandCombListPerBC-v1630", v2x_supported_tx_band_comb_list_per_bc_v1630.to_string());
+ }
+ if (v2x_supported_rx_band_comb_list_per_bc_v1630_present) {
+ j.write_str("v2x-SupportedRxBandCombListPerBC-v1630", v2x_supported_rx_band_comb_list_per_bc_v1630.to_string());
+ }
+ if (scaling_factor_tx_sidelink_r16_present) {
+ j.start_array("scalingFactorTxSidelink-r16");
+ for (const auto& e1 : scaling_factor_tx_sidelink_r16) {
+ j.write_str(e1.to_string());
+ }
+ j.end_array();
+ }
+ if (scaling_factor_rx_sidelink_r16_present) {
+ j.start_array("scalingFactorRxSidelink-r16");
+ for (const auto& e1 : scaling_factor_rx_sidelink_r16) {
+ j.write_str(e1.to_string());
+ }
+ j.end_array();
+ }
+ if (inter_band_pwr_sharing_sync_daps_r16_present) {
+ j.write_str("interBandPowerSharingSyncDAPS-r16", "supported");
+ }
+ if (inter_band_pwr_sharing_async_daps_r16_present) {
+ j.write_str("interBandPowerSharingAsyncDAPS-r16", "supported");
+ }
+ j.end_obj();
+}
+
// BandCombinationParametersExt-r10 ::= SEQUENCE
SRSASN_CODE band_combination_params_ext_r10_s::pack(bit_ref& bref) const
{
@@ -5011,6 +5475,187 @@ void mac_params_v1530_s::to_json(json_writer& j) const
j.end_obj();
}
+// MBMS-SupportedBandInfo-r16 ::= SEQUENCE
+SRSASN_CODE mbms_supported_band_info_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(subcarrier_spacing_mbms_khz2dot5_r16_present, 1));
+ HANDLE_CODE(bref.pack(subcarrier_spacing_mbms_khz0dot37_r16_present, 1));
+
+ if (subcarrier_spacing_mbms_khz0dot37_r16_present) {
+ HANDLE_CODE(bref.pack(subcarrier_spacing_mbms_khz0dot37_r16.time_separation_slot2_r16_present, 1));
+ HANDLE_CODE(bref.pack(subcarrier_spacing_mbms_khz0dot37_r16.time_separation_slot4_r16_present, 1));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mbms_supported_band_info_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(subcarrier_spacing_mbms_khz2dot5_r16_present, 1));
+ HANDLE_CODE(bref.unpack(subcarrier_spacing_mbms_khz0dot37_r16_present, 1));
+
+ if (subcarrier_spacing_mbms_khz0dot37_r16_present) {
+ HANDLE_CODE(bref.unpack(subcarrier_spacing_mbms_khz0dot37_r16.time_separation_slot2_r16_present, 1));
+ HANDLE_CODE(bref.unpack(subcarrier_spacing_mbms_khz0dot37_r16.time_separation_slot4_r16_present, 1));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void mbms_supported_band_info_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (subcarrier_spacing_mbms_khz2dot5_r16_present) {
+ j.write_str("subcarrierSpacingMBMS-khz2dot5-r16", "supported");
+ }
+ if (subcarrier_spacing_mbms_khz0dot37_r16_present) {
+ j.write_fieldname("subcarrierSpacingMBMS-khz0dot37-r16");
+ j.start_obj();
+ if (subcarrier_spacing_mbms_khz0dot37_r16.time_separation_slot2_r16_present) {
+ j.write_str("timeSeparationSlot2-r16", "supported");
+ }
+ if (subcarrier_spacing_mbms_khz0dot37_r16.time_separation_slot4_r16_present) {
+ j.write_str("timeSeparationSlot4-r16", "supported");
+ }
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// MBMS-Parameters-v1610 ::= SEQUENCE
+SRSASN_CODE mbms_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(mbms_scaling_factor2dot5_r16_present, 1));
+ HANDLE_CODE(bref.pack(mbms_scaling_factor0dot37_r16_present, 1));
+
+ if (mbms_scaling_factor2dot5_r16_present) {
+ HANDLE_CODE(mbms_scaling_factor2dot5_r16.pack(bref));
+ }
+ if (mbms_scaling_factor0dot37_r16_present) {
+ HANDLE_CODE(mbms_scaling_factor0dot37_r16.pack(bref));
+ }
+ HANDLE_CODE(pack_dyn_seq_of(bref, mbms_supported_band_info_list_r16, 1, 64));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mbms_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(mbms_scaling_factor2dot5_r16_present, 1));
+ HANDLE_CODE(bref.unpack(mbms_scaling_factor0dot37_r16_present, 1));
+
+ if (mbms_scaling_factor2dot5_r16_present) {
+ HANDLE_CODE(mbms_scaling_factor2dot5_r16.unpack(bref));
+ }
+ if (mbms_scaling_factor0dot37_r16_present) {
+ HANDLE_CODE(mbms_scaling_factor0dot37_r16.unpack(bref));
+ }
+ HANDLE_CODE(unpack_dyn_seq_of(mbms_supported_band_info_list_r16, bref, 1, 64));
+
+ return SRSASN_SUCCESS;
+}
+void mbms_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (mbms_scaling_factor2dot5_r16_present) {
+ j.write_str("mbms-ScalingFactor2dot5-r16", mbms_scaling_factor2dot5_r16.to_string());
+ }
+ if (mbms_scaling_factor0dot37_r16_present) {
+ j.write_str("mbms-ScalingFactor0dot37-r16", mbms_scaling_factor0dot37_r16.to_string());
+ }
+ j.start_array("mbms-SupportedBandInfoList-r16");
+ for (const auto& e1 : mbms_supported_band_info_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.end_obj();
+}
+
+const char* mbms_params_v1610_s::mbms_scaling_factor2dot5_r16_opts::to_string() const
+{
+ static const char* options[] = {"n2", "n4", "n6", "n8"};
+ return convert_enum_idx(options, 4, value, "mbms_params_v1610_s::mbms_scaling_factor2dot5_r16_e_");
+}
+uint8_t mbms_params_v1610_s::mbms_scaling_factor2dot5_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {2, 4, 6, 8};
+ return map_enum_number(options, 4, value, "mbms_params_v1610_s::mbms_scaling_factor2dot5_r16_e_");
+}
+
+const char* mbms_params_v1610_s::mbms_scaling_factor0dot37_r16_opts::to_string() const
+{
+ static const char* options[] = {"n12", "n16", "n20", "n24"};
+ return convert_enum_idx(options, 4, value, "mbms_params_v1610_s::mbms_scaling_factor0dot37_r16_e_");
+}
+uint8_t mbms_params_v1610_s::mbms_scaling_factor0dot37_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {12, 16, 20, 24};
+ return map_enum_number(options, 4, value, "mbms_params_v1610_s::mbms_scaling_factor0dot37_r16_e_");
+}
+
+// MBMS-SupportedBandInfo-v1700 ::= SEQUENCE
+SRSASN_CODE mbms_supported_band_info_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pmch_bw_n40_r17_present, 1));
+ HANDLE_CODE(bref.pack(pmch_bw_n35_r17_present, 1));
+ HANDLE_CODE(bref.pack(pmch_bw_n30_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mbms_supported_band_info_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pmch_bw_n40_r17_present, 1));
+ HANDLE_CODE(bref.unpack(pmch_bw_n35_r17_present, 1));
+ HANDLE_CODE(bref.unpack(pmch_bw_n30_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void mbms_supported_band_info_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pmch_bw_n40_r17_present) {
+ j.write_str("pmch-Bandwidth-n40-r17", "supported");
+ }
+ if (pmch_bw_n35_r17_present) {
+ j.write_str("pmch-Bandwidth-n35-r17", "supported");
+ }
+ if (pmch_bw_n30_r17_present) {
+ j.write_str("pmch-Bandwidth-n30-r17", "supported");
+ }
+ j.end_obj();
+}
+
+// MBMS-Parameters-v1700 ::= SEQUENCE
+SRSASN_CODE mbms_params_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(mbms_supported_band_info_list_v1700_present, 1));
+
+ if (mbms_supported_band_info_list_v1700_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, mbms_supported_band_info_list_v1700, 1, 64));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mbms_params_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(mbms_supported_band_info_list_v1700_present, 1));
+
+ if (mbms_supported_band_info_list_v1700_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(mbms_supported_band_info_list_v1700, bref, 1, 64));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void mbms_params_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (mbms_supported_band_info_list_v1700_present) {
+ j.start_array("mbms-SupportedBandInfoList-v1700");
+ for (const auto& e1 : mbms_supported_band_info_list_v1700) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
// MIMO-UE-BeamformedCapabilities-r13 ::= SEQUENCE
SRSASN_CODE mimo_ue_bf_cap_r13_s::pack(bit_ref& bref) const
{
@@ -5250,26 +5895,26 @@ void mimo_ue_params_per_tm_v1430_s::to_json(json_writer& j) const
const char* mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_aperiodic_info_r14_s_::nmax_res_r14_opts::to_string() const
{
- static const char* options[] = {"ffs1", "ffs2", "ffs3", "ffs4"};
+ static const char* options[] = {"n1", "n2", "n4", "n8"};
return convert_enum_idx(
options, 4, value, "mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_aperiodic_info_r14_s_::nmax_res_r14_e_");
}
uint8_t mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_aperiodic_info_r14_s_::nmax_res_r14_opts::to_number() const
{
- static const uint8_t options[] = {1, 2, 3, 4};
+ static const uint8_t options[] = {1, 2, 4, 8};
return map_enum_number(
options, 4, value, "mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_aperiodic_info_r14_s_::nmax_res_r14_e_");
}
const char* mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_periodic_info_r14_s_::nmax_res_r14_opts::to_string() const
{
- static const char* options[] = {"ffs1", "ffs2", "ffs3", "ffs4"};
+ static const char* options[] = {"n1", "n2", "n4", "n8"};
return convert_enum_idx(
options, 4, value, "mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_periodic_info_r14_s_::nmax_res_r14_e_");
}
uint8_t mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_periodic_info_r14_s_::nmax_res_r14_opts::to_number() const
{
- static const uint8_t options[] = {1, 2, 3, 4};
+ static const uint8_t options[] = {1, 2, 4, 8};
return map_enum_number(
options, 4, value, "mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_periodic_info_r14_s_::nmax_res_r14_e_");
}
@@ -5431,6 +6076,154 @@ void meas_params_v1020_s::to_json(json_writer& j) const
j.end_obj();
}
+// MeasParameters-v1610 ::= SEQUENCE
+SRSASN_CODE meas_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(band_info_nr_v1610_present, 1));
+ HANDLE_CODE(bref.pack(alt_freq_prio_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_dl_ch_quality_report_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_meas_rss_ded_r16_present, 1));
+ HANDLE_CODE(bref.pack(eutra_idle_inactive_meass_r16_present, 1));
+ HANDLE_CODE(bref.pack(nr_idle_inactive_meas_fr1_r16_present, 1));
+ HANDLE_CODE(bref.pack(nr_idle_inactive_meas_fr2_r16_present, 1));
+ HANDLE_CODE(bref.pack(idle_inactive_validity_area_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_gap_patterns_nronly_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_gap_patterns_nronly_endc_r16_present, 1));
+
+ if (band_info_nr_v1610_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, band_info_nr_v1610, 1, 64));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(band_info_nr_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(alt_freq_prio_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_dl_ch_quality_report_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_meas_rss_ded_r16_present, 1));
+ HANDLE_CODE(bref.unpack(eutra_idle_inactive_meass_r16_present, 1));
+ HANDLE_CODE(bref.unpack(nr_idle_inactive_meas_fr1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(nr_idle_inactive_meas_fr2_r16_present, 1));
+ HANDLE_CODE(bref.unpack(idle_inactive_validity_area_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_gap_patterns_nronly_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_gap_patterns_nronly_endc_r16_present, 1));
+
+ if (band_info_nr_v1610_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(band_info_nr_v1610, bref, 1, 64));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void meas_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (band_info_nr_v1610_present) {
+ j.start_array("bandInfoNR-v1610");
+ for (const auto& e1 : band_info_nr_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (alt_freq_prio_r16_present) {
+ j.write_str("altFreqPriority-r16", "supported");
+ }
+ if (ce_dl_ch_quality_report_r16_present) {
+ j.write_str("ce-DL-ChannelQualityReporting-r16", "supported");
+ }
+ if (ce_meas_rss_ded_r16_present) {
+ j.write_str("ce-MeasRSS-Dedicated-r16", "supported");
+ }
+ if (eutra_idle_inactive_meass_r16_present) {
+ j.write_str("eutra-IdleInactiveMeasurements-r16", "supported");
+ }
+ if (nr_idle_inactive_meas_fr1_r16_present) {
+ j.write_str("nr-IdleInactiveMeasFR1-r16", "supported");
+ }
+ if (nr_idle_inactive_meas_fr2_r16_present) {
+ j.write_str("nr-IdleInactiveMeasFR2-r16", "supported");
+ }
+ if (idle_inactive_validity_area_list_r16_present) {
+ j.write_str("idleInactiveValidityAreaList-r16", "supported");
+ }
+ if (meas_gap_patterns_nronly_r16_present) {
+ j.write_str("measGapPatterns-NRonly-r16", "supported");
+ }
+ if (meas_gap_patterns_nronly_endc_r16_present) {
+ j.write_str("measGapPatterns-NRonly-ENDC-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// SharedSpectrumMeasNR-r17 ::= SEQUENCE
+SRSASN_CODE shared_spec_meas_nr_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(nr_rssi_ch_occupancy_report_r17, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE shared_spec_meas_nr_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(nr_rssi_ch_occupancy_report_r17, 1));
+
+ return SRSASN_SUCCESS;
+}
+void shared_spec_meas_nr_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_bool("nr-RSSI-ChannelOccupancyReporting-r17", nr_rssi_ch_occupancy_report_r17);
+ j.end_obj();
+}
+
+// MeasParameters-v1700 ::= SEQUENCE
+SRSASN_CODE meas_params_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(shared_spec_meas_nr_en_dc_r17_present, 1));
+ HANDLE_CODE(bref.pack(shared_spec_meas_nr_sa_r17_present, 1));
+
+ if (shared_spec_meas_nr_en_dc_r17_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, shared_spec_meas_nr_en_dc_r17, 1, 1024));
+ }
+ if (shared_spec_meas_nr_sa_r17_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, shared_spec_meas_nr_sa_r17, 1, 1024));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_params_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(shared_spec_meas_nr_en_dc_r17_present, 1));
+ HANDLE_CODE(bref.unpack(shared_spec_meas_nr_sa_r17_present, 1));
+
+ if (shared_spec_meas_nr_en_dc_r17_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(shared_spec_meas_nr_en_dc_r17, bref, 1, 1024));
+ }
+ if (shared_spec_meas_nr_sa_r17_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(shared_spec_meas_nr_sa_r17, bref, 1, 1024));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void meas_params_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (shared_spec_meas_nr_en_dc_r17_present) {
+ j.start_array("sharedSpectrumMeasNR-EN-DC-r17");
+ for (const auto& e1 : shared_spec_meas_nr_en_dc_r17) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (shared_spec_meas_nr_sa_r17_present) {
+ j.start_array("sharedSpectrumMeasNR-SA-r17");
+ for (const auto& e1 : shared_spec_meas_nr_sa_r17) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
// NAICS-Capability-Entry-r12 ::= SEQUENCE
SRSASN_CODE naics_cap_entry_r12_s::pack(bit_ref& bref) const
{
@@ -6760,6 +7553,305 @@ const char* phy_layer_params_v1530_s::stti_spt_cap_r15_s_::sps_stti_r15_opts::to
return convert_enum_idx(options, 3, value, "phy_layer_params_v1530_s::stti_spt_cap_r15_s_::sps_stti_r15_e_");
}
+// CE-MultiTB-Parameters-r16 ::= SEQUENCE
+SRSASN_CODE ce_multi_tb_params_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pdsch_multi_tb_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(pdsch_multi_tb_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(pusch_multi_tb_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(pusch_multi_tb_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_multi_tb_minus64_qam_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_multi_tb_early_termination_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_multi_tb_freq_hop_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_multi_tb_harq_ack_bundling_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_multi_tb_interleaving_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_multi_tb_sub_prb_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ce_multi_tb_params_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pdsch_multi_tb_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pdsch_multi_tb_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pusch_multi_tb_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pusch_multi_tb_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_multi_tb_minus64_qam_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_multi_tb_early_termination_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_multi_tb_freq_hop_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_multi_tb_harq_ack_bundling_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_multi_tb_interleaving_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_multi_tb_sub_prb_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void ce_multi_tb_params_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pdsch_multi_tb_ce_mode_a_r16_present) {
+ j.write_str("pdsch-MultiTB-CE-ModeA-r16", "supported");
+ }
+ if (pdsch_multi_tb_ce_mode_b_r16_present) {
+ j.write_str("pdsch-MultiTB-CE-ModeB-r16", "supported");
+ }
+ if (pusch_multi_tb_ce_mode_a_r16_present) {
+ j.write_str("pusch-MultiTB-CE-ModeA-r16", "supported");
+ }
+ if (pusch_multi_tb_ce_mode_b_r16_present) {
+ j.write_str("pusch-MultiTB-CE-ModeB-r16", "supported");
+ }
+ if (ce_multi_tb_minus64_qam_r16_present) {
+ j.write_str("ce-MultiTB-64QAM-r16", "supported");
+ }
+ if (ce_multi_tb_early_termination_r16_present) {
+ j.write_str("ce-MultiTB-EarlyTermination-r16", "supported");
+ }
+ if (ce_multi_tb_freq_hop_r16_present) {
+ j.write_str("ce-MultiTB-FrequencyHopping-r16", "supported");
+ }
+ if (ce_multi_tb_harq_ack_bundling_r16_present) {
+ j.write_str("ce-MultiTB-HARQ-AckBundling-r16", "supported");
+ }
+ if (ce_multi_tb_interleaving_r16_present) {
+ j.write_str("ce-MultiTB-Interleaving-r16", "supported");
+ }
+ if (ce_multi_tb_sub_prb_r16_present) {
+ j.write_str("ce-MultiTB-SubPRB-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// CE-ResourceResvParameters-r16 ::= SEQUENCE
+SRSASN_CODE ce_res_resv_params_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(sf_res_resv_dl_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(sf_res_resv_dl_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(sf_res_resv_ul_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(sf_res_resv_ul_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(slot_symbol_res_resv_dl_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(slot_symbol_res_resv_dl_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(slot_symbol_res_resv_ul_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(slot_symbol_res_resv_ul_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(subcarrier_puncturing_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(subcarrier_puncturing_ce_mode_b_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ce_res_resv_params_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(sf_res_resv_dl_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(sf_res_resv_dl_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(sf_res_resv_ul_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(sf_res_resv_ul_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(slot_symbol_res_resv_dl_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(slot_symbol_res_resv_dl_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(slot_symbol_res_resv_ul_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(slot_symbol_res_resv_ul_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(subcarrier_puncturing_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(subcarrier_puncturing_ce_mode_b_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void ce_res_resv_params_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (sf_res_resv_dl_ce_mode_a_r16_present) {
+ j.write_str("subframeResourceResvDL-CE-ModeA-r16", "supported");
+ }
+ if (sf_res_resv_dl_ce_mode_b_r16_present) {
+ j.write_str("subframeResourceResvDL-CE-ModeB-r16", "supported");
+ }
+ if (sf_res_resv_ul_ce_mode_a_r16_present) {
+ j.write_str("subframeResourceResvUL-CE-ModeA-r16", "supported");
+ }
+ if (sf_res_resv_ul_ce_mode_b_r16_present) {
+ j.write_str("subframeResourceResvUL-CE-ModeB-r16", "supported");
+ }
+ if (slot_symbol_res_resv_dl_ce_mode_a_r16_present) {
+ j.write_str("slotSymbolResourceResvDL-CE-ModeA-r16", "supported");
+ }
+ if (slot_symbol_res_resv_dl_ce_mode_b_r16_present) {
+ j.write_str("slotSymbolResourceResvDL-CE-ModeB-r16", "supported");
+ }
+ if (slot_symbol_res_resv_ul_ce_mode_a_r16_present) {
+ j.write_str("slotSymbolResourceResvUL-CE-ModeA-r16", "supported");
+ }
+ if (slot_symbol_res_resv_ul_ce_mode_b_r16_present) {
+ j.write_str("slotSymbolResourceResvUL-CE-ModeB-r16", "supported");
+ }
+ if (subcarrier_puncturing_ce_mode_a_r16_present) {
+ j.write_str("subcarrierPuncturingCE-ModeA-r16", "supported");
+ }
+ if (subcarrier_puncturing_ce_mode_b_r16_present) {
+ j.write_str("subcarrierPuncturingCE-ModeB-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// PhyLayerParameters-v1610 ::= SEQUENCE
+SRSASN_CODE phy_layer_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ce_cap_v1610_present, 1));
+ HANDLE_CODE(bref.pack(wideband_prg_slot_r16_present, 1));
+ HANDLE_CODE(bref.pack(wideband_prg_subslot_r16_present, 1));
+ HANDLE_CODE(bref.pack(wideband_prg_sf_r16_present, 1));
+ HANDLE_CODE(bref.pack(add_srs_r16_present, 1));
+ HANDLE_CODE(bref.pack(virtual_cell_id_basic_srs_r16_present, 1));
+ HANDLE_CODE(bref.pack(virtual_cell_id_add_srs_r16_present, 1));
+
+ if (ce_cap_v1610_present) {
+ HANDLE_CODE(bref.pack(ce_cap_v1610.ce_csi_rs_feedback_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.ce_csi_rs_feedback_codebook_restrict_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.crs_ch_est_mpdcch_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.crs_ch_est_mpdcch_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.crs_ch_est_mpdcch_csi_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.crs_ch_est_mpdcch_reciprocity_tdd_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.etws_cmas_rx_in_conn_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.etws_cmas_rx_in_conn_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.mpdcch_in_lte_ctrl_region_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.mpdcch_in_lte_ctrl_region_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.pdsch_in_lte_ctrl_region_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.pdsch_in_lte_ctrl_region_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.multi_tb_params_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1610.res_resv_params_r16_present, 1));
+ if (ce_cap_v1610.multi_tb_params_r16_present) {
+ HANDLE_CODE(ce_cap_v1610.multi_tb_params_r16.pack(bref));
+ }
+ if (ce_cap_v1610.res_resv_params_r16_present) {
+ HANDLE_CODE(ce_cap_v1610.res_resv_params_r16.pack(bref));
+ }
+ }
+ if (add_srs_r16_present) {
+ HANDLE_CODE(bref.pack(add_srs_r16.add_srs_freq_hop_r16_present, 1));
+ HANDLE_CODE(bref.pack(add_srs_r16.add_srs_ant_switching_r16_present, 1));
+ HANDLE_CODE(bref.pack(add_srs_r16.add_srs_carrier_switching_r16_present, 1));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE phy_layer_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ce_cap_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(wideband_prg_slot_r16_present, 1));
+ HANDLE_CODE(bref.unpack(wideband_prg_subslot_r16_present, 1));
+ HANDLE_CODE(bref.unpack(wideband_prg_sf_r16_present, 1));
+ HANDLE_CODE(bref.unpack(add_srs_r16_present, 1));
+ HANDLE_CODE(bref.unpack(virtual_cell_id_basic_srs_r16_present, 1));
+ HANDLE_CODE(bref.unpack(virtual_cell_id_add_srs_r16_present, 1));
+
+ if (ce_cap_v1610_present) {
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.ce_csi_rs_feedback_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.ce_csi_rs_feedback_codebook_restrict_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.crs_ch_est_mpdcch_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.crs_ch_est_mpdcch_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.crs_ch_est_mpdcch_csi_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.crs_ch_est_mpdcch_reciprocity_tdd_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.etws_cmas_rx_in_conn_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.etws_cmas_rx_in_conn_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.mpdcch_in_lte_ctrl_region_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.mpdcch_in_lte_ctrl_region_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.pdsch_in_lte_ctrl_region_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.pdsch_in_lte_ctrl_region_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.multi_tb_params_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1610.res_resv_params_r16_present, 1));
+ if (ce_cap_v1610.multi_tb_params_r16_present) {
+ HANDLE_CODE(ce_cap_v1610.multi_tb_params_r16.unpack(bref));
+ }
+ if (ce_cap_v1610.res_resv_params_r16_present) {
+ HANDLE_CODE(ce_cap_v1610.res_resv_params_r16.unpack(bref));
+ }
+ }
+ if (add_srs_r16_present) {
+ HANDLE_CODE(bref.unpack(add_srs_r16.add_srs_freq_hop_r16_present, 1));
+ HANDLE_CODE(bref.unpack(add_srs_r16.add_srs_ant_switching_r16_present, 1));
+ HANDLE_CODE(bref.unpack(add_srs_r16.add_srs_carrier_switching_r16_present, 1));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void phy_layer_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ce_cap_v1610_present) {
+ j.write_fieldname("ce-Capabilities-v1610");
+ j.start_obj();
+ if (ce_cap_v1610.ce_csi_rs_feedback_r16_present) {
+ j.write_str("ce-CSI-RS-Feedback-r16", "supported");
+ }
+ if (ce_cap_v1610.ce_csi_rs_feedback_codebook_restrict_r16_present) {
+ j.write_str("ce-CSI-RS-FeedbackCodebookRestriction-r16", "supported");
+ }
+ if (ce_cap_v1610.crs_ch_est_mpdcch_ce_mode_a_r16_present) {
+ j.write_str("crs-ChEstMPDCCH-CE-ModeA-r16", "supported");
+ }
+ if (ce_cap_v1610.crs_ch_est_mpdcch_ce_mode_b_r16_present) {
+ j.write_str("crs-ChEstMPDCCH-CE-ModeB-r16", "supported");
+ }
+ if (ce_cap_v1610.crs_ch_est_mpdcch_csi_r16_present) {
+ j.write_str("crs-ChEstMPDCCH-CSI-r16", "supported");
+ }
+ if (ce_cap_v1610.crs_ch_est_mpdcch_reciprocity_tdd_r16_present) {
+ j.write_str("crs-ChEstMPDCCH-ReciprocityTDD-r16", "supported");
+ }
+ if (ce_cap_v1610.etws_cmas_rx_in_conn_ce_mode_a_r16_present) {
+ j.write_str("etws-CMAS-RxInConnCE-ModeA-r16", "supported");
+ }
+ if (ce_cap_v1610.etws_cmas_rx_in_conn_ce_mode_b_r16_present) {
+ j.write_str("etws-CMAS-RxInConnCE-ModeB-r16", "supported");
+ }
+ if (ce_cap_v1610.mpdcch_in_lte_ctrl_region_ce_mode_a_r16_present) {
+ j.write_str("mpdcch-InLteControlRegionCE-ModeA-r16", "supported");
+ }
+ if (ce_cap_v1610.mpdcch_in_lte_ctrl_region_ce_mode_b_r16_present) {
+ j.write_str("mpdcch-InLteControlRegionCE-ModeB-r16", "supported");
+ }
+ if (ce_cap_v1610.pdsch_in_lte_ctrl_region_ce_mode_a_r16_present) {
+ j.write_str("pdsch-InLteControlRegionCE-ModeA-r16", "supported");
+ }
+ if (ce_cap_v1610.pdsch_in_lte_ctrl_region_ce_mode_b_r16_present) {
+ j.write_str("pdsch-InLteControlRegionCE-ModeB-r16", "supported");
+ }
+ if (ce_cap_v1610.multi_tb_params_r16_present) {
+ j.write_fieldname("multiTB-Parameters-r16");
+ ce_cap_v1610.multi_tb_params_r16.to_json(j);
+ }
+ if (ce_cap_v1610.res_resv_params_r16_present) {
+ j.write_fieldname("resourceResvParameters-r16");
+ ce_cap_v1610.res_resv_params_r16.to_json(j);
+ }
+ j.end_obj();
+ }
+ if (wideband_prg_slot_r16_present) {
+ j.write_str("widebandPRG-Slot-r16", "supported");
+ }
+ if (wideband_prg_subslot_r16_present) {
+ j.write_str("widebandPRG-Subslot-r16", "supported");
+ }
+ if (wideband_prg_sf_r16_present) {
+ j.write_str("widebandPRG-Subframe-r16", "supported");
+ }
+ if (add_srs_r16_present) {
+ j.write_fieldname("addSRS-r16");
+ j.start_obj();
+ if (add_srs_r16.add_srs_freq_hop_r16_present) {
+ j.write_str("addSRS-FrequencyHopping-r16", "supported");
+ }
+ if (add_srs_r16.add_srs_ant_switching_r16_present) {
+ j.write_str("addSRS-AntennaSwitching-r16", "useBasic");
+ }
+ if (add_srs_r16.add_srs_carrier_switching_r16_present) {
+ j.write_str("addSRS-CarrierSwitching-r16", "supported");
+ }
+ j.end_obj();
+ }
+ if (virtual_cell_id_basic_srs_r16_present) {
+ j.write_str("virtualCellID-BasicSRS-r16", "supported");
+ }
+ if (virtual_cell_id_add_srs_r16_present) {
+ j.write_str("virtualCellID-AddSRS-r16", "supported");
+ }
+ j.end_obj();
+}
+
// SupportedBandEUTRA ::= SEQUENCE
SRSASN_CODE supported_band_eutra_s::pack(bit_ref& bref) const
{
@@ -7968,6 +9060,134 @@ void rf_params_v1530_s::to_json(json_writer& j) const
j.end_obj();
}
+// RF-Parameters-v1610 ::= SEQUENCE
+SRSASN_CODE rf_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(supported_band_combination_v1610_present, 1));
+ HANDLE_CODE(bref.pack(supported_band_combination_add_v1610_present, 1));
+ HANDLE_CODE(bref.pack(supported_band_combination_reduced_v1610_present, 1));
+
+ if (supported_band_combination_v1610_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_v1610, 1, 128));
+ }
+ if (supported_band_combination_add_v1610_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_add_v1610, 1, 256));
+ }
+ if (supported_band_combination_reduced_v1610_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_reduced_v1610, 1, 384));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rf_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(supported_band_combination_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(supported_band_combination_add_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(supported_band_combination_reduced_v1610_present, 1));
+
+ if (supported_band_combination_v1610_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_v1610, bref, 1, 128));
+ }
+ if (supported_band_combination_add_v1610_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_add_v1610, bref, 1, 256));
+ }
+ if (supported_band_combination_reduced_v1610_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_reduced_v1610, bref, 1, 384));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rf_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (supported_band_combination_v1610_present) {
+ j.start_array("supportedBandCombination-v1610");
+ for (const auto& e1 : supported_band_combination_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (supported_band_combination_add_v1610_present) {
+ j.start_array("supportedBandCombinationAdd-v1610");
+ for (const auto& e1 : supported_band_combination_add_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (supported_band_combination_reduced_v1610_present) {
+ j.start_array("supportedBandCombinationReduced-v1610");
+ for (const auto& e1 : supported_band_combination_reduced_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+// RF-Parameters-v1630 ::= SEQUENCE
+SRSASN_CODE rf_params_v1630_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(supported_band_combination_v1630_present, 1));
+ HANDLE_CODE(bref.pack(supported_band_combination_add_v1630_present, 1));
+ HANDLE_CODE(bref.pack(supported_band_combination_reduced_v1630_present, 1));
+
+ if (supported_band_combination_v1630_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_v1630, 1, 128));
+ }
+ if (supported_band_combination_add_v1630_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_add_v1630, 1, 256));
+ }
+ if (supported_band_combination_reduced_v1630_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_reduced_v1630, 1, 384));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rf_params_v1630_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(supported_band_combination_v1630_present, 1));
+ HANDLE_CODE(bref.unpack(supported_band_combination_add_v1630_present, 1));
+ HANDLE_CODE(bref.unpack(supported_band_combination_reduced_v1630_present, 1));
+
+ if (supported_band_combination_v1630_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_v1630, bref, 1, 128));
+ }
+ if (supported_band_combination_add_v1630_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_add_v1630, bref, 1, 256));
+ }
+ if (supported_band_combination_reduced_v1630_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_reduced_v1630, bref, 1, 384));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rf_params_v1630_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (supported_band_combination_v1630_present) {
+ j.start_array("supportedBandCombination-v1630");
+ for (const auto& e1 : supported_band_combination_v1630) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (supported_band_combination_add_v1630_present) {
+ j.start_array("supportedBandCombinationAdd-v1630");
+ for (const auto& e1 : supported_band_combination_add_v1630) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (supported_band_combination_reduced_v1630_present) {
+ j.start_array("supportedBandCombinationReduced-v1630");
+ for (const auto& e1 : supported_band_combination_reduced_v1630) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
// SupportedBandEUTRA-v9e0 ::= SEQUENCE
SRSASN_CODE supported_band_eutra_v9e0_s::pack(bit_ref& bref) const
{
@@ -8401,6 +9621,1503 @@ const char* sl_params_v1530_s::slss_supported_tx_freq_r15_opts::to_string() cons
return convert_enum_idx(options, 2, value, "sl_params_v1530_s::slss_supported_tx_freq_r15_e_");
}
+// V2X-BandParametersEUTRA-NR-r16 ::= CHOICE
+void v2x_band_params_eutra_nr_r16_c::destroy_()
+{
+ switch (type_) {
+ case types::eutra:
+ c.destroy<eutra_s_>();
+ break;
+ case types::nr:
+ c.destroy<nr_s_>();
+ break;
+ default:
+ break;
+ }
+}
+void v2x_band_params_eutra_nr_r16_c::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::eutra:
+ c.init<eutra_s_>();
+ break;
+ case types::nr:
+ c.init<nr_s_>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "v2x_band_params_eutra_nr_r16_c");
+ }
+}
+v2x_band_params_eutra_nr_r16_c::v2x_band_params_eutra_nr_r16_c(const v2x_band_params_eutra_nr_r16_c& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::eutra:
+ c.init(other.c.get<eutra_s_>());
+ break;
+ case types::nr:
+ c.init(other.c.get<nr_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "v2x_band_params_eutra_nr_r16_c");
+ }
+}
+v2x_band_params_eutra_nr_r16_c& v2x_band_params_eutra_nr_r16_c::operator=(const v2x_band_params_eutra_nr_r16_c& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::eutra:
+ c.set(other.c.get<eutra_s_>());
+ break;
+ case types::nr:
+ c.set(other.c.get<nr_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "v2x_band_params_eutra_nr_r16_c");
+ }
+
+ return *this;
+}
+v2x_band_params_eutra_nr_r16_c::eutra_s_& v2x_band_params_eutra_nr_r16_c::set_eutra()
+{
+ set(types::eutra);
+ return c.get<eutra_s_>();
+}
+v2x_band_params_eutra_nr_r16_c::nr_s_& v2x_band_params_eutra_nr_r16_c::set_nr()
+{
+ set(types::nr);
+ return c.get<nr_s_>();
+}
+void v2x_band_params_eutra_nr_r16_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::eutra:
+ j.write_fieldname("eutra");
+ j.start_obj();
+ if (c.get<eutra_s_>().v2x_band_params1_r16_present) {
+ j.write_fieldname("v2x-BandParameters1-r16");
+ c.get<eutra_s_>().v2x_band_params1_r16.to_json(j);
+ }
+ if (c.get<eutra_s_>().v2x_band_params2_r16_present) {
+ j.write_fieldname("v2x-BandParameters2-r16");
+ c.get<eutra_s_>().v2x_band_params2_r16.to_json(j);
+ }
+ j.end_obj();
+ break;
+ case types::nr:
+ j.write_fieldname("nr");
+ j.start_obj();
+ if (c.get<nr_s_>().v2x_band_params_nr_r16_present) {
+ j.write_str("v2x-BandParametersNR-r16", c.get<nr_s_>().v2x_band_params_nr_r16.to_string());
+ }
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "v2x_band_params_eutra_nr_r16_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE v2x_band_params_eutra_nr_r16_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::eutra:
+ HANDLE_CODE(bref.pack(c.get<eutra_s_>().v2x_band_params1_r16_present, 1));
+ HANDLE_CODE(bref.pack(c.get<eutra_s_>().v2x_band_params2_r16_present, 1));
+ if (c.get<eutra_s_>().v2x_band_params1_r16_present) {
+ HANDLE_CODE(c.get<eutra_s_>().v2x_band_params1_r16.pack(bref));
+ }
+ if (c.get<eutra_s_>().v2x_band_params2_r16_present) {
+ HANDLE_CODE(c.get<eutra_s_>().v2x_band_params2_r16.pack(bref));
+ }
+ break;
+ case types::nr:
+ HANDLE_CODE(bref.pack(c.get<nr_s_>().v2x_band_params_nr_r16_present, 1));
+ if (c.get<nr_s_>().v2x_band_params_nr_r16_present) {
+ HANDLE_CODE(c.get<nr_s_>().v2x_band_params_nr_r16.pack(bref));
+ }
+ break;
+ default:
+ log_invalid_choice_id(type_, "v2x_band_params_eutra_nr_r16_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE v2x_band_params_eutra_nr_r16_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::eutra:
+ HANDLE_CODE(bref.unpack(c.get<eutra_s_>().v2x_band_params1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(c.get<eutra_s_>().v2x_band_params2_r16_present, 1));
+ if (c.get<eutra_s_>().v2x_band_params1_r16_present) {
+ HANDLE_CODE(c.get<eutra_s_>().v2x_band_params1_r16.unpack(bref));
+ }
+ if (c.get<eutra_s_>().v2x_band_params2_r16_present) {
+ HANDLE_CODE(c.get<eutra_s_>().v2x_band_params2_r16.unpack(bref));
+ }
+ break;
+ case types::nr:
+ HANDLE_CODE(bref.unpack(c.get<nr_s_>().v2x_band_params_nr_r16_present, 1));
+ if (c.get<nr_s_>().v2x_band_params_nr_r16_present) {
+ HANDLE_CODE(c.get<nr_s_>().v2x_band_params_nr_r16.unpack(bref));
+ }
+ break;
+ default:
+ log_invalid_choice_id(type_, "v2x_band_params_eutra_nr_r16_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+// SL-Parameters-v1610 ::= SEQUENCE
+SRSASN_CODE sl_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(sl_param_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(dummy_present, 1));
+
+ if (sl_param_nr_r16_present) {
+ HANDLE_CODE(sl_param_nr_r16.pack(bref));
+ }
+ if (dummy_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, dummy, 1, 512));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sl_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(sl_param_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(dummy_present, 1));
+
+ if (sl_param_nr_r16_present) {
+ HANDLE_CODE(sl_param_nr_r16.unpack(bref));
+ }
+ if (dummy_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(dummy, bref, 1, 512));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sl_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (sl_param_nr_r16_present) {
+ j.write_str("sl-ParameterNR-r16", sl_param_nr_r16.to_string());
+ }
+ if (dummy_present) {
+ j.start_array("dummy");
+ for (const auto& e1 : dummy) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+// V2X-BandParametersEUTRA-NR-v1630 ::= CHOICE
+void v2x_band_params_eutra_nr_v1630_c::set(types::options e)
+{
+ type_ = e;
+}
+void v2x_band_params_eutra_nr_v1630_c::set_eutra()
+{
+ set(types::eutra);
+}
+v2x_band_params_eutra_nr_v1630_c::nr_s_& v2x_band_params_eutra_nr_v1630_c::set_nr()
+{
+ set(types::nr);
+ return c;
+}
+void v2x_band_params_eutra_nr_v1630_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::eutra:
+ break;
+ case types::nr:
+ j.write_fieldname("nr");
+ j.start_obj();
+ if (c.tx_sidelink_r16_present) {
+ j.write_str("tx-Sidelink-r16", "supported");
+ }
+ if (c.rx_sidelink_r16_present) {
+ j.write_str("rx-Sidelink-r16", "supported");
+ }
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "v2x_band_params_eutra_nr_v1630_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE v2x_band_params_eutra_nr_v1630_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::eutra:
+ break;
+ case types::nr:
+ HANDLE_CODE(bref.pack(c.tx_sidelink_r16_present, 1));
+ HANDLE_CODE(bref.pack(c.rx_sidelink_r16_present, 1));
+ break;
+ default:
+ log_invalid_choice_id(type_, "v2x_band_params_eutra_nr_v1630_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE v2x_band_params_eutra_nr_v1630_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::eutra:
+ break;
+ case types::nr:
+ HANDLE_CODE(bref.unpack(c.tx_sidelink_r16_present, 1));
+ HANDLE_CODE(bref.unpack(c.rx_sidelink_r16_present, 1));
+ break;
+ default:
+ log_invalid_choice_id(type_, "v2x_band_params_eutra_nr_v1630_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+// V2X-BandCombinationParametersEUTRA-NR-v1630 ::= SEQUENCE
+SRSASN_CODE v2x_band_combination_params_eutra_nr_v1630_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_dyn_seq_of(bref, band_list_sidelink_eutra_nr_r16, 1, 64));
+ HANDLE_CODE(pack_dyn_seq_of(bref, band_list_sidelink_eutra_nr_v1630, 1, 64));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE v2x_band_combination_params_eutra_nr_v1630_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_dyn_seq_of(band_list_sidelink_eutra_nr_r16, bref, 1, 64));
+ HANDLE_CODE(unpack_dyn_seq_of(band_list_sidelink_eutra_nr_v1630, bref, 1, 64));
+
+ return SRSASN_SUCCESS;
+}
+void v2x_band_combination_params_eutra_nr_v1630_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.start_array("bandListSidelinkEUTRA-NR-r16");
+ for (const auto& e1 : band_list_sidelink_eutra_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.start_array("bandListSidelinkEUTRA-NR-v1630");
+ for (const auto& e1 : band_list_sidelink_eutra_nr_v1630) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.end_obj();
+}
+
+// SL-Parameters-v1630 ::= SEQUENCE
+SRSASN_CODE sl_params_v1630_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(v2x_supported_band_combination_list_eutra_nr_r16_present, 1));
+
+ if (v2x_supported_band_combination_list_eutra_nr_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, v2x_supported_band_combination_list_eutra_nr_r16, 1, 512));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sl_params_v1630_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(v2x_supported_band_combination_list_eutra_nr_r16_present, 1));
+
+ if (v2x_supported_band_combination_list_eutra_nr_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(v2x_supported_band_combination_list_eutra_nr_r16, bref, 1, 512));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sl_params_v1630_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (v2x_supported_band_combination_list_eutra_nr_r16_present) {
+ j.start_array("v2x-SupportedBandCombinationListEUTRA-NR-r16");
+ for (const auto& e1 : v2x_supported_band_combination_list_eutra_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+// V2X-BandParametersEUTRA-NR-v1710 ::= SEQUENCE
+SRSASN_CODE v2x_band_params_eutra_nr_v1710_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(v2x_band_params_eutra_nr_v1710_present, 1));
+
+ if (v2x_band_params_eutra_nr_v1710_present) {
+ HANDLE_CODE(v2x_band_params_eutra_nr_v1710.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE v2x_band_params_eutra_nr_v1710_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(v2x_band_params_eutra_nr_v1710_present, 1));
+
+ if (v2x_band_params_eutra_nr_v1710_present) {
+ HANDLE_CODE(v2x_band_params_eutra_nr_v1710.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void v2x_band_params_eutra_nr_v1710_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (v2x_band_params_eutra_nr_v1710_present) {
+ j.write_str("v2x-BandParametersEUTRA-NR-v1710", v2x_band_params_eutra_nr_v1710.to_string());
+ }
+ j.end_obj();
+}
+
+// SL-Parameters-v1710 ::= SEQUENCE
+SRSASN_CODE sl_params_v1710_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(v2x_supported_band_combination_list_eutra_nr_v1710_present, 1));
+
+ if (v2x_supported_band_combination_list_eutra_nr_v1710_present) {
+ HANDLE_CODE(pack_dyn_seq_of(
+ bref, v2x_supported_band_combination_list_eutra_nr_v1710, 1, 512, SeqOfPacker<Packer>(1, 64, Packer())));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sl_params_v1710_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(v2x_supported_band_combination_list_eutra_nr_v1710_present, 1));
+
+ if (v2x_supported_band_combination_list_eutra_nr_v1710_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(
+ v2x_supported_band_combination_list_eutra_nr_v1710, bref, 1, 512, SeqOfPacker<Packer>(1, 64, Packer())));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sl_params_v1710_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (v2x_supported_band_combination_list_eutra_nr_v1710_present) {
+ j.start_array("v2x-SupportedBandCombinationListEUTRA-NR-v1710");
+ for (const auto& e1 : v2x_supported_band_combination_list_eutra_nr_v1710) {
+ j.start_array();
+ for (const auto& e2 : e1) {
+ e2.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+// PhyLayerParameters-v1730 ::= SEQUENCE
+SRSASN_CODE phy_layer_params_v1730_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(csi_sf_set2_for_dormant_scell_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE phy_layer_params_v1730_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(csi_sf_set2_for_dormant_scell_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void phy_layer_params_v1730_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (csi_sf_set2_for_dormant_scell_r17_present) {
+ j.write_str("csi-SubframeSet2ForDormantSCell-r17", "supported");
+ }
+ j.end_obj();
+}
+
+// NTN-Parameters-v1720 ::= SEQUENCE
+SRSASN_CODE ntn_params_v1720_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ntn_segmented_precompensation_gaps_r17_present, 1));
+
+ if (ntn_segmented_precompensation_gaps_r17_present) {
+ HANDLE_CODE(ntn_segmented_precompensation_gaps_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ntn_params_v1720_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ntn_segmented_precompensation_gaps_r17_present, 1));
+
+ if (ntn_segmented_precompensation_gaps_r17_present) {
+ HANDLE_CODE(ntn_segmented_precompensation_gaps_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ntn_params_v1720_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ntn_segmented_precompensation_gaps_r17_present) {
+ j.write_str("ntn-SegmentedPrecompensationGaps-r17", ntn_segmented_precompensation_gaps_r17.to_string());
+ }
+ j.end_obj();
+}
+
+const char* ntn_params_v1720_s::ntn_segmented_precompensation_gaps_r17_opts::to_string() const
+{
+ static const char* options[] = {"sym1", "sl1", "sf1"};
+ return convert_enum_idx(options, 3, value, "ntn_params_v1720_s::ntn_segmented_precompensation_gaps_r17_e_");
+}
+
+// UE-EUTRA-Capability-v1730-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v1730_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(phy_layer_params_v1730.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v1730_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(phy_layer_params_v1730.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v1730_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("phyLayerParameters-v1730");
+ phy_layer_params_v1730.to_json(j);
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// IRAT-ParametersNR-v1710 ::= SEQUENCE
+SRSASN_CODE irat_params_nr_v1710_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(extended_band_n77_minus2_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE irat_params_nr_v1710_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(extended_band_n77_minus2_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void irat_params_nr_v1710_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (extended_band_n77_minus2_r17_present) {
+ j.write_str("extendedBand-n77-2-r17", "supported");
+ }
+ j.end_obj();
+}
+
+// NeighCellSI-AcquisitionParameters-v1710 ::= SEQUENCE
+SRSASN_CODE neigh_cell_si_acquisition_params_v1710_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(gnb_id_len_report_nr_en_dc_r17_present, 1));
+ HANDLE_CODE(bref.pack(gnb_id_len_report_nr_no_en_dc_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE neigh_cell_si_acquisition_params_v1710_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(gnb_id_len_report_nr_en_dc_r17_present, 1));
+ HANDLE_CODE(bref.unpack(gnb_id_len_report_nr_no_en_dc_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void neigh_cell_si_acquisition_params_v1710_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (gnb_id_len_report_nr_en_dc_r17_present) {
+ j.write_str("gNB-ID-Length-Reporting-NR-EN-DC-r17", "supported");
+ }
+ if (gnb_id_len_report_nr_no_en_dc_r17_present) {
+ j.write_str("gNB-ID-Length-Reporting-NR-NoEN-DC-r17", "supported");
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-Capability-v1720-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v1720_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(ntn_params_v1720.pack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v1720_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(ntn_params_v1720.unpack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v1720_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("ntn-Parameters-v1720");
+ ntn_params_v1720.to_json(j);
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// IRAT-ParametersNR-v1700 ::= SEQUENCE
+SRSASN_CODE irat_params_nr_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(eutra_minus5_gc_ho_to_nr_tdd_fr2_minus2_r17_present, 1));
+ HANDLE_CODE(bref.pack(eutra_epc_ho_to_nr_tdd_fr2_minus2_r17_present, 1));
+ HANDLE_CODE(bref.pack(ce_eutra_minus5_gc_ho_to_nr_tdd_fr2_minus2_r17_present, 1));
+ HANDLE_CODE(bref.pack(ims_voice_over_nr_fr2_minus2_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE irat_params_nr_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(eutra_minus5_gc_ho_to_nr_tdd_fr2_minus2_r17_present, 1));
+ HANDLE_CODE(bref.unpack(eutra_epc_ho_to_nr_tdd_fr2_minus2_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ce_eutra_minus5_gc_ho_to_nr_tdd_fr2_minus2_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ims_voice_over_nr_fr2_minus2_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void irat_params_nr_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (eutra_minus5_gc_ho_to_nr_tdd_fr2_minus2_r17_present) {
+ j.write_str("eutra-5GC-HO-ToNR-TDD-FR2-2-r17", "supported");
+ }
+ if (eutra_epc_ho_to_nr_tdd_fr2_minus2_r17_present) {
+ j.write_str("eutra-EPC-HO-ToNR-TDD-FR2-2-r17", "supported");
+ }
+ if (ce_eutra_minus5_gc_ho_to_nr_tdd_fr2_minus2_r17_present) {
+ j.write_str("ce-EUTRA-5GC-HO-ToNR-TDD-FR2-2-r17", "supported");
+ }
+ if (ims_voice_over_nr_fr2_minus2_r17_present) {
+ j.write_str("ims-VoiceOverNR-FR2-2-r17", "supported");
+ }
+ j.end_obj();
+}
+
+// NTN-Parameters-r17 ::= SEQUENCE
+SRSASN_CODE ntn_params_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ntn_connect_epc_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_ta_report_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_pur_timer_delay_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_offset_timing_enh_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_scenario_support_r17_present, 1));
+
+ if (ntn_scenario_support_r17_present) {
+ HANDLE_CODE(ntn_scenario_support_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ntn_params_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ntn_connect_epc_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_ta_report_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_pur_timer_delay_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_offset_timing_enh_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_scenario_support_r17_present, 1));
+
+ if (ntn_scenario_support_r17_present) {
+ HANDLE_CODE(ntn_scenario_support_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ntn_params_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ntn_connect_epc_r17_present) {
+ j.write_str("ntn-Connectivity-EPC-r17", "supported");
+ }
+ if (ntn_ta_report_r17_present) {
+ j.write_str("ntn-TA-Report-r17", "supported");
+ }
+ if (ntn_pur_timer_delay_r17_present) {
+ j.write_str("ntn-PUR-TimerDelay-r17", "supported");
+ }
+ if (ntn_offset_timing_enh_r17_present) {
+ j.write_str("ntn-OffsetTimingEnh-r17", "supported");
+ }
+ if (ntn_scenario_support_r17_present) {
+ j.write_str("ntn-ScenarioSupport-r17", ntn_scenario_support_r17.to_string());
+ }
+ j.end_obj();
+}
+
+const char* ntn_params_r17_s::ntn_scenario_support_r17_opts::to_string() const
+{
+ static const char* options[] = {"ngso", "gso"};
+ return convert_enum_idx(options, 2, value, "ntn_params_r17_s::ntn_scenario_support_r17_e_");
+}
+
+// PhyLayerParameters-v1700 ::= SEQUENCE
+SRSASN_CODE phy_layer_params_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ce_cap_v1700_present, 1));
+
+ if (ce_cap_v1700_present) {
+ HANDLE_CODE(bref.pack(ce_cap_v1700.ce_pdsch_minus14_harq_processes_r17_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1700.ce_pdsch_minus14_harq_processes_alt2_r17_present, 1));
+ HANDLE_CODE(bref.pack(ce_cap_v1700.ce_pdsch_max_tbs_r17_present, 1));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE phy_layer_params_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ce_cap_v1700_present, 1));
+
+ if (ce_cap_v1700_present) {
+ HANDLE_CODE(bref.unpack(ce_cap_v1700.ce_pdsch_minus14_harq_processes_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1700.ce_pdsch_minus14_harq_processes_alt2_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ce_cap_v1700.ce_pdsch_max_tbs_r17_present, 1));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void phy_layer_params_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ce_cap_v1700_present) {
+ j.write_fieldname("ce-Capabilities-v1700");
+ j.start_obj();
+ if (ce_cap_v1700.ce_pdsch_minus14_harq_processes_r17_present) {
+ j.write_str("ce-PDSCH-14HARQProcesses-r17", "supported");
+ }
+ if (ce_cap_v1700.ce_pdsch_minus14_harq_processes_alt2_r17_present) {
+ j.write_str("ce-PDSCH-14HARQProcesses-Alt2-r17", "supported");
+ }
+ if (ce_cap_v1700.ce_pdsch_max_tbs_r17_present) {
+ j.write_str("ce-PDSCH-MaxTBS-r17", "supported");
+ }
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// UE-BasedNetwPerfMeasParameters-v1700 ::= SEQUENCE
+SRSASN_CODE ue_based_netw_perf_meas_params_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(logged_meas_idle_event_l1_r17_present, 1));
+ HANDLE_CODE(bref.pack(logged_meas_idle_event_out_of_coverage_r17_present, 1));
+ HANDLE_CODE(bref.pack(logged_meas_uncom_bar_pre_r17_present, 1));
+ HANDLE_CODE(bref.pack(imm_meas_uncom_bar_pre_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_based_netw_perf_meas_params_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(logged_meas_idle_event_l1_r17_present, 1));
+ HANDLE_CODE(bref.unpack(logged_meas_idle_event_out_of_coverage_r17_present, 1));
+ HANDLE_CODE(bref.unpack(logged_meas_uncom_bar_pre_r17_present, 1));
+ HANDLE_CODE(bref.unpack(imm_meas_uncom_bar_pre_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void ue_based_netw_perf_meas_params_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (logged_meas_idle_event_l1_r17_present) {
+ j.write_str("loggedMeasIdleEventL1-r17", "supported");
+ }
+ if (logged_meas_idle_event_out_of_coverage_r17_present) {
+ j.write_str("loggedMeasIdleEventOutOfCoverage-r17", "supported");
+ }
+ if (logged_meas_uncom_bar_pre_r17_present) {
+ j.write_str("loggedMeasUncomBarPre-r17", "supported");
+ }
+ if (imm_meas_uncom_bar_pre_r17_present) {
+ j.write_str("immMeasUncomBarPre-r17", "supported");
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-Capability-v1710-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(neigh_cell_si_acquisition_params_v1710_present, 1));
+ HANDLE_CODE(bref.pack(sl_params_v1710_present, 1));
+ HANDLE_CODE(bref.pack(sidelink_requested_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(irat_params_nr_v1710.pack(bref));
+ if (neigh_cell_si_acquisition_params_v1710_present) {
+ HANDLE_CODE(neigh_cell_si_acquisition_params_v1710.pack(bref));
+ }
+ if (sl_params_v1710_present) {
+ HANDLE_CODE(sl_params_v1710.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(neigh_cell_si_acquisition_params_v1710_present, 1));
+ HANDLE_CODE(bref.unpack(sl_params_v1710_present, 1));
+ HANDLE_CODE(bref.unpack(sidelink_requested_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(irat_params_nr_v1710.unpack(bref));
+ if (neigh_cell_si_acquisition_params_v1710_present) {
+ HANDLE_CODE(neigh_cell_si_acquisition_params_v1710.unpack(bref));
+ }
+ if (sl_params_v1710_present) {
+ HANDLE_CODE(sl_params_v1710.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("irat-ParametersNR-v1710");
+ irat_params_nr_v1710.to_json(j);
+ if (neigh_cell_si_acquisition_params_v1710_present) {
+ j.write_fieldname("neighCellSI-AcquisitionParameters-v1710");
+ neigh_cell_si_acquisition_params_v1710.to_json(j);
+ }
+ if (sl_params_v1710_present) {
+ j.write_fieldname("sl-Parameters-v1710");
+ sl_params_v1710.to_json(j);
+ }
+ if (sidelink_requested_r17_present) {
+ j.write_str("sidelinkRequested-r17", "true");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// Other-Parameters-v1690 ::= SEQUENCE
+SRSASN_CODE other_params_v1690_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ul_rrc_segmentation_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE other_params_v1690_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ul_rrc_segmentation_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void other_params_v1690_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ul_rrc_segmentation_r16_present) {
+ j.write_str("ul-RRC-Segmentation-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-Capability-v1700-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v1700_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(meas_params_v1700_present, 1));
+ HANDLE_CODE(bref.pack(ue_based_netw_perf_meas_params_v1700_present, 1));
+ HANDLE_CODE(bref.pack(ntn_params_r17_present, 1));
+ HANDLE_CODE(bref.pack(irat_params_nr_v1700_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (meas_params_v1700_present) {
+ HANDLE_CODE(meas_params_v1700.pack(bref));
+ }
+ if (ue_based_netw_perf_meas_params_v1700_present) {
+ HANDLE_CODE(ue_based_netw_perf_meas_params_v1700.pack(bref));
+ }
+ HANDLE_CODE(phy_layer_params_v1700.pack(bref));
+ if (ntn_params_r17_present) {
+ HANDLE_CODE(ntn_params_r17.pack(bref));
+ }
+ if (irat_params_nr_v1700_present) {
+ HANDLE_CODE(irat_params_nr_v1700.pack(bref));
+ }
+ HANDLE_CODE(mbms_params_v1700.pack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v1700_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(meas_params_v1700_present, 1));
+ HANDLE_CODE(bref.unpack(ue_based_netw_perf_meas_params_v1700_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_params_r17_present, 1));
+ HANDLE_CODE(bref.unpack(irat_params_nr_v1700_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (meas_params_v1700_present) {
+ HANDLE_CODE(meas_params_v1700.unpack(bref));
+ }
+ if (ue_based_netw_perf_meas_params_v1700_present) {
+ HANDLE_CODE(ue_based_netw_perf_meas_params_v1700.unpack(bref));
+ }
+ HANDLE_CODE(phy_layer_params_v1700.unpack(bref));
+ if (ntn_params_r17_present) {
+ HANDLE_CODE(ntn_params_r17.unpack(bref));
+ }
+ if (irat_params_nr_v1700_present) {
+ HANDLE_CODE(irat_params_nr_v1700.unpack(bref));
+ }
+ HANDLE_CODE(mbms_params_v1700.unpack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v1700_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (meas_params_v1700_present) {
+ j.write_fieldname("measParameters-v1700");
+ meas_params_v1700.to_json(j);
+ }
+ if (ue_based_netw_perf_meas_params_v1700_present) {
+ j.write_fieldname("ue-BasedNetwPerfMeasParameters-v1700");
+ ue_based_netw_perf_meas_params_v1700.to_json(j);
+ }
+ j.write_fieldname("phyLayerParameters-v1700");
+ phy_layer_params_v1700.to_json(j);
+ if (ntn_params_r17_present) {
+ j.write_fieldname("ntn-Parameters-r17");
+ ntn_params_r17.to_json(j);
+ }
+ if (irat_params_nr_v1700_present) {
+ j.write_fieldname("irat-ParametersNR-v1700");
+ irat_params_nr_v1700.to_json(j);
+ }
+ j.write_fieldname("mbms-Parameters-v1700");
+ mbms_params_v1700.to_json(j);
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// IRAT-ParametersNR-v1660 ::= SEQUENCE
+SRSASN_CODE irat_params_nr_v1660_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(extended_band_n77_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE irat_params_nr_v1660_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(extended_band_n77_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void irat_params_nr_v1660_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (extended_band_n77_r16_present) {
+ j.write_str("extendedBand-n77-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-Capability-v1690-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v1690_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(other_params_v1690.pack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v1690_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(other_params_v1690.unpack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v1690_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("other-Parameters-v1690");
+ other_params_v1690.to_json(j);
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// MeasParameters-v1630 ::= SEQUENCE
+SRSASN_CODE meas_params_v1630_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(nr_idle_inactive_beam_meas_fr1_r16_present, 1));
+ HANDLE_CODE(bref.pack(nr_idle_inactive_beam_meas_fr2_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_meas_rss_ded_same_rbs_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_params_v1630_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(nr_idle_inactive_beam_meas_fr1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(nr_idle_inactive_beam_meas_fr2_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_meas_rss_ded_same_rbs_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void meas_params_v1630_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (nr_idle_inactive_beam_meas_fr1_r16_present) {
+ j.write_str("nr-IdleInactiveBeamMeasFR1-r16", "supported");
+ }
+ if (nr_idle_inactive_beam_meas_fr2_r16_present) {
+ j.write_str("nr-IdleInactiveBeamMeasFR2-r16", "supported");
+ }
+ if (ce_meas_rss_ded_same_rbs_r16_present) {
+ j.write_str("ce-MeasRSS-DedicatedSameRBs-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// Other-Parameters-v1650 ::= SEQUENCE
+SRSASN_CODE other_params_v1650_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(mps_prio_ind_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE other_params_v1650_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(mps_prio_ind_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void other_params_v1650_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (mps_prio_ind_r16_present) {
+ j.write_str("mpsPriorityIndication-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-Capability-v1660-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v1660_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(irat_params_nr_v1660.pack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v1660_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(irat_params_nr_v1660.unpack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v1660_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("irat-ParametersNR-v1660");
+ irat_params_nr_v1660.to_json(j);
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// EUTRA-5GC-Parameters-v1610 ::= SEQUENCE
+SRSASN_CODE eutra_minus5_gc_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ce_inactive_state_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_eutra_minus5_gc_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE eutra_minus5_gc_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ce_inactive_state_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_eutra_minus5_gc_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void eutra_minus5_gc_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ce_inactive_state_r16_present) {
+ j.write_str("ce-InactiveState-r16", "supported");
+ }
+ if (ce_eutra_minus5_gc_r16_present) {
+ j.write_str("ce-EUTRA-5GC-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// IRAT-ParametersNR-v1610 ::= SEQUENCE
+SRSASN_CODE irat_params_nr_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(nr_ho_to_en_dc_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_eutra_minus5_gc_ho_to_nr_fdd_fr1_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_eutra_minus5_gc_ho_to_nr_tdd_fr1_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_eutra_minus5_gc_ho_to_nr_fdd_fr2_r16_present, 1));
+ HANDLE_CODE(bref.pack(ce_eutra_minus5_gc_ho_to_nr_tdd_fr2_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE irat_params_nr_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(nr_ho_to_en_dc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_eutra_minus5_gc_ho_to_nr_fdd_fr1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_eutra_minus5_gc_ho_to_nr_tdd_fr1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_eutra_minus5_gc_ho_to_nr_fdd_fr2_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ce_eutra_minus5_gc_ho_to_nr_tdd_fr2_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void irat_params_nr_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (nr_ho_to_en_dc_r16_present) {
+ j.write_str("nr-HO-ToEN-DC-r16", "supported");
+ }
+ if (ce_eutra_minus5_gc_ho_to_nr_fdd_fr1_r16_present) {
+ j.write_str("ce-EUTRA-5GC-HO-ToNR-FDD-FR1-r16", "supported");
+ }
+ if (ce_eutra_minus5_gc_ho_to_nr_tdd_fr1_r16_present) {
+ j.write_str("ce-EUTRA-5GC-HO-ToNR-TDD-FR1-r16", "supported");
+ }
+ if (ce_eutra_minus5_gc_ho_to_nr_fdd_fr2_r16_present) {
+ j.write_str("ce-EUTRA-5GC-HO-ToNR-FDD-FR2-r16", "supported");
+ }
+ if (ce_eutra_minus5_gc_ho_to_nr_tdd_fr2_r16_present) {
+ j.write_str("ce-EUTRA-5GC-HO-ToNR-TDD-FR2-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// MAC-Parameters-v1630 ::= SEQUENCE
+SRSASN_CODE mac_params_v1630_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(direct_scg_scell_activation_nedc_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mac_params_v1630_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(direct_scg_scell_activation_nedc_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void mac_params_v1630_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (direct_scg_scell_activation_nedc_r16_present) {
+ j.write_str("directSCG-SCellActivationNEDC-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// MobilityParameters-v1610 ::= SEQUENCE
+SRSASN_CODE mob_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(cho_r16_present, 1));
+ HANDLE_CODE(bref.pack(cho_fdd_tdd_r16_present, 1));
+ HANDLE_CODE(bref.pack(cho_fail_r16_present, 1));
+ HANDLE_CODE(bref.pack(cho_two_trigger_events_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mob_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(cho_r16_present, 1));
+ HANDLE_CODE(bref.unpack(cho_fdd_tdd_r16_present, 1));
+ HANDLE_CODE(bref.unpack(cho_fail_r16_present, 1));
+ HANDLE_CODE(bref.unpack(cho_two_trigger_events_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void mob_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (cho_r16_present) {
+ j.write_str("cho-r16", "supported");
+ }
+ if (cho_fdd_tdd_r16_present) {
+ j.write_str("cho-FDD-TDD-r16", "supported");
+ }
+ if (cho_fail_r16_present) {
+ j.write_str("cho-Failure-r16", "supported");
+ }
+ if (cho_two_trigger_events_r16_present) {
+ j.write_str("cho-TwoTriggerEvents-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// NeighCellSI-AcquisitionParameters-v1610 ::= SEQUENCE
+SRSASN_CODE neigh_cell_si_acquisition_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(eutra_si_acquisition_for_ho_endc_r16_present, 1));
+ HANDLE_CODE(bref.pack(nr_autonomous_gaps_endc_fr1_r16_present, 1));
+ HANDLE_CODE(bref.pack(nr_autonomous_gaps_endc_fr2_r16_present, 1));
+ HANDLE_CODE(bref.pack(nr_autonomous_gaps_fr1_r16_present, 1));
+ HANDLE_CODE(bref.pack(nr_autonomous_gaps_fr2_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE neigh_cell_si_acquisition_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(eutra_si_acquisition_for_ho_endc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(nr_autonomous_gaps_endc_fr1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(nr_autonomous_gaps_endc_fr2_r16_present, 1));
+ HANDLE_CODE(bref.unpack(nr_autonomous_gaps_fr1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(nr_autonomous_gaps_fr2_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void neigh_cell_si_acquisition_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (eutra_si_acquisition_for_ho_endc_r16_present) {
+ j.write_str("eutra-SI-AcquisitionForHO-ENDC-r16", "supported");
+ }
+ if (nr_autonomous_gaps_endc_fr1_r16_present) {
+ j.write_str("nr-AutonomousGaps-ENDC-FR1-r16", "supported");
+ }
+ if (nr_autonomous_gaps_endc_fr2_r16_present) {
+ j.write_str("nr-AutonomousGaps-ENDC-FR2-r16", "supported");
+ }
+ if (nr_autonomous_gaps_fr1_r16_present) {
+ j.write_str("nr-AutonomousGaps-FR1-r16", "supported");
+ }
+ if (nr_autonomous_gaps_fr2_r16_present) {
+ j.write_str("nr-AutonomousGaps-FR2-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// PUR-Parameters-r16 ::= SEQUENCE
+SRSASN_CODE pur_params_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pur_cp_minus5_gc_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_cp_minus5_gc_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_up_minus5_gc_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_up_minus5_gc_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_cp_epc_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_cp_epc_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_up_epc_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_up_epc_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_cp_l1_ack_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_freq_hop_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_pusch_nb_max_tbs_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_rsrp_validation_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_sub_prb_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_sub_prb_ce_mode_b_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_params_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pur_cp_minus5_gc_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_cp_minus5_gc_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_up_minus5_gc_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_up_minus5_gc_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_cp_epc_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_cp_epc_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_up_epc_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_up_epc_ce_mode_b_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_cp_l1_ack_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_freq_hop_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_pusch_nb_max_tbs_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_rsrp_validation_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_sub_prb_ce_mode_a_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_sub_prb_ce_mode_b_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void pur_params_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pur_cp_minus5_gc_ce_mode_a_r16_present) {
+ j.write_str("pur-CP-5GC-CE-ModeA-r16", "supported");
+ }
+ if (pur_cp_minus5_gc_ce_mode_b_r16_present) {
+ j.write_str("pur-CP-5GC-CE-ModeB-r16", "supported");
+ }
+ if (pur_up_minus5_gc_ce_mode_a_r16_present) {
+ j.write_str("pur-UP-5GC-CE-ModeA-r16", "supported");
+ }
+ if (pur_up_minus5_gc_ce_mode_b_r16_present) {
+ j.write_str("pur-UP-5GC-CE-ModeB-r16", "supported");
+ }
+ if (pur_cp_epc_ce_mode_a_r16_present) {
+ j.write_str("pur-CP-EPC-CE-ModeA-r16", "supported");
+ }
+ if (pur_cp_epc_ce_mode_b_r16_present) {
+ j.write_str("pur-CP-EPC-CE-ModeB-r16", "supported");
+ }
+ if (pur_up_epc_ce_mode_a_r16_present) {
+ j.write_str("pur-UP-EPC-CE-ModeA-r16", "supported");
+ }
+ if (pur_up_epc_ce_mode_b_r16_present) {
+ j.write_str("pur-UP-EPC-CE-ModeB-r16", "supported");
+ }
+ if (pur_cp_l1_ack_r16_present) {
+ j.write_str("pur-CP-L1Ack-r16", "supported");
+ }
+ if (pur_freq_hop_r16_present) {
+ j.write_str("pur-FrequencyHopping-r16", "supported");
+ }
+ if (pur_pusch_nb_max_tbs_r16_present) {
+ j.write_str("pur-PUSCH-NB-MaxTBS-r16", "supported");
+ }
+ if (pur_rsrp_validation_r16_present) {
+ j.write_str("pur-RSRP-Validation-r16", "supported");
+ }
+ if (pur_sub_prb_ce_mode_a_r16_present) {
+ j.write_str("pur-SubPRB-CE-ModeA-r16", "supported");
+ }
+ if (pur_sub_prb_ce_mode_b_r16_present) {
+ j.write_str("pur-SubPRB-CE-ModeB-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-Capability-v1650-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v1650_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(other_params_v1650_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (other_params_v1650_present) {
+ HANDLE_CODE(other_params_v1650.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v1650_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(other_params_v1650_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (other_params_v1650_present) {
+ HANDLE_CODE(other_params_v1650.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v1650_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (other_params_v1650_present) {
+ j.write_fieldname("otherParameters-v1650");
+ other_params_v1650.to_json(j);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-CapabilityAddXDD-Mode-v1630 ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_add_xdd_mode_v1630_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(meas_params_v1630.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_add_xdd_mode_v1630_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(meas_params_v1630.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_add_xdd_mode_v1630_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("measParameters-v1630");
+ meas_params_v1630.to_json(j);
+ j.end_obj();
+}
+
+// HighSpeedEnhParameters-v1610 ::= SEQUENCE
+SRSASN_CODE high_speed_enh_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(meas_enhance_scell_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_enhance2_r16_present, 1));
+ HANDLE_CODE(bref.pack(demod_enhance2_r16_present, 1));
+ HANDLE_CODE(bref.pack(inter_rat_enhancement_nr_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE high_speed_enh_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(meas_enhance_scell_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_enhance2_r16_present, 1));
+ HANDLE_CODE(bref.unpack(demod_enhance2_r16_present, 1));
+ HANDLE_CODE(bref.unpack(inter_rat_enhancement_nr_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void high_speed_enh_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (meas_enhance_scell_r16_present) {
+ j.write_str("measurementEnhancementsSCell-r16", "supported");
+ }
+ if (meas_enhance2_r16_present) {
+ j.write_str("measurementEnhancements2-r16", "supported");
+ }
+ if (demod_enhance2_r16_present) {
+ j.write_str("demodulationEnhancements2-r16", "supported");
+ }
+ if (inter_rat_enhancement_nr_r16_present) {
+ j.write_str("interRAT-enhancementNR-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// MAC-Parameters-v1610 ::= SEQUENCE
+SRSASN_CODE mac_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(direct_mcg_scell_activation_resume_r16_present, 1));
+ HANDLE_CODE(bref.pack(direct_scg_scell_activation_resume_r16_present, 1));
+ HANDLE_CODE(bref.pack(early_data_up_minus5_gc_r16_present, 1));
+ HANDLE_CODE(bref.pack(rai_support_enh_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mac_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(direct_mcg_scell_activation_resume_r16_present, 1));
+ HANDLE_CODE(bref.unpack(direct_scg_scell_activation_resume_r16_present, 1));
+ HANDLE_CODE(bref.unpack(early_data_up_minus5_gc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(rai_support_enh_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void mac_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (direct_mcg_scell_activation_resume_r16_present) {
+ j.write_str("directMCG-SCellActivationResume-r16", "supported");
+ }
+ if (direct_scg_scell_activation_resume_r16_present) {
+ j.write_str("directSCG-SCellActivationResume-r16", "supported");
+ }
+ if (early_data_up_minus5_gc_r16_present) {
+ j.write_str("earlyData-UP-5GC-r16", "supported");
+ }
+ if (rai_support_enh_r16_present) {
+ j.write_str("rai-SupportEnh-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// MMTEL-Parameters-v1610 ::= SEQUENCE
+SRSASN_CODE mmtel_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(recommended_bit_rate_multiplier_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mmtel_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(recommended_bit_rate_multiplier_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void mmtel_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (recommended_bit_rate_multiplier_r16_present) {
+ j.write_str("recommendedBitRateMultiplier-r16", "supported");
+ }
+ j.end_obj();
+}
+
// NeighCellSI-AcquisitionParameters-v15a0 ::= SEQUENCE
SRSASN_CODE neigh_cell_si_acquisition_params_v15a0_s::pack(bit_ref& bref) const
{
@@ -8423,6 +11140,129 @@ void neigh_cell_si_acquisition_params_v15a0_s::to_json(json_writer& j) const
j.end_obj();
}
+// Other-Parameters-v1610 ::= SEQUENCE
+SRSASN_CODE other_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(resume_with_stored_mcg_scells_r16_present, 1));
+ HANDLE_CODE(bref.pack(resume_with_mcg_scell_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(resume_with_stored_scg_r16_present, 1));
+ HANDLE_CODE(bref.pack(resume_with_scg_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(mcg_rlf_recovery_via_scg_r16_present, 1));
+ HANDLE_CODE(bref.pack(overheat_ind_for_scg_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE other_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(resume_with_stored_mcg_scells_r16_present, 1));
+ HANDLE_CODE(bref.unpack(resume_with_mcg_scell_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(resume_with_stored_scg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(resume_with_scg_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(mcg_rlf_recovery_via_scg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(overheat_ind_for_scg_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void other_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (resume_with_stored_mcg_scells_r16_present) {
+ j.write_str("resumeWithStoredMCG-SCells-r16", "supported");
+ }
+ if (resume_with_mcg_scell_cfg_r16_present) {
+ j.write_str("resumeWithMCG-SCellConfig-r16", "supported");
+ }
+ if (resume_with_stored_scg_r16_present) {
+ j.write_str("resumeWithStoredSCG-r16", "supported");
+ }
+ if (resume_with_scg_cfg_r16_present) {
+ j.write_str("resumeWithSCG-Config-r16", "supported");
+ }
+ if (mcg_rlf_recovery_via_scg_r16_present) {
+ j.write_str("mcgRLF-RecoveryViaSCG-r16", "supported");
+ }
+ if (overheat_ind_for_scg_r16_present) {
+ j.write_str("overheatingIndForSCG-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// PDCP-Parameters-v1610 ::= SEQUENCE
+SRSASN_CODE pdcp_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pdcp_version_change_without_ho_r16_present, 1));
+ HANDLE_CODE(bref.pack(ehc_r16_present, 1));
+ HANDLE_CODE(bref.pack(continue_ehc_context_r16_present, 1));
+ HANDLE_CODE(bref.pack(max_num_ehc_contexts_r16_present, 1));
+ HANDLE_CODE(bref.pack(joint_ehc_rohc_cfg_r16_present, 1));
+
+ if (max_num_ehc_contexts_r16_present) {
+ HANDLE_CODE(max_num_ehc_contexts_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pdcp_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pdcp_version_change_without_ho_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ehc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(continue_ehc_context_r16_present, 1));
+ HANDLE_CODE(bref.unpack(max_num_ehc_contexts_r16_present, 1));
+ HANDLE_CODE(bref.unpack(joint_ehc_rohc_cfg_r16_present, 1));
+
+ if (max_num_ehc_contexts_r16_present) {
+ HANDLE_CODE(max_num_ehc_contexts_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void pdcp_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pdcp_version_change_without_ho_r16_present) {
+ j.write_str("pdcp-VersionChangeWithoutHO-r16", "supported");
+ }
+ if (ehc_r16_present) {
+ j.write_str("ehc-r16", "supported");
+ }
+ if (continue_ehc_context_r16_present) {
+ j.write_str("continueEHC-Context-r16", "supported");
+ }
+ if (max_num_ehc_contexts_r16_present) {
+ j.write_str("maxNumberEHC-Contexts-r16", max_num_ehc_contexts_r16.to_string());
+ }
+ if (joint_ehc_rohc_cfg_r16_present) {
+ j.write_str("jointEHC-ROHC-Config-r16", "supported");
+ }
+ j.end_obj();
+}
+
+const char* pdcp_params_v1610_s::max_num_ehc_contexts_r16_opts::to_string() const
+{
+ static const char* options[] = {"cs2",
+ "cs4",
+ "cs8",
+ "cs16",
+ "cs32",
+ "cs64",
+ "cs128",
+ "cs256",
+ "cs512",
+ "cs1024",
+ "cs2048",
+ "cs4096",
+ "cs8192",
+ "cs16384",
+ "cs32768",
+ "cs65536"};
+ return convert_enum_idx(options, 16, value, "pdcp_params_v1610_s::max_num_ehc_contexts_r16_e_");
+}
+uint32_t pdcp_params_v1610_s::max_num_ehc_contexts_r16_opts::to_number() const
+{
+ static const uint32_t options[] = {2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536};
+ return map_enum_number(options, 16, value, "pdcp_params_v1610_s::max_num_ehc_contexts_r16_e_");
+}
+
// PhyLayerParameters-v1540 ::= SEQUENCE
SRSASN_CODE phy_layer_params_v1540_s::pack(bit_ref& bref) const
{
@@ -8480,6 +11320,215 @@ void phy_layer_params_v1550_s::to_json(json_writer& j) const
j.end_obj();
}
+// UE-BasedNetwPerfMeasParameters-v1610 ::= SEQUENCE
+SRSASN_CODE ue_based_netw_perf_meas_params_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ul_pdcp_avg_delay_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_based_netw_perf_meas_params_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ul_pdcp_avg_delay_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void ue_based_netw_perf_meas_params_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ul_pdcp_avg_delay_r16_present) {
+ j.write_str("ul-PDCP-AvgDelay-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-Capability-v1630-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v1630_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(rf_params_v1630_present, 1));
+ HANDLE_CODE(bref.pack(sl_params_v1630_present, 1));
+ HANDLE_CODE(bref.pack(early_security_reactivation_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_params_v1630_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (rf_params_v1630_present) {
+ HANDLE_CODE(rf_params_v1630.pack(bref));
+ }
+ if (sl_params_v1630_present) {
+ HANDLE_CODE(sl_params_v1630.pack(bref));
+ }
+ HANDLE_CODE(mac_params_v1630.pack(bref));
+ if (meas_params_v1630_present) {
+ HANDLE_CODE(meas_params_v1630.pack(bref));
+ }
+ HANDLE_CODE(fdd_add_ue_eutra_cap_v1630.pack(bref));
+ HANDLE_CODE(tdd_add_ue_eutra_cap_v1630.pack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v1630_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(rf_params_v1630_present, 1));
+ HANDLE_CODE(bref.unpack(sl_params_v1630_present, 1));
+ HANDLE_CODE(bref.unpack(early_security_reactivation_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_params_v1630_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (rf_params_v1630_present) {
+ HANDLE_CODE(rf_params_v1630.unpack(bref));
+ }
+ if (sl_params_v1630_present) {
+ HANDLE_CODE(sl_params_v1630.unpack(bref));
+ }
+ HANDLE_CODE(mac_params_v1630.unpack(bref));
+ if (meas_params_v1630_present) {
+ HANDLE_CODE(meas_params_v1630.unpack(bref));
+ }
+ HANDLE_CODE(fdd_add_ue_eutra_cap_v1630.unpack(bref));
+ HANDLE_CODE(tdd_add_ue_eutra_cap_v1630.unpack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v1630_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (rf_params_v1630_present) {
+ j.write_fieldname("rf-Parameters-v1630");
+ rf_params_v1630.to_json(j);
+ }
+ if (sl_params_v1630_present) {
+ j.write_fieldname("sl-Parameters-v1630");
+ sl_params_v1630.to_json(j);
+ }
+ if (early_security_reactivation_r16_present) {
+ j.write_str("earlySecurityReactivation-r16", "supported");
+ }
+ j.write_fieldname("mac-Parameters-v1630");
+ mac_params_v1630.to_json(j);
+ if (meas_params_v1630_present) {
+ j.write_fieldname("measParameters-v1630");
+ meas_params_v1630.to_json(j);
+ }
+ j.write_fieldname("fdd-Add-UE-EUTRA-Capabilities-v1630");
+ fdd_add_ue_eutra_cap_v1630.to_json(j);
+ j.write_fieldname("tdd-Add-UE-EUTRA-Capabilities-v1630");
+ tdd_add_ue_eutra_cap_v1630.to_json(j);
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-CapabilityAddXDD-Mode-v1610 ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_add_xdd_mode_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(phy_layer_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(pur_params_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(eutra_minus5_gc_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(irat_params_nr_v1610_present, 1));
+ HANDLE_CODE(bref.pack(neigh_cell_si_acquisition_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(mob_params_v1610_present, 1));
+
+ if (phy_layer_params_v1610_present) {
+ HANDLE_CODE(phy_layer_params_v1610.pack(bref));
+ }
+ if (pur_params_r16_present) {
+ HANDLE_CODE(pur_params_r16.pack(bref));
+ }
+ if (meas_params_v1610_present) {
+ HANDLE_CODE(meas_params_v1610.pack(bref));
+ }
+ if (eutra_minus5_gc_params_v1610_present) {
+ HANDLE_CODE(eutra_minus5_gc_params_v1610.pack(bref));
+ }
+ if (irat_params_nr_v1610_present) {
+ HANDLE_CODE(irat_params_nr_v1610.pack(bref));
+ }
+ if (neigh_cell_si_acquisition_params_v1610_present) {
+ HANDLE_CODE(neigh_cell_si_acquisition_params_v1610.pack(bref));
+ }
+ if (mob_params_v1610_present) {
+ HANDLE_CODE(mob_params_v1610.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_add_xdd_mode_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(phy_layer_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(pur_params_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(eutra_minus5_gc_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(irat_params_nr_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(neigh_cell_si_acquisition_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(mob_params_v1610_present, 1));
+
+ if (phy_layer_params_v1610_present) {
+ HANDLE_CODE(phy_layer_params_v1610.unpack(bref));
+ }
+ if (pur_params_r16_present) {
+ HANDLE_CODE(pur_params_r16.unpack(bref));
+ }
+ if (meas_params_v1610_present) {
+ HANDLE_CODE(meas_params_v1610.unpack(bref));
+ }
+ if (eutra_minus5_gc_params_v1610_present) {
+ HANDLE_CODE(eutra_minus5_gc_params_v1610.unpack(bref));
+ }
+ if (irat_params_nr_v1610_present) {
+ HANDLE_CODE(irat_params_nr_v1610.unpack(bref));
+ }
+ if (neigh_cell_si_acquisition_params_v1610_present) {
+ HANDLE_CODE(neigh_cell_si_acquisition_params_v1610.unpack(bref));
+ }
+ if (mob_params_v1610_present) {
+ HANDLE_CODE(mob_params_v1610.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_add_xdd_mode_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (phy_layer_params_v1610_present) {
+ j.write_fieldname("phyLayerParameters-v1610");
+ phy_layer_params_v1610.to_json(j);
+ }
+ if (pur_params_r16_present) {
+ j.write_fieldname("pur-Parameters-r16");
+ pur_params_r16.to_json(j);
+ }
+ if (meas_params_v1610_present) {
+ j.write_fieldname("measParameters-v1610");
+ meas_params_v1610.to_json(j);
+ }
+ if (eutra_minus5_gc_params_v1610_present) {
+ j.write_fieldname("eutra-5GC-Parameters-v1610");
+ eutra_minus5_gc_params_v1610.to_json(j);
+ }
+ if (irat_params_nr_v1610_present) {
+ j.write_fieldname("irat-ParametersNR-v1610");
+ irat_params_nr_v1610.to_json(j);
+ }
+ if (neigh_cell_si_acquisition_params_v1610_present) {
+ j.write_fieldname("neighCellSI-AcquisitionParameters-v1610");
+ neigh_cell_si_acquisition_params_v1610.to_json(j);
+ }
+ if (mob_params_v1610_present) {
+ j.write_fieldname("mobilityParameters-v1610");
+ mob_params_v1610.to_json(j);
+ }
+ j.end_obj();
+}
+
// EUTRA-5GC-Parameters-r15 ::= SEQUENCE
SRSASN_CODE eutra_minus5_gc_params_r15_s::pack(bit_ref& bref) const
{
@@ -8532,6 +11581,242 @@ void eutra_minus5_gc_params_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// UE-EUTRA-Capability-v1610-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(high_speed_enh_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(neigh_cell_si_acquisition_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(mbms_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(pdcp_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(mac_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(phy_layer_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(meas_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(pur_params_r16_present, 1));
+ HANDLE_CODE(bref.pack(eutra_minus5_gc_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(other_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(dl_ded_msg_segmentation_r16_present, 1));
+ HANDLE_CODE(bref.pack(irat_params_nr_v1610_present, 1));
+ HANDLE_CODE(bref.pack(rf_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(mob_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(sl_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(fdd_add_ue_eutra_cap_v1610_present, 1));
+ HANDLE_CODE(bref.pack(tdd_add_ue_eutra_cap_v1610_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (high_speed_enh_params_v1610_present) {
+ HANDLE_CODE(high_speed_enh_params_v1610.pack(bref));
+ }
+ if (neigh_cell_si_acquisition_params_v1610_present) {
+ HANDLE_CODE(neigh_cell_si_acquisition_params_v1610.pack(bref));
+ }
+ if (mbms_params_v1610_present) {
+ HANDLE_CODE(mbms_params_v1610.pack(bref));
+ }
+ if (pdcp_params_v1610_present) {
+ HANDLE_CODE(pdcp_params_v1610.pack(bref));
+ }
+ if (mac_params_v1610_present) {
+ HANDLE_CODE(mac_params_v1610.pack(bref));
+ }
+ if (phy_layer_params_v1610_present) {
+ HANDLE_CODE(phy_layer_params_v1610.pack(bref));
+ }
+ if (meas_params_v1610_present) {
+ HANDLE_CODE(meas_params_v1610.pack(bref));
+ }
+ if (pur_params_r16_present) {
+ HANDLE_CODE(pur_params_r16.pack(bref));
+ }
+ if (eutra_minus5_gc_params_v1610_present) {
+ HANDLE_CODE(eutra_minus5_gc_params_v1610.pack(bref));
+ }
+ if (other_params_v1610_present) {
+ HANDLE_CODE(other_params_v1610.pack(bref));
+ }
+ HANDLE_CODE(mmtel_params_v1610.pack(bref));
+ if (irat_params_nr_v1610_present) {
+ HANDLE_CODE(irat_params_nr_v1610.pack(bref));
+ }
+ if (rf_params_v1610_present) {
+ HANDLE_CODE(rf_params_v1610.pack(bref));
+ }
+ if (mob_params_v1610_present) {
+ HANDLE_CODE(mob_params_v1610.pack(bref));
+ }
+ HANDLE_CODE(ue_based_netw_perf_meas_params_v1610.pack(bref));
+ if (sl_params_v1610_present) {
+ HANDLE_CODE(sl_params_v1610.pack(bref));
+ }
+ if (fdd_add_ue_eutra_cap_v1610_present) {
+ HANDLE_CODE(fdd_add_ue_eutra_cap_v1610.pack(bref));
+ }
+ if (tdd_add_ue_eutra_cap_v1610_present) {
+ HANDLE_CODE(tdd_add_ue_eutra_cap_v1610.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(high_speed_enh_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(neigh_cell_si_acquisition_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(mbms_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(pdcp_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(mac_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(phy_layer_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(meas_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(pur_params_r16_present, 1));
+ HANDLE_CODE(bref.unpack(eutra_minus5_gc_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(other_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(dl_ded_msg_segmentation_r16_present, 1));
+ HANDLE_CODE(bref.unpack(irat_params_nr_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(rf_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(mob_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(sl_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(fdd_add_ue_eutra_cap_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(tdd_add_ue_eutra_cap_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (high_speed_enh_params_v1610_present) {
+ HANDLE_CODE(high_speed_enh_params_v1610.unpack(bref));
+ }
+ if (neigh_cell_si_acquisition_params_v1610_present) {
+ HANDLE_CODE(neigh_cell_si_acquisition_params_v1610.unpack(bref));
+ }
+ if (mbms_params_v1610_present) {
+ HANDLE_CODE(mbms_params_v1610.unpack(bref));
+ }
+ if (pdcp_params_v1610_present) {
+ HANDLE_CODE(pdcp_params_v1610.unpack(bref));
+ }
+ if (mac_params_v1610_present) {
+ HANDLE_CODE(mac_params_v1610.unpack(bref));
+ }
+ if (phy_layer_params_v1610_present) {
+ HANDLE_CODE(phy_layer_params_v1610.unpack(bref));
+ }
+ if (meas_params_v1610_present) {
+ HANDLE_CODE(meas_params_v1610.unpack(bref));
+ }
+ if (pur_params_r16_present) {
+ HANDLE_CODE(pur_params_r16.unpack(bref));
+ }
+ if (eutra_minus5_gc_params_v1610_present) {
+ HANDLE_CODE(eutra_minus5_gc_params_v1610.unpack(bref));
+ }
+ if (other_params_v1610_present) {
+ HANDLE_CODE(other_params_v1610.unpack(bref));
+ }
+ HANDLE_CODE(mmtel_params_v1610.unpack(bref));
+ if (irat_params_nr_v1610_present) {
+ HANDLE_CODE(irat_params_nr_v1610.unpack(bref));
+ }
+ if (rf_params_v1610_present) {
+ HANDLE_CODE(rf_params_v1610.unpack(bref));
+ }
+ if (mob_params_v1610_present) {
+ HANDLE_CODE(mob_params_v1610.unpack(bref));
+ }
+ HANDLE_CODE(ue_based_netw_perf_meas_params_v1610.unpack(bref));
+ if (sl_params_v1610_present) {
+ HANDLE_CODE(sl_params_v1610.unpack(bref));
+ }
+ if (fdd_add_ue_eutra_cap_v1610_present) {
+ HANDLE_CODE(fdd_add_ue_eutra_cap_v1610.unpack(bref));
+ }
+ if (tdd_add_ue_eutra_cap_v1610_present) {
+ HANDLE_CODE(tdd_add_ue_eutra_cap_v1610.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (high_speed_enh_params_v1610_present) {
+ j.write_fieldname("highSpeedEnhParameters-v1610");
+ high_speed_enh_params_v1610.to_json(j);
+ }
+ if (neigh_cell_si_acquisition_params_v1610_present) {
+ j.write_fieldname("neighCellSI-AcquisitionParameters-v1610");
+ neigh_cell_si_acquisition_params_v1610.to_json(j);
+ }
+ if (mbms_params_v1610_present) {
+ j.write_fieldname("mbms-Parameters-v1610");
+ mbms_params_v1610.to_json(j);
+ }
+ if (pdcp_params_v1610_present) {
+ j.write_fieldname("pdcp-Parameters-v1610");
+ pdcp_params_v1610.to_json(j);
+ }
+ if (mac_params_v1610_present) {
+ j.write_fieldname("mac-Parameters-v1610");
+ mac_params_v1610.to_json(j);
+ }
+ if (phy_layer_params_v1610_present) {
+ j.write_fieldname("phyLayerParameters-v1610");
+ phy_layer_params_v1610.to_json(j);
+ }
+ if (meas_params_v1610_present) {
+ j.write_fieldname("measParameters-v1610");
+ meas_params_v1610.to_json(j);
+ }
+ if (pur_params_r16_present) {
+ j.write_fieldname("pur-Parameters-r16");
+ pur_params_r16.to_json(j);
+ }
+ if (eutra_minus5_gc_params_v1610_present) {
+ j.write_fieldname("eutra-5GC-Parameters-v1610");
+ eutra_minus5_gc_params_v1610.to_json(j);
+ }
+ if (other_params_v1610_present) {
+ j.write_fieldname("otherParameters-v1610");
+ other_params_v1610.to_json(j);
+ }
+ if (dl_ded_msg_segmentation_r16_present) {
+ j.write_str("dl-DedicatedMessageSegmentation-r16", "supported");
+ }
+ j.write_fieldname("mmtel-Parameters-v1610");
+ mmtel_params_v1610.to_json(j);
+ if (irat_params_nr_v1610_present) {
+ j.write_fieldname("irat-ParametersNR-v1610");
+ irat_params_nr_v1610.to_json(j);
+ }
+ if (rf_params_v1610_present) {
+ j.write_fieldname("rf-Parameters-v1610");
+ rf_params_v1610.to_json(j);
+ }
+ if (mob_params_v1610_present) {
+ j.write_fieldname("mobilityParameters-v1610");
+ mob_params_v1610.to_json(j);
+ }
+ j.write_fieldname("ue-BasedNetwPerfMeasParameters-v1610");
+ ue_based_netw_perf_meas_params_v1610.to_json(j);
+ if (sl_params_v1610_present) {
+ j.write_fieldname("sl-Parameters-v1610");
+ sl_params_v1610.to_json(j);
+ }
+ if (fdd_add_ue_eutra_cap_v1610_present) {
+ j.write_fieldname("fdd-Add-UE-EUTRA-Capabilities-v1610");
+ fdd_add_ue_eutra_cap_v1610.to_json(j);
+ }
+ if (tdd_add_ue_eutra_cap_v1610_present) {
+ j.write_fieldname("tdd-Add-UE-EUTRA-Capabilities-v1610");
+ tdd_add_ue_eutra_cap_v1610.to_json(j);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// UE-EUTRA-CapabilityAddXDD-Mode-v15a0 ::= SEQUENCE
SRSASN_CODE ue_eutra_cap_add_xdd_mode_v15a0_s::pack(bit_ref& bref) const
{
@@ -8697,6 +11982,9 @@ SRSASN_CODE ue_eutra_cap_v15a0_ies_s::pack(bit_ref& bref) const
if (tdd_add_ue_eutra_cap_v15a0_present) {
HANDLE_CODE(tdd_add_ue_eutra_cap_v15a0.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -8717,6 +12005,9 @@ SRSASN_CODE ue_eutra_cap_v15a0_ies_s::unpack(cbit_ref& bref)
if (tdd_add_ue_eutra_cap_v15a0_present) {
HANDLE_CODE(tdd_add_ue_eutra_cap_v15a0.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -8739,8 +12030,7 @@ void ue_eutra_cap_v15a0_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -11666,7 +14956,7 @@ void mac_params_v1310_s::to_json(json_writer& j) const
SRSASN_CODE meas_params_v1310_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(rs_sinr_meas_r13_present, 1));
- HANDLE_CODE(bref.pack(white_cell_list_r13_present, 1));
+ HANDLE_CODE(bref.pack(allowed_cell_list_r13_present, 1));
HANDLE_CODE(bref.pack(extended_max_obj_id_r13_present, 1));
HANDLE_CODE(bref.pack(ul_pdcp_delay_r13_present, 1));
HANDLE_CODE(bref.pack(extended_freq_priorities_r13_present, 1));
@@ -11678,7 +14968,7 @@ SRSASN_CODE meas_params_v1310_s::pack(bit_ref& bref) const
SRSASN_CODE meas_params_v1310_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(rs_sinr_meas_r13_present, 1));
- HANDLE_CODE(bref.unpack(white_cell_list_r13_present, 1));
+ HANDLE_CODE(bref.unpack(allowed_cell_list_r13_present, 1));
HANDLE_CODE(bref.unpack(extended_max_obj_id_r13_present, 1));
HANDLE_CODE(bref.unpack(ul_pdcp_delay_r13_present, 1));
HANDLE_CODE(bref.unpack(extended_freq_priorities_r13_present, 1));
@@ -11693,8 +14983,8 @@ void meas_params_v1310_s::to_json(json_writer& j) const
if (rs_sinr_meas_r13_present) {
j.write_str("rs-SINR-Meas-r13", "supported");
}
- if (white_cell_list_r13_present) {
- j.write_str("whiteCellList-r13", "supported");
+ if (allowed_cell_list_r13_present) {
+ j.write_str("allowedCellList-r13", "supported");
}
if (extended_max_obj_id_r13_present) {
j.write_str("extendedMaxObjectId-r13", "supported");
@@ -13995,13 +17285,14 @@ void ue_eutra_cap_v940_ies_s::to_json(json_writer& j) const
// AccessStratumRelease ::= ENUMERATED
const char* access_stratum_release_opts::to_string() const
{
- static const char* options[] = {"rel8", "rel9", "rel10", "rel11", "rel12", "rel13", "rel14", "rel15"};
- return convert_enum_idx(options, 8, value, "access_stratum_release_e");
+ static const char* options[] = {
+ "rel8", "rel9", "rel10", "rel11", "rel12", "rel13", "rel14", "rel15", "rel16", "rel17"};
+ return convert_enum_idx(options, 10, value, "access_stratum_release_e");
}
uint8_t access_stratum_release_opts::to_number() const
{
- static const uint8_t options[] = {8, 9, 10, 11, 12, 13, 14, 15};
- return map_enum_number(options, 8, value, "access_stratum_release_e");
+ static const uint8_t options[] = {8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
+ return map_enum_number(options, 10, value, "access_stratum_release_e");
}
// PhyLayerParameters ::= SEQUENCE
@@ -14258,6 +17549,153 @@ void ue_eutra_cap_s::to_json(json_writer& j) const
j.end_obj();
}
+// MeasParameters-v16c0 ::= SEQUENCE
+SRSASN_CODE meas_params_v16c0_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(nr_cell_individual_offset_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_params_v16c0_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(nr_cell_individual_offset_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void meas_params_v16c0_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (nr_cell_individual_offset_r16_present) {
+ j.write_str("nr-CellIndividualOffset-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-Capability-v16c0-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v16c0_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(meas_params_v16c0.pack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v16c0_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(meas_params_v16c0.unpack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v16c0_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("measParameters-v16c0");
+ meas_params_v16c0.to_json(j);
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-Capability-v15x0-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v15x0_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v15x0_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v15x0_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// UE-EUTRA-Capability-v14x0-IEs ::= SEQUENCE
+SRSASN_CODE ue_eutra_cap_v14x0_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_eutra_cap_v14x0_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_eutra_cap_v14x0_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// PhyLayerParameters-v14a0 ::= SEQUENCE
SRSASN_CODE phy_layer_params_v14a0_s::pack(bit_ref& bref) const
{
@@ -14289,6 +17727,9 @@ SRSASN_CODE ue_eutra_cap_v14b0_ies_s::pack(bit_ref& bref) const
if (rf_params_v14b0_present) {
HANDLE_CODE(rf_params_v14b0.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -14300,6 +17741,9 @@ SRSASN_CODE ue_eutra_cap_v14b0_ies_s::unpack(cbit_ref& bref)
if (rf_params_v14b0_present) {
HANDLE_CODE(rf_params_v14b0.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -14312,8 +17756,7 @@ void ue_eutra_cap_v14b0_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
diff --git a/lib/src/asn1/rrc/ul_ccch_msg.cc b/lib/src/asn1/rrc/ul_ccch_msg.cc
index cb9396ab2..59cd811f9 100644
--- a/lib/src/asn1/rrc/ul_ccch_msg.cc
+++ b/lib/src/asn1/rrc/ul_ccch_msg.cc
@@ -20,6 +20,41 @@ using namespace asn1::rrc;
* 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
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");
}
-// EstablishmentCause-5GC ::= ENUMERATED
-const char* establishment_cause_minus5_gc_opts::to_string() const
+// EstablishmentCause-5GC-r15 ::= ENUMERATED
+const char* establishment_cause_minus5_gc_r15_opts::to_string() const
{
static const char* options[] = {
"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
@@ -171,8 +206,8 @@ SRSASN_CODE init_ue_id_c::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
-// InitialUE-Identity-5GC ::= CHOICE
-void init_ue_id_minus5_gc_c::destroy_()
+// InitialUE-Identity-5GC-r15 ::= CHOICE
+void init_ue_id_minus5_gc_r15_c::destroy_()
{
switch (type_) {
case types::ng_minus5_g_s_tmsi_part1:
@@ -185,7 +220,7 @@ void init_ue_id_minus5_gc_c::destroy_()
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_();
type_ = e;
@@ -199,10 +234,10 @@ void init_ue_id_minus5_gc_c::set(types::options e)
case types::nulltype:
break;
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();
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:
break;
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) {
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:
break;
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;
}
-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);
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);
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();
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());
break;
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();
}
-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);
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));
break;
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_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;
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));
break;
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_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) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
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) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
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) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -379,7 +419,7 @@ const char* resume_cause_opts::to_string() const
"mo-Data",
"delayTolerantAccess-v1020",
"mo-VoiceCall-v1280",
- "spare1"};
+ "mt-EDT-v1610"};
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
SRSASN_CODE rrc_conn_request_minus5_gc_r15_ies_s::pack(bit_ref& bref) const
{
- HANDLE_CODE(ue_id.pack(bref));
- HANDLE_CODE(establishment_cause.pack(bref));
+ HANDLE_CODE(ue_id_r15.pack(bref));
+ HANDLE_CODE(establishment_cause_r15.pack(bref));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_conn_request_minus5_gc_r15_ies_s::unpack(cbit_ref& bref)
{
- HANDLE_CODE(ue_id.unpack(bref));
- HANDLE_CODE(establishment_cause.unpack(bref));
+ HANDLE_CODE(ue_id_r15.unpack(bref));
+ HANDLE_CODE(establishment_cause_r15.unpack(bref));
HANDLE_CODE(spare.unpack(bref));
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
{
j.start_obj();
- j.write_fieldname("ue-Identity");
- ue_id.to_json(j);
- j.write_str("establishmentCause", establishment_cause.to_string());
+ j.write_fieldname("ue-Identity-r15");
+ ue_id_r15.to_json(j);
+ j.write_str("establishmentCause-r15", establishment_cause_r15.to_string());
j.write_str("spare", spare.to_string());
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;
}
+// 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
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();
}
+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)
{
+ destroy_();
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()
{
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);
+ return c.get<crit_exts_future_c_>();
}
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_) {
case types::rrc_early_data_request_r15:
j.write_fieldname("rrcEarlyDataRequest-r15");
- c.to_json(j);
+ c.get<rrc_early_data_request_r15_ies_s>().to_json(j);
break;
case types::crit_exts_future:
+ j.write_fieldname("criticalExtensionsFuture");
+ c.get<crit_exts_future_c_>().to_json(j);
break;
default:
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);
switch (type_) {
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;
case types::crit_exts_future:
+ HANDLE_CODE(c.get<crit_exts_future_c_>().pack(bref));
break;
default:
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);
switch (type_) {
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;
case types::crit_exts_future:
+ HANDLE_CODE(c.get<crit_exts_future_c_>().unpack(bref));
break;
default:
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;
}
+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
void ul_ccch_msg_type_c::destroy_()
{
diff --git a/lib/src/asn1/rrc/ul_dcch_msg.cc b/lib/src/asn1/rrc/ul_dcch_msg.cc
index f9eb9d753..9a3e9fae7 100644
--- a/lib/src/asn1/rrc/ul_dcch_msg.cc
+++ b/lib/src/asn1/rrc/ul_dcch_msg.cc
@@ -168,6 +168,223 @@ SRSASN_CODE tmgi_r9_s::plmn_id_r9_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// GNSS-ValidityDuration-r17 ::= ENUMERATED
+const char* gnss_validity_dur_r17_opts::to_string() const
+{
+ static const char* options[] = {"s10",
+ "s20",
+ "s30",
+ "s40",
+ "s50",
+ "s60",
+ "min5",
+ "min10",
+ "min15",
+ "min20",
+ "min25",
+ "min30",
+ "min50",
+ "min90",
+ "min120",
+ "infinity"};
+ return convert_enum_idx(options, 16, value, "gnss_validity_dur_r17_e");
+}
+
+// RRCConnectionSetupComplete-v1710-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_setup_complete_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_setup_complete_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_setup_complete_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (gnss_validity_dur_r17_present) {
+ j.write_str("gnss-ValidityDuration-r17", gnss_validity_dur_r17.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// RRCConnectionSetupComplete-v1690-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_setup_complete_v1690_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ul_rrc_segmentation_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_setup_complete_v1690_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ul_rrc_segmentation_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_setup_complete_v1690_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ul_rrc_segmentation_r16_present) {
+ j.write_str("ul-RRC-Segmentation-r16", "true");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// ResultsPerSSB-IndexIdle-r16 ::= SEQUENCE
+SRSASN_CODE results_per_ssb_idx_idle_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ssb_results_r16_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, ssb_idx_r16, (uint8_t)0u, (uint8_t)63u));
+ if (ssb_results_r16_present) {
+ HANDLE_CODE(bref.pack(ssb_results_r16.ssb_rsrp_result_r16_present, 1));
+ HANDLE_CODE(bref.pack(ssb_results_r16.ssb_rsrq_result_r16_present, 1));
+ if (ssb_results_r16.ssb_rsrp_result_r16_present) {
+ HANDLE_CODE(pack_integer(bref, ssb_results_r16.ssb_rsrp_result_r16, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (ssb_results_r16.ssb_rsrq_result_r16_present) {
+ HANDLE_CODE(pack_integer(bref, ssb_results_r16.ssb_rsrq_result_r16, (uint8_t)0u, (uint8_t)127u));
+ }
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE results_per_ssb_idx_idle_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ssb_results_r16_present, 1));
+
+ HANDLE_CODE(unpack_integer(ssb_idx_r16, bref, (uint8_t)0u, (uint8_t)63u));
+ if (ssb_results_r16_present) {
+ HANDLE_CODE(bref.unpack(ssb_results_r16.ssb_rsrp_result_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ssb_results_r16.ssb_rsrq_result_r16_present, 1));
+ if (ssb_results_r16.ssb_rsrp_result_r16_present) {
+ HANDLE_CODE(unpack_integer(ssb_results_r16.ssb_rsrp_result_r16, bref, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (ssb_results_r16.ssb_rsrq_result_r16_present) {
+ HANDLE_CODE(unpack_integer(ssb_results_r16.ssb_rsrq_result_r16, bref, (uint8_t)0u, (uint8_t)127u));
+ }
+ }
+
+ return SRSASN_SUCCESS;
+}
+void results_per_ssb_idx_idle_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("ssb-Index-r16", ssb_idx_r16);
+ if (ssb_results_r16_present) {
+ j.write_fieldname("ssb-Results-r16");
+ j.start_obj();
+ if (ssb_results_r16.ssb_rsrp_result_r16_present) {
+ j.write_int("ssb-RSRP-Result-r16", ssb_results_r16.ssb_rsrp_result_r16);
+ }
+ if (ssb_results_r16.ssb_rsrq_result_r16_present) {
+ j.write_int("ssb-RSRQ-Result-r16", ssb_results_r16.ssb_rsrq_result_r16);
+ }
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// RRCConnectionSetupComplete-v1610-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_setup_complete_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(rlos_request_r16_present, 1));
+ 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(pur_cfg_id_r16_present, 1));
+ HANDLE_CODE(bref.pack(lte_m_r16_present, 1));
+ HANDLE_CODE(bref.pack(iab_node_ind_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (pur_cfg_id_r16_present) {
+ HANDLE_CODE(pur_cfg_id_r16.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_setup_complete_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(rlos_request_r16_present, 1));
+ 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(pur_cfg_id_r16_present, 1));
+ HANDLE_CODE(bref.unpack(lte_m_r16_present, 1));
+ HANDLE_CODE(bref.unpack(iab_node_ind_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (pur_cfg_id_r16_present) {
+ HANDLE_CODE(pur_cfg_id_r16.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_setup_complete_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (rlos_request_r16_present) {
+ j.write_str("rlos-Request-r16", "true");
+ }
+ 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 (pur_cfg_id_r16_present) {
+ j.write_str("pur-ConfigID-r16", pur_cfg_id_r16.to_string());
+ }
+ if (lte_m_r16_present) {
+ j.write_str("lte-M-r16", "true");
+ }
+ if (iab_node_ind_r16_present) {
+ j.write_str("iab-NodeIndication-r16", "true");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// MeasResultIdleEUTRA-r15 ::= SEQUENCE
SRSASN_CODE meas_result_idle_eutra_r15_s::pack(bit_ref& bref) const
{
@@ -202,6 +419,105 @@ void meas_result_idle_eutra_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// MeasResultsPerCellIdleNR-r16 ::= SEQUENCE
+SRSASN_CODE meas_results_per_cell_idle_nr_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(pack_integer(bref, pci_nr_r16, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(bref.pack(meas_idle_result_nr_r16.rsrp_result_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_idle_result_nr_r16.rsrq_result_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_idle_result_nr_r16.result_rs_idx_list_r16_present, 1));
+ if (meas_idle_result_nr_r16.rsrp_result_nr_r16_present) {
+ HANDLE_CODE(pack_integer(bref, meas_idle_result_nr_r16.rsrp_result_nr_r16, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (meas_idle_result_nr_r16.rsrq_result_nr_r16_present) {
+ HANDLE_CODE(pack_integer(bref, meas_idle_result_nr_r16.rsrq_result_nr_r16, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (meas_idle_result_nr_r16.result_rs_idx_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_idle_result_nr_r16.result_rs_idx_list_r16, 1, 32));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_results_per_cell_idle_nr_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(unpack_integer(pci_nr_r16, bref, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(bref.unpack(meas_idle_result_nr_r16.rsrp_result_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_idle_result_nr_r16.rsrq_result_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_idle_result_nr_r16.result_rs_idx_list_r16_present, 1));
+ if (meas_idle_result_nr_r16.rsrp_result_nr_r16_present) {
+ HANDLE_CODE(unpack_integer(meas_idle_result_nr_r16.rsrp_result_nr_r16, bref, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (meas_idle_result_nr_r16.rsrq_result_nr_r16_present) {
+ HANDLE_CODE(unpack_integer(meas_idle_result_nr_r16.rsrq_result_nr_r16, bref, (uint8_t)0u, (uint8_t)127u));
+ }
+ if (meas_idle_result_nr_r16.result_rs_idx_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_idle_result_nr_r16.result_rs_idx_list_r16, bref, 1, 32));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void meas_results_per_cell_idle_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("physCellIdNR-r16", pci_nr_r16);
+ j.write_fieldname("measIdleResultNR-r16");
+ j.start_obj();
+ if (meas_idle_result_nr_r16.rsrp_result_nr_r16_present) {
+ j.write_int("rsrpResultNR-r16", meas_idle_result_nr_r16.rsrp_result_nr_r16);
+ }
+ if (meas_idle_result_nr_r16.rsrq_result_nr_r16_present) {
+ j.write_int("rsrqResultNR-r16", meas_idle_result_nr_r16.rsrq_result_nr_r16);
+ }
+ if (meas_idle_result_nr_r16.result_rs_idx_list_r16_present) {
+ j.start_array("resultRS-IndexList-r16");
+ for (const auto& e1 : meas_idle_result_nr_r16.result_rs_idx_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+ j.end_obj();
+}
+
+// RRCConnectionReconfigurationComplete-v1710-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_recfg_complete_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_recfg_complete_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_recfg_complete_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (gnss_validity_dur_r17_present) {
+ j.write_str("gnss-ValidityDuration-r17", gnss_validity_dur_r17.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// RRCConnectionSetupComplete-v1540-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_setup_complete_v1540_ies_s::pack(bit_ref& bref) const
{
@@ -212,6 +528,9 @@ SRSASN_CODE rrc_conn_setup_complete_v1540_ies_s::pack(bit_ref& bref) const
if (guami_type_r15_present) {
HANDLE_CODE(guami_type_r15.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -224,6 +543,9 @@ SRSASN_CODE rrc_conn_setup_complete_v1540_ies_s::unpack(cbit_ref& bref)
if (guami_type_r15_present) {
HANDLE_CODE(guami_type_r15.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -238,8 +560,7 @@ void rrc_conn_setup_complete_v1540_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -412,6 +733,77 @@ SRSASN_CODE s_nssai_r15_c::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// MeasResultIdleNR-r16 ::= SEQUENCE
+SRSASN_CODE meas_result_idle_nr_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(pack_integer(bref, carrier_freq_nr_r16, (uint32_t)0u, (uint32_t)3279165u));
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_results_per_cell_list_idle_nr_r16, 1, 8));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_result_idle_nr_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(unpack_integer(carrier_freq_nr_r16, bref, (uint32_t)0u, (uint32_t)3279165u));
+ HANDLE_CODE(unpack_dyn_seq_of(meas_results_per_cell_list_idle_nr_r16, bref, 1, 8));
+
+ return SRSASN_SUCCESS;
+}
+void meas_result_idle_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("carrierFreqNR-r16", carrier_freq_nr_r16);
+ j.start_array("measResultsPerCellListIdleNR-r16");
+ for (const auto& e1 : meas_results_per_cell_list_idle_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.end_obj();
+}
+
+// RRCConnectionReconfigurationComplete-v1700-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_recfg_complete_v1700_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(sel_cond_recfg_to_apply_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (sel_cond_recfg_to_apply_r17_present) {
+ HANDLE_CODE(pack_integer(bref, sel_cond_recfg_to_apply_r17, (uint8_t)1u, (uint8_t)8u));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_recfg_complete_v1700_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(sel_cond_recfg_to_apply_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (sel_cond_recfg_to_apply_r17_present) {
+ HANDLE_CODE(unpack_integer(sel_cond_recfg_to_apply_r17, bref, (uint8_t)1u, (uint8_t)8u));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_recfg_complete_v1700_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (sel_cond_recfg_to_apply_r17_present) {
+ j.write_int("selectedCondReconfigurationToApply-r17", sel_cond_recfg_to_apply_r17);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// RRCConnectionSetupComplete-v1530-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_setup_complete_v1530_ies_s::pack(bit_ref& bref) const
{
@@ -708,6 +1100,26 @@ SRSASN_CODE meas_result_idle_r15_s::meas_result_neigh_cells_r15_c_::unpack(cbit_
return SRSASN_SUCCESS;
}
+// OverheatingAssistance-v1710 ::= SEQUENCE
+SRSASN_CODE overheat_assist_v1710_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(overheat_assist_for_scg_fr2_minus2_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE overheat_assist_v1710_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(overheat_assist_for_scg_fr2_minus2_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void overheat_assist_v1710_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("overheatingAssistanceForSCG-FR2-2-r17", overheat_assist_for_scg_fr2_minus2_r17.to_string());
+ j.end_obj();
+}
+
// PerCC-GapIndication-r14 ::= SEQUENCE
SRSASN_CODE per_cc_gap_ind_r14_s::pack(bit_ref& bref) const
{
@@ -737,6 +1149,29 @@ const char* per_cc_gap_ind_r14_s::gap_ind_r14_opts::to_string() const
return convert_enum_idx(options, 3, value, "per_cc_gap_ind_r14_s::gap_ind_r14_e_");
}
+// RACH-Report-v1610 ::= SEQUENCE
+SRSASN_CODE rach_report_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, init_cel_r16, (uint8_t)0u, (uint8_t)3u));
+ HANDLE_CODE(bref.pack(edt_fallback_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rach_report_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(init_cel_r16, bref, (uint8_t)0u, (uint8_t)3u));
+ HANDLE_CODE(bref.unpack(edt_fallback_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+void rach_report_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("initialCEL-r16", init_cel_r16);
+ j.write_bool("edt-Fallback-r16", edt_fallback_r16);
+ j.end_obj();
+}
+
// RRCConnectionReconfigurationComplete-v1530-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_recfg_complete_v1530_ies_s::pack(bit_ref& bref) const
{
@@ -745,6 +1180,10 @@ SRSASN_CODE rrc_conn_recfg_complete_v1530_ies_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(flight_path_info_available_r15_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_conn_recfg_complete_v1530_ies_s::unpack(cbit_ref& bref)
@@ -754,6 +1193,10 @@ SRSASN_CODE rrc_conn_recfg_complete_v1530_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(flight_path_info_available_r15_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
return SRSASN_SUCCESS;
}
void rrc_conn_recfg_complete_v1530_ies_s::to_json(json_writer& j) const
@@ -770,6 +1213,42 @@ void rrc_conn_recfg_complete_v1530_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// RRCConnectionReestablishmentComplete-v1710-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_reest_complete_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_reest_complete_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_reest_complete_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (gnss_validity_dur_r17_present) {
+ j.write_str("gnss-ValidityDuration-r17", gnss_validity_dur_r17.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
@@ -818,6 +1297,43 @@ void rrc_conn_setup_complete_v1430_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// UEInformationResponse-v1710-IEs ::= SEQUENCE
+SRSASN_CODE ue_info_resp_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(coarse_location_info_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (coarse_location_info_r17_present) {
+ HANDLE_CODE(coarse_location_info_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_info_resp_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(coarse_location_info_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (coarse_location_info_r17_present) {
+ HANDLE_CODE(coarse_location_info_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_info_resp_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (coarse_location_info_r17_present) {
+ j.write_str("coarseLocationInfo-r17", coarse_location_info_r17.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// VictimSystemType-r11 ::= SEQUENCE
SRSASN_CODE victim_sys_type_r11_s::pack(bit_ref& bref) const
{
@@ -1159,7 +1675,7 @@ const char* affected_carrier_freq_comb_info_mrdc_r15_s::interference_direction_m
SRSASN_CODE flight_path_info_report_r15_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(flight_path_r15_present, 1));
- HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+ HANDLE_CODE(bref.pack(dummy_present, 1));
if (flight_path_r15_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, flight_path_r15, 1, 20));
@@ -1170,7 +1686,7 @@ SRSASN_CODE flight_path_info_report_r15_s::pack(bit_ref& bref) const
SRSASN_CODE flight_path_info_report_r15_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(flight_path_r15_present, 1));
- HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+ HANDLE_CODE(bref.unpack(dummy_present, 1));
if (flight_path_r15_present) {
HANDLE_CODE(unpack_dyn_seq_of(flight_path_r15, bref, 1, 20));
@@ -1188,8 +1704,8 @@ void flight_path_info_report_r15_s::to_json(json_writer& j) const
}
j.end_array();
}
- if (non_crit_ext_present) {
- j.write_fieldname("nonCriticalExtension");
+ if (dummy_present) {
+ j.write_fieldname("dummy");
j.start_obj();
j.end_obj();
}
@@ -1246,6 +1762,10 @@ SRSASN_CODE rrc_conn_reest_complete_v1530_ies_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(flight_path_info_available_r15_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_conn_reest_complete_v1530_ies_s::unpack(cbit_ref& bref)
@@ -1255,6 +1775,10 @@ SRSASN_CODE rrc_conn_reest_complete_v1530_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(flight_path_info_available_r15_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
return SRSASN_SUCCESS;
}
void rrc_conn_reest_complete_v1530_ies_s::to_json(json_writer& j) const
@@ -1271,8 +1795,7 @@ void rrc_conn_reest_complete_v1530_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -1313,12 +1836,201 @@ void rrc_conn_setup_complete_v1330_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// UEAssistanceInformation-v1710-IEs ::= SEQUENCE
+SRSASN_CODE ueassist_info_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(overheat_assist_v1710_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (overheat_assist_v1710_present) {
+ HANDLE_CODE(overheat_assist_v1710.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ueassist_info_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(overheat_assist_v1710_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (overheat_assist_v1710_present) {
+ HANDLE_CODE(overheat_assist_v1710.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ueassist_info_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (overheat_assist_v1710_present) {
+ j.write_fieldname("overheatingAssistance-v1710");
+ overheat_assist_v1710.to_json(j);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// UEInformationResponse-v1610-IEs ::= SEQUENCE
+SRSASN_CODE ue_info_resp_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(rach_report_v1610_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_list_ext_idle_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_list_idle_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (rach_report_v1610_present) {
+ HANDLE_CODE(rach_report_v1610.pack(bref));
+ }
+ if (meas_result_list_ext_idle_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_list_ext_idle_r16, 1, 5, SeqOfPacker<Packer>(1, 8, Packer())));
+ }
+ if (meas_result_list_idle_nr_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_list_idle_nr_r16, 1, 8));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_info_resp_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(rach_report_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_list_ext_idle_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_list_idle_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (rach_report_v1610_present) {
+ HANDLE_CODE(rach_report_v1610.unpack(bref));
+ }
+ if (meas_result_list_ext_idle_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_list_ext_idle_r16, bref, 1, 5, SeqOfPacker<Packer>(1, 8, Packer())));
+ }
+ if (meas_result_list_idle_nr_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_list_idle_nr_r16, bref, 1, 8));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_info_resp_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (rach_report_v1610_present) {
+ j.write_fieldname("rach-Report-v1610");
+ rach_report_v1610.to_json(j);
+ }
+ if (meas_result_list_ext_idle_r16_present) {
+ j.start_array("measResultListExtIdle-r16");
+ for (const auto& e1 : meas_result_list_ext_idle_r16) {
+ j.start_array();
+ for (const auto& e2 : e1) {
+ e2.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_array();
+ }
+ if (meas_result_list_idle_nr_r16_present) {
+ j.start_array("measResultListIdleNR-r16");
+ for (const auto& e1 : meas_result_list_idle_nr_r16) {
+ 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();
+}
+
+// VictimSystemType-v1610 ::= SEQUENCE
+SRSASN_CODE victim_sys_type_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(navic_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE victim_sys_type_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(navic_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void victim_sys_type_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (navic_r16_present) {
+ j.write_str("navic-r16", "true");
+ }
+ j.end_obj();
+}
+
+// InDeviceCoexIndication-v1610-IEs ::= SEQUENCE
+SRSASN_CODE in_dev_coex_ind_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(victim_sys_type_v1610_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (victim_sys_type_v1610_present) {
+ HANDLE_CODE(victim_sys_type_v1610.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE in_dev_coex_ind_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(victim_sys_type_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (victim_sys_type_v1610_present) {
+ HANDLE_CODE(victim_sys_type_v1610.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void in_dev_coex_ind_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (victim_sys_type_v1610_present) {
+ j.write_fieldname("victimSystemType-v1610");
+ victim_sys_type_v1610.to_json(j);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// MRDC-AssistanceInfo-r15 ::= SEQUENCE
SRSASN_CODE mrdc_assist_info_r15_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_dyn_seq_of(bref, affected_carrier_freq_comb_info_list_mrdc_r15, 1, 128));
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= affected_carrier_freq_comb_info_list_mrdc_v1610.is_present();
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(affected_carrier_freq_comb_info_list_mrdc_v1610.is_present(), 1));
+ if (affected_carrier_freq_comb_info_list_mrdc_v1610.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *affected_carrier_freq_comb_info_list_mrdc_v1610, 1, 128));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
SRSASN_CODE mrdc_assist_info_r15_s::unpack(cbit_ref& bref)
@@ -1326,6 +2038,22 @@ SRSASN_CODE mrdc_assist_info_r15_s::unpack(cbit_ref& bref)
bref.unpack(ext, 1);
HANDLE_CODE(unpack_dyn_seq_of(affected_carrier_freq_comb_info_list_mrdc_r15, bref, 1, 128));
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool affected_carrier_freq_comb_info_list_mrdc_v1610_present;
+ HANDLE_CODE(bref.unpack(affected_carrier_freq_comb_info_list_mrdc_v1610_present, 1));
+ affected_carrier_freq_comb_info_list_mrdc_v1610.set_present(
+ affected_carrier_freq_comb_info_list_mrdc_v1610_present);
+ if (affected_carrier_freq_comb_info_list_mrdc_v1610.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*affected_carrier_freq_comb_info_list_mrdc_v1610, bref, 1, 128));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
void mrdc_assist_info_r15_s::to_json(json_writer& j) const
@@ -1336,6 +2064,35 @@ void mrdc_assist_info_r15_s::to_json(json_writer& j) const
e1.to_json(j);
}
j.end_array();
+ if (ext) {
+ if (affected_carrier_freq_comb_info_list_mrdc_v1610.is_present()) {
+ j.start_array("affectedCarrierFreqCombInfoListMRDC-v1610");
+ for (const auto& e1 : *affected_carrier_freq_comb_info_list_mrdc_v1610) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ }
+ j.end_obj();
+}
+
+// OverheatingAssistance-v1610 ::= SEQUENCE
+SRSASN_CODE overheat_assist_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(overheat_assist_for_scg_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE overheat_assist_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(overheat_assist_for_scg_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void overheat_assist_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("overheatingAssistanceForSCG-r16", overheat_assist_for_scg_r16.to_string());
j.end_obj();
}
@@ -1547,6 +2304,59 @@ void traffic_pattern_info_v1530_s::to_json(json_writer& j) const
j.end_obj();
}
+// UEAssistanceInformation-v1700-IEs ::= SEQUENCE
+SRSASN_CODE ueassist_info_v1700_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ul_data_r17_present, 1));
+ HANDLE_CODE(bref.pack(scg_deactivation_pref_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (scg_deactivation_pref_r17_present) {
+ HANDLE_CODE(scg_deactivation_pref_r17.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ueassist_info_v1700_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ul_data_r17_present, 1));
+ HANDLE_CODE(bref.unpack(scg_deactivation_pref_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (scg_deactivation_pref_r17_present) {
+ HANDLE_CODE(scg_deactivation_pref_r17.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ueassist_info_v1700_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ul_data_r17_present) {
+ j.write_str("uplinkData-r17", "true");
+ }
+ if (scg_deactivation_pref_r17_present) {
+ j.write_str("scg-DeactivationPreference-r17", scg_deactivation_pref_r17.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+const char* ueassist_info_v1700_ies_s::scg_deactivation_pref_r17_opts::to_string() const
+{
+ static const char* options[] = {"scgDeactivationPreferred", "noPreference"};
+ return convert_enum_idx(options, 2, value, "ueassist_info_v1700_ies_s::scg_deactivation_pref_r17_e_");
+}
+
// UEInformationResponse-v1530-IEs ::= SEQUENCE
SRSASN_CODE ue_info_resp_v1530_ies_s::pack(bit_ref& bref) const
{
@@ -1560,6 +2370,9 @@ SRSASN_CODE ue_info_resp_v1530_ies_s::pack(bit_ref& bref) const
if (flight_path_info_report_r15_present) {
HANDLE_CODE(flight_path_info_report_r15.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -1575,6 +2388,9 @@ SRSASN_CODE ue_info_resp_v1530_ies_s::unpack(cbit_ref& bref)
if (flight_path_info_report_r15_present) {
HANDLE_CODE(flight_path_info_report_r15.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -1594,8 +2410,7 @@ void ue_info_resp_v1530_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -1681,6 +2496,9 @@ SRSASN_CODE conn_est_fail_report_r11_s::pack(bit_ref& bref) const
group_flags[1] |= meas_result_failed_cell_v1360_present;
group_flags[2] |= log_meas_result_list_bt_r15.is_present();
group_flags[2] |= log_meas_result_list_wlan_r15.is_present();
+ group_flags[3] |= meas_result_list_nr_r16.is_present();
+ group_flags[4] |= meas_result_list_nr_v1640.is_present();
+ group_flags[4] |= meas_result_list_ext_nr_r16.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -1719,6 +2537,27 @@ SRSASN_CODE conn_est_fail_report_r11_s::pack(bit_ref& bref) const
HANDLE_CODE(pack_dyn_seq_of(bref, *log_meas_result_list_wlan_r15, 1, 32));
}
}
+ if (group_flags[3]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(meas_result_list_nr_r16.is_present(), 1));
+ if (meas_result_list_nr_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *meas_result_list_nr_r16, 1, 8));
+ }
+ }
+ if (group_flags[4]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(meas_result_list_nr_v1640.is_present(), 1));
+ HANDLE_CODE(bref.pack(meas_result_list_ext_nr_r16.is_present(), 1));
+ if (meas_result_list_nr_v1640.is_present()) {
+ HANDLE_CODE(
+ pack_integer(bref, meas_result_list_nr_v1640->carrier_freq_nr_r16, (uint32_t)0u, (uint32_t)3279165u));
+ }
+ if (meas_result_list_ext_nr_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *meas_result_list_ext_nr_r16, 1, 7));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -1765,7 +2604,7 @@ SRSASN_CODE conn_est_fail_report_r11_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(3);
+ ext_groups_unpacker_guard group_flags(5);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -1812,6 +2651,33 @@ SRSASN_CODE conn_est_fail_report_r11_s::unpack(cbit_ref& bref)
HANDLE_CODE(unpack_dyn_seq_of(*log_meas_result_list_wlan_r15, bref, 1, 32));
}
}
+ if (group_flags[3]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool meas_result_list_nr_r16_present;
+ HANDLE_CODE(bref.unpack(meas_result_list_nr_r16_present, 1));
+ meas_result_list_nr_r16.set_present(meas_result_list_nr_r16_present);
+ if (meas_result_list_nr_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*meas_result_list_nr_r16, bref, 1, 8));
+ }
+ }
+ if (group_flags[4]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool meas_result_list_nr_v1640_present;
+ HANDLE_CODE(bref.unpack(meas_result_list_nr_v1640_present, 1));
+ meas_result_list_nr_v1640.set_present(meas_result_list_nr_v1640_present);
+ bool meas_result_list_ext_nr_r16_present;
+ HANDLE_CODE(bref.unpack(meas_result_list_ext_nr_r16_present, 1));
+ meas_result_list_ext_nr_r16.set_present(meas_result_list_ext_nr_r16_present);
+ if (meas_result_list_nr_v1640.is_present()) {
+ HANDLE_CODE(
+ unpack_integer(meas_result_list_nr_v1640->carrier_freq_nr_r16, bref, (uint32_t)0u, (uint32_t)3279165u));
+ }
+ if (meas_result_list_ext_nr_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*meas_result_list_ext_nr_r16, bref, 1, 7));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -1907,6 +2773,26 @@ void conn_est_fail_report_r11_s::to_json(json_writer& j) const
}
j.end_array();
}
+ if (meas_result_list_nr_r16.is_present()) {
+ j.start_array("measResultListNR-r16");
+ for (const auto& e1 : *meas_result_list_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (meas_result_list_nr_v1640.is_present()) {
+ j.write_fieldname("measResultListNR-v1640");
+ j.start_obj();
+ j.write_int("carrierFreqNR-r16", meas_result_list_nr_v1640->carrier_freq_nr_r16);
+ j.end_obj();
+ }
+ if (meas_result_list_ext_nr_r16.is_present()) {
+ j.start_array("measResultListExtNR-r16");
+ for (const auto& e1 : *meas_result_list_ext_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
}
j.end_obj();
}
@@ -1946,6 +2832,9 @@ SRSASN_CODE in_dev_coex_ind_v1530_ies_s::pack(bit_ref& bref) const
if (mrdc_assist_info_r15_present) {
HANDLE_CODE(mrdc_assist_info_r15.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -1957,6 +2846,9 @@ SRSASN_CODE in_dev_coex_ind_v1530_ies_s::unpack(cbit_ref& bref)
if (mrdc_assist_info_r15_present) {
HANDLE_CODE(mrdc_assist_info_r15.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -1969,12 +2861,64 @@ void in_dev_coex_ind_v1530_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
+// MBMS-ROM-Info-r16 ::= SEQUENCE
+SRSASN_CODE mbms_rom_info_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, mbms_rom_freq_r16, (uint32_t)0u, (uint32_t)262143u));
+ HANDLE_CODE(mbms_rom_subcarrier_spacing_r16.pack(bref));
+ HANDLE_CODE(mbms_bw_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mbms_rom_info_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(mbms_rom_freq_r16, bref, (uint32_t)0u, (uint32_t)262143u));
+ HANDLE_CODE(mbms_rom_subcarrier_spacing_r16.unpack(bref));
+ HANDLE_CODE(mbms_bw_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void mbms_rom_info_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("mbms-ROM-Freq-r16", mbms_rom_freq_r16);
+ j.write_str("mbms-ROM-SubcarrierSpacing-r16", mbms_rom_subcarrier_spacing_r16.to_string());
+ j.write_str("mbms-Bandwidth-r16", mbms_bw_r16.to_string());
+ j.end_obj();
+}
+
+const char* mbms_rom_info_r16_s::mbms_rom_subcarrier_spacing_r16_opts::to_string() const
+{
+ static const char* options[] = {"kHz2dot5", "kHz0dot37"};
+ return convert_enum_idx(options, 2, value, "mbms_rom_info_r16_s::mbms_rom_subcarrier_spacing_r16_e_");
+}
+float mbms_rom_info_r16_s::mbms_rom_subcarrier_spacing_r16_opts::to_number() const
+{
+ static const float options[] = {2.5, 0.37};
+ return map_enum_number(options, 2, value, "mbms_rom_info_r16_s::mbms_rom_subcarrier_spacing_r16_e_");
+}
+const char* mbms_rom_info_r16_s::mbms_rom_subcarrier_spacing_r16_opts::to_number_string() const
+{
+ static const char* options[] = {"2.5", "0.37"};
+ return convert_enum_idx(options, 2, value, "mbms_rom_info_r16_s::mbms_rom_subcarrier_spacing_r16_e_");
+}
+
+const char* mbms_rom_info_r16_s::mbms_bw_r16_opts::to_string() const
+{
+ static const char* options[] = {"n6", "n15", "n25", "n50", "n75", "n100"};
+ return convert_enum_idx(options, 6, value, "mbms_rom_info_r16_s::mbms_bw_r16_e_");
+}
+uint8_t mbms_rom_info_r16_s::mbms_bw_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {6, 15, 25, 50, 75, 100};
+ return map_enum_number(options, 6, value, "mbms_rom_info_r16_s::mbms_bw_r16_e_");
+}
+
// RRCConnectionReconfigurationComplete-v1250-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_recfg_complete_v1250_ies_s::pack(bit_ref& bref) const
{
@@ -2161,6 +3105,49 @@ void sl_v2x_comm_tx_res_req_r14_s::to_json(json_writer& j) const
j.end_obj();
}
+// UEAssistanceInformation-v1610-IEs ::= SEQUENCE
+SRSASN_CODE ueassist_info_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(overheat_assist_v1610_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (overheat_assist_v1610_present) {
+ HANDLE_CODE(overheat_assist_v1610.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ueassist_info_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(overheat_assist_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (overheat_assist_v1610_present) {
+ HANDLE_CODE(overheat_assist_v1610.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ueassist_info_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (overheat_assist_v1610_present) {
+ j.write_fieldname("overheatingAssistance-v1610");
+ overheat_assist_v1610.to_json(j);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// UEInformationResponse-v1250-IEs ::= SEQUENCE
SRSASN_CODE ue_info_resp_v1250_ies_s::pack(bit_ref& bref) const
{
@@ -2601,38 +3588,91 @@ void mbms_service_info_r13_s::to_json(json_writer& j) const
j.end_obj();
}
-// MeasResultFreqFailNR-r15 ::= SEQUENCE
-SRSASN_CODE meas_result_freq_fail_nr_r15_s::pack(bit_ref& bref) const
+// MBMSInterestIndication-v1610-IEs ::= SEQUENCE
+SRSASN_CODE mbms_interest_ind_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(mbms_rom_info_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (mbms_rom_info_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, mbms_rom_info_list_r16, 1, 15));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mbms_interest_ind_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(mbms_rom_info_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (mbms_rom_info_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(mbms_rom_info_list_r16, bref, 1, 15));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void mbms_interest_ind_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (mbms_rom_info_list_r16_present) {
+ j.start_array("mbms-ROM-InfoList-r16");
+ for (const auto& e1 : mbms_rom_info_list_r16) {
+ 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();
+}
+
+// MeasResult3EUTRA-r15 ::= SEQUENCE
+SRSASN_CODE meas_result3_eutra_r15_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
- HANDLE_CODE(bref.pack(meas_result_cell_list_r15_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_serving_cell_r15_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_neigh_cell_list_r15_present, 1));
- HANDLE_CODE(pack_integer(bref, carrier_freq_r15, (uint32_t)0u, (uint32_t)3279165u));
- if (meas_result_cell_list_r15_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_cell_list_r15, 1, 8));
+ HANDLE_CODE(pack_integer(bref, carrier_freq_r15, (uint32_t)0u, (uint32_t)262143u));
+ if (meas_result_serving_cell_r15_present) {
+ HANDLE_CODE(meas_result_serving_cell_r15.pack(bref));
+ }
+ if (meas_result_neigh_cell_list_r15_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_neigh_cell_list_r15, 1, 8));
}
return SRSASN_SUCCESS;
}
-SRSASN_CODE meas_result_freq_fail_nr_r15_s::unpack(cbit_ref& bref)
+SRSASN_CODE meas_result3_eutra_r15_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
- HANDLE_CODE(bref.unpack(meas_result_cell_list_r15_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_serving_cell_r15_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_neigh_cell_list_r15_present, 1));
- HANDLE_CODE(unpack_integer(carrier_freq_r15, bref, (uint32_t)0u, (uint32_t)3279165u));
- if (meas_result_cell_list_r15_present) {
- HANDLE_CODE(unpack_dyn_seq_of(meas_result_cell_list_r15, bref, 1, 8));
+ HANDLE_CODE(unpack_integer(carrier_freq_r15, bref, (uint32_t)0u, (uint32_t)262143u));
+ if (meas_result_serving_cell_r15_present) {
+ HANDLE_CODE(meas_result_serving_cell_r15.unpack(bref));
+ }
+ if (meas_result_neigh_cell_list_r15_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_neigh_cell_list_r15, bref, 1, 8));
}
return SRSASN_SUCCESS;
}
-void meas_result_freq_fail_nr_r15_s::to_json(json_writer& j) const
+void meas_result3_eutra_r15_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("carrierFreq-r15", carrier_freq_r15);
- if (meas_result_cell_list_r15_present) {
- j.start_array("measResultCellList-r15");
- for (const auto& e1 : meas_result_cell_list_r15) {
+ if (meas_result_serving_cell_r15_present) {
+ j.write_fieldname("measResultServingCell-r15");
+ meas_result_serving_cell_r15.to_json(j);
+ }
+ if (meas_result_neigh_cell_list_r15_present) {
+ j.start_array("measResultNeighCellList-r15");
+ for (const auto& e1 : meas_result_neigh_cell_list_r15) {
e1.to_json(j);
}
j.end_array();
@@ -2765,6 +3805,43 @@ void rrc_conn_reest_complete_v1020_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// RRCConnectionResumeComplete-v1710-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_resume_complete_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_resume_complete_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_resume_complete_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (gnss_validity_dur_r17_present) {
+ j.write_str("gnss-ValidityDuration-r17", gnss_validity_dur_r17.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// RRCConnectionSetupComplete-v1130-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_setup_complete_v1130_ies_s::pack(bit_ref& bref) const
{
@@ -3295,6 +4372,9 @@ SRSASN_CODE ueassist_info_v1530_ies_s::pack(bit_ref& bref) const
if (sps_assist_info_v1530_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sps_assist_info_v1530.traffic_pattern_info_list_sl_v1530, 1, 8));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -3306,6 +4386,9 @@ SRSASN_CODE ueassist_info_v1530_ies_s::unpack(cbit_ref& bref)
if (sps_assist_info_v1530_present) {
HANDLE_CODE(unpack_dyn_seq_of(sps_assist_info_v1530.traffic_pattern_info_list_sl_v1530, bref, 1, 8));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -3324,8 +4407,7 @@ void ueassist_info_v1530_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -3475,6 +4557,43 @@ const char* bw_pref_r14_s::ul_pref_r14_opts::to_number_string() const
return convert_enum_idx(options, 2, value, "bw_pref_r14_s::ul_pref_r14_e_");
}
+// CellGlobalIdNR-r16 ::= SEQUENCE
+SRSASN_CODE cell_global_id_nr_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(tac_r16_present, 1));
+
+ HANDLE_CODE(plmn_id_r16.pack(bref));
+ HANDLE_CODE(cell_id_r16.pack(bref));
+ if (tac_r16_present) {
+ HANDLE_CODE(tac_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cell_global_id_nr_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(tac_r16_present, 1));
+
+ HANDLE_CODE(plmn_id_r16.unpack(bref));
+ HANDLE_CODE(cell_id_r16.unpack(bref));
+ if (tac_r16_present) {
+ HANDLE_CODE(tac_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void cell_global_id_nr_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("plmn-Identity-r16");
+ plmn_id_r16.to_json(j);
+ j.write_str("cellIdentity-r16", cell_id_r16.to_string());
+ if (tac_r16_present) {
+ j.write_str("trackingAreaCode-r16", tac_r16.to_string());
+ }
+ j.end_obj();
+}
+
// CounterCheckResponse-v1530-IEs ::= SEQUENCE
SRSASN_CODE counter_check_resp_v1530_ies_s::pack(bit_ref& bref) const
{
@@ -3779,6 +4898,9 @@ SRSASN_CODE mbms_interest_ind_v1540_ies_s::pack(bit_ref& bref) const
if (mbms_rom_info_list_r15_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, mbms_rom_info_list_r15, 1, 15));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -3790,6 +4912,9 @@ SRSASN_CODE mbms_interest_ind_v1540_ies_s::unpack(cbit_ref& bref)
if (mbms_rom_info_list_r15_present) {
HANDLE_CODE(unpack_dyn_seq_of(mbms_rom_info_list_r15, bref, 1, 15));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -3805,8 +4930,7 @@ void mbms_interest_ind_v1540_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -3894,6 +5018,97 @@ void rrc_conn_reest_complete_v8a0_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// RRCConnectionResumeComplete-v1610-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_resume_complete_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(meas_result_list_idle_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_list_ext_idle_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_list_idle_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(scg_cfg_resp_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (meas_result_list_idle_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_list_idle_r16, 1, 3));
+ }
+ if (meas_result_list_ext_idle_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_list_ext_idle_r16, 1, 5, SeqOfPacker<Packer>(1, 8, Packer())));
+ }
+ if (meas_result_list_idle_nr_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_list_idle_nr_r16, 1, 8));
+ }
+ if (scg_cfg_resp_nr_r16_present) {
+ HANDLE_CODE(scg_cfg_resp_nr_r16.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_resume_complete_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(meas_result_list_idle_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_list_ext_idle_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_list_idle_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(scg_cfg_resp_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (meas_result_list_idle_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_list_idle_r16, bref, 1, 3));
+ }
+ if (meas_result_list_ext_idle_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_list_ext_idle_r16, bref, 1, 5, SeqOfPacker<Packer>(1, 8, Packer())));
+ }
+ if (meas_result_list_idle_nr_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_list_idle_nr_r16, bref, 1, 8));
+ }
+ if (scg_cfg_resp_nr_r16_present) {
+ HANDLE_CODE(scg_cfg_resp_nr_r16.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_resume_complete_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (meas_result_list_idle_r16_present) {
+ j.start_array("measResultListIdle-r16");
+ for (const auto& e1 : meas_result_list_idle_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (meas_result_list_ext_idle_r16_present) {
+ j.start_array("measResultListExtIdle-r16");
+ for (const auto& e1 : meas_result_list_ext_idle_r16) {
+ j.start_array();
+ for (const auto& e2 : e1) {
+ e2.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_array();
+ }
+ if (meas_result_list_idle_nr_r16_present) {
+ j.start_array("measResultListIdleNR-r16");
+ for (const auto& e1 : meas_result_list_idle_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (scg_cfg_resp_nr_r16_present) {
+ j.write_str("scg-ConfigResponseNR-r16", scg_cfg_resp_nr_r16.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// RRCConnectionSetupComplete-v1020-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_setup_complete_v1020_ies_s::pack(bit_ref& bref) const
{
@@ -4809,6 +6024,182 @@ void counter_check_resp_v8a0_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// FailedLogicalChannelIdentity-r16 ::= SEQUENCE
+SRSASN_CODE failed_lc_ch_id_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(lc_ch_id_r16_present, 1));
+ HANDLE_CODE(bref.pack(lc_ch_id_ext_r16_present, 1));
+
+ HANDLE_CODE(cell_group_ind_r16.pack(bref));
+ if (lc_ch_id_r16_present) {
+ HANDLE_CODE(pack_integer(bref, lc_ch_id_r16, (uint8_t)1u, (uint8_t)10u));
+ }
+ if (lc_ch_id_ext_r16_present) {
+ HANDLE_CODE(pack_integer(bref, lc_ch_id_ext_r16, (uint8_t)32u, (uint8_t)38u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE failed_lc_ch_id_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(lc_ch_id_r16_present, 1));
+ HANDLE_CODE(bref.unpack(lc_ch_id_ext_r16_present, 1));
+
+ HANDLE_CODE(cell_group_ind_r16.unpack(bref));
+ if (lc_ch_id_r16_present) {
+ HANDLE_CODE(unpack_integer(lc_ch_id_r16, bref, (uint8_t)1u, (uint8_t)10u));
+ }
+ if (lc_ch_id_ext_r16_present) {
+ HANDLE_CODE(unpack_integer(lc_ch_id_ext_r16, bref, (uint8_t)32u, (uint8_t)38u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void failed_lc_ch_id_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("cellGroupIndication-r16", cell_group_ind_r16.to_string());
+ if (lc_ch_id_r16_present) {
+ j.write_int("logicalChannelIdentity-r16", lc_ch_id_r16);
+ }
+ if (lc_ch_id_ext_r16_present) {
+ j.write_int("logicalChannelIdentityExt-r16", lc_ch_id_ext_r16);
+ }
+ j.end_obj();
+}
+
+const char* failed_lc_ch_id_r16_s::cell_group_ind_r16_opts::to_string() const
+{
+ static const char* options[] = {"mn", "sn"};
+ return convert_enum_idx(options, 2, value, "failed_lc_ch_id_r16_s::cell_group_ind_r16_e_");
+}
+
+// FailureReportMCG-r16 ::= SEQUENCE
+SRSASN_CODE fail_report_mcg_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(fail_type_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_freq_list_eutra_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_freq_list_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_freq_list_geran_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_freq_list_utra_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_scg_r16_present, 1));
+
+ if (fail_type_r16_present) {
+ HANDLE_CODE(fail_type_r16.pack(bref));
+ }
+ if (meas_result_freq_list_eutra_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_freq_list_eutra_r16, 1, 8));
+ }
+ if (meas_result_freq_list_nr_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_freq_list_nr_r16, 1, 5));
+ }
+ if (meas_result_freq_list_geran_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_freq_list_geran_r16, 1, 3, SeqOfPacker<Packer>(1, 8, Packer())));
+ }
+ if (meas_result_freq_list_utra_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_freq_list_utra_r16, 1, 8));
+ }
+ if (meas_result_scg_r16_present) {
+ HANDLE_CODE(meas_result_scg_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE fail_report_mcg_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(fail_type_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_freq_list_eutra_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_freq_list_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_freq_list_geran_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_freq_list_utra_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_scg_r16_present, 1));
+
+ if (fail_type_r16_present) {
+ HANDLE_CODE(fail_type_r16.unpack(bref));
+ }
+ if (meas_result_freq_list_eutra_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_freq_list_eutra_r16, bref, 1, 8));
+ }
+ if (meas_result_freq_list_nr_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_freq_list_nr_r16, bref, 1, 5));
+ }
+ if (meas_result_freq_list_geran_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_freq_list_geran_r16, bref, 1, 3, SeqOfPacker<Packer>(1, 8, Packer())));
+ }
+ if (meas_result_freq_list_utra_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_freq_list_utra_r16, bref, 1, 8));
+ }
+ if (meas_result_scg_r16_present) {
+ HANDLE_CODE(meas_result_scg_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void fail_report_mcg_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (fail_type_r16_present) {
+ j.write_str("failureType-r16", fail_type_r16.to_string());
+ }
+ if (meas_result_freq_list_eutra_r16_present) {
+ j.start_array("measResultFreqListEUTRA-r16");
+ for (const auto& e1 : meas_result_freq_list_eutra_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (meas_result_freq_list_nr_r16_present) {
+ j.start_array("measResultFreqListNR-r16");
+ for (const auto& e1 : meas_result_freq_list_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (meas_result_freq_list_geran_r16_present) {
+ j.start_array("measResultFreqListGERAN-r16");
+ for (const auto& e1 : meas_result_freq_list_geran_r16) {
+ j.start_array();
+ for (const auto& e2 : e1) {
+ e2.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_array();
+ }
+ if (meas_result_freq_list_utra_r16_present) {
+ j.start_array("measResultFreqListUTRA-r16");
+ for (const auto& e1 : meas_result_freq_list_utra_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (meas_result_scg_r16_present) {
+ j.write_str("measResultSCG-r16", meas_result_scg_r16.to_string());
+ }
+ j.end_obj();
+}
+
+const char* fail_report_mcg_r16_s::fail_type_r16_opts::to_string() const
+{
+ static const char* options[] = {
+ "t310-Expiry", "randomAccessProblem", "rlc-MaxNumRetx", "t312-Expiry", "spare4", "spare3", "spare2", "spare1"};
+ return convert_enum_idx(options, 8, value, "fail_report_mcg_r16_s::fail_type_r16_e_");
+}
+uint16_t fail_report_mcg_r16_s::fail_type_r16_opts::to_number() const
+{
+ switch (value) {
+ case t310_expiry:
+ return 310;
+ case t312_expiry:
+ return 312;
+ default:
+ invalid_enum_number(value, "fail_report_mcg_r16_s::fail_type_r16_e_");
+ }
+ return 0;
+}
+
// FailureReportSCG-NR-r15 ::= SEQUENCE
SRSASN_CODE fail_report_scg_nr_r15_s::pack(bit_ref& bref) const
{
@@ -4824,6 +6215,35 @@ SRSASN_CODE fail_report_scg_nr_r15_s::pack(bit_ref& bref) const
HANDLE_CODE(meas_result_scg_r15.pack(bref));
}
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= location_info_r16.is_present();
+ group_flags[0] |= log_meas_result_list_bt_r16.is_present();
+ group_flags[0] |= log_meas_result_list_wlan_r16.is_present();
+ group_flags[0] |= fail_type_v1610_present;
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(location_info_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(log_meas_result_list_bt_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(log_meas_result_list_wlan_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(fail_type_v1610_present, 1));
+ if (location_info_r16.is_present()) {
+ HANDLE_CODE(location_info_r16->pack(bref));
+ }
+ if (log_meas_result_list_bt_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *log_meas_result_list_bt_r16, 1, 32));
+ }
+ if (log_meas_result_list_wlan_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *log_meas_result_list_wlan_r16, 1, 32));
+ }
+ if (fail_type_v1610_present) {
+ HANDLE_CODE(fail_type_v1610.pack(bref));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
SRSASN_CODE fail_report_scg_nr_r15_s::unpack(cbit_ref& bref)
@@ -4840,6 +6260,37 @@ SRSASN_CODE fail_report_scg_nr_r15_s::unpack(cbit_ref& bref)
HANDLE_CODE(meas_result_scg_r15.unpack(bref));
}
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool location_info_r16_present;
+ HANDLE_CODE(bref.unpack(location_info_r16_present, 1));
+ location_info_r16.set_present(location_info_r16_present);
+ bool log_meas_result_list_bt_r16_present;
+ HANDLE_CODE(bref.unpack(log_meas_result_list_bt_r16_present, 1));
+ log_meas_result_list_bt_r16.set_present(log_meas_result_list_bt_r16_present);
+ bool log_meas_result_list_wlan_r16_present;
+ HANDLE_CODE(bref.unpack(log_meas_result_list_wlan_r16_present, 1));
+ log_meas_result_list_wlan_r16.set_present(log_meas_result_list_wlan_r16_present);
+ HANDLE_CODE(bref.unpack(fail_type_v1610_present, 1));
+ if (location_info_r16.is_present()) {
+ HANDLE_CODE(location_info_r16->unpack(bref));
+ }
+ if (log_meas_result_list_bt_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*log_meas_result_list_bt_r16, bref, 1, 32));
+ }
+ if (log_meas_result_list_wlan_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*log_meas_result_list_wlan_r16, bref, 1, 32));
+ }
+ if (fail_type_v1610_present) {
+ HANDLE_CODE(fail_type_v1610.unpack(bref));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
void fail_report_scg_nr_r15_s::to_json(json_writer& j) const
@@ -4856,6 +6307,29 @@ void fail_report_scg_nr_r15_s::to_json(json_writer& j) const
if (meas_result_scg_r15_present) {
j.write_str("measResultSCG-r15", meas_result_scg_r15.to_string());
}
+ if (ext) {
+ if (location_info_r16.is_present()) {
+ j.write_fieldname("locationInfo-r16");
+ location_info_r16->to_json(j);
+ }
+ if (log_meas_result_list_bt_r16.is_present()) {
+ j.start_array("logMeasResultListBT-r16");
+ for (const auto& e1 : *log_meas_result_list_bt_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (log_meas_result_list_wlan_r16.is_present()) {
+ j.start_array("logMeasResultListWLAN-r16");
+ for (const auto& e1 : *log_meas_result_list_wlan_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (fail_type_v1610_present) {
+ j.write_str("failureType-v1610", fail_type_v1610.to_string());
+ }
+ }
j.end_obj();
}
@@ -4866,8 +6340,9 @@ const char* fail_report_scg_nr_r15_s::fail_type_r15_opts::to_string() const
"rlc-MaxNumRetx",
"synchReconfigFailureSCG",
"scg-reconfigFailure",
- "srb3-IntegrityFailure"};
- return convert_enum_idx(options, 6, value, "fail_report_scg_nr_r15_s::fail_type_r15_e_");
+ "srb3-IntegrityFailure",
+ "dummy"};
+ return convert_enum_idx(options, 7, value, "fail_report_scg_nr_r15_s::fail_type_r15_e_");
}
uint16_t fail_report_scg_nr_r15_s::fail_type_r15_opts::to_number() const
{
@@ -4882,6 +6357,24 @@ uint16_t fail_report_scg_nr_r15_s::fail_type_r15_opts::to_number() const
return 0;
}
+const char* fail_report_scg_nr_r15_s::fail_type_v1610_opts::to_string() const
+{
+ static const char* options[] = {"t312-Expiry",
+ "scg-lbtFailure",
+ "beamFailureRecoveryFailure",
+ "bh-RLF-r16",
+ "beamFailure-r17",
+ "spare3",
+ "spare2",
+ "spare1"};
+ return convert_enum_idx(options, 8, value, "fail_report_scg_nr_r15_s::fail_type_v1610_e_");
+}
+uint16_t fail_report_scg_nr_r15_s::fail_type_v1610_opts::to_number() const
+{
+ static const uint16_t options[] = {312};
+ return map_enum_number(options, 1, value, "fail_report_scg_nr_r15_s::fail_type_v1610_e_");
+}
+
// FailureReportSCG-r12 ::= SEQUENCE
SRSASN_CODE fail_report_scg_r12_s::pack(bit_ref& bref) const
{
@@ -5192,6 +6685,29 @@ void proximity_ind_v930_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// RACH-Report-r16 ::= SEQUENCE
+SRSASN_CODE rach_report_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, nof_preambs_sent_r16, (uint8_t)1u, (uint8_t)200u));
+ HANDLE_CODE(bref.pack(contention_detected_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rach_report_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(nof_preambs_sent_r16, bref, (uint8_t)1u, (uint8_t)200u));
+ HANDLE_CODE(bref.unpack(contention_detected_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+void rach_report_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("numberOfPreamblesSent-r16", nof_preambs_sent_r16);
+ j.write_bool("contentionDetected-r16", contention_detected_r16);
+ j.end_obj();
+}
+
// RLF-Report-r9 ::= SEQUENCE
SRSASN_CODE rlf_report_r9_s::pack(bit_ref& bref) const
{
@@ -5242,6 +6758,13 @@ SRSASN_CODE rlf_report_r9_s::pack(bit_ref& bref) const
group_flags[5] |= meas_result_last_serv_cell_v1360_present;
group_flags[6] |= log_meas_result_list_bt_r15.is_present();
group_flags[6] |= log_meas_result_list_wlan_r15.is_present();
+ group_flags[7] |= meas_result_list_nr_r16.is_present();
+ group_flags[7] |= prev_nr_pcell_id_r16.is_present();
+ group_flags[7] |= failed_nr_pcell_id_r16.is_present();
+ group_flags[7] |= reconnect_cell_id_r16.is_present();
+ group_flags[7] |= time_until_reconn_r16_present;
+ group_flags[8] |= meas_result_list_nr_v1640.is_present();
+ group_flags[8] |= meas_result_list_ext_nr_r16.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -5349,6 +6872,43 @@ SRSASN_CODE rlf_report_r9_s::pack(bit_ref& bref) const
HANDLE_CODE(pack_dyn_seq_of(bref, *log_meas_result_list_wlan_r15, 1, 32));
}
}
+ if (group_flags[7]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(meas_result_list_nr_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(prev_nr_pcell_id_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(failed_nr_pcell_id_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(reconnect_cell_id_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(time_until_reconn_r16_present, 1));
+ if (meas_result_list_nr_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *meas_result_list_nr_r16, 1, 8));
+ }
+ if (prev_nr_pcell_id_r16.is_present()) {
+ HANDLE_CODE(prev_nr_pcell_id_r16->pack(bref));
+ }
+ if (failed_nr_pcell_id_r16.is_present()) {
+ HANDLE_CODE(failed_nr_pcell_id_r16->pack(bref));
+ }
+ if (reconnect_cell_id_r16.is_present()) {
+ HANDLE_CODE(reconnect_cell_id_r16->pack(bref));
+ }
+ if (time_until_reconn_r16_present) {
+ HANDLE_CODE(pack_integer(bref, time_until_reconn_r16, (uint32_t)0u, (uint32_t)172800u));
+ }
+ }
+ if (group_flags[8]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(meas_result_list_nr_v1640.is_present(), 1));
+ HANDLE_CODE(bref.pack(meas_result_list_ext_nr_r16.is_present(), 1));
+ if (meas_result_list_nr_v1640.is_present()) {
+ HANDLE_CODE(
+ pack_integer(bref, meas_result_list_nr_v1640->carrier_freq_nr_r16, (uint32_t)0u, (uint32_t)3279165u));
+ }
+ if (meas_result_list_ext_nr_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *meas_result_list_ext_nr_r16, 1, 7));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -5382,7 +6942,7 @@ SRSASN_CODE rlf_report_r9_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(7);
+ ext_groups_unpacker_guard group_flags(9);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -5517,6 +7077,55 @@ SRSASN_CODE rlf_report_r9_s::unpack(cbit_ref& bref)
HANDLE_CODE(unpack_dyn_seq_of(*log_meas_result_list_wlan_r15, bref, 1, 32));
}
}
+ if (group_flags[7]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool meas_result_list_nr_r16_present;
+ HANDLE_CODE(bref.unpack(meas_result_list_nr_r16_present, 1));
+ meas_result_list_nr_r16.set_present(meas_result_list_nr_r16_present);
+ bool prev_nr_pcell_id_r16_present;
+ HANDLE_CODE(bref.unpack(prev_nr_pcell_id_r16_present, 1));
+ prev_nr_pcell_id_r16.set_present(prev_nr_pcell_id_r16_present);
+ bool failed_nr_pcell_id_r16_present;
+ HANDLE_CODE(bref.unpack(failed_nr_pcell_id_r16_present, 1));
+ failed_nr_pcell_id_r16.set_present(failed_nr_pcell_id_r16_present);
+ bool reconnect_cell_id_r16_present;
+ HANDLE_CODE(bref.unpack(reconnect_cell_id_r16_present, 1));
+ reconnect_cell_id_r16.set_present(reconnect_cell_id_r16_present);
+ HANDLE_CODE(bref.unpack(time_until_reconn_r16_present, 1));
+ if (meas_result_list_nr_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*meas_result_list_nr_r16, bref, 1, 8));
+ }
+ if (prev_nr_pcell_id_r16.is_present()) {
+ HANDLE_CODE(prev_nr_pcell_id_r16->unpack(bref));
+ }
+ if (failed_nr_pcell_id_r16.is_present()) {
+ HANDLE_CODE(failed_nr_pcell_id_r16->unpack(bref));
+ }
+ if (reconnect_cell_id_r16.is_present()) {
+ HANDLE_CODE(reconnect_cell_id_r16->unpack(bref));
+ }
+ if (time_until_reconn_r16_present) {
+ HANDLE_CODE(unpack_integer(time_until_reconn_r16, bref, (uint32_t)0u, (uint32_t)172800u));
+ }
+ }
+ if (group_flags[8]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool meas_result_list_nr_v1640_present;
+ HANDLE_CODE(bref.unpack(meas_result_list_nr_v1640_present, 1));
+ meas_result_list_nr_v1640.set_present(meas_result_list_nr_v1640_present);
+ bool meas_result_list_ext_nr_r16_present;
+ HANDLE_CODE(bref.unpack(meas_result_list_ext_nr_r16_present, 1));
+ meas_result_list_ext_nr_r16.set_present(meas_result_list_ext_nr_r16_present);
+ if (meas_result_list_nr_v1640.is_present()) {
+ HANDLE_CODE(
+ unpack_integer(meas_result_list_nr_v1640->carrier_freq_nr_r16, bref, (uint32_t)0u, (uint32_t)3279165u));
+ }
+ if (meas_result_list_ext_nr_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*meas_result_list_ext_nr_r16, bref, 1, 7));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -5660,6 +7269,41 @@ void rlf_report_r9_s::to_json(json_writer& j) const
}
j.end_array();
}
+ if (meas_result_list_nr_r16.is_present()) {
+ j.start_array("measResultListNR-r16");
+ for (const auto& e1 : *meas_result_list_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (prev_nr_pcell_id_r16.is_present()) {
+ j.write_fieldname("previousNR-PCellId-r16");
+ prev_nr_pcell_id_r16->to_json(j);
+ }
+ if (failed_nr_pcell_id_r16.is_present()) {
+ j.write_fieldname("failedNR-PCellId-r16");
+ failed_nr_pcell_id_r16->to_json(j);
+ }
+ if (reconnect_cell_id_r16.is_present()) {
+ j.write_fieldname("reconnectCellId-r16");
+ reconnect_cell_id_r16->to_json(j);
+ }
+ if (time_until_reconn_r16_present) {
+ j.write_int("timeUntilReconnection-r16", time_until_reconn_r16);
+ }
+ if (meas_result_list_nr_v1640.is_present()) {
+ j.write_fieldname("measResultListNR-v1640");
+ j.start_obj();
+ j.write_int("carrierFreqNR-r16", meas_result_list_nr_v1640->carrier_freq_nr_r16);
+ j.end_obj();
+ }
+ if (meas_result_list_ext_nr_r16.is_present()) {
+ j.start_array("measResultListExtNR-r16");
+ for (const auto& e1 : *meas_result_list_ext_nr_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
}
j.end_obj();
}
@@ -6033,6 +7677,299 @@ SRSASN_CODE rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::unpack(cbit_re
return SRSASN_SUCCESS;
}
+void rlf_report_r9_s::failed_nr_pcell_id_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::cell_global_id:
+ c.destroy<cell_global_id_nr_r16_s>();
+ break;
+ case types::pci_arfcn:
+ c.destroy<pci_arfcn_s_>();
+ break;
+ default:
+ break;
+ }
+}
+void rlf_report_r9_s::failed_nr_pcell_id_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::cell_global_id:
+ c.init<cell_global_id_nr_r16_s>();
+ break;
+ case types::pci_arfcn:
+ c.init<pci_arfcn_s_>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::failed_nr_pcell_id_r16_c_");
+ }
+}
+rlf_report_r9_s::failed_nr_pcell_id_r16_c_::failed_nr_pcell_id_r16_c_(
+ const rlf_report_r9_s::failed_nr_pcell_id_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::cell_global_id:
+ c.init(other.c.get<cell_global_id_nr_r16_s>());
+ break;
+ case types::pci_arfcn:
+ c.init(other.c.get<pci_arfcn_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::failed_nr_pcell_id_r16_c_");
+ }
+}
+rlf_report_r9_s::failed_nr_pcell_id_r16_c_&
+rlf_report_r9_s::failed_nr_pcell_id_r16_c_::operator=(const rlf_report_r9_s::failed_nr_pcell_id_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::cell_global_id:
+ c.set(other.c.get<cell_global_id_nr_r16_s>());
+ break;
+ case types::pci_arfcn:
+ c.set(other.c.get<pci_arfcn_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::failed_nr_pcell_id_r16_c_");
+ }
+
+ return *this;
+}
+cell_global_id_nr_r16_s& rlf_report_r9_s::failed_nr_pcell_id_r16_c_::set_cell_global_id()
+{
+ set(types::cell_global_id);
+ return c.get<cell_global_id_nr_r16_s>();
+}
+rlf_report_r9_s::failed_nr_pcell_id_r16_c_::pci_arfcn_s_& rlf_report_r9_s::failed_nr_pcell_id_r16_c_::set_pci_arfcn()
+{
+ set(types::pci_arfcn);
+ return c.get<pci_arfcn_s_>();
+}
+void rlf_report_r9_s::failed_nr_pcell_id_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::cell_global_id:
+ j.write_fieldname("cellGlobalId");
+ c.get<cell_global_id_nr_r16_s>().to_json(j);
+ break;
+ case types::pci_arfcn:
+ j.write_fieldname("pci-arfcn");
+ j.start_obj();
+ j.write_int("physCellId-r16", c.get<pci_arfcn_s_>().pci_r16);
+ j.write_int("carrierFreq-r16", c.get<pci_arfcn_s_>().carrier_freq_r16);
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::failed_nr_pcell_id_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE rlf_report_r9_s::failed_nr_pcell_id_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::cell_global_id:
+ HANDLE_CODE(c.get<cell_global_id_nr_r16_s>().pack(bref));
+ break;
+ case types::pci_arfcn:
+ HANDLE_CODE(pack_integer(bref, c.get<pci_arfcn_s_>().pci_r16, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(pack_integer(bref, c.get<pci_arfcn_s_>().carrier_freq_r16, (uint32_t)0u, (uint32_t)3279165u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::failed_nr_pcell_id_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rlf_report_r9_s::failed_nr_pcell_id_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::cell_global_id:
+ HANDLE_CODE(c.get<cell_global_id_nr_r16_s>().unpack(bref));
+ break;
+ case types::pci_arfcn:
+ HANDLE_CODE(unpack_integer(c.get<pci_arfcn_s_>().pci_r16, bref, (uint16_t)0u, (uint16_t)1007u));
+ HANDLE_CODE(unpack_integer(c.get<pci_arfcn_s_>().carrier_freq_r16, bref, (uint32_t)0u, (uint32_t)3279165u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::failed_nr_pcell_id_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+void rlf_report_r9_s::reconnect_cell_id_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::nr_reconnect_cell_id:
+ c.destroy<cell_global_id_nr_r16_s>();
+ break;
+ case types::eutra_reconnect_cell_id:
+ c.destroy<eutra_reconnect_cell_id_s_>();
+ break;
+ default:
+ break;
+ }
+}
+void rlf_report_r9_s::reconnect_cell_id_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::nr_reconnect_cell_id:
+ c.init<cell_global_id_nr_r16_s>();
+ break;
+ case types::eutra_reconnect_cell_id:
+ c.init<eutra_reconnect_cell_id_s_>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::reconnect_cell_id_r16_c_");
+ }
+}
+rlf_report_r9_s::reconnect_cell_id_r16_c_::reconnect_cell_id_r16_c_(
+ const rlf_report_r9_s::reconnect_cell_id_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::nr_reconnect_cell_id:
+ c.init(other.c.get<cell_global_id_nr_r16_s>());
+ break;
+ case types::eutra_reconnect_cell_id:
+ c.init(other.c.get<eutra_reconnect_cell_id_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::reconnect_cell_id_r16_c_");
+ }
+}
+rlf_report_r9_s::reconnect_cell_id_r16_c_&
+rlf_report_r9_s::reconnect_cell_id_r16_c_::operator=(const rlf_report_r9_s::reconnect_cell_id_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::nr_reconnect_cell_id:
+ c.set(other.c.get<cell_global_id_nr_r16_s>());
+ break;
+ case types::eutra_reconnect_cell_id:
+ c.set(other.c.get<eutra_reconnect_cell_id_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::reconnect_cell_id_r16_c_");
+ }
+
+ return *this;
+}
+cell_global_id_nr_r16_s& rlf_report_r9_s::reconnect_cell_id_r16_c_::set_nr_reconnect_cell_id()
+{
+ set(types::nr_reconnect_cell_id);
+ return c.get<cell_global_id_nr_r16_s>();
+}
+rlf_report_r9_s::reconnect_cell_id_r16_c_::eutra_reconnect_cell_id_s_&
+rlf_report_r9_s::reconnect_cell_id_r16_c_::set_eutra_reconnect_cell_id()
+{
+ set(types::eutra_reconnect_cell_id);
+ return c.get<eutra_reconnect_cell_id_s_>();
+}
+void rlf_report_r9_s::reconnect_cell_id_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::nr_reconnect_cell_id:
+ j.write_fieldname("nrReconnectCellId");
+ c.get<cell_global_id_nr_r16_s>().to_json(j);
+ break;
+ case types::eutra_reconnect_cell_id:
+ j.write_fieldname("eutraReconnectCellId");
+ j.start_obj();
+ j.write_fieldname("cellGlobalId-r16");
+ c.get<eutra_reconnect_cell_id_s_>().cell_global_id_r16.to_json(j);
+ if (c.get<eutra_reconnect_cell_id_s_>().tac_epc_r16_present) {
+ j.write_str("trackingAreaCode-EPC-r16", c.get<eutra_reconnect_cell_id_s_>().tac_epc_r16.to_string());
+ }
+ if (c.get<eutra_reconnect_cell_id_s_>().tac_minus5_gc_r16_present) {
+ j.write_str("trackingAreaCode-5GC-r16", c.get<eutra_reconnect_cell_id_s_>().tac_minus5_gc_r16.to_string());
+ }
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::reconnect_cell_id_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE rlf_report_r9_s::reconnect_cell_id_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::nr_reconnect_cell_id:
+ HANDLE_CODE(c.get<cell_global_id_nr_r16_s>().pack(bref));
+ break;
+ case types::eutra_reconnect_cell_id:
+ HANDLE_CODE(bref.pack(c.get<eutra_reconnect_cell_id_s_>().tac_epc_r16_present, 1));
+ HANDLE_CODE(bref.pack(c.get<eutra_reconnect_cell_id_s_>().tac_minus5_gc_r16_present, 1));
+ HANDLE_CODE(c.get<eutra_reconnect_cell_id_s_>().cell_global_id_r16.pack(bref));
+ if (c.get<eutra_reconnect_cell_id_s_>().tac_epc_r16_present) {
+ HANDLE_CODE(c.get<eutra_reconnect_cell_id_s_>().tac_epc_r16.pack(bref));
+ }
+ if (c.get<eutra_reconnect_cell_id_s_>().tac_minus5_gc_r16_present) {
+ HANDLE_CODE(c.get<eutra_reconnect_cell_id_s_>().tac_minus5_gc_r16.pack(bref));
+ }
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::reconnect_cell_id_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rlf_report_r9_s::reconnect_cell_id_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::nr_reconnect_cell_id:
+ HANDLE_CODE(c.get<cell_global_id_nr_r16_s>().unpack(bref));
+ break;
+ case types::eutra_reconnect_cell_id:
+ HANDLE_CODE(bref.unpack(c.get<eutra_reconnect_cell_id_s_>().tac_epc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(c.get<eutra_reconnect_cell_id_s_>().tac_minus5_gc_r16_present, 1));
+ HANDLE_CODE(c.get<eutra_reconnect_cell_id_s_>().cell_global_id_r16.unpack(bref));
+ if (c.get<eutra_reconnect_cell_id_s_>().tac_epc_r16_present) {
+ HANDLE_CODE(c.get<eutra_reconnect_cell_id_s_>().tac_epc_r16.unpack(bref));
+ }
+ if (c.get<eutra_reconnect_cell_id_s_>().tac_minus5_gc_r16_present) {
+ HANDLE_CODE(c.get<eutra_reconnect_cell_id_s_>().tac_minus5_gc_r16.unpack(bref));
+ }
+ break;
+ default:
+ log_invalid_choice_id(type_, "rlf_report_r9_s::reconnect_cell_id_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
// RRCConnectionReconfigurationComplete-v8a0-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_recfg_complete_v8a0_ies_s::pack(bit_ref& bref) const
{
@@ -6120,6 +8057,10 @@ SRSASN_CODE rrc_conn_resume_complete_v1530_ies_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(flight_path_info_available_r15_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_conn_resume_complete_v1530_ies_s::unpack(cbit_ref& bref)
@@ -6130,6 +8071,10 @@ SRSASN_CODE rrc_conn_resume_complete_v1530_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(flight_path_info_available_r15_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
return SRSASN_SUCCESS;
}
void rrc_conn_resume_complete_v1530_ies_s::to_json(json_writer& j) const
@@ -6149,8 +8094,7 @@ void rrc_conn_resume_complete_v1530_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -7081,6 +9025,61 @@ const char* failed_lc_ch_info_r15_s::fail_type_opts::to_string() const
return convert_enum_idx(options, 4, value, "failed_lc_ch_info_r15_s::fail_type_e_");
}
+// FailureInformation-r16-IEs ::= SEQUENCE
+SRSASN_CODE fail_info_r16_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(failed_lc_ch_id_r16_present, 1));
+ HANDLE_CODE(bref.pack(fail_type_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (failed_lc_ch_id_r16_present) {
+ HANDLE_CODE(failed_lc_ch_id_r16.pack(bref));
+ }
+ if (fail_type_r16_present) {
+ HANDLE_CODE(fail_type_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE fail_info_r16_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(failed_lc_ch_id_r16_present, 1));
+ HANDLE_CODE(bref.unpack(fail_type_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (failed_lc_ch_id_r16_present) {
+ HANDLE_CODE(failed_lc_ch_id_r16.unpack(bref));
+ }
+ if (fail_type_r16_present) {
+ HANDLE_CODE(fail_type_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void fail_info_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (failed_lc_ch_id_r16_present) {
+ j.write_fieldname("failedLogicalChannelIdentity-r16");
+ failed_lc_ch_id_r16.to_json(j);
+ }
+ if (fail_type_r16_present) {
+ j.write_str("failureType-r16", fail_type_r16.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+const char* fail_info_r16_ies_s::fail_type_r16_opts::to_string() const
+{
+ static const char* options[] = {"duplication", "dapsHO-failure", "spare2", "spare1"};
+ return convert_enum_idx(options, 4, value, "fail_info_r16_ies_s::fail_type_r16_e_");
+}
+
// InDeviceCoexIndication-r11-IEs ::= SEQUENCE
SRSASN_CODE in_dev_coex_ind_r11_ies_s::pack(bit_ref& bref) const
{
@@ -7384,6 +9383,55 @@ void mbms_interest_ind_r11_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// MCGFailureInformation-r16-IEs ::= SEQUENCE
+SRSASN_CODE mcg_fail_info_r16_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(fail_report_mcg_r16_present, 1));
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (fail_report_mcg_r16_present) {
+ HANDLE_CODE(fail_report_mcg_r16.pack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mcg_fail_info_r16_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(fail_report_mcg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (fail_report_mcg_r16_present) {
+ HANDLE_CODE(fail_report_mcg_r16.unpack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void mcg_fail_info_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (fail_report_mcg_r16_present) {
+ j.write_fieldname("failureReportMCG-r16");
+ fail_report_mcg_r16.to_json(j);
+ }
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// MeasReportAppLayer-r15-IEs ::= SEQUENCE
SRSASN_CODE meas_report_app_layer_r15_ies_s::pack(bit_ref& bref) const
{
@@ -7443,6 +9491,193 @@ const char* meas_report_app_layer_r15_ies_s::service_type_r15_opts::to_string()
return convert_enum_idx(options, 8, value, "meas_report_app_layer_r15_ies_s::service_type_r15_e_");
}
+// PURConfigurationRequest-r16-IEs ::= SEQUENCE
+SRSASN_CODE pur_cfg_request_r16_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pur_cfg_request_r16_present, 1));
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (pur_cfg_request_r16_present) {
+ HANDLE_CODE(pur_cfg_request_r16.pack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_request_r16_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pur_cfg_request_r16_present, 1));
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (pur_cfg_request_r16_present) {
+ HANDLE_CODE(pur_cfg_request_r16.unpack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void pur_cfg_request_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pur_cfg_request_r16_present) {
+ j.write_fieldname("pur-ConfigRequest-r16");
+ pur_cfg_request_r16.to_json(j);
+ }
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+void pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::set(types::options e)
+{
+ type_ = e;
+}
+void pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::set_pur_release_request()
+{
+ set(types::pur_release_request);
+}
+pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::pur_setup_request_s_&
+pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::set_pur_setup_request()
+{
+ set(types::pur_setup_request);
+ return c;
+}
+void pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::pur_release_request:
+ break;
+ case types::pur_setup_request:
+ j.write_fieldname("pur-SetupRequest");
+ j.start_obj();
+ j.write_str("requestedNumOccasions-r16", c.requested_num_occasions_r16.to_string());
+ if (c.requested_periodicity_and_offset_r16_present) {
+ j.write_fieldname("requestedPeriodicityAndOffset-r16");
+ c.requested_periodicity_and_offset_r16.to_json(j);
+ }
+ j.write_str("requestedTBS-r16", c.requested_tbs_r16.to_string());
+ if (c.rrc_ack_r16_present) {
+ j.write_str("rrc-ACK-r16", "true");
+ }
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::pur_release_request:
+ break;
+ case types::pur_setup_request:
+ HANDLE_CODE(bref.pack(c.requested_periodicity_and_offset_r16_present, 1));
+ HANDLE_CODE(bref.pack(c.rrc_ack_r16_present, 1));
+ HANDLE_CODE(c.requested_num_occasions_r16.pack(bref));
+ if (c.requested_periodicity_and_offset_r16_present) {
+ HANDLE_CODE(c.requested_periodicity_and_offset_r16.pack(bref));
+ }
+ HANDLE_CODE(c.requested_tbs_r16.pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::pur_release_request:
+ break;
+ case types::pur_setup_request:
+ HANDLE_CODE(bref.unpack(c.requested_periodicity_and_offset_r16_present, 1));
+ HANDLE_CODE(bref.unpack(c.rrc_ack_r16_present, 1));
+ HANDLE_CODE(c.requested_num_occasions_r16.unpack(bref));
+ if (c.requested_periodicity_and_offset_r16_present) {
+ HANDLE_CODE(c.requested_periodicity_and_offset_r16.unpack(bref));
+ }
+ HANDLE_CODE(c.requested_tbs_r16.unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char*
+pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::pur_setup_request_s_::requested_num_occasions_r16_opts::to_string()
+ const
+{
+ static const char* options[] = {"one", "infinite"};
+ return convert_enum_idx(
+ options,
+ 2,
+ value,
+ "pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::pur_setup_request_s_::requested_num_occasions_r16_e_");
+}
+uint8_t
+pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::pur_setup_request_s_::requested_num_occasions_r16_opts::to_number()
+ const
+{
+ static const uint8_t options[] = {1};
+ return map_enum_number(
+ options,
+ 1,
+ value,
+ "pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::pur_setup_request_s_::requested_num_occasions_r16_e_");
+}
+
+const char*
+pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::pur_setup_request_s_::requested_tbs_r16_opts::to_string() const
+{
+ static const char* options[] = {
+ "b328", "b344", "b376", "b392", "b408", "b424", "b440", "b456", "b472", "b488", "b504",
+ "b536", "b568", "b584", "b616", "b648", "b680", "b712", "b744", "b776", "b808", "b840",
+ "b872", "b904", "b936", "b968", "b1000", "b1032", "b1064", "b1096", "b1128", "b1160", "b1192",
+ "b1224", "b1256", "b1288", "b1320", "b1352", "b1384", "b1416", "b1480", "b1544", "b1608", "b1672",
+ "b1736", "b1800", "b1864", "b1928", "b1992", "b2024", "b2088", "b2152", "b2216", "b2280", "b2344",
+ "b2408", "b2472", "b2536", "b2600", "b2664", "b2728", "b2792", "b2856", "b2984"};
+ return convert_enum_idx(
+ options,
+ 64,
+ value,
+ "pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::pur_setup_request_s_::requested_tbs_r16_e_");
+}
+uint16_t
+pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::pur_setup_request_s_::requested_tbs_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {328, 344, 376, 392, 408, 424, 440, 456, 472, 488, 504, 536, 568,
+ 584, 616, 648, 680, 712, 744, 776, 808, 840, 872, 904, 936, 968,
+ 1000, 1032, 1064, 1096, 1128, 1160, 1192, 1224, 1256, 1288, 1320, 1352, 1384,
+ 1416, 1480, 1544, 1608, 1672, 1736, 1800, 1864, 1928, 1992, 2024, 2088, 2152,
+ 2216, 2280, 2344, 2408, 2472, 2536, 2600, 2664, 2728, 2792, 2856, 2984};
+ return map_enum_number(
+ options,
+ 64,
+ value,
+ "pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::pur_setup_request_s_::requested_tbs_r16_e_");
+}
+
// ProximityIndication-r9-IEs ::= SEQUENCE
SRSASN_CODE proximity_ind_r9_ies_s::pack(bit_ref& bref) const
{
@@ -8101,8 +10336,7 @@ SRSASN_CODE ue_info_resp_r9_ies_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (rach_report_r9_present) {
- HANDLE_CODE(pack_integer(bref, rach_report_r9.nof_preambs_sent_r9, (uint8_t)1u, (uint8_t)200u));
- HANDLE_CODE(bref.pack(rach_report_r9.contention_detected_r9, 1));
+ HANDLE_CODE(rach_report_r9.pack(bref));
}
if (rlf_report_r9_present) {
HANDLE_CODE(rlf_report_r9.pack(bref));
@@ -8120,8 +10354,7 @@ SRSASN_CODE ue_info_resp_r9_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (rach_report_r9_present) {
- HANDLE_CODE(unpack_integer(rach_report_r9.nof_preambs_sent_r9, bref, (uint8_t)1u, (uint8_t)200u));
- HANDLE_CODE(bref.unpack(rach_report_r9.contention_detected_r9, 1));
+ HANDLE_CODE(rach_report_r9.unpack(bref));
}
if (rlf_report_r9_present) {
HANDLE_CODE(rlf_report_r9.unpack(bref));
@@ -8137,10 +10370,7 @@ void ue_info_resp_r9_ies_s::to_json(json_writer& j) const
j.start_obj();
if (rach_report_r9_present) {
j.write_fieldname("rach-Report-r9");
- j.start_obj();
- j.write_int("numberOfPreamblesSent-r9", rach_report_r9.nof_preambs_sent_r9);
- j.write_bool("contentionDetected-r9", rach_report_r9.contention_detected_r9);
- j.end_obj();
+ rach_report_r9.to_json(j);
}
if (rlf_report_r9_present) {
j.write_fieldname("rlf-Report-r9");
@@ -8153,6 +10383,58 @@ void ue_info_resp_r9_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// ULDedicatedMessageSegment-r16-IEs ::= SEQUENCE
+SRSASN_CODE ul_ded_msg_segment_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(pack_integer(bref, segment_num_r16, (uint8_t)0u, (uint8_t)15u));
+ HANDLE_CODE(rrc_msg_segment_container_r16.pack(bref));
+ HANDLE_CODE(rrc_msg_segment_type_r16.pack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_ded_msg_segment_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(unpack_integer(segment_num_r16, bref, (uint8_t)0u, (uint8_t)15u));
+ HANDLE_CODE(rrc_msg_segment_container_r16.unpack(bref));
+ HANDLE_CODE(rrc_msg_segment_type_r16.unpack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ul_ded_msg_segment_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("segmentNumber-r16", segment_num_r16);
+ j.write_str("rrc-MessageSegmentContainer-r16", rrc_msg_segment_container_r16.to_string());
+ j.write_str("rrc-MessageSegmentType-r16", rrc_msg_segment_type_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* ul_ded_msg_segment_r16_ies_s::rrc_msg_segment_type_r16_opts::to_string() const
+{
+ static const char* options[] = {"notLastSegment", "lastSegment"};
+ return convert_enum_idx(options, 2, value, "ul_ded_msg_segment_r16_ies_s::rrc_msg_segment_type_r16_e_");
+}
+
// ULHandoverPreparationTransfer-r8-IEs ::= SEQUENCE
SRSASN_CODE ul_ho_prep_transfer_r8_ies_s::pack(bit_ref& bref) const
{
@@ -8201,6 +10483,215 @@ void ul_ho_prep_transfer_r8_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// ULInformationTransfer-r16-IEs ::= SEQUENCE
+SRSASN_CODE ul_info_transfer_r16_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ded_info_type_r16_present, 1));
+ HANDLE_CODE(bref.pack(ded_info_f1c_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (ded_info_type_r16_present) {
+ HANDLE_CODE(ded_info_type_r16.pack(bref));
+ }
+ if (ded_info_f1c_r16_present) {
+ HANDLE_CODE(ded_info_f1c_r16.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_info_transfer_r16_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ded_info_type_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ded_info_f1c_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (ded_info_type_r16_present) {
+ HANDLE_CODE(ded_info_type_r16.unpack(bref));
+ }
+ if (ded_info_f1c_r16_present) {
+ HANDLE_CODE(ded_info_f1c_r16.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ul_info_transfer_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ded_info_type_r16_present) {
+ j.write_fieldname("dedicatedInfoType-r16");
+ ded_info_type_r16.to_json(j);
+ }
+ if (ded_info_f1c_r16_present) {
+ j.write_str("dedicatedInfoF1c-r16", ded_info_f1c_r16.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+void ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::ded_info_nas_r16:
+ c.destroy<dyn_octstring>();
+ break;
+ case types::ded_info_cdma2000_minus1_xrtt_r16:
+ c.destroy<dyn_octstring>();
+ break;
+ case types::ded_info_cdma2000_hrpd_r16:
+ c.destroy<dyn_octstring>();
+ break;
+ default:
+ break;
+ }
+}
+void ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::ded_info_nas_r16:
+ c.init<dyn_octstring>();
+ break;
+ case types::ded_info_cdma2000_minus1_xrtt_r16:
+ c.init<dyn_octstring>();
+ break;
+ case types::ded_info_cdma2000_hrpd_r16:
+ c.init<dyn_octstring>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_r16_ies_s::ded_info_type_r16_c_");
+ }
+}
+ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::ded_info_type_r16_c_(
+ const ul_info_transfer_r16_ies_s::ded_info_type_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::ded_info_nas_r16:
+ c.init(other.c.get<dyn_octstring>());
+ break;
+ case types::ded_info_cdma2000_minus1_xrtt_r16:
+ c.init(other.c.get<dyn_octstring>());
+ break;
+ case types::ded_info_cdma2000_hrpd_r16:
+ c.init(other.c.get<dyn_octstring>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_r16_ies_s::ded_info_type_r16_c_");
+ }
+}
+ul_info_transfer_r16_ies_s::ded_info_type_r16_c_& ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::operator=(
+ const ul_info_transfer_r16_ies_s::ded_info_type_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::ded_info_nas_r16:
+ c.set(other.c.get<dyn_octstring>());
+ break;
+ case types::ded_info_cdma2000_minus1_xrtt_r16:
+ c.set(other.c.get<dyn_octstring>());
+ break;
+ case types::ded_info_cdma2000_hrpd_r16:
+ c.set(other.c.get<dyn_octstring>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_r16_ies_s::ded_info_type_r16_c_");
+ }
+
+ return *this;
+}
+dyn_octstring& ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::set_ded_info_nas_r16()
+{
+ set(types::ded_info_nas_r16);
+ return c.get<dyn_octstring>();
+}
+dyn_octstring& ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::set_ded_info_cdma2000_minus1_xrtt_r16()
+{
+ set(types::ded_info_cdma2000_minus1_xrtt_r16);
+ return c.get<dyn_octstring>();
+}
+dyn_octstring& ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::set_ded_info_cdma2000_hrpd_r16()
+{
+ set(types::ded_info_cdma2000_hrpd_r16);
+ return c.get<dyn_octstring>();
+}
+void ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::ded_info_nas_r16:
+ j.write_str("dedicatedInfoNAS-r16", c.get<dyn_octstring>().to_string());
+ break;
+ case types::ded_info_cdma2000_minus1_xrtt_r16:
+ j.write_str("dedicatedInfoCDMA2000-1XRTT-r16", c.get<dyn_octstring>().to_string());
+ break;
+ case types::ded_info_cdma2000_hrpd_r16:
+ j.write_str("dedicatedInfoCDMA2000-HRPD-r16", c.get<dyn_octstring>().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_r16_ies_s::ded_info_type_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::ded_info_nas_r16:
+ HANDLE_CODE(c.get<dyn_octstring>().pack(bref));
+ break;
+ case types::ded_info_cdma2000_minus1_xrtt_r16:
+ HANDLE_CODE(c.get<dyn_octstring>().pack(bref));
+ break;
+ case types::ded_info_cdma2000_hrpd_r16:
+ HANDLE_CODE(c.get<dyn_octstring>().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_r16_ies_s::ded_info_type_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_info_transfer_r16_ies_s::ded_info_type_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::ded_info_nas_r16:
+ HANDLE_CODE(c.get<dyn_octstring>().unpack(bref));
+ break;
+ case types::ded_info_cdma2000_minus1_xrtt_r16:
+ HANDLE_CODE(c.get<dyn_octstring>().unpack(bref));
+ break;
+ case types::ded_info_cdma2000_hrpd_r16:
+ HANDLE_CODE(c.get<dyn_octstring>().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_r16_ies_s::ded_info_type_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
// ULInformationTransfer-r8-IEs ::= SEQUENCE
SRSASN_CODE ul_info_transfer_r8_ies_s::pack(bit_ref& bref) const
{
@@ -8390,6 +10881,54 @@ SRSASN_CODE ul_info_transfer_r8_ies_s::ded_info_type_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// ULInformationTransferIRAT-r16-IEs ::= SEQUENCE
+SRSASN_CODE ul_info_transfer_irat_r16_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ul_dcch_msg_nr_r16_present, 1));
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (ul_dcch_msg_nr_r16_present) {
+ HANDLE_CODE(ul_dcch_msg_nr_r16.pack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_info_transfer_irat_r16_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ul_dcch_msg_nr_r16_present, 1));
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (ul_dcch_msg_nr_r16_present) {
+ HANDLE_CODE(ul_dcch_msg_nr_r16.unpack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ul_info_transfer_irat_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ul_dcch_msg_nr_r16_present) {
+ j.write_str("ul-DCCH-MessageNR-r16", ul_dcch_msg_nr_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();
+}
+
// ULInformationTransferMRDC-r15-IEs ::= SEQUENCE
SRSASN_CODE ul_info_transfer_mrdc_r15_ies_s::pack(bit_ref& bref) const
{
@@ -8682,6 +11221,88 @@ void fail_info_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// FailureInformation-r16 ::= SEQUENCE
+SRSASN_CODE fail_info_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(crit_exts.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE fail_info_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(crit_exts.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void fail_info_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("criticalExtensions");
+ crit_exts.to_json(j);
+ j.end_obj();
+}
+
+void fail_info_r16_s::crit_exts_c_::set(types::options e)
+{
+ type_ = e;
+}
+fail_info_r16_ies_s& fail_info_r16_s::crit_exts_c_::set_fail_info_r16()
+{
+ set(types::fail_info_r16);
+ return c;
+}
+void fail_info_r16_s::crit_exts_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void fail_info_r16_s::crit_exts_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::fail_info_r16:
+ j.write_fieldname("failureInformation-r16");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "fail_info_r16_s::crit_exts_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE fail_info_r16_s::crit_exts_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::fail_info_r16:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "fail_info_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE fail_info_r16_s::crit_exts_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::fail_info_r16:
+ HANDLE_CODE(c.unpack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "fail_info_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
// InDeviceCoexIndication-r11 ::= SEQUENCE
SRSASN_CODE in_dev_coex_ind_r11_s::pack(bit_ref& bref) const
{
@@ -9335,6 +11956,88 @@ SRSASN_CODE mbms_interest_ind_r11_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// MCGFailureInformation-r16 ::= SEQUENCE
+SRSASN_CODE mcg_fail_info_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(crit_exts.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mcg_fail_info_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(crit_exts.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void mcg_fail_info_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("criticalExtensions");
+ crit_exts.to_json(j);
+ j.end_obj();
+}
+
+void mcg_fail_info_r16_s::crit_exts_c_::set(types::options e)
+{
+ type_ = e;
+}
+mcg_fail_info_r16_ies_s& mcg_fail_info_r16_s::crit_exts_c_::set_mcg_fail_info()
+{
+ set(types::mcg_fail_info);
+ return c;
+}
+void mcg_fail_info_r16_s::crit_exts_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void mcg_fail_info_r16_s::crit_exts_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::mcg_fail_info:
+ j.write_fieldname("mcgFailureInformation");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "mcg_fail_info_r16_s::crit_exts_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE mcg_fail_info_r16_s::crit_exts_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::mcg_fail_info:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "mcg_fail_info_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mcg_fail_info_r16_s::crit_exts_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::mcg_fail_info:
+ HANDLE_CODE(c.unpack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "mcg_fail_info_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
// MeasReportAppLayer-r15 ::= SEQUENCE
SRSASN_CODE meas_report_app_layer_r15_s::pack(bit_ref& bref) const
{
@@ -9417,6 +12120,88 @@ SRSASN_CODE meas_report_app_layer_r15_s::crit_exts_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// PURConfigurationRequest-r16 ::= SEQUENCE
+SRSASN_CODE pur_cfg_request_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(crit_exts.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_request_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(crit_exts.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void pur_cfg_request_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("criticalExtensions");
+ crit_exts.to_json(j);
+ j.end_obj();
+}
+
+void pur_cfg_request_r16_s::crit_exts_c_::set(types::options e)
+{
+ type_ = e;
+}
+pur_cfg_request_r16_ies_s& pur_cfg_request_r16_s::crit_exts_c_::set_pur_cfg_request()
+{
+ set(types::pur_cfg_request);
+ return c;
+}
+void pur_cfg_request_r16_s::crit_exts_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void pur_cfg_request_r16_s::crit_exts_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::pur_cfg_request:
+ j.write_fieldname("purConfigurationRequest");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_r16_s::crit_exts_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE pur_cfg_request_r16_s::crit_exts_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::pur_cfg_request:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_request_r16_s::crit_exts_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::pur_cfg_request:
+ HANDLE_CODE(c.unpack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
// ProximityIndication-r9 ::= SEQUENCE
SRSASN_CODE proximity_ind_r9_s::pack(bit_ref& bref) const
{
@@ -10985,6 +13770,88 @@ SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// ULDedicatedMessageSegment-r16 ::= SEQUENCE
+SRSASN_CODE ul_ded_msg_segment_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(crit_exts.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_ded_msg_segment_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(crit_exts.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void ul_ded_msg_segment_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("criticalExtensions");
+ crit_exts.to_json(j);
+ j.end_obj();
+}
+
+void ul_ded_msg_segment_r16_s::crit_exts_c_::set(types::options e)
+{
+ type_ = e;
+}
+ul_ded_msg_segment_r16_ies_s& ul_ded_msg_segment_r16_s::crit_exts_c_::set_ul_ded_msg_segment_r16()
+{
+ set(types::ul_ded_msg_segment_r16);
+ return c;
+}
+void ul_ded_msg_segment_r16_s::crit_exts_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void ul_ded_msg_segment_r16_s::crit_exts_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::ul_ded_msg_segment_r16:
+ j.write_fieldname("ulDedicatedMessageSegment-r16");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_ded_msg_segment_r16_s::crit_exts_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE ul_ded_msg_segment_r16_s::crit_exts_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::ul_ded_msg_segment_r16:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_ded_msg_segment_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_ded_msg_segment_r16_s::crit_exts_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::ul_ded_msg_segment_r16:
+ HANDLE_CODE(c.unpack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_ded_msg_segment_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
// ULHandoverPreparationTransfer ::= SEQUENCE
SRSASN_CODE ul_ho_prep_transfer_s::pack(bit_ref& bref) const
{
@@ -11230,18 +14097,95 @@ SRSASN_CODE ul_info_transfer_s::crit_exts_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+void ul_info_transfer_s::crit_exts_c_::c1_c_::destroy_()
+{
+ switch (type_) {
+ case types::ul_info_transfer_r8:
+ c.destroy<ul_info_transfer_r8_ies_s>();
+ break;
+ case types::ul_info_transfer_r16:
+ c.destroy<ul_info_transfer_r16_ies_s>();
+ break;
+ default:
+ break;
+ }
+}
void ul_info_transfer_s::crit_exts_c_::c1_c_::set(types::options e)
{
+ destroy_();
type_ = e;
+ switch (type_) {
+ case types::ul_info_transfer_r8:
+ c.init<ul_info_transfer_r8_ies_s>();
+ break;
+ case types::ul_info_transfer_r16:
+ c.init<ul_info_transfer_r16_ies_s>();
+ break;
+ case types::spare2:
+ break;
+ case types::spare1:
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_::c1_c_");
+ }
+}
+ul_info_transfer_s::crit_exts_c_::c1_c_::c1_c_(const ul_info_transfer_s::crit_exts_c_::c1_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::ul_info_transfer_r8:
+ c.init(other.c.get<ul_info_transfer_r8_ies_s>());
+ break;
+ case types::ul_info_transfer_r16:
+ c.init(other.c.get<ul_info_transfer_r16_ies_s>());
+ break;
+ case types::spare2:
+ break;
+ case types::spare1:
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_::c1_c_");
+ }
+}
+ul_info_transfer_s::crit_exts_c_::c1_c_&
+ul_info_transfer_s::crit_exts_c_::c1_c_::operator=(const ul_info_transfer_s::crit_exts_c_::c1_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::ul_info_transfer_r8:
+ c.set(other.c.get<ul_info_transfer_r8_ies_s>());
+ break;
+ case types::ul_info_transfer_r16:
+ c.set(other.c.get<ul_info_transfer_r16_ies_s>());
+ break;
+ case types::spare2:
+ break;
+ case types::spare1:
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_::c1_c_");
+ }
+
+ return *this;
}
ul_info_transfer_r8_ies_s& ul_info_transfer_s::crit_exts_c_::c1_c_::set_ul_info_transfer_r8()
{
set(types::ul_info_transfer_r8);
- return c;
+ return c.get<ul_info_transfer_r8_ies_s>();
}
-void ul_info_transfer_s::crit_exts_c_::c1_c_::set_spare3()
+ul_info_transfer_r16_ies_s& ul_info_transfer_s::crit_exts_c_::c1_c_::set_ul_info_transfer_r16()
{
- set(types::spare3);
+ set(types::ul_info_transfer_r16);
+ return c.get<ul_info_transfer_r16_ies_s>();
}
void ul_info_transfer_s::crit_exts_c_::c1_c_::set_spare2()
{
@@ -11257,9 +14201,11 @@ void ul_info_transfer_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
switch (type_) {
case types::ul_info_transfer_r8:
j.write_fieldname("ulInformationTransfer-r8");
- c.to_json(j);
+ c.get<ul_info_transfer_r8_ies_s>().to_json(j);
break;
- case types::spare3:
+ case types::ul_info_transfer_r16:
+ j.write_fieldname("ulInformationTransfer-r16");
+ c.get<ul_info_transfer_r16_ies_s>().to_json(j);
break;
case types::spare2:
break;
@@ -11275,9 +14221,10 @@ SRSASN_CODE ul_info_transfer_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const
type_.pack(bref);
switch (type_) {
case types::ul_info_transfer_r8:
- HANDLE_CODE(c.pack(bref));
+ HANDLE_CODE(c.get<ul_info_transfer_r8_ies_s>().pack(bref));
break;
- case types::spare3:
+ case types::ul_info_transfer_r16:
+ HANDLE_CODE(c.get<ul_info_transfer_r16_ies_s>().pack(bref));
break;
case types::spare2:
break;
@@ -11296,6 +14243,170 @@ SRSASN_CODE ul_info_transfer_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
set(e);
switch (type_) {
case types::ul_info_transfer_r8:
+ HANDLE_CODE(c.get<ul_info_transfer_r8_ies_s>().unpack(bref));
+ break;
+ case types::ul_info_transfer_r16:
+ HANDLE_CODE(c.get<ul_info_transfer_r16_ies_s>().unpack(bref));
+ break;
+ case types::spare2:
+ break;
+ case types::spare1:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_::c1_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+// ULInformationTransferIRAT-r16 ::= SEQUENCE
+SRSASN_CODE ul_info_transfer_irat_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(crit_exts.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_info_transfer_irat_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(crit_exts.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void ul_info_transfer_irat_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("criticalExtensions");
+ crit_exts.to_json(j);
+ j.end_obj();
+}
+
+void ul_info_transfer_irat_r16_s::crit_exts_c_::set(types::options e)
+{
+ type_ = e;
+}
+ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_& ul_info_transfer_irat_r16_s::crit_exts_c_::set_c1()
+{
+ set(types::c1);
+ return c;
+}
+void ul_info_transfer_irat_r16_s::crit_exts_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void ul_info_transfer_irat_r16_s::crit_exts_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::c1:
+ j.write_fieldname("c1");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_irat_r16_s::crit_exts_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE ul_info_transfer_irat_r16_s::crit_exts_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::c1:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_irat_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_info_transfer_irat_r16_s::crit_exts_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::c1:
+ HANDLE_CODE(c.unpack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_irat_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+void ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::set(types::options e)
+{
+ type_ = e;
+}
+ul_info_transfer_irat_r16_ies_s& ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::set_ul_info_transfer_irat_r16()
+{
+ set(types::ul_info_transfer_irat_r16);
+ return c;
+}
+void ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::set_spare3()
+{
+ set(types::spare3);
+}
+void ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::set_spare2()
+{
+ set(types::spare2);
+}
+void ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::set_spare1()
+{
+ set(types::spare1);
+}
+void ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::ul_info_transfer_irat_r16:
+ j.write_fieldname("ulInformationTransferIRAT-r16");
+ c.to_json(j);
+ break;
+ case types::spare3:
+ break;
+ case types::spare2:
+ break;
+ case types::spare1:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::ul_info_transfer_irat_r16:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::spare3:
+ break;
+ case types::spare2:
+ break;
+ case types::spare1:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::ul_info_transfer_irat_r16:
HANDLE_CODE(c.unpack(bref));
break;
case types::spare3:
@@ -11305,7 +14416,7 @@ SRSASN_CODE ul_info_transfer_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
case types::spare1:
break;
default:
- log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_::c1_c_");
+ log_invalid_choice_id(type_, "ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
@@ -12371,6 +15482,21 @@ void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::destroy_()
case types::fail_info_r15:
c.destroy<fail_info_r15_s>();
break;
+ case types::ul_ded_msg_segment_r16:
+ c.destroy<ul_ded_msg_segment_r16_s>();
+ break;
+ case types::pur_cfg_request_r16:
+ c.destroy<pur_cfg_request_r16_s>();
+ break;
+ case types::fail_info_r16:
+ c.destroy<fail_info_r16_s>();
+ break;
+ case types::mcg_fail_info_r16:
+ c.destroy<mcg_fail_info_r16_s>();
+ break;
+ case types::ul_info_transfer_irat_r16:
+ c.destroy<ul_info_transfer_irat_r16_s>();
+ break;
default:
break;
}
@@ -12413,15 +15539,20 @@ void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set(types::options e)
case types::fail_info_r15:
c.init<fail_info_r15_s>();
break;
- case types::spare5:
+ case types::ul_ded_msg_segment_r16:
+ c.init<ul_ded_msg_segment_r16_s>();
break;
- case types::spare4:
+ case types::pur_cfg_request_r16:
+ c.init<pur_cfg_request_r16_s>();
break;
- case types::spare3:
+ case types::fail_info_r16:
+ c.init<fail_info_r16_s>();
break;
- case types::spare2:
+ case types::mcg_fail_info_r16:
+ c.init<mcg_fail_info_r16_s>();
break;
- case types::spare1:
+ case types::ul_info_transfer_irat_r16:
+ c.init<ul_info_transfer_irat_r16_s>();
break;
case types::nulltype:
break;
@@ -12466,15 +15597,20 @@ ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::c2_c_(const ul_dcch_msg_type_c::msg
case types::fail_info_r15:
c.init(other.c.get<fail_info_r15_s>());
break;
- case types::spare5:
+ case types::ul_ded_msg_segment_r16:
+ c.init(other.c.get<ul_ded_msg_segment_r16_s>());
break;
- case types::spare4:
+ case types::pur_cfg_request_r16:
+ c.init(other.c.get<pur_cfg_request_r16_s>());
break;
- case types::spare3:
+ case types::fail_info_r16:
+ c.init(other.c.get<fail_info_r16_s>());
break;
- case types::spare2:
+ case types::mcg_fail_info_r16:
+ c.init(other.c.get<mcg_fail_info_r16_s>());
break;
- case types::spare1:
+ case types::ul_info_transfer_irat_r16:
+ c.init(other.c.get<ul_info_transfer_irat_r16_s>());
break;
case types::nulltype:
break;
@@ -12523,15 +15659,20 @@ ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::operator=(const ul_dcch_msg_type_c:
case types::fail_info_r15:
c.set(other.c.get<fail_info_r15_s>());
break;
- case types::spare5:
+ case types::ul_ded_msg_segment_r16:
+ c.set(other.c.get<ul_ded_msg_segment_r16_s>());
break;
- case types::spare4:
+ case types::pur_cfg_request_r16:
+ c.set(other.c.get<pur_cfg_request_r16_s>());
break;
- case types::spare3:
+ case types::fail_info_r16:
+ c.set(other.c.get<fail_info_r16_s>());
break;
- case types::spare2:
+ case types::mcg_fail_info_r16:
+ c.set(other.c.get<mcg_fail_info_r16_s>());
break;
- case types::spare1:
+ case types::ul_info_transfer_irat_r16:
+ c.set(other.c.get<ul_info_transfer_irat_r16_s>());
break;
case types::nulltype:
break;
@@ -12596,25 +15737,30 @@ fail_info_r15_s& ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set_fail_info_r15(
set(types::fail_info_r15);
return c.get<fail_info_r15_s>();
}
-void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set_spare5()
+ul_ded_msg_segment_r16_s& ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set_ul_ded_msg_segment_r16()
{
- set(types::spare5);
+ set(types::ul_ded_msg_segment_r16);
+ return c.get<ul_ded_msg_segment_r16_s>();
}
-void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set_spare4()
+pur_cfg_request_r16_s& ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set_pur_cfg_request_r16()
{
- set(types::spare4);
+ set(types::pur_cfg_request_r16);
+ return c.get<pur_cfg_request_r16_s>();
}
-void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set_spare3()
+fail_info_r16_s& ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set_fail_info_r16()
{
- set(types::spare3);
+ set(types::fail_info_r16);
+ return c.get<fail_info_r16_s>();
}
-void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set_spare2()
+mcg_fail_info_r16_s& ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set_mcg_fail_info_r16()
{
- set(types::spare2);
+ set(types::mcg_fail_info_r16);
+ return c.get<mcg_fail_info_r16_s>();
}
-void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set_spare1()
+ul_info_transfer_irat_r16_s& ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set_ul_info_transfer_irat_r16()
{
- set(types::spare1);
+ set(types::ul_info_transfer_irat_r16);
+ return c.get<ul_info_transfer_irat_r16_s>();
}
void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::to_json(json_writer& j) const
{
@@ -12664,15 +15810,25 @@ void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::to_json(json_writer& j) const
j.write_fieldname("failureInformation-r15");
c.get<fail_info_r15_s>().to_json(j);
break;
- case types::spare5:
+ case types::ul_ded_msg_segment_r16:
+ j.write_fieldname("ulDedicatedMessageSegment-r16");
+ c.get<ul_ded_msg_segment_r16_s>().to_json(j);
break;
- case types::spare4:
+ case types::pur_cfg_request_r16:
+ j.write_fieldname("purConfigurationRequest-r16");
+ c.get<pur_cfg_request_r16_s>().to_json(j);
break;
- case types::spare3:
+ case types::fail_info_r16:
+ j.write_fieldname("failureInformation-r16");
+ c.get<fail_info_r16_s>().to_json(j);
break;
- case types::spare2:
+ case types::mcg_fail_info_r16:
+ j.write_fieldname("mcgFailureInformation-r16");
+ c.get<mcg_fail_info_r16_s>().to_json(j);
break;
- case types::spare1:
+ case types::ul_info_transfer_irat_r16:
+ j.write_fieldname("ulInformationTransferIRAT-r16");
+ c.get<ul_info_transfer_irat_r16_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_");
@@ -12716,15 +15872,20 @@ SRSASN_CODE ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::pack(bit_ref& bref) con
case types::fail_info_r15:
HANDLE_CODE(c.get<fail_info_r15_s>().pack(bref));
break;
- case types::spare5:
+ case types::ul_ded_msg_segment_r16:
+ HANDLE_CODE(c.get<ul_ded_msg_segment_r16_s>().pack(bref));
break;
- case types::spare4:
+ case types::pur_cfg_request_r16:
+ HANDLE_CODE(c.get<pur_cfg_request_r16_s>().pack(bref));
break;
- case types::spare3:
+ case types::fail_info_r16:
+ HANDLE_CODE(c.get<fail_info_r16_s>().pack(bref));
break;
- case types::spare2:
+ case types::mcg_fail_info_r16:
+ HANDLE_CODE(c.get<mcg_fail_info_r16_s>().pack(bref));
break;
- case types::spare1:
+ case types::ul_info_transfer_irat_r16:
+ HANDLE_CODE(c.get<ul_info_transfer_irat_r16_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_");
@@ -12771,15 +15932,20 @@ SRSASN_CODE ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::unpack(cbit_ref& bref)
case types::fail_info_r15:
HANDLE_CODE(c.get<fail_info_r15_s>().unpack(bref));
break;
- case types::spare5:
+ case types::ul_ded_msg_segment_r16:
+ HANDLE_CODE(c.get<ul_ded_msg_segment_r16_s>().unpack(bref));
break;
- case types::spare4:
+ case types::pur_cfg_request_r16:
+ HANDLE_CODE(c.get<pur_cfg_request_r16_s>().unpack(bref));
break;
- case types::spare3:
+ case types::fail_info_r16:
+ HANDLE_CODE(c.get<fail_info_r16_s>().unpack(bref));
break;
- case types::spare2:
+ case types::mcg_fail_info_r16:
+ HANDLE_CODE(c.get<mcg_fail_info_r16_s>().unpack(bref));
break;
- case types::spare1:
+ case types::ul_info_transfer_irat_r16:
+ HANDLE_CODE(c.get<ul_info_transfer_irat_r16_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_");
diff --git a/lib/src/asn1/rrc_nbiot.cc b/lib/src/asn1/rrc_nbiot.cc
index af992e824..675cb845d 100644
--- a/lib/src/asn1/rrc_nbiot.cc
+++ b/lib/src/asn1/rrc_nbiot.cc
@@ -90,32 +90,72 @@ void ab_cfg_plmn_nb_r13_s::to_json(json_writer& j) const
j.end_obj();
}
-// T-PollRetransmit-NB-r13 ::= ENUMERATED
-const char* t_poll_retx_nb_r13_opts::to_string() const
+// ANR-Carrier-NB-r16 ::= SEQUENCE
+SRSASN_CODE anr_carrier_nb_r16_s::pack(bit_ref& bref) const
{
- static const char* options[] = {"ms250",
- "ms500",
- "ms1000",
- "ms2000",
- "ms3000",
- "ms4000",
- "ms6000",
- "ms10000",
- "ms15000",
- "ms25000",
- "ms40000",
- "ms60000",
- "ms90000",
- "ms120000",
- "ms180000",
- "ms300000-v1530"};
- return convert_enum_idx(options, 16, value, "t_poll_retx_nb_r13_e");
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(excluded_cell_list_r16_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, carrier_freq_idx_r16, (uint8_t)1u, (uint8_t)8u));
+ if (excluded_cell_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, excluded_cell_list_r16, 1, 16, integer_packer<uint16_t>(0, 503)));
+ }
+
+ return SRSASN_SUCCESS;
}
-uint32_t t_poll_retx_nb_r13_opts::to_number() const
+SRSASN_CODE anr_carrier_nb_r16_s::unpack(cbit_ref& bref)
{
- static const uint32_t options[] = {
- 250, 500, 1000, 2000, 3000, 4000, 6000, 10000, 15000, 25000, 40000, 60000, 90000, 120000, 180000, 300000};
- return map_enum_number(options, 16, value, "t_poll_retx_nb_r13_e");
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(excluded_cell_list_r16_present, 1));
+
+ HANDLE_CODE(unpack_integer(carrier_freq_idx_r16, bref, (uint8_t)1u, (uint8_t)8u));
+ if (excluded_cell_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(excluded_cell_list_r16, bref, 1, 16, integer_packer<uint16_t>(0, 503)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void anr_carrier_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("carrierFreqIndex-r16", carrier_freq_idx_r16);
+ if (excluded_cell_list_r16_present) {
+ j.start_array("excludedCellList-r16");
+ for (const auto& e1 : excluded_cell_list_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+// ANR-MeasConfig-NB-r16 ::= SEQUENCE
+SRSASN_CODE anr_meas_cfg_nb_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(pack_integer(bref, anr_quality_thres_r16, (uint8_t)0u, (uint8_t)113u));
+ HANDLE_CODE(pack_dyn_seq_of(bref, anr_carrier_list_r16, 1, 2));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE anr_meas_cfg_nb_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(unpack_integer(anr_quality_thres_r16, bref, (uint8_t)0u, (uint8_t)113u));
+ HANDLE_CODE(unpack_dyn_seq_of(anr_carrier_list_r16, bref, 1, 2));
+
+ return SRSASN_SUCCESS;
+}
+void anr_meas_cfg_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("anr-QualityThreshold-r16", anr_quality_thres_r16);
+ j.start_array("anr-CarrierList-r16");
+ for (const auto& e1 : anr_carrier_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.end_obj();
}
// CarrierFreq-NB-r13 ::= SEQUENCE
@@ -170,6 +210,186 @@ const char* carrier_freq_nb_r13_s::carrier_freq_offset_r13_opts::to_number_strin
return convert_enum_idx(options, 21, value, "carrier_freq_nb_r13_s::carrier_freq_offset_r13_e_");
}
+// MeasResultServCell-NB-r14 ::= SEQUENCE
+SRSASN_CODE meas_result_serv_cell_nb_r14_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, nrsrp_result_r14, (uint8_t)0u, (uint8_t)113u));
+ HANDLE_CODE(pack_integer(bref, nrsrq_result_r14, (int8_t)-30, (int8_t)46));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_result_serv_cell_nb_r14_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(nrsrp_result_r14, bref, (uint8_t)0u, (uint8_t)113u));
+ HANDLE_CODE(unpack_integer(nrsrq_result_r14, bref, (int8_t)-30, (int8_t)46));
+
+ return SRSASN_SUCCESS;
+}
+void meas_result_serv_cell_nb_r14_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("nrsrpResult-r14", nrsrp_result_r14);
+ j.write_int("nrsrqResult-r14", nrsrq_result_r14);
+ j.end_obj();
+}
+
+// ANR-MeasResult-NB-r16 ::= SEQUENCE
+SRSASN_CODE anr_meas_result_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pci_r16_present, 1));
+ HANDLE_CODE(bref.pack(meas_result_r16_present, 1));
+ HANDLE_CODE(bref.pack(cgi_info_r16_present, 1));
+
+ HANDLE_CODE(carrier_freq_r16.pack(bref));
+ if (pci_r16_present) {
+ HANDLE_CODE(pack_integer(bref, pci_r16, (uint16_t)0u, (uint16_t)503u));
+ }
+ HANDLE_CODE(meas_result_last_serv_cell_r16.pack(bref));
+ if (meas_result_r16_present) {
+ HANDLE_CODE(pack_integer(bref, meas_result_r16, (uint8_t)0u, (uint8_t)113u));
+ }
+ if (cgi_info_r16_present) {
+ HANDLE_CODE(bref.pack(cgi_info_r16.plmn_id_list_r16_present, 1));
+ HANDLE_CODE(cgi_info_r16.cell_global_id_r16.pack(bref));
+ HANDLE_CODE(cgi_info_r16.tac_r16.pack(bref));
+ if (cgi_info_r16.plmn_id_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, cgi_info_r16.plmn_id_list_r16, 1, 5));
+ }
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE anr_meas_result_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pci_r16_present, 1));
+ HANDLE_CODE(bref.unpack(meas_result_r16_present, 1));
+ HANDLE_CODE(bref.unpack(cgi_info_r16_present, 1));
+
+ HANDLE_CODE(carrier_freq_r16.unpack(bref));
+ if (pci_r16_present) {
+ HANDLE_CODE(unpack_integer(pci_r16, bref, (uint16_t)0u, (uint16_t)503u));
+ }
+ HANDLE_CODE(meas_result_last_serv_cell_r16.unpack(bref));
+ if (meas_result_r16_present) {
+ HANDLE_CODE(unpack_integer(meas_result_r16, bref, (uint8_t)0u, (uint8_t)113u));
+ }
+ if (cgi_info_r16_present) {
+ HANDLE_CODE(bref.unpack(cgi_info_r16.plmn_id_list_r16_present, 1));
+ HANDLE_CODE(cgi_info_r16.cell_global_id_r16.unpack(bref));
+ HANDLE_CODE(cgi_info_r16.tac_r16.unpack(bref));
+ if (cgi_info_r16.plmn_id_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(cgi_info_r16.plmn_id_list_r16, bref, 1, 5));
+ }
+ }
+
+ return SRSASN_SUCCESS;
+}
+void anr_meas_result_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("carrierFreq-r16");
+ carrier_freq_r16.to_json(j);
+ if (pci_r16_present) {
+ j.write_int("physCellId-r16", pci_r16);
+ }
+ j.write_fieldname("measResultLastServCell-r16");
+ meas_result_last_serv_cell_r16.to_json(j);
+ if (meas_result_r16_present) {
+ j.write_int("measResult-r16", meas_result_r16);
+ }
+ if (cgi_info_r16_present) {
+ j.write_fieldname("cgi-Info-r16");
+ j.start_obj();
+ j.write_fieldname("cellGlobalId-r16");
+ cgi_info_r16.cell_global_id_r16.to_json(j);
+ j.write_str("trackingAreaCode-r16", cgi_info_r16.tac_r16.to_string());
+ if (cgi_info_r16.plmn_id_list_r16_present) {
+ j.start_array("plmn-IdentityList-r16");
+ for (const auto& e1 : cgi_info_r16.plmn_id_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// ANR-MeasReport-NB-r16 ::= SEQUENCE
+SRSASN_CODE anr_meas_report_nb_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(serv_cell_id_r16_present, 1));
+
+ if (serv_cell_id_r16_present) {
+ HANDLE_CODE(serv_cell_id_r16.pack(bref));
+ }
+ HANDLE_CODE(meas_result_serv_cell_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, relative_time_stamp_r16, (uint8_t)0u, (uint8_t)95u));
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_list_r16, 1, 2));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE anr_meas_report_nb_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(serv_cell_id_r16_present, 1));
+
+ if (serv_cell_id_r16_present) {
+ HANDLE_CODE(serv_cell_id_r16.unpack(bref));
+ }
+ HANDLE_CODE(meas_result_serv_cell_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(relative_time_stamp_r16, bref, (uint8_t)0u, (uint8_t)95u));
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_list_r16, bref, 1, 2));
+
+ return SRSASN_SUCCESS;
+}
+void anr_meas_report_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (serv_cell_id_r16_present) {
+ j.write_fieldname("servCellIdentity-r16");
+ serv_cell_id_r16.to_json(j);
+ }
+ j.write_fieldname("measResultServCell-r16");
+ meas_result_serv_cell_r16.to_json(j);
+ j.write_int("relativeTimeStamp-r16", relative_time_stamp_r16);
+ j.start_array("measResultList-r16");
+ for (const auto& e1 : meas_result_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.end_obj();
+}
+
+// T-PollRetransmit-NB-r13 ::= ENUMERATED
+const char* t_poll_retx_nb_r13_opts::to_string() const
+{
+ static const char* options[] = {"ms250",
+ "ms500",
+ "ms1000",
+ "ms2000",
+ "ms3000",
+ "ms4000",
+ "ms6000",
+ "ms10000",
+ "ms15000",
+ "ms25000",
+ "ms40000",
+ "ms60000",
+ "ms90000",
+ "ms120000",
+ "ms180000",
+ "ms300000-v1530"};
+ return convert_enum_idx(options, 16, value, "t_poll_retx_nb_r13_e");
+}
+uint32_t t_poll_retx_nb_r13_opts::to_number() const
+{
+ static const uint32_t options[] = {
+ 250, 500, 1000, 2000, 3000, 4000, 6000, 10000, 15000, 25000, 40000, 60000, 90000, 120000, 180000, 300000};
+ return map_enum_number(options, 16, value, "t_poll_retx_nb_r13_e");
+}
+
// CarrierFreq-NB-v1550 ::= SEQUENCE
SRSASN_CODE carrier_freq_nb_v1550_s::pack(bit_ref& bref) const
{
@@ -1071,6 +1291,112 @@ void lc_ch_cfg_nb_r13_s::to_json(json_writer& j) const
j.end_obj();
}
+// NPDSCH-16QAM-Config-NB-r17 ::= SEQUENCE
+SRSASN_CODE npdsch_minus16_qam_cfg_nb_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(nrs_pwr_ratio_r17_present, 1));
+ HANDLE_CODE(bref.pack(nrs_pwr_ratio_with_crs_r17_present, 1));
+
+ if (nrs_pwr_ratio_r17_present) {
+ HANDLE_CODE(nrs_pwr_ratio_r17.pack(bref));
+ }
+ if (nrs_pwr_ratio_with_crs_r17_present) {
+ HANDLE_CODE(nrs_pwr_ratio_with_crs_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE npdsch_minus16_qam_cfg_nb_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(nrs_pwr_ratio_r17_present, 1));
+ HANDLE_CODE(bref.unpack(nrs_pwr_ratio_with_crs_r17_present, 1));
+
+ if (nrs_pwr_ratio_r17_present) {
+ HANDLE_CODE(nrs_pwr_ratio_r17.unpack(bref));
+ }
+ if (nrs_pwr_ratio_with_crs_r17_present) {
+ HANDLE_CODE(nrs_pwr_ratio_with_crs_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void npdsch_minus16_qam_cfg_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (nrs_pwr_ratio_r17_present) {
+ j.write_str("nrs-PowerRatio-r17", nrs_pwr_ratio_r17.to_string());
+ }
+ if (nrs_pwr_ratio_with_crs_r17_present) {
+ j.write_str("nrs-PowerRatioWithCRS-r17", nrs_pwr_ratio_with_crs_r17.to_string());
+ }
+ j.end_obj();
+}
+
+const char* npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_r17_opts::to_string() const
+{
+ static const char* options[] = {"dB-6", "dB-4dot77", "dB-3", "dB-1dot77", "dB0", "dB1", "dB2", "dB3"};
+ return convert_enum_idx(options, 8, value, "npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_r17_e_");
+}
+float npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_r17_opts::to_number() const
+{
+ static const float options[] = {-6.0, -4.77, -3.0, -1.77, 0.0, 1.0, 2.0, 3.0};
+ return map_enum_number(options, 8, value, "npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_r17_e_");
+}
+const char* npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_r17_opts::to_number_string() const
+{
+ static const char* options[] = {"-6", "-4.77", "-3", "-1.77", "0", "1", "2", "3"};
+ return convert_enum_idx(options, 8, value, "npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_r17_e_");
+}
+
+const char* npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_with_crs_r17_opts::to_string() const
+{
+ static const char* options[] = {"dB-6", "dB-4dot77", "dB-3", "dB-1dot77", "dB0", "dB1", "dB2", "dB3"};
+ return convert_enum_idx(options, 8, value, "npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_with_crs_r17_e_");
+}
+float npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_with_crs_r17_opts::to_number() const
+{
+ static const float options[] = {-6.0, -4.77, -3.0, -1.77, 0.0, 1.0, 2.0, 3.0};
+ return map_enum_number(options, 8, value, "npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_with_crs_r17_e_");
+}
+const char* npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_with_crs_r17_opts::to_number_string() const
+{
+ static const char* options[] = {"-6", "-4.77", "-3", "-1.77", "0", "1", "2", "3"};
+ return convert_enum_idx(options, 8, value, "npdsch_minus16_qam_cfg_nb_r17_s::nrs_pwr_ratio_with_crs_r17_e_");
+}
+
+// NPDSCH-MultiTB-Config-NB-r16 ::= SEQUENCE
+SRSASN_CODE npdsch_multi_tb_cfg_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(harq_ack_bundling_r16_present, 1));
+
+ HANDLE_CODE(multi_tb_cfg_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE npdsch_multi_tb_cfg_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(harq_ack_bundling_r16_present, 1));
+
+ HANDLE_CODE(multi_tb_cfg_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void npdsch_multi_tb_cfg_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("multiTB-Config-r16", multi_tb_cfg_r16.to_string());
+ if (harq_ack_bundling_r16_present) {
+ j.write_str("harq-AckBundling-r16", "true");
+ }
+ j.end_obj();
+}
+
+const char* npdsch_multi_tb_cfg_nb_r16_s::multi_tb_cfg_r16_opts::to_string() const
+{
+ static const char* options[] = {"interleaved", "nonInterleaved"};
+ return convert_enum_idx(options, 2, value, "npdsch_multi_tb_cfg_nb_r16_s::multi_tb_cfg_r16_e_");
+}
+
// PDCP-Config-NB-r13 ::= SEQUENCE
SRSASN_CODE pdcp_cfg_nb_r13_s::pack(bit_ref& bref) const
{
@@ -1082,6 +1408,17 @@ SRSASN_CODE pdcp_cfg_nb_r13_s::pack(bit_ref& bref) const
}
HANDLE_CODE(hdr_compress_r13.pack(bref));
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= ciphering_disabled_r16_present;
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ciphering_disabled_r16_present, 1));
+ }
+ }
return SRSASN_SUCCESS;
}
SRSASN_CODE pdcp_cfg_nb_r13_s::unpack(cbit_ref& bref)
@@ -1094,6 +1431,16 @@ SRSASN_CODE pdcp_cfg_nb_r13_s::unpack(cbit_ref& bref)
}
HANDLE_CODE(hdr_compress_r13.unpack(bref));
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(ciphering_disabled_r16_present, 1));
+ }
+ }
return SRSASN_SUCCESS;
}
void pdcp_cfg_nb_r13_s::to_json(json_writer& j) const
@@ -1104,6 +1451,11 @@ void pdcp_cfg_nb_r13_s::to_json(json_writer& j) const
}
j.write_fieldname("headerCompression-r13");
hdr_compress_r13.to_json(j);
+ if (ext) {
+ if (ciphering_disabled_r16_present) {
+ j.write_str("cipheringDisabled-r16", "true");
+ }
+ }
j.end_obj();
}
@@ -1347,6 +1699,27 @@ void rlc_cfg_nb_v1430_s::to_json(json_writer& j) const
j.end_obj();
}
+// RLC-Config-NB-v1700 ::= SEQUENCE
+SRSASN_CODE rlc_cfg_nb_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(t_reordering_ext_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rlc_cfg_nb_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(t_reordering_ext_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void rlc_cfg_nb_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("t-ReorderingExt-r17");
+ t_reordering_ext_r17.to_json(j);
+ j.end_obj();
+}
+
// SR-NPRACH-Resource-NB-r15 ::= SEQUENCE
SRSASN_CODE sr_nprach_res_nb_r15_s::pack(bit_ref& bref) const
{
@@ -1512,6 +1885,18 @@ const char* sr_nprach_res_nb_r15_s::alpha_r15_opts::to_number_string() const
return convert_enum_idx(options, 8, value, "sr_nprach_res_nb_r15_s::alpha_r15_e_");
}
+// SR-ProhibitTimerOffset-NB-r17 ::= ENUMERATED
+const char* sr_prohibit_timer_offset_nb_r17_opts::to_string() const
+{
+ static const char* options[] = {"ms90", "ms180", "ms270", "ms360", "ms450", "ms540", "ms1080", "spare"};
+ return convert_enum_idx(options, 8, value, "sr_prohibit_timer_offset_nb_r17_e");
+}
+uint16_t sr_prohibit_timer_offset_nb_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {90, 180, 270, 360, 450, 540, 1080};
+ return map_enum_number(options, 7, value, "sr_prohibit_timer_offset_nb_r17_e");
+}
+
// UL-CarrierConfigDedicated-NB-r13 ::= SEQUENCE
SRSASN_CODE ul_carrier_cfg_ded_nb_r13_s::pack(bit_ref& bref) const
{
@@ -1632,6 +2017,8 @@ SRSASN_CODE drb_to_add_mod_nb_r13_s::pack(bit_ref& bref) const
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= rlc_cfg_v1430.is_present();
+ group_flags[1] |= pdu_session_r16_present;
+ group_flags[2] |= rlc_cfg_v1700.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -1642,6 +2029,22 @@ SRSASN_CODE drb_to_add_mod_nb_r13_s::pack(bit_ref& bref) const
HANDLE_CODE(rlc_cfg_v1430->pack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(pdu_session_r16_present, 1));
+ if (pdu_session_r16_present) {
+ HANDLE_CODE(pack_integer(bref, pdu_session_r16, (uint16_t)0u, (uint16_t)255u));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(rlc_cfg_v1700.is_present(), 1));
+ if (rlc_cfg_v1700.is_present()) {
+ HANDLE_CODE(rlc_cfg_v1700->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -1672,7 +2075,7 @@ SRSASN_CODE drb_to_add_mod_nb_r13_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(1);
+ ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -1685,6 +2088,24 @@ SRSASN_CODE drb_to_add_mod_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(rlc_cfg_v1430->unpack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(pdu_session_r16_present, 1));
+ if (pdu_session_r16_present) {
+ HANDLE_CODE(unpack_integer(pdu_session_r16, bref, (uint16_t)0u, (uint16_t)255u));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool rlc_cfg_v1700_present;
+ HANDLE_CODE(bref.unpack(rlc_cfg_v1700_present, 1));
+ rlc_cfg_v1700.set_present(rlc_cfg_v1700_present);
+ if (rlc_cfg_v1700.is_present()) {
+ HANDLE_CODE(rlc_cfg_v1700->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -1715,6 +2136,13 @@ void drb_to_add_mod_nb_r13_s::to_json(json_writer& j) const
j.write_fieldname("rlc-Config-v1430");
rlc_cfg_v1430->to_json(j);
}
+ if (pdu_session_r16_present) {
+ j.write_int("pdu-Session-r16", pdu_session_r16);
+ }
+ if (rlc_cfg_v1700.is_present()) {
+ j.write_fieldname("rlc-Config-v1700");
+ rlc_cfg_v1700->to_json(j);
+ }
}
j.end_obj();
}
@@ -2014,6 +2442,58 @@ uint8_t npdcch_cfg_ded_nb_v1530_s::npdcch_start_sf_uss_v1530_opts::to_number() c
return map_enum_number(options, 2, value, "npdcch_cfg_ded_nb_v1530_s::npdcch_start_sf_uss_v1530_e_");
}
+// NPDSCH-ConfigDedicated-NB-r16 ::= SEQUENCE
+SRSASN_CODE npdsch_cfg_ded_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(npdsch_multi_tb_cfg_r16_present, 1));
+
+ if (npdsch_multi_tb_cfg_r16_present) {
+ HANDLE_CODE(npdsch_multi_tb_cfg_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE npdsch_cfg_ded_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(npdsch_multi_tb_cfg_r16_present, 1));
+
+ if (npdsch_multi_tb_cfg_r16_present) {
+ HANDLE_CODE(npdsch_multi_tb_cfg_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void npdsch_cfg_ded_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (npdsch_multi_tb_cfg_r16_present) {
+ j.write_fieldname("npdsch-MultiTB-Config-r16");
+ npdsch_multi_tb_cfg_r16.to_json(j);
+ }
+ j.end_obj();
+}
+
+// NPDSCH-ConfigDedicated-NB-v1710 ::= SEQUENCE
+SRSASN_CODE npdsch_cfg_ded_nb_v1710_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(npdsch_minus16_qam_cfg_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE npdsch_cfg_ded_nb_v1710_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(npdsch_minus16_qam_cfg_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void npdsch_cfg_ded_nb_v1710_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("npdsch-16QAM-Config-r17");
+ npdsch_minus16_qam_cfg_r17.to_json(j);
+ j.end_obj();
+}
+
// NPUSCH-ConfigDedicated-NB-r13 ::= SEQUENCE
SRSASN_CODE npusch_cfg_ded_nb_r13_s::pack(bit_ref& bref) const
{
@@ -2060,6 +2540,118 @@ void npusch_cfg_ded_nb_r13_s::to_json(json_writer& j) const
j.end_obj();
}
+// NPUSCH-ConfigDedicated-NB-v1610 ::= SEQUENCE
+SRSASN_CODE npusch_cfg_ded_nb_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(npusch_multi_tb_cfg_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE npusch_cfg_ded_nb_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(npusch_multi_tb_cfg_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void npusch_cfg_ded_nb_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("npusch-MultiTB-Config-r16", npusch_multi_tb_cfg_r16.to_string());
+ j.end_obj();
+}
+
+const char* npusch_cfg_ded_nb_v1610_s::npusch_multi_tb_cfg_r16_opts::to_string() const
+{
+ static const char* options[] = {"interleaved", "nonInterleaved"};
+ return convert_enum_idx(options, 2, value, "npusch_cfg_ded_nb_v1610_s::npusch_multi_tb_cfg_r16_e_");
+}
+
+// NPUSCH-ConfigDedicated-NB-v1700 ::= SEQUENCE
+SRSASN_CODE npusch_cfg_ded_nb_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(npusch_minus16_qam_cfg_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE npusch_cfg_ded_nb_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(npusch_minus16_qam_cfg_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void npusch_cfg_ded_nb_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (npusch_minus16_qam_cfg_r17_present) {
+ j.write_str("npusch-16QAM-Config-r17", "true");
+ }
+ j.end_obj();
+}
+
+// NPUSCH-TxDuration-NB-r17 ::= SEQUENCE
+SRSASN_CODE npusch_tx_dur_nb_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(npusch_tx_dur_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE npusch_tx_dur_nb_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(npusch_tx_dur_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void npusch_tx_dur_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("npusch-TxDuration-r17", npusch_tx_dur_r17.to_string());
+ j.end_obj();
+}
+
+const char* npusch_tx_dur_nb_r17_s::npusch_tx_dur_r17_opts::to_string() const
+{
+ static const char* options[] = {"ms2", "ms4", "ms8", "ms16", "ms32", "ms64", "ms128", "ms256"};
+ return convert_enum_idx(options, 8, value, "npusch_tx_dur_nb_r17_s::npusch_tx_dur_r17_e_");
+}
+uint16_t npusch_tx_dur_nb_r17_s::npusch_tx_dur_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {2, 4, 8, 16, 32, 64, 128, 256};
+ return map_enum_number(options, 8, value, "npusch_tx_dur_nb_r17_s::npusch_tx_dur_r17_e_");
+}
+
+// OffsetThresholdTA-NB-r17 ::= ENUMERATED
+const char* offset_thres_ta_nb_r17_opts::to_string() const
+{
+ static const char* options[] = {"ms0dot5",
+ "ms1",
+ "ms2",
+ "ms3",
+ "ms4",
+ "ms5",
+ "ms6",
+ "ms7",
+ "ms8",
+ "ms9",
+ "ms10",
+ "ms11",
+ "ms12",
+ "ms13",
+ "ms14",
+ "ms15"};
+ return convert_enum_idx(options, 16, value, "offset_thres_ta_nb_r17_e");
+}
+float offset_thres_ta_nb_r17_opts::to_number() const
+{
+ static const float options[] = {0.5, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0};
+ return map_enum_number(options, 16, value, "offset_thres_ta_nb_r17_e");
+}
+const char* offset_thres_ta_nb_r17_opts::to_number_string() const
+{
+ static const char* options[] = {
+ "0.5", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"};
+ return convert_enum_idx(options, 16, value, "offset_thres_ta_nb_r17_e");
+}
+
// PeriodicBSR-Timer-NB-r13 ::= ENUMERATED
const char* periodic_bsr_timer_nb_r13_opts::to_string() const
{
@@ -2072,6 +2664,662 @@ int16_t periodic_bsr_timer_nb_r13_opts::to_number() const
return map_enum_number(options, 7, value, "periodic_bsr_timer_nb_r13_e");
}
+// ResourceReservationConfig-NB-r16 ::= SEQUENCE
+SRSASN_CODE res_reserv_cfg_nb_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(periodicity_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, start_position_r16, (uint8_t)0u, (uint8_t)15u));
+ HANDLE_CODE(res_reserv_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_nb_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(periodicity_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(start_position_r16, bref, (uint8_t)0u, (uint8_t)15u));
+ HANDLE_CODE(res_reserv_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void res_reserv_cfg_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("periodicity-r16", periodicity_r16.to_string());
+ j.write_int("startPosition-r16", start_position_r16);
+ j.write_fieldname("resourceReservation-r16");
+ res_reserv_r16.to_json(j);
+ j.end_obj();
+}
+
+const char* res_reserv_cfg_nb_r16_s::periodicity_r16_opts::to_string() const
+{
+ static const char* options[] = {"ms10", "ms20", "ms40", "ms80", "ms160", "spare3", "spare2", "spare1"};
+ return convert_enum_idx(options, 8, value, "res_reserv_cfg_nb_r16_s::periodicity_r16_e_");
+}
+uint8_t res_reserv_cfg_nb_r16_s::periodicity_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {10, 20, 40, 80, 160};
+ return map_enum_number(options, 5, value, "res_reserv_cfg_nb_r16_s::periodicity_r16_e_");
+}
+
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::sf_bitmap_r16:
+ c.destroy<sf_bitmap_r16_c_>();
+ break;
+ case types::slot_cfg_r16:
+ c.destroy<slot_cfg_r16_s_>();
+ break;
+ default:
+ break;
+ }
+}
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::sf_bitmap_r16:
+ c.init<sf_bitmap_r16_c_>();
+ break;
+ case types::slot_cfg_r16:
+ c.init<slot_cfg_r16_s_>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_");
+ }
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::res_reserv_r16_c_(const res_reserv_cfg_nb_r16_s::res_reserv_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::sf_bitmap_r16:
+ c.init(other.c.get<sf_bitmap_r16_c_>());
+ break;
+ case types::slot_cfg_r16:
+ c.init(other.c.get<slot_cfg_r16_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_");
+ }
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_&
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::operator=(const res_reserv_cfg_nb_r16_s::res_reserv_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::sf_bitmap_r16:
+ c.set(other.c.get<sf_bitmap_r16_c_>());
+ break;
+ case types::slot_cfg_r16:
+ c.set(other.c.get<slot_cfg_r16_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_");
+ }
+
+ return *this;
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_&
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::set_sf_bitmap_r16()
+{
+ set(types::sf_bitmap_r16);
+ return c.get<sf_bitmap_r16_c_>();
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_&
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::set_slot_cfg_r16()
+{
+ set(types::slot_cfg_r16);
+ return c.get<slot_cfg_r16_s_>();
+}
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::sf_bitmap_r16:
+ j.write_fieldname("subframeBitmap-r16");
+ c.get<sf_bitmap_r16_c_>().to_json(j);
+ break;
+ case types::slot_cfg_r16:
+ j.write_fieldname("slotConfig-r16");
+ j.start_obj();
+ j.write_fieldname("slotBitmap-r16");
+ c.get<slot_cfg_r16_s_>().slot_bitmap_r16.to_json(j);
+ j.write_fieldname("symbolBitmap-r16");
+ c.get<slot_cfg_r16_s_>().symbol_bitmap_r16.to_json(j);
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::sf_bitmap_r16:
+ HANDLE_CODE(c.get<sf_bitmap_r16_c_>().pack(bref));
+ break;
+ case types::slot_cfg_r16:
+ HANDLE_CODE(c.get<slot_cfg_r16_s_>().slot_bitmap_r16.pack(bref));
+ HANDLE_CODE(c.get<slot_cfg_r16_s_>().symbol_bitmap_r16.pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::sf_bitmap_r16:
+ HANDLE_CODE(c.get<sf_bitmap_r16_c_>().unpack(bref));
+ break;
+ case types::slot_cfg_r16:
+ HANDLE_CODE(c.get<slot_cfg_r16_s_>().slot_bitmap_r16.unpack(bref));
+ HANDLE_CODE(c.get<slot_cfg_r16_s_>().symbol_bitmap_r16.unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::sf_pattern10ms:
+ c.destroy<fixed_bitstring<10> >();
+ break;
+ case types::sf_pattern40ms:
+ c.destroy<fixed_bitstring<40> >();
+ break;
+ default:
+ break;
+ }
+}
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::sf_pattern10ms:
+ c.init<fixed_bitstring<10> >();
+ break;
+ case types::sf_pattern40ms:
+ c.init<fixed_bitstring<40> >();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_");
+ }
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::sf_bitmap_r16_c_(
+ const res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::sf_pattern10ms:
+ c.init(other.c.get<fixed_bitstring<10> >());
+ break;
+ case types::sf_pattern40ms:
+ c.init(other.c.get<fixed_bitstring<40> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_");
+ }
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_&
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::operator=(
+ const res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::sf_pattern10ms:
+ c.set(other.c.get<fixed_bitstring<10> >());
+ break;
+ case types::sf_pattern40ms:
+ c.set(other.c.get<fixed_bitstring<40> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_");
+ }
+
+ return *this;
+}
+fixed_bitstring<10>& res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::set_sf_pattern10ms()
+{
+ set(types::sf_pattern10ms);
+ return c.get<fixed_bitstring<10> >();
+}
+fixed_bitstring<40>& res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::set_sf_pattern40ms()
+{
+ set(types::sf_pattern40ms);
+ return c.get<fixed_bitstring<40> >();
+}
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::sf_pattern10ms:
+ j.write_str("subframePattern10ms", c.get<fixed_bitstring<10> >().to_string());
+ break;
+ case types::sf_pattern40ms:
+ j.write_str("subframePattern40ms", c.get<fixed_bitstring<40> >().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::sf_pattern10ms:
+ HANDLE_CODE(c.get<fixed_bitstring<10> >().pack(bref));
+ break;
+ case types::sf_pattern40ms:
+ HANDLE_CODE(c.get<fixed_bitstring<40> >().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::sf_pattern10ms:
+ HANDLE_CODE(c.get<fixed_bitstring<10> >().unpack(bref));
+ break;
+ case types::sf_pattern40ms:
+ HANDLE_CODE(c.get<fixed_bitstring<40> >().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"subframePattern10ms", "subframePattern40ms"};
+ return convert_enum_idx(options, 2, value, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::types");
+}
+uint8_t res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::types_opts::to_number() const
+{
+ static const uint8_t options[] = {10, 40};
+ return map_enum_number(options, 2, value, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::types");
+}
+
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.destroy<fixed_bitstring<20> >();
+ break;
+ case types::slot_pattern40ms:
+ c.destroy<fixed_bitstring<80> >();
+ break;
+ default:
+ break;
+ }
+}
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.init<fixed_bitstring<20> >();
+ break;
+ case types::slot_pattern40ms:
+ c.init<fixed_bitstring<80> >();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_");
+ }
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::slot_bitmap_r16_c_(
+ const res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.init(other.c.get<fixed_bitstring<20> >());
+ break;
+ case types::slot_pattern40ms:
+ c.init(other.c.get<fixed_bitstring<80> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_");
+ }
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_&
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::operator=(
+ const res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::slot_pattern10ms:
+ c.set(other.c.get<fixed_bitstring<20> >());
+ break;
+ case types::slot_pattern40ms:
+ c.set(other.c.get<fixed_bitstring<80> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_");
+ }
+
+ return *this;
+}
+fixed_bitstring<20>&
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::set_slot_pattern10ms()
+{
+ set(types::slot_pattern10ms);
+ return c.get<fixed_bitstring<20> >();
+}
+fixed_bitstring<80>&
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::set_slot_pattern40ms()
+{
+ set(types::slot_pattern40ms);
+ return c.get<fixed_bitstring<80> >();
+}
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::slot_pattern10ms:
+ j.write_str("slotPattern10ms", c.get<fixed_bitstring<20> >().to_string());
+ break;
+ case types::slot_pattern40ms:
+ j.write_str("slotPattern40ms", c.get<fixed_bitstring<80> >().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::slot_pattern10ms:
+ HANDLE_CODE(c.get<fixed_bitstring<20> >().pack(bref));
+ break;
+ case types::slot_pattern40ms:
+ HANDLE_CODE(c.get<fixed_bitstring<80> >().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::slot_pattern10ms:
+ HANDLE_CODE(c.get<fixed_bitstring<20> >().unpack(bref));
+ break;
+ case types::slot_pattern40ms:
+ HANDLE_CODE(c.get<fixed_bitstring<80> >().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char*
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"slotPattern10ms", "slotPattern40ms"};
+ return convert_enum_idx(
+ options, 2, value, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::types");
+}
+uint8_t res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::types_opts::to_number() const
+{
+ static const uint8_t options[] = {10, 40};
+ return map_enum_number(
+ options, 2, value, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::slot_bitmap_r16_c_::types");
+}
+
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::symbol_bitmap_fdd_dl:
+ c.destroy<symbol_bitmap_fdd_dl_s_>();
+ break;
+ case types::symbol_bitmap_fdd_ul_or_tdd:
+ c.destroy<symbol_bitmap_fdd_ul_or_tdd_s_>();
+ break;
+ default:
+ break;
+ }
+}
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::symbol_bitmap_fdd_dl:
+ c.init<symbol_bitmap_fdd_dl_s_>();
+ break;
+ case types::symbol_bitmap_fdd_ul_or_tdd:
+ c.init<symbol_bitmap_fdd_ul_or_tdd_s_>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_");
+ }
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::symbol_bitmap_r16_c_(
+ const res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::symbol_bitmap_fdd_dl:
+ c.init(other.c.get<symbol_bitmap_fdd_dl_s_>());
+ break;
+ case types::symbol_bitmap_fdd_ul_or_tdd:
+ c.init(other.c.get<symbol_bitmap_fdd_ul_or_tdd_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_");
+ }
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_&
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::operator=(
+ const res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::symbol_bitmap_fdd_dl:
+ c.set(other.c.get<symbol_bitmap_fdd_dl_s_>());
+ break;
+ case types::symbol_bitmap_fdd_ul_or_tdd:
+ c.set(other.c.get<symbol_bitmap_fdd_ul_or_tdd_s_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_");
+ }
+
+ return *this;
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::symbol_bitmap_fdd_dl_s_&
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::set_symbol_bitmap_fdd_dl()
+{
+ set(types::symbol_bitmap_fdd_dl);
+ return c.get<symbol_bitmap_fdd_dl_s_>();
+}
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::symbol_bitmap_fdd_ul_or_tdd_s_&
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::set_symbol_bitmap_fdd_ul_or_tdd()
+{
+ set(types::symbol_bitmap_fdd_ul_or_tdd);
+ return c.get<symbol_bitmap_fdd_ul_or_tdd_s_>();
+}
+void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::symbol_bitmap_fdd_dl:
+ j.write_fieldname("symbolBitmapFddDl");
+ j.start_obj();
+ if (c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap1_r16_present) {
+ j.write_str("symbolBitmap1-r16", c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap1_r16.to_string());
+ }
+ if (c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap2_r16_present) {
+ j.write_str("symbolBitmap2-r16", c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap2_r16.to_string());
+ }
+ j.end_obj();
+ break;
+ case types::symbol_bitmap_fdd_ul_or_tdd:
+ j.write_fieldname("symbolBitmapFddUlOrTdd");
+ j.start_obj();
+ if (c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap1_r16_present) {
+ j.write_str("symbolBitmap1-r16", c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap1_r16.to_string());
+ }
+ if (c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap2_r16_present) {
+ j.write_str("symbolBitmap2-r16", c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap2_r16.to_string());
+ }
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::symbol_bitmap_fdd_dl:
+ HANDLE_CODE(bref.pack(c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap1_r16_present, 1));
+ HANDLE_CODE(bref.pack(c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap2_r16_present, 1));
+ if (c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap1_r16_present) {
+ HANDLE_CODE(c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap1_r16.pack(bref));
+ }
+ if (c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap2_r16_present) {
+ HANDLE_CODE(c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap2_r16.pack(bref));
+ }
+ break;
+ case types::symbol_bitmap_fdd_ul_or_tdd:
+ HANDLE_CODE(bref.pack(c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap1_r16_present, 1));
+ HANDLE_CODE(bref.pack(c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap2_r16_present, 1));
+ if (c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap1_r16_present) {
+ HANDLE_CODE(c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap1_r16.pack(bref));
+ }
+ if (c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap2_r16_present) {
+ HANDLE_CODE(c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap2_r16.pack(bref));
+ }
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::symbol_bitmap_fdd_dl:
+ HANDLE_CODE(bref.unpack(c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap2_r16_present, 1));
+ if (c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap1_r16_present) {
+ HANDLE_CODE(c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap1_r16.unpack(bref));
+ }
+ if (c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap2_r16_present) {
+ HANDLE_CODE(c.get<symbol_bitmap_fdd_dl_s_>().symbol_bitmap2_r16.unpack(bref));
+ }
+ break;
+ case types::symbol_bitmap_fdd_ul_or_tdd:
+ HANDLE_CODE(bref.unpack(c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap2_r16_present, 1));
+ if (c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap1_r16_present) {
+ HANDLE_CODE(c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap1_r16.unpack(bref));
+ }
+ if (c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap2_r16_present) {
+ HANDLE_CODE(c.get<symbol_bitmap_fdd_ul_or_tdd_s_>().symbol_bitmap2_r16.unpack(bref));
+ }
+ break;
+ default:
+ log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char*
+res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"symbolBitmapFddDl", "symbolBitmapFddUlOrTdd"};
+ return convert_enum_idx(
+ options, 2, value, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::types");
+}
+
+const char* res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"subframeBitmap-r16", "slotConfig-r16"};
+ return convert_enum_idx(options, 2, value, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::types");
+}
+
// RetxBSR-Timer-NB-r13 ::= ENUMERATED
const char* retx_bsr_timer_nb_r13_opts::to_string() const
{
@@ -2246,6 +3494,37 @@ SRSASN_CODE sr_without_harq_ack_cfg_nb_r15_c::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+// SR-WithoutHARQ-ACK-Config-NB-v1700 ::= SEQUENCE
+SRSASN_CODE sr_without_harq_ack_cfg_nb_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(sr_prohibit_timer_offset_r17_present, 1));
+
+ if (sr_prohibit_timer_offset_r17_present) {
+ HANDLE_CODE(sr_prohibit_timer_offset_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sr_without_harq_ack_cfg_nb_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(sr_prohibit_timer_offset_r17_present, 1));
+
+ if (sr_prohibit_timer_offset_r17_present) {
+ HANDLE_CODE(sr_prohibit_timer_offset_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sr_without_harq_ack_cfg_nb_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (sr_prohibit_timer_offset_r17_present) {
+ j.write_fieldname("sr-ProhibitTimerOffset-r17");
+ sr_prohibit_timer_offset_r17.to_json(j);
+ }
+ j.end_obj();
+}
+
// SRB-ToAddMod-NB-r13 ::= SEQUENCE
SRSASN_CODE srb_to_add_mod_nb_r13_s::pack(bit_ref& bref) const
{
@@ -2263,6 +3542,7 @@ SRSASN_CODE srb_to_add_mod_nb_r13_s::pack(bit_ref& bref) const
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= rlc_cfg_v1430.is_present();
+ group_flags[1] |= rlc_cfg_v1700.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -2273,6 +3553,14 @@ SRSASN_CODE srb_to_add_mod_nb_r13_s::pack(bit_ref& bref) const
HANDLE_CODE(rlc_cfg_v1430->pack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(rlc_cfg_v1700.is_present(), 1));
+ if (rlc_cfg_v1700.is_present()) {
+ HANDLE_CODE(rlc_cfg_v1700->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -2290,7 +3578,7 @@ SRSASN_CODE srb_to_add_mod_nb_r13_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(1);
+ ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -2303,6 +3591,16 @@ SRSASN_CODE srb_to_add_mod_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(rlc_cfg_v1430->unpack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool rlc_cfg_v1700_present;
+ HANDLE_CODE(bref.unpack(rlc_cfg_v1700_present, 1));
+ rlc_cfg_v1700.set_present(rlc_cfg_v1700_present);
+ if (rlc_cfg_v1700.is_present()) {
+ HANDLE_CODE(rlc_cfg_v1700->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -2322,6 +3620,10 @@ void srb_to_add_mod_nb_r13_s::to_json(json_writer& j) const
j.write_fieldname("rlc-Config-v1430");
rlc_cfg_v1430->to_json(j);
}
+ if (rlc_cfg_v1700.is_present()) {
+ j.write_fieldname("rlc-Config-v1700");
+ rlc_cfg_v1700->to_json(j);
+ }
}
j.end_obj();
}
@@ -2480,6 +3782,37 @@ void ul_pwr_ctrl_ded_nb_r13_s::to_json(json_writer& j) const
j.end_obj();
}
+// UplinkPowerControlDedicated-NB-v1700 ::= SEQUENCE
+SRSASN_CODE ul_pwr_ctrl_ded_nb_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(delta_mcs_enabled_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ul_pwr_ctrl_ded_nb_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(delta_mcs_enabled_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void ul_pwr_ctrl_ded_nb_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("deltaMCS-Enabled-r17", delta_mcs_enabled_r17.to_string());
+ j.end_obj();
+}
+
+const char* ul_pwr_ctrl_ded_nb_v1700_s::delta_mcs_enabled_r17_opts::to_string() const
+{
+ static const char* options[] = {"en0", "en1"};
+ return convert_enum_idx(options, 2, value, "ul_pwr_ctrl_ded_nb_v1700_s::delta_mcs_enabled_r17_e_");
+}
+uint8_t ul_pwr_ctrl_ded_nb_v1700_s::delta_mcs_enabled_r17_opts::to_number() const
+{
+ static const uint8_t options[] = {0, 1};
+ return map_enum_number(options, 2, value, "ul_pwr_ctrl_ded_nb_v1700_s::delta_mcs_enabled_r17_e_");
+}
+
// MAC-MainConfig-NB-r13 ::= SEQUENCE
SRSASN_CODE mac_main_cfg_nb_r13_s::pack(bit_ref& bref) const
{
@@ -2509,6 +3842,7 @@ SRSASN_CODE mac_main_cfg_nb_r13_s::pack(bit_ref& bref) const
group_flags[0] |= data_inactivity_timer_cfg_r14.is_present();
group_flags[1] |= drx_cycle_v1430_present;
group_flags[2] |= ra_cfra_cfg_r14_present;
+ group_flags[3] |= offset_thres_ta_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -2533,6 +3867,14 @@ SRSASN_CODE mac_main_cfg_nb_r13_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(ra_cfra_cfg_r14_present, 1));
}
+ if (group_flags[3]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(offset_thres_ta_r17.is_present(), 1));
+ if (offset_thres_ta_r17.is_present()) {
+ HANDLE_CODE(offset_thres_ta_r17->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -2559,7 +3901,7 @@ SRSASN_CODE mac_main_cfg_nb_r13_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(3);
+ ext_groups_unpacker_guard group_flags(4);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -2586,6 +3928,16 @@ SRSASN_CODE mac_main_cfg_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(ra_cfra_cfg_r14_present, 1));
}
+ if (group_flags[3]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool offset_thres_ta_r17_present;
+ HANDLE_CODE(bref.unpack(offset_thres_ta_r17_present, 1));
+ offset_thres_ta_r17.set_present(offset_thres_ta_r17_present);
+ if (offset_thres_ta_r17.is_present()) {
+ HANDLE_CODE(offset_thres_ta_r17->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -2624,6 +3976,10 @@ void mac_main_cfg_nb_r13_s::to_json(json_writer& j) const
if (ra_cfra_cfg_r14_present) {
j.write_str("ra-CFRA-Config-r14", "true");
}
+ if (offset_thres_ta_r17.is_present()) {
+ j.write_fieldname("offsetThresholdTA-r17");
+ offset_thres_ta_r17->to_json(j);
+ }
}
j.end_obj();
}
@@ -2807,6 +4163,15 @@ SRSASN_CODE phys_cfg_ded_nb_r13_s::pack(bit_ref& bref) const
group_flags[1] |= interference_randomisation_cfg_r14_present;
group_flags[2] |= npdcch_cfg_ded_v1530.is_present();
group_flags[3] |= add_tx_sib1_cfg_v1540_present;
+ group_flags[4] |= npusch_cfg_ded_v1610.is_present();
+ group_flags[4] |= npdsch_cfg_ded_r16.is_present();
+ group_flags[4] |= res_reserv_cfg_dl_r16.is_present();
+ group_flags[4] |= res_reserv_cfg_ul_r16.is_present();
+ group_flags[5] |= ntn_cfg_ded_r17.is_present();
+ group_flags[5] |= npdsch_cfg_ded_v1700.is_present();
+ group_flags[5] |= ul_pwr_ctrl_ded_v1700.is_present();
+ group_flags[6] |= ul_segmented_precompensation_gap_r17_present;
+ group_flags[7] |= npusch_cfg_ded_v1740.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -2832,6 +4197,58 @@ SRSASN_CODE phys_cfg_ded_nb_r13_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(add_tx_sib1_cfg_v1540_present, 1));
}
+ if (group_flags[4]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(npusch_cfg_ded_v1610.is_present(), 1));
+ HANDLE_CODE(bref.pack(npdsch_cfg_ded_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(res_reserv_cfg_dl_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(res_reserv_cfg_ul_r16.is_present(), 1));
+ if (npusch_cfg_ded_v1610.is_present()) {
+ HANDLE_CODE(npusch_cfg_ded_v1610->pack(bref));
+ }
+ if (npdsch_cfg_ded_r16.is_present()) {
+ HANDLE_CODE(npdsch_cfg_ded_r16->pack(bref));
+ }
+ if (res_reserv_cfg_dl_r16.is_present()) {
+ HANDLE_CODE(res_reserv_cfg_dl_r16->pack(bref));
+ }
+ if (res_reserv_cfg_ul_r16.is_present()) {
+ HANDLE_CODE(res_reserv_cfg_ul_r16->pack(bref));
+ }
+ }
+ if (group_flags[5]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ntn_cfg_ded_r17.is_present(), 1));
+ HANDLE_CODE(bref.pack(npdsch_cfg_ded_v1700.is_present(), 1));
+ HANDLE_CODE(bref.pack(ul_pwr_ctrl_ded_v1700.is_present(), 1));
+ if (ntn_cfg_ded_r17.is_present()) {
+ HANDLE_CODE(ntn_cfg_ded_r17->npusch_tx_dur_r17.pack(bref));
+ }
+ if (npdsch_cfg_ded_v1700.is_present()) {
+ HANDLE_CODE(npdsch_cfg_ded_v1700->pack(bref));
+ }
+ if (ul_pwr_ctrl_ded_v1700.is_present()) {
+ HANDLE_CODE(ul_pwr_ctrl_ded_v1700->pack(bref));
+ }
+ }
+ if (group_flags[6]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ul_segmented_precompensation_gap_r17_present, 1));
+ if (ul_segmented_precompensation_gap_r17_present) {
+ HANDLE_CODE(ul_segmented_precompensation_gap_r17.pack(bref));
+ }
+ }
+ if (group_flags[7]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(npusch_cfg_ded_v1740.is_present(), 1));
+ if (npusch_cfg_ded_v1740.is_present()) {
+ HANDLE_CODE(npusch_cfg_ded_v1740->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -2857,7 +4274,7 @@ SRSASN_CODE phys_cfg_ded_nb_r13_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(4);
+ ext_groups_unpacker_guard group_flags(8);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -2885,6 +4302,74 @@ SRSASN_CODE phys_cfg_ded_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(add_tx_sib1_cfg_v1540_present, 1));
}
+ if (group_flags[4]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool npusch_cfg_ded_v1610_present;
+ HANDLE_CODE(bref.unpack(npusch_cfg_ded_v1610_present, 1));
+ npusch_cfg_ded_v1610.set_present(npusch_cfg_ded_v1610_present);
+ bool npdsch_cfg_ded_r16_present;
+ HANDLE_CODE(bref.unpack(npdsch_cfg_ded_r16_present, 1));
+ npdsch_cfg_ded_r16.set_present(npdsch_cfg_ded_r16_present);
+ bool res_reserv_cfg_dl_r16_present;
+ HANDLE_CODE(bref.unpack(res_reserv_cfg_dl_r16_present, 1));
+ res_reserv_cfg_dl_r16.set_present(res_reserv_cfg_dl_r16_present);
+ bool res_reserv_cfg_ul_r16_present;
+ HANDLE_CODE(bref.unpack(res_reserv_cfg_ul_r16_present, 1));
+ res_reserv_cfg_ul_r16.set_present(res_reserv_cfg_ul_r16_present);
+ if (npusch_cfg_ded_v1610.is_present()) {
+ HANDLE_CODE(npusch_cfg_ded_v1610->unpack(bref));
+ }
+ if (npdsch_cfg_ded_r16.is_present()) {
+ HANDLE_CODE(npdsch_cfg_ded_r16->unpack(bref));
+ }
+ if (res_reserv_cfg_dl_r16.is_present()) {
+ HANDLE_CODE(res_reserv_cfg_dl_r16->unpack(bref));
+ }
+ if (res_reserv_cfg_ul_r16.is_present()) {
+ HANDLE_CODE(res_reserv_cfg_ul_r16->unpack(bref));
+ }
+ }
+ if (group_flags[5]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool ntn_cfg_ded_r17_present;
+ HANDLE_CODE(bref.unpack(ntn_cfg_ded_r17_present, 1));
+ ntn_cfg_ded_r17.set_present(ntn_cfg_ded_r17_present);
+ bool npdsch_cfg_ded_v1700_present;
+ HANDLE_CODE(bref.unpack(npdsch_cfg_ded_v1700_present, 1));
+ npdsch_cfg_ded_v1700.set_present(npdsch_cfg_ded_v1700_present);
+ bool ul_pwr_ctrl_ded_v1700_present;
+ HANDLE_CODE(bref.unpack(ul_pwr_ctrl_ded_v1700_present, 1));
+ ul_pwr_ctrl_ded_v1700.set_present(ul_pwr_ctrl_ded_v1700_present);
+ if (ntn_cfg_ded_r17.is_present()) {
+ HANDLE_CODE(ntn_cfg_ded_r17->npusch_tx_dur_r17.unpack(bref));
+ }
+ if (npdsch_cfg_ded_v1700.is_present()) {
+ HANDLE_CODE(npdsch_cfg_ded_v1700->unpack(bref));
+ }
+ if (ul_pwr_ctrl_ded_v1700.is_present()) {
+ HANDLE_CODE(ul_pwr_ctrl_ded_v1700->unpack(bref));
+ }
+ }
+ if (group_flags[6]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(ul_segmented_precompensation_gap_r17_present, 1));
+ if (ul_segmented_precompensation_gap_r17_present) {
+ HANDLE_CODE(ul_segmented_precompensation_gap_r17.unpack(bref));
+ }
+ }
+ if (group_flags[7]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool npusch_cfg_ded_v1740_present;
+ HANDLE_CODE(bref.unpack(npusch_cfg_ded_v1740_present, 1));
+ npusch_cfg_ded_v1740.set_present(npusch_cfg_ded_v1740_present);
+ if (npusch_cfg_ded_v1740.is_present()) {
+ HANDLE_CODE(npusch_cfg_ded_v1740->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -2921,10 +4406,54 @@ void phys_cfg_ded_nb_r13_s::to_json(json_writer& j) const
if (add_tx_sib1_cfg_v1540_present) {
j.write_str("additionalTxSIB1-Config-v1540", "true");
}
+ if (npusch_cfg_ded_v1610.is_present()) {
+ j.write_fieldname("npusch-ConfigDedicated-v1610");
+ npusch_cfg_ded_v1610->to_json(j);
+ }
+ if (npdsch_cfg_ded_r16.is_present()) {
+ j.write_fieldname("npdsch-ConfigDedicated-r16");
+ npdsch_cfg_ded_r16->to_json(j);
+ }
+ if (res_reserv_cfg_dl_r16.is_present()) {
+ j.write_fieldname("resourceReservationConfigDL-r16");
+ res_reserv_cfg_dl_r16->to_json(j);
+ }
+ if (res_reserv_cfg_ul_r16.is_present()) {
+ j.write_fieldname("resourceReservationConfigUL-r16");
+ res_reserv_cfg_ul_r16->to_json(j);
+ }
+ if (ntn_cfg_ded_r17.is_present()) {
+ j.write_fieldname("ntn-ConfigDedicated-r17");
+ j.start_obj();
+ j.write_fieldname("npusch-TxDuration-r17");
+ ntn_cfg_ded_r17->npusch_tx_dur_r17.to_json(j);
+ j.end_obj();
+ }
+ if (npdsch_cfg_ded_v1700.is_present()) {
+ j.write_fieldname("npdsch-ConfigDedicated-v1700");
+ npdsch_cfg_ded_v1700->to_json(j);
+ }
+ if (ul_pwr_ctrl_ded_v1700.is_present()) {
+ j.write_fieldname("uplinkPowerControlDedicated-v1700");
+ ul_pwr_ctrl_ded_v1700->to_json(j);
+ }
+ if (ul_segmented_precompensation_gap_r17_present) {
+ j.write_str("uplinkSegmentedPrecompensationGap-r17", ul_segmented_precompensation_gap_r17.to_string());
+ }
+ if (npusch_cfg_ded_v1740.is_present()) {
+ j.write_fieldname("npusch-ConfigDedicated-v1740");
+ npusch_cfg_ded_v1740->to_json(j);
+ }
}
j.end_obj();
}
+const char* phys_cfg_ded_nb_r13_s::ul_segmented_precompensation_gap_r17_opts::to_string() const
+{
+ static const char* options[] = {"sym1", "sl1", "sl2"};
+ return convert_enum_idx(options, 3, value, "phys_cfg_ded_nb_r13_s::ul_segmented_precompensation_gap_r17_e_");
+}
+
// RLF-TimersAndConstants-NB-r13 ::= CHOICE
void rlf_timers_and_consts_nb_r13_c::set(types::options e)
{
@@ -3187,6 +4716,20 @@ SRSASN_CODE sched_request_cfg_nb_r15_s::pack(bit_ref& bref) const
HANDLE_CODE(sr_sps_bsr_cfg_r15.pack(bref));
}
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= sr_without_harq_ack_cfg_v1700.is_present();
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(sr_without_harq_ack_cfg_v1700.is_present(), 1));
+ if (sr_without_harq_ack_cfg_v1700.is_present()) {
+ HANDLE_CODE(sr_without_harq_ack_cfg_v1700->pack(bref));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
SRSASN_CODE sched_request_cfg_nb_r15_s::unpack(cbit_ref& bref)
@@ -3203,6 +4746,21 @@ SRSASN_CODE sched_request_cfg_nb_r15_s::unpack(cbit_ref& bref)
HANDLE_CODE(sr_sps_bsr_cfg_r15.unpack(bref));
}
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(1);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool sr_without_harq_ack_cfg_v1700_present;
+ HANDLE_CODE(bref.unpack(sr_without_harq_ack_cfg_v1700_present, 1));
+ sr_without_harq_ack_cfg_v1700.set_present(sr_without_harq_ack_cfg_v1700_present);
+ if (sr_without_harq_ack_cfg_v1700.is_present()) {
+ HANDLE_CODE(sr_without_harq_ack_cfg_v1700->unpack(bref));
+ }
+ }
+ }
return SRSASN_SUCCESS;
}
void sched_request_cfg_nb_r15_s::to_json(json_writer& j) const
@@ -3219,6 +4777,12 @@ void sched_request_cfg_nb_r15_s::to_json(json_writer& j) const
j.write_fieldname("sr-SPS-BSR-Config-r15");
sr_sps_bsr_cfg_r15.to_json(j);
}
+ if (ext) {
+ if (sr_without_harq_ack_cfg_v1700.is_present()) {
+ j.write_fieldname("sr-WithoutHARQ-ACK-Config-v1700");
+ sr_without_harq_ack_cfg_v1700->to_json(j);
+ }
+ }
j.end_obj();
}
@@ -3255,6 +4819,7 @@ SRSASN_CODE rr_cfg_ded_nb_r13_s::pack(bit_ref& bref) const
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= sched_request_cfg_r15.is_present();
+ group_flags[1] |= new_ue_id_r16_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -3265,6 +4830,14 @@ SRSASN_CODE rr_cfg_ded_nb_r13_s::pack(bit_ref& bref) const
HANDLE_CODE(sched_request_cfg_r15->pack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(new_ue_id_r16_present, 1));
+ if (new_ue_id_r16_present) {
+ HANDLE_CODE(new_ue_id_r16.pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -3298,7 +4871,7 @@ SRSASN_CODE rr_cfg_ded_nb_r13_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(1);
+ ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -3311,6 +4884,14 @@ SRSASN_CODE rr_cfg_ded_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(sched_request_cfg_r15->unpack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(new_ue_id_r16_present, 1));
+ if (new_ue_id_r16_present) {
+ HANDLE_CODE(new_ue_id_r16.unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -3355,6 +4936,9 @@ void rr_cfg_ded_nb_r13_s::to_json(json_writer& j) const
j.write_fieldname("schedulingRequestConfig-r15");
sched_request_cfg_r15->to_json(j);
}
+ if (new_ue_id_r16_present) {
+ j.write_str("newUE-Identity-r16", new_ue_id_r16.to_string());
+ }
}
j.end_obj();
}
@@ -3700,6 +5284,8 @@ SRSASN_CODE mib_nb_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(ab_enabled_r13, 1));
HANDLE_CODE(operation_mode_info_r13.pack(bref));
HANDLE_CODE(bref.pack(add_tx_sib1_r15, 1));
+ HANDLE_CODE(bref.pack(ab_enabled_minus5_gc_r16, 1));
+ HANDLE_CODE(part_earfcn_minus17.pack(bref));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
@@ -3713,6 +5299,8 @@ SRSASN_CODE mib_nb_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(ab_enabled_r13, 1));
HANDLE_CODE(operation_mode_info_r13.unpack(bref));
HANDLE_CODE(bref.unpack(add_tx_sib1_r15, 1));
+ HANDLE_CODE(bref.unpack(ab_enabled_minus5_gc_r16, 1));
+ HANDLE_CODE(part_earfcn_minus17.unpack(bref));
HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS;
@@ -3728,6 +5316,9 @@ void mib_nb_s::to_json(json_writer& j) const
j.write_fieldname("operationModeInfo-r13");
operation_mode_info_r13.to_json(j);
j.write_bool("additionalTransmissionSIB1-r15", add_tx_sib1_r15);
+ j.write_bool("ab-Enabled-5GC-r16", ab_enabled_minus5_gc_r16);
+ j.write_fieldname("partEARFCN-17");
+ part_earfcn_minus17.to_json(j);
j.write_str("spare", spare.to_string());
j.end_obj();
}
@@ -3930,6 +5521,140 @@ uint8_t mib_nb_s::operation_mode_info_r13_c_::types_opts::to_number() const
return 0;
}
+void mib_nb_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_nb_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_nb_s::part_earfcn_minus17_c_");
+ }
+}
+mib_nb_s::part_earfcn_minus17_c_::part_earfcn_minus17_c_(const mib_nb_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_nb_s::part_earfcn_minus17_c_");
+ }
+}
+mib_nb_s::part_earfcn_minus17_c_&
+mib_nb_s::part_earfcn_minus17_c_::operator=(const mib_nb_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_nb_s::part_earfcn_minus17_c_");
+ }
+
+ return *this;
+}
+fixed_bitstring<2>& mib_nb_s::part_earfcn_minus17_c_::set_spare()
+{
+ set(types::spare);
+ return c.get<fixed_bitstring<2> >();
+}
+fixed_bitstring<2>& mib_nb_s::part_earfcn_minus17_c_::set_earfcn_lsb()
+{
+ set(types::earfcn_lsb);
+ return c.get<fixed_bitstring<2> >();
+}
+void mib_nb_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_nb_s::part_earfcn_minus17_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE mib_nb_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_nb_s::part_earfcn_minus17_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mib_nb_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_nb_s::part_earfcn_minus17_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* mib_nb_s::part_earfcn_minus17_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"spare", "earfcn-LSB"};
+ return convert_enum_idx(options, 2, value, "mib_nb_s::part_earfcn_minus17_c_::types");
+}
+
// BCCH-BCH-Message-NB ::= SEQUENCE
SRSASN_CODE bcch_bch_msg_nb_s::pack(bit_ref& bref) const
{
@@ -4413,6 +6138,7 @@ SRSASN_CODE mib_tdd_nb_r15_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(ab_enabled_r15, 1));
HANDLE_CODE(operation_mode_info_r15.pack(bref));
HANDLE_CODE(sib1_carrier_info_r15.pack(bref));
+ HANDLE_CODE(bref.pack(ab_enabled_minus5_gc_r16, 1));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
@@ -4426,6 +6152,7 @@ SRSASN_CODE mib_tdd_nb_r15_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(ab_enabled_r15, 1));
HANDLE_CODE(operation_mode_info_r15.unpack(bref));
HANDLE_CODE(sib1_carrier_info_r15.unpack(bref));
+ HANDLE_CODE(bref.unpack(ab_enabled_minus5_gc_r16, 1));
HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS;
@@ -4441,6 +6168,7 @@ void mib_tdd_nb_r15_s::to_json(json_writer& j) const
j.write_fieldname("operationModeInfo-r15");
operation_mode_info_r15.to_json(j);
j.write_str("sib1-CarrierInfo-r15", sib1_carrier_info_r15.to_string());
+ j.write_bool("ab-Enabled-5GC-r16", ab_enabled_minus5_gc_r16);
j.write_str("spare", spare.to_string());
j.end_obj();
}
@@ -4712,17 +6440,69 @@ void ns_pmax_value_nb_r13_s::to_json(json_writer& j) const
j.end_obj();
}
+// PLMN-IdentityInfo-NB-v1700 ::= SEQUENCE
+SRSASN_CODE plmn_id_info_nb_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_nb_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_nb_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();
+}
+
// SIB-Type-NB-v1530 ::= ENUMERATED
const char* sib_type_nb_v1530_opts::to_string() const
{
- static const char* options[] = {
- "sibType23-NB-r15", "spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
+ static const char* options[] = {"sibType23-NB-r15",
+ "sibType27-NB-r16",
+ "sibType31-NB-r17",
+ "sibType32-NB-r17",
+ "spare4",
+ "spare3",
+ "spare2",
+ "spare1"};
return convert_enum_idx(options, 8, value, "sib_type_nb_v1530_e");
}
uint8_t sib_type_nb_v1530_opts::to_number() const
{
- static const uint8_t options[] = {23};
- return map_enum_number(options, 1, value, "sib_type_nb_v1530_e");
+ static const uint8_t options[] = {23, 27, 31, 32};
+ return map_enum_number(options, 4, value, "sib_type_nb_v1530_e");
+}
+
+// GWUS-NumGroups-NB-r16 ::= ENUMERATED
+const char* gwus_num_groups_nb_r16_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n4", "n8"};
+ return convert_enum_idx(options, 4, value, "gwus_num_groups_nb_r16_e");
+}
+uint8_t gwus_num_groups_nb_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 8};
+ return map_enum_number(options, 4, value, "gwus_num_groups_nb_r16_e");
}
// NSSS-RRM-Config-NB-r15 ::= SEQUENCE
@@ -4780,6 +6560,181 @@ uint8_t nsss_rrm_cfg_nb_r15_s::nsss_num_occ_diff_precoders_r15_opts::to_number()
return map_enum_number(options, 4, value, "nsss_rrm_cfg_nb_r15_s::nsss_num_occ_diff_precoders_r15_e_");
}
+// PLMN-IdentityInfo-5GC-NB-r16 ::= SEQUENCE
+SRSASN_CODE plmn_id_info_minus5_gc_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ng_u_data_transfer_r16_present, 1));
+ HANDLE_CODE(bref.pack(up_cio_t_minus5_gs_optim_r16_present, 1));
+
+ HANDLE_CODE(plmn_id_minus5_gc_r16.pack(bref));
+ HANDLE_CODE(cell_reserved_for_oper_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE plmn_id_info_minus5_gc_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ng_u_data_transfer_r16_present, 1));
+ HANDLE_CODE(bref.unpack(up_cio_t_minus5_gs_optim_r16_present, 1));
+
+ HANDLE_CODE(plmn_id_minus5_gc_r16.unpack(bref));
+ HANDLE_CODE(cell_reserved_for_oper_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void plmn_id_info_minus5_gc_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("plmn-Identity-5GC-r16");
+ plmn_id_minus5_gc_r16.to_json(j);
+ j.write_str("cellReservedForOperatorUse-r16", cell_reserved_for_oper_r16.to_string());
+ if (ng_u_data_transfer_r16_present) {
+ j.write_str("ng-U-DataTransfer-r16", "true");
+ }
+ if (up_cio_t_minus5_gs_optim_r16_present) {
+ j.write_str("up-CIoT-5GS-Optimisation-r16", "true");
+ }
+ j.end_obj();
+}
+
+void plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::destroy_()
+{
+ switch (type_) {
+ case types::plmn_id_r16:
+ c.destroy<plmn_id_s>();
+ break;
+ default:
+ break;
+ }
+}
+void plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::plmn_id_r16:
+ c.init<plmn_id_s>();
+ break;
+ case types::plmn_idx_r16:
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_");
+ }
+}
+plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::plmn_id_minus5_gc_r16_c_(
+ const plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::plmn_id_r16:
+ c.init(other.c.get<plmn_id_s>());
+ break;
+ case types::plmn_idx_r16:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_");
+ }
+}
+plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_&
+plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::operator=(
+ const plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::plmn_id_r16:
+ c.set(other.c.get<plmn_id_s>());
+ break;
+ case types::plmn_idx_r16:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_");
+ }
+
+ return *this;
+}
+plmn_id_s& plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::set_plmn_id_r16()
+{
+ set(types::plmn_id_r16);
+ return c.get<plmn_id_s>();
+}
+uint8_t& plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::set_plmn_idx_r16()
+{
+ set(types::plmn_idx_r16);
+ return c.get<uint8_t>();
+}
+void plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::plmn_id_r16:
+ j.write_fieldname("plmn-Identity-r16");
+ c.get<plmn_id_s>().to_json(j);
+ break;
+ case types::plmn_idx_r16:
+ j.write_int("plmn-Index-r16", c.get<uint8_t>());
+ break;
+ default:
+ log_invalid_choice_id(type_, "plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::plmn_id_r16:
+ HANDLE_CODE(c.get<plmn_id_s>().pack(bref));
+ break;
+ case types::plmn_idx_r16:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)6u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::plmn_id_r16:
+ HANDLE_CODE(c.get<plmn_id_s>().unpack(bref));
+ break;
+ case types::plmn_idx_r16:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)6u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"plmn-Identity-r16", "plmn-Index-r16"};
+ return convert_enum_idx(options, 2, value, "plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::types");
+}
+
+const char* plmn_id_info_minus5_gc_nb_r16_s::cell_reserved_for_oper_r16_opts::to_string() const
+{
+ static const char* options[] = {"reserved", "notReserved"};
+ return convert_enum_idx(options, 2, value, "plmn_id_info_minus5_gc_nb_r16_s::cell_reserved_for_oper_r16_e_");
+}
+
// EDT-TBS-NB-r15 ::= SEQUENCE
SRSASN_CODE edt_tbs_nb_r15_s::pack(bit_ref& bref) const
{
@@ -4814,6 +6769,18 @@ uint16_t edt_tbs_nb_r15_s::edt_tbs_r15_opts::to_number() const
return map_enum_number(options, 8, value, "edt_tbs_nb_r15_s::edt_tbs_r15_e_");
}
+// GWUS-Paging-ProbThresh-NB-r16 ::= ENUMERATED
+const char* gwus_paging_prob_thresh_nb_r16_opts::to_string() const
+{
+ static const char* options[] = {"p20", "p30", "p40", "p50", "p60", "p70", "p80", "p90"};
+ return convert_enum_idx(options, 8, value, "gwus_paging_prob_thresh_nb_r16_e");
+}
+uint8_t gwus_paging_prob_thresh_nb_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {20, 30, 40, 50, 60, 70, 80, 90};
+ return map_enum_number(options, 8, value, "gwus_paging_prob_thresh_nb_r16_e");
+}
+
// InterFreqNeighCellInfo-NB-v1530 ::= SEQUENCE
SRSASN_CODE inter_freq_neigh_cell_info_nb_v1530_s::pack(bit_ref& bref) const
{
@@ -6189,6 +8156,123 @@ void sched_info_nb_v1530_s::to_json(json_writer& j) const
j.end_obj();
}
+// SystemInformationBlockType1-NB-v1700 ::= SEQUENCE
+SRSASN_CODE sib_type1_nb_v1700_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_nb_v1700_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_nb_v1700_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_nb_v1700_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_nb_v1700_s::cell_access_related_info_ntn_r17_s_::cell_barred_ntn_r17_e_");
+}
+
+// UAC-BarringPerCat-NB-r16 ::= SEQUENCE
+SRSASN_CODE uac_barr_per_cat_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, uac_access_category_r16, (uint8_t)1u, (uint8_t)63u));
+ HANDLE_CODE(uac_barr_factor_r16.pack(bref));
+ HANDLE_CODE(uac_barr_time_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE uac_barr_per_cat_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(uac_access_category_r16, bref, (uint8_t)1u, (uint8_t)63u));
+ HANDLE_CODE(uac_barr_factor_r16.unpack(bref));
+ HANDLE_CODE(uac_barr_time_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void uac_barr_per_cat_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("uac-accessCategory-r16", uac_access_category_r16);
+ j.write_str("uac-BarringFactor-r16", uac_barr_factor_r16.to_string());
+ j.write_str("uac-BarringTime-r16", uac_barr_time_r16.to_string());
+ j.end_obj();
+}
+
+const char* uac_barr_per_cat_nb_r16_s::uac_barr_factor_r16_opts::to_string() const
+{
+ static const char* options[] = {
+ "p00", "p05", "p10", "p15", "p20", "p25", "p30", "p40", "p50", "p60", "p70", "p75", "p80", "p85", "p90", "p95"};
+ return convert_enum_idx(options, 16, value, "uac_barr_per_cat_nb_r16_s::uac_barr_factor_r16_e_");
+}
+float uac_barr_per_cat_nb_r16_s::uac_barr_factor_r16_opts::to_number() const
+{
+ static const float options[] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5};
+ return map_enum_number(options, 16, value, "uac_barr_per_cat_nb_r16_s::uac_barr_factor_r16_e_");
+}
+const char* uac_barr_per_cat_nb_r16_s::uac_barr_factor_r16_opts::to_number_string() const
+{
+ static const char* options[] = {
+ "0.0", "0.5", "1.0", "1.5", "2.0", "2.5", "3.0", "4.0", "5.0", "6.0", "7.0", "7.5", "8.0", "8.5", "9.0", "9.5"};
+ return convert_enum_idx(options, 16, value, "uac_barr_per_cat_nb_r16_s::uac_barr_factor_r16_e_");
+}
+
+const char* uac_barr_per_cat_nb_r16_s::uac_barr_time_r16_opts::to_string() const
+{
+ static const char* options[] = {"s4", "s8", "s16", "s32", "s64", "s128", "s256", "s512"};
+ return convert_enum_idx(options, 8, value, "uac_barr_per_cat_nb_r16_s::uac_barr_time_r16_e_");
+}
+uint16_t uac_barr_per_cat_nb_r16_s::uac_barr_time_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {4, 8, 16, 32, 64, 128, 256, 512};
+ return map_enum_number(options, 8, value, "uac_barr_per_cat_nb_r16_s::uac_barr_time_r16_e_");
+}
+
// WUS-MaxDurationFactor-NB-r15 ::= ENUMERATED
const char* wus_max_dur_factor_nb_r15_opts::to_string() const
{
@@ -6681,6 +8765,64 @@ int8_t dl_carrier_cfg_common_nb_r14_s::nrs_pwr_offset_non_anchor_r14_opts::to_nu
return map_enum_number(options, 8, value, "dl_carrier_cfg_common_nb_r14_s::nrs_pwr_offset_non_anchor_r14_e_");
}
+// GWUS-ResourceConfig-NB-r16 ::= SEQUENCE
+SRSASN_CODE gwus_res_cfg_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(num_groups_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(groups_for_service_list_r16_present, 1));
+
+ HANDLE_CODE(res_position_r16.pack(bref));
+ if (num_groups_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, num_groups_list_r16, 1, 2));
+ }
+ if (groups_for_service_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, groups_for_service_list_r16, 1, 3, integer_packer<uint8_t>(1, 15)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE gwus_res_cfg_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(num_groups_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(groups_for_service_list_r16_present, 1));
+
+ HANDLE_CODE(res_position_r16.unpack(bref));
+ if (num_groups_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(num_groups_list_r16, bref, 1, 2));
+ }
+ if (groups_for_service_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(groups_for_service_list_r16, bref, 1, 3, integer_packer<uint8_t>(1, 15)));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void gwus_res_cfg_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("resourcePosition-r16", res_position_r16.to_string());
+ if (num_groups_list_r16_present) {
+ j.start_array("numGroupsList-r16");
+ for (const auto& e1 : num_groups_list_r16) {
+ j.write_str(e1.to_string());
+ }
+ j.end_array();
+ }
+ if (groups_for_service_list_r16_present) {
+ j.start_array("groupsForServiceList-r16");
+ for (const auto& e1 : groups_for_service_list_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+const char* gwus_res_cfg_nb_r16_s::res_position_r16_opts::to_string() const
+{
+ static const char* options[] = {"primary", "secondary"};
+ return convert_enum_idx(options, 2, value, "gwus_res_cfg_nb_r16_s::res_position_r16_e_");
+}
+
// PCCH-Config-NB-r14 ::= SEQUENCE
SRSASN_CODE pcch_cfg_nb_r14_s::pack(bit_ref& bref) const
{
@@ -6750,6 +8892,55 @@ uint16_t pcch_cfg_nb_r14_s::npdcch_num_repeat_paging_r14_opts::to_number() const
return map_enum_number(options, 12, value, "pcch_cfg_nb_r14_s::npdcch_num_repeat_paging_r14_e_");
}
+// PCCH-Config-NB-r17 ::= SEQUENCE
+SRSASN_CODE pcch_cfg_nb_r17_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(paging_weight_r17_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, cbp_idx_r17, (uint8_t)1u, (uint8_t)2u));
+ HANDLE_CODE(npdcch_num_repeat_paging_r17.pack(bref));
+ if (paging_weight_r17_present) {
+ HANDLE_CODE(paging_weight_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pcch_cfg_nb_r17_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(paging_weight_r17_present, 1));
+
+ HANDLE_CODE(unpack_integer(cbp_idx_r17, bref, (uint8_t)1u, (uint8_t)2u));
+ HANDLE_CODE(npdcch_num_repeat_paging_r17.unpack(bref));
+ if (paging_weight_r17_present) {
+ HANDLE_CODE(paging_weight_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void pcch_cfg_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("cbp-Index-r17", cbp_idx_r17);
+ j.write_str("npdcch-NumRepetitionPaging-r17", npdcch_num_repeat_paging_r17.to_string());
+ if (paging_weight_r17_present) {
+ j.write_str("pagingWeight-r17", paging_weight_r17.to_string());
+ }
+ j.end_obj();
+}
+
+const char* pcch_cfg_nb_r17_s::npdcch_num_repeat_paging_r17_opts::to_string() const
+{
+ static const char* options[] = {"r1", "r2", "r4", "r8", "r16", "r32", "r64", "r128"};
+ return convert_enum_idx(options, 8, value, "pcch_cfg_nb_r17_s::npdcch_num_repeat_paging_r17_e_");
+}
+uint8_t pcch_cfg_nb_r17_s::npdcch_num_repeat_paging_r17_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 8, 16, 32, 64, 128};
+ return map_enum_number(options, 8, value, "pcch_cfg_nb_r17_s::npdcch_num_repeat_paging_r17_e_");
+}
+
// PowerRampingParameters-NB-v1450 ::= SEQUENCE
SRSASN_CODE pwr_ramp_params_nb_v1450_s::pack(bit_ref& bref) const
{
@@ -6848,6 +9039,83 @@ pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::preamb_init_rx_target_pw
"pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::preamb_init_rx_target_pwr_ce1_r14_e_");
}
+// SystemInformationBlockType1-NB-v1610 ::= SEQUENCE
+SRSASN_CODE sib_type1_nb_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(cell_access_related_info_minus5_gc_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (cell_access_related_info_minus5_gc_r16_present) {
+ HANDLE_CODE(bref.pack(cell_access_related_info_minus5_gc_r16.cell_id_r16_present, 1));
+ HANDLE_CODE(pack_dyn_seq_of(bref, cell_access_related_info_minus5_gc_r16.plmn_id_list_r16, 1, 6));
+ HANDLE_CODE(cell_access_related_info_minus5_gc_r16.tac_minus5_gc_r16.pack(bref));
+ if (cell_access_related_info_minus5_gc_r16.cell_id_r16_present) {
+ HANDLE_CODE(cell_access_related_info_minus5_gc_r16.cell_id_r16.pack(bref));
+ }
+ HANDLE_CODE(cell_access_related_info_minus5_gc_r16.cell_barred_minus5_gc_r16.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type1_nb_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(cell_access_related_info_minus5_gc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (cell_access_related_info_minus5_gc_r16_present) {
+ HANDLE_CODE(bref.unpack(cell_access_related_info_minus5_gc_r16.cell_id_r16_present, 1));
+ HANDLE_CODE(unpack_dyn_seq_of(cell_access_related_info_minus5_gc_r16.plmn_id_list_r16, bref, 1, 6));
+ HANDLE_CODE(cell_access_related_info_minus5_gc_r16.tac_minus5_gc_r16.unpack(bref));
+ if (cell_access_related_info_minus5_gc_r16.cell_id_r16_present) {
+ HANDLE_CODE(cell_access_related_info_minus5_gc_r16.cell_id_r16.unpack(bref));
+ }
+ HANDLE_CODE(cell_access_related_info_minus5_gc_r16.cell_barred_minus5_gc_r16.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type1_nb_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (cell_access_related_info_minus5_gc_r16_present) {
+ j.write_fieldname("cellAccessRelatedInfo-5GC-r16");
+ j.start_obj();
+ j.start_array("plmn-IdentityList-r16");
+ for (const auto& e1 : cell_access_related_info_minus5_gc_r16.plmn_id_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.write_str("trackingAreaCode-5GC-r16", cell_access_related_info_minus5_gc_r16.tac_minus5_gc_r16.to_string());
+ if (cell_access_related_info_minus5_gc_r16.cell_id_r16_present) {
+ j.write_str("cellIdentity-r16", cell_access_related_info_minus5_gc_r16.cell_id_r16.to_string());
+ }
+ j.write_str("cellBarred-5GC-r16", cell_access_related_info_minus5_gc_r16.cell_barred_minus5_gc_r16.to_string());
+ j.end_obj();
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+const char*
+sib_type1_nb_v1610_s::cell_access_related_info_minus5_gc_r16_s_::cell_barred_minus5_gc_r16_opts::to_string() const
+{
+ static const char* options[] = {"barred", "notBarred"};
+ return convert_enum_idx(
+ options,
+ 2,
+ value,
+ "sib_type1_nb_v1610_s::cell_access_related_info_minus5_gc_r16_s_::cell_barred_minus5_gc_r16_e_");
+}
+
// TDD-Config-NB-r15 ::= SEQUENCE
SRSASN_CODE tdd_cfg_nb_r15_s::pack(bit_ref& bref) const
{
@@ -6912,6 +9180,116 @@ void ul_ref_sigs_npusch_nb_r13_s::to_json(json_writer& j) const
j.end_obj();
}
+// WUS-Config-NB-r15 ::= SEQUENCE
+SRSASN_CODE wus_cfg_nb_r15_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(num_pos_r15_present, 1));
+ HANDLE_CODE(bref.pack(time_offset_e_drx_long_r15_present, 1));
+
+ HANDLE_CODE(max_dur_factor_r15.pack(bref));
+ if (num_pos_r15_present) {
+ HANDLE_CODE(num_pos_r15.pack(bref));
+ }
+ HANDLE_CODE(num_drx_cycles_relaxed_r15.pack(bref));
+ HANDLE_CODE(time_offset_drx_r15.pack(bref));
+ HANDLE_CODE(time_offset_e_drx_short_r15.pack(bref));
+ if (time_offset_e_drx_long_r15_present) {
+ HANDLE_CODE(time_offset_e_drx_long_r15.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE wus_cfg_nb_r15_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(num_pos_r15_present, 1));
+ HANDLE_CODE(bref.unpack(time_offset_e_drx_long_r15_present, 1));
+
+ HANDLE_CODE(max_dur_factor_r15.unpack(bref));
+ if (num_pos_r15_present) {
+ HANDLE_CODE(num_pos_r15.unpack(bref));
+ }
+ HANDLE_CODE(num_drx_cycles_relaxed_r15.unpack(bref));
+ HANDLE_CODE(time_offset_drx_r15.unpack(bref));
+ HANDLE_CODE(time_offset_e_drx_short_r15.unpack(bref));
+ if (time_offset_e_drx_long_r15_present) {
+ HANDLE_CODE(time_offset_e_drx_long_r15.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void wus_cfg_nb_r15_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("maxDurationFactor-r15", max_dur_factor_r15.to_string());
+ if (num_pos_r15_present) {
+ j.write_str("numPOs-r15", num_pos_r15.to_string());
+ }
+ j.write_str("numDRX-CyclesRelaxed-r15", num_drx_cycles_relaxed_r15.to_string());
+ j.write_str("timeOffsetDRX-r15", time_offset_drx_r15.to_string());
+ j.write_str("timeOffset-eDRX-Short-r15", time_offset_e_drx_short_r15.to_string());
+ if (time_offset_e_drx_long_r15_present) {
+ j.write_str("timeOffset-eDRX-Long-r15", time_offset_e_drx_long_r15.to_string());
+ }
+ j.end_obj();
+}
+
+const char* wus_cfg_nb_r15_s::num_pos_r15_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n4"};
+ return convert_enum_idx(options, 3, value, "wus_cfg_nb_r15_s::num_pos_r15_e_");
+}
+uint8_t wus_cfg_nb_r15_s::num_pos_r15_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4};
+ return map_enum_number(options, 3, value, "wus_cfg_nb_r15_s::num_pos_r15_e_");
+}
+
+const char* wus_cfg_nb_r15_s::num_drx_cycles_relaxed_r15_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n4", "n8"};
+ return convert_enum_idx(options, 4, value, "wus_cfg_nb_r15_s::num_drx_cycles_relaxed_r15_e_");
+}
+uint8_t wus_cfg_nb_r15_s::num_drx_cycles_relaxed_r15_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 8};
+ return map_enum_number(options, 4, value, "wus_cfg_nb_r15_s::num_drx_cycles_relaxed_r15_e_");
+}
+
+const char* wus_cfg_nb_r15_s::time_offset_drx_r15_opts::to_string() const
+{
+ static const char* options[] = {"ms40", "ms80", "ms160", "ms240"};
+ return convert_enum_idx(options, 4, value, "wus_cfg_nb_r15_s::time_offset_drx_r15_e_");
+}
+uint8_t wus_cfg_nb_r15_s::time_offset_drx_r15_opts::to_number() const
+{
+ static const uint8_t options[] = {40, 80, 160, 240};
+ return map_enum_number(options, 4, value, "wus_cfg_nb_r15_s::time_offset_drx_r15_e_");
+}
+
+const char* wus_cfg_nb_r15_s::time_offset_e_drx_short_r15_opts::to_string() const
+{
+ static const char* options[] = {"ms40", "ms80", "ms160", "ms240"};
+ return convert_enum_idx(options, 4, value, "wus_cfg_nb_r15_s::time_offset_e_drx_short_r15_e_");
+}
+uint8_t wus_cfg_nb_r15_s::time_offset_e_drx_short_r15_opts::to_number() const
+{
+ static const uint8_t options[] = {40, 80, 160, 240};
+ return map_enum_number(options, 4, value, "wus_cfg_nb_r15_s::time_offset_e_drx_short_r15_e_");
+}
+
+const char* wus_cfg_nb_r15_s::time_offset_e_drx_long_r15_opts::to_string() const
+{
+ static const char* options[] = {"ms1000", "ms2000"};
+ return convert_enum_idx(options, 2, value, "wus_cfg_nb_r15_s::time_offset_e_drx_long_r15_e_");
+}
+uint16_t wus_cfg_nb_r15_s::time_offset_e_drx_long_r15_opts::to_number() const
+{
+ static const uint16_t options[] = {1000, 2000};
+ return map_enum_number(options, 2, value, "wus_cfg_nb_r15_s::time_offset_e_drx_long_r15_e_");
+}
+
// WUS-ConfigPerCarrier-NB-r15 ::= SEQUENCE
SRSASN_CODE wus_cfg_per_carrier_nb_r15_s::pack(bit_ref& bref) const
{
@@ -6963,6 +9341,161 @@ uint8_t bcch_cfg_nb_r13_s::mod_period_coeff_r13_opts::to_number() const
return map_enum_number(options, 4, value, "bcch_cfg_nb_r13_s::mod_period_coeff_r13_e_");
}
+// CBP-Config-NB-r17 ::= SEQUENCE
+SRSASN_CODE cbp_cfg_nb_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(nb_r17_present, 1));
+ HANDLE_CODE(bref.pack(ue_specific_drx_cycle_min_r17_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, nrsrp_min_r17, (uint8_t)0u, (uint8_t)97u));
+ if (nb_r17_present) {
+ HANDLE_CODE(nb_r17.pack(bref));
+ }
+ if (ue_specific_drx_cycle_min_r17_present) {
+ HANDLE_CODE(ue_specific_drx_cycle_min_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE cbp_cfg_nb_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(nb_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ue_specific_drx_cycle_min_r17_present, 1));
+
+ HANDLE_CODE(unpack_integer(nrsrp_min_r17, bref, (uint8_t)0u, (uint8_t)97u));
+ if (nb_r17_present) {
+ HANDLE_CODE(nb_r17.unpack(bref));
+ }
+ if (ue_specific_drx_cycle_min_r17_present) {
+ HANDLE_CODE(ue_specific_drx_cycle_min_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void cbp_cfg_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("nrsrpMin-r17", nrsrp_min_r17);
+ if (nb_r17_present) {
+ j.write_str("nB-r17", nb_r17.to_string());
+ }
+ if (ue_specific_drx_cycle_min_r17_present) {
+ j.write_str("ue-SpecificDRX-CycleMin-r17", ue_specific_drx_cycle_min_r17.to_string());
+ }
+ j.end_obj();
+}
+
+const char* cbp_cfg_nb_r17_s::nb_r17_opts::to_string() const
+{
+ static const char* options[] = {"fourT",
+ "twoT",
+ "oneT",
+ "halfT",
+ "quarterT",
+ "one8thT",
+ "one16thT",
+ "one32ndT",
+ "one64thT",
+ "one128thT",
+ "one256thT",
+ "one512thT",
+ "one1024thT",
+ "spare3",
+ "spare2",
+ "spare1"};
+ return convert_enum_idx(options, 16, value, "cbp_cfg_nb_r17_s::nb_r17_e_");
+}
+float cbp_cfg_nb_r17_s::nb_r17_opts::to_number() const
+{
+ static const float options[] = {4.0, 2.0, 1.0, 0.5, 0.25, 8.0, 16.0, 32.0, 64.0, 128.0, 256.0, 512.0, 1024.0};
+ return map_enum_number(options, 13, value, "cbp_cfg_nb_r17_s::nb_r17_e_");
+}
+const char* cbp_cfg_nb_r17_s::nb_r17_opts::to_number_string() const
+{
+ static const char* options[] = {"4", "2", "1", "0.5", "0.25", "8", "16", "32", "64", "128", "256", "512", "1024"};
+ return convert_enum_idx(options, 16, value, "cbp_cfg_nb_r17_s::nb_r17_e_");
+}
+
+const char* cbp_cfg_nb_r17_s::ue_specific_drx_cycle_min_r17_opts::to_string() const
+{
+ static const char* options[] = {"rf32", "rf64", "rf128", "rf256"};
+ return convert_enum_idx(options, 4, value, "cbp_cfg_nb_r17_s::ue_specific_drx_cycle_min_r17_e_");
+}
+uint16_t cbp_cfg_nb_r17_s::ue_specific_drx_cycle_min_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {32, 64, 128, 256};
+ return map_enum_number(options, 4, value, "cbp_cfg_nb_r17_s::ue_specific_drx_cycle_min_r17_e_");
+}
+
+// CarrierFreqEUTRA-NB-r16 ::= SEQUENCE
+SRSASN_CODE carrier_freq_eutra_nb_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(sib1_r16_present, 1));
+ HANDLE_CODE(bref.pack(sib1_br_r16_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, carrier_freq_r16, (uint32_t)0u, (uint32_t)262143u));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE carrier_freq_eutra_nb_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(sib1_r16_present, 1));
+ HANDLE_CODE(bref.unpack(sib1_br_r16_present, 1));
+
+ HANDLE_CODE(unpack_integer(carrier_freq_r16, bref, (uint32_t)0u, (uint32_t)262143u));
+
+ return SRSASN_SUCCESS;
+}
+void carrier_freq_eutra_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("carrierFreq-r16", carrier_freq_r16);
+ if (sib1_r16_present) {
+ j.write_str("sib1-r16", "supported");
+ }
+ if (sib1_br_r16_present) {
+ j.write_str("sib1-BR-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// CarrierFreqsGERAN-NB-r16 ::= SEQUENCE
+SRSASN_CODE carrier_freqs_geran_nb_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(ec_gsm_iot_r16_present, 1));
+ HANDLE_CODE(bref.pack(peo_r16_present, 1));
+
+ HANDLE_CODE(carrier_freqs_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE carrier_freqs_geran_nb_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(ec_gsm_iot_r16_present, 1));
+ HANDLE_CODE(bref.unpack(peo_r16_present, 1));
+
+ HANDLE_CODE(carrier_freqs_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void carrier_freqs_geran_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("carrierFreqs-r16");
+ carrier_freqs_r16.to_json(j);
+ if (ec_gsm_iot_r16_present) {
+ j.write_str("ec-GSM-IOT-r16", "supported");
+ }
+ if (peo_r16_present) {
+ j.write_str("peo-r16", "supported");
+ }
+ j.end_obj();
+}
+
// DL-ConfigCommon-NB-r14 ::= SEQUENCE
SRSASN_CODE dl_cfg_common_nb_r14_s::pack(bit_ref& bref) const
{
@@ -6977,6 +9510,8 @@ SRSASN_CODE dl_cfg_common_nb_r14_s::pack(bit_ref& bref) const
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= wus_cfg_r15.is_present();
+ group_flags[1] |= gwus_cfg_r16.is_present();
+ group_flags[2] |= pcch_cfg_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -6987,6 +9522,22 @@ SRSASN_CODE dl_cfg_common_nb_r14_s::pack(bit_ref& bref) const
HANDLE_CODE(wus_cfg_r15->pack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(gwus_cfg_r16.is_present(), 1));
+ if (gwus_cfg_r16.is_present()) {
+ HANDLE_CODE(gwus_cfg_r16->pack(bref));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(pcch_cfg_r17.is_present(), 1));
+ if (pcch_cfg_r17.is_present()) {
+ HANDLE_CODE(pcch_cfg_r17->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -7001,7 +9552,7 @@ SRSASN_CODE dl_cfg_common_nb_r14_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(1);
+ ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -7014,6 +9565,26 @@ SRSASN_CODE dl_cfg_common_nb_r14_s::unpack(cbit_ref& bref)
HANDLE_CODE(wus_cfg_r15->unpack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool gwus_cfg_r16_present;
+ HANDLE_CODE(bref.unpack(gwus_cfg_r16_present, 1));
+ gwus_cfg_r16.set_present(gwus_cfg_r16_present);
+ if (gwus_cfg_r16.is_present()) {
+ HANDLE_CODE(gwus_cfg_r16->unpack(bref));
+ }
+ }
+ if (group_flags[2]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool pcch_cfg_r17_present;
+ HANDLE_CODE(bref.unpack(pcch_cfg_r17_present, 1));
+ pcch_cfg_r17.set_present(pcch_cfg_r17_present);
+ if (pcch_cfg_r17.is_present()) {
+ HANDLE_CODE(pcch_cfg_r17->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -7031,10 +9602,121 @@ void dl_cfg_common_nb_r14_s::to_json(json_writer& j) const
j.write_fieldname("wus-Config-r15");
wus_cfg_r15->to_json(j);
}
+ if (gwus_cfg_r16.is_present()) {
+ j.write_fieldname("gwus-Config-r16");
+ gwus_cfg_r16->to_json(j);
+ }
+ if (pcch_cfg_r17.is_present()) {
+ j.write_fieldname("pcch-Config-r17");
+ pcch_cfg_r17->to_json(j);
+ }
}
j.end_obj();
}
+// GWUS-Config-NB-r16 ::= SEQUENCE
+SRSASN_CODE gwus_cfg_nb_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(group_alternation_r16_present, 1));
+ HANDLE_CODE(bref.pack(common_seq_r16_present, 1));
+ HANDLE_CODE(bref.pack(time_params_r16_present, 1));
+ HANDLE_CODE(bref.pack(res_cfg_e_drx_short_r16_present, 1));
+ HANDLE_CODE(bref.pack(res_cfg_e_drx_long_r16_present, 1));
+ HANDLE_CODE(bref.pack(prob_thresh_list_r16_present, 1));
+
+ if (common_seq_r16_present) {
+ HANDLE_CODE(common_seq_r16.pack(bref));
+ }
+ if (time_params_r16_present) {
+ HANDLE_CODE(time_params_r16.pack(bref));
+ }
+ HANDLE_CODE(res_cfg_drx_r16.pack(bref));
+ if (res_cfg_e_drx_short_r16_present) {
+ HANDLE_CODE(res_cfg_e_drx_short_r16.pack(bref));
+ }
+ if (res_cfg_e_drx_long_r16_present) {
+ HANDLE_CODE(res_cfg_e_drx_long_r16.pack(bref));
+ }
+ if (prob_thresh_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, prob_thresh_list_r16, 1, 3));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE gwus_cfg_nb_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(group_alternation_r16_present, 1));
+ HANDLE_CODE(bref.unpack(common_seq_r16_present, 1));
+ HANDLE_CODE(bref.unpack(time_params_r16_present, 1));
+ HANDLE_CODE(bref.unpack(res_cfg_e_drx_short_r16_present, 1));
+ HANDLE_CODE(bref.unpack(res_cfg_e_drx_long_r16_present, 1));
+ HANDLE_CODE(bref.unpack(prob_thresh_list_r16_present, 1));
+
+ if (common_seq_r16_present) {
+ HANDLE_CODE(common_seq_r16.unpack(bref));
+ }
+ if (time_params_r16_present) {
+ HANDLE_CODE(time_params_r16.unpack(bref));
+ }
+ HANDLE_CODE(res_cfg_drx_r16.unpack(bref));
+ if (res_cfg_e_drx_short_r16_present) {
+ HANDLE_CODE(res_cfg_e_drx_short_r16.unpack(bref));
+ }
+ if (res_cfg_e_drx_long_r16_present) {
+ HANDLE_CODE(res_cfg_e_drx_long_r16.unpack(bref));
+ }
+ if (prob_thresh_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(prob_thresh_list_r16, bref, 1, 3));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void gwus_cfg_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (group_alternation_r16_present) {
+ j.write_str("groupAlternation-r16", "true");
+ }
+ if (common_seq_r16_present) {
+ j.write_str("commonSequence-r16", common_seq_r16.to_string());
+ }
+ if (time_params_r16_present) {
+ j.write_fieldname("timeParameters-r16");
+ time_params_r16.to_json(j);
+ }
+ j.write_fieldname("resourceConfigDRX-r16");
+ res_cfg_drx_r16.to_json(j);
+ if (res_cfg_e_drx_short_r16_present) {
+ j.write_fieldname("resourceConfig-eDRX-Short-r16");
+ res_cfg_e_drx_short_r16.to_json(j);
+ }
+ if (res_cfg_e_drx_long_r16_present) {
+ j.write_fieldname("resourceConfig-eDRX-Long-r16");
+ res_cfg_e_drx_long_r16.to_json(j);
+ }
+ if (prob_thresh_list_r16_present) {
+ j.start_array("probThreshList-r16");
+ for (const auto& e1 : prob_thresh_list_r16) {
+ j.write_str(e1.to_string());
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
+const char* gwus_cfg_nb_r16_s::common_seq_r16_opts::to_string() const
+{
+ static const char* options[] = {"g0", "g126"};
+ return convert_enum_idx(options, 2, value, "gwus_cfg_nb_r16_s::common_seq_r16_e_");
+}
+uint8_t gwus_cfg_nb_r16_s::common_seq_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {0, 126};
+ return map_enum_number(options, 2, value, "gwus_cfg_nb_r16_s::common_seq_r16_e_");
+}
+
// InterFreqCarrierFreqInfo-NB-r13 ::= SEQUENCE
SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::pack(bit_ref& bref) const
{
@@ -7043,7 +9725,7 @@ SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(p_max_r13_present, 1));
HANDLE_CODE(bref.pack(q_offset_freq_r13_present, 1));
HANDLE_CODE(bref.pack(inter_freq_neigh_cell_list_r13_present, 1));
- HANDLE_CODE(bref.pack(inter_freq_black_cell_list_r13_present, 1));
+ HANDLE_CODE(bref.pack(inter_freq_excluded_cell_list_r13_present, 1));
HANDLE_CODE(bref.pack(multi_band_info_list_r13_present, 1));
HANDLE_CODE(dl_carrier_freq_r13.pack(bref));
@@ -7060,8 +9742,8 @@ SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::pack(bit_ref& bref) const
if (inter_freq_neigh_cell_list_r13_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_neigh_cell_list_r13, 1, 16, integer_packer<uint16_t>(0, 503)));
}
- if (inter_freq_black_cell_list_r13_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_black_cell_list_r13, 1, 16, integer_packer<uint16_t>(0, 503)));
+ if (inter_freq_excluded_cell_list_r13_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_excluded_cell_list_r13, 1, 16, integer_packer<uint16_t>(0, 503)));
}
if (multi_band_info_list_r13_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_r13, 1, 8));
@@ -7127,7 +9809,7 @@ SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(p_max_r13_present, 1));
HANDLE_CODE(bref.unpack(q_offset_freq_r13_present, 1));
HANDLE_CODE(bref.unpack(inter_freq_neigh_cell_list_r13_present, 1));
- HANDLE_CODE(bref.unpack(inter_freq_black_cell_list_r13_present, 1));
+ HANDLE_CODE(bref.unpack(inter_freq_excluded_cell_list_r13_present, 1));
HANDLE_CODE(bref.unpack(multi_band_info_list_r13_present, 1));
HANDLE_CODE(dl_carrier_freq_r13.unpack(bref));
@@ -7144,8 +9826,8 @@ SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::unpack(cbit_ref& bref)
if (inter_freq_neigh_cell_list_r13_present) {
HANDLE_CODE(unpack_dyn_seq_of(inter_freq_neigh_cell_list_r13, bref, 1, 16, integer_packer<uint16_t>(0, 503)));
}
- if (inter_freq_black_cell_list_r13_present) {
- HANDLE_CODE(unpack_dyn_seq_of(inter_freq_black_cell_list_r13, bref, 1, 16, integer_packer<uint16_t>(0, 503)));
+ if (inter_freq_excluded_cell_list_r13_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(inter_freq_excluded_cell_list_r13, bref, 1, 16, integer_packer<uint16_t>(0, 503)));
}
if (multi_band_info_list_r13_present) {
HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_r13, bref, 1, 8));
@@ -7226,9 +9908,9 @@ void inter_freq_carrier_freq_info_nb_r13_s::to_json(json_writer& j) const
}
j.end_array();
}
- if (inter_freq_black_cell_list_r13_present) {
- j.start_array("interFreqBlackCellList-r13");
- for (const auto& e1 : inter_freq_black_cell_list_r13) {
+ if (inter_freq_excluded_cell_list_r13_present) {
+ j.start_array("interFreqExcludedCellList-r13");
+ for (const auto& e1 : inter_freq_excluded_cell_list_r13) {
j.write_int(e1);
}
j.end_array();
@@ -7760,6 +10442,68 @@ const char* nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_op
return convert_enum_idx(options, 16, value, "nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_e_");
}
+// NPRACH-TxDurationFmt01-NB-r17 ::= SEQUENCE
+SRSASN_CODE nprach_tx_dur_fmt01_nb_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(nprach_tx_dur_fmt01_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE nprach_tx_dur_fmt01_nb_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(nprach_tx_dur_fmt01_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void nprach_tx_dur_fmt01_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("nprach-TxDurationFmt01-r17", nprach_tx_dur_fmt01_r17.to_string());
+ j.end_obj();
+}
+
+const char* nprach_tx_dur_fmt01_nb_r17_s::nprach_tx_dur_fmt01_r17_opts::to_string() const
+{
+ static const char* options[] = {"n2", "n4", "n8", "n16", "n32", "n64"};
+ return convert_enum_idx(options, 6, value, "nprach_tx_dur_fmt01_nb_r17_s::nprach_tx_dur_fmt01_r17_e_");
+}
+uint8_t nprach_tx_dur_fmt01_nb_r17_s::nprach_tx_dur_fmt01_r17_opts::to_number() const
+{
+ static const uint8_t options[] = {2, 4, 8, 16, 32, 64};
+ return map_enum_number(options, 6, value, "nprach_tx_dur_fmt01_nb_r17_s::nprach_tx_dur_fmt01_r17_e_");
+}
+
+// NPRACH-TxDurationFmt2-NB-r17 ::= SEQUENCE
+SRSASN_CODE nprach_tx_dur_fmt2_nb_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(nprach_tx_dur_fmt2_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE nprach_tx_dur_fmt2_nb_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(nprach_tx_dur_fmt2_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void nprach_tx_dur_fmt2_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("nprach-TxDurationFmt2-r17", nprach_tx_dur_fmt2_r17.to_string());
+ j.end_obj();
+}
+
+const char* nprach_tx_dur_fmt2_nb_r17_s::nprach_tx_dur_fmt2_r17_opts::to_string() const
+{
+ static const char* options[] = {"n1", "n2", "n4", "n8", "n16"};
+ return convert_enum_idx(options, 5, value, "nprach_tx_dur_fmt2_nb_r17_s::nprach_tx_dur_fmt2_r17_e_");
+}
+uint8_t nprach_tx_dur_fmt2_nb_r17_s::nprach_tx_dur_fmt2_r17_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 4, 8, 16};
+ return map_enum_number(options, 5, value, "nprach_tx_dur_fmt2_nb_r17_s::nprach_tx_dur_fmt2_r17_e_");
+}
+
// NPUSCH-ConfigCommon-NB-r13 ::= SEQUENCE
SRSASN_CODE npusch_cfg_common_nb_r13_s::pack(bit_ref& bref) const
{
@@ -8115,6 +10859,9 @@ SRSASN_CODE sib_type1_nb_v1530_s::pack(bit_ref& bref) const
if (sched_info_list_v1530_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sched_info_list_v1530, 1, 8));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -8135,6 +10882,9 @@ SRSASN_CODE sib_type1_nb_v1530_s::unpack(cbit_ref& bref)
if (sched_info_list_v1530_present) {
HANDLE_CODE(unpack_dyn_seq_of(sched_info_list_v1530, bref, 1, 8));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -8162,8 +10912,7 @@ void sib_type1_nb_v1530_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -8174,6 +10923,54 @@ const char* sib_type1_nb_v1530_s::tdd_params_r15_s_::tdd_si_carrier_info_r15_opt
return convert_enum_idx(options, 2, value, "sib_type1_nb_v1530_s::tdd_params_r15_s_::tdd_si_carrier_info_r15_e_");
}
+// UAC-Barring-NB-r16 ::= SEQUENCE
+SRSASN_CODE uac_barr_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(uac_barr_per_cat_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(uac_ac1_select_assist_info_r16_present, 1));
+
+ if (uac_barr_per_cat_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, uac_barr_per_cat_list_r16, 1, 63));
+ }
+ if (uac_ac1_select_assist_info_r16_present) {
+ HANDLE_CODE(uac_ac1_select_assist_info_r16.pack(bref));
+ }
+ HANDLE_CODE(uac_barr_for_access_id_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE uac_barr_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(uac_barr_per_cat_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(uac_ac1_select_assist_info_r16_present, 1));
+
+ if (uac_barr_per_cat_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(uac_barr_per_cat_list_r16, bref, 1, 63));
+ }
+ if (uac_ac1_select_assist_info_r16_present) {
+ HANDLE_CODE(uac_ac1_select_assist_info_r16.unpack(bref));
+ }
+ HANDLE_CODE(uac_barr_for_access_id_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void uac_barr_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (uac_barr_per_cat_list_r16_present) {
+ j.start_array("uac-BarringPerCatList-r16");
+ for (const auto& e1 : uac_barr_per_cat_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (uac_ac1_select_assist_info_r16_present) {
+ j.write_str("uac-AC1-SelectAssistInfo-r16", uac_ac1_select_assist_info_r16.to_string());
+ }
+ j.write_str("uac-BarringForAccessIdentity-r16", uac_barr_for_access_id_r16.to_string());
+ j.end_obj();
+}
+
// UL-ConfigCommon-NB-r14 ::= SEQUENCE
SRSASN_CODE ul_cfg_common_nb_r14_s::pack(bit_ref& bref) const
{
@@ -8188,6 +10985,7 @@ SRSASN_CODE ul_cfg_common_nb_r14_s::pack(bit_ref& bref) const
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= nprach_params_list_edt_r15.is_present();
+ group_flags[1] |= rsrp_thress_prach_info_list_r16.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -8198,6 +10996,14 @@ SRSASN_CODE ul_cfg_common_nb_r14_s::pack(bit_ref& bref) const
HANDLE_CODE(pack_dyn_seq_of(bref, *nprach_params_list_edt_r15, 1, 3));
}
}
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(rsrp_thress_prach_info_list_r16.is_present(), 1));
+ if (rsrp_thress_prach_info_list_r16.is_present()) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, *rsrp_thress_prach_info_list_r16, 1, 2, integer_packer<uint8_t>(0, 97)));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -8212,7 +11018,7 @@ SRSASN_CODE ul_cfg_common_nb_r14_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(1);
+ ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -8225,6 +11031,16 @@ SRSASN_CODE ul_cfg_common_nb_r14_s::unpack(cbit_ref& bref)
HANDLE_CODE(unpack_dyn_seq_of(*nprach_params_list_edt_r15, bref, 1, 3));
}
}
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool rsrp_thress_prach_info_list_r16_present;
+ HANDLE_CODE(bref.unpack(rsrp_thress_prach_info_list_r16_present, 1));
+ rsrp_thress_prach_info_list_r16.set_present(rsrp_thress_prach_info_list_r16_present);
+ if (rsrp_thress_prach_info_list_r16.is_present()) {
+ HANDLE_CODE(unpack_dyn_seq_of(*rsrp_thress_prach_info_list_r16, bref, 1, 2, integer_packer<uint8_t>(0, 97)));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -8248,6 +11064,13 @@ void ul_cfg_common_nb_r14_s::to_json(json_writer& j) const
}
j.end_array();
}
+ if (rsrp_thress_prach_info_list_r16.is_present()) {
+ j.start_array("rsrp-ThresholdsPrachInfoList-r16");
+ for (const auto& e1 : *rsrp_thress_prach_info_list_r16) {
+ j.write_int(e1);
+ }
+ j.end_array();
+ }
}
j.end_obj();
}
@@ -8384,116 +11207,6 @@ const char* ul_pwr_ctrl_common_nb_r13_s::alpha_r13_opts::to_number_string() cons
return convert_enum_idx(options, 8, value, "ul_pwr_ctrl_common_nb_r13_s::alpha_r13_e_");
}
-// WUS-Config-NB-r15 ::= SEQUENCE
-SRSASN_CODE wus_cfg_nb_r15_s::pack(bit_ref& bref) const
-{
- bref.pack(ext, 1);
- HANDLE_CODE(bref.pack(num_pos_r15_present, 1));
- HANDLE_CODE(bref.pack(time_offset_e_drx_long_r15_present, 1));
-
- HANDLE_CODE(max_dur_factor_r15.pack(bref));
- if (num_pos_r15_present) {
- HANDLE_CODE(num_pos_r15.pack(bref));
- }
- HANDLE_CODE(num_drx_cycles_relaxed_r15.pack(bref));
- HANDLE_CODE(time_offset_drx_r15.pack(bref));
- HANDLE_CODE(time_offset_e_drx_short_r15.pack(bref));
- if (time_offset_e_drx_long_r15_present) {
- HANDLE_CODE(time_offset_e_drx_long_r15.pack(bref));
- }
-
- return SRSASN_SUCCESS;
-}
-SRSASN_CODE wus_cfg_nb_r15_s::unpack(cbit_ref& bref)
-{
- bref.unpack(ext, 1);
- HANDLE_CODE(bref.unpack(num_pos_r15_present, 1));
- HANDLE_CODE(bref.unpack(time_offset_e_drx_long_r15_present, 1));
-
- HANDLE_CODE(max_dur_factor_r15.unpack(bref));
- if (num_pos_r15_present) {
- HANDLE_CODE(num_pos_r15.unpack(bref));
- }
- HANDLE_CODE(num_drx_cycles_relaxed_r15.unpack(bref));
- HANDLE_CODE(time_offset_drx_r15.unpack(bref));
- HANDLE_CODE(time_offset_e_drx_short_r15.unpack(bref));
- if (time_offset_e_drx_long_r15_present) {
- HANDLE_CODE(time_offset_e_drx_long_r15.unpack(bref));
- }
-
- return SRSASN_SUCCESS;
-}
-void wus_cfg_nb_r15_s::to_json(json_writer& j) const
-{
- j.start_obj();
- j.write_str("maxDurationFactor-r15", max_dur_factor_r15.to_string());
- if (num_pos_r15_present) {
- j.write_str("numPOs-r15", num_pos_r15.to_string());
- }
- j.write_str("numDRX-CyclesRelaxed-r15", num_drx_cycles_relaxed_r15.to_string());
- j.write_str("timeOffsetDRX-r15", time_offset_drx_r15.to_string());
- j.write_str("timeOffset-eDRX-Short-r15", time_offset_e_drx_short_r15.to_string());
- if (time_offset_e_drx_long_r15_present) {
- j.write_str("timeOffset-eDRX-Long-r15", time_offset_e_drx_long_r15.to_string());
- }
- j.end_obj();
-}
-
-const char* wus_cfg_nb_r15_s::num_pos_r15_opts::to_string() const
-{
- static const char* options[] = {"n1", "n2", "n4"};
- return convert_enum_idx(options, 3, value, "wus_cfg_nb_r15_s::num_pos_r15_e_");
-}
-uint8_t wus_cfg_nb_r15_s::num_pos_r15_opts::to_number() const
-{
- static const uint8_t options[] = {1, 2, 4};
- return map_enum_number(options, 3, value, "wus_cfg_nb_r15_s::num_pos_r15_e_");
-}
-
-const char* wus_cfg_nb_r15_s::num_drx_cycles_relaxed_r15_opts::to_string() const
-{
- static const char* options[] = {"n1", "n2", "n4", "n8"};
- return convert_enum_idx(options, 4, value, "wus_cfg_nb_r15_s::num_drx_cycles_relaxed_r15_e_");
-}
-uint8_t wus_cfg_nb_r15_s::num_drx_cycles_relaxed_r15_opts::to_number() const
-{
- static const uint8_t options[] = {1, 2, 4, 8};
- return map_enum_number(options, 4, value, "wus_cfg_nb_r15_s::num_drx_cycles_relaxed_r15_e_");
-}
-
-const char* wus_cfg_nb_r15_s::time_offset_drx_r15_opts::to_string() const
-{
- static const char* options[] = {"ms40", "ms80", "ms160", "ms240"};
- return convert_enum_idx(options, 4, value, "wus_cfg_nb_r15_s::time_offset_drx_r15_e_");
-}
-uint8_t wus_cfg_nb_r15_s::time_offset_drx_r15_opts::to_number() const
-{
- static const uint8_t options[] = {40, 80, 160, 240};
- return map_enum_number(options, 4, value, "wus_cfg_nb_r15_s::time_offset_drx_r15_e_");
-}
-
-const char* wus_cfg_nb_r15_s::time_offset_e_drx_short_r15_opts::to_string() const
-{
- static const char* options[] = {"ms40", "ms80", "ms160", "ms240"};
- return convert_enum_idx(options, 4, value, "wus_cfg_nb_r15_s::time_offset_e_drx_short_r15_e_");
-}
-uint8_t wus_cfg_nb_r15_s::time_offset_e_drx_short_r15_opts::to_number() const
-{
- static const uint8_t options[] = {40, 80, 160, 240};
- return map_enum_number(options, 4, value, "wus_cfg_nb_r15_s::time_offset_e_drx_short_r15_e_");
-}
-
-const char* wus_cfg_nb_r15_s::time_offset_e_drx_long_r15_opts::to_string() const
-{
- static const char* options[] = {"ms1000", "ms2000"};
- return convert_enum_idx(options, 2, value, "wus_cfg_nb_r15_s::time_offset_e_drx_long_r15_e_");
-}
-uint16_t wus_cfg_nb_r15_s::time_offset_e_drx_long_r15_opts::to_number() const
-{
- static const uint16_t options[] = {1000, 2000};
- return map_enum_number(options, 2, value, "wus_cfg_nb_r15_s::time_offset_e_drx_long_r15_e_");
-}
-
// CellReselectionInfoCommon-NB-v1450 ::= SEQUENCE
SRSASN_CODE cell_resel_info_common_nb_v1450_s::pack(bit_ref& bref) const
{
@@ -8588,6 +11301,120 @@ uint8_t cell_sel_info_nb_v1430_s::ce_authorisation_offset_r14_opts::to_number()
return map_enum_number(options, 7, value, "cell_sel_info_nb_v1430_s::ce_authorisation_offset_r14_e_");
}
+// ConnMeasConfig-NB-r17 ::= SEQUENCE
+SRSASN_CODE conn_meas_cfg_nb_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(s_measure_inter_r17_present, 1));
+ HANDLE_CODE(bref.pack(neigh_cell_meas_criteria_r17_present, 1));
+
+ HANDLE_CODE(pack_integer(bref, s_measure_intra_r17, (uint8_t)0u, (uint8_t)113u));
+ if (s_measure_inter_r17_present) {
+ HANDLE_CODE(pack_integer(bref, s_measure_inter_r17, (uint8_t)0u, (uint8_t)113u));
+ }
+ if (neigh_cell_meas_criteria_r17_present) {
+ HANDLE_CODE(neigh_cell_meas_criteria_r17.s_measure_delta_p_r17.pack(bref));
+ HANDLE_CODE(neigh_cell_meas_criteria_r17.t_measure_delta_p_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE conn_meas_cfg_nb_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(s_measure_inter_r17_present, 1));
+ HANDLE_CODE(bref.unpack(neigh_cell_meas_criteria_r17_present, 1));
+
+ HANDLE_CODE(unpack_integer(s_measure_intra_r17, bref, (uint8_t)0u, (uint8_t)113u));
+ if (s_measure_inter_r17_present) {
+ HANDLE_CODE(unpack_integer(s_measure_inter_r17, bref, (uint8_t)0u, (uint8_t)113u));
+ }
+ if (neigh_cell_meas_criteria_r17_present) {
+ HANDLE_CODE(neigh_cell_meas_criteria_r17.s_measure_delta_p_r17.unpack(bref));
+ HANDLE_CODE(neigh_cell_meas_criteria_r17.t_measure_delta_p_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void conn_meas_cfg_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("s-MeasureIntra-r17", s_measure_intra_r17);
+ if (s_measure_inter_r17_present) {
+ j.write_int("s-MeasureInter-r17", s_measure_inter_r17);
+ }
+ if (neigh_cell_meas_criteria_r17_present) {
+ j.write_fieldname("neighCellMeasCriteria-r17");
+ j.start_obj();
+ j.write_str("s-MeasureDeltaP-r17", neigh_cell_meas_criteria_r17.s_measure_delta_p_r17.to_string());
+ j.write_str("t-MeasureDeltaP-r17", neigh_cell_meas_criteria_r17.t_measure_delta_p_r17.to_string());
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+const char* conn_meas_cfg_nb_r17_s::neigh_cell_meas_criteria_r17_s_::s_measure_delta_p_r17_opts::to_string() const
+{
+ static const char* options[] = {"dB6", "dB9", "dB12", "dB15"};
+ return convert_enum_idx(
+ options, 4, value, "conn_meas_cfg_nb_r17_s::neigh_cell_meas_criteria_r17_s_::s_measure_delta_p_r17_e_");
+}
+uint8_t conn_meas_cfg_nb_r17_s::neigh_cell_meas_criteria_r17_s_::s_measure_delta_p_r17_opts::to_number() const
+{
+ static const uint8_t options[] = {6, 9, 12, 15};
+ return map_enum_number(
+ options, 4, value, "conn_meas_cfg_nb_r17_s::neigh_cell_meas_criteria_r17_s_::s_measure_delta_p_r17_e_");
+}
+
+const char* conn_meas_cfg_nb_r17_s::neigh_cell_meas_criteria_r17_s_::t_measure_delta_p_r17_opts::to_string() const
+{
+ static const char* options[] = {"s15", "s30", "s45", "s60"};
+ return convert_enum_idx(
+ options, 4, value, "conn_meas_cfg_nb_r17_s::neigh_cell_meas_criteria_r17_s_::t_measure_delta_p_r17_e_");
+}
+uint8_t conn_meas_cfg_nb_r17_s::neigh_cell_meas_criteria_r17_s_::t_measure_delta_p_r17_opts::to_number() const
+{
+ static const uint8_t options[] = {15, 30, 45, 60};
+ return map_enum_number(
+ options, 4, value, "conn_meas_cfg_nb_r17_s::neigh_cell_meas_criteria_r17_s_::t_measure_delta_p_r17_e_");
+}
+
+// CoverageBasedPagingConfig-NB-r17 ::= SEQUENCE
+SRSASN_CODE coverage_based_paging_cfg_nb_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(cbp_hyst_timer_r17.pack(bref));
+ HANDLE_CODE(pack_dyn_seq_of(bref, cbp_cfg_list_r17, 1, 2));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE coverage_based_paging_cfg_nb_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(cbp_hyst_timer_r17.unpack(bref));
+ HANDLE_CODE(unpack_dyn_seq_of(cbp_cfg_list_r17, bref, 1, 2));
+
+ return SRSASN_SUCCESS;
+}
+void coverage_based_paging_cfg_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("cbp-HystTimer-r17", cbp_hyst_timer_r17.to_string());
+ j.start_array("cbp-ConfigList-r17");
+ for (const auto& e1 : cbp_cfg_list_r17) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.end_obj();
+}
+
+const char* coverage_based_paging_cfg_nb_r17_s::cbp_hyst_timer_r17_opts::to_string() const
+{
+ static const char* options[] = {"ms2560", "ms7680", "ms12800", "ms17920", "ms23040", "ms28160", "ms33280", "ms40960"};
+ return convert_enum_idx(options, 8, value, "coverage_based_paging_cfg_nb_r17_s::cbp_hyst_timer_r17_e_");
+}
+uint16_t coverage_based_paging_cfg_nb_r17_s::cbp_hyst_timer_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {2560, 7680, 12800, 17920, 23040, 28160, 33280, 40960};
+ return map_enum_number(options, 8, value, "coverage_based_paging_cfg_nb_r17_s::cbp_hyst_timer_r17_e_");
+}
+
// IntraFreqCellReselectionInfo-NB-v1350 ::= SEQUENCE
SRSASN_CODE intra_freq_cell_resel_info_nb_v1350_s::pack(bit_ref& bref) const
{
@@ -8787,6 +11614,10 @@ SRSASN_CODE rr_cfg_common_sib_nb_r13_s::pack(bit_ref& bref) const
group_flags[2] |= dl_gap_v1530.is_present();
group_flags[2] |= wus_cfg_r15.is_present();
group_flags[3] |= nprach_cfg_v1550.is_present();
+ group_flags[4] |= gwus_cfg_r16.is_present();
+ group_flags[4] |= nrs_non_anchor_cfg_r16_present;
+ group_flags[4] |= ue_specific_drx_cycle_min_r16_present;
+ group_flags[5] |= ntn_cfg_common_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -8829,6 +11660,40 @@ SRSASN_CODE rr_cfg_common_sib_nb_r13_s::pack(bit_ref& bref) const
HANDLE_CODE(nprach_cfg_v1550->pack(bref));
}
}
+ if (group_flags[4]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(gwus_cfg_r16.is_present(), 1));
+ HANDLE_CODE(bref.pack(nrs_non_anchor_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(ue_specific_drx_cycle_min_r16_present, 1));
+ if (gwus_cfg_r16.is_present()) {
+ HANDLE_CODE(gwus_cfg_r16->pack(bref));
+ }
+ if (ue_specific_drx_cycle_min_r16_present) {
+ HANDLE_CODE(ue_specific_drx_cycle_min_r16.pack(bref));
+ }
+ }
+ if (group_flags[5]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17.is_present(), 1));
+ if (ntn_cfg_common_r17.is_present()) {
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->ta_report_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->nprach_tx_dur_fmt01_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->nprach_tx_dur_fmt2_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_cfg_common_r17->npusch_tx_dur_r17_present, 1));
+ HANDLE_CODE(ntn_cfg_common_r17->t318_r17.pack(bref));
+ if (ntn_cfg_common_r17->nprach_tx_dur_fmt01_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->nprach_tx_dur_fmt01_r17.pack(bref));
+ }
+ if (ntn_cfg_common_r17->nprach_tx_dur_fmt2_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->nprach_tx_dur_fmt2_r17.pack(bref));
+ }
+ if (ntn_cfg_common_r17->npusch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->npusch_tx_dur_r17.pack(bref));
+ }
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -8849,7 +11714,7 @@ SRSASN_CODE rr_cfg_common_sib_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(ul_pwr_ctrl_common_r13.unpack(bref));
if (ext) {
- ext_groups_unpacker_guard group_flags(4);
+ ext_groups_unpacker_guard group_flags(6);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -8904,6 +11769,44 @@ SRSASN_CODE rr_cfg_common_sib_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(nprach_cfg_v1550->unpack(bref));
}
}
+ if (group_flags[4]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool gwus_cfg_r16_present;
+ HANDLE_CODE(bref.unpack(gwus_cfg_r16_present, 1));
+ gwus_cfg_r16.set_present(gwus_cfg_r16_present);
+ HANDLE_CODE(bref.unpack(nrs_non_anchor_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ue_specific_drx_cycle_min_r16_present, 1));
+ if (gwus_cfg_r16.is_present()) {
+ HANDLE_CODE(gwus_cfg_r16->unpack(bref));
+ }
+ if (ue_specific_drx_cycle_min_r16_present) {
+ HANDLE_CODE(ue_specific_drx_cycle_min_r16.unpack(bref));
+ }
+ }
+ if (group_flags[5]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool ntn_cfg_common_r17_present;
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17_present, 1));
+ ntn_cfg_common_r17.set_present(ntn_cfg_common_r17_present);
+ if (ntn_cfg_common_r17.is_present()) {
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->ta_report_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->nprach_tx_dur_fmt01_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->nprach_tx_dur_fmt2_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_cfg_common_r17->npusch_tx_dur_r17_present, 1));
+ HANDLE_CODE(ntn_cfg_common_r17->t318_r17.unpack(bref));
+ if (ntn_cfg_common_r17->nprach_tx_dur_fmt01_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->nprach_tx_dur_fmt01_r17.unpack(bref));
+ }
+ if (ntn_cfg_common_r17->nprach_tx_dur_fmt2_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->nprach_tx_dur_fmt2_r17.unpack(bref));
+ }
+ if (ntn_cfg_common_r17->npusch_tx_dur_r17_present) {
+ HANDLE_CODE(ntn_cfg_common_r17->npusch_tx_dur_r17.unpack(bref));
+ }
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -8953,10 +11856,63 @@ void rr_cfg_common_sib_nb_r13_s::to_json(json_writer& j) const
j.write_fieldname("nprach-Config-v1550");
nprach_cfg_v1550->to_json(j);
}
+ if (gwus_cfg_r16.is_present()) {
+ j.write_fieldname("gwus-Config-r16");
+ gwus_cfg_r16->to_json(j);
+ }
+ if (nrs_non_anchor_cfg_r16_present) {
+ j.write_str("nrs-NonAnchorConfig-r16", "true");
+ }
+ if (ue_specific_drx_cycle_min_r16_present) {
+ j.write_str("ue-SpecificDRX-CycleMin-r16", ue_specific_drx_cycle_min_r16.to_string());
+ }
+ if (ntn_cfg_common_r17.is_present()) {
+ j.write_fieldname("ntn-ConfigCommon-r17");
+ j.start_obj();
+ if (ntn_cfg_common_r17->ta_report_r17_present) {
+ j.write_str("ta-Report-r17", "enabled");
+ }
+ j.write_str("t318-r17", ntn_cfg_common_r17->t318_r17.to_string());
+ if (ntn_cfg_common_r17->nprach_tx_dur_fmt01_r17_present) {
+ j.write_fieldname("nprach-TxDurationFmt01-r17");
+ ntn_cfg_common_r17->nprach_tx_dur_fmt01_r17.to_json(j);
+ }
+ if (ntn_cfg_common_r17->nprach_tx_dur_fmt2_r17_present) {
+ j.write_fieldname("nprach-TxDurationFmt2-r17");
+ ntn_cfg_common_r17->nprach_tx_dur_fmt2_r17.to_json(j);
+ }
+ if (ntn_cfg_common_r17->npusch_tx_dur_r17_present) {
+ j.write_fieldname("npusch-TxDuration-r17");
+ ntn_cfg_common_r17->npusch_tx_dur_r17.to_json(j);
+ }
+ j.end_obj();
+ }
}
j.end_obj();
}
+const char* rr_cfg_common_sib_nb_r13_s::ue_specific_drx_cycle_min_r16_opts::to_string() const
+{
+ static const char* options[] = {"rf32", "rf64", "rf128", "rf256", "rf512", "rf1024"};
+ return convert_enum_idx(options, 6, value, "rr_cfg_common_sib_nb_r13_s::ue_specific_drx_cycle_min_r16_e_");
+}
+uint16_t rr_cfg_common_sib_nb_r13_s::ue_specific_drx_cycle_min_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {32, 64, 128, 256, 512, 1024};
+ return map_enum_number(options, 6, value, "rr_cfg_common_sib_nb_r13_s::ue_specific_drx_cycle_min_r16_e_");
+}
+
+const char* rr_cfg_common_sib_nb_r13_s::ntn_cfg_common_r17_s_::t318_r17_opts::to_string() const
+{
+ static const char* options[] = {"ms0", "ms200", "ms500", "ms1000", "ms2000", "ms4000", "ms8000"};
+ return convert_enum_idx(options, 7, value, "rr_cfg_common_sib_nb_r13_s::ntn_cfg_common_r17_s_::t318_r17_e_");
+}
+uint16_t rr_cfg_common_sib_nb_r13_s::ntn_cfg_common_r17_s_::t318_r17_opts::to_number() const
+{
+ static const uint16_t options[] = {0, 200, 500, 1000, 2000, 4000, 8000};
+ return map_enum_number(options, 7, value, "rr_cfg_common_sib_nb_r13_s::ntn_cfg_common_r17_s_::t318_r17_e_");
+}
+
// SC-MCCH-SchedulingInfo-NB-r14 ::= SEQUENCE
SRSASN_CODE sc_mcch_sched_info_nb_r14_s::pack(bit_ref& bref) const
{
@@ -9509,6 +12465,145 @@ uint8_t t_resel_nb_r13_opts::to_number() const
return map_enum_number(options, 8, value, "t_resel_nb_r13_e");
}
+// UAC-Param-NB-r16 ::= CHOICE
+void uac_param_nb_r16_c::destroy_()
+{
+ switch (type_) {
+ case types::uac_barr_common:
+ c.destroy<uac_barr_nb_r16_s>();
+ break;
+ case types::uac_barr_per_plmn_list:
+ c.destroy<uac_barr_per_plmn_list_l_>();
+ break;
+ default:
+ break;
+ }
+}
+void uac_param_nb_r16_c::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::uac_barr_common:
+ c.init<uac_barr_nb_r16_s>();
+ break;
+ case types::uac_barr_per_plmn_list:
+ c.init<uac_barr_per_plmn_list_l_>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "uac_param_nb_r16_c");
+ }
+}
+uac_param_nb_r16_c::uac_param_nb_r16_c(const uac_param_nb_r16_c& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::uac_barr_common:
+ c.init(other.c.get<uac_barr_nb_r16_s>());
+ break;
+ case types::uac_barr_per_plmn_list:
+ c.init(other.c.get<uac_barr_per_plmn_list_l_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "uac_param_nb_r16_c");
+ }
+}
+uac_param_nb_r16_c& uac_param_nb_r16_c::operator=(const uac_param_nb_r16_c& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::uac_barr_common:
+ c.set(other.c.get<uac_barr_nb_r16_s>());
+ break;
+ case types::uac_barr_per_plmn_list:
+ c.set(other.c.get<uac_barr_per_plmn_list_l_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "uac_param_nb_r16_c");
+ }
+
+ return *this;
+}
+uac_barr_nb_r16_s& uac_param_nb_r16_c::set_uac_barr_common()
+{
+ set(types::uac_barr_common);
+ return c.get<uac_barr_nb_r16_s>();
+}
+uac_param_nb_r16_c::uac_barr_per_plmn_list_l_& uac_param_nb_r16_c::set_uac_barr_per_plmn_list()
+{
+ set(types::uac_barr_per_plmn_list);
+ return c.get<uac_barr_per_plmn_list_l_>();
+}
+void uac_param_nb_r16_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::uac_barr_common:
+ j.write_fieldname("uac-BarringCommon");
+ c.get<uac_barr_nb_r16_s>().to_json(j);
+ break;
+ case types::uac_barr_per_plmn_list:
+ j.start_array("uac-BarringPerPLMN-List");
+ for (const auto& e1 : c.get<uac_barr_per_plmn_list_l_>()) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ break;
+ default:
+ log_invalid_choice_id(type_, "uac_param_nb_r16_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE uac_param_nb_r16_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::uac_barr_common:
+ HANDLE_CODE(c.get<uac_barr_nb_r16_s>().pack(bref));
+ break;
+ case types::uac_barr_per_plmn_list:
+ HANDLE_CODE(pack_dyn_seq_of(bref, c.get<uac_barr_per_plmn_list_l_>(), 1, 6));
+ break;
+ default:
+ log_invalid_choice_id(type_, "uac_param_nb_r16_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE uac_param_nb_r16_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::uac_barr_common:
+ HANDLE_CODE(c.get<uac_barr_nb_r16_s>().unpack(bref));
+ break;
+ case types::uac_barr_per_plmn_list:
+ HANDLE_CODE(unpack_dyn_seq_of(c.get<uac_barr_per_plmn_list_l_>(), bref, 1, 6));
+ break;
+ default:
+ log_invalid_choice_id(type_, "uac_param_nb_r16_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* uac_param_nb_r16_c::types_opts::to_string() const
+{
+ static const char* options[] = {"uac-BarringCommon", "uac-BarringPerPLMN-List"};
+ return convert_enum_idx(options, 2, value, "uac_param_nb_r16_c::types");
+}
+
// UE-TimersAndConstants-NB-r13 ::= SEQUENCE
SRSASN_CODE ue_timers_and_consts_nb_r13_s::pack(bit_ref& bref) const
{
@@ -9939,6 +13034,7 @@ SRSASN_CODE sib_type14_nb_r13_s::pack(bit_ref& bref) const
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= ab_per_nrsrp_r15_present;
+ group_flags[1] |= uac_param_r16.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -9949,6 +13045,14 @@ SRSASN_CODE sib_type14_nb_r13_s::pack(bit_ref& bref) const
HANDLE_CODE(ab_per_nrsrp_r15.pack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(uac_param_r16.is_present(), 1));
+ if (uac_param_r16.is_present()) {
+ HANDLE_CODE(uac_param_r16->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -9966,7 +13070,7 @@ SRSASN_CODE sib_type14_nb_r13_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(1);
+ ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -9977,6 +13081,16 @@ SRSASN_CODE sib_type14_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(ab_per_nrsrp_r15.unpack(bref));
}
}
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool uac_param_r16_present;
+ HANDLE_CODE(bref.unpack(uac_param_r16_present, 1));
+ uac_param_r16.set_present(uac_param_r16_present);
+ if (uac_param_r16.is_present()) {
+ HANDLE_CODE(uac_param_r16->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -9994,6 +13108,10 @@ void sib_type14_nb_r13_s::to_json(json_writer& j) const
if (ab_per_nrsrp_r15_present) {
j.write_str("ab-PerNRSRP-r15", ab_per_nrsrp_r15.to_string());
}
+ if (uac_param_r16.is_present()) {
+ j.write_fieldname("uac-Param-r16");
+ uac_param_r16->to_json(j);
+ }
}
j.end_obj();
}
@@ -10242,6 +13360,14 @@ SRSASN_CODE sib_type2_nb_r13_s::pack(bit_ref& bref) const
group_flags[2] |= freq_info_v1530.is_present();
group_flags[2] |= cp_edt_r15_present;
group_flags[2] |= up_edt_r15_present;
+ group_flags[3] |= early_security_reactivation_r16_present;
+ group_flags[3] |= cp_edt_minus5_gc_r16_present;
+ group_flags[3] |= up_edt_minus5_gc_r16_present;
+ group_flags[3] |= cp_pur_epc_r16_present;
+ group_flags[3] |= up_pur_epc_r16_present;
+ group_flags[3] |= cp_pur_minus5_gc_r16_present;
+ group_flags[3] |= up_pur_minus5_gc_r16_present;
+ group_flags[3] |= rai_activation_enh_r16_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -10266,6 +13392,18 @@ SRSASN_CODE sib_type2_nb_r13_s::pack(bit_ref& bref) const
HANDLE_CODE(freq_info_v1530->tdd_ul_dl_align_offset_r15.pack(bref));
}
}
+ if (group_flags[3]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ 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(rai_activation_enh_r16_present, 1));
+ }
}
return SRSASN_SUCCESS;
}
@@ -10291,7 +13429,7 @@ SRSASN_CODE sib_type2_nb_r13_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(3);
+ ext_groups_unpacker_guard group_flags(4);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -10318,6 +13456,18 @@ SRSASN_CODE sib_type2_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(freq_info_v1530->tdd_ul_dl_align_offset_r15.unpack(bref));
}
}
+ if (group_flags[3]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ 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(rai_activation_enh_r16_present, 1));
+ }
}
return SRSASN_SUCCESS;
}
@@ -10372,6 +13522,30 @@ void sib_type2_nb_r13_s::to_json(json_writer& j) const
if (up_edt_r15_present) {
j.write_str("up-EDT-r15", "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 (rai_activation_enh_r16_present) {
+ j.write_str("rai-ActivationEnh-r16", "true");
+ }
}
j.end_obj();
}
@@ -10637,6 +13811,7 @@ SRSASN_CODE sib_type22_nb_r14_s::pack(bit_ref& bref) const
ext_groups_packer_guard group_flags;
group_flags[0] |= mixed_operation_mode_cfg_r15.is_present();
group_flags[0] |= ul_cfg_list_r15.is_present();
+ group_flags[1] |= coverage_based_paging_cfg_r17.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
@@ -10660,6 +13835,14 @@ SRSASN_CODE sib_type22_nb_r14_s::pack(bit_ref& bref) const
HANDLE_CODE(pack_dyn_seq_of(bref, *ul_cfg_list_r15, 1, 15));
}
}
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(coverage_based_paging_cfg_r17.is_present(), 1));
+ if (coverage_based_paging_cfg_r17.is_present()) {
+ HANDLE_CODE(coverage_based_paging_cfg_r17->pack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -10689,7 +13872,7 @@ SRSASN_CODE sib_type22_nb_r14_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(1);
+ ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -10717,6 +13900,16 @@ SRSASN_CODE sib_type22_nb_r14_s::unpack(cbit_ref& bref)
HANDLE_CODE(unpack_dyn_seq_of(*ul_cfg_list_r15, bref, 1, 15));
}
}
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool coverage_based_paging_cfg_r17_present;
+ HANDLE_CODE(bref.unpack(coverage_based_paging_cfg_r17_present, 1));
+ coverage_based_paging_cfg_r17.set_present(coverage_based_paging_cfg_r17_present);
+ if (coverage_based_paging_cfg_r17.is_present()) {
+ HANDLE_CODE(coverage_based_paging_cfg_r17->unpack(bref));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -10783,6 +13976,10 @@ void sib_type22_nb_r14_s::to_json(json_writer& j) const
}
j.end_array();
}
+ if (coverage_based_paging_cfg_r17.is_present()) {
+ j.write_fieldname("coverageBasedPagingConfig-r17");
+ coverage_based_paging_cfg_r17->to_json(j);
+ }
}
j.end_obj();
}
@@ -10849,6 +14046,68 @@ void sib_type23_nb_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// SystemInformationBlockType27-NB-r16 ::= SEQUENCE
+SRSASN_CODE sib_type27_nb_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(carrier_freq_list_eutra_r16_present, 1));
+ HANDLE_CODE(bref.pack(carrier_freqs_list_geran_r16_present, 1));
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+
+ if (carrier_freq_list_eutra_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, carrier_freq_list_eutra_r16, 1, 8));
+ }
+ if (carrier_freqs_list_geran_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, carrier_freqs_list_geran_r16, 1, 8));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type27_nb_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(carrier_freq_list_eutra_r16_present, 1));
+ HANDLE_CODE(bref.unpack(carrier_freqs_list_geran_r16_present, 1));
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+
+ if (carrier_freq_list_eutra_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(carrier_freq_list_eutra_r16, bref, 1, 8));
+ }
+ if (carrier_freqs_list_geran_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(carrier_freqs_list_geran_r16, bref, 1, 8));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type27_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (carrier_freq_list_eutra_r16_present) {
+ j.start_array("carrierFreqListEUTRA-r16");
+ for (const auto& e1 : carrier_freq_list_eutra_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (carrier_freqs_list_geran_r16_present) {
+ j.start_array("carrierFreqsListGERAN-r16");
+ for (const auto& e1 : carrier_freqs_list_geran_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ j.end_obj();
+}
+
// SystemInformationBlockType3-NB-r13 ::= SEQUENCE
SRSASN_CODE sib_type3_nb_r13_s::pack(bit_ref& bref) const
{
@@ -10888,6 +14147,8 @@ SRSASN_CODE sib_type3_nb_r13_s::pack(bit_ref& bref) const
group_flags[3] |= cell_resel_info_common_v1450.is_present();
group_flags[4] |= nsss_rrm_cfg_r15.is_present();
group_flags[4] |= npbch_rrm_cfg_r15_present;
+ group_flags[5] |= conn_meas_cfg_r17.is_present();
+ group_flags[5] |= t_service_r17_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -10931,6 +14192,18 @@ SRSASN_CODE sib_type3_nb_r13_s::pack(bit_ref& bref) const
HANDLE_CODE(nsss_rrm_cfg_r15->pack(bref));
}
}
+ if (group_flags[5]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(conn_meas_cfg_r17.is_present(), 1));
+ HANDLE_CODE(bref.pack(t_service_r17_present, 1));
+ if (conn_meas_cfg_r17.is_present()) {
+ HANDLE_CODE(conn_meas_cfg_r17->pack(bref));
+ }
+ if (t_service_r17_present) {
+ HANDLE_CODE(pack_integer(bref, t_service_r17, (uint32_t)0u, (uint32_t)1048575u));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -10965,7 +14238,7 @@ SRSASN_CODE sib_type3_nb_r13_s::unpack(cbit_ref& bref)
}
if (ext) {
- ext_groups_unpacker_guard group_flags(5);
+ ext_groups_unpacker_guard group_flags(6);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -11019,6 +14292,20 @@ SRSASN_CODE sib_type3_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(nsss_rrm_cfg_r15->unpack(bref));
}
}
+ if (group_flags[5]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool conn_meas_cfg_r17_present;
+ HANDLE_CODE(bref.unpack(conn_meas_cfg_r17_present, 1));
+ conn_meas_cfg_r17.set_present(conn_meas_cfg_r17_present);
+ HANDLE_CODE(bref.unpack(t_service_r17_present, 1));
+ if (conn_meas_cfg_r17.is_present()) {
+ HANDLE_CODE(conn_meas_cfg_r17->unpack(bref));
+ }
+ if (t_service_r17_present) {
+ HANDLE_CODE(unpack_integer(t_service_r17, bref, (uint32_t)0u, (uint32_t)1048575u));
+ }
+ }
}
return SRSASN_SUCCESS;
}
@@ -11090,6 +14377,13 @@ void sib_type3_nb_r13_s::to_json(json_writer& j) const
if (npbch_rrm_cfg_r15_present) {
j.write_str("npbch-RRM-Config-r15", "enabled");
}
+ if (conn_meas_cfg_r17.is_present()) {
+ j.write_fieldname("connMeasConfig-r17");
+ conn_meas_cfg_r17->to_json(j);
+ }
+ if (t_service_r17_present) {
+ j.write_int("t-Service-r17", t_service_r17);
+ }
}
j.end_obj();
}
@@ -11120,19 +14414,102 @@ uint8_t sib_type3_nb_r13_s::cell_resel_info_common_r13_s_::q_hyst_r13_opts::to_n
return map_enum_number(options, 16, value, "sib_type3_nb_r13_s::cell_resel_info_common_r13_s_::q_hyst_r13_e_");
}
+// SystemInformationBlockType31-NB-r17 ::= SEQUENCE
+SRSASN_CODE sib_type31_nb_r17_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+
+ HANDLE_CODE(serving_satellite_info_r17.pack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type31_nb_r17_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+
+ HANDLE_CODE(serving_satellite_info_r17.unpack(bref));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type31_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("servingSatelliteInfo-r17");
+ serving_satellite_info_r17.to_json(j);
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ j.end_obj();
+}
+
+// SystemInformationBlockType32-NB-r17 ::= SEQUENCE
+SRSASN_CODE sib_type32_nb_r17_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(satellite_info_list_r17_present, 1));
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+
+ if (satellite_info_list_r17_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, satellite_info_list_r17, 1, 4));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE sib_type32_nb_r17_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(satellite_info_list_r17_present, 1));
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+
+ if (satellite_info_list_r17_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(satellite_info_list_r17, bref, 1, 4));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void sib_type32_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (satellite_info_list_r17_present) {
+ j.start_array("satelliteInfoList-r17");
+ for (const auto& e1 : satellite_info_list_r17) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ j.end_obj();
+}
+
// SystemInformationBlockType4-NB-r13 ::= SEQUENCE
SRSASN_CODE sib_type4_nb_r13_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(intra_freq_neigh_cell_list_r13_present, 1));
- HANDLE_CODE(bref.pack(intra_freq_black_cell_list_r13_present, 1));
+ HANDLE_CODE(bref.pack(intra_freq_excluded_cell_list_r13_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
if (intra_freq_neigh_cell_list_r13_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, intra_freq_neigh_cell_list_r13, 1, 16));
}
- if (intra_freq_black_cell_list_r13_present) {
- HANDLE_CODE(pack_dyn_seq_of(bref, intra_freq_black_cell_list_r13, 1, 16));
+ if (intra_freq_excluded_cell_list_r13_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, intra_freq_excluded_cell_list_r13, 1, 16));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
@@ -11163,14 +14540,14 @@ SRSASN_CODE sib_type4_nb_r13_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(intra_freq_neigh_cell_list_r13_present, 1));
- HANDLE_CODE(bref.unpack(intra_freq_black_cell_list_r13_present, 1));
+ HANDLE_CODE(bref.unpack(intra_freq_excluded_cell_list_r13_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
if (intra_freq_neigh_cell_list_r13_present) {
HANDLE_CODE(unpack_dyn_seq_of(intra_freq_neigh_cell_list_r13, bref, 1, 16));
}
- if (intra_freq_black_cell_list_r13_present) {
- HANDLE_CODE(unpack_dyn_seq_of(intra_freq_black_cell_list_r13, bref, 1, 16));
+ if (intra_freq_excluded_cell_list_r13_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(intra_freq_excluded_cell_list_r13, bref, 1, 16));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
@@ -11209,9 +14586,9 @@ void sib_type4_nb_r13_s::to_json(json_writer& j) const
}
j.end_array();
}
- if (intra_freq_black_cell_list_r13_present) {
- j.start_array("intraFreqBlackCellList-r13");
- for (const auto& e1 : intra_freq_black_cell_list_r13) {
+ if (intra_freq_excluded_cell_list_r13_present) {
+ j.start_array("intraFreqExcludedCellList-r13");
+ for (const auto& e1 : intra_freq_excluded_cell_list_r13) {
e1.to_json(j);
}
j.end_array();
@@ -11386,6 +14763,15 @@ void sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::destroy_()
case types::sib23_v1530:
c.destroy<sib_type23_nb_r15_s>();
break;
+ case types::sib27_v1610:
+ c.destroy<sib_type27_nb_r16_s>();
+ break;
+ case types::sib31_v1700:
+ c.destroy<sib_type31_nb_r17_s>();
+ break;
+ case types::sib32_v1700:
+ c.destroy<sib_type32_nb_r17_s>();
+ break;
default:
break;
}
@@ -11425,6 +14811,15 @@ void sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set(types::options e)
case types::sib23_v1530:
c.init<sib_type23_nb_r15_s>();
break;
+ case types::sib27_v1610:
+ c.init<sib_type27_nb_r16_s>();
+ break;
+ case types::sib31_v1700:
+ c.init<sib_type31_nb_r17_s>();
+ break;
+ case types::sib32_v1700:
+ c.init<sib_type32_nb_r17_s>();
+ break;
case types::nulltype:
break;
default:
@@ -11466,6 +14861,15 @@ sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::sib_type_and_info_r13_item
case types::sib23_v1530:
c.init(other.c.get<sib_type23_nb_r15_s>());
break;
+ case types::sib27_v1610:
+ c.init(other.c.get<sib_type27_nb_r16_s>());
+ break;
+ case types::sib31_v1700:
+ c.init(other.c.get<sib_type31_nb_r17_s>());
+ break;
+ case types::sib32_v1700:
+ c.init(other.c.get<sib_type32_nb_r17_s>());
+ break;
case types::nulltype:
break;
default:
@@ -11510,6 +14914,15 @@ sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_& sys_info_nb_r13_ies_s::sib
case types::sib23_v1530:
c.set(other.c.get<sib_type23_nb_r15_s>());
break;
+ case types::sib27_v1610:
+ c.set(other.c.get<sib_type27_nb_r16_s>());
+ break;
+ case types::sib31_v1700:
+ c.set(other.c.get<sib_type31_nb_r17_s>());
+ break;
+ case types::sib32_v1700:
+ c.set(other.c.get<sib_type32_nb_r17_s>());
+ break;
case types::nulltype:
break;
default:
@@ -11568,6 +14981,21 @@ sib_type23_nb_r15_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_s
set(types::sib23_v1530);
return c.get<sib_type23_nb_r15_s>();
}
+sib_type27_nb_r16_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib27_v1610()
+{
+ set(types::sib27_v1610);
+ return c.get<sib_type27_nb_r16_s>();
+}
+sib_type31_nb_r17_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib31_v1700()
+{
+ set(types::sib31_v1700);
+ return c.get<sib_type31_nb_r17_s>();
+}
+sib_type32_nb_r17_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib32_v1700()
+{
+ set(types::sib32_v1700);
+ return c.get<sib_type32_nb_r17_s>();
+}
void sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::to_json(json_writer& j) const
{
j.start_obj();
@@ -11612,6 +15040,18 @@ void sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::to_json(json_writer&
j.write_fieldname("sib23-v1530");
c.get<sib_type23_nb_r15_s>().to_json(j);
break;
+ case types::sib27_v1610:
+ j.write_fieldname("sib27-v1610");
+ c.get<sib_type27_nb_r16_s>().to_json(j);
+ break;
+ case types::sib31_v1700:
+ j.write_fieldname("sib31-v1700");
+ c.get<sib_type31_nb_r17_s>().to_json(j);
+ break;
+ case types::sib32_v1700:
+ j.write_fieldname("sib32-v1700");
+ c.get<sib_type32_nb_r17_s>().to_json(j);
+ break;
default:
log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_");
}
@@ -11655,6 +15095,18 @@ SRSASN_CODE sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::pack(bit_ref&
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<sib_type23_nb_r15_s>().pack(bref));
} break;
+ case types::sib27_v1610: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type27_nb_r16_s>().pack(bref));
+ } break;
+ case types::sib31_v1700: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type31_nb_r17_s>().pack(bref));
+ } break;
+ case types::sib32_v1700: {
+ varlength_field_pack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type32_nb_r17_s>().pack(bref));
+ } break;
default:
log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_");
return SRSASN_ERROR_ENCODE_FAIL;
@@ -11701,6 +15153,18 @@ SRSASN_CODE sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::unpack(cbit_re
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<sib_type23_nb_r15_s>().unpack(bref));
} break;
+ case types::sib27_v1610: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type27_nb_r16_s>().unpack(bref));
+ } break;
+ case types::sib31_v1700: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type31_nb_r17_s>().unpack(bref));
+ } break;
+ case types::sib32_v1700: {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+ HANDLE_CODE(c.get<sib_type32_nb_r17_s>().unpack(bref));
+ } break;
default:
log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_");
return SRSASN_ERROR_DECODE_FAIL;
@@ -11719,13 +15183,16 @@ const char* sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::types_opts::to
"sib15-v1430",
"sib20-v1430",
"sib22-v1430",
- "sib23-v1530"};
- return convert_enum_idx(options, 10, value, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::types");
+ "sib23-v1530",
+ "sib27-v1610",
+ "sib31-v1700",
+ "sib32-v1700"};
+ return convert_enum_idx(options, 13, value, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::types");
}
uint8_t sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::types_opts::to_number() const
{
- static const uint8_t options[] = {2, 3, 4, 5, 14, 16, 15, 20, 22, 23};
- return map_enum_number(options, 10, value, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::types");
+ static const uint8_t options[] = {2, 3, 4, 5, 14, 16, 15, 20, 22, 23, 27, 31, 32};
+ return map_enum_number(options, 13, value, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::types");
}
// SystemInformationBlockType1-NB-v1350 ::= SEQUENCE
@@ -12363,6 +15830,43 @@ void bcch_dl_sch_msg_nb_s::to_json(json_writer& j) const
j.end_array();
}
+// RRCEarlyDataComplete-NB-v1700-IEs ::= SEQUENCE
+SRSASN_CODE rrc_early_data_complete_nb_v1700_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(cbp_idx_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (cbp_idx_r17_present) {
+ HANDLE_CODE(pack_integer(bref, cbp_idx_r17, (uint8_t)1u, (uint8_t)2u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_early_data_complete_nb_v1700_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(cbp_idx_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (cbp_idx_r17_present) {
+ HANDLE_CODE(unpack_integer(cbp_idx_r17, bref, (uint8_t)1u, (uint8_t)2u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_early_data_complete_nb_v1700_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (cbp_idx_r17_present) {
+ j.write_int("cbp-Index-r17", cbp_idx_r17);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// RRCConnectionReestablishment-NB-v1430-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_reest_nb_v1430_ies_s::pack(bit_ref& bref) const
{
@@ -12400,6 +15904,43 @@ void rrc_conn_reest_nb_v1430_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// RRCConnectionSetup-NB-v1610-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_setup_nb_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_nb_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_nb_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();
+}
+
// RRCEarlyDataComplete-NB-v1590-IEs ::= SEQUENCE
SRSASN_CODE rrc_early_data_complete_nb_v1590_ies_s::pack(bit_ref& bref) const
{
@@ -12409,6 +15950,9 @@ SRSASN_CODE rrc_early_data_complete_nb_v1590_ies_s::pack(bit_ref& bref) const
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -12420,6 +15964,9 @@ SRSASN_CODE rrc_early_data_complete_nb_v1590_ies_s::unpack(cbit_ref& bref)
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -12431,8 +15978,7 @@ void rrc_early_data_complete_nb_v1590_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -12603,6 +16149,9 @@ SRSASN_CODE rrc_conn_setup_nb_r13_ies_s::pack(bit_ref& bref) const
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -12615,6 +16164,9 @@ SRSASN_CODE rrc_conn_setup_nb_r13_ies_s::unpack(cbit_ref& bref)
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -12628,8 +16180,7 @@ void rrc_conn_setup_nb_r13_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -13625,12 +17176,1045 @@ void dl_ccch_msg_nb_s::to_json(json_writer& j) const
j.end_array();
}
+// NRSRP-ChangeThresh-NB-r16 ::= ENUMERATED
+const char* nrsrp_change_thresh_nb_r16_opts::to_string() const
+{
+ static const char* options[] = {"dB4",
+ "dB6",
+ "dB8",
+ "dB10",
+ "dB14",
+ "dB18",
+ "dB22",
+ "dB26",
+ "dB30",
+ "dB34",
+ "spare6",
+ "spare5",
+ "spare4",
+ "spare3",
+ "spare2",
+ "spare1"};
+ return convert_enum_idx(options, 16, value, "nrsrp_change_thresh_nb_r16_e");
+}
+uint8_t nrsrp_change_thresh_nb_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {4, 6, 8, 10, 14, 18, 22, 26, 30, 34};
+ return map_enum_number(options, 10, value, "nrsrp_change_thresh_nb_r16_e");
+}
+
+// PUR-NRSRP-ChangeThreshold-NB-r16 ::= SEQUENCE
+SRSASN_CODE pur_nrsrp_change_thres_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(decrease_thresh_r16_present, 1));
+
+ HANDLE_CODE(increase_thresh_r16.pack(bref));
+ if (decrease_thresh_r16_present) {
+ HANDLE_CODE(decrease_thresh_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_nrsrp_change_thres_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(decrease_thresh_r16_present, 1));
+
+ HANDLE_CODE(increase_thresh_r16.unpack(bref));
+ if (decrease_thresh_r16_present) {
+ HANDLE_CODE(decrease_thresh_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void pur_nrsrp_change_thres_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("increaseThresh-r16", increase_thresh_r16.to_string());
+ if (decrease_thresh_r16_present) {
+ j.write_str("decreaseThresh-r16", decrease_thresh_r16.to_string());
+ }
+ j.end_obj();
+}
+
+// PUR-PeriodicityAndOffset-NB-r16 ::= CHOICE
+void pur_periodicity_and_offset_nb_r16_c::destroy_() {}
+void pur_periodicity_and_offset_nb_r16_c::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+}
+pur_periodicity_and_offset_nb_r16_c::pur_periodicity_and_offset_nb_r16_c(
+ const pur_periodicity_and_offset_nb_r16_c& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::periodicity8:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity16:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity32:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity64:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity128:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::periodicity256:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::periodicity512:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::periodicity1024:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::periodicity2048:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::periodicity4096:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::periodicity8192:
+ c.init(other.c.get<uint16_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_periodicity_and_offset_nb_r16_c");
+ }
+}
+pur_periodicity_and_offset_nb_r16_c&
+pur_periodicity_and_offset_nb_r16_c::operator=(const pur_periodicity_and_offset_nb_r16_c& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::periodicity8:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity16:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity32:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity64:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity128:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::periodicity256:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::periodicity512:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::periodicity1024:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::periodicity2048:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::periodicity4096:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::periodicity8192:
+ c.set(other.c.get<uint16_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_periodicity_and_offset_nb_r16_c");
+ }
+
+ return *this;
+}
+uint8_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity8()
+{
+ set(types::periodicity8);
+ return c.get<uint8_t>();
+}
+uint8_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity16()
+{
+ set(types::periodicity16);
+ return c.get<uint8_t>();
+}
+uint8_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity32()
+{
+ set(types::periodicity32);
+ return c.get<uint8_t>();
+}
+uint8_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity64()
+{
+ set(types::periodicity64);
+ return c.get<uint8_t>();
+}
+uint8_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity128()
+{
+ set(types::periodicity128);
+ return c.get<uint8_t>();
+}
+uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity256()
+{
+ set(types::periodicity256);
+ return c.get<uint16_t>();
+}
+uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity512()
+{
+ set(types::periodicity512);
+ return c.get<uint16_t>();
+}
+uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity1024()
+{
+ set(types::periodicity1024);
+ return c.get<uint16_t>();
+}
+uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity2048()
+{
+ set(types::periodicity2048);
+ return c.get<uint16_t>();
+}
+uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity4096()
+{
+ set(types::periodicity4096);
+ return c.get<uint16_t>();
+}
+uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity8192()
+{
+ set(types::periodicity8192);
+ return c.get<uint16_t>();
+}
+void pur_periodicity_and_offset_nb_r16_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::periodicity8:
+ j.write_int("periodicity8", c.get<uint8_t>());
+ break;
+ case types::periodicity16:
+ j.write_int("periodicity16", c.get<uint8_t>());
+ break;
+ case types::periodicity32:
+ j.write_int("periodicity32", c.get<uint8_t>());
+ break;
+ case types::periodicity64:
+ j.write_int("periodicity64", c.get<uint8_t>());
+ break;
+ case types::periodicity128:
+ j.write_int("periodicity128", c.get<uint8_t>());
+ break;
+ case types::periodicity256:
+ j.write_int("periodicity256", c.get<uint16_t>());
+ break;
+ case types::periodicity512:
+ j.write_int("periodicity512", c.get<uint16_t>());
+ break;
+ case types::periodicity1024:
+ j.write_int("periodicity1024", c.get<uint16_t>());
+ break;
+ case types::periodicity2048:
+ j.write_int("periodicity2048", c.get<uint16_t>());
+ break;
+ case types::periodicity4096:
+ j.write_int("periodicity4096", c.get<uint16_t>());
+ break;
+ case types::periodicity8192:
+ j.write_int("periodicity8192", c.get<uint16_t>());
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_periodicity_and_offset_nb_r16_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE pur_periodicity_and_offset_nb_r16_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::periodicity8:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)7u));
+ break;
+ case types::periodicity16:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)15u));
+ break;
+ case types::periodicity32:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)31u));
+ break;
+ case types::periodicity64:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)63u));
+ break;
+ case types::periodicity128:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)127u));
+ break;
+ case types::periodicity256:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)257u));
+ break;
+ case types::periodicity512:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)511u));
+ break;
+ case types::periodicity1024:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)1023u));
+ break;
+ case types::periodicity2048:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)2047u));
+ break;
+ case types::periodicity4096:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)4095u));
+ break;
+ case types::periodicity8192:
+ HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)1u, (uint16_t)8191u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_periodicity_and_offset_nb_r16_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_periodicity_and_offset_nb_r16_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::periodicity8:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)7u));
+ break;
+ case types::periodicity16:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)15u));
+ break;
+ case types::periodicity32:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)31u));
+ break;
+ case types::periodicity64:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)63u));
+ break;
+ case types::periodicity128:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)127u));
+ break;
+ case types::periodicity256:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)257u));
+ break;
+ case types::periodicity512:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)511u));
+ break;
+ case types::periodicity1024:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)1023u));
+ break;
+ case types::periodicity2048:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)2047u));
+ break;
+ case types::periodicity4096:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)4095u));
+ break;
+ case types::periodicity8192:
+ HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)1u, (uint16_t)8191u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_periodicity_and_offset_nb_r16_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* pur_periodicity_and_offset_nb_r16_c::types_opts::to_string() const
+{
+ static const char* options[] = {"periodicity8",
+ "periodicity16",
+ "periodicity32",
+ "periodicity64",
+ "periodicity128",
+ "periodicity256",
+ "periodicity512",
+ "periodicity1024",
+ "periodicity2048",
+ "periodicity4096",
+ "periodicity8192"};
+ return convert_enum_idx(options, 11, value, "pur_periodicity_and_offset_nb_r16_c::types");
+}
+uint16_t pur_periodicity_and_offset_nb_r16_c::types_opts::to_number() const
+{
+ static const uint16_t options[] = {8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192};
+ return map_enum_number(options, 11, value, "pur_periodicity_and_offset_nb_r16_c::types");
+}
+
+// PUR-UL-16QAM-Config-NB-r17 ::= SEQUENCE
+SRSASN_CODE pur_ul_minus16_qam_cfg_nb_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(ul_pwr_ctrl_ded_r17.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_ul_minus16_qam_cfg_nb_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(ul_pwr_ctrl_ded_r17.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void pur_ul_minus16_qam_cfg_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("uplinkPowerControlDedicated-r17");
+ ul_pwr_ctrl_ded_r17.to_json(j);
+ j.end_obj();
+}
+
+// PUR-Config-NB-r16 ::= SEQUENCE
+SRSASN_CODE pur_cfg_nb_r16_s::pack(bit_ref& bref) const
+{
+ bref.pack(ext, 1);
+ HANDLE_CODE(bref.pack(pur_cfg_id_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_time_align_timer_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_nrsrp_change_thres_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_implicit_release_after_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_rnti_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_resp_win_timer_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_start_time_params_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_phys_cfg_r16_present, 1));
+
+ if (pur_cfg_id_r16_present) {
+ HANDLE_CODE(pur_cfg_id_r16.pack(bref));
+ }
+ if (pur_time_align_timer_r16_present) {
+ HANDLE_CODE(pack_integer(bref, pur_time_align_timer_r16, (uint8_t)1u, (uint8_t)8u));
+ }
+ if (pur_nrsrp_change_thres_r16_present) {
+ HANDLE_CODE(pur_nrsrp_change_thres_r16.pack(bref));
+ }
+ if (pur_implicit_release_after_r16_present) {
+ HANDLE_CODE(pur_implicit_release_after_r16.pack(bref));
+ }
+ if (pur_rnti_r16_present) {
+ HANDLE_CODE(pur_rnti_r16.pack(bref));
+ }
+ if (pur_resp_win_timer_r16_present) {
+ HANDLE_CODE(pur_resp_win_timer_r16.pack(bref));
+ }
+ if (pur_start_time_params_r16_present) {
+ HANDLE_CODE(pur_start_time_params_r16.periodicity_and_offset_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, pur_start_time_params_r16.start_sfn_r16, (uint16_t)0u, (uint16_t)1023u));
+ HANDLE_CODE(pack_integer(bref, pur_start_time_params_r16.start_sf_r16, (uint8_t)0u, (uint8_t)9u));
+ HANDLE_CODE(pur_start_time_params_r16.hsfn_lsb_info_r16.pack(bref));
+ }
+ HANDLE_CODE(pur_num_occasions_r16.pack(bref));
+ if (pur_phys_cfg_r16_present) {
+ HANDLE_CODE(pur_phys_cfg_r16.carrier_cfg_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, pur_phys_cfg_r16.npusch_num_rus_idx_r16, (uint8_t)0u, (uint8_t)7u));
+ HANDLE_CODE(pack_integer(bref, pur_phys_cfg_r16.npusch_num_repeats_idx_r16, (uint8_t)0u, (uint8_t)7u));
+ HANDLE_CODE(pur_phys_cfg_r16.npusch_sub_carrier_set_idx_r16.pack(bref));
+ HANDLE_CODE(pur_phys_cfg_r16.npusch_mcs_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, pur_phys_cfg_r16.p0_ue_npusch_r16, (int8_t)-8, (int8_t)7));
+ HANDLE_CODE(pur_phys_cfg_r16.alpha_r16.pack(bref));
+ HANDLE_CODE(pur_phys_cfg_r16.npusch_cyclic_shift_r16.pack(bref));
+ HANDLE_CODE(pur_phys_cfg_r16.npdcch_cfg_r16.pack(bref));
+ }
+
+ if (ext) {
+ ext_groups_packer_guard group_flags;
+ group_flags[0] |= pur_phys_cfg_v1650.is_present();
+ group_flags[1] |= pur_phys_cfg_v1700.is_present();
+ group_flags.pack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(pur_phys_cfg_v1650.is_present(), 1));
+ if (pur_phys_cfg_v1650.is_present()) {
+ HANDLE_CODE(pur_phys_cfg_v1650->ack_nack_num_repeats_r16.pack(bref));
+ }
+ }
+ if (group_flags[1]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(pur_phys_cfg_v1700.is_present(), 1));
+ if (pur_phys_cfg_v1700.is_present()) {
+ HANDLE_CODE(bref.pack(pur_phys_cfg_v1700->pur_ul_minus16_qam_cfg_r17_present, 1));
+ HANDLE_CODE(bref.pack(pur_phys_cfg_v1700->pur_dl_minus16_qam_cfg_r17_present, 1));
+ if (pur_phys_cfg_v1700->pur_ul_minus16_qam_cfg_r17_present) {
+ HANDLE_CODE(pur_phys_cfg_v1700->pur_ul_minus16_qam_cfg_r17.pack(bref));
+ }
+ if (pur_phys_cfg_v1700->pur_dl_minus16_qam_cfg_r17_present) {
+ HANDLE_CODE(pur_phys_cfg_v1700->pur_dl_minus16_qam_cfg_r17.pack(bref));
+ }
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_nb_r16_s::unpack(cbit_ref& bref)
+{
+ bref.unpack(ext, 1);
+ HANDLE_CODE(bref.unpack(pur_cfg_id_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_time_align_timer_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_nrsrp_change_thres_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_implicit_release_after_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_rnti_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_resp_win_timer_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_start_time_params_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_phys_cfg_r16_present, 1));
+
+ if (pur_cfg_id_r16_present) {
+ HANDLE_CODE(pur_cfg_id_r16.unpack(bref));
+ }
+ if (pur_time_align_timer_r16_present) {
+ HANDLE_CODE(unpack_integer(pur_time_align_timer_r16, bref, (uint8_t)1u, (uint8_t)8u));
+ }
+ if (pur_nrsrp_change_thres_r16_present) {
+ HANDLE_CODE(pur_nrsrp_change_thres_r16.unpack(bref));
+ }
+ if (pur_implicit_release_after_r16_present) {
+ HANDLE_CODE(pur_implicit_release_after_r16.unpack(bref));
+ }
+ if (pur_rnti_r16_present) {
+ HANDLE_CODE(pur_rnti_r16.unpack(bref));
+ }
+ if (pur_resp_win_timer_r16_present) {
+ HANDLE_CODE(pur_resp_win_timer_r16.unpack(bref));
+ }
+ if (pur_start_time_params_r16_present) {
+ HANDLE_CODE(pur_start_time_params_r16.periodicity_and_offset_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(pur_start_time_params_r16.start_sfn_r16, bref, (uint16_t)0u, (uint16_t)1023u));
+ HANDLE_CODE(unpack_integer(pur_start_time_params_r16.start_sf_r16, bref, (uint8_t)0u, (uint8_t)9u));
+ HANDLE_CODE(pur_start_time_params_r16.hsfn_lsb_info_r16.unpack(bref));
+ }
+ HANDLE_CODE(pur_num_occasions_r16.unpack(bref));
+ if (pur_phys_cfg_r16_present) {
+ HANDLE_CODE(pur_phys_cfg_r16.carrier_cfg_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(pur_phys_cfg_r16.npusch_num_rus_idx_r16, bref, (uint8_t)0u, (uint8_t)7u));
+ HANDLE_CODE(unpack_integer(pur_phys_cfg_r16.npusch_num_repeats_idx_r16, bref, (uint8_t)0u, (uint8_t)7u));
+ HANDLE_CODE(pur_phys_cfg_r16.npusch_sub_carrier_set_idx_r16.unpack(bref));
+ HANDLE_CODE(pur_phys_cfg_r16.npusch_mcs_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(pur_phys_cfg_r16.p0_ue_npusch_r16, bref, (int8_t)-8, (int8_t)7));
+ HANDLE_CODE(pur_phys_cfg_r16.alpha_r16.unpack(bref));
+ HANDLE_CODE(pur_phys_cfg_r16.npusch_cyclic_shift_r16.unpack(bref));
+ HANDLE_CODE(pur_phys_cfg_r16.npdcch_cfg_r16.unpack(bref));
+ }
+
+ if (ext) {
+ ext_groups_unpacker_guard group_flags(2);
+ group_flags.unpack(bref);
+
+ if (group_flags[0]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool pur_phys_cfg_v1650_present;
+ HANDLE_CODE(bref.unpack(pur_phys_cfg_v1650_present, 1));
+ pur_phys_cfg_v1650.set_present(pur_phys_cfg_v1650_present);
+ if (pur_phys_cfg_v1650.is_present()) {
+ HANDLE_CODE(pur_phys_cfg_v1650->ack_nack_num_repeats_r16.unpack(bref));
+ }
+ }
+ if (group_flags[1]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ bool pur_phys_cfg_v1700_present;
+ HANDLE_CODE(bref.unpack(pur_phys_cfg_v1700_present, 1));
+ pur_phys_cfg_v1700.set_present(pur_phys_cfg_v1700_present);
+ if (pur_phys_cfg_v1700.is_present()) {
+ HANDLE_CODE(bref.unpack(pur_phys_cfg_v1700->pur_ul_minus16_qam_cfg_r17_present, 1));
+ HANDLE_CODE(bref.unpack(pur_phys_cfg_v1700->pur_dl_minus16_qam_cfg_r17_present, 1));
+ if (pur_phys_cfg_v1700->pur_ul_minus16_qam_cfg_r17_present) {
+ HANDLE_CODE(pur_phys_cfg_v1700->pur_ul_minus16_qam_cfg_r17.unpack(bref));
+ }
+ if (pur_phys_cfg_v1700->pur_dl_minus16_qam_cfg_r17_present) {
+ HANDLE_CODE(pur_phys_cfg_v1700->pur_dl_minus16_qam_cfg_r17.unpack(bref));
+ }
+ }
+ }
+ }
+ return SRSASN_SUCCESS;
+}
+void pur_cfg_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pur_cfg_id_r16_present) {
+ j.write_str("pur-ConfigID-r16", pur_cfg_id_r16.to_string());
+ }
+ if (pur_time_align_timer_r16_present) {
+ j.write_int("pur-TimeAlignmentTimer-r16", pur_time_align_timer_r16);
+ }
+ if (pur_nrsrp_change_thres_r16_present) {
+ j.write_fieldname("pur-NRSRP-ChangeThreshold-r16");
+ pur_nrsrp_change_thres_r16.to_json(j);
+ }
+ if (pur_implicit_release_after_r16_present) {
+ j.write_str("pur-ImplicitReleaseAfter-r16", pur_implicit_release_after_r16.to_string());
+ }
+ if (pur_rnti_r16_present) {
+ j.write_str("pur-RNTI-r16", pur_rnti_r16.to_string());
+ }
+ if (pur_resp_win_timer_r16_present) {
+ j.write_str("pur-ResponseWindowTimer-r16", pur_resp_win_timer_r16.to_string());
+ }
+ if (pur_start_time_params_r16_present) {
+ j.write_fieldname("pur-StartTimeParameters-r16");
+ j.start_obj();
+ j.write_fieldname("periodicityAndOffset-r16");
+ pur_start_time_params_r16.periodicity_and_offset_r16.to_json(j);
+ j.write_int("startSFN-r16", pur_start_time_params_r16.start_sfn_r16);
+ j.write_int("startSubframe-r16", pur_start_time_params_r16.start_sf_r16);
+ j.write_str("hsfn-LSB-Info-r16", pur_start_time_params_r16.hsfn_lsb_info_r16.to_string());
+ j.end_obj();
+ }
+ j.write_str("pur-NumOccasions-r16", pur_num_occasions_r16.to_string());
+ if (pur_phys_cfg_r16_present) {
+ j.write_fieldname("pur-PhysicalConfig-r16");
+ j.start_obj();
+ j.write_fieldname("carrierConfig-r16");
+ pur_phys_cfg_r16.carrier_cfg_r16.to_json(j);
+ j.write_int("npusch-NumRUsIndex-r16", pur_phys_cfg_r16.npusch_num_rus_idx_r16);
+ j.write_int("npusch-NumRepetitionsIndex-r16", pur_phys_cfg_r16.npusch_num_repeats_idx_r16);
+ j.write_fieldname("npusch-SubCarrierSetIndex-r16");
+ pur_phys_cfg_r16.npusch_sub_carrier_set_idx_r16.to_json(j);
+ j.write_fieldname("npusch-MCS-r16");
+ pur_phys_cfg_r16.npusch_mcs_r16.to_json(j);
+ j.write_int("p0-UE-NPUSCH-r16", pur_phys_cfg_r16.p0_ue_npusch_r16);
+ j.write_str("alpha-r16", pur_phys_cfg_r16.alpha_r16.to_string());
+ j.write_str("npusch-CyclicShift-r16", pur_phys_cfg_r16.npusch_cyclic_shift_r16.to_string());
+ j.write_fieldname("npdcch-Config-r16");
+ pur_phys_cfg_r16.npdcch_cfg_r16.to_json(j);
+ j.end_obj();
+ }
+ if (ext) {
+ if (pur_phys_cfg_v1650.is_present()) {
+ j.write_fieldname("pur-PhysicalConfig-v1650");
+ j.start_obj();
+ j.write_str("ack-NACK-NumRepetitions-r16", pur_phys_cfg_v1650->ack_nack_num_repeats_r16.to_string());
+ j.end_obj();
+ }
+ if (pur_phys_cfg_v1700.is_present()) {
+ j.write_fieldname("pur-PhysicalConfig-v1700");
+ j.start_obj();
+ if (pur_phys_cfg_v1700->pur_ul_minus16_qam_cfg_r17_present) {
+ j.write_fieldname("pur-UL-16QAM-Config-r17");
+ pur_phys_cfg_v1700->pur_ul_minus16_qam_cfg_r17.to_json(j);
+ }
+ if (pur_phys_cfg_v1700->pur_dl_minus16_qam_cfg_r17_present) {
+ j.write_fieldname("pur-DL-16QAM-Config-r17");
+ pur_phys_cfg_v1700->pur_dl_minus16_qam_cfg_r17.to_json(j);
+ }
+ j.end_obj();
+ }
+ }
+ j.end_obj();
+}
+
+const char* pur_cfg_nb_r16_s::pur_implicit_release_after_r16_opts::to_string() const
+{
+ static const char* options[] = {"n2", "n4", "n8", "spare"};
+ return convert_enum_idx(options, 4, value, "pur_cfg_nb_r16_s::pur_implicit_release_after_r16_e_");
+}
+uint8_t pur_cfg_nb_r16_s::pur_implicit_release_after_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {2, 4, 8};
+ return map_enum_number(options, 3, value, "pur_cfg_nb_r16_s::pur_implicit_release_after_r16_e_");
+}
+
+const char* pur_cfg_nb_r16_s::pur_resp_win_timer_r16_opts::to_string() const
+{
+ static const char* options[] = {"pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32", "pp64"};
+ return convert_enum_idx(options, 8, value, "pur_cfg_nb_r16_s::pur_resp_win_timer_r16_e_");
+}
+uint8_t pur_cfg_nb_r16_s::pur_resp_win_timer_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1, 2, 3, 4, 8, 16, 32, 64};
+ return map_enum_number(options, 8, value, "pur_cfg_nb_r16_s::pur_resp_win_timer_r16_e_");
+}
+
+const char* pur_cfg_nb_r16_s::pur_num_occasions_r16_opts::to_string() const
+{
+ static const char* options[] = {"one", "infinite"};
+ return convert_enum_idx(options, 2, value, "pur_cfg_nb_r16_s::pur_num_occasions_r16_e_");
+}
+uint8_t pur_cfg_nb_r16_s::pur_num_occasions_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1};
+ return map_enum_number(options, 1, value, "pur_cfg_nb_r16_s::pur_num_occasions_r16_e_");
+}
+
+void pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::destroy_() {}
+void pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+}
+pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::npusch_sub_carrier_set_idx_r16_c_(
+ const pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::khz15:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::khz3dot75:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_");
+ }
+}
+pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_&
+pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::operator=(
+ const pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::khz15:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::khz3dot75:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_");
+ }
+
+ return *this;
+}
+uint8_t& pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::set_khz15()
+{
+ set(types::khz15);
+ return c.get<uint8_t>();
+}
+uint8_t& pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::set_khz3dot75()
+{
+ set(types::khz3dot75);
+ return c.get<uint8_t>();
+}
+void pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::khz15:
+ j.write_int("khz15", c.get<uint8_t>());
+ break;
+ case types::khz3dot75:
+ j.write_int("khz3dot75", c.get<uint8_t>());
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::khz15:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)18u));
+ break;
+ case types::khz3dot75:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)47u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::khz15:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)18u));
+ break;
+ case types::khz3dot75:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)47u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"khz15", "khz3dot75"};
+ return convert_enum_idx(
+ options, 2, value, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::types");
+}
+float pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::types_opts::to_number() const
+{
+ static const float options[] = {15.0, 3.75};
+ return map_enum_number(
+ options, 2, value, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::types");
+}
+const char*
+pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::types_opts::to_number_string() const
+{
+ static const char* options[] = {"15", "3.75"};
+ return convert_enum_idx(
+ options, 2, value, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_sub_carrier_set_idx_r16_c_::types");
+}
+
+void pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::destroy_() {}
+void pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+}
+pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::npusch_mcs_r16_c_(
+ const pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::single_tone:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::multi_tone:
+ c.init(other.c.get<uint8_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_");
+ }
+}
+pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_&
+pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::operator=(
+ const pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::single_tone:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::multi_tone:
+ c.set(other.c.get<uint8_t>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_");
+ }
+
+ return *this;
+}
+uint8_t& pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::set_single_tone()
+{
+ set(types::single_tone);
+ return c.get<uint8_t>();
+}
+uint8_t& pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::set_multi_tone()
+{
+ set(types::multi_tone);
+ return c.get<uint8_t>();
+}
+void pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::single_tone:
+ j.write_int("singleTone", c.get<uint8_t>());
+ break;
+ case types::multi_tone:
+ j.write_int("multiTone", c.get<uint8_t>());
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::single_tone:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)10u));
+ break;
+ case types::multi_tone:
+ HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)13u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::single_tone:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)10u));
+ break;
+ case types::multi_tone:
+ HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)13u));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"singleTone", "multiTone"};
+ return convert_enum_idx(options, 2, value, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::types");
+}
+
+const char* pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::alpha_r16_opts::to_string() const
+{
+ static const char* options[] = {"al0", "al04", "al05", "al06", "al07", "al08", "al09", "al1"};
+ return convert_enum_idx(options, 8, value, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::alpha_r16_e_");
+}
+float pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::alpha_r16_opts::to_number() const
+{
+ static const float options[] = {0.0, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0};
+ return map_enum_number(options, 8, value, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::alpha_r16_e_");
+}
+const char* pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::alpha_r16_opts::to_number_string() const
+{
+ static const char* options[] = {"0", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1"};
+ return convert_enum_idx(options, 8, value, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::alpha_r16_e_");
+}
+
+const char* pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_cyclic_shift_r16_opts::to_string() const
+{
+ static const char* options[] = {"n0", "n6"};
+ return convert_enum_idx(options, 2, value, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_cyclic_shift_r16_e_");
+}
+uint8_t pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_cyclic_shift_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {0, 6};
+ return map_enum_number(options, 2, value, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_cyclic_shift_r16_e_");
+}
+
+// RRCConnectionRelease-NB-v1700-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_release_nb_v1700_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(cbp_idx_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (cbp_idx_r17_present) {
+ HANDLE_CODE(pack_integer(bref, cbp_idx_r17, (uint8_t)1u, (uint8_t)2u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_release_nb_v1700_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(cbp_idx_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (cbp_idx_r17_present) {
+ HANDLE_CODE(unpack_integer(cbp_idx_r17, bref, (uint8_t)1u, (uint8_t)2u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_release_nb_v1700_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (cbp_idx_r17_present) {
+ j.write_int("cbp-Index-r17", cbp_idx_r17);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// RRCConnectionRelease-NB-v1610-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_release_nb_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(resume_id_r16_present, 1));
+ HANDLE_CODE(bref.pack(anr_meas_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (resume_id_r16_present) {
+ HANDLE_CODE(resume_id_r16.pack(bref));
+ }
+ if (anr_meas_cfg_r16_present) {
+ HANDLE_CODE(anr_meas_cfg_r16.pack(bref));
+ }
+ if (pur_cfg_r16_present) {
+ HANDLE_CODE(pur_cfg_r16.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_release_nb_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(resume_id_r16_present, 1));
+ HANDLE_CODE(bref.unpack(anr_meas_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (resume_id_r16_present) {
+ HANDLE_CODE(resume_id_r16.unpack(bref));
+ }
+ if (anr_meas_cfg_r16_present) {
+ HANDLE_CODE(anr_meas_cfg_r16.unpack(bref));
+ }
+ if (pur_cfg_r16_present) {
+ HANDLE_CODE(pur_cfg_r16.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_release_nb_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (resume_id_r16_present) {
+ j.write_str("resumeIdentity-r16", resume_id_r16.to_string());
+ }
+ if (anr_meas_cfg_r16_present) {
+ j.write_fieldname("anr-MeasConfig-r16");
+ anr_meas_cfg_r16.to_json(j);
+ }
+ if (pur_cfg_r16_present) {
+ j.write_fieldname("pur-Config-r16");
+ pur_cfg_r16.to_json(j);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// RRCConnectionRelease-NB-v15b0-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_release_nb_v15b0_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(no_last_cell_upd_r15_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_conn_release_nb_v15b0_ies_s::unpack(cbit_ref& bref)
@@ -13638,6 +18222,10 @@ SRSASN_CODE rrc_conn_release_nb_v15b0_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(no_last_cell_upd_r15_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
return SRSASN_SUCCESS;
}
void rrc_conn_release_nb_v15b0_ies_s::to_json(json_writer& j) const
@@ -13648,8 +18236,7 @@ void rrc_conn_release_nb_v15b0_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -13798,6 +18385,35 @@ void rrc_conn_release_nb_v1430_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// RRCConnectionResume-NB-v1610-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_resume_nb_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(full_cfg_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_resume_nb_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(full_cfg_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_resume_nb_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (full_cfg_r16_present) {
+ j.write_str("fullConfig-r16", "true");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// ReleaseCause-NB-r13 ::= ENUMERATED
const char* release_cause_nb_r13_opts::to_string() const
{
@@ -14008,6 +18624,9 @@ SRSASN_CODE rrc_conn_resume_nb_r13_ies_s::pack(bit_ref& bref) const
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -14025,6 +18644,9 @@ SRSASN_CODE rrc_conn_resume_nb_r13_ies_s::unpack(cbit_ref& bref)
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -14044,8 +18666,7 @@ void rrc_conn_resume_nb_r13_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -14087,6 +18708,52 @@ void ue_cap_enquiry_nb_r13_ies_s::to_json(json_writer& j) const
j.end_obj();
}
+// UEInformationRequest-NB-r16-IEs ::= SEQUENCE
+SRSASN_CODE ue_info_request_nb_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(bref.pack(rach_report_req_r16, 1));
+ HANDLE_CODE(bref.pack(rlf_report_req_r16, 1));
+ HANDLE_CODE(bref.pack(anr_report_req_r16, 1));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_info_request_nb_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(bref.unpack(rach_report_req_r16, 1));
+ HANDLE_CODE(bref.unpack(rlf_report_req_r16, 1));
+ HANDLE_CODE(bref.unpack(anr_report_req_r16, 1));
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_info_request_nb_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_bool("rach-ReportReq-r16", rach_report_req_r16);
+ j.write_bool("rlf-ReportReq-r16", rlf_report_req_r16);
+ j.write_bool("anr-ReportReq-r16", anr_report_req_r16);
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// DLInformationTransfer-NB ::= SEQUENCE
SRSASN_CODE dl_info_transfer_nb_s::pack(bit_ref& bref) const
{
@@ -14847,6 +19514,97 @@ const char* ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() co
return convert_enum_idx(options, 2, value, "ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::types");
}
+// UEInformationRequest-NB-r16 ::= SEQUENCE
+SRSASN_CODE ue_info_request_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
+ HANDLE_CODE(crit_exts.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_info_request_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
+ HANDLE_CODE(crit_exts.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void ue_info_request_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
+ j.write_fieldname("criticalExtensions");
+ crit_exts.to_json(j);
+ j.end_obj();
+}
+
+void ue_info_request_nb_r16_s::crit_exts_c_::set(types::options e)
+{
+ type_ = e;
+}
+ue_info_request_nb_r16_ies_s& ue_info_request_nb_r16_s::crit_exts_c_::set_ue_info_request_r16()
+{
+ set(types::ue_info_request_r16);
+ return c;
+}
+void ue_info_request_nb_r16_s::crit_exts_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void ue_info_request_nb_r16_s::crit_exts_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::ue_info_request_r16:
+ j.write_fieldname("ueInformationRequest-r16");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ue_info_request_nb_r16_s::crit_exts_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE ue_info_request_nb_r16_s::crit_exts_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::ue_info_request_r16:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ue_info_request_nb_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_info_request_nb_r16_s::crit_exts_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::ue_info_request_r16:
+ HANDLE_CODE(c.unpack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ue_info_request_nb_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* ue_info_request_nb_r16_s::crit_exts_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"ueInformationRequest-r16", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "ue_info_request_nb_r16_s::crit_exts_c_::types");
+}
+
// DL-DCCH-MessageType-NB ::= CHOICE
void dl_dcch_msg_type_nb_c::set(types::options e)
{
@@ -14930,6 +19688,9 @@ void dl_dcch_msg_type_nb_c::c1_c_::destroy_()
case types::rrc_conn_resume_r13:
c.destroy<rrc_conn_resume_nb_s>();
break;
+ case types::ue_info_request_r16:
+ c.destroy<ue_info_request_nb_r16_s>();
+ break;
default:
break;
}
@@ -14957,7 +19718,8 @@ void dl_dcch_msg_type_nb_c::c1_c_::set(types::options e)
case types::rrc_conn_resume_r13:
c.init<rrc_conn_resume_nb_s>();
break;
- case types::spare2:
+ case types::ue_info_request_r16:
+ c.init<ue_info_request_nb_r16_s>();
break;
case types::spare1:
break;
@@ -14989,7 +19751,8 @@ dl_dcch_msg_type_nb_c::c1_c_::c1_c_(const dl_dcch_msg_type_nb_c::c1_c_& other)
case types::rrc_conn_resume_r13:
c.init(other.c.get<rrc_conn_resume_nb_s>());
break;
- case types::spare2:
+ case types::ue_info_request_r16:
+ c.init(other.c.get<ue_info_request_nb_r16_s>());
break;
case types::spare1:
break;
@@ -15024,7 +19787,8 @@ dl_dcch_msg_type_nb_c::c1_c_& dl_dcch_msg_type_nb_c::c1_c_::operator=(const dl_d
case types::rrc_conn_resume_r13:
c.set(other.c.get<rrc_conn_resume_nb_s>());
break;
- case types::spare2:
+ case types::ue_info_request_r16:
+ c.set(other.c.get<ue_info_request_nb_r16_s>());
break;
case types::spare1:
break;
@@ -15066,9 +19830,10 @@ rrc_conn_resume_nb_s& dl_dcch_msg_type_nb_c::c1_c_::set_rrc_conn_resume_r13()
set(types::rrc_conn_resume_r13);
return c.get<rrc_conn_resume_nb_s>();
}
-void dl_dcch_msg_type_nb_c::c1_c_::set_spare2()
+ue_info_request_nb_r16_s& dl_dcch_msg_type_nb_c::c1_c_::set_ue_info_request_r16()
{
- set(types::spare2);
+ set(types::ue_info_request_r16);
+ return c.get<ue_info_request_nb_r16_s>();
}
void dl_dcch_msg_type_nb_c::c1_c_::set_spare1()
{
@@ -15102,7 +19867,9 @@ void dl_dcch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const
j.write_fieldname("rrcConnectionResume-r13");
c.get<rrc_conn_resume_nb_s>().to_json(j);
break;
- case types::spare2:
+ case types::ue_info_request_r16:
+ j.write_fieldname("ueInformationRequest-r16");
+ c.get<ue_info_request_nb_r16_s>().to_json(j);
break;
case types::spare1:
break;
@@ -15133,7 +19900,8 @@ SRSASN_CODE dl_dcch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const
case types::rrc_conn_resume_r13:
HANDLE_CODE(c.get<rrc_conn_resume_nb_s>().pack(bref));
break;
- case types::spare2:
+ case types::ue_info_request_r16:
+ HANDLE_CODE(c.get<ue_info_request_nb_r16_s>().pack(bref));
break;
case types::spare1:
break;
@@ -15167,7 +19935,8 @@ SRSASN_CODE dl_dcch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref)
case types::rrc_conn_resume_r13:
HANDLE_CODE(c.get<rrc_conn_resume_nb_s>().unpack(bref));
break;
- case types::spare2:
+ case types::ue_info_request_r16:
+ HANDLE_CODE(c.get<ue_info_request_nb_r16_s>().unpack(bref));
break;
case types::spare1:
break;
@@ -15186,7 +19955,7 @@ const char* dl_dcch_msg_type_nb_c::c1_c_::types_opts::to_string() const
"securityModeCommand-r13",
"ueCapabilityEnquiry-r13",
"rrcConnectionResume-r13",
- "spare2",
+ "ueInformationRequest-r16",
"spare1"};
return convert_enum_idx(options, 8, value, "dl_dcch_msg_type_nb_c::c1_c_::types");
}
@@ -15261,13 +20030,13 @@ void supported_band_nb_r13_s::to_json(json_writer& j) const
// AccessStratumRelease-NB-r13 ::= ENUMERATED
const char* access_stratum_release_nb_r13_opts::to_string() const
{
- static const char* options[] = {"rel13", "rel14", "rel15", "spare5", "spare4", "spare3", "spare2", "spare1"};
+ static const char* options[] = {"rel13", "rel14", "rel15", "rel16", "rel17", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "access_stratum_release_nb_r13_e");
}
uint8_t access_stratum_release_nb_r13_opts::to_number() const
{
- static const uint8_t options[] = {13, 14, 15};
- return map_enum_number(options, 3, value, "access_stratum_release_nb_r13_e");
+ static const uint8_t options[] = {13, 14, 15, 16, 17};
+ return map_enum_number(options, 5, value, "access_stratum_release_nb_r13_e");
}
// HandoverPreparationInformation-NB-Ext-r14-IEs ::= SEQUENCE
@@ -15810,26 +20579,164 @@ const char* ho_prep_info_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() cons
return convert_enum_idx(options, 4, value, "ho_prep_info_nb_s::crit_exts_c_::c1_c_::types");
}
-// MeasResultServCell-NB-r14 ::= SEQUENCE
-SRSASN_CODE meas_result_serv_cell_nb_r14_s::pack(bit_ref& bref) const
+// InitialUE-Identity-5GC-NB-r16 ::= CHOICE
+void init_ue_id_minus5_gc_nb_r16_c::destroy_()
{
- HANDLE_CODE(pack_integer(bref, nrsrp_result_r14, (uint8_t)0u, (uint8_t)113u));
- HANDLE_CODE(pack_integer(bref, nrsrq_result_r14, (int8_t)-30, (int8_t)46));
+ switch (type_) {
+ case types::ng_minus5_g_s_tmsi_r16:
+ c.destroy<fixed_bitstring<48> >();
+ break;
+ case types::random_value:
+ c.destroy<fixed_bitstring<48> >();
+ break;
+ default:
+ break;
+ }
+}
+void init_ue_id_minus5_gc_nb_r16_c::set(types::options e)
+{
+ destroy_();
+ type_ = e;
+ switch (type_) {
+ case types::ng_minus5_g_s_tmsi_r16:
+ c.init<fixed_bitstring<48> >();
+ break;
+ case types::random_value:
+ c.init<fixed_bitstring<48> >();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c");
+ }
+}
+init_ue_id_minus5_gc_nb_r16_c::init_ue_id_minus5_gc_nb_r16_c(const init_ue_id_minus5_gc_nb_r16_c& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::ng_minus5_g_s_tmsi_r16:
+ c.init(other.c.get<fixed_bitstring<48> >());
+ break;
+ case types::random_value:
+ c.init(other.c.get<fixed_bitstring<48> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c");
+ }
+}
+init_ue_id_minus5_gc_nb_r16_c& init_ue_id_minus5_gc_nb_r16_c::operator=(const init_ue_id_minus5_gc_nb_r16_c& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::ng_minus5_g_s_tmsi_r16:
+ c.set(other.c.get<fixed_bitstring<48> >());
+ break;
+ case types::random_value:
+ c.set(other.c.get<fixed_bitstring<48> >());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c");
+ }
+ return *this;
+}
+fixed_bitstring<48>& init_ue_id_minus5_gc_nb_r16_c::set_ng_minus5_g_s_tmsi_r16()
+{
+ set(types::ng_minus5_g_s_tmsi_r16);
+ return c.get<fixed_bitstring<48> >();
+}
+fixed_bitstring<48>& init_ue_id_minus5_gc_nb_r16_c::set_random_value()
+{
+ set(types::random_value);
+ return c.get<fixed_bitstring<48> >();
+}
+void init_ue_id_minus5_gc_nb_r16_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::ng_minus5_g_s_tmsi_r16:
+ j.write_str("ng-5G-S-TMSI-r16", c.get<fixed_bitstring<48> >().to_string());
+ break;
+ case types::random_value:
+ j.write_str("randomValue", c.get<fixed_bitstring<48> >().to_string());
+ break;
+ default:
+ log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE init_ue_id_minus5_gc_nb_r16_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::ng_minus5_g_s_tmsi_r16:
+ HANDLE_CODE(c.get<fixed_bitstring<48> >().pack(bref));
+ break;
+ case types::random_value:
+ HANDLE_CODE(c.get<fixed_bitstring<48> >().pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
return SRSASN_SUCCESS;
}
-SRSASN_CODE meas_result_serv_cell_nb_r14_s::unpack(cbit_ref& bref)
+SRSASN_CODE init_ue_id_minus5_gc_nb_r16_c::unpack(cbit_ref& bref)
{
- HANDLE_CODE(unpack_integer(nrsrp_result_r14, bref, (uint8_t)0u, (uint8_t)113u));
- HANDLE_CODE(unpack_integer(nrsrq_result_r14, bref, (int8_t)-30, (int8_t)46));
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::ng_minus5_g_s_tmsi_r16:
+ HANDLE_CODE(c.get<fixed_bitstring<48> >().unpack(bref));
+ break;
+ case types::random_value:
+ HANDLE_CODE(c.get<fixed_bitstring<48> >().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* init_ue_id_minus5_gc_nb_r16_c::types_opts::to_string() const
+{
+ static const char* options[] = {"ng-5G-S-TMSI-r16", "randomValue"};
+ return convert_enum_idx(options, 2, value, "init_ue_id_minus5_gc_nb_r16_c::types");
+}
+int8_t init_ue_id_minus5_gc_nb_r16_c::types_opts::to_number() const
+{
+ static const int8_t options[] = {-5};
+ return map_enum_number(options, 1, value, "init_ue_id_minus5_gc_nb_r16_c::types");
+}
+
+// PagingRecord-NB-v1610 ::= SEQUENCE
+SRSASN_CODE paging_record_nb_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(mt_edt_r16_present, 1));
return SRSASN_SUCCESS;
}
-void meas_result_serv_cell_nb_r14_s::to_json(json_writer& j) const
+SRSASN_CODE paging_record_nb_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(mt_edt_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void paging_record_nb_v1610_s::to_json(json_writer& j) const
{
j.start_obj();
- j.write_int("nrsrpResult-r14", nrsrp_result_r14);
- j.write_int("nrsrqResult-r14", nrsrq_result_r14);
+ if (mt_edt_r16_present) {
+ j.write_str("mt-EDT-r16", "true");
+ }
j.end_obj();
}
@@ -15856,6 +20763,47 @@ void paging_record_nb_r13_s::to_json(json_writer& j) const
j.end_obj();
}
+// Paging-NB-v1610-IEs ::= SEQUENCE
+SRSASN_CODE paging_nb_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(paging_record_list_v1610_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));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE paging_nb_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(paging_record_list_v1610_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));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void paging_nb_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 (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// Paging-NB ::= SEQUENCE
SRSASN_CODE paging_nb_s::pack(bit_ref& bref) const
{
@@ -15867,6 +20815,9 @@ SRSASN_CODE paging_nb_s::pack(bit_ref& bref) const
if (paging_record_list_r13_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, paging_record_list_r13, 1, 16));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -15880,6 +20831,9 @@ SRSASN_CODE paging_nb_s::unpack(cbit_ref& bref)
if (paging_record_list_r13_present) {
HANDLE_CODE(unpack_dyn_seq_of(paging_record_list_r13, bref, 1, 16));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -15901,8 +20855,7 @@ void paging_nb_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -16067,6 +21020,310 @@ void pci_arfcn_nb_r14_s::to_json(json_writer& j) const
j.end_obj();
}
+// PUR-ConfigRequest-NB-r16 ::= CHOICE
+void pur_cfg_request_nb_r16_c::set(types::options e)
+{
+ type_ = e;
+}
+void pur_cfg_request_nb_r16_c::set_pur_release_request()
+{
+ set(types::pur_release_request);
+}
+pur_cfg_request_nb_r16_c::pur_setup_request_s_& pur_cfg_request_nb_r16_c::set_pur_setup_request()
+{
+ set(types::pur_setup_request);
+ return c;
+}
+void pur_cfg_request_nb_r16_c::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::pur_release_request:
+ break;
+ case types::pur_setup_request:
+ j.write_fieldname("pur-SetupRequest");
+ j.start_obj();
+ j.write_str("requestedNumOccasions-r16", c.requested_num_occasions_r16.to_string());
+ j.write_fieldname("requestedPeriodicityAndOffset-r16");
+ c.requested_periodicity_and_offset_r16.to_json(j);
+ j.write_str("requestedTBS-r16", c.requested_tbs_r16.to_string());
+ if (c.rrc_ack_r16_present) {
+ j.write_str("rrc-ACK-r16", "true");
+ }
+ j.end_obj();
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_nb_r16_c");
+ }
+ j.end_obj();
+}
+SRSASN_CODE pur_cfg_request_nb_r16_c::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::pur_release_request:
+ break;
+ case types::pur_setup_request:
+ HANDLE_CODE(bref.pack(c.rrc_ack_r16_present, 1));
+ HANDLE_CODE(c.requested_num_occasions_r16.pack(bref));
+ HANDLE_CODE(c.requested_periodicity_and_offset_r16.pack(bref));
+ HANDLE_CODE(c.requested_tbs_r16.pack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_nb_r16_c");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_request_nb_r16_c::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::pur_release_request:
+ break;
+ case types::pur_setup_request:
+ HANDLE_CODE(bref.unpack(c.rrc_ack_r16_present, 1));
+ HANDLE_CODE(c.requested_num_occasions_r16.unpack(bref));
+ HANDLE_CODE(c.requested_periodicity_and_offset_r16.unpack(bref));
+ HANDLE_CODE(c.requested_tbs_r16.unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_nb_r16_c");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* pur_cfg_request_nb_r16_c::pur_setup_request_s_::requested_num_occasions_r16_opts::to_string() const
+{
+ static const char* options[] = {"one", "infinite"};
+ return convert_enum_idx(
+ options, 2, value, "pur_cfg_request_nb_r16_c::pur_setup_request_s_::requested_num_occasions_r16_e_");
+}
+uint8_t pur_cfg_request_nb_r16_c::pur_setup_request_s_::requested_num_occasions_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {1};
+ return map_enum_number(
+ options, 1, value, "pur_cfg_request_nb_r16_c::pur_setup_request_s_::requested_num_occasions_r16_e_");
+}
+
+const char* pur_cfg_request_nb_r16_c::pur_setup_request_s_::requested_tbs_r16_opts::to_string() const
+{
+ static const char* options[] = {"b328", "b376", "b424", "b472", "b504", "b552", "b584", "b616",
+ "b680", "b744", "b776", "b808", "b872", "b904", "b936", "b968",
+ "b1000", "b1032", "b1096", "b1128", "b1192", "b1224", "b1256", "b1352",
+ "b1384", "b1544", "b1608", "b1736", "b1800", "b2024", "b2280", "b2536"};
+ return convert_enum_idx(options, 32, value, "pur_cfg_request_nb_r16_c::pur_setup_request_s_::requested_tbs_r16_e_");
+}
+uint16_t pur_cfg_request_nb_r16_c::pur_setup_request_s_::requested_tbs_r16_opts::to_number() const
+{
+ static const uint16_t options[] = {328, 376, 424, 472, 504, 552, 584, 616, 680, 744, 776,
+ 808, 872, 904, 936, 968, 1000, 1032, 1096, 1128, 1192, 1224,
+ 1256, 1352, 1384, 1544, 1608, 1736, 1800, 2024, 2280, 2536};
+ return map_enum_number(options, 32, value, "pur_cfg_request_nb_r16_c::pur_setup_request_s_::requested_tbs_r16_e_");
+}
+
+const char* pur_cfg_request_nb_r16_c::types_opts::to_string() const
+{
+ static const char* options[] = {"pur-ReleaseRequest", "pur-SetupRequest"};
+ return convert_enum_idx(options, 2, value, "pur_cfg_request_nb_r16_c::types");
+}
+
+// PURConfigurationRequest-NB-r16-IEs ::= SEQUENCE
+SRSASN_CODE pur_cfg_request_nb_r16_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pur_cfg_request_r16_present, 1));
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (pur_cfg_request_r16_present) {
+ HANDLE_CODE(pur_cfg_request_r16.pack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_request_nb_r16_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pur_cfg_request_r16_present, 1));
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (pur_cfg_request_r16_present) {
+ HANDLE_CODE(pur_cfg_request_r16.unpack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void pur_cfg_request_nb_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pur_cfg_request_r16_present) {
+ j.write_fieldname("pur-ConfigRequest-r16");
+ pur_cfg_request_r16.to_json(j);
+ }
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// PURConfigurationRequest-NB-r16 ::= SEQUENCE
+SRSASN_CODE pur_cfg_request_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(crit_exts.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_request_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(crit_exts.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void pur_cfg_request_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("criticalExtensions");
+ crit_exts.to_json(j);
+ j.end_obj();
+}
+
+void pur_cfg_request_nb_r16_s::crit_exts_c_::set(types::options e)
+{
+ type_ = e;
+}
+pur_cfg_request_nb_r16_ies_s& pur_cfg_request_nb_r16_s::crit_exts_c_::set_pur_cfg_request_r16()
+{
+ set(types::pur_cfg_request_r16);
+ return c;
+}
+void pur_cfg_request_nb_r16_s::crit_exts_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void pur_cfg_request_nb_r16_s::crit_exts_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::pur_cfg_request_r16:
+ j.write_fieldname("purConfigurationRequest-r16");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_nb_r16_s::crit_exts_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE pur_cfg_request_nb_r16_s::crit_exts_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::pur_cfg_request_r16:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_nb_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_cfg_request_nb_r16_s::crit_exts_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::pur_cfg_request_r16:
+ HANDLE_CODE(c.unpack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "pur_cfg_request_nb_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* pur_cfg_request_nb_r16_s::crit_exts_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"purConfigurationRequest-r16", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "pur_cfg_request_nb_r16_s::crit_exts_c_::types");
+}
+
+// SupportedBand-NB-v1710 ::= SEQUENCE
+SRSASN_CODE supported_band_nb_v1710_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(npusch_minus16_qam_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE supported_band_nb_v1710_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(npusch_minus16_qam_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void supported_band_nb_v1710_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (npusch_minus16_qam_r17_present) {
+ j.write_str("npusch-16QAM-r17", "supported");
+ }
+ j.end_obj();
+}
+
+// RF-Parameters-NB-v1710 ::= SEQUENCE
+SRSASN_CODE rf_params_nb_v1710_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(supported_band_list_v1710_present, 1));
+
+ if (supported_band_list_v1710_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_list_v1710, 1, 64));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rf_params_nb_v1710_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(supported_band_list_v1710_present, 1));
+
+ if (supported_band_list_v1710_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(supported_band_list_v1710, bref, 1, 64));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rf_params_nb_v1710_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (supported_band_list_v1710_present) {
+ j.start_array("supportedBandList-v1710");
+ for (const auto& e1 : supported_band_list_v1710) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ j.end_obj();
+}
+
// RRCConnectionReconfigurationComplete-NB-r13-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_recfg_complete_nb_r13_ies_s::pack(bit_ref& bref) const
{
@@ -16195,6 +21452,84 @@ const char* rrc_conn_recfg_complete_nb_s::crit_exts_c_::types_opts::to_string()
return convert_enum_idx(options, 2, value, "rrc_conn_recfg_complete_nb_s::crit_exts_c_::types");
}
+// RRCConnectionReestablishmentComplete-NB-v1710-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_reest_complete_nb_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_reest_complete_nb_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_reest_complete_nb_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (gnss_validity_dur_r17_present) {
+ j.write_str("gnss-ValidityDuration-r17", gnss_validity_dur_r17.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// RRCConnectionReestablishmentComplete-NB-v1610-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_reest_complete_nb_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(rlf_info_available_r16_present, 1));
+ HANDLE_CODE(bref.pack(anr_info_available_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_reest_complete_nb_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(rlf_info_available_r16_present, 1));
+ HANDLE_CODE(bref.unpack(anr_info_available_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_reest_complete_nb_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (rlf_info_available_r16_present) {
+ j.write_str("rlf-InfoAvailable-r16", "true");
+ }
+ if (anr_info_available_r16_present) {
+ j.write_str("anr-InfoAvailable-r16", "true");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// RRCConnectionReestablishmentComplete-NB-v1470-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_reest_complete_nb_v1470_ies_s::pack(bit_ref& bref) const
{
@@ -16204,6 +21539,9 @@ SRSASN_CODE rrc_conn_reest_complete_nb_v1470_ies_s::pack(bit_ref& bref) const
if (meas_result_serv_cell_r14_present) {
HANDLE_CODE(meas_result_serv_cell_r14.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -16215,6 +21553,9 @@ SRSASN_CODE rrc_conn_reest_complete_nb_v1470_ies_s::unpack(cbit_ref& bref)
if (meas_result_serv_cell_r14_present) {
HANDLE_CODE(meas_result_serv_cell_r14.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -16227,8 +21568,7 @@ void rrc_conn_reest_complete_nb_v1470_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -16366,25 +21706,6 @@ const char* rrc_conn_reest_complete_nb_s::crit_exts_c_::types_opts::to_string()
return convert_enum_idx(options, 2, value, "rrc_conn_reest_complete_nb_s::crit_exts_c_::types");
}
-// CQI-NPDCCH-NB-r14 ::= ENUMERATED
-const char* cqi_npdcch_nb_r14_opts::to_string() const
-{
- static const char* options[] = {"noMeasurements",
- "candidateRep-A",
- "candidateRep-B",
- "candidateRep-C",
- "candidateRep-D",
- "candidateRep-E",
- "candidateRep-F",
- "candidateRep-G",
- "candidateRep-H",
- "candidateRep-I",
- "candidateRep-J",
- "candidateRep-K",
- "candidateRep-L"};
- return convert_enum_idx(options, 13, value, "cqi_npdcch_nb_r14_e");
-}
-
// CQI-NPDCCH-Short-NB-r14 ::= ENUMERATED
const char* cqi_npdcch_short_nb_r14_opts::to_string() const
{
@@ -16406,6 +21727,88 @@ int8_t cqi_npdcch_short_nb_r14_opts::to_number() const
return 0;
}
+// ReestabUE-Identity-CP-5GC-NB-r16 ::= SEQUENCE
+SRSASN_CODE reestab_ue_id_cp_minus5_gc_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(truncated5_g_s_tmsi_r16.pack(bref));
+ HANDLE_CODE(ul_nas_mac_r16.pack(bref));
+ HANDLE_CODE(ul_nas_count_r16.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE reestab_ue_id_cp_minus5_gc_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(truncated5_g_s_tmsi_r16.unpack(bref));
+ HANDLE_CODE(ul_nas_mac_r16.unpack(bref));
+ HANDLE_CODE(ul_nas_count_r16.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void reestab_ue_id_cp_minus5_gc_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("truncated5G-S-TMSI-r16", truncated5_g_s_tmsi_r16.to_string());
+ j.write_str("ul-NAS-MAC-r16", ul_nas_mac_r16.to_string());
+ j.write_str("ul-NAS-Count-r16", ul_nas_count_r16.to_string());
+ j.end_obj();
+}
+
+// ReestablishmentCause-NB-r13 ::= ENUMERATED
+const char* reest_cause_nb_r13_opts::to_string() const
+{
+ static const char* options[] = {"reconfigurationFailure", "otherFailure", "spare2", "spare1"};
+ return convert_enum_idx(options, 4, value, "reest_cause_nb_r13_e");
+}
+
+// RRCConnectionReestablishmentRequest-5GC-NB-r16-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_reest_request_minus5_gc_nb_r16_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(ue_id_r16.pack(bref));
+ HANDLE_CODE(reest_cause_r16.pack(bref));
+ HANDLE_CODE(cqi_npdcch_r16.pack(bref));
+ HANDLE_CODE(spare.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_reest_request_minus5_gc_nb_r16_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(ue_id_r16.unpack(bref));
+ HANDLE_CODE(reest_cause_r16.unpack(bref));
+ HANDLE_CODE(cqi_npdcch_r16.unpack(bref));
+ HANDLE_CODE(spare.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_reest_request_minus5_gc_nb_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("ue-Identity-r16");
+ ue_id_r16.to_json(j);
+ j.write_str("reestablishmentCause-r16", reest_cause_r16.to_string());
+ j.write_str("cqi-NPDCCH-r16", cqi_npdcch_r16.to_string());
+ j.write_str("spare", spare.to_string());
+ j.end_obj();
+}
+
+// CQI-NPDCCH-NB-r14 ::= ENUMERATED
+const char* cqi_npdcch_nb_r14_opts::to_string() const
+{
+ static const char* options[] = {"noMeasurements",
+ "candidateRep-A",
+ "candidateRep-B",
+ "candidateRep-C",
+ "candidateRep-D",
+ "candidateRep-E",
+ "candidateRep-F",
+ "candidateRep-G",
+ "candidateRep-H",
+ "candidateRep-I",
+ "candidateRep-J",
+ "candidateRep-K",
+ "candidateRep-L"};
+ return convert_enum_idx(options, 13, value, "cqi_npdcch_nb_r14_e");
+}
+
// ReestabUE-Identity-CP-NB-r14 ::= SEQUENCE
SRSASN_CODE reestab_ue_id_cp_nb_r14_s::pack(bit_ref& bref) const
{
@@ -16433,13 +21836,6 @@ void reestab_ue_id_cp_nb_r14_s::to_json(json_writer& j) const
j.end_obj();
}
-// ReestablishmentCause-NB-r13 ::= ENUMERATED
-const char* reest_cause_nb_r13_opts::to_string() const
-{
- static const char* options[] = {"reconfigurationFailure", "otherFailure", "spare2", "spare1"};
- return convert_enum_idx(options, 4, value, "reest_cause_nb_r13_e");
-}
-
// RRCConnectionReestablishmentRequest-NB-r13-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_reest_request_nb_r13_ies_s::pack(bit_ref& bref) const
{
@@ -16657,19 +22053,86 @@ SRSASN_CODE rrc_conn_reest_request_nb_s::crit_exts_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS;
}
+void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::destroy_()
+{
+ switch (type_) {
+ case types::rrc_conn_reest_request_r14:
+ c.destroy<rrc_conn_reest_request_nb_r14_ies_s>();
+ break;
+ case types::later:
+ c.destroy<later_c__>();
+ break;
+ default:
+ break;
+ }
+}
void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::set(types::options e)
{
+ destroy_();
type_ = e;
+ switch (type_) {
+ case types::rrc_conn_reest_request_r14:
+ c.init<rrc_conn_reest_request_nb_r14_ies_s>();
+ break;
+ case types::later:
+ c.init<later_c__>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_");
+ }
+}
+rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c_(
+ const rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::rrc_conn_reest_request_r14:
+ c.init(other.c.get<rrc_conn_reest_request_nb_r14_ies_s>());
+ break;
+ case types::later:
+ c.init(other.c.get<later_c__>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_");
+ }
+}
+rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_& rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::operator=(
+ const rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::rrc_conn_reest_request_r14:
+ c.set(other.c.get<rrc_conn_reest_request_nb_r14_ies_s>());
+ break;
+ case types::later:
+ c.set(other.c.get<later_c__>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_");
+ }
+
+ return *this;
}
rrc_conn_reest_request_nb_r14_ies_s&
rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::set_rrc_conn_reest_request_r14()
{
set(types::rrc_conn_reest_request_r14);
- return c;
+ return c.get<rrc_conn_reest_request_nb_r14_ies_s>();
}
-void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::set_crit_exts_future()
+rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__&
+rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::set_later()
{
- set(types::crit_exts_future);
+ set(types::later);
+ return c.get<later_c__>();
}
void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::to_json(json_writer& j) const
{
@@ -16677,9 +22140,11 @@ void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::to_json(json_writer& j
switch (type_) {
case types::rrc_conn_reest_request_r14:
j.write_fieldname("rrcConnectionReestablishmentRequest-r14");
- c.to_json(j);
+ c.get<rrc_conn_reest_request_nb_r14_ies_s>().to_json(j);
break;
- case types::crit_exts_future:
+ case types::later:
+ j.write_fieldname("later");
+ c.get<later_c__>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_");
@@ -16691,9 +22156,10 @@ SRSASN_CODE rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::pack(bit_ref& b
type_.pack(bref);
switch (type_) {
case types::rrc_conn_reest_request_r14:
- HANDLE_CODE(c.pack(bref));
+ HANDLE_CODE(c.get<rrc_conn_reest_request_nb_r14_ies_s>().pack(bref));
break;
- case types::crit_exts_future:
+ case types::later:
+ HANDLE_CODE(c.get<later_c__>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_");
@@ -16708,20 +22174,89 @@ SRSASN_CODE rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::unpack(cbit_ref
set(e);
switch (type_) {
case types::rrc_conn_reest_request_r14:
+ HANDLE_CODE(c.get<rrc_conn_reest_request_nb_r14_ies_s>().unpack(bref));
+ break;
+ case types::later:
+ HANDLE_CODE(c.get<later_c__>().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__::set(types::options e)
+{
+ type_ = e;
+}
+rrc_conn_reest_request_minus5_gc_nb_r16_ies_s&
+rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__::set_rrc_conn_reest_request_r16()
+{
+ set(types::rrc_conn_reest_request_r16);
+ return c;
+}
+void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::rrc_conn_reest_request_r16:
+ j.write_fieldname("rrcConnectionReestablishmentRequest-r16");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__");
+ }
+ j.end_obj();
+}
+SRSASN_CODE rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::rrc_conn_reest_request_r16:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::rrc_conn_reest_request_r16:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
- log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_");
+ log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
+const char* rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__::types_opts::to_string() const
+{
+ static const char* options[] = {"rrcConnectionReestablishmentRequest-r16", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__::types");
+}
+
const char* rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::types_opts::to_string() const
{
- static const char* options[] = {"rrcConnectionReestablishmentRequest-r14", "criticalExtensionsFuture"};
+ static const char* options[] = {"rrcConnectionReestablishmentRequest-r14", "later"};
return convert_enum_idx(options, 2, value, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::types");
}
@@ -16731,6 +22266,43 @@ const char* rrc_conn_reest_request_nb_s::crit_exts_c_::types_opts::to_string() c
return convert_enum_idx(options, 2, value, "rrc_conn_reest_request_nb_s::crit_exts_c_::types");
}
+// RRCConnectionRequest-5GC-NB-r16-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_request_minus5_gc_nb_r16_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(ue_id_r16.pack(bref));
+ HANDLE_CODE(establishment_cause_r16.pack(bref));
+ HANDLE_CODE(cqi_npdcch_r16.pack(bref));
+ HANDLE_CODE(spare.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_request_minus5_gc_nb_r16_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(ue_id_r16.unpack(bref));
+ HANDLE_CODE(establishment_cause_r16.unpack(bref));
+ HANDLE_CODE(cqi_npdcch_r16.unpack(bref));
+ HANDLE_CODE(spare.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_request_minus5_gc_nb_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("ue-Identity-r16");
+ ue_id_r16.to_json(j);
+ j.write_str("establishmentCause-r16", establishment_cause_r16.to_string());
+ j.write_str("cqi-NPDCCH-r16", cqi_npdcch_r16.to_string());
+ j.write_str("spare", spare.to_string());
+ j.end_obj();
+}
+
+const char* rrc_conn_request_minus5_gc_nb_r16_ies_s::establishment_cause_r16_opts::to_string() const
+{
+ static const char* options[] = {
+ "mt-Access", "mo-Signalling", "mo-Data", "mo-ExceptionData", "spare4", "spare3", "spare2", "spare1"};
+ return convert_enum_idx(options, 8, value, "rrc_conn_request_minus5_gc_nb_r16_ies_s::establishment_cause_r16_e_");
+}
+
// EstablishmentCause-NB-r13 ::= ENUMERATED
const char* establishment_cause_nb_r13_opts::to_string() const
{
@@ -16739,7 +22311,7 @@ const char* establishment_cause_nb_r13_opts::to_string() const
"mo-Data",
"mo-ExceptionData",
"delayTolerantAccess-v1330",
- "spare3",
+ "mt-EDT-v1610",
"spare2",
"spare1"};
return convert_enum_idx(options, 8, value, "establishment_cause_nb_r13_e");
@@ -16811,18 +22383,83 @@ void rrc_conn_request_nb_s::to_json(json_writer& j) const
j.end_obj();
}
+void rrc_conn_request_nb_s::crit_exts_c_::destroy_()
+{
+ switch (type_) {
+ case types::rrc_conn_request_r13:
+ c.destroy<rrc_conn_request_nb_r13_ies_s>();
+ break;
+ case types::later:
+ c.destroy<later_c_>();
+ break;
+ default:
+ break;
+ }
+}
void rrc_conn_request_nb_s::crit_exts_c_::set(types::options e)
{
+ destroy_();
type_ = e;
+ switch (type_) {
+ case types::rrc_conn_request_r13:
+ c.init<rrc_conn_request_nb_r13_ies_s>();
+ break;
+ case types::later:
+ c.init<later_c_>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_");
+ }
+}
+rrc_conn_request_nb_s::crit_exts_c_::crit_exts_c_(const rrc_conn_request_nb_s::crit_exts_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::rrc_conn_request_r13:
+ c.init(other.c.get<rrc_conn_request_nb_r13_ies_s>());
+ break;
+ case types::later:
+ c.init(other.c.get<later_c_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_");
+ }
+}
+rrc_conn_request_nb_s::crit_exts_c_&
+rrc_conn_request_nb_s::crit_exts_c_::operator=(const rrc_conn_request_nb_s::crit_exts_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::rrc_conn_request_r13:
+ c.set(other.c.get<rrc_conn_request_nb_r13_ies_s>());
+ break;
+ case types::later:
+ c.set(other.c.get<later_c_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_");
+ }
+
+ return *this;
}
rrc_conn_request_nb_r13_ies_s& rrc_conn_request_nb_s::crit_exts_c_::set_rrc_conn_request_r13()
{
set(types::rrc_conn_request_r13);
- return c;
+ return c.get<rrc_conn_request_nb_r13_ies_s>();
}
-void rrc_conn_request_nb_s::crit_exts_c_::set_crit_exts_future()
+rrc_conn_request_nb_s::crit_exts_c_::later_c_& rrc_conn_request_nb_s::crit_exts_c_::set_later()
{
- set(types::crit_exts_future);
+ set(types::later);
+ return c.get<later_c_>();
}
void rrc_conn_request_nb_s::crit_exts_c_::to_json(json_writer& j) const
{
@@ -16830,9 +22467,11 @@ void rrc_conn_request_nb_s::crit_exts_c_::to_json(json_writer& j) const
switch (type_) {
case types::rrc_conn_request_r13:
j.write_fieldname("rrcConnectionRequest-r13");
- c.to_json(j);
+ c.get<rrc_conn_request_nb_r13_ies_s>().to_json(j);
break;
- case types::crit_exts_future:
+ case types::later:
+ j.write_fieldname("later");
+ c.get<later_c_>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_");
@@ -16844,9 +22483,10 @@ SRSASN_CODE rrc_conn_request_nb_s::crit_exts_c_::pack(bit_ref& bref) const
type_.pack(bref);
switch (type_) {
case types::rrc_conn_request_r13:
- HANDLE_CODE(c.pack(bref));
+ HANDLE_CODE(c.get<rrc_conn_request_nb_r13_ies_s>().pack(bref));
break;
- case types::crit_exts_future:
+ case types::later:
+ HANDLE_CODE(c.get<later_c_>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_");
@@ -16861,23 +22501,169 @@ SRSASN_CODE rrc_conn_request_nb_s::crit_exts_c_::unpack(cbit_ref& bref)
set(e);
switch (type_) {
case types::rrc_conn_request_r13:
+ HANDLE_CODE(c.get<rrc_conn_request_nb_r13_ies_s>().unpack(bref));
+ break;
+ case types::later:
+ HANDLE_CODE(c.get<later_c_>().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+void rrc_conn_request_nb_s::crit_exts_c_::later_c_::set(types::options e)
+{
+ type_ = e;
+}
+rrc_conn_request_minus5_gc_nb_r16_ies_s& rrc_conn_request_nb_s::crit_exts_c_::later_c_::set_rrc_conn_request_r16()
+{
+ set(types::rrc_conn_request_r16);
+ return c;
+}
+void rrc_conn_request_nb_s::crit_exts_c_::later_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void rrc_conn_request_nb_s::crit_exts_c_::later_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::rrc_conn_request_r16:
+ j.write_fieldname("rrcConnectionRequest-r16");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_::later_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE rrc_conn_request_nb_s::crit_exts_c_::later_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::rrc_conn_request_r16:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_::later_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_request_nb_s::crit_exts_c_::later_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::rrc_conn_request_r16:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
- log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_");
+ log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_::later_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
+const char* rrc_conn_request_nb_s::crit_exts_c_::later_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"rrcConnectionRequest-r16", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "rrc_conn_request_nb_s::crit_exts_c_::later_c_::types");
+}
+
const char* rrc_conn_request_nb_s::crit_exts_c_::types_opts::to_string() const
{
- static const char* options[] = {"rrcConnectionRequest-r13", "criticalExtensionsFuture"};
+ static const char* options[] = {"rrcConnectionRequest-r13", "later"};
return convert_enum_idx(options, 2, value, "rrc_conn_request_nb_s::crit_exts_c_::types");
}
+// RRCConnectionResumeComplete-NB-v1710-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_resume_complete_nb_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_resume_complete_nb_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_resume_complete_nb_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (gnss_validity_dur_r17_present) {
+ j.write_str("gnss-ValidityDuration-r17", gnss_validity_dur_r17.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// RRCConnectionResumeComplete-NB-v1610-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_resume_complete_nb_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(rlf_info_available_r16_present, 1));
+ HANDLE_CODE(bref.pack(anr_info_available_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_resume_complete_nb_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(rlf_info_available_r16_present, 1));
+ HANDLE_CODE(bref.unpack(anr_info_available_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_resume_complete_nb_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (rlf_info_available_r16_present) {
+ j.write_str("rlf-InfoAvailable-r16", "true");
+ }
+ if (anr_info_available_r16_present) {
+ j.write_str("anr-InfoAvailable-r16", "true");
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// RRCConnectionResumeComplete-NB-v1470-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_resume_complete_nb_v1470_ies_s::pack(bit_ref& bref) const
{
@@ -16887,6 +22673,9 @@ SRSASN_CODE rrc_conn_resume_complete_nb_v1470_ies_s::pack(bit_ref& bref) const
if (meas_result_serv_cell_r14_present) {
HANDLE_CODE(meas_result_serv_cell_r14.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -16898,6 +22687,9 @@ SRSASN_CODE rrc_conn_resume_complete_nb_v1470_ies_s::unpack(cbit_ref& bref)
if (meas_result_serv_cell_r14_present) {
HANDLE_CODE(meas_result_serv_cell_r14.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -16910,8 +22702,7 @@ void rrc_conn_resume_complete_nb_v1470_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -17071,6 +22862,38 @@ const char* rrc_conn_resume_complete_nb_s::crit_exts_c_::types_opts::to_string()
return convert_enum_idx(options, 2, value, "rrc_conn_resume_complete_nb_s::crit_exts_c_::types");
}
+// RRCConnectionResumeRequest-5GC-NB-r16-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_resume_request_minus5_gc_nb_r16_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(resume_id_r16.pack(bref));
+ HANDLE_CODE(short_resume_mac_i_r16.pack(bref));
+ HANDLE_CODE(resume_cause_r16.pack(bref));
+ HANDLE_CODE(cqi_npdcch_r16.pack(bref));
+ HANDLE_CODE(spare.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_resume_request_minus5_gc_nb_r16_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(resume_id_r16.unpack(bref));
+ HANDLE_CODE(short_resume_mac_i_r16.unpack(bref));
+ HANDLE_CODE(resume_cause_r16.unpack(bref));
+ HANDLE_CODE(cqi_npdcch_r16.unpack(bref));
+ HANDLE_CODE(spare.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_resume_request_minus5_gc_nb_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_str("resumeID-r16", resume_id_r16.to_string());
+ j.write_str("shortResumeMAC-I-r16", short_resume_mac_i_r16.to_string());
+ j.write_str("resumeCause-r16", resume_cause_r16.to_string());
+ j.write_str("cqi-NPDCCH-r16", cqi_npdcch_r16.to_string());
+ j.write_str("spare", spare.to_string());
+ j.end_obj();
+}
+
// RRCConnectionResumeRequest-NB-r13-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_resume_request_nb_r13_ies_s::pack(bit_ref& bref) const
{
@@ -17079,6 +22902,7 @@ SRSASN_CODE rrc_conn_resume_request_nb_r13_ies_s::pack(bit_ref& bref) const
HANDLE_CODE(resume_cause_r13.pack(bref));
HANDLE_CODE(bref.pack(early_contention_resolution_r14, 1));
HANDLE_CODE(cqi_npdcch_r14.pack(bref));
+ HANDLE_CODE(bref.pack(anr_info_available_r16, 1));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
@@ -17090,6 +22914,7 @@ SRSASN_CODE rrc_conn_resume_request_nb_r13_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE(resume_cause_r13.unpack(bref));
HANDLE_CODE(bref.unpack(early_contention_resolution_r14, 1));
HANDLE_CODE(cqi_npdcch_r14.unpack(bref));
+ HANDLE_CODE(bref.unpack(anr_info_available_r16, 1));
HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS;
@@ -17102,6 +22927,7 @@ void rrc_conn_resume_request_nb_r13_ies_s::to_json(json_writer& j) const
j.write_str("resumeCause-r13", resume_cause_r13.to_string());
j.write_bool("earlyContentionResolution-r14", early_contention_resolution_r14);
j.write_str("cqi-NPDCCH-r14", cqi_npdcch_r14.to_string());
+ j.write_bool("anr-InfoAvailable-r16", anr_info_available_r16);
j.write_str("spare", spare.to_string());
j.end_obj();
}
@@ -17127,18 +22953,83 @@ void rrc_conn_resume_request_nb_s::to_json(json_writer& j) const
j.end_obj();
}
+void rrc_conn_resume_request_nb_s::crit_exts_c_::destroy_()
+{
+ switch (type_) {
+ case types::rrc_conn_resume_request_r13:
+ c.destroy<rrc_conn_resume_request_nb_r13_ies_s>();
+ break;
+ case types::later:
+ c.destroy<later_c_>();
+ break;
+ default:
+ break;
+ }
+}
void rrc_conn_resume_request_nb_s::crit_exts_c_::set(types::options e)
{
+ destroy_();
type_ = e;
+ switch (type_) {
+ case types::rrc_conn_resume_request_r13:
+ c.init<rrc_conn_resume_request_nb_r13_ies_s>();
+ break;
+ case types::later:
+ c.init<later_c_>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_");
+ }
+}
+rrc_conn_resume_request_nb_s::crit_exts_c_::crit_exts_c_(const rrc_conn_resume_request_nb_s::crit_exts_c_& other)
+{
+ type_ = other.type();
+ switch (type_) {
+ case types::rrc_conn_resume_request_r13:
+ c.init(other.c.get<rrc_conn_resume_request_nb_r13_ies_s>());
+ break;
+ case types::later:
+ c.init(other.c.get<later_c_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_");
+ }
+}
+rrc_conn_resume_request_nb_s::crit_exts_c_&
+rrc_conn_resume_request_nb_s::crit_exts_c_::operator=(const rrc_conn_resume_request_nb_s::crit_exts_c_& other)
+{
+ if (this == &other) {
+ return *this;
+ }
+ set(other.type());
+ switch (type_) {
+ case types::rrc_conn_resume_request_r13:
+ c.set(other.c.get<rrc_conn_resume_request_nb_r13_ies_s>());
+ break;
+ case types::later:
+ c.set(other.c.get<later_c_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_");
+ }
+
+ return *this;
}
rrc_conn_resume_request_nb_r13_ies_s& rrc_conn_resume_request_nb_s::crit_exts_c_::set_rrc_conn_resume_request_r13()
{
set(types::rrc_conn_resume_request_r13);
- return c;
+ return c.get<rrc_conn_resume_request_nb_r13_ies_s>();
}
-void rrc_conn_resume_request_nb_s::crit_exts_c_::set_crit_exts_future()
+rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_& rrc_conn_resume_request_nb_s::crit_exts_c_::set_later()
{
- set(types::crit_exts_future);
+ set(types::later);
+ return c.get<later_c_>();
}
void rrc_conn_resume_request_nb_s::crit_exts_c_::to_json(json_writer& j) const
{
@@ -17146,9 +23037,11 @@ void rrc_conn_resume_request_nb_s::crit_exts_c_::to_json(json_writer& j) const
switch (type_) {
case types::rrc_conn_resume_request_r13:
j.write_fieldname("rrcConnectionResumeRequest-r13");
- c.to_json(j);
+ c.get<rrc_conn_resume_request_nb_r13_ies_s>().to_json(j);
break;
- case types::crit_exts_future:
+ case types::later:
+ j.write_fieldname("later");
+ c.get<later_c_>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_");
@@ -17160,9 +23053,10 @@ SRSASN_CODE rrc_conn_resume_request_nb_s::crit_exts_c_::pack(bit_ref& bref) cons
type_.pack(bref);
switch (type_) {
case types::rrc_conn_resume_request_r13:
- HANDLE_CODE(c.pack(bref));
+ HANDLE_CODE(c.get<rrc_conn_resume_request_nb_r13_ies_s>().pack(bref));
break;
- case types::crit_exts_future:
+ case types::later:
+ HANDLE_CODE(c.get<later_c_>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_");
@@ -17177,23 +23071,251 @@ SRSASN_CODE rrc_conn_resume_request_nb_s::crit_exts_c_::unpack(cbit_ref& bref)
set(e);
switch (type_) {
case types::rrc_conn_resume_request_r13:
+ HANDLE_CODE(c.get<rrc_conn_resume_request_nb_r13_ies_s>().unpack(bref));
+ break;
+ case types::later:
+ HANDLE_CODE(c.get<later_c_>().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+void rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_::set(types::options e)
+{
+ type_ = e;
+}
+rrc_conn_resume_request_minus5_gc_nb_r16_ies_s&
+rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_::set_rrc_conn_resume_request_r16()
+{
+ set(types::rrc_conn_resume_request_r16);
+ return c;
+}
+void rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::rrc_conn_resume_request_r16:
+ j.write_fieldname("rrcConnectionResumeRequest-r16");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::rrc_conn_resume_request_r16:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::rrc_conn_resume_request_r16:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
- log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_");
+ log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
+const char* rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"rrcConnectionResumeRequest-r16", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_::types");
+}
+
const char* rrc_conn_resume_request_nb_s::crit_exts_c_::types_opts::to_string() const
{
- static const char* options[] = {"rrcConnectionResumeRequest-r13", "criticalExtensionsFuture"};
+ static const char* options[] = {"rrcConnectionResumeRequest-r13", "later"};
return convert_enum_idx(options, 2, value, "rrc_conn_resume_request_nb_s::crit_exts_c_::types");
}
+// RRCConnectionSetupComplete-NB-v1710-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_setup_complete_nb_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_setup_complete_nb_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(gnss_validity_dur_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (gnss_validity_dur_r17_present) {
+ HANDLE_CODE(gnss_validity_dur_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_setup_complete_nb_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (gnss_validity_dur_r17_present) {
+ j.write_str("gnss-ValidityDuration-r17", gnss_validity_dur_r17.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// RRCConnectionSetupComplete-NB-v1610-IEs ::= SEQUENCE
+SRSASN_CODE rrc_conn_setup_complete_nb_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ng_minus5_g_s_tmsi_r16_present, 1));
+ HANDLE_CODE(bref.pack(registered_amf_r16_present, 1));
+ HANDLE_CODE(bref.pack(gummei_type_v1610_present, 1));
+ HANDLE_CODE(bref.pack(guami_type_r16_present, 1));
+ HANDLE_CODE(bref.pack(s_nssai_list_r16_present, 1));
+ HANDLE_CODE(bref.pack(ng_u_data_transfer_r16_present, 1));
+ HANDLE_CODE(bref.pack(up_cio_t_minus5_gs_optim_r16_present, 1));
+ HANDLE_CODE(bref.pack(rlf_info_available_r16_present, 1));
+ HANDLE_CODE(bref.pack(anr_info_available_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_cfg_id_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (ng_minus5_g_s_tmsi_r16_present) {
+ HANDLE_CODE(ng_minus5_g_s_tmsi_r16.pack(bref));
+ }
+ if (registered_amf_r16_present) {
+ HANDLE_CODE(registered_amf_r16.pack(bref));
+ }
+ if (guami_type_r16_present) {
+ HANDLE_CODE(guami_type_r16.pack(bref));
+ }
+ if (s_nssai_list_r16_present) {
+ HANDLE_CODE(pack_dyn_seq_of(bref, s_nssai_list_r16, 1, 8));
+ }
+ if (pur_cfg_id_r16_present) {
+ HANDLE_CODE(pur_cfg_id_r16.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_conn_setup_complete_nb_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ng_minus5_g_s_tmsi_r16_present, 1));
+ HANDLE_CODE(bref.unpack(registered_amf_r16_present, 1));
+ HANDLE_CODE(bref.unpack(gummei_type_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(guami_type_r16_present, 1));
+ HANDLE_CODE(bref.unpack(s_nssai_list_r16_present, 1));
+ HANDLE_CODE(bref.unpack(ng_u_data_transfer_r16_present, 1));
+ HANDLE_CODE(bref.unpack(up_cio_t_minus5_gs_optim_r16_present, 1));
+ HANDLE_CODE(bref.unpack(rlf_info_available_r16_present, 1));
+ HANDLE_CODE(bref.unpack(anr_info_available_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_cfg_id_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (ng_minus5_g_s_tmsi_r16_present) {
+ HANDLE_CODE(ng_minus5_g_s_tmsi_r16.unpack(bref));
+ }
+ if (registered_amf_r16_present) {
+ HANDLE_CODE(registered_amf_r16.unpack(bref));
+ }
+ if (guami_type_r16_present) {
+ HANDLE_CODE(guami_type_r16.unpack(bref));
+ }
+ if (s_nssai_list_r16_present) {
+ HANDLE_CODE(unpack_dyn_seq_of(s_nssai_list_r16, bref, 1, 8));
+ }
+ if (pur_cfg_id_r16_present) {
+ HANDLE_CODE(pur_cfg_id_r16.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void rrc_conn_setup_complete_nb_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ng_minus5_g_s_tmsi_r16_present) {
+ j.write_str("ng-5G-S-TMSI-r16", ng_minus5_g_s_tmsi_r16.to_string());
+ }
+ if (registered_amf_r16_present) {
+ j.write_fieldname("registeredAMF-r16");
+ registered_amf_r16.to_json(j);
+ }
+ if (gummei_type_v1610_present) {
+ j.write_str("gummei-Type-v1610", "mappedFrom5G");
+ }
+ if (guami_type_r16_present) {
+ j.write_str("guami-Type-r16", guami_type_r16.to_string());
+ }
+ if (s_nssai_list_r16_present) {
+ j.start_array("s-NSSAI-list-r16");
+ for (const auto& e1 : s_nssai_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ }
+ if (ng_u_data_transfer_r16_present) {
+ j.write_str("ng-U-DataTransfer-r16", "true");
+ }
+ if (up_cio_t_minus5_gs_optim_r16_present) {
+ j.write_str("up-CIoT-5GS-Optimisation-r16", "true");
+ }
+ if (rlf_info_available_r16_present) {
+ j.write_str("rlf-InfoAvailable-r16", "true");
+ }
+ if (anr_info_available_r16_present) {
+ j.write_str("anr-InfoAvailable-r16", "true");
+ }
+ if (pur_cfg_id_r16_present) {
+ j.write_str("pur-ConfigID-r16", pur_cfg_id_r16.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+const char* rrc_conn_setup_complete_nb_v1610_ies_s::guami_type_r16_opts::to_string() const
+{
+ static const char* options[] = {"native", "mapped"};
+ return convert_enum_idx(options, 2, value, "rrc_conn_setup_complete_nb_v1610_ies_s::guami_type_r16_e_");
+}
+
// RRCConnectionSetupComplete-NB-v1470-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_setup_complete_nb_v1470_ies_s::pack(bit_ref& bref) const
{
@@ -17203,6 +23325,9 @@ SRSASN_CODE rrc_conn_setup_complete_nb_v1470_ies_s::pack(bit_ref& bref) const
if (meas_result_serv_cell_r14_present) {
HANDLE_CODE(meas_result_serv_cell_r14.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -17214,6 +23339,9 @@ SRSASN_CODE rrc_conn_setup_complete_nb_v1470_ies_s::unpack(cbit_ref& bref)
if (meas_result_serv_cell_r14_present) {
HANDLE_CODE(meas_result_serv_cell_r14.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -17226,8 +23354,7 @@ void rrc_conn_setup_complete_nb_v1470_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -17452,6 +23579,70 @@ const char* rrc_conn_setup_complete_nb_s::crit_exts_c_::types_opts::to_string()
return convert_enum_idx(options, 2, value, "rrc_conn_setup_complete_nb_s::crit_exts_c_::types");
}
+// RRCEarlyDataRequest-5GC-NB-r16-IEs ::= SEQUENCE
+SRSASN_CODE rrc_early_data_request_minus5_gc_nb_r16_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(cqi_npdcch_r16_present, 1));
+ 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));
+ if (cqi_npdcch_r16_present) {
+ HANDLE_CODE(cqi_npdcch_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_nb_r16_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(cqi_npdcch_r16_present, 1));
+ 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));
+ if (cqi_npdcch_r16_present) {
+ HANDLE_CODE(cqi_npdcch_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_nb_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());
+ if (cqi_npdcch_r16_present) {
+ j.write_str("cqi-NPDCCH-r16", cqi_npdcch_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_nb_r16_ies_s::establishment_cause_r16_opts::to_string() const
+{
+ static const char* options[] = {"mo-Data", "mo-ExceptionData", "mt-Access", "spare1"};
+ return convert_enum_idx(
+ options, 4, value, "rrc_early_data_request_minus5_gc_nb_r16_ies_s::establishment_cause_r16_e_");
+}
+
// RRCEarlyDataRequest-NB-v1590-IEs ::= SEQUENCE
SRSASN_CODE rrc_early_data_request_nb_v1590_ies_s::pack(bit_ref& bref) const
{
@@ -17543,7 +23734,7 @@ void rrc_early_data_request_nb_r15_ies_s::to_json(json_writer& j) const
const char* rrc_early_data_request_nb_r15_ies_s::establishment_cause_r15_opts::to_string() const
{
- static const char* options[] = {"mo-Data", "mo-ExceptionData", "delayTolerantAccess", "spare1"};
+ static const char* options[] = {"mo-Data", "mo-ExceptionData", "delayTolerantAccess", "mt-Access-v1610"};
return convert_enum_idx(options, 4, value, "rrc_early_data_request_nb_r15_ies_s::establishment_cause_r15_e_");
}
@@ -17568,18 +23759,83 @@ void rrc_early_data_request_nb_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+void rrc_early_data_request_nb_r15_s::crit_exts_c_::destroy_()
+{
+ switch (type_) {
+ case types::rrc_early_data_request_r15:
+ c.destroy<rrc_early_data_request_nb_r15_ies_s>();
+ break;
+ case types::later:
+ c.destroy<later_c_>();
+ break;
+ default:
+ break;
+ }
+}
void rrc_early_data_request_nb_r15_s::crit_exts_c_::set(types::options e)
{
+ destroy_();
type_ = e;
+ switch (type_) {
+ case types::rrc_early_data_request_r15:
+ c.init<rrc_early_data_request_nb_r15_ies_s>();
+ break;
+ case types::later:
+ c.init<later_c_>();
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_");
+ }
+}
+rrc_early_data_request_nb_r15_s::crit_exts_c_::crit_exts_c_(const rrc_early_data_request_nb_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_nb_r15_ies_s>());
+ break;
+ case types::later:
+ c.init(other.c.get<later_c_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_");
+ }
+}
+rrc_early_data_request_nb_r15_s::crit_exts_c_&
+rrc_early_data_request_nb_r15_s::crit_exts_c_::operator=(const rrc_early_data_request_nb_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_nb_r15_ies_s>());
+ break;
+ case types::later:
+ c.set(other.c.get<later_c_>());
+ break;
+ case types::nulltype:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_");
+ }
+
+ return *this;
}
rrc_early_data_request_nb_r15_ies_s& rrc_early_data_request_nb_r15_s::crit_exts_c_::set_rrc_early_data_request_r15()
{
set(types::rrc_early_data_request_r15);
- return c;
+ return c.get<rrc_early_data_request_nb_r15_ies_s>();
}
-void rrc_early_data_request_nb_r15_s::crit_exts_c_::set_crit_exts_future()
+rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_& rrc_early_data_request_nb_r15_s::crit_exts_c_::set_later()
{
- set(types::crit_exts_future);
+ set(types::later);
+ return c.get<later_c_>();
}
void rrc_early_data_request_nb_r15_s::crit_exts_c_::to_json(json_writer& j) const
{
@@ -17587,9 +23843,11 @@ void rrc_early_data_request_nb_r15_s::crit_exts_c_::to_json(json_writer& j) cons
switch (type_) {
case types::rrc_early_data_request_r15:
j.write_fieldname("rrcEarlyDataRequest-r15");
- c.to_json(j);
+ c.get<rrc_early_data_request_nb_r15_ies_s>().to_json(j);
break;
- case types::crit_exts_future:
+ case types::later:
+ j.write_fieldname("later");
+ c.get<later_c_>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_");
@@ -17601,9 +23859,10 @@ SRSASN_CODE rrc_early_data_request_nb_r15_s::crit_exts_c_::pack(bit_ref& bref) c
type_.pack(bref);
switch (type_) {
case types::rrc_early_data_request_r15:
- HANDLE_CODE(c.pack(bref));
+ HANDLE_CODE(c.get<rrc_early_data_request_nb_r15_ies_s>().pack(bref));
break;
- case types::crit_exts_future:
+ case types::later:
+ HANDLE_CODE(c.get<later_c_>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_");
@@ -17618,20 +23877,89 @@ SRSASN_CODE rrc_early_data_request_nb_r15_s::crit_exts_c_::unpack(cbit_ref& bref
set(e);
switch (type_) {
case types::rrc_early_data_request_r15:
+ HANDLE_CODE(c.get<rrc_early_data_request_nb_r15_ies_s>().unpack(bref));
+ break;
+ case types::later:
+ HANDLE_CODE(c.get<later_c_>().unpack(bref));
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+void rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_::set(types::options e)
+{
+ type_ = e;
+}
+rrc_early_data_request_minus5_gc_nb_r16_ies_s&
+rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_::set_rrc_early_data_request_r16()
+{
+ set(types::rrc_early_data_request_r16);
+ return c;
+}
+void rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::rrc_early_data_request_r16:
+ j.write_fieldname("rrcEarlyDataRequest-r16");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::rrc_early_data_request_r16:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::rrc_early_data_request_r16:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
- log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_");
+ log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
+const char* rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"rrcEarlyDataRequest-r16", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_::types");
+}
+
const char* rrc_early_data_request_nb_r15_s::crit_exts_c_::types_opts::to_string() const
{
- static const char* options[] = {"rrcEarlyDataRequest-r15", "criticalExtensionsFuture"};
+ static const char* options[] = {"rrcEarlyDataRequest-r15", "later"};
return convert_enum_idx(options, 2, value, "rrc_early_data_request_nb_r15_s::crit_exts_c_::types");
}
@@ -18369,6 +24697,61 @@ const char* sc_mtch_info_nb_r14_s::npdcch_offset_sc_mtch_r14_opts::to_number_str
return convert_enum_idx(options, 8, value, "sc_mtch_info_nb_r14_s::npdcch_offset_sc_mtch_r14_e_");
}
+// SCPTMConfiguration-NB-v1610 ::= SEQUENCE
+SRSASN_CODE scptm_cfg_nb_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(multi_tb_gap_r16_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(pack_dyn_seq_of(bref, sc_mtch_info_list_multi_tb_r16, 0, 64));
+ if (multi_tb_gap_r16_present) {
+ HANDLE_CODE(multi_tb_gap_r16.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE scptm_cfg_nb_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(multi_tb_gap_r16_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(unpack_dyn_seq_of(sc_mtch_info_list_multi_tb_r16, bref, 0, 64));
+ if (multi_tb_gap_r16_present) {
+ HANDLE_CODE(multi_tb_gap_r16.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void scptm_cfg_nb_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.start_array("sc-mtch-InfoListMultiTB-r16");
+ for (const auto& e1 : sc_mtch_info_list_multi_tb_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ if (multi_tb_gap_r16_present) {
+ j.write_str("multiTB-Gap-r16", multi_tb_gap_r16.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+const char* scptm_cfg_nb_v1610_s::multi_tb_gap_r16_opts::to_string() const
+{
+ static const char* options[] = {"sf16", "sf32", "sf64", "sf128"};
+ return convert_enum_idx(options, 4, value, "scptm_cfg_nb_v1610_s::multi_tb_gap_r16_e_");
+}
+uint8_t scptm_cfg_nb_v1610_s::multi_tb_gap_r16_opts::to_number() const
+{
+ static const uint8_t options[] = {16, 32, 64, 128};
+ return map_enum_number(options, 4, value, "scptm_cfg_nb_v1610_s::multi_tb_gap_r16_e_");
+}
+
// SCPTMConfiguration-NB-r14 ::= SEQUENCE
SRSASN_CODE scptm_cfg_nb_r14_s::pack(bit_ref& bref) const
{
@@ -18383,6 +24766,9 @@ SRSASN_CODE scptm_cfg_nb_r14_s::pack(bit_ref& bref) const
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -18399,6 +24785,9 @@ SRSASN_CODE scptm_cfg_nb_r14_s::unpack(cbit_ref& bref)
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -18422,8 +24811,7 @@ void scptm_cfg_nb_r14_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -18690,6 +25078,667 @@ void tdd_ue_cap_nb_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// PhyLayerParameters-NB-v1700 ::= SEQUENCE
+SRSASN_CODE phy_layer_params_nb_v1700_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(npdsch_minus16_qam_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE phy_layer_params_nb_v1700_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(npdsch_minus16_qam_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void phy_layer_params_nb_v1700_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (npdsch_minus16_qam_r17_present) {
+ j.write_str("npdsch-16QAM-r17", "supported");
+ }
+ j.end_obj();
+}
+
+// TDD-UE-Capability-NB-v1710 ::= SEQUENCE
+SRSASN_CODE tdd_ue_cap_nb_v1710_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(phy_layer_params_v1710_present, 1));
+
+ if (phy_layer_params_v1710_present) {
+ HANDLE_CODE(phy_layer_params_v1710.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE tdd_ue_cap_nb_v1710_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(phy_layer_params_v1710_present, 1));
+
+ if (phy_layer_params_v1710_present) {
+ HANDLE_CODE(phy_layer_params_v1710.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void tdd_ue_cap_nb_v1710_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (phy_layer_params_v1710_present) {
+ j.write_fieldname("phyLayerParameters-v1710");
+ phy_layer_params_v1710.to_json(j);
+ }
+ j.end_obj();
+}
+
+// NTN-Parameters-NB-v1720 ::= SEQUENCE
+SRSASN_CODE ntn_params_nb_v1720_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ntn_segmented_precompensation_gaps_r17_present, 1));
+
+ if (ntn_segmented_precompensation_gaps_r17_present) {
+ HANDLE_CODE(ntn_segmented_precompensation_gaps_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ntn_params_nb_v1720_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ntn_segmented_precompensation_gaps_r17_present, 1));
+
+ if (ntn_segmented_precompensation_gaps_r17_present) {
+ HANDLE_CODE(ntn_segmented_precompensation_gaps_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ntn_params_nb_v1720_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ntn_segmented_precompensation_gaps_r17_present) {
+ j.write_str("ntn-SegmentedPrecompensationGaps-r17", ntn_segmented_precompensation_gaps_r17.to_string());
+ }
+ j.end_obj();
+}
+
+const char* ntn_params_nb_v1720_s::ntn_segmented_precompensation_gaps_r17_opts::to_string() const
+{
+ static const char* options[] = {"sym1", "sl1", "sl2"};
+ return convert_enum_idx(options, 3, value, "ntn_params_nb_v1720_s::ntn_segmented_precompensation_gaps_r17_e_");
+}
+
+// MeasParameters-NB-v1710 ::= SEQUENCE
+SRSASN_CODE meas_params_nb_v1710_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(conn_mode_meas_intra_freq_r17_present, 1));
+ HANDLE_CODE(bref.pack(conn_mode_meas_inter_freq_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_params_nb_v1710_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(conn_mode_meas_intra_freq_r17_present, 1));
+ HANDLE_CODE(bref.unpack(conn_mode_meas_inter_freq_r17_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void meas_params_nb_v1710_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (conn_mode_meas_intra_freq_r17_present) {
+ j.write_str("connModeMeasIntraFreq-r17", "supported");
+ }
+ if (conn_mode_meas_inter_freq_r17_present) {
+ j.write_str("connModeMeasInterFreq-r17", "supported");
+ }
+ j.end_obj();
+}
+
+// UE-Capability-NB-v1720-IEs ::= SEQUENCE
+SRSASN_CODE ue_cap_nb_v1720_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(ntn_params_v1720.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_cap_nb_v1720_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(ntn_params_v1720.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void ue_cap_nb_v1720_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_fieldname("ntn-Parameters-v1720");
+ ntn_params_v1720.to_json(j);
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// NTN-Parameters-NB-r17 ::= SEQUENCE
+SRSASN_CODE ntn_params_nb_r17_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(ntn_connect_epc_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_ta_report_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_pur_timer_delay_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_offset_timing_enh_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_scenario_support_r17_present, 1));
+
+ if (ntn_scenario_support_r17_present) {
+ HANDLE_CODE(ntn_scenario_support_r17.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ntn_params_nb_r17_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(ntn_connect_epc_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_ta_report_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_pur_timer_delay_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_offset_timing_enh_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_scenario_support_r17_present, 1));
+
+ if (ntn_scenario_support_r17_present) {
+ HANDLE_CODE(ntn_scenario_support_r17.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ntn_params_nb_r17_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (ntn_connect_epc_r17_present) {
+ j.write_str("ntn-Connectivity-EPC-r17", "supported");
+ }
+ if (ntn_ta_report_r17_present) {
+ j.write_str("ntn-TA-Report-r17", "supported");
+ }
+ if (ntn_pur_timer_delay_r17_present) {
+ j.write_str("ntn-PUR-TimerDelay-r17", "supported");
+ }
+ if (ntn_offset_timing_enh_r17_present) {
+ j.write_str("ntn-OffsetTimingEnh-r17", "supported");
+ }
+ if (ntn_scenario_support_r17_present) {
+ j.write_str("ntn-ScenarioSupport-r17", ntn_scenario_support_r17.to_string());
+ }
+ j.end_obj();
+}
+
+const char* ntn_params_nb_r17_s::ntn_scenario_support_r17_opts::to_string() const
+{
+ static const char* options[] = {"ngso", "gso"};
+ return convert_enum_idx(options, 2, value, "ntn_params_nb_r17_s::ntn_scenario_support_r17_e_");
+}
+
+// UE-Capability-NB-v1710-IEs ::= SEQUENCE
+SRSASN_CODE ue_cap_nb_v1710_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(meas_params_v1710_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (meas_params_v1710_present) {
+ HANDLE_CODE(meas_params_v1710.pack(bref));
+ }
+ HANDLE_CODE(rf_params_v1710.pack(bref));
+ HANDLE_CODE(tdd_ue_cap_v1710.pack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_cap_nb_v1710_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(meas_params_v1710_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (meas_params_v1710_present) {
+ HANDLE_CODE(meas_params_v1710.unpack(bref));
+ }
+ HANDLE_CODE(rf_params_v1710.unpack(bref));
+ HANDLE_CODE(tdd_ue_cap_v1710.unpack(bref));
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_cap_nb_v1710_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (meas_params_v1710_present) {
+ j.write_fieldname("measParameters-v1710");
+ meas_params_v1710.to_json(j);
+ }
+ j.write_fieldname("rf-Parameters-v1710");
+ rf_params_v1710.to_json(j);
+ j.write_fieldname("tdd-UE-Capability-v1710");
+ tdd_ue_cap_v1710.to_json(j);
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// UE-Capability-NB-v1700-IEs ::= SEQUENCE
+SRSASN_CODE ue_cap_nb_v1700_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(coverage_based_paging_r17_present, 1));
+ HANDLE_CODE(bref.pack(ntn_params_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(phy_layer_params_v1700.pack(bref));
+ if (ntn_params_r17_present) {
+ HANDLE_CODE(ntn_params_r17.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_cap_nb_v1700_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(coverage_based_paging_r17_present, 1));
+ HANDLE_CODE(bref.unpack(ntn_params_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ HANDLE_CODE(phy_layer_params_v1700.unpack(bref));
+ if (ntn_params_r17_present) {
+ HANDLE_CODE(ntn_params_r17.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_cap_nb_v1700_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (coverage_based_paging_r17_present) {
+ j.write_str("coverageBasedPaging-r17", "supported");
+ }
+ j.write_fieldname("phyLayerParameters-v1700");
+ phy_layer_params_v1700.to_json(j);
+ if (ntn_params_r17_present) {
+ j.write_fieldname("ntn-Parameters-r17");
+ ntn_params_r17.to_json(j);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// MAC-Parameters-NB-v1610 ::= SEQUENCE
+SRSASN_CODE mac_params_nb_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(rai_support_enh_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE mac_params_nb_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(rai_support_enh_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void mac_params_nb_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (rai_support_enh_r16_present) {
+ j.write_str("rai-SupportEnh-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// MeasParameters-NB-r16 ::= SEQUENCE
+SRSASN_CODE meas_params_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(dl_ch_quality_report_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE meas_params_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(dl_ch_quality_report_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void meas_params_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (dl_ch_quality_report_r16_present) {
+ j.write_str("dl-ChannelQualityReporting-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// PUR-Parameters-NB-r16 ::= SEQUENCE
+SRSASN_CODE pur_params_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(pur_cp_epc_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_cp_minus5_gc_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_up_epc_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_up_minus5_gc_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_nrsrp_validation_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_cp_l1_ack_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE pur_params_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(pur_cp_epc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_cp_minus5_gc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_up_epc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_up_minus5_gc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_nrsrp_validation_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_cp_l1_ack_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void pur_params_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (pur_cp_epc_r16_present) {
+ j.write_str("pur-CP-EPC-r16", "supported");
+ }
+ if (pur_cp_minus5_gc_r16_present) {
+ j.write_str("pur-CP-5GC-r16", "supported");
+ }
+ if (pur_up_epc_r16_present) {
+ j.write_str("pur-UP-EPC-r16", "supported");
+ }
+ if (pur_up_minus5_gc_r16_present) {
+ j.write_str("pur-UP-5GC-r16", "supported");
+ }
+ if (pur_nrsrp_validation_r16_present) {
+ j.write_str("pur-NRSRP-Validation-r16", "supported");
+ }
+ if (pur_cp_l1_ack_r16_present) {
+ j.write_str("pur-CP-L1Ack-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// PhyLayerParameters-NB-v1610 ::= SEQUENCE
+SRSASN_CODE phy_layer_params_nb_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(npdsch_multi_tb_r16_present, 1));
+ HANDLE_CODE(bref.pack(npdsch_multi_tb_interleaving_r16_present, 1));
+ HANDLE_CODE(bref.pack(npusch_multi_tb_r16_present, 1));
+ HANDLE_CODE(bref.pack(npusch_multi_tb_interleaving_r16_present, 1));
+ HANDLE_CODE(bref.pack(multi_tb_harq_ack_bundling_r16_present, 1));
+ HANDLE_CODE(bref.pack(slot_symbol_res_resv_dl_r16_present, 1));
+ HANDLE_CODE(bref.pack(slot_symbol_res_resv_ul_r16_present, 1));
+ HANDLE_CODE(bref.pack(sf_res_resv_dl_r16_present, 1));
+ HANDLE_CODE(bref.pack(sf_res_resv_ul_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE phy_layer_params_nb_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(npdsch_multi_tb_r16_present, 1));
+ HANDLE_CODE(bref.unpack(npdsch_multi_tb_interleaving_r16_present, 1));
+ HANDLE_CODE(bref.unpack(npusch_multi_tb_r16_present, 1));
+ HANDLE_CODE(bref.unpack(npusch_multi_tb_interleaving_r16_present, 1));
+ HANDLE_CODE(bref.unpack(multi_tb_harq_ack_bundling_r16_present, 1));
+ HANDLE_CODE(bref.unpack(slot_symbol_res_resv_dl_r16_present, 1));
+ HANDLE_CODE(bref.unpack(slot_symbol_res_resv_ul_r16_present, 1));
+ HANDLE_CODE(bref.unpack(sf_res_resv_dl_r16_present, 1));
+ HANDLE_CODE(bref.unpack(sf_res_resv_ul_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void phy_layer_params_nb_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (npdsch_multi_tb_r16_present) {
+ j.write_str("npdsch-MultiTB-r16", "supported");
+ }
+ if (npdsch_multi_tb_interleaving_r16_present) {
+ j.write_str("npdsch-MultiTB-Interleaving-r16", "supported");
+ }
+ if (npusch_multi_tb_r16_present) {
+ j.write_str("npusch-MultiTB-r16", "supported");
+ }
+ if (npusch_multi_tb_interleaving_r16_present) {
+ j.write_str("npusch-MultiTB-Interleaving-r16", "supported");
+ }
+ if (multi_tb_harq_ack_bundling_r16_present) {
+ j.write_str("multiTB-HARQ-AckBundling-r16", "supported");
+ }
+ if (slot_symbol_res_resv_dl_r16_present) {
+ j.write_str("slotSymbolResourceResvDL-r16", "supported");
+ }
+ if (slot_symbol_res_resv_ul_r16_present) {
+ j.write_str("slotSymbolResourceResvUL-r16", "supported");
+ }
+ if (sf_res_resv_dl_r16_present) {
+ j.write_str("subframeResourceResvDL-r16", "supported");
+ }
+ if (sf_res_resv_ul_r16_present) {
+ j.write_str("subframeResourceResvUL-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// SON-Parameters-NB-r16 ::= SEQUENCE
+SRSASN_CODE son_params_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(anr_report_r16_present, 1));
+ HANDLE_CODE(bref.pack(rach_report_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE son_params_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(anr_report_r16_present, 1));
+ HANDLE_CODE(bref.unpack(rach_report_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void son_params_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (anr_report_r16_present) {
+ j.write_str("anr-Report-r16", "supported");
+ }
+ if (rach_report_r16_present) {
+ j.write_str("rach-Report-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// TDD-UE-Capability-NB-v1610 ::= SEQUENCE
+SRSASN_CODE tdd_ue_cap_nb_v1610_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(slot_symbol_res_resv_dl_r16_present, 1));
+ HANDLE_CODE(bref.pack(slot_symbol_res_resv_ul_r16_present, 1));
+ HANDLE_CODE(bref.pack(sf_res_resv_dl_r16_present, 1));
+ HANDLE_CODE(bref.pack(sf_res_resv_ul_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE tdd_ue_cap_nb_v1610_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(slot_symbol_res_resv_dl_r16_present, 1));
+ HANDLE_CODE(bref.unpack(slot_symbol_res_resv_ul_r16_present, 1));
+ HANDLE_CODE(bref.unpack(sf_res_resv_dl_r16_present, 1));
+ HANDLE_CODE(bref.unpack(sf_res_resv_ul_r16_present, 1));
+
+ return SRSASN_SUCCESS;
+}
+void tdd_ue_cap_nb_v1610_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (slot_symbol_res_resv_dl_r16_present) {
+ j.write_str("slotSymbolResourceResvDL-r16", "supported");
+ }
+ if (slot_symbol_res_resv_ul_r16_present) {
+ j.write_str("slotSymbolResourceResvUL-r16", "supported");
+ }
+ if (sf_res_resv_dl_r16_present) {
+ j.write_str("subframeResourceResvDL-r16", "supported");
+ }
+ if (sf_res_resv_ul_r16_present) {
+ j.write_str("subframeResourceResvUL-r16", "supported");
+ }
+ j.end_obj();
+}
+
+// UE-Capability-NB-v16x0-IEs ::= SEQUENCE
+SRSASN_CODE ue_cap_nb_v16x0_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_cap_nb_v16x0_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_cap_nb_v16x0_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
+// UE-Capability-NB-v1610-IEs ::= SEQUENCE
+SRSASN_CODE ue_cap_nb_v1610_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(early_security_reactivation_r16_present, 1));
+ HANDLE_CODE(bref.pack(early_data_up_minus5_gc_r16_present, 1));
+ HANDLE_CODE(bref.pack(pur_params_r16_present, 1));
+ HANDLE_CODE(bref.pack(phy_layer_params_v1610_present, 1));
+ HANDLE_CODE(bref.pack(son_params_r16_present, 1));
+ HANDLE_CODE(bref.pack(tdd_ue_cap_v1610_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (pur_params_r16_present) {
+ HANDLE_CODE(pur_params_r16.pack(bref));
+ }
+ HANDLE_CODE(mac_params_v1610.pack(bref));
+ if (phy_layer_params_v1610_present) {
+ HANDLE_CODE(phy_layer_params_v1610.pack(bref));
+ }
+ if (son_params_r16_present) {
+ HANDLE_CODE(son_params_r16.pack(bref));
+ }
+ HANDLE_CODE(meas_params_r16.pack(bref));
+ if (tdd_ue_cap_v1610_present) {
+ HANDLE_CODE(tdd_ue_cap_v1610.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_cap_nb_v1610_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(early_security_reactivation_r16_present, 1));
+ HANDLE_CODE(bref.unpack(early_data_up_minus5_gc_r16_present, 1));
+ HANDLE_CODE(bref.unpack(pur_params_r16_present, 1));
+ HANDLE_CODE(bref.unpack(phy_layer_params_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(son_params_r16_present, 1));
+ HANDLE_CODE(bref.unpack(tdd_ue_cap_v1610_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (pur_params_r16_present) {
+ HANDLE_CODE(pur_params_r16.unpack(bref));
+ }
+ HANDLE_CODE(mac_params_v1610.unpack(bref));
+ if (phy_layer_params_v1610_present) {
+ HANDLE_CODE(phy_layer_params_v1610.unpack(bref));
+ }
+ if (son_params_r16_present) {
+ HANDLE_CODE(son_params_r16.unpack(bref));
+ }
+ HANDLE_CODE(meas_params_r16.unpack(bref));
+ if (tdd_ue_cap_v1610_present) {
+ HANDLE_CODE(tdd_ue_cap_v1610.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_cap_nb_v1610_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (early_security_reactivation_r16_present) {
+ j.write_str("earlySecurityReactivation-r16", "supported");
+ }
+ if (early_data_up_minus5_gc_r16_present) {
+ j.write_str("earlyData-UP-5GC-r16", "supported");
+ }
+ if (pur_params_r16_present) {
+ j.write_fieldname("pur-Parameters-r16");
+ pur_params_r16.to_json(j);
+ }
+ j.write_fieldname("mac-Parameters-v1610");
+ mac_params_v1610.to_json(j);
+ if (phy_layer_params_v1610_present) {
+ j.write_fieldname("phyLayerParameters-v1610");
+ phy_layer_params_v1610.to_json(j);
+ }
+ if (son_params_r16_present) {
+ j.write_fieldname("son-Parameters-r16");
+ son_params_r16.to_json(j);
+ }
+ j.write_fieldname("measParameters-r16");
+ meas_params_r16.to_json(j);
+ if (tdd_ue_cap_v1610_present) {
+ j.write_fieldname("tdd-UE-Capability-v1610");
+ tdd_ue_cap_v1610.to_json(j);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// MAC-Parameters-NB-v1530 ::= SEQUENCE
SRSASN_CODE mac_params_nb_v1530_s::pack(bit_ref& bref) const
{
@@ -18734,6 +25783,48 @@ void rlc_params_nb_r15_s::to_json(json_writer& j) const
j.end_obj();
}
+// UE-Capability-NB-v15x0-IEs ::= SEQUENCE
+SRSASN_CODE ue_cap_nb_v15x0_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_cap_nb_v15x0_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_cap_nb_v15x0_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ non_crit_ext.to_json(j);
+ }
+ j.end_obj();
+}
+
// UE-Capability-NB-v1530-IEs ::= SEQUENCE
SRSASN_CODE ue_cap_nb_v1530_ies_s::pack(bit_ref& bref) const
{
@@ -18750,6 +25841,9 @@ SRSASN_CODE ue_cap_nb_v1530_ies_s::pack(bit_ref& bref) const
if (tdd_ue_cap_r15_present) {
HANDLE_CODE(tdd_ue_cap_r15.pack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -18768,6 +25862,9 @@ SRSASN_CODE ue_cap_nb_v1530_ies_s::unpack(cbit_ref& bref)
if (tdd_ue_cap_r15_present) {
HANDLE_CODE(tdd_ue_cap_r15.unpack(bref));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -18791,8 +25888,7 @@ void ue_cap_nb_v1530_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -19030,6 +26126,9 @@ SRSASN_CODE ue_radio_paging_info_nb_r13_s::pack(bit_ref& bref) const
group_flags[1] |= wake_up_signal_r15_present;
group_flags[1] |= wake_up_signal_min_gap_e_drx_r15_present;
group_flags[1] |= multi_carrier_paging_tdd_r15_present;
+ group_flags[2] |= ue_category_nb_r16_present;
+ group_flags[2] |= group_wake_up_signal_r16_present;
+ group_flags[2] |= group_wake_up_signal_alternation_r16_present;
group_flags.pack(bref);
if (group_flags[0]) {
@@ -19048,6 +26147,13 @@ SRSASN_CODE ue_radio_paging_info_nb_r13_s::pack(bit_ref& bref) const
HANDLE_CODE(wake_up_signal_min_gap_e_drx_r15.pack(bref));
}
}
+ if (group_flags[2]) {
+ varlength_field_pack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.pack(ue_category_nb_r16_present, 1));
+ HANDLE_CODE(bref.pack(group_wake_up_signal_r16_present, 1));
+ HANDLE_CODE(bref.pack(group_wake_up_signal_alternation_r16_present, 1));
+ }
}
return SRSASN_SUCCESS;
}
@@ -19057,7 +26163,7 @@ SRSASN_CODE ue_radio_paging_info_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(ue_category_nb_r13_present, 1));
if (ext) {
- ext_groups_unpacker_guard group_flags(2);
+ ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
@@ -19076,6 +26182,13 @@ SRSASN_CODE ue_radio_paging_info_nb_r13_s::unpack(cbit_ref& bref)
HANDLE_CODE(wake_up_signal_min_gap_e_drx_r15.unpack(bref));
}
}
+ if (group_flags[2]) {
+ varlength_field_unpack_guard varlen_scope(bref, false);
+
+ HANDLE_CODE(bref.unpack(ue_category_nb_r16_present, 1));
+ HANDLE_CODE(bref.unpack(group_wake_up_signal_r16_present, 1));
+ HANDLE_CODE(bref.unpack(group_wake_up_signal_alternation_r16_present, 1));
+ }
}
return SRSASN_SUCCESS;
}
@@ -19101,6 +26214,15 @@ void ue_radio_paging_info_nb_r13_s::to_json(json_writer& j) const
if (multi_carrier_paging_tdd_r15_present) {
j.write_str("multiCarrierPagingTDD-r15", "true");
}
+ if (ue_category_nb_r16_present) {
+ j.write_str("ue-Category-NB-r16", "nb2");
+ }
+ if (group_wake_up_signal_r16_present) {
+ j.write_str("groupWakeUpSignal-r16", "true");
+ }
+ if (group_wake_up_signal_alternation_r16_present) {
+ j.write_str("groupWakeUpSignalAlternation-r16", "true");
+ }
}
j.end_obj();
}
@@ -19286,6 +26408,236 @@ const char* ue_cap_info_nb_s::crit_exts_c_::types_opts::to_string() const
return convert_enum_idx(options, 2, value, "ue_cap_info_nb_s::crit_exts_c_::types");
}
+// RACH-Report-NB-r16 ::= SEQUENCE
+SRSASN_CODE rach_report_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, nof_preambs_sent_r16, (uint8_t)1u, (uint8_t)64u));
+ HANDLE_CODE(bref.pack(contention_detected_r16, 1));
+ HANDLE_CODE(pack_integer(bref, init_nrsrp_level_r16, (uint8_t)0u, (uint8_t)2u));
+ HANDLE_CODE(bref.pack(edt_fallback_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE rach_report_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(nof_preambs_sent_r16, bref, (uint8_t)1u, (uint8_t)64u));
+ HANDLE_CODE(bref.unpack(contention_detected_r16, 1));
+ HANDLE_CODE(unpack_integer(init_nrsrp_level_r16, bref, (uint8_t)0u, (uint8_t)2u));
+ HANDLE_CODE(bref.unpack(edt_fallback_r16, 1));
+
+ return SRSASN_SUCCESS;
+}
+void rach_report_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("numberOfPreamblesSent-r16", nof_preambs_sent_r16);
+ j.write_bool("contentionDetected-r16", contention_detected_r16);
+ j.write_int("initialNRSRP-Level-r16", init_nrsrp_level_r16);
+ j.write_bool("edt-Fallback-r16", edt_fallback_r16);
+ j.end_obj();
+}
+
+// UEInformationResponse-NB-r16-IEs ::= SEQUENCE
+SRSASN_CODE ue_info_resp_nb_r16_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(rach_report_r16_present, 1));
+ HANDLE_CODE(bref.pack(rlf_report_r16_present, 1));
+ HANDLE_CODE(bref.pack(anr_meas_report_r16_present, 1));
+ HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (rach_report_r16_present) {
+ HANDLE_CODE(rach_report_r16.pack(bref));
+ }
+ if (rlf_report_r16_present) {
+ HANDLE_CODE(rlf_report_r16.pack(bref));
+ }
+ if (anr_meas_report_r16_present) {
+ HANDLE_CODE(anr_meas_report_r16.pack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.pack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_info_resp_nb_r16_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(rach_report_r16_present, 1));
+ HANDLE_CODE(bref.unpack(rlf_report_r16_present, 1));
+ HANDLE_CODE(bref.unpack(anr_meas_report_r16_present, 1));
+ HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (rach_report_r16_present) {
+ HANDLE_CODE(rach_report_r16.unpack(bref));
+ }
+ if (rlf_report_r16_present) {
+ HANDLE_CODE(rlf_report_r16.unpack(bref));
+ }
+ if (anr_meas_report_r16_present) {
+ HANDLE_CODE(anr_meas_report_r16.unpack(bref));
+ }
+ if (late_non_crit_ext_present) {
+ HANDLE_CODE(late_non_crit_ext.unpack(bref));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_info_resp_nb_r16_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (rach_report_r16_present) {
+ j.write_fieldname("rach-Report-r16");
+ rach_report_r16.to_json(j);
+ }
+ if (rlf_report_r16_present) {
+ j.write_fieldname("rlf-Report-r16");
+ rlf_report_r16.to_json(j);
+ }
+ if (anr_meas_report_r16_present) {
+ j.write_fieldname("anr-MeasReport-r16");
+ anr_meas_report_r16.to_json(j);
+ }
+ if (late_non_crit_ext_present) {
+ j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
+// UEInformationResponse-NB-r16 ::= SEQUENCE
+SRSASN_CODE ue_info_resp_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
+ HANDLE_CODE(crit_exts.pack(bref));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_info_resp_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
+ HANDLE_CODE(crit_exts.unpack(bref));
+
+ return SRSASN_SUCCESS;
+}
+void ue_info_resp_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
+ j.write_fieldname("criticalExtensions");
+ crit_exts.to_json(j);
+ j.end_obj();
+}
+
+void ue_info_resp_nb_r16_s::crit_exts_c_::set(types::options e)
+{
+ type_ = e;
+}
+ue_info_resp_nb_r16_ies_s& ue_info_resp_nb_r16_s::crit_exts_c_::set_ue_info_resp_r16()
+{
+ set(types::ue_info_resp_r16);
+ return c;
+}
+void ue_info_resp_nb_r16_s::crit_exts_c_::set_crit_exts_future()
+{
+ set(types::crit_exts_future);
+}
+void ue_info_resp_nb_r16_s::crit_exts_c_::to_json(json_writer& j) const
+{
+ j.start_obj();
+ switch (type_) {
+ case types::ue_info_resp_r16:
+ j.write_fieldname("ueInformationResponse-r16");
+ c.to_json(j);
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ue_info_resp_nb_r16_s::crit_exts_c_");
+ }
+ j.end_obj();
+}
+SRSASN_CODE ue_info_resp_nb_r16_s::crit_exts_c_::pack(bit_ref& bref) const
+{
+ type_.pack(bref);
+ switch (type_) {
+ case types::ue_info_resp_r16:
+ HANDLE_CODE(c.pack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ue_info_resp_nb_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_ENCODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_info_resp_nb_r16_s::crit_exts_c_::unpack(cbit_ref& bref)
+{
+ types e;
+ e.unpack(bref);
+ set(e);
+ switch (type_) {
+ case types::ue_info_resp_r16:
+ HANDLE_CODE(c.unpack(bref));
+ break;
+ case types::crit_exts_future:
+ break;
+ default:
+ log_invalid_choice_id(type_, "ue_info_resp_nb_r16_s::crit_exts_c_");
+ return SRSASN_ERROR_DECODE_FAIL;
+ }
+ return SRSASN_SUCCESS;
+}
+
+const char* ue_info_resp_nb_r16_s::crit_exts_c_::types_opts::to_string() const
+{
+ static const char* options[] = {"ueInformationResponse-r16", "criticalExtensionsFuture"};
+ return convert_enum_idx(options, 2, value, "ue_info_resp_nb_r16_s::crit_exts_c_::types");
+}
+
+// UEPagingCoverageInformation-NB-v1700-IEs ::= SEQUENCE
+SRSASN_CODE ue_paging_coverage_info_nb_v1700_ies_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(bref.pack(cbp_idx_r17_present, 1));
+ HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
+
+ if (cbp_idx_r17_present) {
+ HANDLE_CODE(pack_integer(bref, cbp_idx_r17, (uint8_t)1u, (uint8_t)2u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE ue_paging_coverage_info_nb_v1700_ies_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(bref.unpack(cbp_idx_r17_present, 1));
+ HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
+
+ if (cbp_idx_r17_present) {
+ HANDLE_CODE(unpack_integer(cbp_idx_r17, bref, (uint8_t)1u, (uint8_t)2u));
+ }
+
+ return SRSASN_SUCCESS;
+}
+void ue_paging_coverage_info_nb_v1700_ies_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ if (cbp_idx_r17_present) {
+ j.write_int("cbp-Index-r17", cbp_idx_r17);
+ }
+ if (non_crit_ext_present) {
+ j.write_fieldname("nonCriticalExtension");
+ j.start_obj();
+ j.end_obj();
+ }
+ j.end_obj();
+}
+
// UEPagingCoverageInformation-NB-IEs ::= SEQUENCE
SRSASN_CODE ue_paging_coverage_info_nb_ies_s::pack(bit_ref& bref) const
{
@@ -19295,6 +26647,9 @@ SRSASN_CODE ue_paging_coverage_info_nb_ies_s::pack(bit_ref& bref) const
if (npdcch_num_repeat_paging_r13_present) {
HANDLE_CODE(pack_integer(bref, npdcch_num_repeat_paging_r13, (uint16_t)1u, (uint16_t)2048u));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.pack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -19306,6 +26661,9 @@ SRSASN_CODE ue_paging_coverage_info_nb_ies_s::unpack(cbit_ref& bref)
if (npdcch_num_repeat_paging_r13_present) {
HANDLE_CODE(unpack_integer(npdcch_num_repeat_paging_r13, bref, (uint16_t)1u, (uint16_t)2048u));
}
+ if (non_crit_ext_present) {
+ HANDLE_CODE(non_crit_ext.unpack(bref));
+ }
return SRSASN_SUCCESS;
}
@@ -19317,8 +26675,7 @@ void ue_paging_coverage_info_nb_ies_s::to_json(json_writer& j) const
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
- j.start_obj();
- j.end_obj();
+ non_crit_ext.to_json(j);
}
j.end_obj();
}
@@ -20484,6 +27841,12 @@ void ul_dcch_msg_type_nb_c::c1_c_::destroy_()
case types::rrc_conn_resume_complete_r13:
c.destroy<rrc_conn_resume_complete_nb_s>();
break;
+ case types::ue_info_resp_r16:
+ c.destroy<ue_info_resp_nb_r16_s>();
+ break;
+ case types::pur_cfg_request_r16:
+ c.destroy<pur_cfg_request_nb_r16_s>();
+ break;
default:
break;
}
@@ -20517,9 +27880,11 @@ void ul_dcch_msg_type_nb_c::c1_c_::set(types::options e)
case types::rrc_conn_resume_complete_r13:
c.init<rrc_conn_resume_complete_nb_s>();
break;
- case types::spare8:
+ case types::ue_info_resp_r16:
+ c.init<ue_info_resp_nb_r16_s>();
break;
- case types::spare7:
+ case types::pur_cfg_request_r16:
+ c.init<pur_cfg_request_nb_r16_s>();
break;
case types::spare6:
break;
@@ -20567,9 +27932,11 @@ ul_dcch_msg_type_nb_c::c1_c_::c1_c_(const ul_dcch_msg_type_nb_c::c1_c_& other)
case types::rrc_conn_resume_complete_r13:
c.init(other.c.get<rrc_conn_resume_complete_nb_s>());
break;
- case types::spare8:
+ case types::ue_info_resp_r16:
+ c.init(other.c.get<ue_info_resp_nb_r16_s>());
break;
- case types::spare7:
+ case types::pur_cfg_request_r16:
+ c.init(other.c.get<pur_cfg_request_nb_r16_s>());
break;
case types::spare6:
break;
@@ -20620,9 +27987,11 @@ ul_dcch_msg_type_nb_c::c1_c_& ul_dcch_msg_type_nb_c::c1_c_::operator=(const ul_d
case types::rrc_conn_resume_complete_r13:
c.set(other.c.get<rrc_conn_resume_complete_nb_s>());
break;
- case types::spare8:
+ case types::ue_info_resp_r16:
+ c.set(other.c.get<ue_info_resp_nb_r16_s>());
break;
- case types::spare7:
+ case types::pur_cfg_request_r16:
+ c.set(other.c.get<pur_cfg_request_nb_r16_s>());
break;
case types::spare6:
break;
@@ -20684,13 +28053,15 @@ rrc_conn_resume_complete_nb_s& ul_dcch_msg_type_nb_c::c1_c_::set_rrc_conn_resume
set(types::rrc_conn_resume_complete_r13);
return c.get<rrc_conn_resume_complete_nb_s>();
}
-void ul_dcch_msg_type_nb_c::c1_c_::set_spare8()
+ue_info_resp_nb_r16_s& ul_dcch_msg_type_nb_c::c1_c_::set_ue_info_resp_r16()
{
- set(types::spare8);
+ set(types::ue_info_resp_r16);
+ return c.get<ue_info_resp_nb_r16_s>();
}
-void ul_dcch_msg_type_nb_c::c1_c_::set_spare7()
+pur_cfg_request_nb_r16_s& ul_dcch_msg_type_nb_c::c1_c_::set_pur_cfg_request_r16()
{
- set(types::spare7);
+ set(types::pur_cfg_request_r16);
+ return c.get<pur_cfg_request_nb_r16_s>();
}
void ul_dcch_msg_type_nb_c::c1_c_::set_spare6()
{
@@ -20752,9 +28123,13 @@ void ul_dcch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const
j.write_fieldname("rrcConnectionResumeComplete-r13");
c.get<rrc_conn_resume_complete_nb_s>().to_json(j);
break;
- case types::spare8:
+ case types::ue_info_resp_r16:
+ j.write_fieldname("ueInformationResponse-r16");
+ c.get<ue_info_resp_nb_r16_s>().to_json(j);
break;
- case types::spare7:
+ case types::pur_cfg_request_r16:
+ j.write_fieldname("purConfigurationRequest-r16");
+ c.get<pur_cfg_request_nb_r16_s>().to_json(j);
break;
case types::spare6:
break;
@@ -20801,9 +28176,11 @@ SRSASN_CODE ul_dcch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const
case types::rrc_conn_resume_complete_r13:
HANDLE_CODE(c.get<rrc_conn_resume_complete_nb_s>().pack(bref));
break;
- case types::spare8:
+ case types::ue_info_resp_r16:
+ HANDLE_CODE(c.get<ue_info_resp_nb_r16_s>().pack(bref));
break;
- case types::spare7:
+ case types::pur_cfg_request_r16:
+ HANDLE_CODE(c.get<pur_cfg_request_nb_r16_s>().pack(bref));
break;
case types::spare6:
break;
@@ -20853,9 +28230,11 @@ SRSASN_CODE ul_dcch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref)
case types::rrc_conn_resume_complete_r13:
HANDLE_CODE(c.get<rrc_conn_resume_complete_nb_s>().unpack(bref));
break;
- case types::spare8:
+ case types::ue_info_resp_r16:
+ HANDLE_CODE(c.get<ue_info_resp_nb_r16_s>().unpack(bref));
break;
- case types::spare7:
+ case types::pur_cfg_request_r16:
+ HANDLE_CODE(c.get<pur_cfg_request_nb_r16_s>().unpack(bref));
break;
case types::spare6:
break;
@@ -20886,8 +28265,8 @@ const char* ul_dcch_msg_type_nb_c::c1_c_::types_opts::to_string() const
"ueCapabilityInformation-r13",
"ulInformationTransfer-r13",
"rrcConnectionResumeComplete-r13",
- "spare8",
- "spare7",
+ "ueInformationResponse-r16",
+ "purConfigurationRequest-r16",
"spare6",
"spare5",
"spare4",
@@ -20936,3 +28315,72 @@ void ul_dcch_msg_nb_s::to_json(json_writer& j) const
j.end_obj();
j.end_array();
}
+
+// VarANR-MeasConfig-NB-r16 ::= SEQUENCE
+SRSASN_CODE var_anr_meas_cfg_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_integer(bref, anr_quality_thres_r16, (uint8_t)0u, (uint8_t)113u));
+ HANDLE_CODE(pack_dyn_seq_of(bref, anr_carrier_list_r16, 1, 2));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE var_anr_meas_cfg_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_integer(anr_quality_thres_r16, bref, (uint8_t)0u, (uint8_t)113u));
+ HANDLE_CODE(unpack_dyn_seq_of(anr_carrier_list_r16, bref, 1, 2));
+
+ return SRSASN_SUCCESS;
+}
+void var_anr_meas_cfg_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.write_int("anr-QualityThreshold-r16", anr_quality_thres_r16);
+ j.start_array("anr-CarrierList-r16");
+ for (const auto& e1 : anr_carrier_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.end_obj();
+}
+
+// VarANR-MeasReport-NB-r16 ::= SEQUENCE
+SRSASN_CODE var_anr_meas_report_nb_r16_s::pack(bit_ref& bref) const
+{
+ HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_list_r16, 1, 16));
+ HANDLE_CODE(serv_cell_id_r16.pack(bref));
+ HANDLE_CODE(meas_result_serv_cell_r16.pack(bref));
+ HANDLE_CODE(pack_integer(bref, relative_time_stamp_r16, (uint8_t)0u, (uint8_t)95u));
+ HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_list_r16, 1, 2));
+
+ return SRSASN_SUCCESS;
+}
+SRSASN_CODE var_anr_meas_report_nb_r16_s::unpack(cbit_ref& bref)
+{
+ HANDLE_CODE(unpack_dyn_seq_of(plmn_id_list_r16, bref, 1, 16));
+ HANDLE_CODE(serv_cell_id_r16.unpack(bref));
+ HANDLE_CODE(meas_result_serv_cell_r16.unpack(bref));
+ HANDLE_CODE(unpack_integer(relative_time_stamp_r16, bref, (uint8_t)0u, (uint8_t)95u));
+ HANDLE_CODE(unpack_dyn_seq_of(meas_result_list_r16, bref, 1, 2));
+
+ return SRSASN_SUCCESS;
+}
+void var_anr_meas_report_nb_r16_s::to_json(json_writer& j) const
+{
+ j.start_obj();
+ j.start_array("plmn-IdentityList-r16");
+ for (const auto& e1 : plmn_id_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.write_fieldname("servCellIdentity-r16");
+ serv_cell_id_r16.to_json(j);
+ j.write_fieldname("measResultServCell-r16");
+ meas_result_serv_cell_r16.to_json(j);
+ j.write_int("relativeTimeStamp-r16", relative_time_stamp_r16);
+ j.start_array("measResultList-r16");
+ for (const auto& e1 : meas_result_list_r16) {
+ e1.to_json(j);
+ }
+ j.end_array();
+ j.end_obj();
+}
diff --git a/lib/src/asn1/rrc_utils.cc b/lib/src/asn1/rrc_utils.cc
index 8b688d070..af9b23832 100644
--- a/lib/src/asn1/rrc_utils.cc
+++ b/lib/src/asn1/rrc_utils.cc
@@ -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::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_nr_r15_s, cell_idx_r15);
ASN1_OBJ_ID_DEFINE(asn1::rrc::meas_obj_to_add_mod_s, meas_obj_id);
diff --git a/srsenb/src/enb_cfg_parser.cc b/srsenb/src/enb_cfg_parser.cc
index dea5dfc36..3183eb89f 100644
--- a/srsenb/src/enb_cfg_parser.cc
+++ b/srsenb/src/enb_cfg_parser.cc
@@ -156,21 +156,21 @@ int field_intra_neigh_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_black_cell_list_present = data->intra_freq_black_cell_list.size() > 0;
- for (uint32_t i = 0; i < data->intra_freq_black_cell_list.size() && i < ASN1_RRC_MAX_CELL_BLACK; i++) {
- if (not parse_enum_by_number(data->intra_freq_black_cell_list[i].range, "range", root[i])) {
- fprintf(stderr, "Missing field range in black_cell=%d\n", i);
+ data->intra_freq_excluded_cell_list.resize((uint32_t)root.getLength());
+ data->intra_freq_excluded_cell_list_present = data->intra_freq_excluded_cell_list.size() > 0;
+ 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_excluded_cell_list[i].range, "range", root[i])) {
+ fprintf(stderr, "Missing field range in excluded_cell=%d\n", i);
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;
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;
}
- data->intra_freq_black_cell_list[i].start = (uint16)start;
+ data->intra_freq_excluded_cell_list[i].start = (uint16)start;
}
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_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])) {
ERROR("Missing field q_offset_cell in neigh_cell=%d\n", i);
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)
{
- data->inter_freq_black_cell_list.resize((uint32_t)root.getLength());
- data->inter_freq_black_cell_list_present = data->inter_freq_black_cell_list.size() > 0;
- for (uint32_t i = 0; i < data->inter_freq_black_cell_list.size() && i < ASN1_RRC_MAX_CELL_BLACK; i++) {
- if (not parse_enum_by_number(data->inter_freq_black_cell_list[i].range, "range", root[i])) {
- ERROR("Missing field range in black_cell=%d\n", i);
+ data->inter_freq_excluded_cell_list.resize((uint32_t)root.getLength());
+ data->inter_freq_excluded_cell_list_present = data->inter_freq_excluded_cell_list.size() > 0;
+ 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_excluded_cell_list[i].range, "range", root[i])) {
+ ERROR("Missing field range in excluded_cell=%d\n", i);
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;
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;
}
- data->inter_freq_black_cell_list[i].start = (uint16)start;
+ data->inter_freq_excluded_cell_list[i].start = (uint16)start;
}
return 0;
}
diff --git a/srsue/hdr/stack/rrc/rrc_cell.h b/srsue/hdr/stack/rrc/rrc_cell.h
index 3999f4602..4091d8f07 100644
--- a/srsue/hdr/stack/rrc/rrc_cell.h
+++ b/srsue/hdr/stack/rrc/rrc_cell.h
@@ -31,6 +31,9 @@ inline std::string to_string(const phy_cell_t& c)
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
{
public:
@@ -129,7 +132,7 @@ public:
std::string to_string() const;
- asn1::rrc_nr::sib1_s sib1 = {};
+ asn1::rrc_nr::sib1_s sib1 = {};
};
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)){};
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;
- 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;
+ 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; }
+ srsran::plmn_id_t get_plmn(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; }
@@ -155,7 +158,7 @@ public:
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; }
- 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; }
uint16_t get_mcc() const;
diff --git a/srsue/src/stack/rrc/rrc.cc b/srsue/src/stack/rrc/rrc.cc
index 6acc06af3..5450e488e 100644
--- a/srsue/src/stack/rrc/rrc.cc
+++ b/srsue/src/stack/rrc/rrc.cc
@@ -1361,6 +1361,21 @@ void rrc::write_pdu_bcch_dlsch(unique_byte_buffer_t 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)
{
// 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 =
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) {
- 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) {
case sib_info_item_c::types::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{});
break;
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;
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];
- 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());
}
}
diff --git a/srsue/src/stack/rrc/rrc_cell.cc b/srsue/src/stack/rrc/rrc_cell.cc
index 94410f0d7..baac7f3c2 100644
--- a/srsue/src/stack/rrc/rrc_cell.cc
+++ b/srsue/src/stack/rrc/rrc_cell.cc
@@ -14,6 +14,20 @@
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_))
{
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();
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) {
- 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));
}
}
}
diff --git a/srsue/src/stack/rrc/rrc_meas.cc b/srsue/src/stack/rrc/rrc_meas.cc
index 985dbf904..a5fdd9c61 100644
--- a/srsue/src/stack/rrc/rrc_meas.cc
+++ b/srsue/src/stack/rrc/rrc_meas.cc
@@ -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) {
- apply_remlist_diff(local_obj.black_cells_to_add_mod_list,
- cfg_obj.black_cells_to_rem_list,
- local_obj.black_cells_to_add_mod_list);
+ if (cfg_obj.excluded_cells_to_rem_list_present) {
+ apply_remlist_diff(local_obj.excluded_cells_to_add_mod_list,
+ cfg_obj.excluded_cells_to_rem_list,
+ local_obj.excluded_cells_to_add_mod_list);
}
- if (cfg_obj.black_cells_to_add_mod_list_present) {
- apply_addmodlist_diff(local_obj.black_cells_to_add_mod_list,
- cfg_obj.black_cells_to_add_mod_list,
- local_obj.black_cells_to_add_mod_list);
+ if (cfg_obj.excluded_cells_to_add_mod_list_present) {
+ apply_addmodlist_diff(local_obj.excluded_cells_to_add_mod_list,
+ cfg_obj.excluded_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",
l.meas_obj_id,
local_obj.carrier_freq,
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()) {
for (auto& c : local_obj.cells_to_add_mod_list) {
logger.debug(
"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) {
- logger.debug("MEAS: black-listed cell idx=%d", b.cell_idx);
+ for (auto& b : local_obj.excluded_cells_to_add_mod_list) {
+ 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;
// 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) {
- apply_remlist_diff(local_obj.black_cells_to_add_mod_list_r15,
- cfg_obj.black_cells_to_rem_list_r15,
- local_obj.black_cells_to_add_mod_list_r15);
+ if (cfg_obj.excluded_cells_to_rem_list_r15_present) {
+ apply_remlist_diff(local_obj.excluded_cells_to_add_mod_list_r15,
+ cfg_obj.excluded_cells_to_rem_list_r15,
+ local_obj.excluded_cells_to_add_mod_list_r15);
}
- if (cfg_obj.black_cells_to_add_mod_list_r15_present) {
- apply_addmodlist_diff(local_obj.black_cells_to_add_mod_list_r15,
- cfg_obj.black_cells_to_add_mod_list_r15,
- local_obj.black_cells_to_add_mod_list_r15);
+ if (cfg_obj.excluded_cells_to_add_mod_list_r15_present) {
+ apply_addmodlist_diff(local_obj.excluded_cells_to_add_mod_list_r15,
+ cfg_obj.excluded_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
@@ -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",
l.meas_obj_id,
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()) {
- for (auto& b : local_obj.black_cells_to_add_mod_list_r15) {
- logger.debug("MEAS: black-listed cell idx=%d", b.cell_idx_r15);
+ for (auto& b : local_obj.excluded_cells_to_add_mod_list_r15) {
+ logger.debug("MEAS: excluded-listed cell idx=%d", b.cell_idx_r15);
}
}
}
diff --git a/srsue/src/stack/rrc/rrc_procedures.cc b/srsue/src/stack/rrc/rrc_procedures.cc
index 8b954370f..e6b413501 100644
--- a/srsue/src/stack/rrc/rrc_procedures.cc
+++ b/srsue/src/stack/rrc/rrc_procedures.cc
@@ -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
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) {
- 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};
}
}