diff --git a/CHANGELOG b/CHANGELOG index 063210afec..bf2f82a4d1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ Change Log for Releases ======================= ## 23.04 * Introduced configurable s1 connection timer + * Updated 4G RRC ASN.1 to Rel 17 * Added reestablishment support during S1-Handover * Added basic support for NSSAI based slicing in UE & gNodeB * Updated the RRC to enable srsUE compatibility with new srsgnb diff --git a/README.md b/README.md index eee2ad9891..20d771bc16 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ srsRAN [![Build Status](https://github.com/srsran/srsRAN_4G/actions/workflows/ccpp.yml/badge.svg?branch=master)](https://github.com/srsran/srsRAN_4G/actions/workflows/ccpp.yml) [![CodeQL](https://github.com/srsran/srsRAN_4G/actions/workflows/codeql.yml/badge.svg?branch=master)](https://github.com/srsran/srsRAN_4G/actions/workflows/codeql.yml) -[![Coverity](https://scan.coverity.com/projects/23045/badge.svg)](https://scan.coverity.com/projects/srsran) +[![Coverity](https://scan.coverity.com/projects/28268/badge.svg)](https://scan.coverity.com/projects/srsran_4g_agpl) srsRAN is an open source 4G software radio suite developed by [SRS](http://www.srs.io). For 5G RAN, see our new O-RAN CU/DU solution - [srsRAN Project](https://www.github.com/srsran/srsran_project). diff --git a/lib/examples/pdsch_ue.c b/lib/examples/pdsch_ue.c index 3ff65f4f7f..0e8d3a2084 100644 --- a/lib/examples/pdsch_ue.c +++ b/lib/examples/pdsch_ue.c @@ -642,7 +642,7 @@ int main(int argc, char** argv) #ifdef ENABLE_GUI if (!prog_args.disable_plots) { - init_plots(cell); + init_plots(); sleep(1); } #endif /* ENABLE_GUI */ diff --git a/lib/examples/pssch_ue.c b/lib/examples/pssch_ue.c index dea1ee3133..f42e8a8fd8 100644 --- a/lib/examples/pssch_ue.c +++ b/lib/examples/pssch_ue.c @@ -394,7 +394,7 @@ int main(int argc, char** argv) #ifdef ENABLE_GUI if (!prog_args.disable_plots) { - init_plots(&pscch); + init_plots(); sleep(1); } #endif diff --git a/lib/include/srsran/asn1/asn1_utils.h b/lib/include/srsran/asn1/asn1_utils.h index 43859dfb7e..9422b9390c 100644 --- a/lib/include/srsran/asn1/asn1_utils.h +++ b/lib/include/srsran/asn1/asn1_utils.h @@ -141,7 +141,8 @@ class bit_ref_impl 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& other) const; int distance(const uint8_t* ref_ptr) const; @@ -1286,7 +1287,8 @@ struct choice_buffer_base_t { template struct choice_buffer_t : public choice_buffer_base_t::value, - static_max::value> {}; + static_max::value> { +}; using pod_choice_buffer_t = choice_buffer_t<>; @@ -1548,6 +1550,11 @@ struct setup_release_c { return c; } + bool operator==(const setup_release_c& other) const + { + return type_ == other.type_ and (type_ != types::setup or (c == other.c)); + } + private: types type_; T c; @@ -1654,15 +1661,18 @@ struct base_ie_field : public IEItem { // ProtocolIE-Field{LAYER-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE{{IEsSetParam}} template -struct protocol_ie_field_s : public detail::base_ie_field > {}; +struct protocol_ie_field_s : public detail::base_ie_field > { +}; // ProtocolIE-SingleContainer{LAYER-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE{{IEsSetParam}} template -struct protocol_ie_single_container_s : public protocol_ie_field_s {}; +struct protocol_ie_single_container_s : public protocol_ie_field_s { +}; // ProtocolExtensionField{LAYER-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE{{LAYER-PROTOCOL-EXTENSION}} template -struct protocol_ext_field_s : public detail::base_ie_field > {}; +struct protocol_ext_field_s : public detail::base_ie_field > { +}; namespace detail { diff --git a/lib/include/srsran/asn1/rrc.h b/lib/include/srsran/asn1/rrc.h index a8b00f02da..d14c356657 100644 --- a/lib/include/srsran/asn1/rrc.h +++ b/lib/include/srsran/asn1/rrc.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -55,8 +55,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; @@ -178,7 +179,7 @@ struct bcch_dl_sch_msg_mbms_s { }; // ThresholdEUTRA-v1250 ::= INTEGER (0..97) -using thres_eutra_v1250 = integer; +using thres_eutra_v1250 = uint8_t; // MBMS-SessionInfo-r9 ::= SEQUENCE struct mbms_session_info_r9_s { @@ -195,6 +196,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; + + // 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<8>& four_frames_v1610() + { + assert_choice_type(types::four_frames_v1610, type_, "subframeAllocation-v1610"); + return c.get >(); + } + const fixed_bitstring<2>& one_frame_v1610() const + { + assert_choice_type(types::one_frame_v1610, type_, "subframeAllocation-v1610"); + return c.get >(); + } + const fixed_bitstring<8>& four_frames_v1610() const + { + assert_choice_type(types::four_frames_v1610, type_, "subframeAllocation-v1610"); + return c.get >(); + } + fixed_bitstring<2>& set_one_frame_v1610(); + fixed_bitstring<8>& set_four_frames_v1610(); + + private: + types type_; + choice_buffer_t > 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; + // MBMS-SessionInfoList-r9 ::= SEQUENCE (SIZE (0..29)) OF MBMS-SessionInfo-r9 using mbms_session_info_list_r9_l = dyn_array; @@ -281,8 +347,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; +// CommonSF-AllocPatternList-v1430 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-SubframeConfig-v1430 +using common_sf_alloc_pattern_list_v1430_l = dyn_array; + +// 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 { @@ -299,8 +377,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; @@ -853,6 +932,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_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_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_e_; + struct types_opts { + enum options { fdd_r14, tdd_r14, nulltype } value; + + const char* to_string() const; + }; + typedef enumerated 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(); + } + tdd_r14_e_& tdd_r14() + { + assert_choice_type(types::tdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14"); + return c.get(); + } + const fdd_r14_e_& fdd_r14() const + { + assert_choice_type(types::fdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14"); + return c.get(); + } + const tdd_r14_e_& tdd_r14() const + { + assert_choice_type(types::tdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14"); + return c.get(); + } + 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_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_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_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_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_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 { @@ -1155,157 +1385,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_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_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_e_; - struct types_opts { - enum options { fdd_r14, tdd_r14, nulltype } value; - - const char* to_string() const; - }; - typedef enumerated 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(); - } - tdd_r14_e_& tdd_r14() - { - assert_choice_type(types::tdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14"); - return c.get(); - } - const fdd_r14_e_& fdd_r14() const - { - assert_choice_type(types::fdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14"); - return c.get(); - } - const tdd_r14_e_& tdd_r14() const - { - assert_choice_type(types::tdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14"); - return c.get(); - } - 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_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_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_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_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_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 { @@ -1346,6 +1425,29 @@ using sc_mtch_info_list_r13_l = dyn_array; // SCPTM-NeighbourCellList-r13 ::= SEQUENCE (SIZE (1..8)) OF PCI-ARFCN-r13 using scptm_neighbour_cell_list_r13_l = dyn_array; +// 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_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; @@ -1368,6 +1470,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; @@ -1607,30 +1710,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; - // 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_r16; + copy_ptr log_meas_result_list_bt_r16; + copy_ptr log_meas_result_list_wlan_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1980,6 +2068,30 @@ using meas_result_serv_cell_list_scg_ext_r13_l = dyn_array; +// 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; @@ -2686,6 +2798,19 @@ struct sl_v2x_precfg_r14_s { copy_ptr v2x_packet_dupl_cfg_r15; copy_ptr sync_freq_list_r15; copy_ptr v2x_tx_profile_list_r15; + // group 1 + copy_ptr 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; @@ -2770,6 +2895,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; @@ -2822,6 +2971,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; @@ -2832,6 +2994,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; @@ -2860,6 +3035,17 @@ using var_meas_report_list_r12_l = dyn_array; // 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 a5ad52e4fe..fa0352a7f6 100644 --- a/lib/include/srsran/asn1/rrc/bcch_msg.h +++ b/lib/include/srsran/asn1/rrc/bcch_msg.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -29,6 +29,7 @@ #define SRSASN1_RRC_BCCH_MSG_H #include "meascfg.h" +#include "phy_ded.h" #include "si.h" namespace asn1 { @@ -149,6 +150,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_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; @@ -179,6 +220,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_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; @@ -209,6 +270,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; + // CellReselectionParametersCDMA2000-r11 ::= SEQUENCE struct cell_resel_params_cdma2000_r11_s { using neigh_cell_list_r11_l_ = dyn_array; @@ -237,6 +301,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; @@ -377,18 +451,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; +// AllowedCellListNR-r16 ::= SEQUENCE (SIZE (1..16)) OF INTEGER (0..1007) +using allowed_cell_list_nr_r16_l = bounded_array; + +// InterFreqExcludedCellList ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdRange +using inter_freq_excluded_cell_list_l = dyn_array; // InterFreqNeighCellList ::= SEQUENCE (SIZE (1..16)) OF InterFreqNeighCellInfo using inter_freq_neigh_cell_list_l = dyn_array; +// InterFreqNeighCellList-v1610 ::= SEQUENCE (SIZE (1..16)) OF InterFreqNeighCellInfo-v1610 +using inter_freq_neigh_cell_list_v1610_l = dyn_array; + // InterFreqNeighHSDN-CellList-r15 ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdRange using inter_freq_neigh_hsdn_cell_list_r15_l = dyn_array; // MBMS-SAI-List-r11 ::= SEQUENCE (SIZE (1..64)) OF INTEGER (0..65535) using mbms_sai_list_r11_l = dyn_array; +// 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_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_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_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_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_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; + 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_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_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_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_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; @@ -398,6 +676,9 @@ using multi_band_ns_pmax_list_nr_minus1_v1550_l = dyn_array; +// NR-FreqNeighHSDN-CellList-r17 ::= SEQUENCE (SIZE (1..8)) OF PhysCellIdRangeNR-r16 +using nr_freq_neigh_hsdn_cell_list_r17_l = dyn_array; + // NeighCellCDMA2000 ::= SEQUENCE struct neigh_cell_cdma2000_s { bandclass_cdma2000_e band_class; @@ -524,9 +805,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; +// 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_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 { @@ -587,6 +935,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_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_ { @@ -726,6 +1124,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_ { @@ -734,27 +1162,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; @@ -778,38 +1206,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 @@ -896,6 +1324,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; @@ -909,6 +1354,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 { @@ -951,6 +1406,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_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 { @@ -1046,12 +1524,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; + // NeighCellListCDMA2000 ::= SEQUENCE (SIZE (1..16)) OF NeighCellCDMA2000 using neigh_cell_list_cdma2000_l = dyn_array; // NeighCellListCDMA2000-v920 ::= SEQUENCE (SIZE (1..16)) OF NeighCellCDMA2000-v920 using neigh_cell_list_cdma2000_v920_l = dyn_array; +// 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 { @@ -1168,6 +1660,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 { @@ -1199,6 +1730,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_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_ { @@ -1262,6 +1815,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; + 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; + + // 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; + // CarrierFreqInfoUTRA-v1250 ::= SEQUENCE struct carrier_freq_info_utra_v1250_s { bool reduced_meas_performance_r12_present = false; @@ -1272,9 +1866,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; + // CarrierFreqListNR-r15 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqNR-r15 using carrier_freq_list_nr_r15_l = dyn_array; +// CarrierFreqListNR-v1610 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqNR-v1610 +using carrier_freq_list_nr_v1610_l = dyn_array; + +// CarrierFreqListNR-v1700 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqNR-v1700 +using carrier_freq_list_nr_v1700_l = dyn_array; + +// CarrierFreqListNR-v1720 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqNR-v1720 +using carrier_freq_list_nr_v1720_l = dyn_array; + // CarrierFreqListUTRA-FDD ::= SEQUENCE (SIZE (1..16)) OF CarrierFreqUTRA-FDD using carrier_freq_list_utra_fdd_l = dyn_array; @@ -1354,6 +1960,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; @@ -1380,6 +1999,9 @@ using inter_freq_carrier_freq_list_v1350_l = dyn_array; +// InterFreqCarrierFreqList-v1610 ::= SEQUENCE (SIZE (1..8)) OF InterFreqCarrierFreqInfo-v1610 +using inter_freq_carrier_freq_list_v1610_l = dyn_array; + // InterFreqCarrierFreqListExt-r12 ::= SEQUENCE (SIZE (1..8)) OF InterFreqCarrierFreqInfo-r12 using inter_freq_carrier_freq_list_ext_r12_l = dyn_array; @@ -1398,12 +2020,18 @@ using inter_freq_carrier_freq_list_ext_v1360_l = dyn_array; -// IntraFreqBlackCellList ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdRange -using intra_freq_black_cell_list_l = dyn_array; +// InterFreqCarrierFreqListExt-v1610 ::= SEQUENCE (SIZE (1..8)) OF InterFreqCarrierFreqInfo-v1610 +using inter_freq_carrier_freq_list_ext_v1610_l = dyn_array; + +// IntraFreqExcludedCellList ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdRange +using intra_freq_excluded_cell_list_l = dyn_array; // IntraFreqNeighCellList ::= SEQUENCE (SIZE (1..16)) OF IntraFreqNeighCellInfo using intra_freq_neigh_cell_list_l = dyn_array; +// IntraFreqNeighCellList-v1610 ::= SEQUENCE (SIZE (1..16)) OF IntraFreqNeighCellInfo-v1610 +using intra_freq_neigh_cell_list_v1610_l = dyn_array; + // IntraFreqNeighHSDN-CellList-r15 ::= SEQUENCE (SIZE (1..16)) OF PhysCellIdRange using intra_freq_neigh_hsdn_cell_list_r15_l = dyn_array; @@ -1448,8 +2076,26 @@ using mbms_sai_inter_freq_list_r11_l = dyn_array; // MBMS-SAI-InterFreqList-v1140 ::= SEQUENCE (SIZE (1..8)) OF MBMS-SAI-InterFreq-v1140 using mbms_sai_inter_freq_list_v1140_l = dyn_array; -// MBSFN-AreaInfoList-r9 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-AreaInfo-r9 -using mbsfn_area_info_list_r9_l = dyn_array; +// MBSFN-AreaInfoList-r16 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-AreaInfo-r16 +using mbsfn_area_info_list_r16_l = dyn_array; + +// MBSFN-AreaInfoList-r17 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-AreaInfo-r17 +using mbsfn_area_info_list_r17_l = dyn_array; + +// MBSFN-AreaInfoList-r9 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-AreaInfo-r9 +using mbsfn_area_info_list_r9_l = dyn_array; + +// 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 { @@ -1463,6 +2109,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; + // RedistributionServingInfo-r13 ::= SEQUENCE struct redist_serving_info_r13_s { struct t360_r13_opts { @@ -1838,9 +2487,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; + // SL-SyncConfigList-r12 ::= SEQUENCE (SIZE (1..16)) OF SL-SyncConfig-r12 using sl_sync_cfg_list_r12_l = dyn_array; +// SatelliteInfoList-r17 ::= SEQUENCE (SIZE (1..4)) OF SatelliteInfo-r17 +using satellite_info_list_r17_l = dyn_array; + +// 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; + + // 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_orbital_params_r17_s& orbital_params() + { + assert_choice_type(types::orbital_params, type_, "ephemerisInfo-r17"); + return c.get(); + } + const ephemeris_state_vectors_r17_s& state_vectors() const + { + assert_choice_type(types::state_vectors, type_, "ephemerisInfo-r17"); + return c.get(); + } + const ephemeris_orbital_params_r17_s& orbital_params() const + { + assert_choice_type(types::orbital_params, type_, "ephemerisInfo-r17"); + return c.get(); + } + ephemeris_state_vectors_r17_s& set_state_vectors(); + ephemeris_orbital_params_r17_s& set_orbital_params(); + + private: + types type_; + choice_buffer_t 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_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; @@ -1849,9 +2593,20 @@ struct uac_ac1_select_assist_info_r15_opts { }; typedef enumerated 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_e; + // UAC-BarringInfoSetList-r15 ::= SEQUENCE (SIZE (1..8)) OF UAC-BarringInfoSet-r15 using uac_barr_info_set_list_r15_l = dyn_array; +// UAC-BarringInfoSetList-v1700 ::= SEQUENCE (SIZE (1..8)) OF UAC-BarringInfoSet-v1700 +using uac_barr_info_set_list_v1700_l = dyn_array; + // UAC-BarringPerPLMN-List-r15 ::= SEQUENCE (SIZE (1..6)) OF UAC-BarringPerPLMN-r15 using uac_barr_per_plmn_list_r15_l = dyn_array; @@ -1968,6 +2723,10 @@ struct sib_type13_r9_s { // ... // group 0 copy_ptr notif_cfg_v1430; + // group 1 + copy_ptr mbsfn_area_info_list_r16; + // group 2 + copy_ptr mbsfn_area_info_list_r17; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2409,6 +3168,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 anchor_carrier_freq_list_nr_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2427,6 +3188,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; + // group 1 + copy_ptr carrier_freq_list_nr_v1700; + // group 2 + copy_ptr carrier_freq_list_nr_v1720; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2485,6 +3252,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_e_; + using uac_ac1_select_assist_info_r16_l_ = bounded_array; // member variables bool ext = false; @@ -2498,6 +3274,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; + // group 2 + copy_ptr uac_barr_info_set_list_v1700; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2531,6 +3314,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_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_ { @@ -2660,6 +3514,61 @@ struct sib_type3_s { bool crs_intf_mitig_neigh_cells_ce_r15_present = false; copy_ptr cell_resel_info_hsdn_r15; copy_ptr cell_sel_info_ce_v1530; + // group 8 + copy_ptr 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; + using applicable_disaster_info_list_r17_l_ = dyn_array; + + // 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; @@ -2669,18 +3578,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; + // group 1 + copy_ptr rss_cfg_carrier_info_r16; + copy_ptr intra_freq_neigh_cell_list_v1610; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2715,6 +3627,10 @@ struct sib_type5_s { copy_ptr inter_freq_carrier_freq_list_v1530; copy_ptr inter_freq_carrier_freq_list_ext_v1530; copy_ptr meas_idle_cfg_sib_r15; + // group 7 + copy_ptr inter_freq_carrier_freq_list_v1610; + copy_ptr inter_freq_carrier_freq_list_ext_v1610; + copy_ptr meas_idle_cfg_sib_nr_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2864,12 +3780,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; + typedef enumerated types; // choice methods pos_sib_type_and_info_r15_item_c_() = default; @@ -3017,6 +3944,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& pos_sib1_minus8_v1610() + { + assert_choice_type(types::pos_sib1_minus8_v1610, type_, "posSIB-TypeAndInfo-r15-item"); + return c.get(); + } + 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& pos_sib2_minus21_v1610() + { + assert_choice_type(types::pos_sib2_minus21_v1610, type_, "posSIB-TypeAndInfo-r15-item"); + return c.get(); + } + 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& pos_sib2_minus23_v1610() + { + assert_choice_type(types::pos_sib2_minus23_v1610, type_, "posSIB-TypeAndInfo-r15-item"); + return c.get(); + } + 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& pos_sib2_minus25_v1610() + { + assert_choice_type(types::pos_sib2_minus25_v1610, type_, "posSIB-TypeAndInfo-r15-item"); + return c.get(); + } + 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& pos_sib5_minus1_v1610() + { + assert_choice_type(types::pos_sib5_minus1_v1610, type_, "posSIB-TypeAndInfo-r15-item"); + return c.get(); + } + 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& pos_sib1_minus10_v1700() + { + assert_choice_type(types::pos_sib1_minus10_v1700, type_, "posSIB-TypeAndInfo-r15-item"); + return c.get(); + } const sib_pos_r15_s& pos_sib1_minus1_r15() const { assert_choice_type(types::pos_sib1_minus1_r15, type_, "posSIB-TypeAndInfo-r15-item"); @@ -3152,6 +4134,61 @@ struct pos_sys_info_r15_ies_s { assert_choice_type(types::pos_sib3_minus1_r15, type_, "posSIB-TypeAndInfo-r15-item"); return c.get(); } + 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(); + } + 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(); + } + 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(); + } + 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(); + } + 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(); + } + 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(); + } + 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(); + } + 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(); + } + 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(); + } + 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(); + } + 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& set_pos_sib1_minus1_r15(); sib_pos_r15_s& set_pos_sib1_minus2_r15(); sib_pos_r15_s& set_pos_sib1_minus3_r15(); @@ -3179,6 +4216,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_; @@ -3227,14 +4275,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; + typedef enumerated types; // choice methods sib_info_item_c() = default; @@ -3362,6 +4415,41 @@ struct sib_info_item_c { assert_choice_type(types::sib26_v1530, type_, "sib-TypeAndInfo-item"); return c.get(); } + sib_type26a_r16_s& sib26a_v1610() + { + assert_choice_type(types::sib26a_v1610, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + sib_type27_r16_s& sib27_v1610() + { + assert_choice_type(types::sib27_v1610, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + sib_type28_r16_s& sib28_v1610() + { + assert_choice_type(types::sib28_v1610, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + sib_type29_r16_s& sib29_v1610() + { + assert_choice_type(types::sib29_v1610, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + sib_type30_r17_s& sib30_v1700() + { + assert_choice_type(types::sib30_v1700, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + sib_type31_r17_s& sib31_v1700() + { + assert_choice_type(types::sib31_v1700, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + sib_type32_r17_s& sib32_v1700() + { + assert_choice_type(types::sib32_v1700, type_, "sib-TypeAndInfo-item"); + return c.get(); + } const sib_type2_s& sib2() const { assert_choice_type(types::sib2, type_, "sib-TypeAndInfo-item"); @@ -3477,29 +4565,71 @@ struct sib_info_item_c { assert_choice_type(types::sib26_v1530, type_, "sib-TypeAndInfo-item"); return c.get(); } - 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(); + } + const sib_type27_r16_s& sib27_v1610() const + { + assert_choice_type(types::sib27_v1610, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + const sib_type28_r16_s& sib28_v1610() const + { + assert_choice_type(types::sib28_v1610, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + const sib_type29_r16_s& sib29_v1610() const + { + assert_choice_type(types::sib29_v1610, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + const sib_type30_r17_s& sib30_v1700() const + { + assert_choice_type(types::sib30_v1700, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + const sib_type31_r17_s& sib31_v1700() const + { + assert_choice_type(types::sib31_v1700, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + const sib_type32_r17_s& sib32_v1700() const + { + assert_choice_type(types::sib32_v1700, type_, "sib-TypeAndInfo-item"); + return c.get(); + } + 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_; @@ -3518,7 +4648,14 @@ struct sib_info_item_c { 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, @@ -4048,23 +5185,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_e; @@ -4099,6 +5234,23 @@ using sched_info_list_v12j0_l = dyn_array; // SchedulingInfoListExt-r12 ::= SEQUENCE (SIZE (1..32)) OF SchedulingInfoExt-r12 using sched_info_list_ext_r12_l = dyn_array; +// 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; @@ -4106,6 +5258,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 1470171555..f3f47903aa 100644 --- a/lib/include/srsran/asn1/rrc/common.h +++ b/lib/include/srsran/asn1/rrc/common.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -42,11 +42,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 @@ -57,11 +60,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 @@ -82,6 +86,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 @@ -101,15 +107,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 @@ -126,6 +140,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 @@ -152,6 +167,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 @@ -203,6 +219,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 @@ -216,6 +233,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 @@ -223,6 +246,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 57dd549ddc..bb40ec1be7 100644 --- a/lib/include/srsran/asn1/rrc/common_ext.h +++ b/lib/include/srsran/asn1/rrc/common_ext.h @@ -21,7 +21,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 d6e1e6a0bc..3df35f7e23 100644 --- a/lib/include/srsran/asn1/rrc/dl_ccch_msg.h +++ b/lib/include/srsran/asn1/rrc/dl_ccch_msg.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -242,6 +242,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 { @@ -336,9 +348,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; @@ -361,15 +374,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; }; @@ -386,72 +391,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(); } - 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(); } - 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(); } - 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& 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_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(); } - 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(); } - 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(); } - 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(); } - 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(); } - 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(); } - 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(); } - 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 dac85368d0..3568090a1c 100644 --- a/lib/include/srsran/asn1/rrc/dl_dcch_msg.h +++ b/lib/include/srsran/asn1/rrc/dl_dcch_msg.h @@ -21,13 +21,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" @@ -40,6 +41,34 @@ namespace rrc { * Struct Definitions ******************************************************************************/ +// CondReconfigurationAddMod-r16 ::= SEQUENCE +struct cond_recfg_add_mod_r16_s { + using trigger_condition_r16_l_ = bounded_array; + + // 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; + +// CondReconfigurationToRemoveList-r16 ::= SEQUENCE (SIZE (1..8)) OF INTEGER (1..8) +using cond_recfg_to_rem_list_r16_l = bounded_array; + // SCellConfigCommon-r15 ::= SEQUENCE struct scell_cfg_common_r15_s { bool rr_cfg_common_scell_r15_present = false; @@ -82,6 +111,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_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_e; + // SCellGroupToAddMod-r15 ::= SEQUENCE struct scell_group_to_add_mod_r15_s { bool scell_cfg_common_r15_present = false; @@ -129,6 +225,40 @@ using sl_tf_idx_pair_list_r12b_l = dyn_array; // SL-TxPoolToReleaseList-r12 ::= SEQUENCE (SIZE (1..4)) OF INTEGER (1..4) using sl_tx_pool_to_release_list_r12_l = bounded_array; +// 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; @@ -191,6 +321,253 @@ struct ip_address_r13_c { 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_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_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_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_e_; + struct types_opts { + enum options { fdd, tdd, nulltype } value; + + const char* to_string() const; + }; + typedef enumerated 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(); + } + tdd_e_& tdd() + { + assert_choice_type(types::tdd, type_, "mpdcch-StartSF-UESS-r16"); + return c.get(); + } + const fdd_e_& fdd() const + { + assert_choice_type(types::fdd, type_, "mpdcch-StartSF-UESS-r16"); + return c.get(); + } + const tdd_e_& tdd() const + { + assert_choice_type(types::tdd, type_, "mpdcch-StartSF-UESS-r16"); + return c.get(); + } + 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_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_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; + + // 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_b_s_& ce_mode_b() + { + assert_choice_type(types::ce_mode_b, type_, "pur-GrantInfo-r16"); + return c.get(); + } + const ce_mode_a_s_& ce_mode_a() const + { + assert_choice_type(types::ce_mode_a, type_, "pur-GrantInfo-r16"); + return c.get(); + } + 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_a_s_& set_ce_mode_a(); + ce_mode_b_s_& set_ce_mode_b(); + + private: + types type_; + choice_buffer_t 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_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; @@ -217,6 +594,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_ { @@ -284,16 +681,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_e; - // UplinkPowerControlCommonPSCell-r12 ::= SEQUENCE struct ul_pwr_ctrl_common_ps_cell_r12_s { struct delta_f_pucch_format3_r12_opts { @@ -396,6 +783,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_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_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_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; + 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_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; @@ -414,6 +889,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; @@ -618,40 +1105,6 @@ using sl_tx_pool_to_add_mod_list_v2x_r14_l = dyn_array; -// 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; @@ -668,6 +1121,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; + // WLAN-MobilityConfig-r13 ::= SEQUENCE struct wlan_mob_cfg_r13_s { struct assoc_timer_r13_opts { @@ -920,6 +1376,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_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; + 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; @@ -1192,6 +1681,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_ { @@ -1273,7 +1774,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; }; @@ -1290,28 +1791,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_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(); } - 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(); } - 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_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_; @@ -1373,8 +1874,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; @@ -1463,6 +1965,9 @@ using sl_tf_idx_pair_list_r12_l = dyn_array; // SL-TxPoolToReleaseListExt-r13 ::= SEQUENCE (SIZE (1..4)) OF INTEGER (5..8) using sl_tx_pool_to_release_list_ext_r13_l = bounded_array; +// ValidityAreaList-r16 ::= SEQUENCE (SIZE (1..8)) OF ValidityArea-r16 +using validity_area_list_r16_l = dyn_array; + // FlightPathInfoReportConfig-r15 ::= SEQUENCE struct flight_path_info_report_cfg_r15_s { bool include_time_stamp_r15_present = false; @@ -1491,6 +1996,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 meas_idle_carrier_list_nr_r16; + copy_ptr validity_area_list_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1616,6 +2124,42 @@ struct scg_cfg_r12_c { 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_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_ { @@ -2190,6 +2734,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; @@ -2289,6 +2844,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; + // SystemInfoListGERAN ::= SEQUENCE (SIZE (1..10)) OF OCTET STRING (SIZE (1..23)) using sys_info_list_geran_l = bounded_array, 10>; @@ -2312,6 +2881,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; @@ -2547,6 +3117,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; @@ -2558,6 +3160,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_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; @@ -2906,6 +3528,13 @@ struct other_cfg_r9_s { bool ailc_bit_cfg_r15 = false; copy_ptr bt_name_list_cfg_r15; copy_ptr 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 > scg_deactivation_pref_cfg_r17; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2946,8 +3575,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; @@ -2990,6 +3620,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_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; @@ -3005,6 +3658,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; @@ -3369,9 +4034,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; @@ -4053,12 +4719,13 @@ struct redirected_carrier_info_c { // ... utra_tdd_r10, nr_r15, + nr_r17, nulltype } value; const char* to_string() const; }; - typedef enumerated types; + typedef enumerated types; // choice methods redirected_carrier_info_c() = default; @@ -4111,6 +4778,11 @@ struct redirected_carrier_info_c { assert_choice_type(types::nr_r15, type_, "RedirectedCarrierInfo"); return c.get(); } + carrier_info_nr_r17_s& nr_r17() + { + assert_choice_type(types::nr_r17, type_, "RedirectedCarrierInfo"); + return c.get(); + } const uint32_t& eutra() const { assert_choice_type(types::eutra, type_, "RedirectedCarrierInfo"); @@ -4151,6 +4823,11 @@ struct redirected_carrier_info_c { assert_choice_type(types::nr_r15, type_, "RedirectedCarrierInfo"); return c.get(); } + const carrier_info_nr_r17_s& nr_r17() const + { + assert_choice_type(types::nr_r17, type_, "RedirectedCarrierInfo"); + return c.get(); + } uint32_t& set_eutra(); carrier_freqs_geran_s& set_geran(); uint16_t& set_utra_fdd(); @@ -4159,13 +4836,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_info_nr_r15_s, + carrier_info_nr_r17_s> c; void destroy_(); @@ -4217,11 +4896,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_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; }; @@ -4238,39 +4940,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& 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& 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(); } - 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(); } - 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(); } - 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& 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_; @@ -4752,6 +5454,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; + + // 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_ { @@ -5487,7 +6234,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 @@ -5575,6 +6322,11 @@ struct dl_dcch_msg_type_c { assert_choice_type(types::rrc_conn_resume_r13, type_, "c1"); return c.get(); } + 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(); + } const csfb_params_resp_cdma2000_s& csfb_params_resp_cdma2000() const { assert_choice_type(types::csfb_params_resp_cdma2000, type_, "c1"); @@ -5640,6 +6392,11 @@ struct dl_dcch_msg_type_c { assert_choice_type(types::rrc_conn_resume_r13, type_, "c1"); return c.get(); } + 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(); + } 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(); @@ -5653,7 +6410,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(); @@ -5661,6 +6418,7 @@ struct dl_dcch_msg_type_c { types type_; choice_buffer_t as_cfg_v1550; // group 5 copy_ptr as_cfg_nr_v1570; + // group 6 + copy_ptr as_cfg_nr_v1620; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -357,10 +369,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; @@ -389,6 +401,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; @@ -508,11 +570,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; @@ -619,11 +754,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_e_; + typedef enumerated 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 efd9207ddb..d98352fff4 100644 --- a/lib/include/srsran/asn1/rrc/meascfg.h +++ b/lib/include/srsran/asn1/rrc/meascfg.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -81,6 +81,16 @@ struct q_offset_range_opts { }; typedef enumerated 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_e; + // SecondaryPreRegistrationZoneIdListHRPD ::= SEQUENCE (SIZE (1..2)) OF INTEGER (0..255) using secondary_pre_regist_zone_id_list_hrpd_l = bounded_array; @@ -128,112 +138,6 @@ typedef enumerated band_ind_geran_e; // ExplicitListOfARFCNs ::= SEQUENCE (SIZE (0..31)) OF INTEGER (0..1023) using explicit_list_of_arfcns_l = bounded_array; -// 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; - - // 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(); - } - equally_spaced_arfcns_s_& equally_spaced_arfcns() - { - assert_choice_type(types::equally_spaced_arfcns, type_, "followingARFCNs"); - return c.get(); - } - bounded_octstring<1, 16>& variable_bit_map_of_arfcns() - { - assert_choice_type(types::variable_bit_map_of_arfcns, type_, "followingARFCNs"); - return c.get >(); - } - const explicit_list_of_arfcns_l& explicit_list_of_arfcns() const - { - assert_choice_type(types::explicit_list_of_arfcns, type_, "followingARFCNs"); - return c.get(); - } - const equally_spaced_arfcns_s_& equally_spaced_arfcns() const - { - assert_choice_type(types::equally_spaced_arfcns, type_, "followingARFCNs"); - return c.get(); - } - 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 >(); - } - 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, 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_e; - // MTC-SSB-NR-r15 ::= SEQUENCE struct mtc_ssb_nr_r15_s { struct periodicity_and_offset_r15_c_ { @@ -353,12 +257,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; - // MultiFrequencyBandListNR-r15 ::= SEQUENCE (SIZE (1..32)) OF INTEGER (1..1024) using multi_freq_band_list_nr_r15_l = bounded_array; +// 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; @@ -452,6 +367,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; + + // 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(); + } + equally_spaced_arfcns_s_& equally_spaced_arfcns() + { + assert_choice_type(types::equally_spaced_arfcns, type_, "followingARFCNs"); + return c.get(); + } + bounded_octstring<1, 16>& variable_bit_map_of_arfcns() + { + assert_choice_type(types::variable_bit_map_of_arfcns, type_, "followingARFCNs"); + return c.get >(); + } + const explicit_list_of_arfcns_l& explicit_list_of_arfcns() const + { + assert_choice_type(types::explicit_list_of_arfcns, type_, "followingARFCNs"); + return c.get(); + } + const equally_spaced_arfcns_s_& equally_spaced_arfcns() const + { + assert_choice_type(types::equally_spaced_arfcns, type_, "followingARFCNs"); + return c.get(); + } + 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 >(); + } + 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, 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_e; + +// MultiBandInfoList-r11 ::= SEQUENCE (SIZE (1..8)) OF INTEGER (1..256) +using multi_band_info_list_r11_l = bounded_array; + +// 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_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_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_e; + // MobilityStateParameters ::= SEQUENCE struct mob_state_params_s { struct t_eval_opts { @@ -496,6 +549,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; @@ -529,6 +594,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; @@ -545,19 +649,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, 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; @@ -585,6 +676,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; + // CellsToAddModNR-r15 ::= SEQUENCE struct cells_to_add_mod_nr_r15_s { uint8_t cell_idx_r15 = 1; @@ -598,6 +692,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; @@ -624,17 +732,179 @@ 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; -// MeasCSI-RS-ToRemoveList-r12 ::= SEQUENCE (SIZE (1..96)) OF INTEGER (1..96) -using meas_csi_rs_to_rem_list_r12_l = dyn_array; +// MeasCSI-RS-ToRemoveList-r12 ::= SEQUENCE (SIZE (1..96)) OF INTEGER (1..96) +using meas_csi_rs_to_rem_list_r12_l = dyn_array; + +// MeasSubframeCellList-r10 ::= SEQUENCE (SIZE (1..32)) OF PhysCellIdRange +using meas_sf_cell_list_r10_l = dyn_array; + +// PhysCellIdRangeUTRA-FDDList-r9 ::= SEQUENCE (SIZE (1..4)) OF PhysCellIdRangeUTRA-FDD-r9 +using pci_range_utra_fdd_list_r9_l = dyn_array; + +// 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-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; + +// 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; + + // 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& thres_rsrq() + { + assert_choice_type(types::thres_rsrq, type_, "ThresholdEUTRA"); + return c.get(); + } + const uint8_t& thres_rsrp() const + { + assert_choice_type(types::thres_rsrp, type_, "ThresholdEUTRA"); + return c.get(); + } + const uint8_t& thres_rsrq() const + { + assert_choice_type(types::thres_rsrq, type_, "ThresholdEUTRA"); + return c.get(); + } + 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; + + // 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& nr_rsrq_r15() + { + assert_choice_type(types::nr_rsrq_r15, type_, "ThresholdNR-r15"); + return c.get(); + } + uint8_t& nr_sinr_r15() + { + assert_choice_type(types::nr_sinr_r15, type_, "ThresholdNR-r15"); + return c.get(); + } + const uint8_t& nr_rsrp_r15() const + { + assert_choice_type(types::nr_rsrp_r15, type_, "ThresholdNR-r15"); + return c.get(); + } + const uint8_t& nr_rsrq_r15() const + { + assert_choice_type(types::nr_rsrq_r15, type_, "ThresholdNR-r15"); + return c.get(); + } + const uint8_t& nr_sinr_r15() const + { + assert_choice_type(types::nr_sinr_r15, type_, "ThresholdNR-r15"); + return c.get(); + } + 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_(); +}; -// MeasSubframeCellList-r10 ::= SEQUENCE (SIZE (1..32)) OF PhysCellIdRange -using meas_sf_cell_list_r10_l = dyn_array; +// 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; -// PhysCellIdRangeUTRA-FDDList-r9 ::= SEQUENCE (SIZE (1..4)) OF PhysCellIdRangeUTRA-FDD-r9 -using pci_range_utra_fdd_list_r9_l = dyn_array; + const char* to_string() const; + uint16_t to_number() const; +}; +typedef enumerated time_to_trigger_e; // WLAN-ChannelList-r13 ::= SEQUENCE (SIZE (1..16)) OF INTEGER (0..255) using wlan_ch_list_r13_l = bounded_array; @@ -642,18 +912,8 @@ using wlan_ch_list_r13_l = bounded_array; // WLAN-NameList-r15 ::= SEQUENCE (SIZE (1..4)) OF OCTET STRING (SIZE (1..32)) using wlan_name_list_r15_l = bounded_array, 4>; -// WhiteCellsToAddMod-r13 ::= SEQUENCE -struct white_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 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); } -}; +// AllowedCellsToAddModList-r13 ::= SEQUENCE (SIZE (1..32)) OF AllowedCellsToAddMod-r13 +using allowed_cells_to_add_mod_list_r13_l = dyn_array; // AltTTT-CellsToAddModList-r12 ::= SEQUENCE (SIZE (1..32)) OF AltTTT-CellsToAddMod-r12 using alt_ttt_cells_to_add_mod_list_r12_l = dyn_array; @@ -690,9 +950,6 @@ struct bt_name_list_cfg_r15_c { bt_name_list_r15_l c; }; -// BlackCellsToAddModList ::= SEQUENCE (SIZE (1..32)) OF BlackCellsToAddMod -using black_cells_to_add_mod_list_l = dyn_array; - // CDMA2000-Type ::= ENUMERATED struct cdma2000_type_opts { enum options { type1_xrtt, type_hrpd, nulltype } value; @@ -728,12 +985,138 @@ using cells_to_add_mod_list_cdma2000_l = dyn_array; // CellsToAddModListNR-r15 ::= SEQUENCE (SIZE (1..32)) OF CellsToAddModNR-r15 using cells_to_add_mod_list_nr_r15_l = dyn_array; +// CellsToAddModListNR-r16 ::= SEQUENCE (SIZE (1..32)) OF CellsToAddModNR-r16 +using cells_to_add_mod_list_nr_r16_l = dyn_array; + // CellsToAddModListUTRA-FDD ::= SEQUENCE (SIZE (1..32)) OF CellsToAddModUTRA-FDD using cells_to_add_mod_list_utra_fdd_l = dyn_array; // CellsToAddModListUTRA-TDD ::= SEQUENCE (SIZE (1..32)) OF CellsToAddModUTRA-TDD using cells_to_add_mod_list_utra_tdd_l = dyn_array; +// 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; + + // 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_a5_r16_s_& cond_event_a5_r16() + { + assert_choice_type(types::cond_event_a5_r16, type_, "condEventId-r16"); + return c.get(); + } + 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(); + } + 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_a3_r16_s_& set_cond_event_a3_r16(); + cond_event_a5_r16_s_& set_cond_event_a5_r16(); + + private: + types type_; + choice_buffer_t 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; + + // 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; + // MeasCycleSCell-r10 ::= ENUMERATED struct meas_cycle_scell_r10_opts { enum options { sf160, sf256, sf320, sf512, sf640, sf1024, sf1280, spare1, nulltype } value; @@ -1205,6 +1588,21 @@ struct meas_gap_cfg_c { 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; @@ -1368,6 +1766,80 @@ struct rmtc_cfg_r13_c { 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_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_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_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_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_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_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 { @@ -1408,6 +1880,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; + 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_e_; + using ssb_position_qcl_cells_to_rem_list_nr_r17_l_ = bounded_array; // member variables bool ext = false; @@ -1416,6 +1898,18 @@ struct rs_cfg_ssb_nr_r15_s { // ... // group 0 copy_ptr 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; + copy_ptr 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; + copy_ptr ssb_position_qcl_cells_to_rem_list_nr_r17; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1488,150 +1982,35 @@ typedef enumerated report_interv_e; // ReportQuantityNR-r15 ::= SEQUENCE struct report_quant_nr_r15_s { bool ss_rsrp = false; - bool ss_rsrq = false; - bool ss_sinr = 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 report_quant_nr_r15_s& other) const; - bool operator!=(const report_quant_nr_r15_s& other) const { return not(*this == other); } -}; - -// ReportQuantityWLAN-r13 ::= SEQUENCE -struct report_quant_wlan_r13_s { - bool ext = false; - bool band_request_wlan_r13_present = false; - bool carrier_info_request_wlan_r13_present = false; - bool available_admission_capacity_request_wlan_r13_present = false; - bool backhaul_dl_bw_request_wlan_r13_present = false; - bool backhaul_ul_bw_request_wlan_r13_present = false; - bool ch_utilization_request_wlan_r13_present = false; - bool station_count_request_wlan_r13_present = false; - // ... - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; - bool operator==(const report_quant_wlan_r13_s& other) const; - 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; - - // 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& thres_rsrq() - { - assert_choice_type(types::thres_rsrq, type_, "ThresholdEUTRA"); - return c.get(); - } - const uint8_t& thres_rsrp() const - { - assert_choice_type(types::thres_rsrp, type_, "ThresholdEUTRA"); - return c.get(); - } - const uint8_t& thres_rsrq() const - { - assert_choice_type(types::thres_rsrq, type_, "ThresholdEUTRA"); - return c.get(); - } - 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; + bool ss_rsrq = false; + bool ss_sinr = false; - // 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_; } + // 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 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& nr_rsrq_r15() - { - assert_choice_type(types::nr_rsrq_r15, type_, "ThresholdNR-r15"); - return c.get(); - } - uint8_t& nr_sinr_r15() - { - assert_choice_type(types::nr_sinr_r15, type_, "ThresholdNR-r15"); - return c.get(); - } - const uint8_t& nr_rsrp_r15() const - { - assert_choice_type(types::nr_rsrp_r15, type_, "ThresholdNR-r15"); - return c.get(); - } - const uint8_t& nr_rsrq_r15() const - { - assert_choice_type(types::nr_rsrq_r15, type_, "ThresholdNR-r15"); - return c.get(); - } - const uint8_t& nr_sinr_r15() const - { - assert_choice_type(types::nr_sinr_r15, type_, "ThresholdNR-r15"); - return c.get(); - } - uint8_t& set_nr_rsrp_r15(); - uint8_t& set_nr_rsrq_r15(); - uint8_t& set_nr_sinr_r15(); + bool operator==(const report_quant_nr_r15_s& other) const; + bool operator!=(const report_quant_nr_r15_s& other) const { return not(*this == other); } +}; -private: - types type_; - pod_choice_buffer_t c; +// ReportQuantityWLAN-r13 ::= SEQUENCE +struct report_quant_wlan_r13_s { + bool ext = false; + bool band_request_wlan_r13_present = false; + bool carrier_info_request_wlan_r13_present = false; + bool available_admission_capacity_request_wlan_r13_present = false; + bool backhaul_dl_bw_request_wlan_r13_present = false; + bool backhaul_ul_bw_request_wlan_r13_present = false; + bool ch_utilization_request_wlan_r13_present = false; + bool station_count_request_wlan_r13_present = false; + // ... - void destroy_(); + // 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 report_quant_wlan_r13_s& other) const; + bool operator!=(const report_quant_wlan_r13_s& other) const { return not(*this == other); } }; // ThresholdUTRA ::= CHOICE @@ -1688,34 +2067,6 @@ struct thres_utra_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_e; - // Tx-ResourcePoolMeasList-r14 ::= SEQUENCE (SIZE (1..72)) OF INTEGER (1..72) using tx_res_pool_meas_list_r14_l = dyn_array; @@ -1782,6 +2133,44 @@ struct ul_delay_cfg_r13_c { 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; + + // 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 { @@ -1844,9 +2233,6 @@ struct wlan_name_list_cfg_r15_c { 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; - // MeasGapConfigPerCC-r14 ::= SEQUENCE struct meas_gap_cfg_per_cc_r14_s { uint8_t serv_cell_id_r14 = 0; @@ -1925,23 +2311,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; @@ -1958,11 +2344,11 @@ struct meas_obj_eutra_s { bool reduced_meas_performance_r12 = false; copy_ptr meas_ds_cfg_r12; // group 3 - bool carrier_freq_r13_present = false; - copy_ptr white_cells_to_rem_list_r13; - copy_ptr white_cells_to_add_mod_list_r13; - copy_ptr rmtc_cfg_r13; - uint32_t carrier_freq_r13 = 65536; + bool carrier_freq_r13_present = false; + copy_ptr allowed_cells_to_rem_list_r13; + copy_ptr allowed_cells_to_add_mod_list_r13; + copy_ptr rmtc_cfg_r13; + uint32_t carrier_freq_r13 = 65536; // group 4 bool fembms_mixed_carrier_r14_present = false; copy_ptr tx_res_pool_to_rem_list_r14; @@ -1970,6 +2356,8 @@ struct meas_obj_eutra_s { bool fembms_mixed_carrier_r14 = false; // group 5 copy_ptr meas_sensing_cfg_r15; + // group 6 + copy_ptr > meas_rss_ded_cfg_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2048,16 +2436,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; // ... @@ -2068,6 +2456,11 @@ struct meas_obj_nr_r15_s { bool derive_ssb_idx_from_cell_r15 = false; copy_ptr ss_rssi_meas_r15; copy_ptr band_nr_r15; + // group 1 + copy_ptr > rmtc_cfg_nr_r16; + // group 2 + copy_ptr cells_to_rem_list_r16; + copy_ptr cells_to_add_mod_list_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2737,11 +3130,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; - bool use_white_cell_list_r13 = false; + bool use_allowed_cell_list_r13 = false; copy_ptr meas_rssi_report_cfg_r13; copy_ptr ul_delay_cfg_r13; // group 4 @@ -2761,6 +3154,13 @@ struct report_cfg_eutra_s { copy_ptr 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; + copy_ptr 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; @@ -3189,6 +3589,11 @@ struct report_cfg_inter_rat_s { copy_ptr 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_nr_r16; + // group 8 + copy_ptr cond_recfg_trigger_nr_r17; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3500,6 +3905,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; + + // 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& periodicity16() + { + assert_choice_type(types::periodicity16, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + uint8_t& periodicity32() + { + assert_choice_type(types::periodicity32, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + uint8_t& periodicity64() + { + assert_choice_type(types::periodicity64, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + uint8_t& periodicity128() + { + assert_choice_type(types::periodicity128, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + uint16_t& periodicity256() + { + assert_choice_type(types::periodicity256, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + uint16_t& periodicity512() + { + assert_choice_type(types::periodicity512, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + uint16_t& periodicity1024() + { + assert_choice_type(types::periodicity1024, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + uint16_t& periodicity2048() + { + assert_choice_type(types::periodicity2048, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + uint16_t& periodicity4096() + { + assert_choice_type(types::periodicity4096, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + uint16_t& periodicity8192() + { + assert_choice_type(types::periodicity8192, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + const uint8_t& periodicity8() const + { + assert_choice_type(types::periodicity8, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + const uint8_t& periodicity16() const + { + assert_choice_type(types::periodicity16, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + const uint8_t& periodicity32() const + { + assert_choice_type(types::periodicity32, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + const uint8_t& periodicity64() const + { + assert_choice_type(types::periodicity64, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + const uint8_t& periodicity128() const + { + assert_choice_type(types::periodicity128, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + const uint16_t& periodicity256() const + { + assert_choice_type(types::periodicity256, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + const uint16_t& periodicity512() const + { + assert_choice_type(types::periodicity512, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + const uint16_t& periodicity1024() const + { + assert_choice_type(types::periodicity1024, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + const uint16_t& periodicity2048() const + { + assert_choice_type(types::periodicity2048, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + const uint16_t& periodicity4096() const + { + assert_choice_type(types::periodicity4096, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + const uint16_t& periodicity8192() const + { + assert_choice_type(types::periodicity8192, type_, "PUR-PeriodicityAndOffset-r16"); + return c.get(); + } + 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 { @@ -4413,10 +4982,75 @@ struct meas_cfg_s { void to_json(json_writer& j) const; }; -// CarrierFreqGERAN ::= SEQUENCE -struct carrier_freq_geran_s { - uint16_t arfcn = 0; - band_ind_geran_e band_ind; +// 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; + + // 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; + band_ind_geran_e band_ind; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + 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; @@ -4426,11 +5060,12 @@ struct carrier_freq_geran_s { // 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; @@ -4449,6 +5084,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 { @@ -4539,6 +5186,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; @@ -4604,6 +5264,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; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -4622,6 +5284,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; + +// 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 { @@ -4674,6 +5382,26 @@ struct cell_global_id_cdma2000_c { 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-IdentityInfoListNR-v1710 ::= SEQUENCE (SIZE (1..12)) OF PLMN-IdentityInfoNR-v1710 +using plmn_id_info_list_nr_v1710_l = dyn_array; + // AdditionalSI-Info-r9 ::= SEQUENCE struct add_si_info_r9_s { bool csg_member_status_r9_present = false; @@ -4703,6 +5431,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_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; @@ -4736,6 +5489,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; + // PLMN-IdentityList2 ::= SEQUENCE (SIZE (1..5)) OF PLMN-Identity using plmn_id_list2_l = dyn_array; @@ -4762,6 +5518,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_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_ { @@ -4913,9 +5686,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; - // DataBLER-MCH-ResultList-r12 ::= SEQUENCE (SIZE (1..15)) OF DataBLER-MCH-Result-r12 using data_bler_mch_result_list_r12_l = dyn_array; @@ -5102,6 +5872,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; + // MeasResultGERAN ::= SEQUENCE struct meas_result_geran_s { struct cgi_info_s_ { @@ -5134,23 +5907,6 @@ using meas_result_list_eutra_l = dyn_array; // MeasResultListUTRA ::= SEQUENCE (SIZE (1..8)) OF MeasResultUTRA using meas_result_list_utra_l = dyn_array; -// 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; @@ -5162,21 +5918,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; @@ -5303,6 +6044,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; @@ -5330,52 +6085,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; - -// 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; // LogMeasResultListWLAN-r15 ::= SEQUENCE (SIZE (1..32)) OF LogMeasResultWLAN-r15 using log_meas_result_list_wlan_r15_l = dyn_array; +// MeasResultFreqListNR-r16 ::= SEQUENCE (SIZE (1..7)) OF MeasResultFreqFailNR-r15 +using meas_result_freq_list_nr_r16_l = dyn_array; + // MeasResultList2CDMA2000-r9 ::= SEQUENCE (SIZE (1..8)) OF MeasResult2CDMA2000-r9 using meas_result_list2_cdma2000_r9_l = dyn_array; @@ -5397,9 +6115,6 @@ using meas_result_list2_utra_r9_l = dyn_array; // MeasResultListMBSFN-r12 ::= SEQUENCE (SIZE (1..8)) OF MeasResultMBSFN-r12 using meas_result_list_mbsfn_r12_l = dyn_array; -// MeasResultSSB-IndexList-r15 ::= SEQUENCE (SIZE (1..32)) OF MeasResultSSB-Index-r15 -using meas_result_ssb_idx_list_r15_l = dyn_array; - // LogMeasInfo-r10 ::= SEQUENCE struct log_meas_info_r10_s { struct meas_result_serv_cell_r10_s_ { @@ -5416,6 +6131,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; @@ -5445,23 +6163,14 @@ struct log_meas_info_r10_s { copy_ptr 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_r15; + // group 6 + copy_ptr meas_result_list_nr_r16; + // group 7 + copy_ptr meas_result_list_nr_v1640; + copy_ptr 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; @@ -5472,9 +6181,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; -// MeasResultCellListNR-r15 ::= SEQUENCE (SIZE (1..8)) OF MeasResultCellNR-r15 -using meas_result_cell_list_nr_r15_l = dyn_array; - // LogMeasReport-r10 ::= SEQUENCE struct log_meas_report_r10_s { bool ext = false; @@ -5689,6 +6395,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; @@ -5706,6 +6425,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; @@ -5766,6 +6498,9 @@ using meas_result_serv_freq_list_nr_r15_l = dyn_array; +// UL-PDCP-DelayValueResultList-r16 ::= SEQUENCE (SIZE (1..11)) OF UL-PDCP-DelayValueResult-r16 +using ul_pdcp_delay_value_result_list_r16_l = dyn_array; + // MeasResults ::= SEQUENCE struct meas_results_s { struct meas_result_pcell_s_ { @@ -5912,6 +6647,14 @@ struct meas_results_s { copy_ptr log_meas_result_list_wlan_r15; copy_ptr meas_result_sensing_r15; int16_t height_ue_r15 = -400; + // group 8 + copy_ptr ul_pdcp_delay_value_result_list_r16; + copy_ptr 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 8125b3345d..7dfa6e5b82 100644 --- a/lib/include/srsran/asn1/rrc/paging.h +++ b/lib/include/srsran/asn1/rrc/paging.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -37,10 +37,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-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-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; @@ -393,6 +447,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; @@ -401,6 +466,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 90229fb08d..304228705c 100644 --- a/lib/include/srsran/asn1/rrc/phy_ded.h +++ b/lib/include/srsran/asn1/rrc/phy_ded.h @@ -21,14 +21,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 { @@ -37,6 +37,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; + + // 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& periodicity40ms() + { + assert_choice_type(types::periodicity40ms, type_, "PeriodicityStartPos-r16"); + return c.get(); + } + uint8_t& periodicity80ms() + { + assert_choice_type(types::periodicity80ms, type_, "PeriodicityStartPos-r16"); + return c.get(); + } + uint8_t& periodicity160ms() + { + assert_choice_type(types::periodicity160ms, type_, "PeriodicityStartPos-r16"); + return c.get(); + } + const uint8_t& periodicity20ms() const + { + assert_choice_type(types::periodicity20ms, type_, "PeriodicityStartPos-r16"); + return c.get(); + } + const uint8_t& periodicity40ms() const + { + assert_choice_type(types::periodicity40ms, type_, "PeriodicityStartPos-r16"); + return c.get(); + } + const uint8_t& periodicity80ms() const + { + assert_choice_type(types::periodicity80ms, type_, "PeriodicityStartPos-r16"); + return c.get(); + } + const uint8_t& periodicity160ms() const + { + assert_choice_type(types::periodicity160ms, type_, "PeriodicityStartPos-r16"); + return c.get(); + } + 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; + + // 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<8>& rbg_bitmap3() + { + assert_choice_type(types::rbg_bitmap3, type_, "resourceReservationFreq-r16"); + return c.get >(); + } + fixed_bitstring<13>& rbg_bitmap5() + { + assert_choice_type(types::rbg_bitmap5, type_, "resourceReservationFreq-r16"); + return c.get >(); + } + fixed_bitstring<17>& rbg_bitmap10() + { + assert_choice_type(types::rbg_bitmap10, type_, "resourceReservationFreq-r16"); + return c.get >(); + } + fixed_bitstring<19>& rbg_bitmap15() + { + assert_choice_type(types::rbg_bitmap15, type_, "resourceReservationFreq-r16"); + return c.get >(); + } + fixed_bitstring<25>& rbg_bitmap20() + { + assert_choice_type(types::rbg_bitmap20, type_, "resourceReservationFreq-r16"); + return c.get >(); + } + const fixed_bitstring<6>& rbg_bitmap1dot4() const + { + assert_choice_type(types::rbg_bitmap1dot4, type_, "resourceReservationFreq-r16"); + return c.get >(); + } + const fixed_bitstring<8>& rbg_bitmap3() const + { + assert_choice_type(types::rbg_bitmap3, type_, "resourceReservationFreq-r16"); + return c.get >(); + } + const fixed_bitstring<13>& rbg_bitmap5() const + { + assert_choice_type(types::rbg_bitmap5, type_, "resourceReservationFreq-r16"); + return c.get >(); + } + const fixed_bitstring<17>& rbg_bitmap10() const + { + assert_choice_type(types::rbg_bitmap10, type_, "resourceReservationFreq-r16"); + return c.get >(); + } + const fixed_bitstring<19>& rbg_bitmap15() const + { + assert_choice_type(types::rbg_bitmap15, type_, "resourceReservationFreq-r16"); + return c.get >(); + } + const fixed_bitstring<25>& rbg_bitmap20() const + { + assert_choice_type(types::rbg_bitmap20, type_, "resourceReservationFreq-r16"); + return c.get >(); + } + 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 > 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; + + // 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<80>& slot_pattern40ms() + { + assert_choice_type(types::slot_pattern40ms, type_, "slotBitmap-r16"); + return c.get >(); + } + const fixed_bitstring<20>& slot_pattern10ms() const + { + assert_choice_type(types::slot_pattern10ms, type_, "slotBitmap-r16"); + return c.get >(); + } + const fixed_bitstring<80>& slot_pattern40ms() const + { + assert_choice_type(types::slot_pattern40ms, type_, "slotBitmap-r16"); + return c.get >(); + } + fixed_bitstring<20>& set_slot_pattern10ms(); + fixed_bitstring<80>& set_slot_pattern40ms(); + + private: + types type_; + choice_buffer_t > 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; + + // 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<80>& slot_pattern40ms() + { + assert_choice_type(types::slot_pattern40ms, type_, "slotBitmap-r16"); + return c.get >(); + } + const fixed_bitstring<20>& slot_pattern10ms() const + { + assert_choice_type(types::slot_pattern10ms, type_, "slotBitmap-r16"); + return c.get >(); + } + const fixed_bitstring<80>& slot_pattern40ms() const + { + assert_choice_type(types::slot_pattern40ms, type_, "slotBitmap-r16"); + return c.get >(); + } + fixed_bitstring<20>& set_slot_pattern10ms(); + fixed_bitstring<80>& set_slot_pattern40ms(); + + private: + types type_; + choice_buffer_t > 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; @@ -3502,6 +3834,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_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_ { @@ -4206,6 +4579,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_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_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_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_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_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 { @@ -5429,6 +5867,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; + + // 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; + + // 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_ { @@ -6551,6 +7011,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; + + // 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_ { @@ -6728,6 +7198,28 @@ struct phys_cfg_ded_stti_r15_c { setup_s_ c; }; +// ResourceReservationConfigDedicatedDL-r16 ::= SEQUENCE +struct res_reserv_cfg_ded_dl_r16_s { + bool res_reserv_ded_dl_r16_present = false; + res_reserv_cfg_dl_r16_s res_reserv_ded_dl_r16; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// ResourceReservationConfigDedicatedUL-r16 ::= SEQUENCE +struct res_reserv_cfg_ded_ul_r16_s { + bool res_reserv_ded_ul_r16_present = false; + res_reserv_cfg_ul_r16_s res_reserv_ded_ul_r16; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // SPUCCH-Config-v1550 ::= CHOICE struct spucch_cfg_v1550_c { struct setup_s_ { @@ -7006,6 +7498,59 @@ struct srs_ul_cfg_ded_v1310_c { setup_s_ c; }; +// SoundingRS-UL-ConfigDedicatedAdd-r16 ::= SEQUENCE +struct srs_ul_cfg_ded_add_r16_s { + using srs_cfg_ap_dci_format4_r16_l_ = dyn_array; + 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_ { @@ -7332,6 +7877,39 @@ struct srs_ul_cfg_ded_up_pts_ext_r13_c { setup_s_ c; }; +// SoundingRS-VirtualCellID-r16 ::= SEQUENCE +struct srs_virtual_cell_id_r16_s { + uint16_t srs_virtual_cell_id_r16 = 0; + bool srs_virtual_cell_id_all_srs_r16 = false; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; + bool operator==(const srs_virtual_cell_id_r16_s& other) const; + bool operator!=(const srs_virtual_cell_id_r16_s& other) const { return not(*this == other); } +}; + +// UplinkPowerControlAddSRS-r16 ::= SEQUENCE +struct ul_pwr_ctrl_add_srs_r16_s { + bool tpc_idx_srs_add_r16_present = false; + bool start_bit_of_format3_b_srs_add_r16_present = false; + bool field_type_format3_b_srs_add_r16_present = false; + bool p0_ue_srs_add_r16_present = false; + tpc_idx_c tpc_idx_srs_add_r16; + uint8_t start_bit_of_format3_b_srs_add_r16 = 0; + uint8_t field_type_format3_b_srs_add_r16 = 1; + int8_t p0_ue_srs_add_r16 = -16; + bool accumulation_enabled_srs_add_r16 = false; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; + bool operator==(const ul_pwr_ctrl_add_srs_r16_s& other) const; + bool operator!=(const ul_pwr_ctrl_add_srs_r16_s& other) const { return not(*this == other); } +}; + // UplinkPowerControlDedicated ::= SEQUENCE struct ul_pwr_ctrl_ded_s { struct delta_mcs_enabled_opts { @@ -7453,6 +8031,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_ { @@ -7846,6 +8437,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; + setup_release_c 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_e_; // member variables bool ext = false; @@ -7958,6 +8561,22 @@ struct phys_cfg_ded_s { copy_ptr blind_pdsch_repeat_cfg_r15; // group 11 copy_ptr spucch_cfg_v1550; + // group 12 + bool ce_csi_rs_feedback_r16_present = false; + copy_ptr pdsch_cfg_ded_v1610; + copy_ptr pusch_cfg_ded_v1610; + copy_ptr > res_reserv_cfg_ded_dl_r16; + copy_ptr > res_reserv_cfg_ded_ul_r16; + copy_ptr > srs_ul_cfg_ded_add_r16; + copy_ptr > ul_pwr_ctrl_add_srs_r16; + copy_ptr > srs_virtual_cell_id_r16; + copy_ptr > wideband_prg_r16; + // group 13 + copy_ptr pdsch_cfg_ded_v1700; + copy_ptr 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 972aa39eee..382cc75a2b 100644 --- a/lib/include/srsran/asn1/rrc/rr_common.h +++ b/lib/include/srsran/asn1/rrc/rr_common.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -277,6 +277,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_e; + +// GWUS-GroupsForServiceList-r16 ::= SEQUENCE (SIZE (1..3)) OF INTEGER (1..31) +using gwus_groups_for_service_list_r16_l = bounded_array; + +// GWUS-NumGroupsList-r16 ::= SEQUENCE (SIZE (1..4)) OF GWUS-NumGroups-r16 +using gwus_num_groups_list_r16_l = bounded_array; + +// 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_e; + // PRACH-ParametersCE-r13 ::= SEQUENCE struct prach_params_ce_r13_s { struct prach_start_sf_r13_opts { @@ -704,6 +730,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; + +// GWUS-ProbThreshList-r16 ::= SEQUENCE (SIZE (1..3)) OF GWUS-PagingProbThresh-r16 +using gwus_prob_thresh_list_r16_l = bounded_array; + +// 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_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_e_; + struct types_opts { + enum options { res_location_with_wus, res_location_without_wus, nulltype } value; + + const char* to_string() const; + }; + typedef enumerated 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_without_wus_e_& res_location_without_wus() + { + assert_choice_type(types::res_location_without_wus, type_, "resourceMappingPattern-r16"); + return c.get(); + } + 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(); + } + 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_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_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_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_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_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_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_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_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; @@ -833,6 +1026,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_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 { @@ -1120,6 +1334,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_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; @@ -1139,6 +1386,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 { @@ -1210,6 +1468,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; @@ -1375,6 +1641,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_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 { @@ -1474,6 +1760,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_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_ { @@ -1546,6 +1852,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_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_ { @@ -1866,6 +2192,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 { @@ -1954,8 +2291,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_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_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; @@ -1995,6 +2374,21 @@ struct rr_cfg_common_sib_s { copy_ptr ul_pwr_ctrl_common_v1540; // group 7 copy_ptr 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; + copy_ptr high_speed_cfg_v1610; + copy_ptr crs_ch_est_mpdcch_cfg_common_r16; + copy_ptr gwus_cfg_r16; + copy_ptr 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; + copy_ptr ntn_cfg_common_r17; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2330,6 +2724,9 @@ struct rr_cfg_common_scell_r10_s { copy_ptr mbsfn_sf_cfg_list_v1430; // group 6 copy_ptr 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; @@ -2468,6 +2865,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_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; @@ -2514,6 +2933,13 @@ struct rr_cfg_common_s { // group 6 copy_ptr ul_pwr_ctrl_common_v1530; copy_ptr high_speed_cfg_v1530; + // group 7 + bool high_speed_inter_rat_nr_r16_present = false; + copy_ptr high_speed_cfg_v1610; + copy_ptr ul_pwr_ctrl_common_v1610; + bool high_speed_inter_rat_nr_r16 = false; + // group 8 + copy_ptr 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 f2f90e30e2..72b2de58e8 100644 --- a/lib/include/srsran/asn1/rrc/rr_ded.h +++ b/lib/include/srsran/asn1/rrc/rr_ded.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -455,6 +455,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_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_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_ { @@ -609,6 +659,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_e_; // member variables bool ext = false; @@ -631,6 +689,9 @@ struct lc_ch_cfg_s { copy_ptr lc_ch_sr_restrict_r15; copy_ptr 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; @@ -765,6 +826,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_e; + // UL-AM-RLC ::= SEQUENCE struct ul_am_rlc_s { struct max_retx_thres_opts { @@ -1398,6 +1469,10 @@ struct pdcp_cfg_s { // group 5 copy_ptr ul_data_compress_r15; copy_ptr pdcp_dupl_cfg_r15; + // group 6 + copy_ptr > ethernet_hdr_compress_r16; + // group 7 + copy_ptr > discard_timer_ext_r17; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1681,6 +1756,18 @@ struct rlc_cfg_v1530_c { types type_; }; +// RLC-Config-v1700 ::= SEQUENCE +struct rlc_cfg_v1700_s { + setup_release_c 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 { @@ -2159,6 +2246,10 @@ struct drb_to_add_mod_s { copy_ptr rlc_cfg_v1530; copy_ptr 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; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2745,6 +2836,35 @@ using neigh_cells_to_add_mod_list_r12_l = dyn_array; // NeighCellsToReleaseList-r12 ::= SEQUENCE (SIZE (1..8)) OF INTEGER (0..503) using neigh_cells_to_release_list_r12_l = bounded_array; +// 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_e; + // PeriodicBSR-Timer-r12 ::= ENUMERATED struct periodic_bsr_timer_r12_opts { enum options { @@ -3016,6 +3136,16 @@ using sps_cfg_ul_to_release_list_r14_l = bounded_array; // SPS-ConfigUL-ToReleaseList-r15 ::= SEQUENCE (SIZE (1..6)) OF INTEGER (1..6) using sps_cfg_ul_to_release_list_r15_l = bounded_array; +// 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_e; + // SRB-ToAddMod ::= SEQUENCE struct srb_to_add_mod_s { struct rlc_cfg_c_ { @@ -3105,6 +3235,8 @@ struct srb_to_add_mod_s { uint8_t srb_id_v1530 = 4; // group 1 copy_ptr rlc_cfg_v1560; + // group 2 + copy_ptr rlc_cfg_v1700; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3120,6 +3252,36 @@ using stag_to_add_mod_list_r11_l = dyn_array; // STAG-ToReleaseList-r11 ::= SEQUENCE (SIZE (1..3)) OF INTEGER (1..3) using stag_to_release_list_r11_l = bounded_array; +// 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_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_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; @@ -3660,6 +3822,11 @@ struct mac_main_cfg_s { copy_ptr short_tti_and_spt_r15; bool mpdcch_ul_harq_ack_feedback_cfg_r15 = false; copy_ptr dormant_state_timers_r15; + // group 9 + bool ce_etws_cmas_rx_in_conn_r16_present = false; + // group 10 + copy_ptr > offset_thres_ta_r17; + copy_ptr > sr_prohibit_timer_offset_r17; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3973,6 +4140,51 @@ struct rlf_timers_and_consts_r9_c { setup_s_ c; }; +// RLF-TimersAndConstantsMCG-Failure-r16 ::= CHOICE +struct rlf_timers_and_consts_mcg_fail_r16_c { + struct setup_s_ { + struct t316_r16_opts { + enum options { ms50, ms100, ms200, ms300, ms400, ms500, ms600, ms1000, ms1500, ms2000, nulltype } value; + typedef uint16_t number_type; + + const char* to_string() const; + uint16_t to_number() const; + }; + typedef enumerated t316_r16_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; @@ -4195,6 +4407,11 @@ struct rr_cfg_ded_s { copy_ptr dummy; // group 7 copy_ptr sps_cfg_v1540; + // group 8 + bool new_ue_id_r16_present = false; + copy_ptr rlf_timers_and_consts_mcg_fail_r16; + copy_ptr > crs_ch_est_mpdcch_cfg_ded_r16; + fixed_bitstring<16> new_ue_id_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -4713,6 +4930,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_ { @@ -5793,6 +6024,11 @@ struct phys_cfg_ded_scell_r10_s { copy_ptr blind_pdsch_repeat_cfg_r15; // group 8 copy_ptr spucch_cfg_v1550; + // group 9 + copy_ptr > srs_ul_cfg_ded_add_r16; + copy_ptr > ul_pwr_ctrl_add_srs_r16; + copy_ptr > srs_virtual_cell_id_r16; + copy_ptr > wideband_prg_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -5850,6 +6086,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; + + // 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 { @@ -5892,6 +6140,8 @@ struct rr_cfg_ded_scell_r10_s { bool crs_intf_mitig_enabled_r15 = false; copy_ptr neigh_cells_crs_info_r15; copy_ptr sps_cfg_v1530; + // group 5 + copy_ptr 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 2d7746f82d..5d4f317eba 100644 --- a/lib/include/srsran/asn1/rrc/security.h +++ b/lib/include/srsran/asn1/rrc/security.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -61,7 +61,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; @@ -69,16 +69,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; }; @@ -95,43 +95,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(); + assert_choice_type(types::intra5_gc, type_, "handoverType-v1530"); + return c.get(); } - 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(); + assert_choice_type(types::fivegc_to_epc, type_, "handoverType-v1530"); + return c.get(); } - 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(); + assert_choice_type(types::epc_to5_gc, type_, "handoverType-v1530"); + return c.get(); } - 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(); + assert_choice_type(types::intra5_gc, type_, "handoverType-v1530"); + return c.get(); } - 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(); + assert_choice_type(types::fivegc_to_epc, type_, "handoverType-v1530"); + return c.get(); } - 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(); + assert_choice_type(types::epc_to5_gc, type_, "handoverType-v1530"); + return c.get(); } - 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 c; + types type_; + choice_buffer_t c; void destroy_(); }; diff --git a/lib/include/srsran/asn1/rrc/si.h b/lib/include/srsran/asn1/rrc/si.h index c2e37b537d..01b116251f 100644 --- a/lib/include/srsran/asn1/rrc/si.h +++ b/lib/include/srsran/asn1/rrc/si.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -47,14 +47,63 @@ struct mib_s { uint8_t to_number() const; }; typedef enumerated 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; + + // 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>& earfcn_lsb() + { + assert_choice_type(types::earfcn_lsb, type_, "partEARFCN-17"); + return c.get >(); + } + const fixed_bitstring<2>& spare() const + { + assert_choice_type(types::spare, type_, "partEARFCN-17"); + return c.get >(); + } + const fixed_bitstring<2>& earfcn_lsb() const + { + assert_choice_type(types::earfcn_lsb, type_, "partEARFCN-17"); + return c.get >(); + } + fixed_bitstring<2>& set_spare(); + fixed_bitstring<2>& set_earfcn_lsb(); + + private: + types type_; + choice_buffer_t > 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; @@ -62,14 +111,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, 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_e_; + typedef enumerated gnss_id_r15_e_; // member variables bool ext = false; @@ -82,6 +134,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 { @@ -102,6 +165,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; + // PosSIB-Type-r15 ::= SEQUENCE struct pos_sib_type_r15_s { struct pos_sib_type_r15_opts { @@ -134,12 +212,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_e_; + typedef enumerated pos_sib_type_r15_e_; // member variables bool ext = false; @@ -157,9 +246,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; + // PosSIB-MappingInfo-r15 ::= SEQUENCE (SIZE (1..32)) OF PosSIB-Type-r15 using pos_sib_map_info_r15_l = dyn_array; +// 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_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 { @@ -199,6 +318,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 { @@ -227,8 +362,9 @@ using pos_sched_info_list_r15_l = dyn_array; // 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; @@ -936,14 +1072,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_e; +typedef enumerated sib_type_e; // SystemInformationBlockType1-v1250-IEs ::= SEQUENCE struct sib_type1_v1250_ies_s { @@ -1204,6 +1342,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_e_; // member variables bool ext = false; @@ -1252,6 +1398,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 8629fb5e5c..32f1b83938 100644 --- a/lib/include/srsran/asn1/rrc/uecap.h +++ b/lib/include/srsran/asn1/rrc/uecap.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -37,6 +37,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; @@ -47,9 +70,10 @@ typedef enumerated 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; @@ -311,6 +335,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; @@ -1529,6 +1561,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; + +// 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; + + // 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; + 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_e; + +// BandCombinationParameters-v1630 ::= SEQUENCE +struct band_combination_params_v1630_s { + using scaling_factor_tx_sidelink_r16_l_ = dyn_array; + using scaling_factor_rx_sidelink_r16_l_ = dyn_array; + + // 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; @@ -2042,6 +2193,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_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_e_; + using mbms_supported_band_info_list_r16_l_ = dyn_array; + + // 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; + + // 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; @@ -2089,7 +2317,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; @@ -2103,7 +2331,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; @@ -2200,6 +2428,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; + + // 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; + using shared_spec_meas_nr_sa_r17_l_ = dyn_array; + + // 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 { @@ -2659,6 +2937,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; @@ -3123,6 +3482,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; + +// SupportedBandCombinationAdd-v1610 ::= SEQUENCE (SIZE (1..256)) OF BandCombinationParameters-v1610 +using supported_band_combination_add_v1610_l = dyn_array; + +// SupportedBandCombinationReduced-v1610 ::= SEQUENCE (SIZE (1..384)) OF BandCombinationParameters-v1610 +using supported_band_combination_reduced_v1610_l = dyn_array; + +// 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; + +// SupportedBandCombinationAdd-v1630 ::= SEQUENCE (SIZE (1..256)) OF BandCombinationParameters-v1630 +using supported_band_combination_add_v1630_l = dyn_array; + +// SupportedBandCombinationReduced-v1630 ::= SEQUENCE (SIZE (1..384)) OF BandCombinationParameters-v1630 +using supported_band_combination_reduced_v1630_l = dyn_array; + +// 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; @@ -3282,24 +3689,75 @@ struct sl_params_v1530_s { 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; +// 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; - // sequence methods + const char* to_string() const; + }; + typedef enumerated 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(); + } + nr_s_& nr() + { + assert_choice_type(types::nr, type_, "V2X-BandParametersEUTRA-NR-r16"); + return c.get(); + } + const eutra_s_& eutra() const + { + assert_choice_type(types::eutra, type_, "V2X-BandParametersEUTRA-NR-r16"); + return c.get(); + } + const nr_s_& nr() const + { + assert_choice_type(types::nr, type_, "V2X-BandParametersEUTRA-NR-r16"); + return c.get(); + } + eutra_s_& set_eutra(); + nr_s_& set_nr(); + +private: + types type_; + choice_buffer_t c; + + void destroy_(); }; -// PhyLayerParameters-v1540 ::= SEQUENCE -struct phy_layer_params_v1540_s { - struct stti_spt_cap_v1540_s_ {}; +// V2X-SupportedBandCombinationEUTRA-NR-r16 ::= SEQUENCE (SIZE (1..512)) OF V2X-BandParametersEUTRA-NR-r16 +using v2x_supported_band_combination_eutra_nr_r16_l = dyn_array; - // member variables - bool stti_spt_cap_v1540_present = false; - bool crs_im_tm1_to_tm9_one_rx_port_v1540_present = false; - bool cch_im_ref_rec_type_a_one_rx_port_v1540_present = false; +// 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; @@ -3307,9 +3765,53 @@ struct phy_layer_params_v1540_s { void to_json(json_writer& j) const; }; -// PhyLayerParameters-v1550 ::= SEQUENCE -struct phy_layer_params_v1550_s { - bool dmrs_overhead_reduction_r15_present = false; +// 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; + + // 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; + using band_list_sidelink_eutra_nr_v1630_l_ = dyn_array; + + // 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; @@ -3317,15 +3819,14 @@ struct phy_layer_params_v1550_s { 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; - bool eutra_epc_ho_eutra_minus5_gc_r15_present = false; - bool ho_eutra_minus5_gc_fdd_tdd_r15_present = false; - bool ho_interfreq_eutra_minus5_gc_r15_present = false; - bool ims_voice_over_mcg_bearer_eutra_minus5_gc_r15_present = false; - bool inactive_state_r15_present = false; - bool reflective_qos_r15_present = false; +// V2X-SupportedBandCombinationEUTRA-NR-v1630 ::= SEQUENCE (SIZE (1..512)) OF +// V2X-BandCombinationParametersEUTRA-NR-v1630 +using v2x_supported_band_combination_eutra_nr_v1630_l = dyn_array; + +// 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; @@ -3333,15 +3834,10 @@ struct eutra_minus5_gc_params_r15_s { 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; - bool phy_layer_params_v1540_present = false; - bool phy_layer_params_v1550_present = false; - phy_layer_params_v1530_s phy_layer_params_v1530; - phy_layer_params_v1540_s phy_layer_params_v1540; - phy_layer_params_v1550_s phy_layer_params_v1550; - neigh_cell_si_acquisition_params_v15a0_s neigh_cell_si_acquisition_params_v15a0; +// 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; @@ -3349,10 +3845,17 @@ struct ue_eutra_cap_add_xdd_mode_v15a0_s { void to_json(json_writer& j) const; }; -// IRAT-ParametersNR-v1570 ::= SEQUENCE -struct irat_params_nr_v1570_s { - bool ss_sinr_meas_nr_fr1_r15_present = false; - bool ss_sinr_meas_nr_fr2_r15_present = false; +// 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-SupportedBandCombinationEUTRA-NR-v1710 ::= SEQUENCE (SIZE (1..512)) OF +// V2X-BandCombinationParametersEUTRA-NR-v1710 +using v2x_supported_band_combination_eutra_nr_v1710_l = dyn_array; + +// 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; @@ -3360,9 +3863,9 @@ struct irat_params_nr_v1570_s { void to_json(json_writer& j) const; }; -// PDCP-ParametersNR-v1560 ::= SEQUENCE -struct pdcp_params_nr_v1560_s { - bool ims_vo_nr_pdcp_scg_ngendc_r15_present = false; +// 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; @@ -3370,17 +3873,641 @@ struct pdcp_params_nr_v1560_s { void to_json(json_writer& j) const; }; -// RF-Parameters-v1570 ::= SEQUENCE -struct rf_params_v1570_s { - struct dl_minus1024_qam_scaling_factor_r15_opts { - enum options { v1, v1dot2, v1dot25, nulltype } value; - typedef float number_type; +// 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; - float to_number() const; - const char* to_number_string() const; }; - typedef enumerated dl_minus1024_qam_scaling_factor_r15_e_; + typedef enumerated 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_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; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + 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_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_ {}; + + // member variables + bool stti_spt_cap_v1540_present = false; + bool crs_im_tm1_to_tm9_one_rx_port_v1540_present = false; + bool cch_im_ref_rec_type_a_one_rx_port_v1540_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-v1550 ::= SEQUENCE +struct phy_layer_params_v1550_s { + bool dmrs_overhead_reduction_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; +}; + +// 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; + bool eutra_epc_ho_eutra_minus5_gc_r15_present = false; + bool ho_eutra_minus5_gc_fdd_tdd_r15_present = false; + bool ho_interfreq_eutra_minus5_gc_r15_present = false; + bool ims_voice_over_mcg_bearer_eutra_minus5_gc_r15_present = false; + bool inactive_state_r15_present = false; + bool reflective_qos_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; +}; + +// 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; + bool phy_layer_params_v1540_present = false; + bool phy_layer_params_v1550_present = false; + phy_layer_params_v1530_s phy_layer_params_v1530; + phy_layer_params_v1540_s phy_layer_params_v1540; + phy_layer_params_v1550_s phy_layer_params_v1550; + neigh_cell_si_acquisition_params_v15a0_s neigh_cell_si_acquisition_params_v15a0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// IRAT-ParametersNR-v1570 ::= SEQUENCE +struct irat_params_nr_v1570_s { + bool ss_sinr_meas_nr_fr1_r15_present = false; + bool ss_sinr_meas_nr_fr2_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; +}; + +// PDCP-ParametersNR-v1560 ::= SEQUENCE +struct pdcp_params_nr_v1560_s { + bool ims_vo_nr_pdcp_scg_ngendc_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; +}; + +// RF-Parameters-v1570 ::= SEQUENCE +struct rf_params_v1570_s { + struct dl_minus1024_qam_scaling_factor_r15_opts { + enum options { v1, v1dot2, v1dot25, nulltype } value; + typedef float number_type; + + const char* to_string() const; + float to_number() const; + const char* to_number_string() const; + }; + typedef enumerated dl_minus1024_qam_scaling_factor_r15_e_; // member variables dl_minus1024_qam_scaling_factor_r15_e_ dl_minus1024_qam_scaling_factor_r15; @@ -3402,6 +4529,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; @@ -4361,7 +5489,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; @@ -5082,13 +6210,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_e; +typedef enumerated access_stratum_release_e; // PhyLayerParameters ::= SEQUENCE struct phy_layer_params_s { @@ -5160,6 +6288,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; @@ -5172,9 +6349,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 da92b54610..9f3e54b330 100644 --- a/lib/include/srsran/asn1/rrc/ul_ccch_msg.h +++ b/lib/include/srsran/asn1/rrc/ul_ccch_msg.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -37,6 +37,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_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 { @@ -55,8 +74,8 @@ struct establishment_cause_opts { }; typedef enumerated 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, @@ -71,7 +90,7 @@ struct establishment_cause_minus5_gc_opts { const char* to_string() const; }; -typedef enumerated establishment_cause_minus5_gc_e; +typedef enumerated establishment_cause_minus5_gc_r15_e; // InitialUE-Identity ::= CHOICE struct init_ue_id_c { @@ -123,8 +142,8 @@ struct init_ue_id_c { 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; @@ -135,10 +154,10 @@ struct init_ue_id_minus5_gc_c { typedef enumerated 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; @@ -147,22 +166,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>& 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 >(); } 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 >(); } 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>& set_ng_minus5_g_s_tmsi_part1(); @@ -177,9 +196,10 @@ struct init_ue_id_minus5_gc_c { // 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; @@ -217,7 +237,7 @@ struct resume_cause_opts { mo_data, delay_tolerant_access_v1020, mo_voice_call_v1280, - spare1, + mt_edt_v1610, nulltype } value; @@ -257,9 +277,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; @@ -405,6 +425,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_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 { @@ -595,6 +638,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; + + // 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; @@ -604,6 +682,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; @@ -613,19 +694,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(); + } + crit_exts_future_c_& crit_exts_future() + { + assert_choice_type(types::crit_exts_future, type_, "criticalExtensions"); + return c.get(); } 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(); + } + const crit_exts_future_c_& crit_exts_future() const + { + assert_choice_type(types::crit_exts_future, type_, "criticalExtensions"); + return c.get(); } 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 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 5395d42cc1..bd2453677a 100644 --- a/lib/include/srsran/asn1/rrc/ul_dcch_msg.h +++ b/lib/include/srsran/asn1/rrc/ul_dcch_msg.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -101,6 +101,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_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; + // MeasResultIdleEUTRA-r15 ::= SEQUENCE struct meas_result_idle_eutra_r15_s { struct meas_result_r15_s_ { @@ -121,6 +212,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 { @@ -131,10 +257,11 @@ struct rrc_conn_setup_complete_v1540_ies_s { typedef enumerated 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; @@ -207,6 +334,35 @@ struct s_nssai_r15_c { // MeasResultIdleListEUTRA-r15 ::= SEQUENCE (SIZE (1..8)) OF MeasResultIdleEUTRA-r15 using meas_result_idle_list_eutra_r15_l = dyn_array; +// MeasResultIdleNR-r16 ::= SEQUENCE +struct meas_result_idle_nr_r16_s { + using meas_results_per_cell_list_idle_nr_r16_l_ = dyn_array; + + // 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; @@ -326,6 +482,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; + +// MeasResultListIdleNR-r16 ::= SEQUENCE (SIZE (1..8)) OF MeasResultIdleNR-r16 +using meas_result_list_idle_nr_r16_l = dyn_array; + +// 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 { @@ -345,12 +517,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; @@ -371,6 +567,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; @@ -498,7 +706,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 @@ -528,10 +736,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; @@ -551,17 +760,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; +// 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; + using affected_carrier_freq_comb_info_list_mrdc_r15_l_ = dyn_array; + using affected_carrier_freq_comb_info_list_mrdc_v1610_l_ = dyn_array; // 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; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -572,6 +835,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; @@ -631,6 +904,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_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; @@ -638,6 +933,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; @@ -676,6 +972,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; @@ -703,6 +1002,11 @@ struct conn_est_fail_report_r11_s { // group 2 copy_ptr log_meas_result_list_bt_r15; copy_ptr log_meas_result_list_wlan_r15; + // group 3 + copy_ptr meas_result_list_nr_r16; + // group 4 + copy_ptr meas_result_list_nr_v1640; + copy_ptr meas_result_list_ext_nr_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -724,9 +1028,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_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_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; @@ -799,6 +1135,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; +// 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; @@ -988,12 +1337,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; + + // 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 @@ -1049,6 +1415,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; @@ -1236,9 +1614,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; @@ -1314,6 +1693,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; @@ -1470,9 +1862,10 @@ struct mbms_interest_ind_v1540_ies_s { using mbms_rom_info_list_r15_l_ = dyn_array; // 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; @@ -1483,6 +1876,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; +// MeasResultList3EUTRA-r15 ::= SEQUENCE (SIZE (1..8)) OF MeasResult3EUTRA-r15 +using meas_result_list3_eutra_r15_l = dyn_array; + // RRCConnectionReconfigurationComplete-v1020-IEs ::= SEQUENCE struct rrc_conn_recfg_complete_v1020_ies_s { bool rlf_info_available_r10_present = false; @@ -1509,6 +1905,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 { @@ -1953,6 +2368,71 @@ using count_resp_list_r10_l = dyn_array; // DRB-CountInfoList ::= SEQUENCE (SIZE (0..11)) OF DRB-CountInfo using drb_count_info_list_l = dyn_array; +// 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_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_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 { @@ -1963,6 +2443,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; @@ -1971,6 +2452,24 @@ struct fail_report_scg_nr_r15_s { uint16_t to_number() const; }; typedef enumerated 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_e_; // member variables bool ext = false; @@ -1980,6 +2479,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_r16; + copy_ptr log_meas_result_list_bt_r16; + copy_ptr log_meas_result_list_wlan_r16; + fail_type_v1610_e_ fail_type_v1610; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2074,6 +2579,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_ { @@ -2280,6 +2796,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; + + // 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(); + } + pci_arfcn_s_& pci_arfcn() + { + assert_choice_type(types::pci_arfcn, type_, "failedNR-PCellId-r16"); + return c.get(); + } + 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(); + } + const pci_arfcn_s_& pci_arfcn() const + { + assert_choice_type(types::pci_arfcn, type_, "failedNR-PCellId-r16"); + return c.get(); + } + cell_global_id_nr_r16_s& set_cell_global_id(); + pci_arfcn_s_& set_pci_arfcn(); + + private: + types type_; + choice_buffer_t 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; + + // 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(); + } + eutra_reconnect_cell_id_s_& eutra_reconnect_cell_id() + { + assert_choice_type(types::eutra_reconnect_cell_id, type_, "reconnectCellId-r16"); + return c.get(); + } + 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(); + } + 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(); + } + 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 c; + + void destroy_(); + }; + struct meas_result_list_nr_v1640_s_ { + uint32_t carrier_freq_nr_r16 = 0; + }; // member variables bool ext = false; @@ -2316,6 +2942,16 @@ struct rlf_report_r9_s { // group 6 copy_ptr log_meas_result_list_bt_r15; copy_ptr log_meas_result_list_wlan_r15; + // group 7 + bool time_until_reconn_r16_present = false; + copy_ptr meas_result_list_nr_r16; + copy_ptr prev_nr_pcell_id_r16; + copy_ptr failed_nr_pcell_id_r16; + copy_ptr reconnect_cell_id_r16; + uint32_t time_until_reconn_r16 = 0; + // group 8 + copy_ptr meas_result_list_nr_v1640; + copy_ptr meas_result_list_ext_nr_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2350,11 +2986,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; @@ -2698,6 +3335,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_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; @@ -2798,6 +3457,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 { @@ -2821,6 +3494,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_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_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; + + // 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 { @@ -3055,16 +3868,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; @@ -3074,14 +3881,113 @@ struct ue_info_resp_r9_ies_s { void to_json(json_writer& j) const; }; -// ULHandoverPreparationTransfer-r8-IEs ::= SEQUENCE -struct ul_ho_prep_transfer_r8_ies_s { - bool meid_present = false; - bool non_crit_ext_present = false; - cdma2000_type_e cdma2000_type; - fixed_bitstring<56> meid; - dyn_octstring ded_info; - ul_ho_prep_transfer_v8a0_ies_s non_crit_ext; +// 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_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; + bool non_crit_ext_present = false; + cdma2000_type_e cdma2000_type; + fixed_bitstring<56> meid; + dyn_octstring ded_info; + ul_ho_prep_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-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; + + // 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& ded_info_cdma2000_minus1_xrtt_r16() + { + assert_choice_type(types::ded_info_cdma2000_minus1_xrtt_r16, type_, "dedicatedInfoType-r16"); + return c.get(); + } + dyn_octstring& ded_info_cdma2000_hrpd_r16() + { + assert_choice_type(types::ded_info_cdma2000_hrpd_r16, type_, "dedicatedInfoType-r16"); + return c.get(); + } + const dyn_octstring& ded_info_nas_r16() const + { + assert_choice_type(types::ded_info_nas_r16, type_, "dedicatedInfoType-r16"); + return c.get(); + } + 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(); + } + 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& 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 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; @@ -3162,6 +4068,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; @@ -3294,6 +4214,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; + + // 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_ { @@ -3594,6 +4559,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; + + // 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_ { @@ -3639,6 +4649,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; + + // 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_ { @@ -4380,6 +5435,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; + + // 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_ { @@ -4460,7 +5560,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; }; @@ -4468,6 +5568,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; @@ -4477,21 +5580,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_r16_ies_s& ul_info_transfer_r16() + { + assert_choice_type(types::ul_info_transfer_r16, type_, "c1"); + return c.get(); } 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(); + } + 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_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 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; + + // 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; @@ -4935,11 +6125,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; @@ -5013,6 +6203,31 @@ struct ul_dcch_msg_type_c { assert_choice_type(types::fail_info_r15, type_, "c2"); return c.get(); } + 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(); + } + pur_cfg_request_r16_s& pur_cfg_request_r16() + { + assert_choice_type(types::pur_cfg_request_r16, type_, "c2"); + return c.get(); + } + fail_info_r16_s& fail_info_r16() + { + assert_choice_type(types::fail_info_r16, type_, "c2"); + return c.get(); + } + mcg_fail_info_r16_s& mcg_fail_info_r16() + { + assert_choice_type(types::mcg_fail_info_r16, type_, "c2"); + return c.get(); + } + 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(); + } const ueassist_info_r11_s& ue_assist_info_r11() const { assert_choice_type(types::ue_assist_info_r11, type_, "c2"); @@ -5068,6 +6283,31 @@ struct ul_dcch_msg_type_c { assert_choice_type(types::fail_info_r15, type_, "c2"); return c.get(); } + 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(); + } + const pur_cfg_request_r16_s& pur_cfg_request_r16() const + { + assert_choice_type(types::pur_cfg_request_r16, type_, "c2"); + return c.get(); + } + const fail_info_r16_s& fail_info_r16() const + { + assert_choice_type(types::fail_info_r16, type_, "c2"); + return c.get(); + } + const mcg_fail_info_r16_s& mcg_fail_info_r16() const + { + assert_choice_type(types::mcg_fail_info_r16, type_, "c2"); + return c.get(); + } + 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(); + } 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(); @@ -5079,23 +6319,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 c; diff --git a/lib/include/srsran/asn1/rrc_nbiot.h b/lib/include/srsran/asn1/rrc_nbiot.h index dc88de6459..3df29d957b 100644 --- a/lib/include/srsran/asn1/rrc_nbiot.h +++ b/lib/include/srsran/asn1/rrc_nbiot.h @@ -21,7 +21,7 @@ /******************************************************************************* * - * 3GPP TS ASN1 RRC v15.11.0 (2020-09) + * 3GPP TS ASN1 RRC v17.4.0 (2023-03) * ******************************************************************************/ @@ -69,33 +69,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; - 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-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_e; // CarrierFreq-NB-r13 ::= SEQUENCE struct carrier_freq_nb_r13_s { @@ -143,6 +148,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; + + // 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_e; + // CarrierFreq-NB-v1550 ::= SEQUENCE struct carrier_freq_nb_v1550_s { struct carrier_freq_offset_v1550_opts { @@ -514,6 +602,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_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_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_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 { @@ -582,6 +722,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; @@ -641,6 +783,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; + + // 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_ { @@ -716,6 +868,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_e; + // UL-CarrierConfigDedicated-NB-r13 ::= SEQUENCE struct ul_carrier_cfg_ded_nb_r13_s { bool ext = false; @@ -760,6 +922,11 @@ struct drb_to_add_mod_nb_r13_s { // ... // group 0 copy_ptr rlc_cfg_v1430; + // group 1 + bool pdu_session_r16_present = false; + uint16_t pdu_session_r16 = 0; + // group 2 + copy_ptr rlc_cfg_v1700; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -980,6 +1147,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_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; @@ -994,106 +1182,432 @@ struct npusch_cfg_ded_nb_r13_s { void to_json(json_writer& j) const; }; -// PeriodicBSR-Timer-NB-r13 ::= ENUMERATED -struct periodic_bsr_timer_nb_r13_opts { - enum options { pp2, pp4, pp8, pp16, pp64, pp128, infinity, spare, nulltype } value; - typedef int16_t number_type; +// 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; - int16_t to_number() const; -}; -typedef enumerated periodic_bsr_timer_nb_r13_e; + const char* to_string() const; + }; + typedef enumerated npusch_multi_tb_cfg_r16_e_; -// RetxBSR-Timer-NB-r13 ::= ENUMERATED -struct retx_bsr_timer_nb_r13_opts { - enum options { pp4, pp16, pp64, pp128, pp256, pp512, infinity, spare, nulltype } value; - typedef int16_t number_type; + // member variables + npusch_multi_tb_cfg_r16_e_ npusch_multi_tb_cfg_r16; - const char* to_string() const; - int16_t to_number() const; + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; }; -typedef enumerated retx_bsr_timer_nb_r13_e; - -// SR-SPS-BSR-Config-NB-r15 ::= CHOICE -struct sr_sps_bsr_cfg_nb_r15_c { - struct setup_s_ { - struct semi_persist_sched_interv_ul_r15_opts { - enum options { sf128, sf256, sf512, sf1024, sf1280, sf2048, sf2560, sf5120, nulltype } value; - typedef uint16_t number_type; - - const char* to_string() const; - uint16_t to_number() const; - }; - typedef enumerated semi_persist_sched_interv_ul_r15_e_; - // member variables - fixed_bitstring<16> semi_persist_sched_c_rnti_r15; - semi_persist_sched_interv_ul_r15_e_ semi_persist_sched_interv_ul_r15; - }; - using types = setup_e; +// NPUSCH-ConfigDedicated-NB-v1700 ::= SEQUENCE +struct npusch_cfg_ded_nb_v1700_s { + bool npusch_minus16_qam_cfg_r17_present = false; - // choice methods - sr_sps_bsr_cfg_nb_r15_c() = default; - void set(types::options e = types::nulltype); - types type() const { return type_; } + // sequence methods 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_, "SR-SPS-BSR-Config-NB-r15"); - return c; - } - const setup_s_& setup() const - { - assert_choice_type(types::setup, type_, "SR-SPS-BSR-Config-NB-r15"); - return c; - } - void set_release(); - setup_s_& set_setup(); - -private: - types type_; - setup_s_ c; }; -// SR-WithoutHARQ-ACK-Config-NB-r15 ::= CHOICE -struct sr_without_harq_ack_cfg_nb_r15_c { - struct setup_s_ { - bool sr_prohibit_timer_r15_present = false; - bool sr_nprach_res_r15_present = false; - uint8_t sr_prohibit_timer_r15 = 0; - sr_nprach_res_nb_r15_s sr_nprach_res_r15; +// 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; }; - using types = setup_e; + typedef enumerated npusch_tx_dur_r17_e_; - // choice methods - sr_without_harq_ack_cfg_nb_r15_c() = default; - void set(types::options e = types::nulltype); - types type() const { return type_; } + // 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; - // getters - setup_s_& setup() - { - assert_choice_type(types::setup, type_, "SR-WithoutHARQ-ACK-Config-NB-r15"); - return c; - } - const setup_s_& setup() const - { - assert_choice_type(types::setup, type_, "SR-WithoutHARQ-ACK-Config-NB-r15"); - return c; - } - void set_release(); - setup_s_& set_setup(); +}; -private: - types type_; +// 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_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; + typedef int16_t number_type; + + const char* to_string() const; + int16_t to_number() const; +}; +typedef enumerated 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_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; + + // 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<40>& sf_pattern40ms() + { + assert_choice_type(types::sf_pattern40ms, type_, "subframeBitmap-r16"); + return c.get >(); + } + const fixed_bitstring<10>& sf_pattern10ms() const + { + assert_choice_type(types::sf_pattern10ms, type_, "subframeBitmap-r16"); + return c.get >(); + } + const fixed_bitstring<40>& sf_pattern40ms() const + { + assert_choice_type(types::sf_pattern40ms, type_, "subframeBitmap-r16"); + return c.get >(); + } + fixed_bitstring<10>& set_sf_pattern10ms(); + fixed_bitstring<40>& set_sf_pattern40ms(); + + private: + types type_; + choice_buffer_t > 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; + + // 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<80>& slot_pattern40ms() + { + assert_choice_type(types::slot_pattern40ms, type_, "slotBitmap-r16"); + return c.get >(); + } + const fixed_bitstring<20>& slot_pattern10ms() const + { + assert_choice_type(types::slot_pattern10ms, type_, "slotBitmap-r16"); + return c.get >(); + } + const fixed_bitstring<80>& slot_pattern40ms() const + { + assert_choice_type(types::slot_pattern40ms, type_, "slotBitmap-r16"); + return c.get >(); + } + fixed_bitstring<20>& set_slot_pattern10ms(); + fixed_bitstring<80>& set_slot_pattern40ms(); + + private: + types type_; + choice_buffer_t > 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; + + // 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_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(); + } + 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(); + } + 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_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 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; + + // 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(); + } + slot_cfg_r16_s_& slot_cfg_r16() + { + assert_choice_type(types::slot_cfg_r16, type_, "resourceReservation-r16"); + return c.get(); + } + const sf_bitmap_r16_c_& sf_bitmap_r16() const + { + assert_choice_type(types::sf_bitmap_r16, type_, "resourceReservation-r16"); + return c.get(); + } + const slot_cfg_r16_s_& slot_cfg_r16() const + { + assert_choice_type(types::slot_cfg_r16, type_, "resourceReservation-r16"); + return c.get(); + } + sf_bitmap_r16_c_& set_sf_bitmap_r16(); + slot_cfg_r16_s_& set_slot_cfg_r16(); + + private: + types type_; + choice_buffer_t 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; + typedef int16_t number_type; + + const char* to_string() const; + int16_t to_number() const; +}; +typedef enumerated retx_bsr_timer_nb_r13_e; + +// SR-SPS-BSR-Config-NB-r15 ::= CHOICE +struct sr_sps_bsr_cfg_nb_r15_c { + struct setup_s_ { + struct semi_persist_sched_interv_ul_r15_opts { + enum options { sf128, sf256, sf512, sf1024, sf1280, sf2048, sf2560, sf5120, nulltype } value; + typedef uint16_t number_type; + + const char* to_string() const; + uint16_t to_number() const; + }; + typedef enumerated semi_persist_sched_interv_ul_r15_e_; + + // member variables + fixed_bitstring<16> semi_persist_sched_c_rnti_r15; + semi_persist_sched_interv_ul_r15_e_ semi_persist_sched_interv_ul_r15; + }; + using types = setup_e; + + // choice methods + sr_sps_bsr_cfg_nb_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_, "SR-SPS-BSR-Config-NB-r15"); + return c; + } + const setup_s_& setup() const + { + assert_choice_type(types::setup, type_, "SR-SPS-BSR-Config-NB-r15"); + return c; + } + void set_release(); + setup_s_& set_setup(); + +private: + types type_; + setup_s_ c; +}; + +// SR-WithoutHARQ-ACK-Config-NB-r15 ::= CHOICE +struct sr_without_harq_ack_cfg_nb_r15_c { + struct setup_s_ { + bool sr_prohibit_timer_r15_present = false; + bool sr_nprach_res_r15_present = false; + uint8_t sr_prohibit_timer_r15 = 0; + sr_nprach_res_nb_r15_s sr_nprach_res_r15; + }; + using types = setup_e; + + // choice methods + sr_without_harq_ack_cfg_nb_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_, "SR-WithoutHARQ-ACK-Config-NB-r15"); + return c; + } + const setup_s_& setup() const + { + assert_choice_type(types::setup, type_, "SR-WithoutHARQ-ACK-Config-NB-r15"); + return c; + } + void set_release(); + setup_s_& set_setup(); + +private: + types type_; 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_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_ { @@ -1172,6 +1686,8 @@ struct srb_to_add_mod_nb_r13_s { // ... // group 0 copy_ptr rlc_cfg_v1430; + // group 1 + copy_ptr rlc_cfg_v1700; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1189,6 +1705,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_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; @@ -1301,6 +1837,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 > offset_thres_ta_r17; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1310,6 +1848,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_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_e_; + + // member variables bool ext = false; bool carrier_cfg_ded_r13_present = false; bool npdcch_cfg_ded_r13_present = false; @@ -1328,6 +1877,20 @@ struct phys_cfg_ded_nb_r13_s { copy_ptr npdcch_cfg_ded_v1530; // group 3 bool add_tx_sib1_cfg_v1540_present = false; + // group 4 + copy_ptr npusch_cfg_ded_v1610; + copy_ptr npdsch_cfg_ded_r16; + copy_ptr > res_reserv_cfg_dl_r16; + copy_ptr > res_reserv_cfg_ul_r16; + // group 5 + copy_ptr ntn_cfg_ded_r17; + copy_ptr npdsch_cfg_ded_v1700; + copy_ptr 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_v1740; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1465,6 +2028,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_v1700; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1525,6 +2090,9 @@ struct rr_cfg_ded_nb_r13_s { // ... // group 0 copy_ptr 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; @@ -1718,6 +2286,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; + + // 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>& earfcn_lsb() + { + assert_choice_type(types::earfcn_lsb, type_, "partEARFCN-17"); + return c.get >(); + } + const fixed_bitstring<2>& spare() const + { + assert_choice_type(types::spare, type_, "partEARFCN-17"); + return c.get >(); + } + const fixed_bitstring<2>& earfcn_lsb() const + { + assert_choice_type(types::earfcn_lsb, type_, "partEARFCN-17"); + return c.get >(); + } + fixed_bitstring<2>& set_spare(); + fixed_bitstring<2>& set_earfcn_lsb(); + + private: + types type_; + choice_buffer_t > c; + + void destroy_(); + }; // member variables fixed_bitstring<4> sys_frame_num_msb_r13; @@ -1726,8 +2342,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; @@ -2068,7 +2686,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; @@ -2089,6 +2708,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, 12>; + // NS-PmaxValue-NB-r13 ::= SEQUENCE struct ns_pmax_value_nb_r13_s { bool add_pmax_r13_present = false; @@ -2101,9 +2723,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; @@ -2111,6 +2754,16 @@ struct sib_type_nb_v1530_opts { }; typedef enumerated 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_e; + // NS-PmaxList-NB-r13 ::= SEQUENCE (SIZE (1..4)) OF NS-PmaxValue-NB-r13 using ns_pmax_list_nb_r13_l = dyn_array; @@ -2144,6 +2797,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; + + // 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(); + } + uint8_t& plmn_idx_r16() + { + assert_choice_type(types::plmn_idx_r16, type_, "plmn-Identity-5GC-r16"); + return c.get(); + } + const plmn_id_s& plmn_id_r16() const + { + assert_choice_type(types::plmn_id_r16, type_, "plmn-Identity-5GC-r16"); + return c.get(); + } + const uint8_t& plmn_idx_r16() const + { + assert_choice_type(types::plmn_idx_r16, type_, "plmn-Identity-5GC-r16"); + return c.get(); + } + plmn_id_s& set_plmn_id_r16(); + uint8_t& set_plmn_idx_r16(); + + private: + types type_; + choice_buffer_t 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_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; + // SIB-MappingInfo-NB-v1530 ::= SEQUENCE (SIZE (1..8)) OF SIB-Type-NB-v1530 using sib_map_info_nb_v1530_l = bounded_array; @@ -2168,6 +2893,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; + +// GWUS-NumGroupsList-NB-r16 ::= SEQUENCE (SIZE (1..2)) OF GWUS-NumGroups-NB-r16 +using gwus_num_groups_list_nb_r16_l = bounded_array; + +// 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_e; + // InterFreqNeighCellInfo-NB-v1530 ::= SEQUENCE struct inter_freq_neigh_cell_info_nb_v1530_s { bool nsss_rrm_cfg_r15_present = false; @@ -2792,6 +3533,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; + // 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; @@ -2862,6 +3606,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_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_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_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; @@ -3055,8 +3857,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; -// InterFreqBlackCellList-NB-r13 ::= SEQUENCE (SIZE (1..16)) OF INTEGER (0..503) -using inter_freq_black_cell_list_nb_r13_l = bounded_array; +// 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-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_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; // InterFreqNeighCellList-NB-r13 ::= SEQUENCE (SIZE (1..16)) OF INTEGER (0..503) using inter_freq_neigh_cell_list_nb_r13_l = bounded_array; @@ -3128,6 +3955,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_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 { @@ -3225,6 +4077,36 @@ using rsrp_thress_nprach_info_list_nb_r13_l = bounded_array; // SchedulingInfoList-NB-v1530 ::= SEQUENCE (SIZE (1..8)) OF SchedulingInfo-NB-v1530 using sched_info_list_nb_v1530_l = dyn_array; +// 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_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 { @@ -3266,6 +4148,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; + // UL-ReferenceSignalsNPUSCH-NB-r13 ::= SEQUENCE struct ul_ref_sigs_npusch_nb_r13_s { bool group_hop_enabled_r13 = false; @@ -3277,6 +4162,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_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_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_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_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_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; @@ -3307,15 +4253,50 @@ struct bcch_cfg_nb_r13_s { void to_json(json_writer& j) const; }; -// DL-ConfigCommon-NB-r14 ::= SEQUENCE -struct dl_cfg_common_nb_r14_s { - bool ext = false; - bool pcch_cfg_r14_present = false; - dl_carrier_cfg_common_nb_r14_s dl_carrier_cfg_r14; - pcch_cfg_nb_r14_s pcch_cfg_r14; - // ... - // group 0 - copy_ptr wus_cfg_r15; +// 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_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_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; @@ -3323,16 +4304,97 @@ struct dl_cfg_common_nb_r14_s { void to_json(json_writer& j) const; }; -// InterFreqCarrierFreqInfo-NB-r13 ::= SEQUENCE -struct inter_freq_carrier_freq_info_nb_r13_s { - struct pwr_class14dbm_offset_r14_opts { - enum options { db_minus6, db_minus3, db3, db6, db9, db12, nulltype } value; - typedef int8_t number_type; +// 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; + // ... - const char* to_string() const; - int8_t to_number() const; - }; - typedef enumerated pwr_class14dbm_offset_r14_e_; + // 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; + bool pcch_cfg_r14_present = false; + dl_carrier_cfg_common_nb_r14_s dl_carrier_cfg_r14; + pcch_cfg_nb_r14_s pcch_cfg_r14; + // ... + // group 0 + copy_ptr wus_cfg_r15; + // group 1 + copy_ptr gwus_cfg_r16; + // group 2 + copy_ptr 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_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; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// InterFreqCarrierFreqInfo-NB-r13 ::= SEQUENCE +struct inter_freq_carrier_freq_info_nb_r13_s { + struct pwr_class14dbm_offset_r14_opts { + enum options { db_minus6, db_minus3, db3, db6, db9, db12, nulltype } value; + typedef int8_t number_type; + + const char* to_string() const; + int8_t to_number() const; + }; + typedef enumerated pwr_class14dbm_offset_r14_e_; struct ce_authorisation_offset_r14_opts { enum options { db5, db10, db15, db20, db25, db30, db35, nulltype } value; typedef uint8_t number_type; @@ -3343,21 +4405,21 @@ struct inter_freq_carrier_freq_info_nb_r13_s { typedef enumerated 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; @@ -3572,6 +4634,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_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_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; @@ -3764,6 +4866,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; @@ -3780,6 +4897,8 @@ struct ul_cfg_common_nb_r14_s { // ... // group 0 copy_ptr nprach_params_list_edt_r15; + // group 1 + copy_ptr rsrp_thress_prach_info_list_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3839,66 +4958,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_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_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_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_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_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; - // ... +// CarrierFreqListEUTRA-NB-r16 ::= SEQUENCE (SIZE (1..8)) OF CarrierFreqEUTRA-NB-r16 +using carrier_freq_list_eutra_nb_r16_l = dyn_array; - // 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; // CellReselectionInfoCommon-NB-v1450 ::= SEQUENCE struct cell_resel_info_common_nb_v1450_s { @@ -3951,6 +5015,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_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_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_e_; + using cbp_cfg_list_r17_l_ = dyn_array; + + // 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; @@ -4069,6 +5193,36 @@ using nprach_probability_anchor_list_nb_r14_l = dyn_array 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_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; @@ -4090,6 +5244,13 @@ struct rr_cfg_common_sib_nb_r13_s { copy_ptr wus_cfg_r15; // group 3 copy_ptr 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_r16; + ue_specific_drx_cycle_min_r16_e_ ue_specific_drx_cycle_min_r16; + // group 5 + copy_ptr ntn_cfg_common_r17; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -4406,6 +5567,57 @@ struct t_resel_nb_r13_opts { }; typedef enumerated 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; + struct types_opts { + enum options { uac_barr_common, uac_barr_per_plmn_list, nulltype } value; + + const char* to_string() const; + }; + typedef enumerated 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_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(); + } + 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(); + } + 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_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 c; + + void destroy_(); +}; + // UE-TimersAndConstants-NB-r13 ::= SEQUENCE struct ue_timers_and_consts_nb_r13_s { struct t300_r13_opts { @@ -4686,6 +5898,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_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -4743,6 +5957,15 @@ struct sib_type2_nb_r13_s { bool cp_edt_r15_present = false; bool up_edt_r15_present = false; copy_ptr 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; @@ -4881,6 +6104,8 @@ struct sib_type22_nb_r14_s { // group 0 copy_ptr mixed_operation_mode_cfg_r15; copy_ptr ul_cfg_list_r15; + // group 1 + copy_ptr coverage_based_paging_cfg_r17; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -4905,6 +6130,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_ { @@ -4975,6 +6217,10 @@ struct sib_type3_nb_r13_s { // group 4 bool npbch_rrm_cfg_r15_present = false; copy_ptr nsss_rrm_cfg_r15; + // group 5 + bool t_service_r17_present = false; + copy_ptr conn_meas_cfg_r17; + uint32_t t_service_r17 = 0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -4982,19 +6228,13 @@ struct sib_type3_nb_r13_s { void to_json(json_writer& j) const; }; -// 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; +// 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; // ... - // group 0 - copy_ptr nsss_rrm_cfg_r15; - copy_ptr intra_freq_neigh_cell_list_v1530; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -5002,11 +6242,46 @@ struct sib_type4_nb_r13_s { void to_json(json_writer& j) const; }; -// SystemInformationBlockType5-NB-r13 ::= SEQUENCE -struct sib_type5_nb_r13_s { - bool ext = false; - bool late_non_crit_ext_present = false; - inter_freq_carrier_freq_list_nb_r13_l inter_freq_carrier_freq_list_r13; +// 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; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// 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_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_r15; + copy_ptr intra_freq_neigh_cell_list_v1530; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// SystemInformationBlockType5-NB-r13 ::= SEQUENCE +struct sib_type5_nb_r13_s { + bool ext = false; + bool late_non_crit_ext_present = false; + inter_freq_carrier_freq_list_nb_r13_l inter_freq_carrier_freq_list_r13; t_resel_nb_r13_e t_resel_r13; dyn_octstring late_non_crit_ext; // ... @@ -5045,6 +6320,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; @@ -5052,7 +6330,7 @@ struct sys_info_nb_r13_ies_s { const char* to_string() const; uint8_t to_number() const; }; - typedef enumerated types; + typedef enumerated types; // choice methods sib_type_and_info_r13_item_c_() = default; @@ -5115,6 +6393,21 @@ struct sys_info_nb_r13_ies_s { assert_choice_type(types::sib23_v1530, type_, "sib-TypeAndInfo-r13-item"); return c.get(); } + sib_type27_nb_r16_s& sib27_v1610() + { + assert_choice_type(types::sib27_v1610, type_, "sib-TypeAndInfo-r13-item"); + return c.get(); + } + sib_type31_nb_r17_s& sib31_v1700() + { + assert_choice_type(types::sib31_v1700, type_, "sib-TypeAndInfo-r13-item"); + return c.get(); + } + sib_type32_nb_r17_s& sib32_v1700() + { + assert_choice_type(types::sib32_v1700, type_, "sib-TypeAndInfo-r13-item"); + return c.get(); + } const sib_type2_nb_r13_s& sib2_r13() const { assert_choice_type(types::sib2_r13, type_, "sib-TypeAndInfo-r13-item"); @@ -5165,6 +6458,21 @@ struct sys_info_nb_r13_ies_s { assert_choice_type(types::sib23_v1530, type_, "sib-TypeAndInfo-r13-item"); return c.get(); } + const sib_type27_nb_r16_s& sib27_v1610() const + { + assert_choice_type(types::sib27_v1610, type_, "sib-TypeAndInfo-r13-item"); + return c.get(); + } + const sib_type31_nb_r17_s& sib31_v1700() const + { + assert_choice_type(types::sib31_v1700, type_, "sib-TypeAndInfo-r13-item"); + return c.get(); + } + const sib_type32_nb_r17_s& sib32_v1700() const + { + assert_choice_type(types::sib32_v1700, type_, "sib-TypeAndInfo-r13-item"); + return c.get(); + } sib_type2_nb_r13_s& set_sib2_r13(); sib_type3_nb_r13_s& set_sib3_r13(); sib_type4_nb_r13_s& set_sib4_r13(); @@ -5175,6 +6483,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_; @@ -5184,7 +6495,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> @@ -5466,6 +6780,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; @@ -5478,11 +6804,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; @@ -5571,10 +6910,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; @@ -6013,76 +7353,39 @@ struct dl_ccch_msg_nb_s { 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; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - -// RedirectedCarrierInfo-NB-v1550 ::= CarrierFreq-NB-v1550 -using redirected_carrier_info_nb_v1550_s = carrier_freq_nb_v1550_s; - -// RRCConnectionRelease-NB-v1550-IEs ::= SEQUENCE -struct rrc_conn_release_nb_v1550_ies_s { - bool redirected_carrier_info_v1550_present = false; - bool non_crit_ext_present = false; - redirected_carrier_info_nb_v1550_s redirected_carrier_info_v1550; - rrc_conn_release_nb_v15b0_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-v1530-IEs ::= SEQUENCE -struct rrc_conn_release_nb_v1530_ies_s { - bool drb_continue_rohc_r15_present = false; - bool next_hop_chaining_count_r15_present = false; - bool non_crit_ext_present = false; - uint8_t next_hop_chaining_count_r15 = 0; - rrc_conn_release_nb_v1550_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-v1430-IEs ::= SEQUENCE -struct rrc_conn_release_nb_v1430_ies_s { - bool redirected_carrier_info_v1430_present = false; - bool extended_wait_time_cpdata_r14_present = false; - bool non_crit_ext_present = false; - redirected_carrier_info_nb_v1430_s redirected_carrier_info_v1430; - uint16_t extended_wait_time_cpdata_r14 = 1; - rrc_conn_release_nb_v1530_ies_s non_crit_ext; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - -// ReleaseCause-NB-r13 ::= ENUMERATED -struct release_cause_nb_r13_opts { - enum options { load_balancing_ta_urequired, other, rrc_suspend, spare1, nulltype } value; +// 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 release_cause_nb_r13_e; +typedef enumerated nrsrp_change_thresh_nb_r16_e; -// DLInformationTransfer-NB-r13-IEs ::= SEQUENCE -struct dl_info_transfer_nb_r13_ies_s { - bool late_non_crit_ext_present = false; - bool non_crit_ext_present = false; - dyn_octstring ded_info_nas_r13; - dyn_octstring late_non_crit_ext; +// 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; @@ -6090,55 +7393,173 @@ struct dl_info_transfer_nb_r13_ies_s { void to_json(json_writer& j) const; }; -// RRCConnectionReconfiguration-NB-r13-IEs ::= SEQUENCE -struct rrc_conn_recfg_nb_r13_ies_s { - using ded_info_nas_list_r13_l_ = bounded_array; +// 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; - // member variables - bool ded_info_nas_list_r13_present = false; - bool rr_cfg_ded_r13_present = false; - bool full_cfg_r13_present = false; - bool late_non_crit_ext_present = false; - bool non_crit_ext_present = false; - ded_info_nas_list_r13_l_ ded_info_nas_list_r13; - rr_cfg_ded_nb_r13_s rr_cfg_ded_r13; - dyn_octstring late_non_crit_ext; + const char* to_string() const; + uint16_t to_number() const; + }; + typedef enumerated types; - // sequence methods + // 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& periodicity16() + { + assert_choice_type(types::periodicity16, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + uint8_t& periodicity32() + { + assert_choice_type(types::periodicity32, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + uint8_t& periodicity64() + { + assert_choice_type(types::periodicity64, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + uint8_t& periodicity128() + { + assert_choice_type(types::periodicity128, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + uint16_t& periodicity256() + { + assert_choice_type(types::periodicity256, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + uint16_t& periodicity512() + { + assert_choice_type(types::periodicity512, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + uint16_t& periodicity1024() + { + assert_choice_type(types::periodicity1024, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + uint16_t& periodicity2048() + { + assert_choice_type(types::periodicity2048, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + uint16_t& periodicity4096() + { + assert_choice_type(types::periodicity4096, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + uint16_t& periodicity8192() + { + assert_choice_type(types::periodicity8192, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + const uint8_t& periodicity8() const + { + assert_choice_type(types::periodicity8, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + const uint8_t& periodicity16() const + { + assert_choice_type(types::periodicity16, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + const uint8_t& periodicity32() const + { + assert_choice_type(types::periodicity32, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + const uint8_t& periodicity64() const + { + assert_choice_type(types::periodicity64, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + const uint8_t& periodicity128() const + { + assert_choice_type(types::periodicity128, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + const uint16_t& periodicity256() const + { + assert_choice_type(types::periodicity256, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + const uint16_t& periodicity512() const + { + assert_choice_type(types::periodicity512, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + const uint16_t& periodicity1024() const + { + assert_choice_type(types::periodicity1024, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + const uint16_t& periodicity2048() const + { + assert_choice_type(types::periodicity2048, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + const uint16_t& periodicity4096() const + { + assert_choice_type(types::periodicity4096, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + const uint16_t& periodicity8192() const + { + assert_choice_type(types::periodicity8192, type_, "PUR-PeriodicityAndOffset-NB-r16"); + return c.get(); + } + 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(); -// RRCConnectionRelease-NB-r13-IEs ::= SEQUENCE -struct rrc_conn_release_nb_r13_ies_s { - bool resume_id_r13_present = false; - bool extended_wait_time_r13_present = false; - bool redirected_carrier_info_r13_present = false; - bool late_non_crit_ext_present = false; - bool non_crit_ext_present = false; - release_cause_nb_r13_e release_cause_r13; - fixed_bitstring<40> resume_id_r13; - uint16_t extended_wait_time_r13 = 1; - redirected_carrier_info_nb_r13_s redirected_carrier_info_r13; - dyn_octstring late_non_crit_ext; - rrc_conn_release_nb_v1430_ies_s non_crit_ext; +private: + types type_; + pod_choice_buffer_t c; - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; + void destroy_(); }; -// 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; +// 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; @@ -6146,24 +7567,416 @@ struct rrc_conn_resume_nb_r13_ies_s { void to_json(json_writer& j) const; }; -// UECapabilityEnquiry-NB-r13-IEs ::= SEQUENCE -struct ue_cap_enquiry_nb_r13_ies_s { - bool late_non_crit_ext_present = false; - bool non_crit_ext_present = false; - dyn_octstring late_non_crit_ext; +// 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; - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; + const char* to_string() const; + uint8_t to_number() const; + }; + typedef enumerated 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; -// DLInformationTransfer-NB ::= SEQUENCE -struct dl_info_transfer_nb_s { - struct crit_exts_c_ { - struct c1_c_ { + const char* to_string() const; + uint8_t to_number() const; + }; + typedef enumerated 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_e_; + struct pur_phys_cfg_r16_s_ { + struct npusch_sub_carrier_set_idx_r16_c_ { struct types_opts { - enum options { dl_info_transfer_r13, spare1, nulltype } value; + 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; + + // 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& khz3dot75() + { + assert_choice_type(types::khz3dot75, type_, "npusch-SubCarrierSetIndex-r16"); + return c.get(); + } + const uint8_t& khz15() const + { + assert_choice_type(types::khz15, type_, "npusch-SubCarrierSetIndex-r16"); + return c.get(); + } + const uint8_t& khz3dot75() const + { + assert_choice_type(types::khz3dot75, type_, "npusch-SubCarrierSetIndex-r16"); + return c.get(); + } + 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; + + // 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& multi_tone() + { + assert_choice_type(types::multi_tone, type_, "npusch-MCS-r16"); + return c.get(); + } + const uint8_t& single_tone() const + { + assert_choice_type(types::single_tone, type_, "npusch-MCS-r16"); + return c.get(); + } + const uint8_t& multi_tone() const + { + assert_choice_type(types::multi_tone, type_, "npusch-MCS-r16"); + return c.get(); + } + 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_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_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_r17; + setup_release_c 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_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; + // group 1 + copy_ptr 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_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; + rrc_conn_release_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; +}; + +// RedirectedCarrierInfo-NB-v1550 ::= CarrierFreq-NB-v1550 +using redirected_carrier_info_nb_v1550_s = carrier_freq_nb_v1550_s; + +// RRCConnectionRelease-NB-v1550-IEs ::= SEQUENCE +struct rrc_conn_release_nb_v1550_ies_s { + bool redirected_carrier_info_v1550_present = false; + bool non_crit_ext_present = false; + redirected_carrier_info_nb_v1550_s redirected_carrier_info_v1550; + rrc_conn_release_nb_v15b0_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-v1530-IEs ::= SEQUENCE +struct rrc_conn_release_nb_v1530_ies_s { + bool drb_continue_rohc_r15_present = false; + bool next_hop_chaining_count_r15_present = false; + bool non_crit_ext_present = false; + uint8_t next_hop_chaining_count_r15 = 0; + rrc_conn_release_nb_v1550_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-v1430-IEs ::= SEQUENCE +struct rrc_conn_release_nb_v1430_ies_s { + bool redirected_carrier_info_v1430_present = false; + bool extended_wait_time_cpdata_r14_present = false; + bool non_crit_ext_present = false; + redirected_carrier_info_nb_v1430_s redirected_carrier_info_v1430; + uint16_t extended_wait_time_cpdata_r14 = 1; + rrc_conn_release_nb_v1530_ies_s non_crit_ext; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// 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; + + const char* to_string() const; +}; +typedef enumerated release_cause_nb_r13_e; + +// DLInformationTransfer-NB-r13-IEs ::= SEQUENCE +struct dl_info_transfer_nb_r13_ies_s { + bool late_non_crit_ext_present = false; + bool non_crit_ext_present = false; + dyn_octstring ded_info_nas_r13; + 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; +}; + +// RRCConnectionReconfiguration-NB-r13-IEs ::= SEQUENCE +struct rrc_conn_recfg_nb_r13_ies_s { + using ded_info_nas_list_r13_l_ = bounded_array; + + // member variables + bool ded_info_nas_list_r13_present = false; + bool rr_cfg_ded_r13_present = false; + bool full_cfg_r13_present = false; + bool late_non_crit_ext_present = false; + bool non_crit_ext_present = false; + ded_info_nas_list_r13_l_ ded_info_nas_list_r13; + rr_cfg_ded_nb_r13_s rr_cfg_ded_r13; + 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; +}; + +// RRCConnectionRelease-NB-r13-IEs ::= SEQUENCE +struct rrc_conn_release_nb_r13_ies_s { + bool resume_id_r13_present = false; + bool extended_wait_time_r13_present = false; + bool redirected_carrier_info_r13_present = false; + bool late_non_crit_ext_present = false; + bool non_crit_ext_present = false; + release_cause_nb_r13_e release_cause_r13; + fixed_bitstring<40> resume_id_r13; + uint16_t extended_wait_time_r13 = 1; + redirected_carrier_info_nb_r13_s redirected_carrier_info_r13; + dyn_octstring late_non_crit_ext; + rrc_conn_release_nb_v1430_ies_s non_crit_ext; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// 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; + rrc_conn_resume_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; +}; + +// UECapabilityEnquiry-NB-r13-IEs ::= SEQUENCE +struct ue_cap_enquiry_nb_r13_ies_s { + bool late_non_crit_ext_present = false; + bool non_crit_ext_present = 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; +}; + +// 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_ { + struct c1_c_ { + struct types_opts { + enum options { dl_info_transfer_r13, spare1, nulltype } value; const char* to_string() const; }; @@ -6528,6 +8341,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; + + // 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_ { @@ -6539,7 +8398,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; @@ -6589,6 +8448,11 @@ struct dl_dcch_msg_type_nb_c { assert_choice_type(types::rrc_conn_resume_r13, type_, "c1"); return c.get(); } + ue_info_request_nb_r16_s& ue_info_request_r16() + { + assert_choice_type(types::ue_info_request_r16, type_, "c1"); + return c.get(); + } const dl_info_transfer_nb_s& dl_info_transfer_r13() const { assert_choice_type(types::dl_info_transfer_r13, type_, "c1"); @@ -6619,14 +8483,19 @@ struct dl_dcch_msg_type_nb_c { assert_choice_type(types::rrc_conn_resume_r13, type_, "c1"); return c.get(); } - 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(); + } + 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_; @@ -6635,7 +8504,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_(); @@ -6701,7 +8571,7 @@ using supported_band_list_nb_r13_l = dyn_array; // 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; @@ -6985,10 +8855,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; + + // 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>& random_value() + { + assert_choice_type(types::random_value, type_, "InitialUE-Identity-5GC-NB-r16"); + return c.get >(); + } + 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 >(); + } + 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>& set_ng_minus5_g_s_tmsi_r16(); + fixed_bitstring<48>& set_random_value(); + +private: + types type_; + choice_buffer_t > 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; @@ -7008,6 +8929,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-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; @@ -7018,6 +8954,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; @@ -7092,11 +9029,187 @@ struct pcch_msg_nb_s { void to_json(json_writer& j) const; }; -// PCI-ARFCN-NB-r14 ::= SEQUENCE -struct pci_arfcn_nb_r14_s { - bool carrier_freq_r14_present = false; - uint16_t pci_r14 = 0; - carrier_freq_nb_r13_s carrier_freq_r14; +// PCI-ARFCN-NB-r14 ::= SEQUENCE +struct pci_arfcn_nb_r14_s { + bool carrier_freq_r14_present = false; + uint16_t pci_r14 = 0; + carrier_freq_nb_r13_s carrier_freq_r14; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + 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_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_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; + + // 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; + + // 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; + +// 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; @@ -7162,11 +9275,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; @@ -7233,6 +9372,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_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_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 { @@ -7256,16 +9438,6 @@ struct cqi_npdcch_nb_r14_opts { }; typedef enumerated 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_e; - // ReestabUE-Identity-CP-NB-r14 ::= SEQUENCE struct reestab_ue_id_cp_nb_r14_s { s_tmsi_s s_tmsi_r14; @@ -7278,14 +9450,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_e; - // RRCConnectionReestablishmentRequest-NB-r13-IEs ::= SEQUENCE struct rrc_conn_reest_request_nb_r13_ies_s { reestab_ue_id_s ue_id_r13; @@ -7318,8 +9482,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; + + // 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; }; @@ -7327,6 +9524,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; @@ -7336,19 +9536,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(); + } + later_c__& later() + { + assert_choice_type(types::later, type_, "later"); + return c.get(); } 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(); + } + const later_c__& later() const + { + assert_choice_type(types::later, type_, "later"); + return c.get(); } 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 c; + + void destroy_(); }; struct types_opts { enum options { rrc_conn_reest_request_r13, later, nulltype } value; @@ -7407,6 +9619,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_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 { @@ -7415,7 +9648,7 @@ struct establishment_cause_nb_r13_opts { mo_data, mo_exception_data, delay_tolerant_access_v1330, - spare3, + mt_edt_v1610, spare2, spare1, nulltype @@ -7444,8 +9677,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; + + // 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; }; @@ -7453,6 +9719,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; @@ -7462,19 +9731,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(); + } + later_c_& later() + { + assert_choice_type(types::later, type_, "criticalExtensions"); + return c.get(); } 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(); + } + const later_c_& later() const + { + assert_choice_type(types::later, type_, "criticalExtensions"); + return c.get(); } 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 c; + + void destroy_(); }; // member variables @@ -7486,11 +9767,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; @@ -7561,6 +9868,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; @@ -7568,7 +9889,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; @@ -7579,8 +9901,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; + + // 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; }; @@ -7588,6 +9943,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; @@ -7597,19 +9955,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(); + } + later_c_& later() + { + assert_choice_type(types::later, type_, "criticalExtensions"); + return c.get(); } 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(); + } + const later_c_& later() const + { + assert_choice_type(types::later, type_, "criticalExtensions"); + return c.get(); } 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 c; + + void destroy_(); }; // member variables @@ -7621,11 +9991,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_e_; + using s_nssai_list_r16_l_ = dyn_array; + + // 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; @@ -7714,6 +10132,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_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; @@ -7729,7 +10172,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; }; @@ -7753,8 +10196,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; + + // 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; }; @@ -7762,6 +10238,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; @@ -7771,19 +10250,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(); + } + later_c_& later() + { + assert_choice_type(types::later, type_, "criticalExtensions"); + return c.get(); } 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(); + } + const later_c_& later() const + { + assert_choice_type(types::later, type_, "criticalExtensions"); + return c.get(); } 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 c; + + void destroy_(); }; // member variables @@ -8189,6 +10680,29 @@ using sc_mtch_info_list_nb_r14_l = dyn_array; // SCPTM-NeighbourCellList-NB-r14 ::= SEQUENCE (SIZE (1..8)) OF PCI-ARFCN-NB-r14 using scptm_neighbour_cell_list_nb_r14_l = dyn_array; +// 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_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; @@ -8197,6 +10711,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; @@ -8315,6 +10830,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_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_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; @@ -8335,6 +11078,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; @@ -8345,6 +11101,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; @@ -8449,6 +11206,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; @@ -8528,11 +11289,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; + + // 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; @@ -9011,8 +11862,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, @@ -9077,6 +11928,16 @@ struct ul_dcch_msg_type_nb_c { assert_choice_type(types::rrc_conn_resume_complete_r13, type_, "c1"); return c.get(); } + ue_info_resp_nb_r16_s& ue_info_resp_r16() + { + assert_choice_type(types::ue_info_resp_r16, type_, "c1"); + return c.get(); + } + pur_cfg_request_nb_r16_s& pur_cfg_request_r16() + { + assert_choice_type(types::pur_cfg_request_r16, type_, "c1"); + return c.get(); + } const rrc_conn_recfg_complete_nb_s& rrc_conn_recfg_complete_r13() const { assert_choice_type(types::rrc_conn_recfg_complete_r13, type_, "c1"); @@ -9117,6 +11978,16 @@ struct ul_dcch_msg_type_nb_c { assert_choice_type(types::rrc_conn_resume_complete_r13, type_, "c1"); return c.get(); } + 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(); + } + 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(); + } 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(); @@ -9125,8 +11996,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(); @@ -9136,13 +12007,15 @@ struct ul_dcch_msg_type_nb_c { private: types type_; - choice_buffer_t c; @@ -9193,6 +12066,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; + + // 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 48d88da122..05cd55eb44 100644 --- a/lib/include/srsran/asn1/rrc_utils.h +++ b/lib/include/srsran/asn1/rrc_utils.h @@ -67,7 +67,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 c5627412ec..2edbea5528 100644 --- a/lib/src/asn1/rrc.cc +++ b/lib/src/asn1/rrc.cc @@ -29,12 +29,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; @@ -44,6 +51,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; @@ -54,6 +62,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(); } @@ -170,6 +179,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"}; @@ -183,6 +203,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 { @@ -217,15 +243,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 @@ -240,12 +261,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 @@ -321,6 +336,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"}; @@ -333,6 +366,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", @@ -360,6 +439,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"}; @@ -382,27 +467,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 @@ -1040,8 +1124,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"); } @@ -1162,6 +1245,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"}; @@ -1204,18 +1321,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"}; @@ -1361,6 +1466,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"}; @@ -1369,7 +1507,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"); } @@ -1430,9 +1568,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"); } @@ -1567,8 +1719,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 @@ -1579,8 +1731,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"); } @@ -1619,6 +1770,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"}; @@ -1701,7 +1858,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"); @@ -1768,6 +1925,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 >(); + break; + case types::four_frames_v1610: + c.destroy >(); + 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 >(); + break; + case types::four_frames_v1610: + c.init >(); + 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 >()); + break; + case types::four_frames_v1610: + c.init(other.c.get >()); + 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 >()); + break; + case types::four_frames_v1610: + c.set(other.c.get >()); + 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<8>& mbsfn_sf_cfg_v1610_s::sf_alloc_v1610_c_::set_four_frames_v1610() +{ + set(types::four_frames_v1610); + return c.get >(); +} +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 >().to_string()); + break; + case types::four_frames_v1610: + j.write_str("fourFrames-v1610", c.get >().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 >().pack(bref)); + break; + case types::four_frames_v1610: + HANDLE_CODE(c.get >().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 >().unpack(bref)); + break; + case types::four_frames_v1610: + HANDLE_CODE(c.get >().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 { @@ -1961,33 +2278,74 @@ 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_"); } -// PMCH-InfoExt-r12 ::= SEQUENCE -SRSASN_CODE pmch_info_ext_r12_s::pack(bit_ref& bref) const +// MBSFNAreaConfiguration-v1610-IEs ::= SEQUENCE +SRSASN_CODE mbsfn_area_cfg_v1610_ies_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(pmch_cfg_r12.pack(bref)); - HANDLE_CODE(pack_dyn_seq_of(bref, mbms_session_info_list_r12, 0, 29)); + 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 pmch_info_ext_r12_s::unpack(cbit_ref& bref) +SRSASN_CODE mbsfn_area_cfg_v1610_ies_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(pmch_cfg_r12.unpack(bref)); - HANDLE_CODE(unpack_dyn_seq_of(mbms_session_info_list_r12, bref, 0, 29)); + 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 pmch_info_ext_r12_s::to_json(json_writer& j) const +void mbsfn_area_cfg_v1610_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("pmch-Config-r12"); - pmch_cfg_r12.to_json(j); - j.start_array("mbms-SessionInfoList-r12"); - for (const auto& e1 : mbms_session_info_list_r12) { - e1.to_json(j); - } - j.end_array(); + 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 +{ + bref.pack(ext, 1); + HANDLE_CODE(pmch_cfg_r12.pack(bref)); + HANDLE_CODE(pack_dyn_seq_of(bref, mbms_session_info_list_r12, 0, 29)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE pmch_info_ext_r12_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(pmch_cfg_r12.unpack(bref)); + HANDLE_CODE(unpack_dyn_seq_of(mbms_session_info_list_r12, bref, 0, 29)); + + return SRSASN_SUCCESS; +} +void pmch_info_ext_r12_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("pmch-Config-r12"); + pmch_cfg_r12.to_json(j); + j.start_array("mbms-SessionInfoList-r12"); + for (const auto& e1 : mbms_session_info_list_r12) { + e1.to_json(j); + } + j.end_array(); j.end_obj(); } @@ -1996,7 +2354,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; } @@ -2004,22 +2365,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(); } @@ -3142,830 +3505,830 @@ 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-SchedulingInfo-r13 ::= SEQUENCE -SRSASN_CODE sc_mtch_sched_info_r13_s::pack(bit_ref& bref) const +// 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(on_dur_timer_scptm_r13.pack(bref)); - HANDLE_CODE(drx_inactivity_timer_scptm_r13.pack(bref)); - HANDLE_CODE(sched_period_start_offset_scptm_r13.pack(bref)); + 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_sched_info_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE sc_mtch_info_br_r14_s::unpack(cbit_ref& bref) { bref.unpack(ext, 1); - HANDLE_CODE(on_dur_timer_scptm_r13.unpack(bref)); - HANDLE_CODE(drx_inactivity_timer_scptm_r13.unpack(bref)); - HANDLE_CODE(sched_period_start_offset_scptm_r13.unpack(bref)); + 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_sched_info_r13_s::to_json(json_writer& j) const +void sc_mtch_info_br_r14_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("onDurationTimerSCPTM-r13", on_dur_timer_scptm_r13.to_string()); - j.write_str("drx-InactivityTimerSCPTM-r13", drx_inactivity_timer_scptm_r13.to_string()); - j.write_fieldname("schedulingPeriodStartOffsetSCPTM-r13"); - sched_period_start_offset_scptm_r13.to_json(j); + 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_sched_info_r13_s::on_dur_timer_scptm_r13_opts::to_string() const -{ - static const char* options[] = {"psf1", - "psf2", - "psf3", - "psf4", - "psf5", - "psf6", - "psf8", - "psf10", - "psf20", - "psf30", - "psf40", - "psf50", - "psf60", - "psf80", - "psf100", - "psf200"}; - return convert_enum_idx(options, 16, value, "sc_mtch_sched_info_r13_s::on_dur_timer_scptm_r13_e_"); -} -uint8_t sc_mtch_sched_info_r13_s::on_dur_timer_scptm_r13_opts::to_number() const -{ - static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50, 60, 80, 100, 200}; - return map_enum_number(options, 16, value, "sc_mtch_sched_info_r13_s::on_dur_timer_scptm_r13_e_"); -} - -const char* sc_mtch_sched_info_r13_s::drx_inactivity_timer_scptm_r13_opts::to_string() const +const char* sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_opts::to_string() const { - static const char* options[] = {"psf0", - "psf1", - "psf2", - "psf4", - "psf8", - "psf10", - "psf20", - "psf40", - "psf80", - "psf160", - "ps320", - "psf640", - "psf960", - "psf1280", - "psf1920", - "psf2560"}; - return convert_enum_idx(options, 16, value, "sc_mtch_sched_info_r13_s::drx_inactivity_timer_scptm_r13_e_"); + 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_sched_info_r13_s::drx_inactivity_timer_scptm_r13_opts::to_number() const +uint16_t sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_opts::to_number() const { - static const uint16_t options[] = {0, 1, 2, 4, 8, 10, 20, 40, 80, 160, 320, 640, 960, 1280, 1920, 2560}; - return map_enum_number(options, 16, value, "sc_mtch_sched_info_r13_s::drx_inactivity_timer_scptm_r13_e_"); + 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_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::destroy_() {} -void sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set(types::options 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_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::sched_period_start_offset_scptm_r13_c_( - const sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_& other) +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::sf10: - c.init(other.c.get()); - break; - case types::sf20: - c.init(other.c.get()); - break; - case types::sf32: - c.init(other.c.get()); - break; - case types::sf40: - c.init(other.c.get()); - break; - case types::sf64: - c.init(other.c.get()); - break; - case types::sf80: - c.init(other.c.get()); - break; - case types::sf128: - c.init(other.c.get()); - break; - case types::sf160: - c.init(other.c.get()); - break; - case types::sf256: - c.init(other.c.get()); - break; - case types::sf320: - c.init(other.c.get()); - break; - case types::sf512: - c.init(other.c.get()); - break; - case types::sf640: - c.init(other.c.get()); - break; - case types::sf1024: - c.init(other.c.get()); - break; - case types::sf2048: - c.init(other.c.get()); - break; - case types::sf4096: - c.init(other.c.get()); + case types::fdd_r14: + c.init(other.c.get()); break; - case types::sf8192: - c.init(other.c.get()); + case types::tdd_r14: + c.init(other.c.get()); break; case types::nulltype: break; default: - log_invalid_choice_id(type_, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_"); + log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_"); } } -sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_& -sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::operator=( - const sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_& other) +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::sf10: - c.set(other.c.get()); + case types::fdd_r14: + c.set(other.c.get()); break; - case types::sf20: - c.set(other.c.get()); - break; - case types::sf32: - c.set(other.c.get()); - break; - case types::sf40: - c.set(other.c.get()); - break; - case types::sf64: - c.set(other.c.get()); - break; - case types::sf80: - c.set(other.c.get()); - break; - case types::sf128: - c.set(other.c.get()); - break; - case types::sf160: - c.set(other.c.get()); - break; - case types::sf256: - c.set(other.c.get()); - break; - case types::sf320: - c.set(other.c.get()); + case types::tdd_r14: + c.set(other.c.get()); break; - case types::sf512: - c.set(other.c.get()); + case types::nulltype: break; - case types::sf640: - c.set(other.c.get()); + 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(); +} +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(); +} +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().to_string()); break; - case types::sf1024: - c.set(other.c.get()); + case types::tdd_r14: + j.write_str("tdd-r14", c.get().to_string()); break; - case types::sf2048: - c.set(other.c.get()); + 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().pack(bref)); break; - case types::sf4096: - c.set(other.c.get()); + case types::tdd_r14: + HANDLE_CODE(c.get().pack(bref)); break; - case types::sf8192: - c.set(other.c.get()); + 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().unpack(bref)); break; - case types::nulltype: + case types::tdd_r14: + HANDLE_CODE(c.get().unpack(bref)); break; default: - log_invalid_choice_id(type_, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_"); + 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; +} - return *this; +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_"); } -uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf10() +float sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_opts::to_number() const { - set(types::sf10); - return c.get(); + 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_"); } -uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf20() +const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::fdd_r14_opts::to_number_string() const { - set(types::sf20); - return c.get(); + 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_"); } -uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf32() + +const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_opts::to_string() const { - set(types::sf32); - return c.get(); + 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_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf40() +uint8_t sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::tdd_r14_opts::to_number() const { - set(types::sf40); - return c.get(); + 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_"); } -uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf64() + +const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::types_opts::to_string() const { - set(types::sf64); - return c.get(); + 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"); } -uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf80() + +const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_hop_cfg_sc_mtch_r14_opts::to_string() const { - set(types::sf80); - return c.get(); + 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_"); } -uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf128() + +const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_cemode_cfg_sc_mtch_r14_opts::to_string() const { - set(types::sf128); - return c.get(); + 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_"); } -uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf160() + +const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_opts::to_string() const { - set(types::sf160); - return c.get(); + 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_"); } -uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf256() +float sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_opts::to_number() const { - set(types::sf256); - return c.get(); + 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_"); } -uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf320() +const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_opts::to_number_string() const { - set(types::sf320); - return c.get(); + 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_"); } -uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf512() + +const char* sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_opts::to_string() const { - set(types::sf512); - return c.get(); + 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_"); } -uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf640() +float sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_opts::to_number() const { - set(types::sf640); - return c.get(); + 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_"); } -uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf1024() +const char* sc_mtch_info_br_r14_s::mpdcch_offset_sc_mtch_r14_opts::to_number_string() const { - set(types::sf1024); - return c.get(); + 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_"); } -uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf2048() + +const char* sc_mtch_info_br_r14_s::p_a_r14_opts::to_string() const { - set(types::sf2048); - return c.get(); + 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_"); } -uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf4096() +float sc_mtch_info_br_r14_s::p_a_r14_opts::to_number() const { - set(types::sf4096); - return c.get(); + 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_"); } -uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf8192() +const char* sc_mtch_info_br_r14_s::p_a_r14_opts::to_number_string() const { - set(types::sf8192); - return c.get(); + 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_"); } -void sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::to_json(json_writer& j) const + +// SC-MTCH-SchedulingInfo-r13 ::= SEQUENCE +SRSASN_CODE sc_mtch_sched_info_r13_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(on_dur_timer_scptm_r13.pack(bref)); + HANDLE_CODE(drx_inactivity_timer_scptm_r13.pack(bref)); + HANDLE_CODE(sched_period_start_offset_scptm_r13.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE sc_mtch_sched_info_r13_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(on_dur_timer_scptm_r13.unpack(bref)); + HANDLE_CODE(drx_inactivity_timer_scptm_r13.unpack(bref)); + HANDLE_CODE(sched_period_start_offset_scptm_r13.unpack(bref)); + + return SRSASN_SUCCESS; +} +void sc_mtch_sched_info_r13_s::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::sf10: - j.write_int("sf10", c.get()); - break; - case types::sf20: - j.write_int("sf20", c.get()); - break; - case types::sf32: - j.write_int("sf32", c.get()); - break; - case types::sf40: - j.write_int("sf40", c.get()); - break; - case types::sf64: - j.write_int("sf64", c.get()); - break; - case types::sf80: - j.write_int("sf80", c.get()); - break; - case types::sf128: - j.write_int("sf128", c.get()); - break; - case types::sf160: - j.write_int("sf160", c.get()); - break; - case types::sf256: - j.write_int("sf256", c.get()); - break; - case types::sf320: - j.write_int("sf320", c.get()); - break; - case types::sf512: - j.write_int("sf512", c.get()); - break; - case types::sf640: - j.write_int("sf640", c.get()); - break; - case types::sf1024: - j.write_int("sf1024", c.get()); - break; - case types::sf2048: - j.write_int("sf2048", c.get()); - break; - case types::sf4096: - j.write_int("sf4096", c.get()); - break; - case types::sf8192: - j.write_int("sf8192", c.get()); - break; - default: - log_invalid_choice_id(type_, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_"); - } + j.write_str("onDurationTimerSCPTM-r13", on_dur_timer_scptm_r13.to_string()); + j.write_str("drx-InactivityTimerSCPTM-r13", drx_inactivity_timer_scptm_r13.to_string()); + j.write_fieldname("schedulingPeriodStartOffsetSCPTM-r13"); + sched_period_start_offset_scptm_r13.to_json(j); j.end_obj(); } -SRSASN_CODE sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::pack(bit_ref& bref) const + +const char* sc_mtch_sched_info_r13_s::on_dur_timer_scptm_r13_opts::to_string() const { - type_.pack(bref); + static const char* options[] = {"psf1", + "psf2", + "psf3", + "psf4", + "psf5", + "psf6", + "psf8", + "psf10", + "psf20", + "psf30", + "psf40", + "psf50", + "psf60", + "psf80", + "psf100", + "psf200"}; + return convert_enum_idx(options, 16, value, "sc_mtch_sched_info_r13_s::on_dur_timer_scptm_r13_e_"); +} +uint8_t sc_mtch_sched_info_r13_s::on_dur_timer_scptm_r13_opts::to_number() const +{ + static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50, 60, 80, 100, 200}; + return map_enum_number(options, 16, value, "sc_mtch_sched_info_r13_s::on_dur_timer_scptm_r13_e_"); +} + +const char* sc_mtch_sched_info_r13_s::drx_inactivity_timer_scptm_r13_opts::to_string() const +{ + static const char* options[] = {"psf0", + "psf1", + "psf2", + "psf4", + "psf8", + "psf10", + "psf20", + "psf40", + "psf80", + "psf160", + "ps320", + "psf640", + "psf960", + "psf1280", + "psf1920", + "psf2560"}; + return convert_enum_idx(options, 16, value, "sc_mtch_sched_info_r13_s::drx_inactivity_timer_scptm_r13_e_"); +} +uint16_t sc_mtch_sched_info_r13_s::drx_inactivity_timer_scptm_r13_opts::to_number() const +{ + static const uint16_t options[] = {0, 1, 2, 4, 8, 10, 20, 40, 80, 160, 320, 640, 960, 1280, 1920, 2560}; + return map_enum_number(options, 16, value, "sc_mtch_sched_info_r13_s::drx_inactivity_timer_scptm_r13_e_"); +} + +void sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::destroy_() {} +void sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set(types::options e) +{ + destroy_(); + type_ = e; +} +sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::sched_period_start_offset_scptm_r13_c_( + const sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_& other) +{ + type_ = other.type(); switch (type_) { case types::sf10: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)9u)); + c.init(other.c.get()); break; case types::sf20: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)19u)); + c.init(other.c.get()); break; case types::sf32: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)31u)); + c.init(other.c.get()); break; case types::sf40: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)39u)); + c.init(other.c.get()); break; case types::sf64: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)63u)); + c.init(other.c.get()); break; case types::sf80: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)79u)); + c.init(other.c.get()); break; case types::sf128: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + c.init(other.c.get()); break; case types::sf160: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)159u)); + c.init(other.c.get()); break; case types::sf256: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)255u)); + c.init(other.c.get()); break; case types::sf320: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)319u)); + c.init(other.c.get()); break; case types::sf512: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)511u)); + c.init(other.c.get()); break; case types::sf640: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)639u)); + c.init(other.c.get()); break; case types::sf1024: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)1023u)); + c.init(other.c.get()); break; case types::sf2048: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)2048u)); + c.init(other.c.get()); break; case types::sf4096: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)4096u)); + c.init(other.c.get()); break; case types::sf8192: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)8192u)); + c.init(other.c.get()); + break; + case types::nulltype: break; default: log_invalid_choice_id(type_, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_"); - return SRSASN_ERROR_ENCODE_FAIL; } - return SRSASN_SUCCESS; } -SRSASN_CODE sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::unpack(cbit_ref& bref) +sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_& +sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::operator=( + const sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_& other) { - types e; - e.unpack(bref); - set(e); + if (this == &other) { + return *this; + } + set(other.type()); switch (type_) { case types::sf10: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)9u)); + c.set(other.c.get()); break; case types::sf20: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)19u)); + c.set(other.c.get()); break; case types::sf32: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)31u)); + c.set(other.c.get()); break; case types::sf40: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)39u)); + c.set(other.c.get()); break; case types::sf64: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)63u)); + c.set(other.c.get()); break; case types::sf80: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)79u)); + c.set(other.c.get()); break; case types::sf128: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + c.set(other.c.get()); break; case types::sf160: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)159u)); + c.set(other.c.get()); break; case types::sf256: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)255u)); + c.set(other.c.get()); break; case types::sf320: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)319u)); + c.set(other.c.get()); break; case types::sf512: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)511u)); + c.set(other.c.get()); break; case types::sf640: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)639u)); + c.set(other.c.get()); break; case types::sf1024: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)1023u)); + c.set(other.c.get()); break; case types::sf2048: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)2048u)); + c.set(other.c.get()); break; case types::sf4096: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)4096u)); + c.set(other.c.get()); break; case types::sf8192: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)8192u)); + c.set(other.c.get()); + break; + case types::nulltype: break; default: log_invalid_choice_id(type_, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_"); - return SRSASN_ERROR_DECODE_FAIL; } - return SRSASN_SUCCESS; -} -const char* sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::types_opts::to_string() const + return *this; +} +uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf10() { - static const char* options[] = {"sf10", - "sf20", - "sf32", - "sf40", - "sf64", - "sf80", - "sf128", - "sf160", - "sf256", - "sf320", - "sf512", - "sf640", - "sf1024", - "sf2048", - "sf4096", - "sf8192"}; - return convert_enum_idx( - options, 16, value, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::types"); + set(types::sf10); + return c.get(); } -uint16_t sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::types_opts::to_number() const +uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf20() { - static const uint16_t options[] = {10, 20, 32, 40, 64, 80, 128, 160, 256, 320, 512, 640, 1024, 2048, 4096, 8192}; - return map_enum_number(options, 16, value, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::types"); + set(types::sf20); + return c.get(); } - -// PCI-ARFCN-r13 ::= SEQUENCE -SRSASN_CODE pci_arfcn_r13_s::pack(bit_ref& bref) const +uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf32() { - HANDLE_CODE(bref.pack(carrier_freq_r13_present, 1)); - - HANDLE_CODE(pack_integer(bref, pci_r13, (uint16_t)0u, (uint16_t)503u)); - if (carrier_freq_r13_present) { - HANDLE_CODE(pack_integer(bref, carrier_freq_r13, (uint32_t)0u, (uint32_t)262143u)); - } - - return SRSASN_SUCCESS; + set(types::sf32); + return c.get(); } -SRSASN_CODE pci_arfcn_r13_s::unpack(cbit_ref& bref) +uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf40() { - HANDLE_CODE(bref.unpack(carrier_freq_r13_present, 1)); - - HANDLE_CODE(unpack_integer(pci_r13, bref, (uint16_t)0u, (uint16_t)503u)); - if (carrier_freq_r13_present) { - HANDLE_CODE(unpack_integer(carrier_freq_r13, bref, (uint32_t)0u, (uint32_t)262143u)); - } - - return SRSASN_SUCCESS; + set(types::sf40); + return c.get(); } -void pci_arfcn_r13_s::to_json(json_writer& j) const +uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf64() { - j.start_obj(); - j.write_int("physCellId-r13", pci_r13); - if (carrier_freq_r13_present) { - j.write_int("carrierFreq-r13", carrier_freq_r13); - } - j.end_obj(); + set(types::sf64); + return c.get(); } - -// SC-MTCH-Info-BR-r14 ::= SEQUENCE -SRSASN_CODE sc_mtch_info_br_r14_s::pack(bit_ref& bref) const +uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf80() { - 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; + set(types::sf80); + return c.get(); } -SRSASN_CODE sc_mtch_info_br_r14_s::unpack(cbit_ref& bref) +uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf128() { - 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; + set(types::sf128); + return c.get(); } -void sc_mtch_info_br_r14_s::to_json(json_writer& j) const +uint8_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf160() { - 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(); + set(types::sf160); + return c.get(); } - -const char* sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_opts::to_string() const +uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf256() { - 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_"); + set(types::sf256); + return c.get(); } -uint16_t sc_mtch_info_br_r14_s::mpdcch_num_repeat_sc_mtch_r14_opts::to_number() const +uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf320() { - 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_"); + set(types::sf320); + return c.get(); } - -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) +uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf512() { - destroy_(); - type_ = e; + set(types::sf512); + return c.get(); } -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) +uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf640() { - type_ = other.type(); - switch (type_) { - case types::fdd_r14: - c.init(other.c.get()); - break; - case types::tdd_r14: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_"); - } + set(types::sf640); + return c.get(); } -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) +uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf1024() { - if (this == &other) { - return *this; - } - set(other.type()); - switch (type_) { - case types::fdd_r14: - c.set(other.c.get()); - break; - case types::tdd_r14: - c.set(other.c.get()); - 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; + set(types::sf1024); + return c.get(); } -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() +uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf2048() { - set(types::fdd_r14); - return c.get(); + set(types::sf2048); + return c.get(); } -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() +uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf4096() { - set(types::tdd_r14); - return c.get(); + set(types::sf4096); + return c.get(); } -void sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::to_json(json_writer& j) const +uint16_t& sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::set_sf8192() +{ + set(types::sf8192); + return c.get(); +} +void sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::fdd_r14: - j.write_str("fdd-r14", c.get().to_string()); + case types::sf10: + j.write_int("sf10", c.get()); break; - case types::tdd_r14: - j.write_str("tdd-r14", c.get().to_string()); + case types::sf20: + j.write_int("sf20", c.get()); + break; + case types::sf32: + j.write_int("sf32", c.get()); + break; + case types::sf40: + j.write_int("sf40", c.get()); + break; + case types::sf64: + j.write_int("sf64", c.get()); + break; + case types::sf80: + j.write_int("sf80", c.get()); + break; + case types::sf128: + j.write_int("sf128", c.get()); + break; + case types::sf160: + j.write_int("sf160", c.get()); + break; + case types::sf256: + j.write_int("sf256", c.get()); + break; + case types::sf320: + j.write_int("sf320", c.get()); + break; + case types::sf512: + j.write_int("sf512", c.get()); + break; + case types::sf640: + j.write_int("sf640", c.get()); + break; + case types::sf1024: + j.write_int("sf1024", c.get()); + break; + case types::sf2048: + j.write_int("sf2048", c.get()); + break; + case types::sf4096: + j.write_int("sf4096", c.get()); + break; + case types::sf8192: + j.write_int("sf8192", c.get()); break; default: - log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_"); + log_invalid_choice_id(type_, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_"); } j.end_obj(); } -SRSASN_CODE sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::pack(bit_ref& bref) const +SRSASN_CODE sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::fdd_r14: - HANDLE_CODE(c.get().pack(bref)); + case types::sf10: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)9u)); break; - case types::tdd_r14: - HANDLE_CODE(c.get().pack(bref)); + case types::sf20: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)19u)); + break; + case types::sf32: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)31u)); + break; + case types::sf40: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)39u)); + break; + case types::sf64: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)63u)); + break; + case types::sf80: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)79u)); + break; + case types::sf128: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + break; + case types::sf160: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)159u)); + break; + case types::sf256: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)255u)); + break; + case types::sf320: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)319u)); + break; + case types::sf512: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)511u)); + break; + case types::sf640: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)639u)); + break; + case types::sf1024: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)1023u)); + break; + case types::sf2048: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)2048u)); + break; + case types::sf4096: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)4096u)); + break; + case types::sf8192: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)8192u)); break; default: - log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_"); + log_invalid_choice_id(type_, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_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) +SRSASN_CODE sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::fdd_r14: - HANDLE_CODE(c.get().unpack(bref)); + case types::sf10: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)9u)); + break; + case types::sf20: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)19u)); + break; + case types::sf32: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)31u)); + break; + case types::sf40: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)39u)); + break; + case types::sf64: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)63u)); + break; + case types::sf80: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)79u)); + break; + case types::sf128: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + break; + case types::sf160: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)159u)); + break; + case types::sf256: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)255u)); + break; + case types::sf320: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)319u)); + break; + case types::sf512: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)511u)); + break; + case types::sf640: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)639u)); break; - case types::tdd_r14: - HANDLE_CODE(c.get().unpack(bref)); + case types::sf1024: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)1023u)); + break; + case types::sf2048: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)2048u)); + break; + case types::sf4096: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)4096u)); + break; + case types::sf8192: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)8192u)); break; default: - log_invalid_choice_id(type_, "sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_"); + log_invalid_choice_id(type_, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_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 +const char* sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::types_opts::to_string() 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_"); + static const char* options[] = {"sf10", + "sf20", + "sf32", + "sf40", + "sf64", + "sf80", + "sf128", + "sf160", + "sf256", + "sf320", + "sf512", + "sf640", + "sf1024", + "sf2048", + "sf4096", + "sf8192"}; + return convert_enum_idx( + options, 16, value, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::types"); } - -const char* sc_mtch_info_br_r14_s::mpdcch_start_sf_sc_mtch_r14_c_::types_opts::to_string() const +uint16_t sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::types_opts::to_number() 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"); + static const uint16_t options[] = {10, 20, 32, 40, 64, 80, 128, 160, 256, 320, 512, 640, 1024, 2048, 4096, 8192}; + return map_enum_number(options, 16, value, "sc_mtch_sched_info_r13_s::sched_period_start_offset_scptm_r13_c_::types"); } -const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_hop_cfg_sc_mtch_r14_opts::to_string() const +// PCI-ARFCN-r13 ::= SEQUENCE +SRSASN_CODE pci_arfcn_r13_s::pack(bit_ref& bref) 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_"); -} + HANDLE_CODE(bref.pack(carrier_freq_r13_present, 1)); -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_"); -} + HANDLE_CODE(pack_integer(bref, pci_r13, (uint16_t)0u, (uint16_t)503u)); + if (carrier_freq_r13_present) { + HANDLE_CODE(pack_integer(bref, carrier_freq_r13, (uint32_t)0u, (uint32_t)262143u)); + } -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_"); + return SRSASN_SUCCESS; } -const char* sc_mtch_info_br_r14_s::mpdcch_pdsch_max_bw_sc_mtch_r14_opts::to_number_string() const +SRSASN_CODE pci_arfcn_r13_s::unpack(cbit_ref& bref) { - 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_"); -} + HANDLE_CODE(bref.unpack(carrier_freq_r13_present, 1)); -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_"); -} + HANDLE_CODE(unpack_integer(pci_r13, bref, (uint16_t)0u, (uint16_t)503u)); + if (carrier_freq_r13_present) { + HANDLE_CODE(unpack_integer(carrier_freq_r13, bref, (uint32_t)0u, (uint32_t)262143u)); + } -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_"); + return SRSASN_SUCCESS; } -const char* sc_mtch_info_br_r14_s::p_a_r14_opts::to_number_string() const +void pci_arfcn_r13_s::to_json(json_writer& j) 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_"); + j.start_obj(); + j.write_int("physCellId-r13", pci_r13); + if (carrier_freq_r13_present) { + j.write_int("carrierFreq-r13", carrier_freq_r13); + } + j.end_obj(); } // SC-MTCH-Info-r13 ::= SEQUENCE @@ -4067,6 +4430,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 { @@ -4122,6 +4540,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; } @@ -4142,6 +4563,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; } @@ -4168,8 +4592,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(); } @@ -4577,15 +5000,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 @@ -4618,6 +5041,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"}; @@ -4815,6 +5249,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"}; @@ -4827,6 +5273,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"}; @@ -4841,6 +5293,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"}; @@ -4864,6 +5323,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"}; @@ -4888,6 +5353,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"}; @@ -4901,6 +5372,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"}; @@ -4986,6 +5463,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"}; @@ -4994,10 +5477,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"}; @@ -5049,11 +5538,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"); } @@ -5268,63 +5757,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) @@ -5332,6 +5794,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 @@ -5342,6 +5831,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(); } @@ -5404,6 +5913,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"}; @@ -6123,6 +6644,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 { @@ -8091,6 +8687,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]) { @@ -8110,6 +8707,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(0, 3279165))); + } + } } return SRSASN_SUCCESS; } @@ -8128,7 +8734,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]) { @@ -8154,6 +8760,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(0, 3279165))); + } + } } return SRSASN_SUCCESS; } @@ -8198,6 +8815,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(); } @@ -8223,6 +8847,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 { @@ -8492,6 +9150,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 { @@ -8625,6 +9394,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 { @@ -8649,6 +9467,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(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(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 { @@ -8730,6 +9601,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 306cda5bff..364be8bc0a 100644 --- a/lib/src/asn1/rrc/bcch_msg.cc +++ b/lib/src/asn1/rrc/bcch_msg.cc @@ -270,6 +270,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 { @@ -340,6 +399,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 { @@ -483,6 +574,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_() { @@ -783,160 +894,596 @@ void uac_barr_per_cat_r15_s::to_json(json_writer& j) const j.end_obj(); } -// NeighCellCDMA2000 ::= SEQUENCE -SRSASN_CODE neigh_cell_cdma2000_s::pack(bit_ref& bref) const +// MBSFN-AreaInfo-r16 ::= SEQUENCE +SRSASN_CODE mbsfn_area_info_r16_s::pack(bit_ref& bref) const { - HANDLE_CODE(band_class.pack(bref)); - HANDLE_CODE(pack_dyn_seq_of(bref, neigh_cells_per_freq_list, 1, 16)); + 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 neigh_cell_cdma2000_s::unpack(cbit_ref& bref) +SRSASN_CODE mbsfn_area_info_r16_s::unpack(cbit_ref& bref) { - HANDLE_CODE(band_class.unpack(bref)); - HANDLE_CODE(unpack_dyn_seq_of(neigh_cells_per_freq_list, bref, 1, 16)); + 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 neigh_cell_cdma2000_s::to_json(json_writer& j) const +void mbsfn_area_info_r16_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("bandClass", band_class.to_string()); - j.start_array("neighCellsPerFreqList"); - for (const auto& e1 : neigh_cells_per_freq_list) { - e1.to_json(j); + 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_array(); j.end_obj(); } -// NeighCellCDMA2000-v920 ::= SEQUENCE -SRSASN_CODE neigh_cell_cdma2000_v920_s::pack(bit_ref& bref) const +const char* mbsfn_area_info_r16_s::mcch_cfg_r16_s_::mcch_repeat_period_r16_opts::to_string() const { - HANDLE_CODE(pack_dyn_seq_of(bref, neigh_cells_per_freq_list_v920, 1, 16)); + 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(0, 1007))); + } + HANDLE_CODE(periodicity_r16.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE neigh_cell_cdma2000_v920_s::unpack(cbit_ref& bref) +SRSASN_CODE mtc_ssb2_lp_nr_r16_s::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_dyn_seq_of(neigh_cells_per_freq_list_v920, bref, 1, 16)); + 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(0, 1007))); + } + HANDLE_CODE(periodicity_r16.unpack(bref)); return SRSASN_SUCCESS; } -void neigh_cell_cdma2000_v920_s::to_json(json_writer& j) const +void mtc_ssb2_lp_nr_r16_s::to_json(json_writer& j) const { j.start_obj(); - j.start_array("neighCellsPerFreqList-v920"); - for (const auto& e1 : neigh_cells_per_freq_list_v920) { - e1.to_json(j); + 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.end_array(); + j.write_str("periodicity-r16", periodicity_r16.to_string()); j.end_obj(); } -// ParametersCDMA2000-r11 ::= SEQUENCE -SRSASN_CODE params_cdma2000_r11_s::pack(bit_ref& bref) const +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(sys_time_info_r11_present, 1)); - HANDLE_CODE(bref.pack(params_hrpd_r11_present, 1)); - HANDLE_CODE(bref.pack(params1_xrtt_r11_present, 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)); - if (sys_time_info_r11_present) { - HANDLE_CODE(sys_time_info_r11.pack(bref)); + 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(1, 1024))); } - HANDLE_CODE(pack_integer(bref, search_win_size_r11, (uint8_t)0u, (uint8_t)15u)); - if (params_hrpd_r11_present) { - HANDLE_CODE(bref.pack(params_hrpd_r11.cell_resel_params_hrpd_r11_present, 1)); - HANDLE_CODE(params_hrpd_r11.pre_regist_info_hrpd_r11.pack(bref)); - if (params_hrpd_r11.cell_resel_params_hrpd_r11_present) { - HANDLE_CODE(params_hrpd_r11.cell_resel_params_hrpd_r11.pack(bref)); - } + if (meas_cell_list_nr_r16_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, meas_cell_list_nr_r16, 1, 8)); } - if (params1_xrtt_r11_present) { - HANDLE_CODE(bref.pack(params1_xrtt_r11.csfb_regist_param1_xrtt_r11_present, 1)); - HANDLE_CODE(bref.pack(params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11_present, 1)); - HANDLE_CODE(bref.pack(params1_xrtt_r11.long_code_state1_xrtt_r11_present, 1)); - HANDLE_CODE(bref.pack(params1_xrtt_r11.cell_resel_params1_xrtt_r11_present, 1)); - HANDLE_CODE(bref.pack(params1_xrtt_r11.ac_barr_cfg1_xrtt_r11_present, 1)); - HANDLE_CODE(bref.pack(params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11_present, 1)); - HANDLE_CODE(bref.pack(params1_xrtt_r11.csfb_dual_rx_tx_support_r11_present, 1)); - if (params1_xrtt_r11.csfb_regist_param1_xrtt_r11_present) { - HANDLE_CODE(params1_xrtt_r11.csfb_regist_param1_xrtt_r11.pack(bref)); + 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 (params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11_present) { - HANDLE_CODE(params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11.pack(bref)); + 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 (params1_xrtt_r11.long_code_state1_xrtt_r11_present) { - HANDLE_CODE(params1_xrtt_r11.long_code_state1_xrtt_r11.pack(bref)); + } + 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 (params1_xrtt_r11.cell_resel_params1_xrtt_r11_present) { - HANDLE_CODE(params1_xrtt_r11.cell_resel_params1_xrtt_r11.pack(bref)); + if (ssb_meas_cfg_r16.thresh_rs_idx_r16_present) { + HANDLE_CODE(ssb_meas_cfg_r16.thresh_rs_idx_r16.pack(bref)); } - if (params1_xrtt_r11.ac_barr_cfg1_xrtt_r11_present) { - HANDLE_CODE(params1_xrtt_r11.ac_barr_cfg1_xrtt_r11.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 (params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11_present) { - HANDLE_CODE(bref.pack(params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11, 1)); + 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 params_cdma2000_r11_s::unpack(cbit_ref& bref) +SRSASN_CODE meas_idle_carrier_nr_r16_s::unpack(cbit_ref& bref) { bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(sys_time_info_r11_present, 1)); - HANDLE_CODE(bref.unpack(params_hrpd_r11_present, 1)); - HANDLE_CODE(bref.unpack(params1_xrtt_r11_present, 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)); - if (sys_time_info_r11_present) { - HANDLE_CODE(sys_time_info_r11.unpack(bref)); + 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(1, 1024))); } - HANDLE_CODE(unpack_integer(search_win_size_r11, bref, (uint8_t)0u, (uint8_t)15u)); - if (params_hrpd_r11_present) { - HANDLE_CODE(bref.unpack(params_hrpd_r11.cell_resel_params_hrpd_r11_present, 1)); - HANDLE_CODE(params_hrpd_r11.pre_regist_info_hrpd_r11.unpack(bref)); - if (params_hrpd_r11.cell_resel_params_hrpd_r11_present) { - HANDLE_CODE(params_hrpd_r11.cell_resel_params_hrpd_r11.unpack(bref)); - } + if (meas_cell_list_nr_r16_present) { + HANDLE_CODE(unpack_dyn_seq_of(meas_cell_list_nr_r16, bref, 1, 8)); } - if (params1_xrtt_r11_present) { - HANDLE_CODE(bref.unpack(params1_xrtt_r11.csfb_regist_param1_xrtt_r11_present, 1)); - HANDLE_CODE(bref.unpack(params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11_present, 1)); - HANDLE_CODE(bref.unpack(params1_xrtt_r11.long_code_state1_xrtt_r11_present, 1)); - HANDLE_CODE(bref.unpack(params1_xrtt_r11.cell_resel_params1_xrtt_r11_present, 1)); - HANDLE_CODE(bref.unpack(params1_xrtt_r11.ac_barr_cfg1_xrtt_r11_present, 1)); - HANDLE_CODE(bref.unpack(params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11_present, 1)); - HANDLE_CODE(bref.unpack(params1_xrtt_r11.csfb_dual_rx_tx_support_r11_present, 1)); - if (params1_xrtt_r11.csfb_regist_param1_xrtt_r11_present) { - HANDLE_CODE(params1_xrtt_r11.csfb_regist_param1_xrtt_r11.unpack(bref)); + 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 (params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11_present) { - HANDLE_CODE(params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11.unpack(bref)); + 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 (params1_xrtt_r11.long_code_state1_xrtt_r11_present) { - HANDLE_CODE(params1_xrtt_r11.long_code_state1_xrtt_r11.unpack(bref)); + } + 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 (params1_xrtt_r11.cell_resel_params1_xrtt_r11_present) { - HANDLE_CODE(params1_xrtt_r11.cell_resel_params1_xrtt_r11.unpack(bref)); + if (ssb_meas_cfg_r16.thresh_rs_idx_r16_present) { + HANDLE_CODE(ssb_meas_cfg_r16.thresh_rs_idx_r16.unpack(bref)); } - if (params1_xrtt_r11.ac_barr_cfg1_xrtt_r11_present) { - HANDLE_CODE(params1_xrtt_r11.ac_barr_cfg1_xrtt_r11.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 (params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11_present) { - HANDLE_CODE(bref.unpack(params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11, 1)); + 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 params_cdma2000_r11_s::to_json(json_writer& j) const +void meas_idle_carrier_nr_r16_s::to_json(json_writer& j) const { j.start_obj(); - if (sys_time_info_r11_present) { - j.write_fieldname("systemTimeInfo-r11"); - sys_time_info_r11.to_json(j); + 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 +{ + HANDLE_CODE(band_class.pack(bref)); + HANDLE_CODE(pack_dyn_seq_of(bref, neigh_cells_per_freq_list, 1, 16)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE neigh_cell_cdma2000_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(band_class.unpack(bref)); + HANDLE_CODE(unpack_dyn_seq_of(neigh_cells_per_freq_list, bref, 1, 16)); + + return SRSASN_SUCCESS; +} +void neigh_cell_cdma2000_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("bandClass", band_class.to_string()); + j.start_array("neighCellsPerFreqList"); + for (const auto& e1 : neigh_cells_per_freq_list) { + e1.to_json(j); + } + j.end_array(); + j.end_obj(); +} + +// NeighCellCDMA2000-v920 ::= SEQUENCE +SRSASN_CODE neigh_cell_cdma2000_v920_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_dyn_seq_of(bref, neigh_cells_per_freq_list_v920, 1, 16)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE neigh_cell_cdma2000_v920_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_dyn_seq_of(neigh_cells_per_freq_list_v920, bref, 1, 16)); + + return SRSASN_SUCCESS; +} +void neigh_cell_cdma2000_v920_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.start_array("neighCellsPerFreqList-v920"); + for (const auto& e1 : neigh_cells_per_freq_list_v920) { + e1.to_json(j); + } + j.end_array(); + j.end_obj(); +} + +// ParametersCDMA2000-r11 ::= SEQUENCE +SRSASN_CODE params_cdma2000_r11_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(sys_time_info_r11_present, 1)); + HANDLE_CODE(bref.pack(params_hrpd_r11_present, 1)); + HANDLE_CODE(bref.pack(params1_xrtt_r11_present, 1)); + + if (sys_time_info_r11_present) { + HANDLE_CODE(sys_time_info_r11.pack(bref)); + } + HANDLE_CODE(pack_integer(bref, search_win_size_r11, (uint8_t)0u, (uint8_t)15u)); + if (params_hrpd_r11_present) { + HANDLE_CODE(bref.pack(params_hrpd_r11.cell_resel_params_hrpd_r11_present, 1)); + HANDLE_CODE(params_hrpd_r11.pre_regist_info_hrpd_r11.pack(bref)); + if (params_hrpd_r11.cell_resel_params_hrpd_r11_present) { + HANDLE_CODE(params_hrpd_r11.cell_resel_params_hrpd_r11.pack(bref)); + } + } + if (params1_xrtt_r11_present) { + HANDLE_CODE(bref.pack(params1_xrtt_r11.csfb_regist_param1_xrtt_r11_present, 1)); + HANDLE_CODE(bref.pack(params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11_present, 1)); + HANDLE_CODE(bref.pack(params1_xrtt_r11.long_code_state1_xrtt_r11_present, 1)); + HANDLE_CODE(bref.pack(params1_xrtt_r11.cell_resel_params1_xrtt_r11_present, 1)); + HANDLE_CODE(bref.pack(params1_xrtt_r11.ac_barr_cfg1_xrtt_r11_present, 1)); + HANDLE_CODE(bref.pack(params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11_present, 1)); + HANDLE_CODE(bref.pack(params1_xrtt_r11.csfb_dual_rx_tx_support_r11_present, 1)); + if (params1_xrtt_r11.csfb_regist_param1_xrtt_r11_present) { + HANDLE_CODE(params1_xrtt_r11.csfb_regist_param1_xrtt_r11.pack(bref)); + } + if (params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11_present) { + HANDLE_CODE(params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11.pack(bref)); + } + if (params1_xrtt_r11.long_code_state1_xrtt_r11_present) { + HANDLE_CODE(params1_xrtt_r11.long_code_state1_xrtt_r11.pack(bref)); + } + if (params1_xrtt_r11.cell_resel_params1_xrtt_r11_present) { + HANDLE_CODE(params1_xrtt_r11.cell_resel_params1_xrtt_r11.pack(bref)); + } + if (params1_xrtt_r11.ac_barr_cfg1_xrtt_r11_present) { + HANDLE_CODE(params1_xrtt_r11.ac_barr_cfg1_xrtt_r11.pack(bref)); + } + if (params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11_present) { + HANDLE_CODE(bref.pack(params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11, 1)); + } + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE params_cdma2000_r11_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(sys_time_info_r11_present, 1)); + HANDLE_CODE(bref.unpack(params_hrpd_r11_present, 1)); + HANDLE_CODE(bref.unpack(params1_xrtt_r11_present, 1)); + + if (sys_time_info_r11_present) { + HANDLE_CODE(sys_time_info_r11.unpack(bref)); + } + HANDLE_CODE(unpack_integer(search_win_size_r11, bref, (uint8_t)0u, (uint8_t)15u)); + if (params_hrpd_r11_present) { + HANDLE_CODE(bref.unpack(params_hrpd_r11.cell_resel_params_hrpd_r11_present, 1)); + HANDLE_CODE(params_hrpd_r11.pre_regist_info_hrpd_r11.unpack(bref)); + if (params_hrpd_r11.cell_resel_params_hrpd_r11_present) { + HANDLE_CODE(params_hrpd_r11.cell_resel_params_hrpd_r11.unpack(bref)); + } + } + if (params1_xrtt_r11_present) { + HANDLE_CODE(bref.unpack(params1_xrtt_r11.csfb_regist_param1_xrtt_r11_present, 1)); + HANDLE_CODE(bref.unpack(params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11_present, 1)); + HANDLE_CODE(bref.unpack(params1_xrtt_r11.long_code_state1_xrtt_r11_present, 1)); + HANDLE_CODE(bref.unpack(params1_xrtt_r11.cell_resel_params1_xrtt_r11_present, 1)); + HANDLE_CODE(bref.unpack(params1_xrtt_r11.ac_barr_cfg1_xrtt_r11_present, 1)); + HANDLE_CODE(bref.unpack(params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11_present, 1)); + HANDLE_CODE(bref.unpack(params1_xrtt_r11.csfb_dual_rx_tx_support_r11_present, 1)); + if (params1_xrtt_r11.csfb_regist_param1_xrtt_r11_present) { + HANDLE_CODE(params1_xrtt_r11.csfb_regist_param1_xrtt_r11.unpack(bref)); + } + if (params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11_present) { + HANDLE_CODE(params1_xrtt_r11.csfb_regist_param1_xrtt_ext_r11.unpack(bref)); + } + if (params1_xrtt_r11.long_code_state1_xrtt_r11_present) { + HANDLE_CODE(params1_xrtt_r11.long_code_state1_xrtt_r11.unpack(bref)); + } + if (params1_xrtt_r11.cell_resel_params1_xrtt_r11_present) { + HANDLE_CODE(params1_xrtt_r11.cell_resel_params1_xrtt_r11.unpack(bref)); + } + if (params1_xrtt_r11.ac_barr_cfg1_xrtt_r11_present) { + HANDLE_CODE(params1_xrtt_r11.ac_barr_cfg1_xrtt_r11.unpack(bref)); + } + if (params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11_present) { + HANDLE_CODE(bref.unpack(params1_xrtt_r11.csfb_support_for_dual_rx_ues_r11, 1)); + } + } + + return SRSASN_SUCCESS; +} +void params_cdma2000_r11_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (sys_time_info_r11_present) { + j.write_fieldname("systemTimeInfo-r11"); + sys_time_info_r11.to_json(j); } j.write_int("searchWindowSize-r11", search_win_size_r11); if (params_hrpd_r11_present) { @@ -1155,6 +1702,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 { @@ -1444,6 +2078,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(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(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 { @@ -1809,6 +2591,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 { @@ -1818,7 +2670,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)); @@ -1843,8 +2695,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) { @@ -1886,7 +2738,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)); @@ -1911,8 +2763,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) { @@ -1976,9 +2828,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(); @@ -2010,7 +2862,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)); @@ -2041,8 +2893,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)); @@ -2071,7 +2923,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)); @@ -2102,8 +2954,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)); @@ -2155,9 +3007,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(); @@ -2455,6 +3307,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 { @@ -2480,6 +3400,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 { @@ -2580,6 +3520,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 { @@ -2776,6 +3753,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 { @@ -3042,6 +4049,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 { @@ -3097,6 +4211,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 { @@ -3203,73 +4365,158 @@ uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_& uac_barr_per_plmn_r15_s:: uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::uac_implicit_ac_barr_list_r15_l_& uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::set_uac_implicit_ac_barr_list_r15() { - set(types::uac_implicit_ac_barr_list_r15); - return c.get(); + set(types::uac_implicit_ac_barr_list_r15); + return c.get(); +} +uac_barr_per_cat_list_r15_l& uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::set_uac_explicit_ac_barr_list_r15() +{ + set(types::uac_explicit_ac_barr_list_r15); + return c.get(); +} +void uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::uac_implicit_ac_barr_list_r15: + j.start_array("uac-ImplicitAC-BarringList-r15"); + for (const auto& e1 : c.get()) { + j.write_int(e1); + } + j.end_array(); + break; + case types::uac_explicit_ac_barr_list_r15: + j.start_array("uac-ExplicitAC-BarringList-r15"); + for (const auto& e1 : c.get()) { + e1.to_json(j); + } + j.end_array(); + break; + default: + log_invalid_choice_id(type_, "uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_"); + } + j.end_obj(); +} +SRSASN_CODE uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::uac_implicit_ac_barr_list_r15: + HANDLE_CODE(pack_fixed_seq_of(bref, + &(c.get())[0], + c.get().size(), + integer_packer(1, 8))); + break; + case types::uac_explicit_ac_barr_list_r15: + HANDLE_CODE(pack_dyn_seq_of(bref, c.get(), 1, 63)); + break; + default: + log_invalid_choice_id(type_, "uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::uac_implicit_ac_barr_list_r15: + HANDLE_CODE(unpack_fixed_seq_of(&(c.get())[0], + bref, + c.get().size(), + integer_packer(1, 8))); + break; + case types::uac_explicit_ac_barr_list_r15: + HANDLE_CODE(unpack_dyn_seq_of(c.get(), bref, 1, 63)); + break; + default: + log_invalid_choice_id(type_, "uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + 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); } -uac_barr_per_cat_list_r15_l& uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::set_uac_explicit_ac_barr_list_r15() +applicable_disaster_info_r17_c::ded_plmns_r17_l_& applicable_disaster_info_r17_c::set_ded_plmns_r17() { - set(types::uac_explicit_ac_barr_list_r15); - return c.get(); + set(types::ded_plmns_r17); + return c; } -void uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::to_json(json_writer& j) const +void applicable_disaster_info_r17_c::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::uac_implicit_ac_barr_list_r15: - j.start_array("uac-ImplicitAC-BarringList-r15"); - for (const auto& e1 : c.get()) { - j.write_int(e1); - } - j.end_array(); + case types::no_disaster_roaming_r17: break; - case types::uac_explicit_ac_barr_list_r15: - j.start_array("uac-ExplicitAC-BarringList-r15"); - for (const auto& e1 : c.get()) { + 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_, "uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_"); + log_invalid_choice_id(type_, "applicable_disaster_info_r17_c"); } j.end_obj(); } -SRSASN_CODE uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::pack(bit_ref& bref) const +SRSASN_CODE applicable_disaster_info_r17_c::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::uac_implicit_ac_barr_list_r15: - HANDLE_CODE(pack_fixed_seq_of(bref, - &(c.get())[0], - c.get().size(), - integer_packer(1, 8))); + case types::no_disaster_roaming_r17: break; - case types::uac_explicit_ac_barr_list_r15: - HANDLE_CODE(pack_dyn_seq_of(bref, c.get(), 1, 63)); + 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_, "uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_"); + log_invalid_choice_id(type_, "applicable_disaster_info_r17_c"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::unpack(cbit_ref& bref) +SRSASN_CODE applicable_disaster_info_r17_c::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::uac_implicit_ac_barr_list_r15: - HANDLE_CODE(unpack_fixed_seq_of(&(c.get())[0], - bref, - c.get().size(), - integer_packer(1, 8))); + case types::no_disaster_roaming_r17: break; - case types::uac_explicit_ac_barr_list_r15: - HANDLE_CODE(unpack_dyn_seq_of(c.get(), bref, 1, 63)); + 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_, "uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_"); + log_invalid_choice_id(type_, "applicable_disaster_info_r17_c"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; @@ -3440,6 +4687,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 { @@ -3528,6 +4816,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 { @@ -4193,6 +5507,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(); + break; + case types::orbital_params: + c.destroy(); + 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(); + break; + case types::orbital_params: + c.init(); + 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()); + break; + case types::orbital_params: + c.init(other.c.get()); + 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()); + break; + case types::orbital_params: + c.set(other.c.get()); + 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_orbital_params_r17_s& serving_satellite_info_r17_s::ephemeris_info_r17_c_::set_orbital_params() +{ + set(types::orbital_params); + return c.get(); +} +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().to_json(j); + break; + case types::orbital_params: + j.write_fieldname("orbitalParameters"); + c.get().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().pack(bref)); + break; + case types::orbital_params: + HANDLE_CODE(c.get().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().unpack(bref)); + break; + case types::orbital_params: + HANDLE_CODE(c.get().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 { @@ -4200,6 +5769,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 { @@ -4515,6 +6091,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]) { @@ -4525,6 +6103,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; } @@ -4540,7 +6134,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]) { @@ -4553,6 +6147,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; } @@ -4574,6 +6188,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(); } @@ -5914,6 +7542,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(0, 3279165))); + } + } + } return SRSASN_SUCCESS; } SRSASN_CODE sib_type21_r14_s::unpack(cbit_ref& bref) @@ -5929,6 +7572,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(0, 3279165))); + } + } + } return SRSASN_SUCCESS; } void sib_type21_r14_s::to_json(json_writer& j) const @@ -5941,6 +7600,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(); } @@ -5963,6 +7631,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) @@ -5983,6 +7683,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 @@ -6003,6 +7738,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(); } @@ -6029,6 +7787,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) @@ -6053,6 +7843,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 @@ -6084,6 +7907,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(); } @@ -6217,6 +8059,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 { @@ -6345,6 +8198,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(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(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 { @@ -6402,6 +8451,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]) { @@ -6504,6 +8555,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; } @@ -6545,7 +8612,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]) { @@ -6668,6 +8735,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; } @@ -6786,6 +8871,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(); } @@ -6851,19 +8943,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)); @@ -6873,6 +9110,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]) { @@ -6888,6 +9127,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; } @@ -6895,21 +9146,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]) { @@ -6927,6 +9178,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; } @@ -6940,9 +9207,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(); @@ -6962,6 +9229,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(); } @@ -6987,6 +9265,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]) { @@ -7070,6 +9351,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; } @@ -7079,7 +9376,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]) { @@ -7185,6 +9482,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; } @@ -7277,6 +9596,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(); } @@ -7965,6 +10302,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(); break; + case types::pos_sib1_minus8_v1610: + c.destroy(); + break; + case types::pos_sib2_minus20_v1610: + c.destroy(); + break; + case types::pos_sib2_minus21_v1610: + c.destroy(); + break; + case types::pos_sib2_minus22_v1610: + c.destroy(); + break; + case types::pos_sib2_minus23_v1610: + c.destroy(); + break; + case types::pos_sib2_minus24_v1610: + c.destroy(); + break; + case types::pos_sib2_minus25_v1610: + c.destroy(); + break; + case types::pos_sib4_minus1_v1610: + c.destroy(); + break; + case types::pos_sib5_minus1_v1610: + c.destroy(); + break; + case types::pos_sib1_minus9_v1700: + c.destroy(); + break; + case types::pos_sib1_minus10_v1700: + c.destroy(); + break; default: break; } @@ -8055,6 +10425,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(); break; + case types::pos_sib1_minus8_v1610: + c.init(); + break; + case types::pos_sib2_minus20_v1610: + c.init(); + break; + case types::pos_sib2_minus21_v1610: + c.init(); + break; + case types::pos_sib2_minus22_v1610: + c.init(); + break; + case types::pos_sib2_minus23_v1610: + c.init(); + break; + case types::pos_sib2_minus24_v1610: + c.init(); + break; + case types::pos_sib2_minus25_v1610: + c.init(); + break; + case types::pos_sib4_minus1_v1610: + c.init(); + break; + case types::pos_sib5_minus1_v1610: + c.init(); + break; + case types::pos_sib1_minus9_v1700: + c.init(); + break; + case types::pos_sib1_minus10_v1700: + c.init(); + break; case types::nulltype: break; default: @@ -8147,6 +10550,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()); break; + case types::pos_sib1_minus8_v1610: + c.init(other.c.get()); + break; + case types::pos_sib2_minus20_v1610: + c.init(other.c.get()); + break; + case types::pos_sib2_minus21_v1610: + c.init(other.c.get()); + break; + case types::pos_sib2_minus22_v1610: + c.init(other.c.get()); + break; + case types::pos_sib2_minus23_v1610: + c.init(other.c.get()); + break; + case types::pos_sib2_minus24_v1610: + c.init(other.c.get()); + break; + case types::pos_sib2_minus25_v1610: + c.init(other.c.get()); + break; + case types::pos_sib4_minus1_v1610: + c.init(other.c.get()); + break; + case types::pos_sib5_minus1_v1610: + c.init(other.c.get()); + break; + case types::pos_sib1_minus9_v1700: + c.init(other.c.get()); + break; + case types::pos_sib1_minus10_v1700: + c.init(other.c.get()); + break; case types::nulltype: break; default: @@ -8207,40 +10643,73 @@ pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::operator=( case types::pos_sib2_minus8_r15: c.set(other.c.get()); break; - case types::pos_sib2_minus9_r15: + case types::pos_sib2_minus9_r15: + c.set(other.c.get()); + break; + case types::pos_sib2_minus10_r15: + c.set(other.c.get()); + break; + case types::pos_sib2_minus11_r15: + c.set(other.c.get()); + break; + case types::pos_sib2_minus12_r15: + c.set(other.c.get()); + break; + case types::pos_sib2_minus13_r15: + c.set(other.c.get()); + break; + case types::pos_sib2_minus14_r15: + c.set(other.c.get()); + break; + case types::pos_sib2_minus15_r15: + c.set(other.c.get()); + break; + case types::pos_sib2_minus16_r15: + c.set(other.c.get()); + break; + case types::pos_sib2_minus17_r15: + c.set(other.c.get()); + break; + case types::pos_sib2_minus18_r15: + c.set(other.c.get()); + break; + case types::pos_sib2_minus19_r15: + c.set(other.c.get()); + break; + case types::pos_sib3_minus1_r15: c.set(other.c.get()); break; - case types::pos_sib2_minus10_r15: + case types::pos_sib1_minus8_v1610: c.set(other.c.get()); break; - case types::pos_sib2_minus11_r15: + case types::pos_sib2_minus20_v1610: c.set(other.c.get()); break; - case types::pos_sib2_minus12_r15: + case types::pos_sib2_minus21_v1610: c.set(other.c.get()); break; - case types::pos_sib2_minus13_r15: + case types::pos_sib2_minus22_v1610: c.set(other.c.get()); break; - case types::pos_sib2_minus14_r15: + case types::pos_sib2_minus23_v1610: c.set(other.c.get()); break; - case types::pos_sib2_minus15_r15: + case types::pos_sib2_minus24_v1610: c.set(other.c.get()); break; - case types::pos_sib2_minus16_r15: + case types::pos_sib2_minus25_v1610: c.set(other.c.get()); break; - case types::pos_sib2_minus17_r15: + case types::pos_sib4_minus1_v1610: c.set(other.c.get()); break; - case types::pos_sib2_minus18_r15: + case types::pos_sib5_minus1_v1610: c.set(other.c.get()); break; - case types::pos_sib2_minus19_r15: + case types::pos_sib1_minus9_v1700: c.set(other.c.get()); break; - case types::pos_sib3_minus1_r15: + case types::pos_sib1_minus10_v1700: c.set(other.c.get()); break; case types::nulltype: @@ -8386,6 +10855,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& 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& 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& 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& 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& 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& 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& 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& 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& 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& 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& 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(); +} void pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::to_json(json_writer& j) const { j.start_obj(); @@ -8498,6 +11022,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().to_json(j); break; + case types::pos_sib1_minus8_v1610: + j.write_fieldname("posSib1-8-v1610"); + c.get().to_json(j); + break; + case types::pos_sib2_minus20_v1610: + j.write_fieldname("posSib2-20-v1610"); + c.get().to_json(j); + break; + case types::pos_sib2_minus21_v1610: + j.write_fieldname("posSib2-21-v1610"); + c.get().to_json(j); + break; + case types::pos_sib2_minus22_v1610: + j.write_fieldname("posSib2-22-v1610"); + c.get().to_json(j); + break; + case types::pos_sib2_minus23_v1610: + j.write_fieldname("posSib2-23-v1610"); + c.get().to_json(j); + break; + case types::pos_sib2_minus24_v1610: + j.write_fieldname("posSib2-24-v1610"); + c.get().to_json(j); + break; + case types::pos_sib2_minus25_v1610: + j.write_fieldname("posSib2-25-v1610"); + c.get().to_json(j); + break; + case types::pos_sib4_minus1_v1610: + j.write_fieldname("posSib4-1-v1610"); + c.get().to_json(j); + break; + case types::pos_sib5_minus1_v1610: + j.write_fieldname("posSib5-1-v1610"); + c.get().to_json(j); + break; + case types::pos_sib1_minus9_v1700: + j.write_fieldname("posSib1-9-v1700"); + c.get().to_json(j); + break; + case types::pos_sib1_minus10_v1700: + j.write_fieldname("posSib1-10-v1700"); + c.get().to_json(j); + break; default: log_invalid_choice_id(type_, "pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_"); } @@ -8588,6 +11156,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().pack(bref)); break; + case types::pos_sib1_minus8_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::pos_sib2_minus20_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::pos_sib2_minus21_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::pos_sib2_minus22_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::pos_sib2_minus23_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::pos_sib2_minus24_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::pos_sib2_minus25_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::pos_sib4_minus1_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::pos_sib5_minus1_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::pos_sib1_minus9_v1700: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::pos_sib1_minus10_v1700: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().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; @@ -8681,6 +11293,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().unpack(bref)); break; + case types::pos_sib1_minus8_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::pos_sib2_minus20_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::pos_sib2_minus21_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::pos_sib2_minus22_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::pos_sib2_minus23_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::pos_sib2_minus24_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::pos_sib2_minus25_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::pos_sib4_minus1_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::pos_sib5_minus1_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::pos_sib1_minus9_v1700: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::pos_sib1_minus10_v1700: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().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; @@ -8760,6 +11416,27 @@ void sib_info_item_c::destroy_() case types::sib26_v1530: c.destroy(); break; + case types::sib26a_v1610: + c.destroy(); + break; + case types::sib27_v1610: + c.destroy(); + break; + case types::sib28_v1610: + c.destroy(); + break; + case types::sib29_v1610: + c.destroy(); + break; + case types::sib30_v1700: + c.destroy(); + break; + case types::sib31_v1700: + c.destroy(); + break; + case types::sib32_v1700: + c.destroy(); + break; default: break; } @@ -8838,6 +11515,27 @@ void sib_info_item_c::set(types::options e) case types::sib26_v1530: c.init(); break; + case types::sib26a_v1610: + c.init(); + break; + case types::sib27_v1610: + c.init(); + break; + case types::sib28_v1610: + c.init(); + break; + case types::sib29_v1610: + c.init(); + break; + case types::sib30_v1700: + c.init(); + break; + case types::sib31_v1700: + c.init(); + break; + case types::sib32_v1700: + c.init(); + break; case types::nulltype: break; default: @@ -8917,6 +11615,27 @@ sib_info_item_c::sib_info_item_c(const sib_info_item_c& other) case types::sib26_v1530: c.init(other.c.get()); break; + case types::sib26a_v1610: + c.init(other.c.get()); + break; + case types::sib27_v1610: + c.init(other.c.get()); + break; + case types::sib28_v1610: + c.init(other.c.get()); + break; + case types::sib29_v1610: + c.init(other.c.get()); + break; + case types::sib30_v1700: + c.init(other.c.get()); + break; + case types::sib31_v1700: + c.init(other.c.get()); + break; + case types::sib32_v1700: + c.init(other.c.get()); + break; case types::nulltype: break; default: @@ -8999,6 +11718,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()); break; + case types::sib26a_v1610: + c.set(other.c.get()); + break; + case types::sib27_v1610: + c.set(other.c.get()); + break; + case types::sib28_v1610: + c.set(other.c.get()); + break; + case types::sib29_v1610: + c.set(other.c.get()); + break; + case types::sib30_v1700: + c.set(other.c.get()); + break; + case types::sib31_v1700: + c.set(other.c.get()); + break; + case types::sib32_v1700: + c.set(other.c.get()); + break; case types::nulltype: break; default: @@ -9122,6 +11862,41 @@ sib_type26_r15_s& sib_info_item_c::set_sib26_v1530() set(types::sib26_v1530); return c.get(); } +sib_type26a_r16_s& sib_info_item_c::set_sib26a_v1610() +{ + set(types::sib26a_v1610); + return c.get(); +} +sib_type27_r16_s& sib_info_item_c::set_sib27_v1610() +{ + set(types::sib27_v1610); + return c.get(); +} +sib_type28_r16_s& sib_info_item_c::set_sib28_v1610() +{ + set(types::sib28_v1610); + return c.get(); +} +sib_type29_r16_s& sib_info_item_c::set_sib29_v1610() +{ + set(types::sib29_v1610); + return c.get(); +} +sib_type30_r17_s& sib_info_item_c::set_sib30_v1700() +{ + set(types::sib30_v1700); + return c.get(); +} +sib_type31_r17_s& sib_info_item_c::set_sib31_v1700() +{ + set(types::sib31_v1700); + return c.get(); +} +sib_type32_r17_s& sib_info_item_c::set_sib32_v1700() +{ + set(types::sib32_v1700); + return c.get(); +} void sib_info_item_c::to_json(json_writer& j) const { j.start_obj(); @@ -9218,6 +11993,34 @@ void sib_info_item_c::to_json(json_writer& j) const j.write_fieldname("sib26-v1530"); c.get().to_json(j); break; + case types::sib26a_v1610: + j.write_fieldname("sib26a-v1610"); + c.get().to_json(j); + break; + case types::sib27_v1610: + j.write_fieldname("sib27-v1610"); + c.get().to_json(j); + break; + case types::sib28_v1610: + j.write_fieldname("sib28-v1610"); + c.get().to_json(j); + break; + case types::sib29_v1610: + j.write_fieldname("sib29-v1610"); + c.get().to_json(j); + break; + case types::sib30_v1700: + j.write_fieldname("sib30-v1700"); + c.get().to_json(j); + break; + case types::sib31_v1700: + j.write_fieldname("sib31-v1700"); + c.get().to_json(j); + break; + case types::sib32_v1700: + j.write_fieldname("sib32-v1700"); + c.get().to_json(j); + break; default: log_invalid_choice_id(type_, "sib_info_item_c"); } @@ -9309,6 +12112,34 @@ SRSASN_CODE sib_info_item_c::pack(bit_ref& bref) const varlength_field_pack_guard varlen_scope(bref, false); HANDLE_CODE(c.get().pack(bref)); } break; + case types::sib26a_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib27_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib28_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib29_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib30_v1700: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib31_v1700: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib32_v1700: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; default: log_invalid_choice_id(type_, "sib_info_item_c"); return SRSASN_ERROR_ENCODE_FAIL; @@ -9403,6 +12234,34 @@ SRSASN_CODE sib_info_item_c::unpack(cbit_ref& bref) varlength_field_unpack_guard varlen_scope(bref, false); HANDLE_CODE(c.get().unpack(bref)); } break; + case types::sib26a_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib27_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib28_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib29_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib30_v1700: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib31_v1700: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib32_v1700: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; default: log_invalid_choice_id(type_, "sib_info_item_c"); return SRSASN_ERROR_DECODE_FAIL; @@ -10550,23 +13409,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 @@ -10629,6 +13483,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 { @@ -10642,6 +13540,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; } @@ -10657,6 +13558,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; } @@ -10679,8 +13583,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 a20698138b..71eaf70263 100644 --- a/lib/src/asn1/rrc/dl_ccch_msg.cc +++ b/lib/src/asn1/rrc/dl_ccch_msg.cc @@ -426,6 +426,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 { @@ -816,6 +853,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; } @@ -827,6 +867,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; } @@ -838,8 +881,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(); } @@ -885,16 +927,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(); break; - case types::cdma2000_hrpd_r15: + case types::cdma2000_hrpd: c.destroy(); break; - case types::cdma2000_minus1x_rtt_r15: + case types::cdma2000_minus1x_rtt: c.destroy(); break; - case types::utra_tdd_r15: + case types::utra_tdd: c.destroy(); break; default: @@ -906,20 +948,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(); break; - case types::utra_fdd_r15: + case types::utra_fdd: break; - case types::cdma2000_hrpd_r15: + case types::cdma2000_hrpd: c.init(); break; - case types::cdma2000_minus1x_rtt_r15: + case types::cdma2000_minus1x_rtt: c.init(); break; - case types::utra_tdd_r15: + case types::utra_tdd: c.init(); break; case types::nulltype: @@ -932,22 +974,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()); break; - case types::geran_r15: + case types::geran: c.init(other.c.get()); break; - case types::utra_fdd_r15: + case types::utra_fdd: c.init(other.c.get()); break; - case types::cdma2000_hrpd_r15: + case types::cdma2000_hrpd: c.init(other.c.get()); break; - case types::cdma2000_minus1x_rtt_r15: + case types::cdma2000_minus1x_rtt: c.init(other.c.get()); break; - case types::utra_tdd_r15: + case types::utra_tdd: c.init(other.c.get()); break; case types::nulltype: @@ -964,22 +1006,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()); break; - case types::geran_r15: + case types::geran: c.set(other.c.get()); break; - case types::utra_fdd_r15: + case types::utra_fdd: c.set(other.c.get()); break; - case types::cdma2000_hrpd_r15: + case types::cdma2000_hrpd: c.set(other.c.get()); break; - case types::cdma2000_minus1x_rtt_r15: + case types::cdma2000_minus1x_rtt: c.set(other.c.get()); break; - case types::utra_tdd_r15: + case types::utra_tdd: c.set(other.c.get()); break; case types::nulltype: @@ -990,60 +1032,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(); } -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(); } -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(); } -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& 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_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(); } 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()); + case types::eutra: + j.write_int("eutra", c.get()); break; - case types::geran_r15: - j.write_fieldname("geran-r15"); + case types::geran: + j.write_fieldname("geran"); c.get().to_json(j); break; - case types::utra_fdd_r15: - j.write_int("utra-FDD-r15", c.get()); + case types::utra_fdd: + j.write_int("utra-FDD", c.get()); break; - case types::cdma2000_hrpd_r15: - j.write_fieldname("cdma2000-HRPD-r15"); + case types::cdma2000_hrpd: + j.write_fieldname("cdma2000-HRPD"); c.get().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().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()) { j.write_int(e1); } @@ -1058,22 +1100,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)0u, (uint32_t)262143u)); break; - case types::geran_r15: + case types::geran: HANDLE_CODE(c.get().pack(bref)); break; - case types::utra_fdd_r15: + case types::utra_fdd: HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)16383u)); break; - case types::cdma2000_hrpd_r15: + case types::cdma2000_hrpd: HANDLE_CODE(c.get().pack(bref)); break; - case types::cdma2000_minus1x_rtt_r15: + case types::cdma2000_minus1x_rtt: HANDLE_CODE(c.get().pack(bref)); break; - case types::utra_tdd_r15: + case types::utra_tdd: HANDLE_CODE( pack_dyn_seq_of(bref, c.get(), 1, 6, integer_packer(0, 16383))); break; @@ -1089,22 +1131,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(), bref, (uint32_t)0u, (uint32_t)262143u)); break; - case types::geran_r15: + case types::geran: HANDLE_CODE(c.get().unpack(bref)); break; - case types::utra_fdd_r15: + case types::utra_fdd: HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)16383u)); break; - case types::cdma2000_hrpd_r15: + case types::cdma2000_hrpd: HANDLE_CODE(c.get().unpack(bref)); break; - case types::cdma2000_minus1x_rtt_r15: + case types::cdma2000_minus1x_rtt: HANDLE_CODE(c.get().unpack(bref)); break; - case types::utra_tdd_r15: + case types::utra_tdd: HANDLE_CODE( unpack_dyn_seq_of(c.get(), bref, 1, 6, integer_packer(0, 16383))); break; diff --git a/lib/src/asn1/rrc/dl_dcch_msg.cc b/lib/src/asn1/rrc/dl_dcch_msg.cc index fe46c91b4e..c616201d49 100644 --- a/lib/src/asn1/rrc/dl_dcch_msg.cc +++ b/lib/src/asn1/rrc/dl_dcch_msg.cc @@ -29,6 +29,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(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(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 { @@ -149,6 +231,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(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(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 { @@ -250,6 +469,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 { @@ -398,89 +684,693 @@ SRSASN_CODE ip_address_r13_c::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -// PhysicalConfigDedicated-v1370 ::= SEQUENCE -SRSASN_CODE phys_cfg_ded_v1370_s::pack(bit_ref& bref) const +// PUR-MPDCCH-Config-r16 ::= SEQUENCE +SRSASN_CODE pur_mpdcch_cfg_r16_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(pucch_cfg_ded_v1370_present, 1)); - - if (pucch_cfg_ded_v1370_present) { - HANDLE_CODE(pucch_cfg_ded_v1370.pack(bref)); - } + 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 phys_cfg_ded_v1370_s::unpack(cbit_ref& bref) +SRSASN_CODE pur_mpdcch_cfg_r16_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(pucch_cfg_ded_v1370_present, 1)); - - if (pucch_cfg_ded_v1370_present) { - HANDLE_CODE(pucch_cfg_ded_v1370.unpack(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 phys_cfg_ded_v1370_s::to_json(json_writer& j) const +void pur_mpdcch_cfg_r16_s::to_json(json_writer& j) const { j.start_obj(); - if (pucch_cfg_ded_v1370_present) { - j.write_fieldname("pucch-ConfigDedicated-v1370"); - pucch_cfg_ded_v1370.to_json(j); - } + 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(); } -// RAN-AreaConfig-r15 ::= SEQUENCE -SRSASN_CODE ran_area_cfg_r15_s::pack(bit_ref& bref) const +const char* pur_mpdcch_cfg_r16_s::mpdcch_prb_pairs_cfg_r16_s_::num_prb_pairs_r16_opts::to_string() const { - HANDLE_CODE(bref.pack(ran_area_code_list_r15_present, 1)); - - HANDLE_CODE(tac_minus5_gc_r15.pack(bref)); - if (ran_area_code_list_r15_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, ran_area_code_list_r15, 1, 32, integer_packer(0, 255))); - } - - return SRSASN_SUCCESS; + 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_"); } -SRSASN_CODE ran_area_cfg_r15_s::unpack(cbit_ref& bref) +uint8_t pur_mpdcch_cfg_r16_s::mpdcch_prb_pairs_cfg_r16_s_::num_prb_pairs_r16_opts::to_number() const { - HANDLE_CODE(bref.unpack(ran_area_code_list_r15_present, 1)); - - HANDLE_CODE(tac_minus5_gc_r15.unpack(bref)); - if (ran_area_code_list_r15_present) { - HANDLE_CODE(unpack_dyn_seq_of(ran_area_code_list_r15, bref, 1, 32, integer_packer(0, 255))); - } + 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_"); +} - return SRSASN_SUCCESS; +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_"); } -void ran_area_cfg_r15_s::to_json(json_writer& j) const +uint16_t pur_mpdcch_cfg_r16_s::mpdcch_num_repeat_r16_opts::to_number() const { - j.start_obj(); - j.write_str("trackingAreaCode-5GC-r15", tac_minus5_gc_r15.to_string()); - if (ran_area_code_list_r15_present) { - j.start_array("ran-AreaCodeList-r15"); - for (const auto& e1 : ran_area_code_list_r15) { - j.write_int(e1); - } - j.end_array(); - } - j.end_obj(); + 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_"); } -// RadioResourceConfigCommonSCell-v1440 ::= SEQUENCE -SRSASN_CODE rr_cfg_common_scell_v1440_s::pack(bit_ref& bref) const +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) { - HANDLE_CODE( - pack_integer(bref, ul_cfg_v1440.ul_freq_info_v1440.add_spec_emission_scell_v1440, (uint16_t)33u, (uint16_t)288u)); - - return SRSASN_SUCCESS; + destroy_(); + type_ = e; } -SRSASN_CODE rr_cfg_common_scell_v1440_s::unpack(cbit_ref& bref) +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) { - HANDLE_CODE(unpack_integer( - ul_cfg_v1440.ul_freq_info_v1440.add_spec_emission_scell_v1440, bref, (uint16_t)33u, (uint16_t)288u)); - - return SRSASN_SUCCESS; -} + type_ = other.type(); + switch (type_) { + case types::fdd: + c.init(other.c.get()); + break; + case types::tdd: + c.init(other.c.get()); + 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()); + break; + case types::tdd: + c.set(other.c.get()); + 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(); +} +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(); +} +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().to_string()); + break; + case types::tdd: + j.write_str("tdd", c.get().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().pack(bref)); + break; + case types::tdd: + HANDLE_CODE(c.get().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().unpack(bref)); + break; + case types::tdd: + HANDLE_CODE(c.get().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(); + break; + case types::ce_mode_b: + c.destroy(); + 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(); + break; + case types::ce_mode_b: + c.init(); + 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()); + break; + case types::ce_mode_b: + c.init(other.c.get()); + 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()); + break; + case types::ce_mode_b: + c.set(other.c.get()); + 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(); +} +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(); +} +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().num_rus_r16.to_string()); + j.write_str("prb-AllocationInfo-r16", c.get().prb_alloc_info_r16.to_string()); + j.write_str("mcs-r16", c.get().mcs_r16.to_string()); + j.write_str("numRepetitions-r16", c.get().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().sub_prb_alloc_r16); + j.write_bool("numRUs-r16", c.get().num_rus_r16); + j.write_str("prb-AllocationInfo-r16", c.get().prb_alloc_info_r16.to_string()); + j.write_str("mcs-r16", c.get().mcs_r16.to_string()); + j.write_str("numRepetitions-r16", c.get().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().num_rus_r16.pack(bref)); + HANDLE_CODE(c.get().prb_alloc_info_r16.pack(bref)); + HANDLE_CODE(c.get().mcs_r16.pack(bref)); + HANDLE_CODE(c.get().num_repeats_r16.pack(bref)); + break; + case types::ce_mode_b: + HANDLE_CODE(bref.pack(c.get().sub_prb_alloc_r16, 1)); + HANDLE_CODE(bref.pack(c.get().num_rus_r16, 1)); + HANDLE_CODE(c.get().prb_alloc_info_r16.pack(bref)); + HANDLE_CODE(c.get().mcs_r16.pack(bref)); + HANDLE_CODE(c.get().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().num_rus_r16.unpack(bref)); + HANDLE_CODE(c.get().prb_alloc_info_r16.unpack(bref)); + HANDLE_CODE(c.get().mcs_r16.unpack(bref)); + HANDLE_CODE(c.get().num_repeats_r16.unpack(bref)); + break; + case types::ce_mode_b: + HANDLE_CODE(bref.unpack(c.get().sub_prb_alloc_r16, 1)); + HANDLE_CODE(bref.unpack(c.get().num_rus_r16, 1)); + HANDLE_CODE(c.get().prb_alloc_info_r16.unpack(bref)); + HANDLE_CODE(c.get().mcs_r16.unpack(bref)); + HANDLE_CODE(c.get().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 +{ + HANDLE_CODE(bref.pack(pucch_cfg_ded_v1370_present, 1)); + + if (pucch_cfg_ded_v1370_present) { + HANDLE_CODE(pucch_cfg_ded_v1370.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE phys_cfg_ded_v1370_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(pucch_cfg_ded_v1370_present, 1)); + + if (pucch_cfg_ded_v1370_present) { + HANDLE_CODE(pucch_cfg_ded_v1370.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void phys_cfg_ded_v1370_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (pucch_cfg_ded_v1370_present) { + j.write_fieldname("pucch-ConfigDedicated-v1370"); + pucch_cfg_ded_v1370.to_json(j); + } + j.end_obj(); +} + +// RAN-AreaConfig-r15 ::= SEQUENCE +SRSASN_CODE ran_area_cfg_r15_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(ran_area_code_list_r15_present, 1)); + + HANDLE_CODE(tac_minus5_gc_r15.pack(bref)); + if (ran_area_code_list_r15_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, ran_area_code_list_r15, 1, 32, integer_packer(0, 255))); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE ran_area_cfg_r15_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(ran_area_code_list_r15_present, 1)); + + HANDLE_CODE(tac_minus5_gc_r15.unpack(bref)); + if (ran_area_code_list_r15_present) { + HANDLE_CODE(unpack_dyn_seq_of(ran_area_code_list_r15, bref, 1, 32, integer_packer(0, 255))); + } + + return SRSASN_SUCCESS; +} +void ran_area_cfg_r15_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("trackingAreaCode-5GC-r15", tac_minus5_gc_r15.to_string()); + if (ran_area_code_list_r15_present) { + j.start_array("ran-AreaCodeList-r15"); + for (const auto& e1 : ran_area_code_list_r15) { + j.write_int(e1); + } + j.end_array(); + } + 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 +{ + HANDLE_CODE( + pack_integer(bref, ul_cfg_v1440.ul_freq_info_v1440.add_spec_emission_scell_v1440, (uint16_t)33u, (uint16_t)288u)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE rr_cfg_common_scell_v1440_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer( + ul_cfg_v1440.ul_freq_info_v1440.add_spec_emission_scell_v1440, bref, (uint16_t)33u, (uint16_t)288u)); + + return SRSASN_SUCCESS; +} void rr_cfg_common_scell_v1440_s::to_json(json_writer& j) const { j.start_obj(); @@ -618,25 +1508,13 @@ SRSASN_CODE sl_tx_pool_to_add_mod_r14_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void sl_tx_pool_to_add_mod_r14_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_int("poolIdentity-r14", pool_id_r14); - j.write_fieldname("pool-r14"); - pool_r14.to_json(j); - 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 +void sl_tx_pool_to_add_mod_r14_s::to_json(json_writer& j) const { - static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6}; - return map_enum_number(options, 7, value, "sf_assign_r15_e"); + j.start_obj(); + j.write_int("poolIdentity-r14", pool_id_r14); + j.write_fieldname("pool-r14"); + pool_r14.to_json(j); + j.end_obj(); } // UplinkPowerControlCommonPSCell-r12 ::= SEQUENCE @@ -842,6 +1720,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 { @@ -871,6 +1999,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; } @@ -902,6 +2033,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; } @@ -940,6 +2074,34 @@ void rrc_conn_recfg_v1530_ies_s::to_json(json_writer& j) const j.write_fieldname("smtc-r15"); smtc_r15.to_json(j); } + 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(); @@ -1554,73 +2716,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 { @@ -2484,6 +3579,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 { @@ -3363,6 +4567,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) { @@ -3523,10 +4764,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(); break; - case types::ran_area_cfg_list_r15: + case types::ran_area_cfg_list: c.destroy(); break; default: @@ -3538,10 +4779,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(); break; - case types::ran_area_cfg_list_r15: + case types::ran_area_cfg_list: c.init(); break; case types::nulltype: @@ -3554,10 +4795,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()); break; - case types::ran_area_cfg_list_r15: + case types::ran_area_cfg_list: c.init(other.c.get()); break; case types::nulltype: @@ -3573,10 +4814,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()); break; - case types::ran_area_cfg_list_r15: + case types::ran_area_cfg_list: c.set(other.c.get()); break; case types::nulltype: @@ -3587,29 +4828,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_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(); } 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()) { 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()) { e1.to_json(j); } @@ -3624,10 +4865,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(), 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(), 1, 8)); break; default: @@ -3642,10 +4883,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(), 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(), bref, 1, 8)); break; default: @@ -3800,6 +5041,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) @@ -3807,6 +5052,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 @@ -3817,8 +5066,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(); } @@ -4230,6 +5478,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) @@ -4242,6 +5509,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 @@ -4255,6 +5543,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(); } @@ -4616,6 +5920,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 { @@ -6240,6 +7649,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 { @@ -6516,6 +7954,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 { @@ -6561,6 +8028,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; } @@ -6573,6 +8043,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; } @@ -6588,8 +8061,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(); } @@ -7122,6 +8594,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(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(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(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(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 { @@ -7137,16 +8772,64 @@ SRSASN_CODE report_proximity_cfg_r9_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void report_proximity_cfg_r9_s::to_json(json_writer& j) const +void report_proximity_cfg_r9_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (proximity_ind_eutra_r9_present) { + j.write_str("proximityIndicationEUTRA-r9", "enabled"); + } + if (proximity_ind_utra_r9_present) { + j.write_str("proximityIndicationUTRA-r9", "enabled"); + } + 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 { - j.start_obj(); - if (proximity_ind_eutra_r9_present) { - j.write_str("proximityIndicationEUTRA-r9", "enabled"); - } - if (proximity_ind_utra_r9_present) { - j.write_str("proximityIndicationUTRA-r9", "enabled"); - } - j.end_obj(); + 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 @@ -7381,6 +9064,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]) { @@ -7447,6 +9133,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; } @@ -7460,7 +9166,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]) { @@ -7545,6 +9251,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; } @@ -7601,6 +9329,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(); } @@ -8113,6 +9851,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) @@ -8120,6 +9862,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 @@ -8130,8 +9876,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(); } @@ -8220,6 +9965,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 { @@ -8261,6 +10054,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 { @@ -9280,6 +11110,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; } @@ -9291,6 +11124,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; } @@ -9302,8 +11138,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(); } @@ -10985,6 +12820,9 @@ void redirected_carrier_info_c::destroy_() case types::nr_r15: c.destroy(); break; + case types::nr_r17: + c.destroy(); + break; default: break; } @@ -11015,6 +12853,9 @@ void redirected_carrier_info_c::set(types::options e) case types::nr_r15: c.init(); break; + case types::nr_r17: + c.init(); + break; case types::nulltype: break; default: @@ -11049,6 +12890,9 @@ redirected_carrier_info_c::redirected_carrier_info_c(const redirected_carrier_in case types::nr_r15: c.init(other.c.get()); break; + case types::nr_r17: + c.init(other.c.get()); + break; case types::nulltype: break; default: @@ -11086,6 +12930,9 @@ redirected_carrier_info_c& redirected_carrier_info_c::operator=(const redirected case types::nr_r15: c.set(other.c.get()); break; + case types::nr_r17: + c.set(other.c.get()); + break; case types::nulltype: break; default: @@ -11134,6 +12981,11 @@ carrier_info_nr_r15_s& redirected_carrier_info_c::set_nr_r15() set(types::nr_r15); return c.get(); } +carrier_info_nr_r17_s& redirected_carrier_info_c::set_nr_r17() +{ + set(types::nr_r17); + return c.get(); +} void redirected_carrier_info_c::to_json(json_writer& j) const { j.start_obj(); @@ -11170,6 +13022,10 @@ void redirected_carrier_info_c::to_json(json_writer& j) const j.write_fieldname("nr-r15"); c.get().to_json(j); break; + case types::nr_r17: + j.write_fieldname("nr-r17"); + c.get().to_json(j); + break; default: log_invalid_choice_id(type_, "redirected_carrier_info_c"); } @@ -11206,6 +13062,10 @@ SRSASN_CODE redirected_carrier_info_c::pack(bit_ref& bref) const varlength_field_pack_guard varlen_scope(bref, false); HANDLE_CODE(c.get().pack(bref)); } break; + case types::nr_r17: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; default: log_invalid_choice_id(type_, "redirected_carrier_info_c"); return SRSASN_ERROR_ENCODE_FAIL; @@ -11245,6 +13105,10 @@ SRSASN_CODE redirected_carrier_info_c::unpack(cbit_ref& bref) varlength_field_unpack_guard varlen_scope(bref, false); HANDLE_CODE(c.get().unpack(bref)); } break; + case types::nr_r17: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; default: log_invalid_choice_id(type_, "redirected_carrier_info_c"); return SRSASN_ERROR_DECODE_FAIL; @@ -11377,6 +13241,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 { @@ -11435,13 +13351,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(); break; - case types::ded_info_cdma2000_minus1_xrtt_r15: + case types::ded_info_cdma2000_minus1_xrtt: c.destroy(); break; - case types::ded_info_cdma2000_hrpd_r15: + case types::ded_info_cdma2000_hrpd: c.destroy(); break; default: @@ -11453,13 +13369,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(); break; - case types::ded_info_cdma2000_minus1_xrtt_r15: + case types::ded_info_cdma2000_minus1_xrtt: c.init(); break; - case types::ded_info_cdma2000_hrpd_r15: + case types::ded_info_cdma2000_hrpd: c.init(); break; case types::nulltype: @@ -11473,13 +13389,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()); break; - case types::ded_info_cdma2000_minus1_xrtt_r15: + case types::ded_info_cdma2000_minus1_xrtt: c.init(other.c.get()); break; - case types::ded_info_cdma2000_hrpd_r15: + case types::ded_info_cdma2000_hrpd: c.init(other.c.get()); break; case types::nulltype: @@ -11496,13 +13412,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()); break; - case types::ded_info_cdma2000_minus1_xrtt_r15: + case types::ded_info_cdma2000_minus1_xrtt: c.set(other.c.get()); break; - case types::ded_info_cdma2000_hrpd_r15: + case types::ded_info_cdma2000_hrpd: c.set(other.c.get()); break; case types::nulltype: @@ -11513,33 +13429,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& 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& 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(); } 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().to_string()); + case types::ded_info_nas: + j.write_str("dedicatedInfoNAS", c.get().to_string()); break; - case types::ded_info_cdma2000_minus1_xrtt_r15: - j.write_str("dedicatedInfoCDMA2000-1XRTT-r15", c.get().to_string()); + case types::ded_info_cdma2000_minus1_xrtt: + j.write_str("dedicatedInfoCDMA2000-1XRTT", c.get().to_string()); break; - case types::ded_info_cdma2000_hrpd_r15: - j.write_str("dedicatedInfoCDMA2000-HRPD-r15", c.get().to_string()); + case types::ded_info_cdma2000_hrpd: + j.write_str("dedicatedInfoCDMA2000-HRPD", c.get().to_string()); break; default: log_invalid_choice_id(type_, "dl_info_transfer_r15_ies_s::ded_info_type_r15_c_"); @@ -11550,13 +13466,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().pack(bref)); break; - case types::ded_info_cdma2000_minus1_xrtt_r15: + case types::ded_info_cdma2000_minus1_xrtt: HANDLE_CODE(c.get().pack(bref)); break; - case types::ded_info_cdma2000_hrpd_r15: + case types::ded_info_cdma2000_hrpd: HANDLE_CODE(c.get().pack(bref)); break; default: @@ -11571,13 +13487,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().unpack(bref)); break; - case types::ded_info_cdma2000_minus1_xrtt_r15: + case types::ded_info_cdma2000_minus1_xrtt: HANDLE_CODE(c.get().unpack(bref)); break; - case types::ded_info_cdma2000_hrpd_r15: + case types::ded_info_cdma2000_hrpd: HANDLE_CODE(c.get().unpack(bref)); break; default: @@ -12844,6 +14760,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 { @@ -14642,6 +16640,9 @@ void dl_dcch_msg_type_c::c1_c_::destroy_() case types::rrc_conn_resume_r13: c.destroy(); break; + case types::dl_ded_msg_segment_r16: + c.destroy(); + break; default: break; } @@ -14690,7 +16691,8 @@ void dl_dcch_msg_type_c::c1_c_::set(types::options e) case types::rrc_conn_resume_r13: c.init(); break; - case types::spare3: + case types::dl_ded_msg_segment_r16: + c.init(); break; case types::spare2: break; @@ -14745,7 +16747,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()); break; - case types::spare3: + case types::dl_ded_msg_segment_r16: + c.init(other.c.get()); break; case types::spare2: break; @@ -14803,7 +16806,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()); break; - case types::spare3: + case types::dl_ded_msg_segment_r16: + c.set(other.c.get()); break; case types::spare2: break; @@ -14882,9 +16886,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(); } -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(); } void dl_dcch_msg_type_c::c1_c_::set_spare2() { @@ -14950,7 +16955,9 @@ void dl_dcch_msg_type_c::c1_c_::to_json(json_writer& j) const j.write_fieldname("rrcConnectionResume-r13"); c.get().to_json(j); break; - case types::spare3: + case types::dl_ded_msg_segment_r16: + j.write_fieldname("dlDedicatedMessageSegment-r16"); + c.get().to_json(j); break; case types::spare2: break; @@ -15004,7 +17011,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().pack(bref)); break; - case types::spare3: + case types::dl_ded_msg_segment_r16: + HANDLE_CODE(c.get().pack(bref)); break; case types::spare2: break; @@ -15061,7 +17069,8 @@ SRSASN_CODE dl_dcch_msg_type_c::c1_c_::unpack(cbit_ref& bref) case types::rrc_conn_resume_r13: HANDLE_CODE(c.get().unpack(bref)); break; - case types::spare3: + case types::dl_ded_msg_segment_r16: + HANDLE_CODE(c.get().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 1898d2a300..c437e1095c 100644 --- a/lib/src/asn1/rrc/ho_cmd.cc +++ b/lib/src/asn1/rrc/ho_cmd.cc @@ -267,6 +267,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 { @@ -493,6 +514,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]) { @@ -544,6 +566,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; } @@ -561,7 +591,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]) { @@ -623,6 +653,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; } @@ -674,6 +714,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(); } @@ -1066,7 +1110,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)); @@ -1074,8 +1118,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) { @@ -1117,7 +1161,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)); @@ -1125,8 +1169,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) { @@ -1169,8 +1213,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) { @@ -1216,6 +1260,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 { @@ -1569,6 +1769,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 { @@ -1578,6 +1997,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; } @@ -1589,6 +2011,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; } @@ -1600,8 +2025,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(); } @@ -1979,8 +2403,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 2398c67276..dc8eb7ed46 100644 --- a/lib/src/asn1/rrc/meascfg.cc +++ b/lib/src/asn1/rrc/meascfg.cc @@ -45,6 +45,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 { @@ -112,456 +124,172 @@ 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(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(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 +// MTC-SSB-NR-r15 ::= SEQUENCE +SRSASN_CODE mtc_ssb_nr_r15_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)); + HANDLE_CODE(periodicity_and_offset_r15.pack(bref)); + HANDLE_CODE(ssb_dur_r15.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE carrier_freqs_geran_s::unpack(cbit_ref& bref) +SRSASN_CODE mtc_ssb_nr_r15_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)); + HANDLE_CODE(periodicity_and_offset_r15.unpack(bref)); + HANDLE_CODE(ssb_dur_r15.unpack(bref)); return SRSASN_SUCCESS; } -void carrier_freqs_geran_s::to_json(json_writer& j) const +void mtc_ssb_nr_r15_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.write_fieldname("periodicityAndOffset-r15"); + periodicity_and_offset_r15.to_json(j); + j.write_str("ssb-Duration-r15", ssb_dur_r15.to_string()); j.end_obj(); } -bool carrier_freqs_geran_s::operator==(const carrier_freqs_geran_s& other) const +bool mtc_ssb_nr_r15_s::operator==(const mtc_ssb_nr_r15_s& other) const { - return start_arfcn == other.start_arfcn and band_ind == other.band_ind and following_arfcns == other.following_arfcns; + return periodicity_and_offset_r15 == other.periodicity_and_offset_r15 and ssb_dur_r15 == other.ssb_dur_r15; } -void carrier_freqs_geran_s::following_arfcns_c_::destroy_() -{ - switch (type_) { - case types::explicit_list_of_arfcns: - c.destroy(); - break; - case types::equally_spaced_arfcns: - c.destroy(); - break; - case types::variable_bit_map_of_arfcns: - c.destroy >(); - break; - default: - break; - } -} -void carrier_freqs_geran_s::following_arfcns_c_::set(types::options e) +void mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::destroy_() {} +void mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set(types::options e) { destroy_(); type_ = e; - switch (type_) { - case types::explicit_list_of_arfcns: - c.init(); - break; - case types::equally_spaced_arfcns: - c.init(); - break; - case types::variable_bit_map_of_arfcns: - c.init >(); - 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) +mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::periodicity_and_offset_r15_c_( + const mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_& other) { type_ = other.type(); switch (type_) { - case types::explicit_list_of_arfcns: - c.init(other.c.get()); + case types::sf5_r15: + c.init(other.c.get()); break; - case types::equally_spaced_arfcns: - c.init(other.c.get()); + case types::sf10_r15: + c.init(other.c.get()); break; - case types::variable_bit_map_of_arfcns: - c.init(other.c.get >()); + case types::sf20_r15: + c.init(other.c.get()); + break; + case types::sf40_r15: + c.init(other.c.get()); + break; + case types::sf80_r15: + c.init(other.c.get()); + break; + case types::sf160_r15: + c.init(other.c.get()); break; case types::nulltype: break; default: - log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_"); + log_invalid_choice_id(type_, "mtc_ssb_nr_r15_s::periodicity_and_offset_r15_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) +mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_& +mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::operator=(const mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_& other) { if (this == &other) { return *this; } set(other.type()); switch (type_) { - case types::explicit_list_of_arfcns: - c.set(other.c.get()); + case types::sf5_r15: + c.set(other.c.get()); break; - case types::equally_spaced_arfcns: - c.set(other.c.get()); + case types::sf10_r15: + c.set(other.c.get()); break; - case types::variable_bit_map_of_arfcns: - c.set(other.c.get >()); + case types::sf20_r15: + c.set(other.c.get()); + break; + case types::sf40_r15: + c.set(other.c.get()); + break; + case types::sf80_r15: + c.set(other.c.get()); + break; + case types::sf160_r15: + c.set(other.c.get()); break; case types::nulltype: break; default: - log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_"); + log_invalid_choice_id(type_, "mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_"); } return *this; } -explicit_list_of_arfcns_l& carrier_freqs_geran_s::following_arfcns_c_::set_explicit_list_of_arfcns() +uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf5_r15() { - set(types::explicit_list_of_arfcns); - return c.get(); + set(types::sf5_r15); + return c.get(); } -carrier_freqs_geran_s::following_arfcns_c_::equally_spaced_arfcns_s_& -carrier_freqs_geran_s::following_arfcns_c_::set_equally_spaced_arfcns() +uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf10_r15() { - set(types::equally_spaced_arfcns); - return c.get(); + set(types::sf10_r15); + return c.get(); } -bounded_octstring<1, 16>& carrier_freqs_geran_s::following_arfcns_c_::set_variable_bit_map_of_arfcns() +uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf20_r15() { - set(types::variable_bit_map_of_arfcns); - return c.get >(); + set(types::sf20_r15); + return c.get(); } -void carrier_freqs_geran_s::following_arfcns_c_::to_json(json_writer& j) const +uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf40_r15() +{ + set(types::sf40_r15); + return c.get(); +} +uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf80_r15() +{ + set(types::sf80_r15); + return c.get(); +} +uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf160_r15() +{ + set(types::sf160_r15); + return c.get(); +} +void mtc_ssb_nr_r15_s::periodicity_and_offset_r15_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()) { - j.write_int(e1); - } - j.end_array(); + case types::sf5_r15: + j.write_int("sf5-r15", c.get()); break; - case types::equally_spaced_arfcns: - j.write_fieldname("equallySpacedARFCNs"); - j.start_obj(); - j.write_int("arfcn-Spacing", c.get().arfcn_spacing); - j.write_int("numberOfFollowingARFCNs", c.get().nof_following_arfcns); - j.end_obj(); + case types::sf10_r15: + j.write_int("sf10-r15", c.get()); break; - case types::variable_bit_map_of_arfcns: - j.write_str("variableBitMapOfARFCNs", c.get >().to_string()); + case types::sf20_r15: + j.write_int("sf20-r15", c.get()); + break; + case types::sf40_r15: + j.write_int("sf40-r15", c.get()); + break; + case types::sf80_r15: + j.write_int("sf80-r15", c.get()); + break; + case types::sf160_r15: + j.write_int("sf160-r15", c.get()); break; default: - log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_"); + log_invalid_choice_id(type_, "mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_"); } j.end_obj(); } -SRSASN_CODE carrier_freqs_geran_s::following_arfcns_c_::pack(bit_ref& bref) const +SRSASN_CODE mtc_ssb_nr_r15_s::periodicity_and_offset_r15_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(), 0, 31, integer_packer(0, 1023))); + case types::sf5_r15: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)4u)); break; - case types::equally_spaced_arfcns: - HANDLE_CODE(pack_integer(bref, c.get().arfcn_spacing, (uint8_t)1u, (uint8_t)8u)); - HANDLE_CODE( - pack_integer(bref, c.get().nof_following_arfcns, (uint8_t)0u, (uint8_t)31u)); + case types::sf10_r15: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)9u)); break; - case types::variable_bit_map_of_arfcns: - HANDLE_CODE((c.get >().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(), bref, 0, 31, integer_packer(0, 1023))); - break; - case types::equally_spaced_arfcns: - HANDLE_CODE(unpack_integer(c.get().arfcn_spacing, bref, (uint8_t)1u, (uint8_t)8u)); - HANDLE_CODE( - unpack_integer(c.get().nof_following_arfcns, bref, (uint8_t)0u, (uint8_t)31u)); - break; - case types::variable_bit_map_of_arfcns: - HANDLE_CODE((c.get >().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() == other.c.get(); - case types::equally_spaced_arfcns: - return c.get().arfcn_spacing == - other.c.get().arfcn_spacing and - c.get().nof_following_arfcns == - other.c.get().nof_following_arfcns; - case types::variable_bit_map_of_arfcns: - return c.get >() == other.c.get >(); - 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 -{ - HANDLE_CODE(periodicity_and_offset_r15.pack(bref)); - HANDLE_CODE(ssb_dur_r15.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE mtc_ssb_nr_r15_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(periodicity_and_offset_r15.unpack(bref)); - HANDLE_CODE(ssb_dur_r15.unpack(bref)); - - return SRSASN_SUCCESS; -} -void mtc_ssb_nr_r15_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_fieldname("periodicityAndOffset-r15"); - periodicity_and_offset_r15.to_json(j); - j.write_str("ssb-Duration-r15", ssb_dur_r15.to_string()); - j.end_obj(); -} -bool mtc_ssb_nr_r15_s::operator==(const mtc_ssb_nr_r15_s& other) const -{ - return periodicity_and_offset_r15 == other.periodicity_and_offset_r15 and ssb_dur_r15 == other.ssb_dur_r15; -} - -void mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::destroy_() {} -void mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set(types::options e) -{ - destroy_(); - type_ = e; -} -mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::periodicity_and_offset_r15_c_( - const mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_& other) -{ - type_ = other.type(); - switch (type_) { - case types::sf5_r15: - c.init(other.c.get()); - break; - case types::sf10_r15: - c.init(other.c.get()); - break; - case types::sf20_r15: - c.init(other.c.get()); - break; - case types::sf40_r15: - c.init(other.c.get()); - break; - case types::sf80_r15: - c.init(other.c.get()); - break; - case types::sf160_r15: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_"); - } -} -mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_& -mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::operator=(const mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_& other) -{ - if (this == &other) { - return *this; - } - set(other.type()); - switch (type_) { - case types::sf5_r15: - c.set(other.c.get()); - break; - case types::sf10_r15: - c.set(other.c.get()); - break; - case types::sf20_r15: - c.set(other.c.get()); - break; - case types::sf40_r15: - c.set(other.c.get()); - break; - case types::sf80_r15: - c.set(other.c.get()); - break; - case types::sf160_r15: - c.set(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_"); - } - - return *this; -} -uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf5_r15() -{ - set(types::sf5_r15); - return c.get(); -} -uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf10_r15() -{ - set(types::sf10_r15); - return c.get(); -} -uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf20_r15() -{ - set(types::sf20_r15); - return c.get(); -} -uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf40_r15() -{ - set(types::sf40_r15); - return c.get(); -} -uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf80_r15() -{ - set(types::sf80_r15); - return c.get(); -} -uint8_t& mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::set_sf160_r15() -{ - set(types::sf160_r15); - return c.get(); -} -void mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::to_json(json_writer& j) const -{ - j.start_obj(); - switch (type_) { - case types::sf5_r15: - j.write_int("sf5-r15", c.get()); - break; - case types::sf10_r15: - j.write_int("sf10-r15", c.get()); - break; - case types::sf20_r15: - j.write_int("sf20-r15", c.get()); - break; - case types::sf40_r15: - j.write_int("sf40-r15", c.get()); - break; - case types::sf80_r15: - j.write_int("sf80-r15", c.get()); - break; - case types::sf160_r15: - j.write_int("sf160-r15", c.get()); - break; - default: - log_invalid_choice_id(type_, "mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_"); - } - j.end_obj(); -} -SRSASN_CODE mtc_ssb_nr_r15_s::periodicity_and_offset_r15_c_::pack(bit_ref& bref) const -{ - type_.pack(bref); - switch (type_) { - case types::sf5_r15: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)4u)); - break; - case types::sf10_r15: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)9u)); - break; - case types::sf20_r15: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)19u)); + case types::sf20_r15: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)19u)); break; case types::sf40_r15: HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)39u)); @@ -643,25 +371,73 @@ 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_"); } -// SS-RSSI-Measurement-r15 ::= SEQUENCE -SRSASN_CODE ss_rssi_meas_r15_s::pack(bit_ref& bref) const +// PreRegistrationInfoHRPD ::= SEQUENCE +SRSASN_CODE pre_regist_info_hrpd_s::pack(bit_ref& bref) const { - HANDLE_CODE(meas_slots_r15.pack(bref)); - HANDLE_CODE(pack_integer(bref, end_symbol_r15, (uint8_t)0u, (uint8_t)3u)); + HANDLE_CODE(bref.pack(pre_regist_zone_id_present, 1)); + HANDLE_CODE(bref.pack(secondary_pre_regist_zone_id_list_present, 1)); - return SRSASN_SUCCESS; -} -SRSASN_CODE ss_rssi_meas_r15_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(meas_slots_r15.unpack(bref)); - HANDLE_CODE(unpack_integer(end_symbol_r15, bref, (uint8_t)0u, (uint8_t)3u)); + 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(0, 255))); + } return SRSASN_SUCCESS; } -void ss_rssi_meas_r15_s::to_json(json_writer& j) const +SRSASN_CODE pre_regist_info_hrpd_s::unpack(cbit_ref& bref) { - j.start_obj(); - j.write_str("measurementSlots-r15", meas_slots_r15.to_string()); + 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(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 +{ + HANDLE_CODE(meas_slots_r15.pack(bref)); + HANDLE_CODE(pack_integer(bref, end_symbol_r15, (uint8_t)0u, (uint8_t)3u)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE ss_rssi_meas_r15_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(meas_slots_r15.unpack(bref)); + HANDLE_CODE(unpack_integer(end_symbol_r15, bref, (uint8_t)0u, (uint8_t)3u)); + + return SRSASN_SUCCESS; +} +void ss_rssi_meas_r15_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("measurementSlots-r15", meas_slots_r15.to_string()); j.write_int("endSymbol-r15", end_symbol_r15); j.end_obj(); } @@ -902,385 +678,1079 @@ 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); } -// MobilityStateParameters ::= SEQUENCE -SRSASN_CODE mob_state_params_s::pack(bit_ref& bref) const +// CarrierFreqsGERAN ::= SEQUENCE +SRSASN_CODE carrier_freqs_geran_s::pack(bit_ref& bref) const { - HANDLE_CODE(t_eval.pack(bref)); - HANDLE_CODE(t_hyst_normal.pack(bref)); - HANDLE_CODE(pack_integer(bref, n_cell_change_medium, (uint8_t)1u, (uint8_t)16u)); - HANDLE_CODE(pack_integer(bref, n_cell_change_high, (uint8_t)1u, (uint8_t)16u)); + 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 mob_state_params_s::unpack(cbit_ref& bref) +SRSASN_CODE carrier_freqs_geran_s::unpack(cbit_ref& bref) { - HANDLE_CODE(t_eval.unpack(bref)); - HANDLE_CODE(t_hyst_normal.unpack(bref)); - HANDLE_CODE(unpack_integer(n_cell_change_medium, bref, (uint8_t)1u, (uint8_t)16u)); - HANDLE_CODE(unpack_integer(n_cell_change_high, bref, (uint8_t)1u, (uint8_t)16u)); + 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 mob_state_params_s::to_json(json_writer& j) const +void carrier_freqs_geran_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("t-Evaluation", t_eval.to_string()); - j.write_str("t-HystNormal", t_hyst_normal.to_string()); - j.write_int("n-CellChangeMedium", n_cell_change_medium); - j.write_int("n-CellChangeHigh", n_cell_change_high); + j.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(); } - -const char* mob_state_params_s::t_eval_opts::to_string() const -{ - static const char* options[] = {"s30", "s60", "s120", "s180", "s240", "spare3", "spare2", "spare1"}; - return convert_enum_idx(options, 8, value, "mob_state_params_s::t_eval_e_"); -} -uint8_t mob_state_params_s::t_eval_opts::to_number() const +bool carrier_freqs_geran_s::operator==(const carrier_freqs_geran_s& other) const { - static const uint8_t options[] = {30, 60, 120, 180, 240}; - return map_enum_number(options, 5, value, "mob_state_params_s::t_eval_e_"); + return start_arfcn == other.start_arfcn and band_ind == other.band_ind and following_arfcns == other.following_arfcns; } -const char* mob_state_params_s::t_hyst_normal_opts::to_string() const +void carrier_freqs_geran_s::following_arfcns_c_::destroy_() { - static const char* options[] = {"s30", "s60", "s120", "s180", "s240", "spare3", "spare2", "spare1"}; - return convert_enum_idx(options, 8, value, "mob_state_params_s::t_hyst_normal_e_"); + switch (type_) { + case types::explicit_list_of_arfcns: + c.destroy(); + break; + case types::equally_spaced_arfcns: + c.destroy(); + break; + case types::variable_bit_map_of_arfcns: + c.destroy >(); + break; + default: + break; + } } -uint8_t mob_state_params_s::t_hyst_normal_opts::to_number() const +void carrier_freqs_geran_s::following_arfcns_c_::set(types::options e) { - static const uint8_t options[] = {30, 60, 120, 180, 240}; - return map_enum_number(options, 5, value, "mob_state_params_s::t_hyst_normal_e_"); + destroy_(); + type_ = e; + switch (type_) { + case types::explicit_list_of_arfcns: + c.init(); + break; + case types::equally_spaced_arfcns: + c.init(); + break; + case types::variable_bit_map_of_arfcns: + c.init >(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_"); + } } - -// CarrierFreqCDMA2000 ::= SEQUENCE -SRSASN_CODE carrier_freq_cdma2000_s::pack(bit_ref& bref) const +carrier_freqs_geran_s::following_arfcns_c_::following_arfcns_c_(const carrier_freqs_geran_s::following_arfcns_c_& other) { - HANDLE_CODE(band_class.pack(bref)); - HANDLE_CODE(pack_integer(bref, arfcn, (uint16_t)0u, (uint16_t)2047u)); - - return SRSASN_SUCCESS; + type_ = other.type(); + switch (type_) { + case types::explicit_list_of_arfcns: + c.init(other.c.get()); + break; + case types::equally_spaced_arfcns: + c.init(other.c.get()); + break; + case types::variable_bit_map_of_arfcns: + c.init(other.c.get >()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_"); + } } -SRSASN_CODE carrier_freq_cdma2000_s::unpack(cbit_ref& bref) +carrier_freqs_geran_s::following_arfcns_c_& +carrier_freqs_geran_s::following_arfcns_c_::operator=(const carrier_freqs_geran_s::following_arfcns_c_& other) { - HANDLE_CODE(band_class.unpack(bref)); - HANDLE_CODE(unpack_integer(arfcn, bref, (uint16_t)0u, (uint16_t)2047u)); + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::explicit_list_of_arfcns: + c.set(other.c.get()); + break; + case types::equally_spaced_arfcns: + c.set(other.c.get()); + break; + case types::variable_bit_map_of_arfcns: + c.set(other.c.get >()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_"); + } - return SRSASN_SUCCESS; -} -void carrier_freq_cdma2000_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_str("bandClass", band_class.to_string()); - j.write_int("arfcn", arfcn); - j.end_obj(); + return *this; } -bool carrier_freq_cdma2000_s::operator==(const carrier_freq_cdma2000_s& other) const +explicit_list_of_arfcns_l& carrier_freqs_geran_s::following_arfcns_c_::set_explicit_list_of_arfcns() { - return band_class == other.band_class and arfcn == other.arfcn; + set(types::explicit_list_of_arfcns); + return c.get(); } - -// MeasCSI-RS-Config-r12 ::= SEQUENCE -SRSASN_CODE meas_csi_rs_cfg_r12_s::pack(bit_ref& bref) const +carrier_freqs_geran_s::following_arfcns_c_::equally_spaced_arfcns_s_& +carrier_freqs_geran_s::following_arfcns_c_::set_equally_spaced_arfcns() { - bref.pack(ext, 1); - HANDLE_CODE(pack_integer(bref, meas_csi_rs_id_r12, (uint8_t)1u, (uint8_t)96u)); - HANDLE_CODE(pack_integer(bref, pci_r12, (uint16_t)0u, (uint16_t)503u)); - HANDLE_CODE(pack_integer(bref, scrambling_id_r12, (uint16_t)0u, (uint16_t)503u)); - HANDLE_CODE(pack_integer(bref, res_cfg_r12, (uint8_t)0u, (uint8_t)31u)); - HANDLE_CODE(pack_integer(bref, sf_offset_r12, (uint8_t)0u, (uint8_t)4u)); - HANDLE_CODE(csi_rs_individual_offset_r12.pack(bref)); - - return SRSASN_SUCCESS; + set(types::equally_spaced_arfcns); + return c.get(); } -SRSASN_CODE meas_csi_rs_cfg_r12_s::unpack(cbit_ref& bref) +bounded_octstring<1, 16>& carrier_freqs_geran_s::following_arfcns_c_::set_variable_bit_map_of_arfcns() { - bref.unpack(ext, 1); - HANDLE_CODE(unpack_integer(meas_csi_rs_id_r12, bref, (uint8_t)1u, (uint8_t)96u)); - HANDLE_CODE(unpack_integer(pci_r12, bref, (uint16_t)0u, (uint16_t)503u)); - HANDLE_CODE(unpack_integer(scrambling_id_r12, bref, (uint16_t)0u, (uint16_t)503u)); - HANDLE_CODE(unpack_integer(res_cfg_r12, bref, (uint8_t)0u, (uint8_t)31u)); - HANDLE_CODE(unpack_integer(sf_offset_r12, bref, (uint8_t)0u, (uint8_t)4u)); - HANDLE_CODE(csi_rs_individual_offset_r12.unpack(bref)); - - return SRSASN_SUCCESS; + set(types::variable_bit_map_of_arfcns); + return c.get >(); } -void meas_csi_rs_cfg_r12_s::to_json(json_writer& j) const +void carrier_freqs_geran_s::following_arfcns_c_::to_json(json_writer& j) const { j.start_obj(); - j.write_int("measCSI-RS-Id-r12", meas_csi_rs_id_r12); - j.write_int("physCellId-r12", pci_r12); - j.write_int("scramblingIdentity-r12", scrambling_id_r12); - j.write_int("resourceConfig-r12", res_cfg_r12); - j.write_int("subframeOffset-r12", sf_offset_r12); - j.write_str("csi-RS-IndividualOffset-r12", csi_rs_individual_offset_r12.to_string()); + switch (type_) { + case types::explicit_list_of_arfcns: + j.start_array("explicitListOfARFCNs"); + for (const auto& e1 : c.get()) { + 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().arfcn_spacing); + j.write_int("numberOfFollowingARFCNs", c.get().nof_following_arfcns); + j.end_obj(); + break; + case types::variable_bit_map_of_arfcns: + j.write_str("variableBitMapOfARFCNs", c.get >().to_string()); + break; + default: + log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_"); + } j.end_obj(); } -bool meas_csi_rs_cfg_r12_s::operator==(const meas_csi_rs_cfg_r12_s& other) const +SRSASN_CODE carrier_freqs_geran_s::following_arfcns_c_::pack(bit_ref& bref) const { - return ext == other.ext and meas_csi_rs_id_r12 == other.meas_csi_rs_id_r12 and pci_r12 == other.pci_r12 and - scrambling_id_r12 == other.scrambling_id_r12 and res_cfg_r12 == other.res_cfg_r12 and - sf_offset_r12 == other.sf_offset_r12 and csi_rs_individual_offset_r12 == other.csi_rs_individual_offset_r12; -} - -// PhysCellIdRangeUTRA-FDD-r9 ::= SEQUENCE -SRSASN_CODE pci_range_utra_fdd_r9_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(range_r9_present, 1)); - - HANDLE_CODE(pack_integer(bref, start_r9, (uint16_t)0u, (uint16_t)511u)); - if (range_r9_present) { - HANDLE_CODE(pack_integer(bref, range_r9, (uint16_t)2u, (uint16_t)512u)); + type_.pack(bref); + switch (type_) { + case types::explicit_list_of_arfcns: + HANDLE_CODE(pack_dyn_seq_of(bref, c.get(), 0, 31, integer_packer(0, 1023))); + break; + case types::equally_spaced_arfcns: + HANDLE_CODE(pack_integer(bref, c.get().arfcn_spacing, (uint8_t)1u, (uint8_t)8u)); + HANDLE_CODE( + pack_integer(bref, c.get().nof_following_arfcns, (uint8_t)0u, (uint8_t)31u)); + break; + case types::variable_bit_map_of_arfcns: + HANDLE_CODE((c.get >().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 pci_range_utra_fdd_r9_s::unpack(cbit_ref& bref) +SRSASN_CODE carrier_freqs_geran_s::following_arfcns_c_::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(range_r9_present, 1)); - - HANDLE_CODE(unpack_integer(start_r9, bref, (uint16_t)0u, (uint16_t)511u)); - if (range_r9_present) { - HANDLE_CODE(unpack_integer(range_r9, bref, (uint16_t)2u, (uint16_t)512u)); + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::explicit_list_of_arfcns: + HANDLE_CODE( + unpack_dyn_seq_of(c.get(), bref, 0, 31, integer_packer(0, 1023))); + break; + case types::equally_spaced_arfcns: + HANDLE_CODE(unpack_integer(c.get().arfcn_spacing, bref, (uint8_t)1u, (uint8_t)8u)); + HANDLE_CODE( + unpack_integer(c.get().nof_following_arfcns, bref, (uint8_t)0u, (uint8_t)31u)); + break; + case types::variable_bit_map_of_arfcns: + HANDLE_CODE((c.get >().unpack(bref))); + break; + default: + log_invalid_choice_id(type_, "carrier_freqs_geran_s::following_arfcns_c_"); + return SRSASN_ERROR_DECODE_FAIL; } - return SRSASN_SUCCESS; } -void pci_range_utra_fdd_r9_s::to_json(json_writer& j) const +bool carrier_freqs_geran_s::following_arfcns_c_::operator==(const following_arfcns_c_& other) const { - j.start_obj(); - j.write_int("start-r9", start_r9); - if (range_r9_present) { - j.write_int("range-r9", range_r9); + if (type_ != other.type_) { + return false; } - j.end_obj(); -} -bool pci_range_utra_fdd_r9_s::operator==(const pci_range_utra_fdd_r9_s& other) const -{ - return start_r9 == other.start_r9 and range_r9_present == other.range_r9_present and - (not range_r9_present or range_r9 == other.range_r9); + switch (type_) { + case types::explicit_list_of_arfcns: + return c.get() == other.c.get(); + case types::equally_spaced_arfcns: + return c.get().arfcn_spacing == + other.c.get().arfcn_spacing and + c.get().nof_following_arfcns == + other.c.get().nof_following_arfcns; + case types::variable_bit_map_of_arfcns: + return c.get >() == other.c.get >(); + default: + return true; + } + return true; } -// 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) +// CellReselectionSubPriority-r13 ::= ENUMERATED +const char* cell_resel_sub_prio_r13_opts::to_string() const { - HANDLE_CODE(unpack_integer(cell_idx_r12, bref, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(pci_range_r12.unpack(bref)); - - return SRSASN_SUCCESS; + static const char* options[] = {"oDot2", "oDot4", "oDot6", "oDot8"}; + return convert_enum_idx(options, 4, value, "cell_resel_sub_prio_r13_e"); } -void alt_ttt_cells_to_add_mod_r12_s::to_json(json_writer& j) const +float cell_resel_sub_prio_r13_opts::to_number() 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(); + 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"); } -bool alt_ttt_cells_to_add_mod_r12_s::operator==(const alt_ttt_cells_to_add_mod_r12_s& other) const +const char* cell_resel_sub_prio_r13_opts::to_number_string() const { - return cell_idx_r12 == other.cell_idx_r12 and pci_range_r12 == other.pci_range_r12; + 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"); } -// BlackCellsToAddMod ::= SEQUENCE -SRSASN_CODE black_cells_to_add_mod_s::pack(bit_ref& bref) const +// RSS-ConfigCarrierInfo-r16 ::= SEQUENCE +SRSASN_CODE rss_cfg_carrier_info_r16_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(nb_idx_r16.pack(bref)); + HANDLE_CODE(time_offset_granularity_r16.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE black_cells_to_add_mod_s::unpack(cbit_ref& bref) +SRSASN_CODE rss_cfg_carrier_info_r16_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(nb_idx_r16.unpack(bref)); + HANDLE_CODE(time_offset_granularity_r16.unpack(bref)); return SRSASN_SUCCESS; } -void black_cells_to_add_mod_s::to_json(json_writer& j) const +void rss_cfg_carrier_info_r16_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_str("narrowbandIndex-r16", nb_idx_r16.to_string()); + j.write_str("timeOffsetGranularity-r16", time_offset_granularity_r16.to_string()); j.end_obj(); } -bool black_cells_to_add_mod_s::operator==(const black_cells_to_add_mod_s& other) const +bool rss_cfg_carrier_info_r16_s::operator==(const rss_cfg_carrier_info_r16_s& other) const { - return cell_idx == other.cell_idx and pci_range == other.pci_range; + return nb_idx_r16 == other.nb_idx_r16 and time_offset_granularity_r16 == other.time_offset_granularity_r16; } -// CellsToAddMod ::= SEQUENCE -SRSASN_CODE cells_to_add_mod_s::pack(bit_ref& bref) const +const char* rss_cfg_carrier_info_r16_s::time_offset_granularity_r16_opts::to_string() const { - HANDLE_CODE(pack_integer(bref, cell_idx, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)503u)); - HANDLE_CODE(cell_individual_offset.pack(bref)); - - return SRSASN_SUCCESS; + 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_"); } -SRSASN_CODE cells_to_add_mod_s::unpack(cbit_ref& bref) +uint8_t rss_cfg_carrier_info_r16_s::time_offset_granularity_r16_opts::to_number() const { - HANDLE_CODE(unpack_integer(cell_idx, bref, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)503u)); - HANDLE_CODE(cell_individual_offset.unpack(bref)); + 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_"); +} - return SRSASN_SUCCESS; +// 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"); } -void cells_to_add_mod_s::to_json(json_writer& j) const +uint8_t ssb_position_qcl_relation_nr_r16_opts::to_number() const { - j.start_obj(); - j.write_int("cellIndex", cell_idx); - j.write_int("physCellId", pci); - j.write_str("cellIndividualOffset", cell_individual_offset.to_string()); - j.end_obj(); + static const uint8_t options[] = {1, 2, 4, 8}; + return map_enum_number(options, 4, value, "ssb_position_qcl_relation_nr_r16_e"); } -bool cells_to_add_mod_s::operator==(const cells_to_add_mod_s& other) const + +// SSB-PositionQCL-RelationNR-r17 ::= ENUMERATED +const char* ssb_position_qcl_relation_nr_r17_opts::to_string() const { - return cell_idx == other.cell_idx and pci == other.pci and cell_individual_offset == other.cell_individual_offset; + 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"); } -// CellsToAddModCDMA2000 ::= SEQUENCE -SRSASN_CODE cells_to_add_mod_cdma2000_s::pack(bit_ref& bref) const +// MobilityStateParameters ::= SEQUENCE +SRSASN_CODE mob_state_params_s::pack(bit_ref& bref) const { - HANDLE_CODE(pack_integer(bref, cell_idx, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)511u)); + HANDLE_CODE(t_eval.pack(bref)); + HANDLE_CODE(t_hyst_normal.pack(bref)); + HANDLE_CODE(pack_integer(bref, n_cell_change_medium, (uint8_t)1u, (uint8_t)16u)); + HANDLE_CODE(pack_integer(bref, n_cell_change_high, (uint8_t)1u, (uint8_t)16u)); return SRSASN_SUCCESS; } -SRSASN_CODE cells_to_add_mod_cdma2000_s::unpack(cbit_ref& bref) +SRSASN_CODE mob_state_params_s::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_integer(cell_idx, bref, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)511u)); + HANDLE_CODE(t_eval.unpack(bref)); + HANDLE_CODE(t_hyst_normal.unpack(bref)); + HANDLE_CODE(unpack_integer(n_cell_change_medium, bref, (uint8_t)1u, (uint8_t)16u)); + HANDLE_CODE(unpack_integer(n_cell_change_high, bref, (uint8_t)1u, (uint8_t)16u)); return SRSASN_SUCCESS; } -void cells_to_add_mod_cdma2000_s::to_json(json_writer& j) const +void mob_state_params_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("cellIndex", cell_idx); - j.write_int("physCellId", pci); + j.write_str("t-Evaluation", t_eval.to_string()); + j.write_str("t-HystNormal", t_hyst_normal.to_string()); + j.write_int("n-CellChangeMedium", n_cell_change_medium); + j.write_int("n-CellChangeHigh", n_cell_change_high); j.end_obj(); } -bool cells_to_add_mod_cdma2000_s::operator==(const cells_to_add_mod_cdma2000_s& other) const -{ - return cell_idx == other.cell_idx and pci == other.pci; -} -// CellsToAddModNR-r15 ::= SEQUENCE -SRSASN_CODE cells_to_add_mod_nr_r15_s::pack(bit_ref& bref) const +const char* mob_state_params_s::t_eval_opts::to_string() const { - HANDLE_CODE(pack_integer(bref, cell_idx_r15, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(pack_integer(bref, pci_r15, (uint16_t)0u, (uint16_t)1007u)); - - return SRSASN_SUCCESS; + static const char* options[] = {"s30", "s60", "s120", "s180", "s240", "spare3", "spare2", "spare1"}; + return convert_enum_idx(options, 8, value, "mob_state_params_s::t_eval_e_"); } -SRSASN_CODE cells_to_add_mod_nr_r15_s::unpack(cbit_ref& bref) +uint8_t mob_state_params_s::t_eval_opts::to_number() const { - HANDLE_CODE(unpack_integer(cell_idx_r15, bref, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(unpack_integer(pci_r15, bref, (uint16_t)0u, (uint16_t)1007u)); - - return SRSASN_SUCCESS; + static const uint8_t options[] = {30, 60, 120, 180, 240}; + return map_enum_number(options, 5, value, "mob_state_params_s::t_eval_e_"); } -void cells_to_add_mod_nr_r15_s::to_json(json_writer& j) const + +const char* mob_state_params_s::t_hyst_normal_opts::to_string() const { - j.start_obj(); - j.write_int("cellIndex-r15", cell_idx_r15); - j.write_int("physCellId-r15", pci_r15); - j.end_obj(); + static const char* options[] = {"s30", "s60", "s120", "s180", "s240", "spare3", "spare2", "spare1"}; + return convert_enum_idx(options, 8, value, "mob_state_params_s::t_hyst_normal_e_"); } -bool cells_to_add_mod_nr_r15_s::operator==(const cells_to_add_mod_nr_r15_s& other) const +uint8_t mob_state_params_s::t_hyst_normal_opts::to_number() const { - return cell_idx_r15 == other.cell_idx_r15 and pci_r15 == other.pci_r15; + static const uint8_t options[] = {30, 60, 120, 180, 240}; + return map_enum_number(options, 5, value, "mob_state_params_s::t_hyst_normal_e_"); } -// CellsToAddModUTRA-FDD ::= SEQUENCE -SRSASN_CODE cells_to_add_mod_utra_fdd_s::pack(bit_ref& bref) const +// CarrierFreqCDMA2000 ::= SEQUENCE +SRSASN_CODE carrier_freq_cdma2000_s::pack(bit_ref& bref) const { - HANDLE_CODE(pack_integer(bref, cell_idx, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)511u)); + HANDLE_CODE(band_class.pack(bref)); + HANDLE_CODE(pack_integer(bref, arfcn, (uint16_t)0u, (uint16_t)2047u)); return SRSASN_SUCCESS; } -SRSASN_CODE cells_to_add_mod_utra_fdd_s::unpack(cbit_ref& bref) +SRSASN_CODE carrier_freq_cdma2000_s::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_integer(cell_idx, bref, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)511u)); + HANDLE_CODE(band_class.unpack(bref)); + HANDLE_CODE(unpack_integer(arfcn, bref, (uint16_t)0u, (uint16_t)2047u)); return SRSASN_SUCCESS; } -void cells_to_add_mod_utra_fdd_s::to_json(json_writer& j) const +void carrier_freq_cdma2000_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("cellIndex", cell_idx); - j.write_int("physCellId", pci); + j.write_str("bandClass", band_class.to_string()); + j.write_int("arfcn", arfcn); j.end_obj(); } -bool cells_to_add_mod_utra_fdd_s::operator==(const cells_to_add_mod_utra_fdd_s& other) const +bool carrier_freq_cdma2000_s::operator==(const carrier_freq_cdma2000_s& other) const { - return cell_idx == other.cell_idx and pci == other.pci; + return band_class == other.band_class and arfcn == other.arfcn; } -// CellsToAddModUTRA-TDD ::= SEQUENCE -SRSASN_CODE cells_to_add_mod_utra_tdd_s::pack(bit_ref& bref) const +// CellsToAddMod-v1610 ::= SEQUENCE +SRSASN_CODE cells_to_add_mod_v1610_s::pack(bit_ref& bref) const { - HANDLE_CODE(pack_integer(bref, cell_idx, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(pack_integer(bref, pci, (uint8_t)0u, (uint8_t)127u)); + HANDLE_CODE(rss_meas_pwr_bias_r16.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE cells_to_add_mod_utra_tdd_s::unpack(cbit_ref& bref) +SRSASN_CODE cells_to_add_mod_v1610_s::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_integer(cell_idx, bref, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(unpack_integer(pci, bref, (uint8_t)0u, (uint8_t)127u)); + HANDLE_CODE(rss_meas_pwr_bias_r16.unpack(bref)); return SRSASN_SUCCESS; } -void cells_to_add_mod_utra_tdd_s::to_json(json_writer& j) const +void cells_to_add_mod_v1610_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("cellIndex", cell_idx); - j.write_int("physCellId", pci); + j.write_str("rss-MeasPowerBias-r16", rss_meas_pwr_bias_r16.to_string()); j.end_obj(); } -bool cells_to_add_mod_utra_tdd_s::operator==(const cells_to_add_mod_utra_tdd_s& other) const +bool cells_to_add_mod_v1610_s::operator==(const cells_to_add_mod_v1610_s& other) const { - return cell_idx == other.cell_idx and pci == other.pci; + return rss_meas_pwr_bias_r16 == other.rss_meas_pwr_bias_r16; } -// WhiteCellsToAddMod-r13 ::= SEQUENCE -SRSASN_CODE white_cells_to_add_mod_r13_s::pack(bit_ref& bref) const +// MeasCSI-RS-Config-r12 ::= SEQUENCE +SRSASN_CODE meas_csi_rs_cfg_r12_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)); + bref.pack(ext, 1); + HANDLE_CODE(pack_integer(bref, meas_csi_rs_id_r12, (uint8_t)1u, (uint8_t)96u)); + HANDLE_CODE(pack_integer(bref, pci_r12, (uint16_t)0u, (uint16_t)503u)); + HANDLE_CODE(pack_integer(bref, scrambling_id_r12, (uint16_t)0u, (uint16_t)503u)); + HANDLE_CODE(pack_integer(bref, res_cfg_r12, (uint8_t)0u, (uint8_t)31u)); + HANDLE_CODE(pack_integer(bref, sf_offset_r12, (uint8_t)0u, (uint8_t)4u)); + HANDLE_CODE(csi_rs_individual_offset_r12.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE white_cells_to_add_mod_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE meas_csi_rs_cfg_r12_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; + bref.unpack(ext, 1); + HANDLE_CODE(unpack_integer(meas_csi_rs_id_r12, bref, (uint8_t)1u, (uint8_t)96u)); + HANDLE_CODE(unpack_integer(pci_r12, bref, (uint16_t)0u, (uint16_t)503u)); + HANDLE_CODE(unpack_integer(scrambling_id_r12, bref, (uint16_t)0u, (uint16_t)503u)); + HANDLE_CODE(unpack_integer(res_cfg_r12, bref, (uint8_t)0u, (uint8_t)31u)); + HANDLE_CODE(unpack_integer(sf_offset_r12, bref, (uint8_t)0u, (uint8_t)4u)); + HANDLE_CODE(csi_rs_individual_offset_r12.unpack(bref)); + + return SRSASN_SUCCESS; +} +void meas_csi_rs_cfg_r12_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("measCSI-RS-Id-r12", meas_csi_rs_id_r12); + j.write_int("physCellId-r12", pci_r12); + j.write_int("scramblingIdentity-r12", scrambling_id_r12); + j.write_int("resourceConfig-r12", res_cfg_r12); + j.write_int("subframeOffset-r12", sf_offset_r12); + j.write_str("csi-RS-IndividualOffset-r12", csi_rs_individual_offset_r12.to_string()); + j.end_obj(); +} +bool meas_csi_rs_cfg_r12_s::operator==(const meas_csi_rs_cfg_r12_s& other) const +{ + return ext == other.ext and meas_csi_rs_id_r12 == other.meas_csi_rs_id_r12 and pci_r12 == other.pci_r12 and + scrambling_id_r12 == other.scrambling_id_r12 and res_cfg_r12 == other.res_cfg_r12 and + sf_offset_r12 == other.sf_offset_r12 and csi_rs_individual_offset_r12 == other.csi_rs_individual_offset_r12; +} + +// PhysCellIdRangeUTRA-FDD-r9 ::= SEQUENCE +SRSASN_CODE pci_range_utra_fdd_r9_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(range_r9_present, 1)); + + HANDLE_CODE(pack_integer(bref, start_r9, (uint16_t)0u, (uint16_t)511u)); + if (range_r9_present) { + HANDLE_CODE(pack_integer(bref, range_r9, (uint16_t)2u, (uint16_t)512u)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE pci_range_utra_fdd_r9_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(range_r9_present, 1)); + + HANDLE_CODE(unpack_integer(start_r9, bref, (uint16_t)0u, (uint16_t)511u)); + if (range_r9_present) { + HANDLE_CODE(unpack_integer(range_r9, bref, (uint16_t)2u, (uint16_t)512u)); + } + + return SRSASN_SUCCESS; +} +void pci_range_utra_fdd_r9_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("start-r9", start_r9); + if (range_r9_present) { + j.write_int("range-r9", range_r9); + } + j.end_obj(); +} +bool pci_range_utra_fdd_r9_s::operator==(const pci_range_utra_fdd_r9_s& other) const +{ + return start_r9 == other.start_r9 and range_r9_present == other.range_r9_present and + (not range_r9_present or range_r9 == other.range_r9); +} + +// 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, pci_r16, (uint16_t)0u, (uint16_t)1007u)); + HANDLE_CODE(ssb_position_qcl_nr_r16.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE ssb_position_qcl_cells_to_add_nr_r16_s::unpack(cbit_ref& 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 ssb_position_qcl_cells_to_add_nr_r16_s::to_json(json_writer& j) const +{ + j.start_obj(); + 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 ssb_position_qcl_cells_to_add_nr_r16_s::operator==(const ssb_position_qcl_cells_to_add_nr_r16_s& other) const +{ + return pci_r16 == other.pci_r16 and ssb_position_qcl_nr_r16 == other.ssb_position_qcl_nr_r16; +} + +// 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, pci_nr_r17, (uint16_t)0u, (uint16_t)1007u)); + HANDLE_CODE(ssb_position_qcl_nr_r17.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE ssb_position_qcl_cells_to_add_nr_r17_s::unpack(cbit_ref& 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 ssb_position_qcl_cells_to_add_nr_r17_s::to_json(json_writer& j) const +{ + j.start_obj(); + 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 ssb_position_qcl_cells_to_add_nr_r17_s::operator==(const ssb_position_qcl_cells_to_add_nr_r17_s& other) const +{ + 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 +SRSASN_CODE cells_to_add_mod_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_integer(bref, cell_idx, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)503u)); + HANDLE_CODE(cell_individual_offset.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE cells_to_add_mod_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(cell_idx, bref, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)503u)); + HANDLE_CODE(cell_individual_offset.unpack(bref)); + + return SRSASN_SUCCESS; +} +void cells_to_add_mod_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("cellIndex", cell_idx); + j.write_int("physCellId", pci); + j.write_str("cellIndividualOffset", cell_individual_offset.to_string()); + j.end_obj(); +} +bool cells_to_add_mod_s::operator==(const cells_to_add_mod_s& other) const +{ + return cell_idx == other.cell_idx and pci == other.pci and cell_individual_offset == other.cell_individual_offset; +} + +// CellsToAddModCDMA2000 ::= SEQUENCE +SRSASN_CODE cells_to_add_mod_cdma2000_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_integer(bref, cell_idx, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)511u)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE cells_to_add_mod_cdma2000_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(cell_idx, bref, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)511u)); + + return SRSASN_SUCCESS; +} +void cells_to_add_mod_cdma2000_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("cellIndex", cell_idx); + j.write_int("physCellId", pci); + j.end_obj(); +} +bool cells_to_add_mod_cdma2000_s::operator==(const cells_to_add_mod_cdma2000_s& other) const +{ + return cell_idx == other.cell_idx and pci == other.pci; +} + +// CellsToAddModNR-r15 ::= SEQUENCE +SRSASN_CODE cells_to_add_mod_nr_r15_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_integer(bref, cell_idx_r15, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(pack_integer(bref, pci_r15, (uint16_t)0u, (uint16_t)1007u)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE cells_to_add_mod_nr_r15_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(cell_idx_r15, bref, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(unpack_integer(pci_r15, bref, (uint16_t)0u, (uint16_t)1007u)); + + return SRSASN_SUCCESS; +} +void cells_to_add_mod_nr_r15_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("cellIndex-r15", cell_idx_r15); + j.write_int("physCellId-r15", pci_r15); + j.end_obj(); +} +bool cells_to_add_mod_nr_r15_s::operator==(const cells_to_add_mod_nr_r15_s& other) const +{ + 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 +{ + HANDLE_CODE(pack_integer(bref, cell_idx, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)511u)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE cells_to_add_mod_utra_fdd_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(cell_idx, bref, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)511u)); + + return SRSASN_SUCCESS; +} +void cells_to_add_mod_utra_fdd_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("cellIndex", cell_idx); + j.write_int("physCellId", pci); + j.end_obj(); +} +bool cells_to_add_mod_utra_fdd_s::operator==(const cells_to_add_mod_utra_fdd_s& other) const +{ + return cell_idx == other.cell_idx and pci == other.pci; +} + +// CellsToAddModUTRA-TDD ::= SEQUENCE +SRSASN_CODE cells_to_add_mod_utra_tdd_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_integer(bref, cell_idx, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(pack_integer(bref, pci, (uint8_t)0u, (uint8_t)127u)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE cells_to_add_mod_utra_tdd_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(cell_idx, bref, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(unpack_integer(pci, bref, (uint8_t)0u, (uint8_t)127u)); + + return SRSASN_SUCCESS; +} +void cells_to_add_mod_utra_tdd_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("cellIndex", cell_idx); + j.write_int("physCellId", pci); + j.end_obj(); +} +bool cells_to_add_mod_utra_tdd_s::operator==(const cells_to_add_mod_utra_tdd_s& other) const +{ + return cell_idx == other.cell_idx and pci == other.pci; +} + +// ExcludedCellsToAddMod ::= SEQUENCE +SRSASN_CODE excluded_cells_to_add_mod_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)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE excluded_cells_to_add_mod_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(cell_idx, bref, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(pci_range.unpack(bref)); + + return SRSASN_SUCCESS; +} +void excluded_cells_to_add_mod_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.end_obj(); +} +bool excluded_cells_to_add_mod_s::operator==(const excluded_cells_to_add_mod_s& other) const +{ + 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()); + break; + case types::thres_rsrq: + c.init(other.c.get()); + 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()); + break; + case types::thres_rsrq: + c.set(other.c.get()); + 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& thres_eutra_c::set_thres_rsrq() +{ + set(types::thres_rsrq); + return c.get(); +} +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()); + break; + case types::thres_rsrq: + j.write_int("threshold-RSRQ", c.get()); + 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)0u, (uint8_t)97u)); + break; + case types::thres_rsrq: + HANDLE_CODE(pack_integer(bref, c.get(), (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(), bref, (uint8_t)0u, (uint8_t)97u)); + break; + case types::thres_rsrq: + HANDLE_CODE(unpack_integer(c.get(), 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() == other.c.get(); + case types::thres_rsrq: + return c.get() == other.c.get(); + 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()); + break; + case types::nr_rsrq_r15: + c.init(other.c.get()); + break; + case types::nr_sinr_r15: + c.init(other.c.get()); + 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()); + break; + case types::nr_rsrq_r15: + c.set(other.c.get()); + break; + case types::nr_sinr_r15: + c.set(other.c.get()); + 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& thres_nr_r15_c::set_nr_rsrq_r15() +{ + set(types::nr_rsrq_r15); + return c.get(); +} +uint8_t& thres_nr_r15_c::set_nr_sinr_r15() +{ + set(types::nr_sinr_r15); + return c.get(); +} +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()); + break; + case types::nr_rsrq_r15: + j.write_int("nr-RSRQ-r15", c.get()); + break; + case types::nr_sinr_r15: + j.write_int("nr-SINR-r15", c.get()); + break; + default: + log_invalid_choice_id(type_, "thres_nr_r15_c"); + } + j.end_obj(); } -void white_cells_to_add_mod_r13_s::to_json(json_writer& j) const +SRSASN_CODE thres_nr_r15_c::pack(bit_ref& bref) 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(); + type_.pack(bref); + switch (type_) { + case types::nr_rsrp_r15: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + break; + case types::nr_rsrq_r15: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + break; + case types::nr_sinr_r15: + HANDLE_CODE(pack_integer(bref, c.get(), (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; } -bool white_cells_to_add_mod_r13_s::operator==(const white_cells_to_add_mod_r13_s& other) const +SRSASN_CODE thres_nr_r15_c::unpack(cbit_ref& bref) { - return cell_idx_r13 == other.cell_idx_r13 and pci_range_r13 == other.pci_range_r13; + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::nr_rsrp_r15: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + break; + case types::nr_rsrq_r15: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + break; + case types::nr_sinr_r15: + HANDLE_CODE(unpack_integer(c.get(), 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() == other.c.get(); + case types::nr_rsrq_r15: + return c.get() == other.c.get(); + case types::nr_sinr_r15: + return c.get() == other.c.get(); + 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 @@ -1345,62 +1815,327 @@ SRSASN_CODE bt_name_list_cfg_r15_c::unpack(cbit_ref& bref) log_invalid_choice_id(type_, "bt_name_list_cfg_r15_c"); return SRSASN_ERROR_DECODE_FAIL; } - return SRSASN_SUCCESS; + return SRSASN_SUCCESS; +} +bool bt_name_list_cfg_r15_c::operator==(const bt_name_list_cfg_r15_c& other) const +{ + return type() == other.type() and c == other.c; +} + +// CDMA2000-Type ::= ENUMERATED +const char* cdma2000_type_opts::to_string() const +{ + static const char* options[] = {"type1XRTT", "typeHRPD"}; + return convert_enum_idx(options, 2, value, "cdma2000_type_e"); +} +uint8_t cdma2000_type_opts::to_number() const +{ + static const uint8_t options[] = {1}; + return map_enum_number(options, 1, value, "cdma2000_type_e"); +} + +// CSG-AllowedReportingCells-r9 ::= SEQUENCE +SRSASN_CODE csg_allowed_report_cells_r9_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(pci_range_utra_fdd_list_r9_present, 1)); + + if (pci_range_utra_fdd_list_r9_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, pci_range_utra_fdd_list_r9, 1, 4)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE csg_allowed_report_cells_r9_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(pci_range_utra_fdd_list_r9_present, 1)); + + if (pci_range_utra_fdd_list_r9_present) { + HANDLE_CODE(unpack_dyn_seq_of(pci_range_utra_fdd_list_r9, bref, 1, 4)); + } + + return SRSASN_SUCCESS; +} +void csg_allowed_report_cells_r9_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (pci_range_utra_fdd_list_r9_present) { + j.start_array("physCellIdRangeUTRA-FDDList-r9"); + for (const auto& e1 : pci_range_utra_fdd_list_r9) { + e1.to_json(j); + } + j.end_array(); + } + j.end_obj(); +} +bool csg_allowed_report_cells_r9_s::operator==(const csg_allowed_report_cells_r9_s& other) const +{ + return pci_range_utra_fdd_list_r9_present == other.pci_range_utra_fdd_list_r9_present and + (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(); + break; + case types::cond_event_a5_r16: + c.destroy(); + 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(); + break; + case types::cond_event_a5_r16: + c.init(); + 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()); + break; + case types::cond_event_a5_r16: + c.init(other.c.get()); + 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()); + break; + case types::cond_event_a5_r16: + c.set(other.c.get()); + 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_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(); +} +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().a3_offset_r16); + j.write_int("hysteresis-r16", c.get().hysteresis_r16); + j.write_str("timeToTrigger-r16", c.get().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().a5_thres1_r16.to_json(j); + j.write_fieldname("a5-Threshold2-r16"); + c.get().a5_thres2_r16.to_json(j); + j.write_int("hysteresis-r16", c.get().hysteresis_r16); + j.write_str("timeToTrigger-r16", c.get().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().a3_offset_r16, (int8_t)-30, (int8_t)30)); + HANDLE_CODE(pack_integer(bref, c.get().hysteresis_r16, (uint8_t)0u, (uint8_t)30u)); + HANDLE_CODE(c.get().time_to_trigger_r16.pack(bref)); + break; + case types::cond_event_a5_r16: + HANDLE_CODE(c.get().a5_thres1_r16.pack(bref)); + HANDLE_CODE(c.get().a5_thres2_r16.pack(bref)); + HANDLE_CODE(pack_integer(bref, c.get().hysteresis_r16, (uint8_t)0u, (uint8_t)30u)); + HANDLE_CODE(c.get().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().a3_offset_r16, bref, (int8_t)-30, (int8_t)30)); + HANDLE_CODE(unpack_integer(c.get().hysteresis_r16, bref, (uint8_t)0u, (uint8_t)30u)); + HANDLE_CODE(c.get().time_to_trigger_r16.unpack(bref)); + break; + case types::cond_event_a5_r16: + HANDLE_CODE(c.get().a5_thres1_r16.unpack(bref)); + HANDLE_CODE(c.get().a5_thres2_r16.unpack(bref)); + HANDLE_CODE(unpack_integer(c.get().hysteresis_r16, bref, (uint8_t)0u, (uint8_t)30u)); + HANDLE_CODE(c.get().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().a3_offset_r16 == other.c.get().a3_offset_r16 and + c.get().hysteresis_r16 == other.c.get().hysteresis_r16 and + c.get().time_to_trigger_r16 == + other.c.get().time_to_trigger_r16; + case types::cond_event_a5_r16: + return c.get().a5_thres1_r16 == other.c.get().a5_thres1_r16 and + c.get().a5_thres2_r16 == other.c.get().a5_thres2_r16 and + c.get().hysteresis_r16 == other.c.get().hysteresis_r16 and + c.get().time_to_trigger_r16 == + other.c.get().time_to_trigger_r16; + default: + return true; + } + return true; } -bool bt_name_list_cfg_r15_c::operator==(const bt_name_list_cfg_r15_c& other) const + +// CondReconfigurationTriggerNR-r17 ::= SEQUENCE +SRSASN_CODE cond_recfg_trigger_nr_r17_s::pack(bit_ref& bref) const { - return type() == other.type() and c == other.c; + 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)); -// CDMA2000-Type ::= ENUMERATED -const char* cdma2000_type_opts::to_string() const + return SRSASN_SUCCESS; +} +void cond_recfg_trigger_nr_r17_s::to_json(json_writer& j) const { - static const char* options[] = {"type1XRTT", "typeHRPD"}; - return convert_enum_idx(options, 2, value, "cdma2000_type_e"); + j.start_obj(); + j.write_fieldname("condEventId-r17"); + cond_event_id_r17.to_json(j); + j.end_obj(); } -uint8_t cdma2000_type_opts::to_number() const +bool cond_recfg_trigger_nr_r17_s::operator==(const cond_recfg_trigger_nr_r17_s& other) const { - static const uint8_t options[] = {1}; - return map_enum_number(options, 1, value, "cdma2000_type_e"); + return cond_event_id_r17 == other.cond_event_id_r17; } -// CSG-AllowedReportingCells-r9 ::= SEQUENCE -SRSASN_CODE csg_allowed_report_cells_r9_s::pack(bit_ref& bref) const +void cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::to_json(json_writer& j) const { - HANDLE_CODE(bref.pack(pci_range_utra_fdd_list_r9_present, 1)); - - if (pci_range_utra_fdd_list_r9_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, pci_range_utra_fdd_list_r9, 1, 4)); - } - - return SRSASN_SUCCESS; + 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 csg_allowed_report_cells_r9_s::unpack(cbit_ref& bref) +SRSASN_CODE cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::pack(bit_ref& bref) const { - HANDLE_CODE(bref.unpack(pci_range_utra_fdd_list_r9_present, 1)); - - if (pci_range_utra_fdd_list_r9_present) { - HANDLE_CODE(unpack_dyn_seq_of(pci_range_utra_fdd_list_r9, bref, 1, 4)); - } - + 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; } -void csg_allowed_report_cells_r9_s::to_json(json_writer& j) const +SRSASN_CODE cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::unpack(cbit_ref& bref) { - j.start_obj(); - if (pci_range_utra_fdd_list_r9_present) { - j.start_array("physCellIdRangeUTRA-FDDList-r9"); - for (const auto& e1 : pci_range_utra_fdd_list_r9) { - e1.to_json(j); - } - j.end_array(); + 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; } - j.end_obj(); + 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 csg_allowed_report_cells_r9_s::operator==(const csg_allowed_report_cells_r9_s& other) const +bool cond_recfg_trigger_nr_r17_s::cond_event_id_r17_c_::operator==(const cond_event_id_r17_c_& other) const { - return pci_range_utra_fdd_list_r9_present == other.pci_range_utra_fdd_list_r9_present and - (not pci_range_utra_fdd_list_r9_present or pci_range_utra_fdd_list_r9 == other.pci_range_utra_fdd_list_r9); + 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 @@ -2356,6 +3091,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 { @@ -2426,208 +3214,33 @@ bool meas_sensing_cfg_r15_s::operator==(const meas_sensing_cfg_r15_s& other) con sensing_resel_counter_r15 == other.sensing_resel_counter_r15 and sensing_prio_r15 == other.sensing_prio_r15; } -const char* meas_sensing_cfg_r15_s::sensing_periodicity_r15_opts::to_string() const -{ - static const char* options[] = { - "ms20", "ms50", "ms100", "ms200", "ms300", "ms400", "ms500", "ms600", "ms700", "ms800", "ms900", "ms1000"}; - return convert_enum_idx(options, 12, value, "meas_sensing_cfg_r15_s::sensing_periodicity_r15_e_"); -} -uint16_t meas_sensing_cfg_r15_s::sensing_periodicity_r15_opts::to_number() const -{ - static const uint16_t options[] = {20, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000}; - return map_enum_number(options, 12, value, "meas_sensing_cfg_r15_s::sensing_periodicity_r15_e_"); -} - -// MeasSubframePatternConfigNeigh-r10 ::= CHOICE -void meas_sf_pattern_cfg_neigh_r10_c::set(types::options e) -{ - type_ = e; -} -void meas_sf_pattern_cfg_neigh_r10_c::set_release() -{ - set(types::release); -} -meas_sf_pattern_cfg_neigh_r10_c::setup_s_& meas_sf_pattern_cfg_neigh_r10_c::set_setup() -{ - set(types::setup); - return c; -} -void meas_sf_pattern_cfg_neigh_r10_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("measSubframePatternNeigh-r10"); - c.meas_sf_pattern_neigh_r10.to_json(j); - if (c.meas_sf_cell_list_r10_present) { - j.start_array("measSubframeCellList-r10"); - for (const auto& e1 : c.meas_sf_cell_list_r10) { - e1.to_json(j); - } - j.end_array(); - } - j.end_obj(); - break; - default: - log_invalid_choice_id(type_, "meas_sf_pattern_cfg_neigh_r10_c"); - } - j.end_obj(); -} -SRSASN_CODE meas_sf_pattern_cfg_neigh_r10_c::pack(bit_ref& bref) const -{ - type_.pack(bref); - switch (type_) { - case types::release: - break; - case types::setup: - HANDLE_CODE(bref.pack(c.meas_sf_cell_list_r10_present, 1)); - HANDLE_CODE(c.meas_sf_pattern_neigh_r10.pack(bref)); - if (c.meas_sf_cell_list_r10_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, c.meas_sf_cell_list_r10, 1, 32)); - } - break; - default: - log_invalid_choice_id(type_, "meas_sf_pattern_cfg_neigh_r10_c"); - return SRSASN_ERROR_ENCODE_FAIL; - } - return SRSASN_SUCCESS; -} -SRSASN_CODE meas_sf_pattern_cfg_neigh_r10_c::unpack(cbit_ref& bref) -{ - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::release: - break; - case types::setup: - HANDLE_CODE(bref.unpack(c.meas_sf_cell_list_r10_present, 1)); - HANDLE_CODE(c.meas_sf_pattern_neigh_r10.unpack(bref)); - if (c.meas_sf_cell_list_r10_present) { - HANDLE_CODE(unpack_dyn_seq_of(c.meas_sf_cell_list_r10, bref, 1, 32)); - } - break; - default: - log_invalid_choice_id(type_, "meas_sf_pattern_cfg_neigh_r10_c"); - return SRSASN_ERROR_DECODE_FAIL; - } - return SRSASN_SUCCESS; -} -bool meas_sf_pattern_cfg_neigh_r10_c::operator==(const meas_sf_pattern_cfg_neigh_r10_c& other) const -{ - return type() == other.type() and c.meas_sf_pattern_neigh_r10 == other.c.meas_sf_pattern_neigh_r10 and - c.meas_sf_cell_list_r10_present == other.c.meas_sf_cell_list_r10_present and - (not c.meas_sf_cell_list_r10_present or c.meas_sf_cell_list_r10 == other.c.meas_sf_cell_list_r10); -} - -// PhysCellIdGERAN ::= SEQUENCE -SRSASN_CODE pci_geran_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(network_colour_code.pack(bref)); - HANDLE_CODE(base_station_colour_code.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE pci_geran_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(network_colour_code.unpack(bref)); - HANDLE_CODE(base_station_colour_code.unpack(bref)); - - return SRSASN_SUCCESS; -} -void pci_geran_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_str("networkColourCode", network_colour_code.to_string()); - j.write_str("baseStationColourCode", base_station_colour_code.to_string()); - j.end_obj(); -} -bool pci_geran_s::operator==(const pci_geran_s& other) const -{ - return network_colour_code == other.network_colour_code and - base_station_colour_code == other.base_station_colour_code; -} - -// QuantityConfigRS-NR-r15 ::= SEQUENCE -SRSASN_CODE quant_cfg_rs_nr_r15_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(filt_coeff_rsrp_r15_present, 1)); - HANDLE_CODE(bref.pack(filt_coeff_rsrq_r15_present, 1)); - HANDLE_CODE(bref.pack(filt_coef_sinr_r13_present, 1)); - - if (filt_coeff_rsrp_r15_present) { - HANDLE_CODE(filt_coeff_rsrp_r15.pack(bref)); - } - if (filt_coeff_rsrq_r15_present) { - HANDLE_CODE(filt_coeff_rsrq_r15.pack(bref)); - } - if (filt_coef_sinr_r13_present) { - HANDLE_CODE(filt_coef_sinr_r13.pack(bref)); - } - - return SRSASN_SUCCESS; -} -SRSASN_CODE quant_cfg_rs_nr_r15_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(filt_coeff_rsrp_r15_present, 1)); - HANDLE_CODE(bref.unpack(filt_coeff_rsrq_r15_present, 1)); - HANDLE_CODE(bref.unpack(filt_coef_sinr_r13_present, 1)); - - if (filt_coeff_rsrp_r15_present) { - HANDLE_CODE(filt_coeff_rsrp_r15.unpack(bref)); - } - if (filt_coeff_rsrq_r15_present) { - HANDLE_CODE(filt_coeff_rsrq_r15.unpack(bref)); - } - if (filt_coef_sinr_r13_present) { - HANDLE_CODE(filt_coef_sinr_r13.unpack(bref)); - } - - return SRSASN_SUCCESS; -} -void quant_cfg_rs_nr_r15_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (filt_coeff_rsrp_r15_present) { - j.write_str("filterCoeff-RSRP-r15", filt_coeff_rsrp_r15.to_string()); - } - if (filt_coeff_rsrq_r15_present) { - j.write_str("filterCoeff-RSRQ-r15", filt_coeff_rsrq_r15.to_string()); - } - if (filt_coef_sinr_r13_present) { - j.write_str("filterCoefficient-SINR-r13", filt_coef_sinr_r13.to_string()); - } - j.end_obj(); +const char* meas_sensing_cfg_r15_s::sensing_periodicity_r15_opts::to_string() const +{ + static const char* options[] = { + "ms20", "ms50", "ms100", "ms200", "ms300", "ms400", "ms500", "ms600", "ms700", "ms800", "ms900", "ms1000"}; + return convert_enum_idx(options, 12, value, "meas_sensing_cfg_r15_s::sensing_periodicity_r15_e_"); } -bool quant_cfg_rs_nr_r15_s::operator==(const quant_cfg_rs_nr_r15_s& other) const +uint16_t meas_sensing_cfg_r15_s::sensing_periodicity_r15_opts::to_number() const { - return filt_coeff_rsrp_r15_present == other.filt_coeff_rsrp_r15_present and - (not filt_coeff_rsrp_r15_present or filt_coeff_rsrp_r15 == other.filt_coeff_rsrp_r15) and - filt_coeff_rsrq_r15_present == other.filt_coeff_rsrq_r15_present and - (not filt_coeff_rsrq_r15_present or filt_coeff_rsrq_r15 == other.filt_coeff_rsrq_r15) and - filt_coef_sinr_r13_present == other.filt_coef_sinr_r13_present and - (not filt_coef_sinr_r13_present or filt_coef_sinr_r13 == other.filt_coef_sinr_r13); + static const uint16_t options[] = {20, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000}; + return map_enum_number(options, 12, value, "meas_sensing_cfg_r15_s::sensing_periodicity_r15_e_"); } -// RMTC-Config-r13 ::= CHOICE -void rmtc_cfg_r13_c::set(types::options e) +// MeasSubframePatternConfigNeigh-r10 ::= CHOICE +void meas_sf_pattern_cfg_neigh_r10_c::set(types::options e) { type_ = e; } -void rmtc_cfg_r13_c::set_release() +void meas_sf_pattern_cfg_neigh_r10_c::set_release() { set(types::release); } -rmtc_cfg_r13_c::setup_s_& rmtc_cfg_r13_c::set_setup() +meas_sf_pattern_cfg_neigh_r10_c::setup_s_& meas_sf_pattern_cfg_neigh_r10_c::set_setup() { set(types::setup); return c; } -void rmtc_cfg_r13_c::to_json(json_writer& j) const +void meas_sf_pattern_cfg_neigh_r10_c::to_json(json_writer& j) const { j.start_obj(); switch (type_) { @@ -2636,40 +3249,42 @@ void rmtc_cfg_r13_c::to_json(json_writer& j) const case types::setup: j.write_fieldname("setup"); j.start_obj(); - j.write_str("rmtc-Period-r13", c.rmtc_period_r13.to_string()); - if (c.rmtc_sf_offset_r13_present) { - j.write_int("rmtc-SubframeOffset-r13", c.rmtc_sf_offset_r13); + j.write_fieldname("measSubframePatternNeigh-r10"); + c.meas_sf_pattern_neigh_r10.to_json(j); + if (c.meas_sf_cell_list_r10_present) { + j.start_array("measSubframeCellList-r10"); + for (const auto& e1 : c.meas_sf_cell_list_r10) { + e1.to_json(j); + } + j.end_array(); } - j.write_str("measDuration-r13", c.meas_dur_r13.to_string()); j.end_obj(); break; default: - log_invalid_choice_id(type_, "rmtc_cfg_r13_c"); + log_invalid_choice_id(type_, "meas_sf_pattern_cfg_neigh_r10_c"); } j.end_obj(); } -SRSASN_CODE rmtc_cfg_r13_c::pack(bit_ref& bref) const +SRSASN_CODE meas_sf_pattern_cfg_neigh_r10_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(bref.pack(c.rmtc_sf_offset_r13_present, 1)); - HANDLE_CODE(c.rmtc_period_r13.pack(bref)); - if (c.rmtc_sf_offset_r13_present) { - HANDLE_CODE(pack_integer(bref, c.rmtc_sf_offset_r13, (uint16_t)0u, (uint16_t)639u)); + HANDLE_CODE(bref.pack(c.meas_sf_cell_list_r10_present, 1)); + HANDLE_CODE(c.meas_sf_pattern_neigh_r10.pack(bref)); + if (c.meas_sf_cell_list_r10_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, c.meas_sf_cell_list_r10, 1, 32)); } - HANDLE_CODE(c.meas_dur_r13.pack(bref)); break; default: - log_invalid_choice_id(type_, "rmtc_cfg_r13_c"); + log_invalid_choice_id(type_, "meas_sf_pattern_cfg_neigh_r10_c"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rmtc_cfg_r13_c::unpack(cbit_ref& bref) +SRSASN_CODE meas_sf_pattern_cfg_neigh_r10_c::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -2678,238 +3293,171 @@ SRSASN_CODE rmtc_cfg_r13_c::unpack(cbit_ref& bref) case types::release: break; case types::setup: - bref.unpack(c.ext, 1); - HANDLE_CODE(bref.unpack(c.rmtc_sf_offset_r13_present, 1)); - HANDLE_CODE(c.rmtc_period_r13.unpack(bref)); - if (c.rmtc_sf_offset_r13_present) { - HANDLE_CODE(unpack_integer(c.rmtc_sf_offset_r13, bref, (uint16_t)0u, (uint16_t)639u)); + HANDLE_CODE(bref.unpack(c.meas_sf_cell_list_r10_present, 1)); + HANDLE_CODE(c.meas_sf_pattern_neigh_r10.unpack(bref)); + if (c.meas_sf_cell_list_r10_present) { + HANDLE_CODE(unpack_dyn_seq_of(c.meas_sf_cell_list_r10, bref, 1, 32)); } - HANDLE_CODE(c.meas_dur_r13.unpack(bref)); break; default: - log_invalid_choice_id(type_, "rmtc_cfg_r13_c"); + log_invalid_choice_id(type_, "meas_sf_pattern_cfg_neigh_r10_c"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -bool rmtc_cfg_r13_c::operator==(const rmtc_cfg_r13_c& other) const -{ - return type() == other.type() and c.ext == other.c.ext and c.rmtc_period_r13 == other.c.rmtc_period_r13 and - c.rmtc_sf_offset_r13_present == other.c.rmtc_sf_offset_r13_present and - (not c.rmtc_sf_offset_r13_present or c.rmtc_sf_offset_r13 == other.c.rmtc_sf_offset_r13) and - c.meas_dur_r13 == other.c.meas_dur_r13; -} - -const char* rmtc_cfg_r13_c::setup_s_::rmtc_period_r13_opts::to_string() const -{ - static const char* options[] = {"ms40", "ms80", "ms160", "ms320", "ms640"}; - return convert_enum_idx(options, 5, value, "rmtc_cfg_r13_c::setup_s_::rmtc_period_r13_e_"); -} -uint16_t rmtc_cfg_r13_c::setup_s_::rmtc_period_r13_opts::to_number() const -{ - static const uint16_t options[] = {40, 80, 160, 320, 640}; - return map_enum_number(options, 5, value, "rmtc_cfg_r13_c::setup_s_::rmtc_period_r13_e_"); -} - -const char* rmtc_cfg_r13_c::setup_s_::meas_dur_r13_opts::to_string() const -{ - static const char* options[] = {"sym1", "sym14", "sym28", "sym42", "sym70"}; - return convert_enum_idx(options, 5, value, "rmtc_cfg_r13_c::setup_s_::meas_dur_r13_e_"); -} -uint8_t rmtc_cfg_r13_c::setup_s_::meas_dur_r13_opts::to_number() const +bool meas_sf_pattern_cfg_neigh_r10_c::operator==(const meas_sf_pattern_cfg_neigh_r10_c& other) const { - static const uint8_t options[] = {1, 14, 28, 42, 70}; - return map_enum_number(options, 5, value, "rmtc_cfg_r13_c::setup_s_::meas_dur_r13_e_"); + return type() == other.type() and c.meas_sf_pattern_neigh_r10 == other.c.meas_sf_pattern_neigh_r10 and + c.meas_sf_cell_list_r10_present == other.c.meas_sf_cell_list_r10_present and + (not c.meas_sf_cell_list_r10_present or c.meas_sf_cell_list_r10 == other.c.meas_sf_cell_list_r10); } -// RS-ConfigSSB-NR-r15 ::= SEQUENCE -SRSASN_CODE rs_cfg_ssb_nr_r15_s::pack(bit_ref& bref) const +// PhysCellIdGERAN ::= SEQUENCE +SRSASN_CODE pci_geran_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(meas_timing_cfg_r15.pack(bref)); - HANDLE_CODE(subcarrier_spacing_ssb_r15.pack(bref)); - - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= ssb_to_measure_r15.is_present(); - group_flags.pack(bref); - - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(network_colour_code.pack(bref)); + HANDLE_CODE(base_station_colour_code.pack(bref)); - HANDLE_CODE(bref.pack(ssb_to_measure_r15.is_present(), 1)); - if (ssb_to_measure_r15.is_present()) { - HANDLE_CODE(ssb_to_measure_r15->pack(bref)); - } - } - } return SRSASN_SUCCESS; } -SRSASN_CODE rs_cfg_ssb_nr_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE pci_geran_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(meas_timing_cfg_r15.unpack(bref)); - HANDLE_CODE(subcarrier_spacing_ssb_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); + HANDLE_CODE(network_colour_code.unpack(bref)); + HANDLE_CODE(base_station_colour_code.unpack(bref)); - bool ssb_to_measure_r15_present; - HANDLE_CODE(bref.unpack(ssb_to_measure_r15_present, 1)); - ssb_to_measure_r15.set_present(ssb_to_measure_r15_present); - if (ssb_to_measure_r15.is_present()) { - HANDLE_CODE(ssb_to_measure_r15->unpack(bref)); - } - } - } return SRSASN_SUCCESS; } -void rs_cfg_ssb_nr_r15_s::to_json(json_writer& j) const +void pci_geran_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("measTimingConfig-r15"); - meas_timing_cfg_r15.to_json(j); - j.write_str("subcarrierSpacingSSB-r15", subcarrier_spacing_ssb_r15.to_string()); - if (ext) { - if (ssb_to_measure_r15.is_present()) { - j.write_fieldname("ssb-ToMeasure-r15"); - ssb_to_measure_r15->to_json(j); - } - } + j.write_str("networkColourCode", network_colour_code.to_string()); + j.write_str("baseStationColourCode", base_station_colour_code.to_string()); j.end_obj(); } -bool rs_cfg_ssb_nr_r15_s::operator==(const rs_cfg_ssb_nr_r15_s& other) const +bool pci_geran_s::operator==(const pci_geran_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))); + return network_colour_code == other.network_colour_code and + base_station_colour_code == other.base_station_colour_code; } -const char* rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_opts::to_string() const -{ - static const char* options[] = {"kHz15", "kHz30", "kHz120", "kHz240"}; - return convert_enum_idx(options, 4, value, "rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_e_"); -} -uint8_t rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_opts::to_number() const +// QuantityConfigRS-NR-r15 ::= SEQUENCE +SRSASN_CODE quant_cfg_rs_nr_r15_s::pack(bit_ref& bref) const { - static const uint8_t options[] = {15, 30, 120, 240}; - return map_enum_number(options, 4, value, "rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_e_"); -} + HANDLE_CODE(bref.pack(filt_coeff_rsrp_r15_present, 1)); + HANDLE_CODE(bref.pack(filt_coeff_rsrq_r15_present, 1)); + HANDLE_CODE(bref.pack(filt_coef_sinr_r13_present, 1)); -void rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::set(types::options e) -{ - type_ = e; -} -void rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::set_release() -{ - set(types::release); -} -ssb_to_measure_r15_c& rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::set_setup() -{ - set(types::setup); - return c; -} -void rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::to_json(json_writer& j) const -{ - j.start_obj(); - switch (type_) { - case types::release: - break; - case types::setup: - j.write_fieldname("setup"); - c.to_json(j); - break; - default: - log_invalid_choice_id(type_, "rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_"); + if (filt_coeff_rsrp_r15_present) { + HANDLE_CODE(filt_coeff_rsrp_r15.pack(bref)); } - j.end_obj(); + if (filt_coeff_rsrq_r15_present) { + HANDLE_CODE(filt_coeff_rsrq_r15.pack(bref)); + } + if (filt_coef_sinr_r13_present) { + HANDLE_CODE(filt_coef_sinr_r13.pack(bref)); + } + + return SRSASN_SUCCESS; } -SRSASN_CODE rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::pack(bit_ref& bref) const +SRSASN_CODE quant_cfg_rs_nr_r15_s::unpack(cbit_ref& bref) { - type_.pack(bref); - switch (type_) { - case types::release: - break; - case types::setup: - HANDLE_CODE(c.pack(bref)); - break; - default: - log_invalid_choice_id(type_, "rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_"); - return SRSASN_ERROR_ENCODE_FAIL; + HANDLE_CODE(bref.unpack(filt_coeff_rsrp_r15_present, 1)); + HANDLE_CODE(bref.unpack(filt_coeff_rsrq_r15_present, 1)); + HANDLE_CODE(bref.unpack(filt_coef_sinr_r13_present, 1)); + + if (filt_coeff_rsrp_r15_present) { + HANDLE_CODE(filt_coeff_rsrp_r15.unpack(bref)); + } + if (filt_coeff_rsrq_r15_present) { + HANDLE_CODE(filt_coeff_rsrq_r15.unpack(bref)); + } + if (filt_coef_sinr_r13_present) { + HANDLE_CODE(filt_coef_sinr_r13.unpack(bref)); } + return SRSASN_SUCCESS; } -SRSASN_CODE rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::unpack(cbit_ref& bref) +void quant_cfg_rs_nr_r15_s::to_json(json_writer& j) const { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::release: - break; - case types::setup: - HANDLE_CODE(c.unpack(bref)); - break; - default: - log_invalid_choice_id(type_, "rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_"); - return SRSASN_ERROR_DECODE_FAIL; + j.start_obj(); + if (filt_coeff_rsrp_r15_present) { + j.write_str("filterCoeff-RSRP-r15", filt_coeff_rsrp_r15.to_string()); + } + if (filt_coeff_rsrq_r15_present) { + j.write_str("filterCoeff-RSRQ-r15", filt_coeff_rsrq_r15.to_string()); } - return SRSASN_SUCCESS; + if (filt_coef_sinr_r13_present) { + j.write_str("filterCoefficient-SINR-r13", filt_coef_sinr_r13.to_string()); + } + j.end_obj(); } -bool rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::operator==(const ssb_to_measure_r15_c_& other) const +bool quant_cfg_rs_nr_r15_s::operator==(const quant_cfg_rs_nr_r15_s& other) const { - return type() == other.type() and c == other.c; + return filt_coeff_rsrp_r15_present == other.filt_coeff_rsrp_r15_present and + (not filt_coeff_rsrp_r15_present or filt_coeff_rsrp_r15 == other.filt_coeff_rsrp_r15) and + filt_coeff_rsrq_r15_present == other.filt_coeff_rsrq_r15_present and + (not filt_coeff_rsrq_r15_present or filt_coeff_rsrq_r15 == other.filt_coeff_rsrq_r15) and + filt_coef_sinr_r13_present == other.filt_coef_sinr_r13_present and + (not filt_coef_sinr_r13_present or filt_coef_sinr_r13 == other.filt_coef_sinr_r13); } -// RSRQ-RangeConfig-r12 ::= CHOICE -void rsrq_range_cfg_r12_c::set(types::options e) +// RMTC-Config-r13 ::= CHOICE +void rmtc_cfg_r13_c::set(types::options e) { type_ = e; } -void rsrq_range_cfg_r12_c::set_release() +void rmtc_cfg_r13_c::set_release() { set(types::release); } -int8_t& rsrq_range_cfg_r12_c::set_setup() +rmtc_cfg_r13_c::setup_s_& rmtc_cfg_r13_c::set_setup() { set(types::setup); return c; } -void rsrq_range_cfg_r12_c::to_json(json_writer& j) const +void rmtc_cfg_r13_c::to_json(json_writer& j) const { j.start_obj(); switch (type_) { case types::release: break; case types::setup: - j.write_int("setup", c); + j.write_fieldname("setup"); + j.start_obj(); + j.write_str("rmtc-Period-r13", c.rmtc_period_r13.to_string()); + if (c.rmtc_sf_offset_r13_present) { + j.write_int("rmtc-SubframeOffset-r13", c.rmtc_sf_offset_r13); + } + j.write_str("measDuration-r13", c.meas_dur_r13.to_string()); + j.end_obj(); break; default: - log_invalid_choice_id(type_, "rsrq_range_cfg_r12_c"); + log_invalid_choice_id(type_, "rmtc_cfg_r13_c"); } j.end_obj(); } -SRSASN_CODE rsrq_range_cfg_r12_c::pack(bit_ref& bref) const +SRSASN_CODE rmtc_cfg_r13_c::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { case types::release: break; case types::setup: - HANDLE_CODE(pack_integer(bref, c, (int8_t)-30, (int8_t)46)); + bref.pack(c.ext, 1); + HANDLE_CODE(bref.pack(c.rmtc_sf_offset_r13_present, 1)); + HANDLE_CODE(c.rmtc_period_r13.pack(bref)); + if (c.rmtc_sf_offset_r13_present) { + HANDLE_CODE(pack_integer(bref, c.rmtc_sf_offset_r13, (uint16_t)0u, (uint16_t)639u)); + } + HANDLE_CODE(c.meas_dur_r13.pack(bref)); break; default: - log_invalid_choice_id(type_, "rsrq_range_cfg_r12_c"); + log_invalid_choice_id(type_, "rmtc_cfg_r13_c"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rsrq_range_cfg_r12_c::unpack(cbit_ref& bref) +SRSASN_CODE rmtc_cfg_r13_c::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -2918,399 +3466,719 @@ SRSASN_CODE rsrq_range_cfg_r12_c::unpack(cbit_ref& bref) case types::release: break; case types::setup: - HANDLE_CODE(unpack_integer(c, bref, (int8_t)-30, (int8_t)46)); + bref.unpack(c.ext, 1); + HANDLE_CODE(bref.unpack(c.rmtc_sf_offset_r13_present, 1)); + HANDLE_CODE(c.rmtc_period_r13.unpack(bref)); + if (c.rmtc_sf_offset_r13_present) { + HANDLE_CODE(unpack_integer(c.rmtc_sf_offset_r13, bref, (uint16_t)0u, (uint16_t)639u)); + } + HANDLE_CODE(c.meas_dur_r13.unpack(bref)); break; default: - log_invalid_choice_id(type_, "rsrq_range_cfg_r12_c"); + log_invalid_choice_id(type_, "rmtc_cfg_r13_c"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -bool rsrq_range_cfg_r12_c::operator==(const rsrq_range_cfg_r12_c& other) const +bool rmtc_cfg_r13_c::operator==(const rmtc_cfg_r13_c& other) const { - return type() == other.type() and c == other.c; + return type() == other.type() and c.ext == other.c.ext and c.rmtc_period_r13 == other.c.rmtc_period_r13 and + c.rmtc_sf_offset_r13_present == other.c.rmtc_sf_offset_r13_present and + (not c.rmtc_sf_offset_r13_present or c.rmtc_sf_offset_r13 == other.c.rmtc_sf_offset_r13) and + c.meas_dur_r13 == other.c.meas_dur_r13; } -// ReportInterval ::= ENUMERATED -const char* report_interv_opts::to_string() const +const char* rmtc_cfg_r13_c::setup_s_::rmtc_period_r13_opts::to_string() const { - static const char* options[] = {"ms120", - "ms240", - "ms480", - "ms640", - "ms1024", - "ms2048", - "ms5120", - "ms10240", - "min1", - "min6", - "min12", - "min30", - "min60", - "spare3", - "spare2", - "spare1"}; - return convert_enum_idx(options, 16, value, "report_interv_e"); + static const char* options[] = {"ms40", "ms80", "ms160", "ms320", "ms640"}; + return convert_enum_idx(options, 5, value, "rmtc_cfg_r13_c::setup_s_::rmtc_period_r13_e_"); } -uint16_t report_interv_opts::to_number() const +uint16_t rmtc_cfg_r13_c::setup_s_::rmtc_period_r13_opts::to_number() const { - static const uint16_t options[] = {120, 240, 480, 640, 1024, 2048, 5120, 10240, 1, 6, 12, 30, 60}; - return map_enum_number(options, 13, value, "report_interv_e"); + static const uint16_t options[] = {40, 80, 160, 320, 640}; + return map_enum_number(options, 5, value, "rmtc_cfg_r13_c::setup_s_::rmtc_period_r13_e_"); } -// ReportQuantityNR-r15 ::= SEQUENCE -SRSASN_CODE report_quant_nr_r15_s::pack(bit_ref& bref) const +const char* rmtc_cfg_r13_c::setup_s_::meas_dur_r13_opts::to_string() const { - HANDLE_CODE(bref.pack(ss_rsrp, 1)); - HANDLE_CODE(bref.pack(ss_rsrq, 1)); - HANDLE_CODE(bref.pack(ss_sinr, 1)); + static const char* options[] = {"sym1", "sym14", "sym28", "sym42", "sym70"}; + return convert_enum_idx(options, 5, value, "rmtc_cfg_r13_c::setup_s_::meas_dur_r13_e_"); +} +uint8_t rmtc_cfg_r13_c::setup_s_::meas_dur_r13_opts::to_number() const +{ + static const uint8_t options[] = {1, 14, 28, 42, 70}; + 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 report_quant_nr_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE rmtc_cfg_nr_r16_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(ss_rsrp, 1)); - HANDLE_CODE(bref.unpack(ss_rsrq, 1)); - HANDLE_CODE(bref.unpack(ss_sinr, 1)); + 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 report_quant_nr_r15_s::to_json(json_writer& j) const +void rmtc_cfg_nr_r16_s::to_json(json_writer& j) const { j.start_obj(); - j.write_bool("ss-rsrp", ss_rsrp); - j.write_bool("ss-rsrq", ss_rsrq); - j.write_bool("ss-sinr", ss_sinr); + 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 report_quant_nr_r15_s::operator==(const report_quant_nr_r15_s& other) const +bool rmtc_cfg_nr_r16_s::operator==(const rmtc_cfg_nr_r16_s& other) const { - return ss_rsrp == other.ss_rsrp and ss_rsrq == other.ss_rsrq and ss_sinr == other.ss_sinr; + 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))); } -// ReportQuantityWLAN-r13 ::= SEQUENCE -SRSASN_CODE report_quant_wlan_r13_s::pack(bit_ref& bref) const +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 { bref.pack(ext, 1); - HANDLE_CODE(bref.pack(band_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.pack(carrier_info_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.pack(available_admission_capacity_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.pack(backhaul_dl_bw_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.pack(backhaul_ul_bw_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.pack(ch_utilization_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.pack(station_count_request_wlan_r13_present, 1)); + HANDLE_CODE(meas_timing_cfg_r15.pack(bref)); + HANDLE_CODE(subcarrier_spacing_ssb_r15.pack(bref)); + + 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]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(ssb_to_measure_r15.is_present(), 1)); + if (ssb_to_measure_r15.is_present()) { + 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(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(0, 1007))); + } + } + } return SRSASN_SUCCESS; } -SRSASN_CODE report_quant_wlan_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE rs_cfg_ssb_nr_r15_s::unpack(cbit_ref& bref) { bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(band_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.unpack(carrier_info_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.unpack(available_admission_capacity_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.unpack(backhaul_dl_bw_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.unpack(backhaul_ul_bw_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.unpack(ch_utilization_request_wlan_r13_present, 1)); - HANDLE_CODE(bref.unpack(station_count_request_wlan_r13_present, 1)); + HANDLE_CODE(meas_timing_cfg_r15.unpack(bref)); + HANDLE_CODE(subcarrier_spacing_ssb_r15.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 ssb_to_measure_r15_present; + HANDLE_CODE(bref.unpack(ssb_to_measure_r15_present, 1)); + ssb_to_measure_r15.set_present(ssb_to_measure_r15_present); + if (ssb_to_measure_r15.is_present()) { + 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(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(0, 1007))); + } + } + } return SRSASN_SUCCESS; } -void report_quant_wlan_r13_s::to_json(json_writer& j) const +void rs_cfg_ssb_nr_r15_s::to_json(json_writer& j) const { j.start_obj(); - if (band_request_wlan_r13_present) { - j.write_str("bandRequestWLAN-r13", "true"); - } - if (carrier_info_request_wlan_r13_present) { - j.write_str("carrierInfoRequestWLAN-r13", "true"); - } - if (available_admission_capacity_request_wlan_r13_present) { - j.write_str("availableAdmissionCapacityRequestWLAN-r13", "true"); - } - if (backhaul_dl_bw_request_wlan_r13_present) { - j.write_str("backhaulDL-BandwidthRequestWLAN-r13", "true"); - } - if (backhaul_ul_bw_request_wlan_r13_present) { - j.write_str("backhaulUL-BandwidthRequestWLAN-r13", "true"); - } - if (ch_utilization_request_wlan_r13_present) { - j.write_str("channelUtilizationRequestWLAN-r13", "true"); - } - if (station_count_request_wlan_r13_present) { - j.write_str("stationCountRequestWLAN-r13", "true"); + j.write_fieldname("measTimingConfig-r15"); + meas_timing_cfg_r15.to_json(j); + j.write_str("subcarrierSpacingSSB-r15", subcarrier_spacing_ssb_r15.to_string()); + if (ext) { + if (ssb_to_measure_r15.is_present()) { + 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(); } -bool report_quant_wlan_r13_s::operator==(const report_quant_wlan_r13_s& other) const +bool rs_cfg_ssb_nr_r15_s::operator==(const rs_cfg_ssb_nr_r15_s& other) const { - return ext == other.ext and band_request_wlan_r13_present == other.band_request_wlan_r13_present and - carrier_info_request_wlan_r13_present == other.carrier_info_request_wlan_r13_present and - available_admission_capacity_request_wlan_r13_present == - other.available_admission_capacity_request_wlan_r13_present and - backhaul_dl_bw_request_wlan_r13_present == other.backhaul_dl_bw_request_wlan_r13_present and - backhaul_ul_bw_request_wlan_r13_present == other.backhaul_ul_bw_request_wlan_r13_present and - ch_utilization_request_wlan_r13_present == other.ch_utilization_request_wlan_r13_present and - station_count_request_wlan_r13_present == other.station_count_request_wlan_r13_present; + 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) 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))); } -// ThresholdEUTRA ::= CHOICE -void thres_eutra_c::destroy_() {} -void thres_eutra_c::set(types::options e) +const char* rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_opts::to_string() const { - destroy_(); - type_ = e; + static const char* options[] = {"kHz15", "kHz30", "kHz120", "kHz240"}; + return convert_enum_idx(options, 4, value, "rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_e_"); } -thres_eutra_c::thres_eutra_c(const thres_eutra_c& other) +uint8_t rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_opts::to_number() const { - type_ = other.type(); - switch (type_) { - case types::thres_rsrp: - c.init(other.c.get()); - break; - case types::thres_rsrq: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "thres_eutra_c"); - } + static const uint8_t options[] = {15, 30, 120, 240}; + return map_enum_number(options, 4, value, "rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_e_"); } -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()); - break; - case types::thres_rsrq: - c.set(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "thres_eutra_c"); - } - return *this; +void rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::set(types::options e) +{ + type_ = e; } -uint8_t& thres_eutra_c::set_thres_rsrp() +void rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::set_release() { - set(types::thres_rsrp); - return c.get(); + set(types::release); } -uint8_t& thres_eutra_c::set_thres_rsrq() +ssb_to_measure_r15_c& rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::set_setup() { - set(types::thres_rsrq); - return c.get(); + set(types::setup); + return c; } -void thres_eutra_c::to_json(json_writer& j) const +void rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::thres_rsrp: - j.write_int("threshold-RSRP", c.get()); + case types::release: break; - case types::thres_rsrq: - j.write_int("threshold-RSRQ", c.get()); + case types::setup: + j.write_fieldname("setup"); + c.to_json(j); break; default: - log_invalid_choice_id(type_, "thres_eutra_c"); + log_invalid_choice_id(type_, "rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_"); } j.end_obj(); } -SRSASN_CODE thres_eutra_c::pack(bit_ref& bref) const +SRSASN_CODE rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::thres_rsrp: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)97u)); + case types::release: break; - case types::thres_rsrq: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)34u)); + case types::setup: + HANDLE_CODE(c.pack(bref)); break; default: - log_invalid_choice_id(type_, "thres_eutra_c"); + log_invalid_choice_id(type_, "rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE thres_eutra_c::unpack(cbit_ref& bref) +SRSASN_CODE rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::thres_rsrp: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)97u)); + case types::release: break; - case types::thres_rsrq: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)34u)); + case types::setup: + HANDLE_CODE(c.unpack(bref)); break; default: - log_invalid_choice_id(type_, "thres_eutra_c"); + log_invalid_choice_id(type_, "rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -bool thres_eutra_c::operator==(const thres_eutra_c& other) const +bool rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::operator==(const ssb_to_measure_r15_c_& other) const { - if (type_ != other.type_) { - return false; - } - switch (type_) { - case types::thres_rsrp: - return c.get() == other.c.get(); - case types::thres_rsrq: - return c.get() == other.c.get(); - default: - return true; - } - return true; + return type() == other.type() and c == other.c; } -// ThresholdNR-r15 ::= CHOICE -void thres_nr_r15_c::destroy_() {} -void thres_nr_r15_c::set(types::options e) +const char* rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r17_opts::to_string() const { - destroy_(); - type_ = e; + static const char* options[] = {"kHz480", "kHz960"}; + return convert_enum_idx(options, 2, value, "rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r17_e_"); } -thres_nr_r15_c::thres_nr_r15_c(const thres_nr_r15_c& other) +uint16_t rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r17_opts::to_number() const { - type_ = other.type(); - switch (type_) { - case types::nr_rsrp_r15: - c.init(other.c.get()); - break; - case types::nr_rsrq_r15: - c.init(other.c.get()); - break; - case types::nr_sinr_r15: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "thres_nr_r15_c"); - } + 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_"); } -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()); - break; - case types::nr_rsrq_r15: - c.set(other.c.get()); - break; - case types::nr_sinr_r15: - c.set(other.c.get()); - 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() +// RSRQ-RangeConfig-r12 ::= CHOICE +void rsrq_range_cfg_r12_c::set(types::options e) { - set(types::nr_rsrp_r15); - return c.get(); + type_ = e; } -uint8_t& thres_nr_r15_c::set_nr_rsrq_r15() +void rsrq_range_cfg_r12_c::set_release() { - set(types::nr_rsrq_r15); - return c.get(); + set(types::release); } -uint8_t& thres_nr_r15_c::set_nr_sinr_r15() +int8_t& rsrq_range_cfg_r12_c::set_setup() { - set(types::nr_sinr_r15); - return c.get(); + set(types::setup); + return c; } -void thres_nr_r15_c::to_json(json_writer& j) const +void rsrq_range_cfg_r12_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()); - break; - case types::nr_rsrq_r15: - j.write_int("nr-RSRQ-r15", c.get()); - break; - case types::nr_sinr_r15: - j.write_int("nr-SINR-r15", c.get()); + case types::release: + break; + case types::setup: + j.write_int("setup", c); break; default: - log_invalid_choice_id(type_, "thres_nr_r15_c"); + log_invalid_choice_id(type_, "rsrq_range_cfg_r12_c"); } j.end_obj(); } -SRSASN_CODE thres_nr_r15_c::pack(bit_ref& bref) const +SRSASN_CODE rsrq_range_cfg_r12_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)0u, (uint8_t)127u)); - break; - case types::nr_rsrq_r15: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + case types::release: break; - case types::nr_sinr_r15: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + case types::setup: + HANDLE_CODE(pack_integer(bref, c, (int8_t)-30, (int8_t)46)); break; default: - log_invalid_choice_id(type_, "thres_nr_r15_c"); + log_invalid_choice_id(type_, "rsrq_range_cfg_r12_c"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE thres_nr_r15_c::unpack(cbit_ref& bref) +SRSASN_CODE rsrq_range_cfg_r12_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(), bref, (uint8_t)0u, (uint8_t)127u)); - break; - case types::nr_rsrq_r15: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + case types::release: break; - case types::nr_sinr_r15: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + case types::setup: + HANDLE_CODE(unpack_integer(c, bref, (int8_t)-30, (int8_t)46)); break; default: - log_invalid_choice_id(type_, "thres_nr_r15_c"); + log_invalid_choice_id(type_, "rsrq_range_cfg_r12_c"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -bool thres_nr_r15_c::operator==(const thres_nr_r15_c& other) const +bool rsrq_range_cfg_r12_c::operator==(const rsrq_range_cfg_r12_c& other) const { - if (type_ != other.type_) { - return false; + return type() == other.type() and c == other.c; +} + +// ReportInterval ::= ENUMERATED +const char* report_interv_opts::to_string() const +{ + static const char* options[] = {"ms120", + "ms240", + "ms480", + "ms640", + "ms1024", + "ms2048", + "ms5120", + "ms10240", + "min1", + "min6", + "min12", + "min30", + "min60", + "spare3", + "spare2", + "spare1"}; + return convert_enum_idx(options, 16, value, "report_interv_e"); +} +uint16_t report_interv_opts::to_number() const +{ + static const uint16_t options[] = {120, 240, 480, 640, 1024, 2048, 5120, 10240, 1, 6, 12, 30, 60}; + return map_enum_number(options, 13, value, "report_interv_e"); +} + +// ReportQuantityNR-r15 ::= SEQUENCE +SRSASN_CODE report_quant_nr_r15_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(ss_rsrp, 1)); + HANDLE_CODE(bref.pack(ss_rsrq, 1)); + HANDLE_CODE(bref.pack(ss_sinr, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE report_quant_nr_r15_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(ss_rsrp, 1)); + HANDLE_CODE(bref.unpack(ss_rsrq, 1)); + HANDLE_CODE(bref.unpack(ss_sinr, 1)); + + return SRSASN_SUCCESS; +} +void report_quant_nr_r15_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_bool("ss-rsrp", ss_rsrp); + j.write_bool("ss-rsrq", ss_rsrq); + j.write_bool("ss-sinr", ss_sinr); + j.end_obj(); +} +bool report_quant_nr_r15_s::operator==(const report_quant_nr_r15_s& other) const +{ + return ss_rsrp == other.ss_rsrp and ss_rsrq == other.ss_rsrq and ss_sinr == other.ss_sinr; +} + +// ReportQuantityWLAN-r13 ::= SEQUENCE +SRSASN_CODE report_quant_wlan_r13_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(band_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.pack(carrier_info_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.pack(available_admission_capacity_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.pack(backhaul_dl_bw_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.pack(backhaul_ul_bw_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.pack(ch_utilization_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.pack(station_count_request_wlan_r13_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE report_quant_wlan_r13_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(band_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.unpack(carrier_info_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.unpack(available_admission_capacity_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.unpack(backhaul_dl_bw_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.unpack(backhaul_ul_bw_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.unpack(ch_utilization_request_wlan_r13_present, 1)); + HANDLE_CODE(bref.unpack(station_count_request_wlan_r13_present, 1)); + + return SRSASN_SUCCESS; +} +void report_quant_wlan_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (band_request_wlan_r13_present) { + j.write_str("bandRequestWLAN-r13", "true"); } - switch (type_) { - case types::nr_rsrp_r15: - return c.get() == other.c.get(); - case types::nr_rsrq_r15: - return c.get() == other.c.get(); - case types::nr_sinr_r15: - return c.get() == other.c.get(); - default: - return true; + if (carrier_info_request_wlan_r13_present) { + j.write_str("carrierInfoRequestWLAN-r13", "true"); } - return true; + if (available_admission_capacity_request_wlan_r13_present) { + j.write_str("availableAdmissionCapacityRequestWLAN-r13", "true"); + } + if (backhaul_dl_bw_request_wlan_r13_present) { + j.write_str("backhaulDL-BandwidthRequestWLAN-r13", "true"); + } + if (backhaul_ul_bw_request_wlan_r13_present) { + j.write_str("backhaulUL-BandwidthRequestWLAN-r13", "true"); + } + if (ch_utilization_request_wlan_r13_present) { + j.write_str("channelUtilizationRequestWLAN-r13", "true"); + } + if (station_count_request_wlan_r13_present) { + j.write_str("stationCountRequestWLAN-r13", "true"); + } + j.end_obj(); +} +bool report_quant_wlan_r13_s::operator==(const report_quant_wlan_r13_s& other) const +{ + return ext == other.ext and band_request_wlan_r13_present == other.band_request_wlan_r13_present and + carrier_info_request_wlan_r13_present == other.carrier_info_request_wlan_r13_present and + available_admission_capacity_request_wlan_r13_present == + other.available_admission_capacity_request_wlan_r13_present and + backhaul_dl_bw_request_wlan_r13_present == other.backhaul_dl_bw_request_wlan_r13_present and + backhaul_ul_bw_request_wlan_r13_present == other.backhaul_ul_bw_request_wlan_r13_present and + ch_utilization_request_wlan_r13_present == other.ch_utilization_request_wlan_r13_present and + station_count_request_wlan_r13_present == other.station_count_request_wlan_r13_present; } // ThresholdUTRA ::= CHOICE @@ -3432,33 +4300,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) { @@ -3553,6 +4394,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(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(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 { @@ -3832,8 +4745,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)); @@ -3849,11 +4762,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(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(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)); @@ -3869,14 +4782,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]) { @@ -3926,15 +4840,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(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(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)); @@ -3967,6 +4881,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; } @@ -3976,8 +4898,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)); @@ -3993,18 +4915,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(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(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]) { @@ -4064,21 +4986,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(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(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)); @@ -4117,6 +5039,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; } @@ -4144,16 +5076,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(); @@ -4197,16 +5129,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(); @@ -4239,6 +5171,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(); } @@ -4252,11 +5188,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 @@ -4281,12 +5217,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 @@ -4300,7 +5236,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) @@ -4475,8 +5413,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)); @@ -4490,11 +5428,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(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(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) { @@ -4507,6 +5445,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]) { @@ -4529,6 +5470,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(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; } @@ -4538,8 +5499,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)); @@ -4553,11 +5514,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(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(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) { @@ -4565,7 +5526,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]) { @@ -4592,6 +5553,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(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; } @@ -4611,16 +5598,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(); @@ -4648,6 +5635,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(); } @@ -4660,26 +5665,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) @@ -5998,7 +7011,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(); @@ -6010,6 +7023,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]) { @@ -6065,7 +7082,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)); @@ -6075,8 +7092,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)); @@ -6130,6 +7147,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; } @@ -6144,7 +7182,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]) { @@ -6208,7 +7246,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); @@ -6222,8 +7260,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)); @@ -6281,6 +7319,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; } @@ -6341,8 +7404,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"); @@ -6381,6 +7444,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(); } @@ -6415,8 +7492,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 @@ -6438,7 +7515,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_() @@ -6814,6 +7900,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]) { @@ -6882,6 +7971,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; } @@ -6894,7 +8000,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]) { @@ -6971,6 +8077,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; } @@ -7020,6 +8147,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(); } @@ -7049,7 +8187,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_() @@ -8647,34 +9792,319 @@ SRSASN_CODE meas_obj_to_add_mod_ext_r13_s::meas_obj_r13_c_::pack(bit_ref& bref) } return SRSASN_SUCCESS; } -SRSASN_CODE meas_obj_to_add_mod_ext_r13_s::meas_obj_r13_c_::unpack(cbit_ref& bref) +SRSASN_CODE meas_obj_to_add_mod_ext_r13_s::meas_obj_r13_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::meas_obj_eutra_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::meas_obj_utra_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::meas_obj_geran_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::meas_obj_cdma2000_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::meas_obj_wlan_v1320: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::meas_obj_nr_r15: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + default: + log_invalid_choice_id(type_, "meas_obj_to_add_mod_ext_r13_s::meas_obj_r13_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + 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()); + break; + case types::periodicity16: + c.init(other.c.get()); + break; + case types::periodicity32: + c.init(other.c.get()); + break; + case types::periodicity64: + c.init(other.c.get()); + break; + case types::periodicity128: + c.init(other.c.get()); + break; + case types::periodicity256: + c.init(other.c.get()); + break; + case types::periodicity512: + c.init(other.c.get()); + break; + case types::periodicity1024: + c.init(other.c.get()); + break; + case types::periodicity2048: + c.init(other.c.get()); + break; + case types::periodicity4096: + c.init(other.c.get()); + break; + case types::periodicity8192: + c.init(other.c.get()); + 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()); + break; + case types::periodicity16: + c.set(other.c.get()); + break; + case types::periodicity32: + c.set(other.c.get()); + break; + case types::periodicity64: + c.set(other.c.get()); + break; + case types::periodicity128: + c.set(other.c.get()); + break; + case types::periodicity256: + c.set(other.c.get()); + break; + case types::periodicity512: + c.set(other.c.get()); + break; + case types::periodicity1024: + c.set(other.c.get()); + break; + case types::periodicity2048: + c.set(other.c.get()); + break; + case types::periodicity4096: + c.set(other.c.get()); + break; + case types::periodicity8192: + c.set(other.c.get()); + 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& pur_periodicity_and_offset_r16_c::set_periodicity16() +{ + set(types::periodicity16); + return c.get(); +} +uint8_t& pur_periodicity_and_offset_r16_c::set_periodicity32() +{ + set(types::periodicity32); + return c.get(); +} +uint8_t& pur_periodicity_and_offset_r16_c::set_periodicity64() +{ + set(types::periodicity64); + return c.get(); +} +uint8_t& pur_periodicity_and_offset_r16_c::set_periodicity128() +{ + set(types::periodicity128); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity256() +{ + set(types::periodicity256); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity512() +{ + set(types::periodicity512); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity1024() +{ + set(types::periodicity1024); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity2048() +{ + set(types::periodicity2048); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity4096() +{ + set(types::periodicity4096); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_r16_c::set_periodicity8192() +{ + set(types::periodicity8192); + return c.get(); +} +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()); + break; + case types::periodicity16: + j.write_int("periodicity16", c.get()); + break; + case types::periodicity32: + j.write_int("periodicity32", c.get()); + break; + case types::periodicity64: + j.write_int("periodicity64", c.get()); + break; + case types::periodicity128: + j.write_int("periodicity128", c.get()); + break; + case types::periodicity256: + j.write_int("periodicity256", c.get()); + break; + case types::periodicity512: + j.write_int("periodicity512", c.get()); + break; + case types::periodicity1024: + j.write_int("periodicity1024", c.get()); + break; + case types::periodicity2048: + j.write_int("periodicity2048", c.get()); + break; + case types::periodicity4096: + j.write_int("periodicity4096", c.get()); + break; + case types::periodicity8192: + j.write_int("periodicity8192", c.get()); + 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)1u, (uint8_t)7u)); + break; + case types::periodicity16: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)15u)); + break; + case types::periodicity32: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)31u)); + break; + case types::periodicity64: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)63u)); + break; + case types::periodicity128: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)127u)); + break; + case types::periodicity256: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)1u, (uint16_t)255u)); + break; + case types::periodicity512: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)1u, (uint16_t)511u)); + break; + case types::periodicity1024: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)1u, (uint16_t)1023u)); + break; + case types::periodicity2048: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)1u, (uint16_t)2047u)); + break; + case types::periodicity4096: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)1u, (uint16_t)4095u)); + break; + case types::periodicity8192: + HANDLE_CODE(pack_integer(bref, c.get(), (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::meas_obj_eutra_r13: - HANDLE_CODE(c.get().unpack(bref)); + case types::periodicity8: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)7u)); break; - case types::meas_obj_utra_r13: - HANDLE_CODE(c.get().unpack(bref)); + case types::periodicity16: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)15u)); break; - case types::meas_obj_geran_r13: - HANDLE_CODE(c.get().unpack(bref)); + case types::periodicity32: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)31u)); break; - case types::meas_obj_cdma2000_r13: - HANDLE_CODE(c.get().unpack(bref)); + case types::periodicity64: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)63u)); + break; + case types::periodicity128: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)127u)); + break; + case types::periodicity256: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)255u)); + break; + case types::periodicity512: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)511u)); + break; + case types::periodicity1024: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)1023u)); + break; + case types::periodicity2048: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)2047u)); + break; + case types::periodicity4096: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)4095u)); + break; + case types::periodicity8192: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)8191u)); break; - case types::meas_obj_wlan_v1320: { - varlength_field_unpack_guard varlen_scope(bref, false); - HANDLE_CODE(c.get().unpack(bref)); - } break; - case types::meas_obj_nr_r15: { - varlength_field_unpack_guard varlen_scope(bref, false); - HANDLE_CODE(c.get().unpack(bref)); - } break; default: - log_invalid_choice_id(type_, "meas_obj_to_add_mod_ext_r13_s::meas_obj_r13_c_"); + log_invalid_choice_id(type_, "pur_periodicity_and_offset_r16_c"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; @@ -11008,6 +12438,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 { @@ -11031,6 +12553,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 { @@ -11044,6 +12609,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; } @@ -11059,6 +12627,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; } @@ -11081,8 +12652,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(); } @@ -11111,6 +12681,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 { @@ -11262,6 +12858,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 { @@ -11372,6 +13001,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]) { @@ -11417,6 +13047,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; } @@ -11446,7 +13084,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]) { @@ -11498,6 +13136,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; } @@ -11555,48 +13203,187 @@ 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(); +} + +const char* mob_ctrl_info_s::t304_opts::to_string() const +{ + static const char* options[] = {"ms50", "ms100", "ms150", "ms200", "ms500", "ms1000", "ms2000", "ms10000-v1310"}; + return convert_enum_idx(options, 8, value, "mob_ctrl_info_s::t304_e_"); +} +uint16_t mob_ctrl_info_s::t304_opts::to_number() const +{ + static const uint16_t options[] = {50, 100, 150, 200, 500, 1000, 2000, 10000}; + return map_enum_number(options, 8, value, "mob_ctrl_info_s::t304_e_"); +} + +const char* mob_ctrl_info_s::ho_without_wt_change_r14_opts::to_string() const +{ + static const char* options[] = {"keepLWA-Config", "sendEndMarker"}; + return convert_enum_idx(options, 2, value, "mob_ctrl_info_s::ho_without_wt_change_r14_e_"); +} + +// TraceReference-r10 ::= SEQUENCE +SRSASN_CODE trace_ref_r10_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(plmn_id_r10.pack(bref)); + HANDLE_CODE(trace_id_r10.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE trace_ref_r10_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(plmn_id_r10.unpack(bref)); + HANDLE_CODE(trace_id_r10.unpack(bref)); + + return SRSASN_SUCCESS; +} +void trace_ref_r10_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("plmn-Identity-r10"); + plmn_id_r10.to_json(j); + j.write_str("traceId-r10", trace_id_r10.to_string()); + 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(); } -const char* mob_ctrl_info_s::t304_opts::to_string() const +// PLMN-IdentityInfoNR-r15 ::= SEQUENCE +SRSASN_CODE plmn_id_info_nr_r15_s::pack(bit_ref& bref) const { - static const char* options[] = {"ms50", "ms100", "ms150", "ms200", "ms500", "ms1000", "ms2000", "ms10000-v1310"}; - return convert_enum_idx(options, 8, value, "mob_ctrl_info_s::t304_e_"); + 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; } -uint16_t mob_ctrl_info_s::t304_opts::to_number() const +SRSASN_CODE plmn_id_info_nr_r15_s::unpack(cbit_ref& bref) { - static const uint16_t options[] = {50, 100, 150, 200, 500, 1000, 2000, 10000}; - return map_enum_number(options, 8, value, "mob_ctrl_info_s::t304_e_"); -} + HANDLE_CODE(bref.unpack(tac_r15_present, 1)); + HANDLE_CODE(bref.unpack(ran_area_code_r15_present, 1)); -const char* mob_ctrl_info_s::ho_without_wt_change_r14_opts::to_string() const + 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 { - static const char* options[] = {"keepLWA-Config", "sendEndMarker"}; - return convert_enum_idx(options, 2, value, "mob_ctrl_info_s::ho_without_wt_change_r14_e_"); + 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(); } -// TraceReference-r10 ::= SEQUENCE -SRSASN_CODE trace_ref_r10_s::pack(bit_ref& bref) const +// PLMN-IdentityInfoNR-v1710 ::= SEQUENCE +SRSASN_CODE plmn_id_info_nr_v1710_s::pack(bit_ref& bref) const { - HANDLE_CODE(plmn_id_r10.pack(bref)); - HANDLE_CODE(trace_id_r10.pack(bref)); + 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 trace_ref_r10_s::unpack(cbit_ref& bref) +SRSASN_CODE plmn_id_info_nr_v1710_s::unpack(cbit_ref& bref) { - HANDLE_CODE(plmn_id_r10.unpack(bref)); - HANDLE_CODE(trace_id_r10.unpack(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 trace_ref_r10_s::to_json(json_writer& j) const +void plmn_id_info_nr_v1710_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("plmn-Identity-r10"); - plmn_id_r10.to_json(j); - j.write_str("traceId-r10", trace_id_r10.to_string()); + if (gnb_id_len_r17_present) { + j.write_int("gNB-ID-Length-r17", gnb_id_len_r17); + } j.end_obj(); } @@ -11728,6 +13515,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 { @@ -11792,6 +13615,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(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(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 { @@ -11886,37 +13815,115 @@ SRSASN_CODE cell_global_id_geran_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void cell_global_id_geran_s::to_json(json_writer& j) const +void cell_global_id_geran_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("plmn-Identity"); + plmn_id.to_json(j); + j.write_str("locationAreaCode", location_area_code.to_string()); + j.write_str("cellIdentity", cell_id.to_string()); + j.end_obj(); +} + +// DataBLER-MCH-Result-r12 ::= SEQUENCE +SRSASN_CODE data_bler_mch_result_r12_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_integer(bref, mch_idx_r12, (uint8_t)1u, (uint8_t)15u)); + HANDLE_CODE(data_bler_result_r12.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE data_bler_mch_result_r12_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(mch_idx_r12, bref, (uint8_t)1u, (uint8_t)15u)); + HANDLE_CODE(data_bler_result_r12.unpack(bref)); + + return SRSASN_SUCCESS; +} +void data_bler_mch_result_r12_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("mch-Index-r12", mch_idx_r12); + j.write_fieldname("dataBLER-Result-r12"); + data_bler_result_r12.to_json(j); + 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) { - j.start_obj(); - j.write_fieldname("plmn-Identity"); - plmn_id.to_json(j); - j.write_str("locationAreaCode", location_area_code.to_string()); - j.write_str("cellIdentity", cell_id.to_string()); - j.end_obj(); -} + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(meas_result_rs_idx_list_r15_present, 1)); -// DataBLER-MCH-Result-r12 ::= SEQUENCE -SRSASN_CODE data_bler_mch_result_r12_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(pack_integer(bref, mch_idx_r12, (uint8_t)1u, (uint8_t)15u)); - HANDLE_CODE(data_bler_result_r12.pack(bref)); + 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)); + } - return SRSASN_SUCCESS; -} -SRSASN_CODE data_bler_mch_result_r12_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(unpack_integer(mch_idx_r12, bref, (uint8_t)1u, (uint8_t)15u)); - HANDLE_CODE(data_bler_result_r12.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 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 data_bler_mch_result_r12_s::to_json(json_writer& j) const +void meas_result_cell_nr_r15_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("mch-Index-r12", mch_idx_r12); - j.write_fieldname("dataBLER-Result-r12"); - data_bler_result_r12.to_json(j); + 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(); } @@ -13010,60 +15017,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 { @@ -13091,57 +15044,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 { @@ -13433,170 +15335,105 @@ void meas_result2_utra_r9_s::to_json(json_writer& j) const j.end_obj(); } -// MeasResultMBSFN-r12 ::= SEQUENCE -SRSASN_CODE meas_result_mbsfn_r12_s::pack(bit_ref& bref) const -{ - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(sig_bler_result_r12_present, 1)); - HANDLE_CODE(bref.pack(data_bler_mch_result_list_r12_present, 1)); - - HANDLE_CODE(pack_integer(bref, mbsfn_area_r12.mbsfn_area_id_r12, (uint16_t)0u, (uint16_t)255u)); - HANDLE_CODE(pack_integer(bref, mbsfn_area_r12.carrier_freq_r12, (uint32_t)0u, (uint32_t)262143u)); - HANDLE_CODE(pack_integer(bref, rsrp_result_mbsfn_r12, (uint8_t)0u, (uint8_t)97u)); - HANDLE_CODE(pack_integer(bref, rsrq_result_mbsfn_r12, (uint8_t)0u, (uint8_t)31u)); - if (sig_bler_result_r12_present) { - HANDLE_CODE(sig_bler_result_r12.pack(bref)); - } - if (data_bler_mch_result_list_r12_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, data_bler_mch_result_list_r12, 1, 15)); - } - - return SRSASN_SUCCESS; -} -SRSASN_CODE meas_result_mbsfn_r12_s::unpack(cbit_ref& bref) -{ - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(sig_bler_result_r12_present, 1)); - HANDLE_CODE(bref.unpack(data_bler_mch_result_list_r12_present, 1)); - - HANDLE_CODE(unpack_integer(mbsfn_area_r12.mbsfn_area_id_r12, bref, (uint16_t)0u, (uint16_t)255u)); - HANDLE_CODE(unpack_integer(mbsfn_area_r12.carrier_freq_r12, bref, (uint32_t)0u, (uint32_t)262143u)); - HANDLE_CODE(unpack_integer(rsrp_result_mbsfn_r12, bref, (uint8_t)0u, (uint8_t)97u)); - HANDLE_CODE(unpack_integer(rsrq_result_mbsfn_r12, bref, (uint8_t)0u, (uint8_t)31u)); - if (sig_bler_result_r12_present) { - HANDLE_CODE(sig_bler_result_r12.unpack(bref)); - } - if (data_bler_mch_result_list_r12_present) { - HANDLE_CODE(unpack_dyn_seq_of(data_bler_mch_result_list_r12, bref, 1, 15)); - } - - return SRSASN_SUCCESS; -} -void meas_result_mbsfn_r12_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_fieldname("mbsfn-Area-r12"); - j.start_obj(); - j.write_int("mbsfn-AreaId-r12", mbsfn_area_r12.mbsfn_area_id_r12); - j.write_int("carrierFreq-r12", mbsfn_area_r12.carrier_freq_r12); - j.end_obj(); - j.write_int("rsrpResultMBSFN-r12", rsrp_result_mbsfn_r12); - j.write_int("rsrqResultMBSFN-r12", rsrq_result_mbsfn_r12); - if (sig_bler_result_r12_present) { - j.write_fieldname("signallingBLER-Result-r12"); - sig_bler_result_r12.to_json(j); - } - if (data_bler_mch_result_list_r12_present) { - j.start_array("dataBLER-MCH-ResultList-r12"); - for (const auto& e1 : data_bler_mch_result_list_r12) { - e1.to_json(j); - } - j.end_array(); - } - j.end_obj(); -} - -// MeasResultSSB-Index-r15 ::= SEQUENCE -SRSASN_CODE meas_result_ssb_idx_r15_s::pack(bit_ref& bref) const +// 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_ssb_idx_r15_present, 1)); + HANDLE_CODE(bref.pack(meas_result_cell_list_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)); + 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_ssb_idx_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE meas_result_freq_fail_nr_r15_s::unpack(cbit_ref& bref) { bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(meas_result_ssb_idx_r15_present, 1)); + HANDLE_CODE(bref.unpack(meas_result_cell_list_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)); + 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_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); +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(); } -// CGI-InfoNR-r15 ::= SEQUENCE -SRSASN_CODE cgi_info_nr_r15_s::pack(bit_ref& bref) const +// MeasResultMBSFN-r12 ::= SEQUENCE +SRSASN_CODE meas_result_mbsfn_r12_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)); + HANDLE_CODE(bref.pack(sig_bler_result_r12_present, 1)); + HANDLE_CODE(bref.pack(data_bler_mch_result_list_r12_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(1, 1024))); + HANDLE_CODE(pack_integer(bref, mbsfn_area_r12.mbsfn_area_id_r12, (uint16_t)0u, (uint16_t)255u)); + HANDLE_CODE(pack_integer(bref, mbsfn_area_r12.carrier_freq_r12, (uint32_t)0u, (uint32_t)262143u)); + HANDLE_CODE(pack_integer(bref, rsrp_result_mbsfn_r12, (uint8_t)0u, (uint8_t)97u)); + HANDLE_CODE(pack_integer(bref, rsrq_result_mbsfn_r12, (uint8_t)0u, (uint8_t)31u)); + if (sig_bler_result_r12_present) { + HANDLE_CODE(sig_bler_result_r12.pack(bref)); } - 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 (data_bler_mch_result_list_r12_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, data_bler_mch_result_list_r12, 1, 15)); } return SRSASN_SUCCESS; } -SRSASN_CODE cgi_info_nr_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE meas_result_mbsfn_r12_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)); + HANDLE_CODE(bref.unpack(sig_bler_result_r12_present, 1)); + HANDLE_CODE(bref.unpack(data_bler_mch_result_list_r12_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(1, 1024))); + HANDLE_CODE(unpack_integer(mbsfn_area_r12.mbsfn_area_id_r12, bref, (uint16_t)0u, (uint16_t)255u)); + HANDLE_CODE(unpack_integer(mbsfn_area_r12.carrier_freq_r12, bref, (uint32_t)0u, (uint32_t)262143u)); + HANDLE_CODE(unpack_integer(rsrp_result_mbsfn_r12, bref, (uint8_t)0u, (uint8_t)97u)); + HANDLE_CODE(unpack_integer(rsrq_result_mbsfn_r12, bref, (uint8_t)0u, (uint8_t)31u)); + if (sig_bler_result_r12_present) { + HANDLE_CODE(sig_bler_result_r12.unpack(bref)); } - 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 (data_bler_mch_result_list_r12_present) { + HANDLE_CODE(unpack_dyn_seq_of(data_bler_mch_result_list_r12, bref, 1, 15)); } return SRSASN_SUCCESS; } -void cgi_info_nr_r15_s::to_json(json_writer& j) const +void meas_result_mbsfn_r12_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(); + j.write_fieldname("mbsfn-Area-r12"); + j.start_obj(); + j.write_int("mbsfn-AreaId-r12", mbsfn_area_r12.mbsfn_area_id_r12); + j.write_int("carrierFreq-r12", mbsfn_area_r12.carrier_freq_r12); + j.end_obj(); + j.write_int("rsrpResultMBSFN-r12", rsrp_result_mbsfn_r12); + j.write_int("rsrqResultMBSFN-r12", rsrq_result_mbsfn_r12); + if (sig_bler_result_r12_present) { + j.write_fieldname("signallingBLER-Result-r12"); + sig_bler_result_r12.to_json(j); } - if (freq_band_list_r15_present) { - j.start_array("frequencyBandList-r15"); - for (const auto& e1 : freq_band_list_r15) { - j.write_int(e1); + if (data_bler_mch_result_list_r12_present) { + j.start_array("dataBLER-MCH-ResultList-r12"); + for (const auto& e1 : data_bler_mch_result_list_r12) { + e1.to_json(j); } 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(); } @@ -13646,6 +15483,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]) { @@ -13706,6 +15547,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; } @@ -13743,7 +15613,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]) { @@ -13816,6 +15686,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; } @@ -13923,83 +15828,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(); @@ -14669,6 +16519,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 { @@ -14692,6 +16567,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 { @@ -14806,6 +16706,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]) { @@ -14924,6 +16828,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; } @@ -14940,7 +16868,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]) { @@ -15093,6 +17021,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; } @@ -15225,6 +17181,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 cb78e3b3ba..b0a5c95ab9 100644 --- a/lib/src/asn1/rrc/paging.cc +++ b/lib/src/asn1/rrc/paging.cc @@ -29,12 +29,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) @@ -42,6 +187,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 @@ -52,8 +201,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(); } @@ -862,6 +1010,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 { @@ -872,6 +1049,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(1, 256))); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } return SRSASN_SUCCESS; } @@ -884,6 +1064,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(1, 256))); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } return SRSASN_SUCCESS; } @@ -899,8 +1082,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 fc590d0128..1b6e03ae3d 100644 --- a/lib/src/asn1/rrc/phy_ded.cc +++ b/lib/src/asn1/rrc/phy_ded.cc @@ -29,6 +29,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()); + break; + case types::periodicity40ms: + c.init(other.c.get()); + break; + case types::periodicity80ms: + c.init(other.c.get()); + break; + case types::periodicity160ms: + c.init(other.c.get()); + 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()); + break; + case types::periodicity40ms: + c.set(other.c.get()); + break; + case types::periodicity80ms: + c.set(other.c.get()); + break; + case types::periodicity160ms: + c.set(other.c.get()); + 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& periodicity_start_pos_r16_c::set_periodicity40ms() +{ + set(types::periodicity40ms); + return c.get(); +} +uint8_t& periodicity_start_pos_r16_c::set_periodicity80ms() +{ + set(types::periodicity80ms); + return c.get(); +} +uint8_t& periodicity_start_pos_r16_c::set_periodicity160ms() +{ + set(types::periodicity160ms); + return c.get(); +} +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()); + break; + case types::periodicity40ms: + j.write_int("periodicity40ms", c.get()); + break; + case types::periodicity80ms: + j.write_int("periodicity80ms", c.get()); + break; + case types::periodicity160ms: + j.write_int("periodicity160ms", c.get()); + 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)0u, (uint8_t)1u)); + break; + case types::periodicity40ms: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)3u)); + break; + case types::periodicity80ms: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)7u)); + break; + case types::periodicity160ms: + HANDLE_CODE(pack_integer(bref, c.get(), (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(), bref, (uint8_t)0u, (uint8_t)1u)); + break; + case types::periodicity40ms: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)3u)); + break; + case types::periodicity80ms: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)7u)); + break; + case types::periodicity160ms: + HANDLE_CODE(unpack_integer(c.get(), 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 >(); + break; + case types::rbg_bitmap3: + c.destroy >(); + break; + case types::rbg_bitmap5: + c.destroy >(); + break; + case types::rbg_bitmap10: + c.destroy >(); + break; + case types::rbg_bitmap15: + c.destroy >(); + break; + case types::rbg_bitmap20: + c.destroy >(); + 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 >(); + break; + case types::rbg_bitmap3: + c.init >(); + break; + case types::rbg_bitmap5: + c.init >(); + break; + case types::rbg_bitmap10: + c.init >(); + break; + case types::rbg_bitmap15: + c.init >(); + break; + case types::rbg_bitmap20: + c.init >(); + 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 >()); + break; + case types::rbg_bitmap3: + c.init(other.c.get >()); + break; + case types::rbg_bitmap5: + c.init(other.c.get >()); + break; + case types::rbg_bitmap10: + c.init(other.c.get >()); + break; + case types::rbg_bitmap15: + c.init(other.c.get >()); + break; + case types::rbg_bitmap20: + c.init(other.c.get >()); + 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 >()); + break; + case types::rbg_bitmap3: + c.set(other.c.get >()); + break; + case types::rbg_bitmap5: + c.set(other.c.get >()); + break; + case types::rbg_bitmap10: + c.set(other.c.get >()); + break; + case types::rbg_bitmap15: + c.set(other.c.get >()); + break; + case types::rbg_bitmap20: + c.set(other.c.get >()); + 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<8>& res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::set_rbg_bitmap3() +{ + set(types::rbg_bitmap3); + return c.get >(); +} +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<17>& res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::set_rbg_bitmap10() +{ + set(types::rbg_bitmap10); + return c.get >(); +} +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<25>& res_reserv_cfg_dl_r16_s::res_reserv_freq_r16_c_::set_rbg_bitmap20() +{ + set(types::rbg_bitmap20); + return c.get >(); +} +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 >().to_string()); + break; + case types::rbg_bitmap3: + j.write_str("rbg-Bitmap3", c.get >().to_string()); + break; + case types::rbg_bitmap5: + j.write_str("rbg-Bitmap5", c.get >().to_string()); + break; + case types::rbg_bitmap10: + j.write_str("rbg-Bitmap10", c.get >().to_string()); + break; + case types::rbg_bitmap15: + j.write_str("rbg-Bitmap15", c.get >().to_string()); + break; + case types::rbg_bitmap20: + j.write_str("rbg-Bitmap20", c.get >().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 >().pack(bref)); + break; + case types::rbg_bitmap3: + HANDLE_CODE(c.get >().pack(bref)); + break; + case types::rbg_bitmap5: + HANDLE_CODE(c.get >().pack(bref)); + break; + case types::rbg_bitmap10: + HANDLE_CODE(c.get >().pack(bref)); + break; + case types::rbg_bitmap15: + HANDLE_CODE(c.get >().pack(bref)); + break; + case types::rbg_bitmap20: + HANDLE_CODE(c.get >().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 >().unpack(bref)); + break; + case types::rbg_bitmap3: + HANDLE_CODE(c.get >().unpack(bref)); + break; + case types::rbg_bitmap5: + HANDLE_CODE(c.get >().unpack(bref)); + break; + case types::rbg_bitmap10: + HANDLE_CODE(c.get >().unpack(bref)); + break; + case types::rbg_bitmap15: + HANDLE_CODE(c.get >().unpack(bref)); + break; + case types::rbg_bitmap20: + HANDLE_CODE(c.get >().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 >(); + break; + case types::slot_pattern40ms: + c.destroy >(); + 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 >(); + break; + case types::slot_pattern40ms: + c.init >(); + 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 >()); + break; + case types::slot_pattern40ms: + c.init(other.c.get >()); + 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 >()); + break; + case types::slot_pattern40ms: + c.set(other.c.get >()); + 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<80>& res_reserv_cfg_dl_r16_s::slot_bitmap_r16_c_::set_slot_pattern40ms() +{ + set(types::slot_pattern40ms); + return c.get >(); +} +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 >().to_string()); + break; + case types::slot_pattern40ms: + j.write_str("slotPattern40ms", c.get >().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 >().pack(bref)); + break; + case types::slot_pattern40ms: + HANDLE_CODE(c.get >().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 >().unpack(bref)); + break; + case types::slot_pattern40ms: + HANDLE_CODE(c.get >().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 >(); + break; + case types::slot_pattern40ms: + c.destroy >(); + 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 >(); + break; + case types::slot_pattern40ms: + c.init >(); + 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 >()); + break; + case types::slot_pattern40ms: + c.init(other.c.get >()); + 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 >()); + break; + case types::slot_pattern40ms: + c.set(other.c.get >()); + 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<80>& res_reserv_cfg_ul_r16_s::slot_bitmap_r16_c_::set_slot_pattern40ms() +{ + set(types::slot_pattern40ms); + return c.get >(); +} +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 >().to_string()); + break; + case types::slot_pattern40ms: + j.write_str("slotPattern40ms", c.get >().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 >().pack(bref)); + break; + case types::slot_pattern40ms: + HANDLE_CODE(c.get >().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 >().unpack(bref)); + break; + case types::slot_pattern40ms: + HANDLE_CODE(c.get >().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 { @@ -9046,6 +9859,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) { @@ -10517,6 +11410,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 { @@ -13397,15 +14417,72 @@ const char* pdsch_cfg_ded_v1530_s::alt_mcs_table_scaling_cfg_r15_opts::to_string static const char* options[] = {"oDot5", "oDot625", "oDot75", "oDot875"}; return convert_enum_idx(options, 4, value, "pdsch_cfg_ded_v1530_s::alt_mcs_table_scaling_cfg_r15_e_"); } -float pdsch_cfg_ded_v1530_s::alt_mcs_table_scaling_cfg_r15_opts::to_number() const +float pdsch_cfg_ded_v1530_s::alt_mcs_table_scaling_cfg_r15_opts::to_number() const +{ + static const float options[] = {0.5, 0.625, 0.75, 0.875}; + return map_enum_number(options, 4, value, "pdsch_cfg_ded_v1530_s::alt_mcs_table_scaling_cfg_r15_e_"); +} +const char* pdsch_cfg_ded_v1530_s::alt_mcs_table_scaling_cfg_r15_opts::to_number_string() const +{ + static const char* options[] = {"0.5", "0.625", "0.75", "0.875"}; + 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) { - static const float options[] = {0.5, 0.625, 0.75, 0.875}; - return map_enum_number(options, 4, value, "pdsch_cfg_ded_v1530_s::alt_mcs_table_scaling_cfg_r15_e_"); + 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; } -const char* pdsch_cfg_ded_v1530_s::alt_mcs_table_scaling_cfg_r15_opts::to_number_string() const +void pdsch_cfg_ded_v1700_s::to_json(json_writer& j) const { - static const char* options[] = {"0.5", "0.625", "0.75", "0.875"}; - return convert_enum_idx(options, 4, value, "pdsch_cfg_ded_v1530_s::alt_mcs_table_scaling_cfg_r15_e_"); + 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 @@ -16170,6 +17247,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) { @@ -16767,6 +17865,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) { @@ -17326,6 +18486,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) { @@ -18043,6 +19333,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 { @@ -18356,6 +19755,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 { @@ -18478,6 +19905,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]) { @@ -18822,6 +20261,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; } @@ -18871,7 +20374,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]) { @@ -19358,6 +20861,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; } @@ -19728,6 +21315,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(); } @@ -20602,3 +22244,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 2e76cd883b..c05a88228d 100644 --- a/lib/src/asn1/rrc/rr_common.cc +++ b/lib/src/asn1/rrc/rr_common.cc @@ -527,6 +527,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 { @@ -1289,6 +1313,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(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(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()); + break; + case types::res_location_without_wus: + c.init(other.c.get()); + 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()); + break; + case types::res_location_without_wus: + c.set(other.c.get()); + 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(); +} +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(); +} +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().to_string()); + break; + case types::res_location_without_wus: + j.write_str("resourceLocationWithoutWUS", c.get().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().pack(bref)); + break; + case types::res_location_without_wus: + HANDLE_CODE(c.get().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().unpack(bref)); + break; + case types::res_location_without_wus: + HANDLE_CODE(c.get().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 { @@ -1481,6 +1846,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 { @@ -2101,6 +2502,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 { @@ -2144,6 +2661,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 { @@ -2253,6 +2797,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 { @@ -2617,6 +3177,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 { @@ -2825,6 +3416,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 { @@ -2969,6 +3591,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 { @@ -3543,6 +4196,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 { @@ -3698,6 +4374,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 { @@ -3734,6 +4441,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]) { @@ -3844,6 +4562,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; } @@ -3862,7 +4639,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]) { @@ -4011,6 +4788,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; } @@ -4113,10 +4963,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 { @@ -4592,6 +5510,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]) { @@ -4703,6 +5622,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; } @@ -4750,7 +5677,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]) { @@ -4886,6 +5813,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; } @@ -5028,6 +5963,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(); } @@ -5114,7 +6052,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 @@ -5510,6 +6451,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]) { @@ -5604,6 +6549,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; } @@ -5652,7 +6634,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]) { @@ -5779,6 +6761,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; } @@ -5890,6 +6915,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 9ec9951bcf..291f1c55e0 100644 --- a/lib/src/asn1/rrc/rr_ded.cc +++ b/lib/src/asn1/rrc/rr_ded.cc @@ -386,6 +386,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 { @@ -412,6 +504,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]) { @@ -459,6 +552,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; } @@ -478,7 +579,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]) { @@ -532,6 +633,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; } @@ -577,6 +686,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(); } @@ -604,7 +716,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 @@ -864,6 +978,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 { @@ -1158,6 +1283,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 { @@ -1525,6 +1662,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]) { @@ -1591,6 +1730,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; } @@ -1613,7 +1768,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]) { @@ -1692,6 +1847,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; } @@ -1760,6 +1935,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(); } @@ -1793,7 +1976,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 @@ -3138,6 +3326,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 { @@ -4158,6 +4371,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]) { @@ -4229,6 +4444,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; } @@ -4259,7 +4487,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]) { @@ -4343,6 +4571,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; } @@ -4414,6 +4657,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(); } @@ -4451,7 +4701,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 @@ -5394,6 +5647,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 { @@ -5867,6 +6153,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 { @@ -5889,6 +6187,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]) { @@ -5916,6 +6215,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; } @@ -5934,7 +6241,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]) { @@ -5968,6 +6275,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; } @@ -6002,6 +6319,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(); } @@ -6019,7 +6340,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) @@ -6152,6 +6475,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 { @@ -6200,6 +6586,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]) { @@ -6312,6 +6701,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; } @@ -6343,7 +6749,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]) { @@ -6482,6 +6888,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; } @@ -6594,6 +7021,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(); } @@ -8151,6 +8589,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 { @@ -8507,6 +9023,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]) { @@ -8605,6 +9124,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; } @@ -8638,7 +9173,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]) { @@ -8767,6 +9302,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; } @@ -8882,6 +9437,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(); } @@ -10287,6 +10853,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) { @@ -12098,6 +12703,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]) { @@ -12362,6 +12971,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; } @@ -12421,7 +13050,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]) { @@ -12796,6 +13425,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; } @@ -13113,6 +13770,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(); } @@ -13293,7 +13966,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) @@ -14171,6 +14852,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 { @@ -14236,6 +14942,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]) { @@ -14286,6 +14993,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; } @@ -14299,7 +15014,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]) { @@ -14362,6 +15077,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; } @@ -14400,6 +15125,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(); } @@ -14425,7 +15154,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 fbbd9e3ee4..d8bc17d0ce 100644 --- a/lib/src/asn1/rrc/security.cc +++ b/lib/src/asn1/rrc/security.cc @@ -89,14 +89,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(); + case types::intra5_gc: + c.destroy(); break; - case types::fivegc_to_epc_r15: - c.destroy(); + case types::fivegc_to_epc: + c.destroy(); break; - case types::epc_to5_gc_r15: - c.destroy(); + case types::epc_to5_gc: + c.destroy(); break; default: break; @@ -107,14 +107,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(); + case types::intra5_gc: + c.init(); break; - case types::fivegc_to_epc_r15: - c.init(); + case types::fivegc_to_epc: + c.init(); break; - case types::epc_to5_gc_r15: - c.init(); + case types::epc_to5_gc: + c.init(); break; case types::nulltype: break; @@ -127,14 +127,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()); + case types::intra5_gc: + c.init(other.c.get()); break; - case types::fivegc_to_epc_r15: - c.init(other.c.get()); + case types::fivegc_to_epc: + c.init(other.c.get()); break; - case types::epc_to5_gc_r15: - c.init(other.c.get()); + case types::epc_to5_gc: + c.init(other.c.get()); break; case types::nulltype: break; @@ -150,14 +150,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()); + case types::intra5_gc: + c.set(other.c.get()); break; - case types::fivegc_to_epc_r15: - c.set(other.c.get()); + case types::fivegc_to_epc: + c.set(other.c.get()); break; - case types::epc_to5_gc_r15: - c.set(other.c.get()); + case types::epc_to5_gc: + c.set(other.c.get()); break; case types::nulltype: break; @@ -167,56 +167,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(); + set(types::intra5_gc); + return c.get(); } -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(); + set(types::fivegc_to_epc); + return c.get(); } -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(); + set(types::epc_to5_gc); + return c.get(); } 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().security_algorithm_cfg_r15_present) { + if (c.get().security_algorithm_cfg_r15_present) { j.write_fieldname("securityAlgorithmConfig-r15"); - c.get().security_algorithm_cfg_r15.to_json(j); + c.get().security_algorithm_cfg_r15.to_json(j); } - j.write_bool("keyChangeIndicator-r15", c.get().key_change_ind_r15); - j.write_int("nextHopChainingCount-r15", c.get().next_hop_chaining_count_r15); - if (c.get().nas_container_r15_present) { - j.write_str("nas-Container-r15", c.get().nas_container_r15.to_string()); + j.write_bool("keyChangeIndicator-r15", c.get().key_change_ind_r15); + j.write_int("nextHopChainingCount-r15", c.get().next_hop_chaining_count_r15); + if (c.get().nas_container_r15_present) { + j.write_str("nas-Container-r15", c.get().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().security_algorithm_cfg_r15.to_json(j); - j.write_int("nextHopChainingCount-r15", c.get().next_hop_chaining_count_r15); + c.get().security_algorithm_cfg_r15.to_json(j); + j.write_int("nextHopChainingCount-r15", c.get().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().security_algorithm_cfg_r15.to_json(j); - j.write_str("nas-Container-r15", c.get().nas_container_r15.to_string()); + c.get().security_algorithm_cfg_r15.to_json(j); + j.write_str("nas-Container-r15", c.get().nas_container_r15.to_string()); j.end_obj(); break; default: @@ -228,26 +228,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().security_algorithm_cfg_r15_present, 1)); - HANDLE_CODE(bref.pack(c.get().nas_container_r15_present, 1)); - if (c.get().security_algorithm_cfg_r15_present) { - HANDLE_CODE(c.get().security_algorithm_cfg_r15.pack(bref)); + case types::intra5_gc: + HANDLE_CODE(bref.pack(c.get().security_algorithm_cfg_r15_present, 1)); + HANDLE_CODE(bref.pack(c.get().nas_container_r15_present, 1)); + if (c.get().security_algorithm_cfg_r15_present) { + HANDLE_CODE(c.get().security_algorithm_cfg_r15.pack(bref)); } - HANDLE_CODE(bref.pack(c.get().key_change_ind_r15, 1)); - HANDLE_CODE(pack_integer(bref, c.get().next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u)); - if (c.get().nas_container_r15_present) { - HANDLE_CODE(c.get().nas_container_r15.pack(bref)); + HANDLE_CODE(bref.pack(c.get().key_change_ind_r15, 1)); + HANDLE_CODE(pack_integer(bref, c.get().next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u)); + if (c.get().nas_container_r15_present) { + HANDLE_CODE(c.get().nas_container_r15.pack(bref)); } break; - case types::fivegc_to_epc_r15: - HANDLE_CODE(c.get().security_algorithm_cfg_r15.pack(bref)); - HANDLE_CODE( - pack_integer(bref, c.get().next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u)); + case types::fivegc_to_epc: + HANDLE_CODE(c.get().security_algorithm_cfg_r15.pack(bref)); + HANDLE_CODE(pack_integer(bref, c.get().next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u)); break; - case types::epc_to5_gc_r15: - HANDLE_CODE(c.get().security_algorithm_cfg_r15.pack(bref)); - HANDLE_CODE(c.get().nas_container_r15.pack(bref)); + case types::epc_to5_gc: + HANDLE_CODE(c.get().security_algorithm_cfg_r15.pack(bref)); + HANDLE_CODE(c.get().nas_container_r15.pack(bref)); break; default: log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_"); @@ -261,27 +260,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().security_algorithm_cfg_r15_present, 1)); - HANDLE_CODE(bref.unpack(c.get().nas_container_r15_present, 1)); - if (c.get().security_algorithm_cfg_r15_present) { - HANDLE_CODE(c.get().security_algorithm_cfg_r15.unpack(bref)); + case types::intra5_gc: + HANDLE_CODE(bref.unpack(c.get().security_algorithm_cfg_r15_present, 1)); + HANDLE_CODE(bref.unpack(c.get().nas_container_r15_present, 1)); + if (c.get().security_algorithm_cfg_r15_present) { + HANDLE_CODE(c.get().security_algorithm_cfg_r15.unpack(bref)); } - HANDLE_CODE(bref.unpack(c.get().key_change_ind_r15, 1)); - HANDLE_CODE( - unpack_integer(c.get().next_hop_chaining_count_r15, bref, (uint8_t)0u, (uint8_t)7u)); - if (c.get().nas_container_r15_present) { - HANDLE_CODE(c.get().nas_container_r15.unpack(bref)); + HANDLE_CODE(bref.unpack(c.get().key_change_ind_r15, 1)); + HANDLE_CODE(unpack_integer(c.get().next_hop_chaining_count_r15, bref, (uint8_t)0u, (uint8_t)7u)); + if (c.get().nas_container_r15_present) { + HANDLE_CODE(c.get().nas_container_r15.unpack(bref)); } break; - case types::fivegc_to_epc_r15: - HANDLE_CODE(c.get().security_algorithm_cfg_r15.unpack(bref)); + case types::fivegc_to_epc: + HANDLE_CODE(c.get().security_algorithm_cfg_r15.unpack(bref)); HANDLE_CODE( - unpack_integer(c.get().next_hop_chaining_count_r15, bref, (uint8_t)0u, (uint8_t)7u)); + unpack_integer(c.get().next_hop_chaining_count_r15, bref, (uint8_t)0u, (uint8_t)7u)); break; - case types::epc_to5_gc_r15: - HANDLE_CODE(c.get().security_algorithm_cfg_r15.unpack(bref)); - HANDLE_CODE(c.get().nas_container_r15.unpack(bref)); + case types::epc_to5_gc: + HANDLE_CODE(c.get().security_algorithm_cfg_r15.unpack(bref)); + HANDLE_CODE(c.get().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 b571306cc2..0bdab9ac18 100644 --- a/lib/src/asn1/rrc/si.cc +++ b/lib/src/asn1/rrc/si.cc @@ -37,6 +37,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; @@ -48,6 +49,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; @@ -61,6 +63,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(); } @@ -76,6 +80,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 >(); + break; + case types::earfcn_lsb: + c.destroy >(); + break; + default: + break; + } +} +void mib_s::part_earfcn_minus17_c_::set(types::options e) +{ + destroy_(); + type_ = e; + switch (type_) { + case types::spare: + c.init >(); + break; + case types::earfcn_lsb: + c.init >(); + 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 >()); + break; + case types::earfcn_lsb: + c.init(other.c.get >()); + 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 >()); + break; + case types::earfcn_lsb: + c.set(other.c.get >()); + 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>& mib_s::part_earfcn_minus17_c_::set_earfcn_lsb() +{ + set(types::earfcn_lsb); + return c.get >(); +} +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 >().to_string()); + break; + case types::earfcn_lsb: + j.write_str("earfcn-LSB", c.get >().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 >().pack(bref)); + break; + case types::earfcn_lsb: + HANDLE_CODE(c.get >().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 >().unpack(bref)); + break; + case types::earfcn_lsb: + HANDLE_CODE(c.get >().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 { @@ -100,8 +231,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 @@ -132,6 +297,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 { @@ -188,12 +385,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 @@ -260,6 +524,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 { @@ -297,6 +622,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) @@ -304,6 +633,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 @@ -314,8 +647,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(); } @@ -2052,16 +2384,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 @@ -2647,6 +2975,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]) { @@ -2754,6 +3093,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; } @@ -2791,7 +3148,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]) { @@ -2921,6 +3278,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; } @@ -3065,6 +3440,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(); } @@ -3080,6 +3488,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 22b86a4625..7f7f5473a9 100644 --- a/lib/src/asn1/rrc/uecap.cc +++ b/lib/src/asn1/rrc/uecap.cc @@ -29,6 +29,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 { @@ -45,6 +110,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; } @@ -56,6 +124,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; } @@ -67,8 +138,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(); } @@ -681,6 +751,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]) { @@ -704,6 +780,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; } @@ -717,7 +807,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]) { @@ -741,6 +831,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; } @@ -772,6 +876,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(); } @@ -3908,6 +4030,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 { @@ -5020,35 +5484,216 @@ void mac_params_v1530_s::to_json(json_writer& j) const j.end_obj(); } -// MIMO-UE-BeamformedCapabilities-r13 ::= SEQUENCE -SRSASN_CODE mimo_ue_bf_cap_r13_s::pack(bit_ref& bref) const +// MBMS-SupportedBandInfo-r16 ::= SEQUENCE +SRSASN_CODE mbms_supported_band_info_r16_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(alt_codebook_r13_present, 1)); + HANDLE_CODE(bref.pack(subcarrier_spacing_mbms_khz2dot5_r16_present, 1)); + HANDLE_CODE(bref.pack(subcarrier_spacing_mbms_khz0dot37_r16_present, 1)); - HANDLE_CODE(pack_dyn_seq_of(bref, mimo_bf_cap_r13, 1, 4)); + 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 mimo_ue_bf_cap_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE mbms_supported_band_info_r16_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(alt_codebook_r13_present, 1)); + HANDLE_CODE(bref.unpack(subcarrier_spacing_mbms_khz2dot5_r16_present, 1)); + HANDLE_CODE(bref.unpack(subcarrier_spacing_mbms_khz0dot37_r16_present, 1)); - HANDLE_CODE(unpack_dyn_seq_of(mimo_bf_cap_r13, bref, 1, 4)); + 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 mimo_ue_bf_cap_r13_s::to_json(json_writer& j) const +void mbms_supported_band_info_r16_s::to_json(json_writer& j) const { j.start_obj(); - if (alt_codebook_r13_present) { - j.write_str("altCodebook-r13", "supported"); - } - j.start_array("mimo-BeamformedCapabilities-r13"); - for (const auto& e1 : mimo_bf_cap_r13) { - e1.to_json(j); + if (subcarrier_spacing_mbms_khz2dot5_r16_present) { + j.write_str("subcarrierSpacingMBMS-khz2dot5-r16", "supported"); } - j.end_array(); - j.end_obj(); + 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 +{ + HANDLE_CODE(bref.pack(alt_codebook_r13_present, 1)); + + HANDLE_CODE(pack_dyn_seq_of(bref, mimo_bf_cap_r13, 1, 4)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE mimo_ue_bf_cap_r13_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(alt_codebook_r13_present, 1)); + + HANDLE_CODE(unpack_dyn_seq_of(mimo_bf_cap_r13, bref, 1, 4)); + + return SRSASN_SUCCESS; +} +void mimo_ue_bf_cap_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (alt_codebook_r13_present) { + j.write_str("altCodebook-r13", "supported"); + } + j.start_array("mimo-BeamformedCapabilities-r13"); + for (const auto& e1 : mimo_bf_cap_r13) { + e1.to_json(j); + } + j.end_array(); + j.end_obj(); } // MIMO-UE-ParametersPerTM-r13 ::= SEQUENCE @@ -5259,26 +5904,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_"); } @@ -5440,6 +6085,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 { @@ -6769,76 +7562,375 @@ 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_"); } -// SupportedBandEUTRA ::= SEQUENCE -SRSASN_CODE supported_band_eutra_s::pack(bit_ref& bref) const +// CE-MultiTB-Parameters-r16 ::= SEQUENCE +SRSASN_CODE ce_multi_tb_params_r16_s::pack(bit_ref& bref) const { - HANDLE_CODE(pack_integer(bref, band_eutra, (uint8_t)1u, (uint8_t)64u)); - HANDLE_CODE(bref.pack(half_duplex, 1)); + 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 supported_band_eutra_s::unpack(cbit_ref& bref) +SRSASN_CODE ce_multi_tb_params_r16_s::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_integer(band_eutra, bref, (uint8_t)1u, (uint8_t)64u)); - HANDLE_CODE(bref.unpack(half_duplex, 1)); + 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 supported_band_eutra_s::to_json(json_writer& j) const +void ce_multi_tb_params_r16_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("bandEUTRA", band_eutra); - j.write_bool("halfDuplex", half_duplex); + 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(); } -// RF-Parameters ::= SEQUENCE -SRSASN_CODE rf_params_s::pack(bit_ref& bref) const +// CE-ResourceResvParameters-r16 ::= SEQUENCE +SRSASN_CODE ce_res_resv_params_r16_s::pack(bit_ref& bref) const { - HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_list_eutra, 1, 64)); + 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 rf_params_s::unpack(cbit_ref& bref) +SRSASN_CODE ce_res_resv_params_r16_s::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_dyn_seq_of(supported_band_list_eutra, bref, 1, 64)); + 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 rf_params_s::to_json(json_writer& j) const +void ce_res_resv_params_r16_s::to_json(json_writer& j) const { j.start_obj(); - j.start_array("supportedBandListEUTRA"); - for (const auto& e1 : supported_band_list_eutra) { - e1.to_json(j); + 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_array(); j.end_obj(); } -// RF-Parameters-v1020 ::= SEQUENCE -SRSASN_CODE rf_params_v1020_s::pack(bit_ref& bref) const +// PhyLayerParameters-v1610 ::= SEQUENCE +SRSASN_CODE phy_layer_params_v1610_s::pack(bit_ref& bref) const { - HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_r10, 1, 128, SeqOfPacker(1, 64, Packer()))); + 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)); - return SRSASN_SUCCESS; -} -SRSASN_CODE rf_params_v1020_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_r10, bref, 1, 128, SeqOfPacker(1, 64, Packer()))); + 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 rf_params_v1020_s::to_json(json_writer& j) const +void phy_layer_params_v1610_s::to_json(json_writer& j) const { j.start_obj(); - j.start_array("supportedBandCombination-r10"); - for (const auto& e1 : supported_band_combination_r10) { - j.start_array(); - for (const auto& e2 : e1) { - e2.to_json(j); + 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"); } - j.end_array(); + 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 +{ + HANDLE_CODE(pack_integer(bref, band_eutra, (uint8_t)1u, (uint8_t)64u)); + HANDLE_CODE(bref.pack(half_duplex, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE supported_band_eutra_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(band_eutra, bref, (uint8_t)1u, (uint8_t)64u)); + HANDLE_CODE(bref.unpack(half_duplex, 1)); + + return SRSASN_SUCCESS; +} +void supported_band_eutra_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("bandEUTRA", band_eutra); + j.write_bool("halfDuplex", half_duplex); + j.end_obj(); +} + +// RF-Parameters ::= SEQUENCE +SRSASN_CODE rf_params_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_list_eutra, 1, 64)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE rf_params_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_dyn_seq_of(supported_band_list_eutra, bref, 1, 64)); + + return SRSASN_SUCCESS; +} +void rf_params_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.start_array("supportedBandListEUTRA"); + for (const auto& e1 : supported_band_list_eutra) { + e1.to_json(j); + } + j.end_array(); + j.end_obj(); +} + +// RF-Parameters-v1020 ::= SEQUENCE +SRSASN_CODE rf_params_v1020_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_r10, 1, 128, SeqOfPacker(1, 64, Packer()))); + + return SRSASN_SUCCESS; +} +SRSASN_CODE rf_params_v1020_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_r10, bref, 1, 128, SeqOfPacker(1, 64, Packer()))); + + return SRSASN_SUCCESS; +} +void rf_params_v1020_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.start_array("supportedBandCombination-r10"); + for (const auto& e1 : supported_band_combination_r10) { + j.start_array(); + for (const auto& e2 : e1) { + e2.to_json(j); + } + j.end_array(); } j.end_array(); j.end_obj(); @@ -7977,6 +9069,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 { @@ -8410,46 +9630,1666 @@ 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_"); } -// NeighCellSI-AcquisitionParameters-v15a0 ::= SEQUENCE -SRSASN_CODE neigh_cell_si_acquisition_params_v15a0_s::pack(bit_ref& bref) const +// V2X-BandParametersEUTRA-NR-r16 ::= CHOICE +void v2x_band_params_eutra_nr_r16_c::destroy_() { - HANDLE_CODE(bref.pack(eutra_cgi_report_nedc_r15_present, 1)); - - return SRSASN_SUCCESS; + switch (type_) { + case types::eutra: + c.destroy(); + break; + case types::nr: + c.destroy(); + break; + default: + break; + } } -SRSASN_CODE neigh_cell_si_acquisition_params_v15a0_s::unpack(cbit_ref& bref) +void v2x_band_params_eutra_nr_r16_c::set(types::options e) { - HANDLE_CODE(bref.unpack(eutra_cgi_report_nedc_r15_present, 1)); + destroy_(); + type_ = e; + switch (type_) { + case types::eutra: + c.init(); + break; + case types::nr: + c.init(); + 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()); + break; + case types::nr: + c.init(other.c.get()); + 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()); + break; + case types::nr: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "v2x_band_params_eutra_nr_r16_c"); + } - return SRSASN_SUCCESS; + return *this; } -void neigh_cell_si_acquisition_params_v15a0_s::to_json(json_writer& j) const +v2x_band_params_eutra_nr_r16_c::eutra_s_& v2x_band_params_eutra_nr_r16_c::set_eutra() +{ + set(types::eutra); + return c.get(); +} +v2x_band_params_eutra_nr_r16_c::nr_s_& v2x_band_params_eutra_nr_r16_c::set_nr() +{ + set(types::nr); + return c.get(); +} +void v2x_band_params_eutra_nr_r16_c::to_json(json_writer& j) const { j.start_obj(); - if (eutra_cgi_report_nedc_r15_present) { - j.write_str("eutra-CGI-Reporting-NEDC-r15", "supported"); + switch (type_) { + case types::eutra: + j.write_fieldname("eutra"); + j.start_obj(); + if (c.get().v2x_band_params1_r16_present) { + j.write_fieldname("v2x-BandParameters1-r16"); + c.get().v2x_band_params1_r16.to_json(j); + } + if (c.get().v2x_band_params2_r16_present) { + j.write_fieldname("v2x-BandParameters2-r16"); + c.get().v2x_band_params2_r16.to_json(j); + } + j.end_obj(); + break; + case types::nr: + j.write_fieldname("nr"); + j.start_obj(); + if (c.get().v2x_band_params_nr_r16_present) { + j.write_str("v2x-BandParametersNR-r16", c.get().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().v2x_band_params1_r16_present, 1)); + HANDLE_CODE(bref.pack(c.get().v2x_band_params2_r16_present, 1)); + if (c.get().v2x_band_params1_r16_present) { + HANDLE_CODE(c.get().v2x_band_params1_r16.pack(bref)); + } + if (c.get().v2x_band_params2_r16_present) { + HANDLE_CODE(c.get().v2x_band_params2_r16.pack(bref)); + } + break; + case types::nr: + HANDLE_CODE(bref.pack(c.get().v2x_band_params_nr_r16_present, 1)); + if (c.get().v2x_band_params_nr_r16_present) { + HANDLE_CODE(c.get().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().v2x_band_params1_r16_present, 1)); + HANDLE_CODE(bref.unpack(c.get().v2x_band_params2_r16_present, 1)); + if (c.get().v2x_band_params1_r16_present) { + HANDLE_CODE(c.get().v2x_band_params1_r16.unpack(bref)); + } + if (c.get().v2x_band_params2_r16_present) { + HANDLE_CODE(c.get().v2x_band_params2_r16.unpack(bref)); + } + break; + case types::nr: + HANDLE_CODE(bref.unpack(c.get().v2x_band_params_nr_r16_present, 1)); + if (c.get().v2x_band_params_nr_r16_present) { + HANDLE_CODE(c.get().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; +} -// PhyLayerParameters-v1540 ::= SEQUENCE -SRSASN_CODE phy_layer_params_v1540_s::pack(bit_ref& bref) const +// SL-Parameters-v1610 ::= SEQUENCE +SRSASN_CODE sl_params_v1610_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(stti_spt_cap_v1540_present, 1)); - HANDLE_CODE(bref.pack(crs_im_tm1_to_tm9_one_rx_port_v1540_present, 1)); - HANDLE_CODE(bref.pack(cch_im_ref_rec_type_a_one_rx_port_v1540_present, 1)); + 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 phy_layer_params_v1540_s::unpack(cbit_ref& bref) +SRSASN_CODE sl_params_v1610_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(stti_spt_cap_v1540_present, 1)); - HANDLE_CODE(bref.unpack(crs_im_tm1_to_tm9_one_rx_port_v1540_present, 1)); - HANDLE_CODE(bref.unpack(cch_im_ref_rec_type_a_one_rx_port_v1540_present, 1)); + 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 phy_layer_params_v1540_s::to_json(json_writer& j) const +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(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(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 +{ + HANDLE_CODE(bref.pack(eutra_cgi_report_nedc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE neigh_cell_si_acquisition_params_v15a0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(eutra_cgi_report_nedc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void neigh_cell_si_acquisition_params_v15a0_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (eutra_cgi_report_nedc_r15_present) { + j.write_str("eutra-CGI-Reporting-NEDC-r15", "supported"); + } + 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 +{ + HANDLE_CODE(bref.pack(stti_spt_cap_v1540_present, 1)); + HANDLE_CODE(bref.pack(crs_im_tm1_to_tm9_one_rx_port_v1540_present, 1)); + HANDLE_CODE(bref.pack(cch_im_ref_rec_type_a_one_rx_port_v1540_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE phy_layer_params_v1540_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(stti_spt_cap_v1540_present, 1)); + HANDLE_CODE(bref.unpack(crs_im_tm1_to_tm9_one_rx_port_v1540_present, 1)); + HANDLE_CODE(bref.unpack(cch_im_ref_rec_type_a_one_rx_port_v1540_present, 1)); + + return SRSASN_SUCCESS; +} +void phy_layer_params_v1540_s::to_json(json_writer& j) const { j.start_obj(); if (stti_spt_cap_v1540_present) { @@ -8458,33 +11298,242 @@ void phy_layer_params_v1540_s::to_json(json_writer& j) const j.write_str("slotPDSCH-TxDiv-TM8-r15", "supported"); j.end_obj(); } - if (crs_im_tm1_to_tm9_one_rx_port_v1540_present) { - j.write_str("crs-IM-TM1-toTM9-OneRX-Port-v1540", "supported"); + if (crs_im_tm1_to_tm9_one_rx_port_v1540_present) { + j.write_str("crs-IM-TM1-toTM9-OneRX-Port-v1540", "supported"); + } + if (cch_im_ref_rec_type_a_one_rx_port_v1540_present) { + j.write_str("cch-IM-RefRecTypeA-OneRX-Port-v1540", "supported"); + } + j.end_obj(); +} + +// PhyLayerParameters-v1550 ::= SEQUENCE +SRSASN_CODE phy_layer_params_v1550_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(dmrs_overhead_reduction_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE phy_layer_params_v1550_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(dmrs_overhead_reduction_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void phy_layer_params_v1550_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (dmrs_overhead_reduction_r15_present) { + j.write_str("dmrs-OverheadReduction-r15", "supported"); + } + 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 (cch_im_ref_rec_type_a_one_rx_port_v1540_present) { - j.write_str("cch-IM-RefRecTypeA-OneRX-Port-v1540", "supported"); + 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(); } -// PhyLayerParameters-v1550 ::= SEQUENCE -SRSASN_CODE phy_layer_params_v1550_s::pack(bit_ref& bref) const +// 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(dmrs_overhead_reduction_r15_present, 1)); + 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 phy_layer_params_v1550_s::unpack(cbit_ref& bref) +SRSASN_CODE ue_eutra_cap_add_xdd_mode_v1610_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(dmrs_overhead_reduction_r15_present, 1)); + 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 phy_layer_params_v1550_s::to_json(json_writer& j) const +void ue_eutra_cap_add_xdd_mode_v1610_s::to_json(json_writer& j) const { j.start_obj(); - if (dmrs_overhead_reduction_r15_present) { - j.write_str("dmrs-OverheadReduction-r15", "supported"); + 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(); } @@ -8541,6 +11590,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 { @@ -8706,6 +11991,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; } @@ -8726,6 +12014,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; } @@ -8748,8 +12039,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(); } @@ -11675,7 +14965,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)); @@ -11687,7 +14977,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)); @@ -11702,8 +14992,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"); @@ -14004,13 +17294,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 @@ -14267,6 +17558,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 { @@ -14298,6 +17736,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; } @@ -14309,6 +17750,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; } @@ -14321,8 +17765,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 8cde6ccad3..e3a79dc96b 100644 --- a/lib/src/asn1/rrc/ul_ccch_msg.cc +++ b/lib/src/asn1/rrc/ul_ccch_msg.cc @@ -29,6 +29,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 { @@ -43,12 +78,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 @@ -180,8 +215,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: @@ -194,7 +229,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; @@ -208,10 +243,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_) { @@ -224,10 +259,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; @@ -243,22 +278,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>& 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 >(); } -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_) { @@ -269,11 +304,11 @@ void init_ue_id_minus5_gc_c::to_json(json_writer& j) const j.write_str("randomValue", c.get >().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_) { @@ -284,12 +319,12 @@ SRSASN_CODE init_ue_id_minus5_gc_c::pack(bit_ref& bref) const HANDLE_CODE(c.get >().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); @@ -302,7 +337,7 @@ SRSASN_CODE init_ue_id_minus5_gc_c::unpack(cbit_ref& bref) HANDLE_CODE(c.get >().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; @@ -317,6 +352,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; } @@ -328,6 +366,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; } @@ -339,8 +380,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(); } @@ -388,7 +428,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"); } @@ -436,16 +476,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; @@ -453,9 +493,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(); } @@ -806,6 +846,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 { @@ -1259,18 +1351,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(); + break; + case types::crit_exts_future: + c.destroy(); + 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(); + break; + case types::crit_exts_future: + c.init(); + 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()); + break; + case types::crit_exts_future: + c.init(other.c.get()); + 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()); + break; + case types::crit_exts_future: + c.set(other.c.get()); + 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(); } -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(); } void rrc_early_data_request_r15_s::crit_exts_c_::to_json(json_writer& j) const { @@ -1278,9 +1436,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().to_json(j); break; case types::crit_exts_future: + j.write_fieldname("criticalExtensionsFuture"); + c.get().to_json(j); break; default: log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_"); @@ -1292,9 +1452,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().pack(bref)); break; case types::crit_exts_future: + HANDLE_CODE(c.get().pack(bref)); break; default: log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_"); @@ -1309,9 +1470,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().unpack(bref)); break; case types::crit_exts_future: + HANDLE_CODE(c.get().unpack(bref)); break; default: log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_"); @@ -1320,6 +1482,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 a2189c1a2e..5074201f3a 100644 --- a/lib/src/asn1/rrc/ul_dcch_msg.cc +++ b/lib/src/asn1/rrc/ul_dcch_msg.cc @@ -177,6 +177,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 { @@ -211,6 +428,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 { @@ -221,6 +537,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; } @@ -233,6 +552,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; } @@ -247,8 +569,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(); } @@ -421,6 +742,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 { @@ -717,6 +1109,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 { @@ -746,6 +1158,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 { @@ -754,6 +1189,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) @@ -763,8 +1202,12 @@ 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)); - return SRSASN_SUCCESS; -} + 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 { j.start_obj(); @@ -777,6 +1220,42 @@ void rrc_conn_recfg_complete_v1530_ies_s::to_json(json_writer& j) const if (flight_path_info_available_r15_present) { j.write_str("flightPathInfoAvailable-r15", "true"); } + 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(); @@ -827,6 +1306,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 { @@ -1168,7 +1684,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)); @@ -1179,7 +1695,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)); @@ -1197,8 +1713,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(); } @@ -1255,6 +1771,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) @@ -1264,6 +1784,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 @@ -1280,8 +1804,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(); } @@ -1322,12 +1845,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(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(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) @@ -1335,6 +2047,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 @@ -1345,6 +2073,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(); } @@ -1556,66 +2313,124 @@ void traffic_pattern_info_v1530_s::to_json(json_writer& j) const j.end_obj(); } -// UEInformationResponse-v1530-IEs ::= SEQUENCE -SRSASN_CODE ue_info_resp_v1530_ies_s::pack(bit_ref& bref) const +// UEAssistanceInformation-v1700-IEs ::= SEQUENCE +SRSASN_CODE ueassist_info_v1700_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(meas_result_list_idle_r15_present, 1)); - HANDLE_CODE(bref.pack(flight_path_info_report_r15_present, 1)); + 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 (meas_result_list_idle_r15_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_list_idle_r15, 1, 3)); + if (scg_deactivation_pref_r17_present) { + HANDLE_CODE(scg_deactivation_pref_r17.pack(bref)); } - 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; } -SRSASN_CODE ue_info_resp_v1530_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE ueassist_info_v1700_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(meas_result_list_idle_r15_present, 1)); - HANDLE_CODE(bref.unpack(flight_path_info_report_r15_present, 1)); + 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 (meas_result_list_idle_r15_present) { - HANDLE_CODE(unpack_dyn_seq_of(meas_result_list_idle_r15, bref, 1, 3)); + if (scg_deactivation_pref_r17_present) { + HANDLE_CODE(scg_deactivation_pref_r17.unpack(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; } -void ue_info_resp_v1530_ies_s::to_json(json_writer& j) const +void ueassist_info_v1700_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (meas_result_list_idle_r15_present) { - j.start_array("measResultListIdle-r15"); - for (const auto& e1 : meas_result_list_idle_r15) { - e1.to_json(j); - } - j.end_array(); + if (ul_data_r17_present) { + j.write_str("uplinkData-r17", "true"); } - if (flight_path_info_report_r15_present) { - j.write_fieldname("flightPathInfoReport-r15"); - flight_path_info_report_r15.to_json(j); + 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"); - j.start_obj(); - j.end_obj(); + non_crit_ext.to_json(j); } j.end_obj(); } -// AffectedCarrierFreq-v1310 ::= SEQUENCE -SRSASN_CODE affected_carrier_freq_v1310_s::pack(bit_ref& bref) const +const char* ueassist_info_v1700_ies_s::scg_deactivation_pref_r17_opts::to_string() const { - HANDLE_CODE(bref.pack(carrier_freq_v1310_present, 1)); + static const char* options[] = {"scgDeactivationPreferred", "noPreference"}; + return convert_enum_idx(options, 2, value, "ueassist_info_v1700_ies_s::scg_deactivation_pref_r17_e_"); +} - if (carrier_freq_v1310_present) { - HANDLE_CODE(pack_integer(bref, carrier_freq_v1310, (uint8_t)33u, (uint8_t)64u)); +// UEInformationResponse-v1530-IEs ::= SEQUENCE +SRSASN_CODE ue_info_resp_v1530_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(meas_result_list_idle_r15_present, 1)); + HANDLE_CODE(bref.pack(flight_path_info_report_r15_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (meas_result_list_idle_r15_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_list_idle_r15, 1, 3)); + } + 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; +} +SRSASN_CODE ue_info_resp_v1530_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(meas_result_list_idle_r15_present, 1)); + HANDLE_CODE(bref.unpack(flight_path_info_report_r15_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (meas_result_list_idle_r15_present) { + HANDLE_CODE(unpack_dyn_seq_of(meas_result_list_idle_r15, bref, 1, 3)); + } + 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; +} +void ue_info_resp_v1530_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (meas_result_list_idle_r15_present) { + j.start_array("measResultListIdle-r15"); + for (const auto& e1 : meas_result_list_idle_r15) { + e1.to_json(j); + } + j.end_array(); + } + if (flight_path_info_report_r15_present) { + j.write_fieldname("flightPathInfoReport-r15"); + flight_path_info_report_r15.to_json(j); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + +// AffectedCarrierFreq-v1310 ::= SEQUENCE +SRSASN_CODE affected_carrier_freq_v1310_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(carrier_freq_v1310_present, 1)); + + if (carrier_freq_v1310_present) { + HANDLE_CODE(pack_integer(bref, carrier_freq_v1310, (uint8_t)33u, (uint8_t)64u)); } return SRSASN_SUCCESS; @@ -1690,6 +2505,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]) { @@ -1728,6 +2546,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; } @@ -1774,7 +2613,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]) { @@ -1821,6 +2660,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; } @@ -1916,6 +2782,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(); } @@ -1955,6 +2841,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; } @@ -1966,6 +2855,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; } @@ -1978,12 +2870,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 { @@ -2170,6 +3114,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 { @@ -2610,38 +3597,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(); @@ -2774,6 +3814,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 { @@ -3304,6 +4381,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; } @@ -3315,6 +4395,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; } @@ -3333,8 +4416,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(); } @@ -3484,6 +4566,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 { @@ -3788,6 +4907,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; } @@ -3799,8 +4921,11 @@ 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)); } - - return SRSASN_SUCCESS; + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; } void mbms_interest_ind_v1540_ies_s::to_json(json_writer& j) const { @@ -3814,8 +4939,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(); } @@ -3903,6 +5027,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(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(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 { @@ -4818,6 +6033,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(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(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 { @@ -4833,6 +6224,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) @@ -4849,6 +6269,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 @@ -4865,6 +6316,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(); } @@ -4875,8 +6349,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 { @@ -4891,6 +6366,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 { @@ -5201,6 +6694,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 { @@ -5251,6 +6767,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]) { @@ -5358,6 +6881,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; } @@ -5391,7 +6951,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]) { @@ -5526,6 +7086,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; } @@ -5669,6 +7278,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(); } @@ -5814,229 +7458,522 @@ const char* rlf_report_r9_s::conn_fail_type_r10_opts::to_string() const return convert_enum_idx(options, 2, value, "rlf_report_r9_s::conn_fail_type_r10_e_"); } -const char* rlf_report_r9_s::basic_fields_r11_s_::rlf_cause_r11_opts::to_string() const -{ - static const char* options[] = {"t310-Expiry", "randomAccessProblem", "rlc-MaxNumRetx", "t312-Expiry-r12"}; - return convert_enum_idx(options, 4, value, "rlf_report_r9_s::basic_fields_r11_s_::rlf_cause_r11_e_"); -} -uint16_t rlf_report_r9_s::basic_fields_r11_s_::rlf_cause_r11_opts::to_number() const +const char* rlf_report_r9_s::basic_fields_r11_s_::rlf_cause_r11_opts::to_string() const +{ + static const char* options[] = {"t310-Expiry", "randomAccessProblem", "rlc-MaxNumRetx", "t312-Expiry-r12"}; + return convert_enum_idx(options, 4, value, "rlf_report_r9_s::basic_fields_r11_s_::rlf_cause_r11_e_"); +} +uint16_t rlf_report_r9_s::basic_fields_r11_s_::rlf_cause_r11_opts::to_number() const +{ + switch (value) { + case t310_expiry: + return 310; + case t312_expiry_r12: + return 312; + default: + invalid_enum_number(value, "rlf_report_r9_s::basic_fields_r11_s_::rlf_cause_r11_e_"); + } + return 0; +} + +void rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::destroy_() {} +void rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::set(types::options e) +{ + destroy_(); + type_ = e; +} +rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::pci_r11_c_( + const rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::fdd_r11: + c.init(other.c.get()); + break; + case types::tdd_r11: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_"); + } +} +rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_& rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::operator=( + const rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_& other) +{ + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::fdd_r11: + c.set(other.c.get()); + break; + case types::tdd_r11: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_"); + } + + return *this; +} +uint16_t& rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::set_fdd_r11() +{ + set(types::fdd_r11); + return c.get(); +} +uint8_t& rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::set_tdd_r11() +{ + set(types::tdd_r11); + return c.get(); +} +void rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::fdd_r11: + j.write_int("fdd-r11", c.get()); + break; + case types::tdd_r11: + j.write_int("tdd-r11", c.get()); + break; + default: + log_invalid_choice_id(type_, "rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_"); + } + j.end_obj(); +} +SRSASN_CODE rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::fdd_r11: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)511u)); + break; + case types::tdd_r11: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + break; + default: + log_invalid_choice_id(type_, "rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::fdd_r11: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)511u)); + break; + case types::tdd_r11: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + break; + default: + log_invalid_choice_id(type_, "rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +void rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::destroy_() {} +void rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::set(types::options e) +{ + destroy_(); + type_ = e; +} +rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::pci_r11_c_( + const rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::fdd_r11: + c.init(other.c.get()); + break; + case types::tdd_r11: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_"); + } +} +rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_& rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::operator=( + const rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_& other) +{ + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::fdd_r11: + c.set(other.c.get()); + break; + case types::tdd_r11: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_"); + } + + return *this; +} +uint16_t& rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::set_fdd_r11() +{ + set(types::fdd_r11); + return c.get(); +} +uint8_t& rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::set_tdd_r11() +{ + set(types::tdd_r11); + return c.get(); +} +void rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::fdd_r11: + j.write_int("fdd-r11", c.get()); + break; + case types::tdd_r11: + j.write_int("tdd-r11", c.get()); + break; + default: + log_invalid_choice_id(type_, "rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_"); + } + j.end_obj(); +} +SRSASN_CODE rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::fdd_r11: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)511u)); + break; + case types::tdd_r11: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + break; + default: + log_invalid_choice_id(type_, "rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::fdd_r11: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)511u)); + break; + case types::tdd_r11: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + break; + default: + log_invalid_choice_id(type_, "rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +void rlf_report_r9_s::failed_nr_pcell_id_r16_c_::destroy_() { - switch (value) { - case t310_expiry: - return 310; - case t312_expiry_r12: - return 312; + switch (type_) { + case types::cell_global_id: + c.destroy(); + break; + case types::pci_arfcn: + c.destroy(); + break; default: - invalid_enum_number(value, "rlf_report_r9_s::basic_fields_r11_s_::rlf_cause_r11_e_"); + break; } - return 0; } - -void rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::destroy_() {} -void rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::set(types::options e) +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(); + break; + case types::pci_arfcn: + c.init(); + 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::prev_utra_cell_id_r11_s_::pci_r11_c_::pci_r11_c_( - const rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_& other) +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::fdd_r11: - c.init(other.c.get()); + case types::cell_global_id: + c.init(other.c.get()); break; - case types::tdd_r11: - c.init(other.c.get()); + case types::pci_arfcn: + c.init(other.c.get()); break; case types::nulltype: break; default: - log_invalid_choice_id(type_, "rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_"); + log_invalid_choice_id(type_, "rlf_report_r9_s::failed_nr_pcell_id_r16_c_"); } } -rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_& rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::operator=( - const rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_& other) +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::fdd_r11: - c.set(other.c.get()); + case types::cell_global_id: + c.set(other.c.get()); break; - case types::tdd_r11: - c.set(other.c.get()); + case types::pci_arfcn: + c.set(other.c.get()); break; case types::nulltype: break; default: - log_invalid_choice_id(type_, "rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_"); + log_invalid_choice_id(type_, "rlf_report_r9_s::failed_nr_pcell_id_r16_c_"); } return *this; } -uint16_t& rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::set_fdd_r11() +cell_global_id_nr_r16_s& rlf_report_r9_s::failed_nr_pcell_id_r16_c_::set_cell_global_id() { - set(types::fdd_r11); - return c.get(); + set(types::cell_global_id); + return c.get(); } -uint8_t& rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::set_tdd_r11() +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::tdd_r11); - return c.get(); + set(types::pci_arfcn); + return c.get(); } -void rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::to_json(json_writer& j) const +void rlf_report_r9_s::failed_nr_pcell_id_r16_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::fdd_r11: - j.write_int("fdd-r11", c.get()); + case types::cell_global_id: + j.write_fieldname("cellGlobalId"); + c.get().to_json(j); break; - case types::tdd_r11: - j.write_int("tdd-r11", c.get()); + case types::pci_arfcn: + j.write_fieldname("pci-arfcn"); + j.start_obj(); + j.write_int("physCellId-r16", c.get().pci_r16); + j.write_int("carrierFreq-r16", c.get().carrier_freq_r16); + j.end_obj(); break; default: - log_invalid_choice_id(type_, "rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_"); + log_invalid_choice_id(type_, "rlf_report_r9_s::failed_nr_pcell_id_r16_c_"); } j.end_obj(); } -SRSASN_CODE rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_::pack(bit_ref& bref) const +SRSASN_CODE rlf_report_r9_s::failed_nr_pcell_id_r16_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::fdd_r11: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)511u)); + case types::cell_global_id: + HANDLE_CODE(c.get().pack(bref)); break; - case types::tdd_r11: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + case types::pci_arfcn: + HANDLE_CODE(pack_integer(bref, c.get().pci_r16, (uint16_t)0u, (uint16_t)1007u)); + HANDLE_CODE(pack_integer(bref, c.get().carrier_freq_r16, (uint32_t)0u, (uint32_t)3279165u)); break; default: - log_invalid_choice_id(type_, "rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_"); + 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::prev_utra_cell_id_r11_s_::pci_r11_c_::unpack(cbit_ref& bref) +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::fdd_r11: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)511u)); + case types::cell_global_id: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::tdd_r11: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + case types::pci_arfcn: + HANDLE_CODE(unpack_integer(c.get().pci_r16, bref, (uint16_t)0u, (uint16_t)1007u)); + HANDLE_CODE(unpack_integer(c.get().carrier_freq_r16, bref, (uint32_t)0u, (uint32_t)3279165u)); break; default: - log_invalid_choice_id(type_, "rlf_report_r9_s::prev_utra_cell_id_r11_s_::pci_r11_c_"); + 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::sel_utra_cell_id_r11_s_::pci_r11_c_::destroy_() {} -void rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::set(types::options e) +void rlf_report_r9_s::reconnect_cell_id_r16_c_::destroy_() +{ + switch (type_) { + case types::nr_reconnect_cell_id: + c.destroy(); + break; + case types::eutra_reconnect_cell_id: + c.destroy(); + 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(); + break; + case types::eutra_reconnect_cell_id: + c.init(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rlf_report_r9_s::reconnect_cell_id_r16_c_"); + } } -rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::pci_r11_c_( - const rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_& other) +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::fdd_r11: - c.init(other.c.get()); + case types::nr_reconnect_cell_id: + c.init(other.c.get()); break; - case types::tdd_r11: - c.init(other.c.get()); + case types::eutra_reconnect_cell_id: + c.init(other.c.get()); break; case types::nulltype: break; default: - log_invalid_choice_id(type_, "rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_"); + log_invalid_choice_id(type_, "rlf_report_r9_s::reconnect_cell_id_r16_c_"); } } -rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_& rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::operator=( - const rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_& other) +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::fdd_r11: - c.set(other.c.get()); + case types::nr_reconnect_cell_id: + c.set(other.c.get()); break; - case types::tdd_r11: - c.set(other.c.get()); + case types::eutra_reconnect_cell_id: + c.set(other.c.get()); break; case types::nulltype: break; default: - log_invalid_choice_id(type_, "rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_"); + log_invalid_choice_id(type_, "rlf_report_r9_s::reconnect_cell_id_r16_c_"); } return *this; } -uint16_t& rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::set_fdd_r11() +cell_global_id_nr_r16_s& rlf_report_r9_s::reconnect_cell_id_r16_c_::set_nr_reconnect_cell_id() { - set(types::fdd_r11); - return c.get(); + set(types::nr_reconnect_cell_id); + return c.get(); } -uint8_t& rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::set_tdd_r11() +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::tdd_r11); - return c.get(); + set(types::eutra_reconnect_cell_id); + return c.get(); } -void rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::to_json(json_writer& j) const +void rlf_report_r9_s::reconnect_cell_id_r16_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::fdd_r11: - j.write_int("fdd-r11", c.get()); + case types::nr_reconnect_cell_id: + j.write_fieldname("nrReconnectCellId"); + c.get().to_json(j); break; - case types::tdd_r11: - j.write_int("tdd-r11", c.get()); + case types::eutra_reconnect_cell_id: + j.write_fieldname("eutraReconnectCellId"); + j.start_obj(); + j.write_fieldname("cellGlobalId-r16"); + c.get().cell_global_id_r16.to_json(j); + if (c.get().tac_epc_r16_present) { + j.write_str("trackingAreaCode-EPC-r16", c.get().tac_epc_r16.to_string()); + } + if (c.get().tac_minus5_gc_r16_present) { + j.write_str("trackingAreaCode-5GC-r16", c.get().tac_minus5_gc_r16.to_string()); + } + j.end_obj(); break; default: - log_invalid_choice_id(type_, "rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_"); + log_invalid_choice_id(type_, "rlf_report_r9_s::reconnect_cell_id_r16_c_"); } j.end_obj(); } -SRSASN_CODE rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_::pack(bit_ref& bref) const +SRSASN_CODE rlf_report_r9_s::reconnect_cell_id_r16_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::fdd_r11: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)511u)); + case types::nr_reconnect_cell_id: + HANDLE_CODE(c.get().pack(bref)); break; - case types::tdd_r11: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + case types::eutra_reconnect_cell_id: + HANDLE_CODE(bref.pack(c.get().tac_epc_r16_present, 1)); + HANDLE_CODE(bref.pack(c.get().tac_minus5_gc_r16_present, 1)); + HANDLE_CODE(c.get().cell_global_id_r16.pack(bref)); + if (c.get().tac_epc_r16_present) { + HANDLE_CODE(c.get().tac_epc_r16.pack(bref)); + } + if (c.get().tac_minus5_gc_r16_present) { + HANDLE_CODE(c.get().tac_minus5_gc_r16.pack(bref)); + } break; default: - log_invalid_choice_id(type_, "rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_"); + 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::sel_utra_cell_id_r11_s_::pci_r11_c_::unpack(cbit_ref& bref) +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::fdd_r11: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)511u)); + case types::nr_reconnect_cell_id: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::tdd_r11: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + case types::eutra_reconnect_cell_id: + HANDLE_CODE(bref.unpack(c.get().tac_epc_r16_present, 1)); + HANDLE_CODE(bref.unpack(c.get().tac_minus5_gc_r16_present, 1)); + HANDLE_CODE(c.get().cell_global_id_r16.unpack(bref)); + if (c.get().tac_epc_r16_present) { + HANDLE_CODE(c.get().tac_epc_r16.unpack(bref)); + } + if (c.get().tac_minus5_gc_r16_present) { + HANDLE_CODE(c.get().tac_minus5_gc_r16.unpack(bref)); + } break; default: - log_invalid_choice_id(type_, "rlf_report_r9_s::sel_utra_cell_id_r11_s_::pci_r11_c_"); + log_invalid_choice_id(type_, "rlf_report_r9_s::reconnect_cell_id_r16_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; @@ -6129,6 +8066,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) @@ -6139,6 +8080,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 @@ -6158,8 +8103,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(); } @@ -7090,6 +9034,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 { @@ -7393,6 +9392,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 { @@ -7406,50 +9454,237 @@ SRSASN_CODE meas_report_app_layer_r15_ies_s::pack(bit_ref& bref) const if (service_type_r15_present) { HANDLE_CODE(service_type_r15.pack(bref)); } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.pack(bref)); + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE meas_report_app_layer_r15_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(meas_report_app_layer_container_r15_present, 1)); + HANDLE_CODE(bref.unpack(service_type_r15_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (meas_report_app_layer_container_r15_present) { + HANDLE_CODE(meas_report_app_layer_container_r15.unpack(bref)); + } + if (service_type_r15_present) { + HANDLE_CODE(service_type_r15.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void meas_report_app_layer_r15_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (meas_report_app_layer_container_r15_present) { + j.write_str("measReportAppLayerContainer-r15", meas_report_app_layer_container_r15.to_string()); + } + if (service_type_r15_present) { + j.write_str("serviceType-r15", service_type_r15.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + +const char* meas_report_app_layer_r15_ies_s::service_type_r15_opts::to_string() const +{ + static const char* options[] = {"qoe", "qoemtsi", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"}; + 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 meas_report_app_layer_r15_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE pur_cfg_request_r16_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(meas_report_app_layer_container_r15_present, 1)); - HANDLE_CODE(bref.unpack(service_type_r15_present, 1)); + 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 (meas_report_app_layer_container_r15_present) { - HANDLE_CODE(meas_report_app_layer_container_r15.unpack(bref)); - } - if (service_type_r15_present) { - HANDLE_CODE(service_type_r15.unpack(bref)); + if (pur_cfg_request_r16_present) { + HANDLE_CODE(pur_cfg_request_r16.unpack(bref)); } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); } return SRSASN_SUCCESS; } -void meas_report_app_layer_r15_ies_s::to_json(json_writer& j) const +void pur_cfg_request_r16_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (meas_report_app_layer_container_r15_present) { - j.write_str("measReportAppLayerContainer-r15", meas_report_app_layer_container_r15.to_string()); + if (pur_cfg_request_r16_present) { + j.write_fieldname("pur-ConfigRequest-r16"); + pur_cfg_request_r16.to_json(j); } - if (service_type_r15_present) { - j.write_str("serviceType-r15", service_type_r15.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"); - non_crit_ext.to_json(j); + j.start_obj(); + j.end_obj(); } j.end_obj(); } -const char* meas_report_app_layer_r15_ies_s::service_type_r15_opts::to_string() const +void pur_cfg_request_r16_ies_s::pur_cfg_request_r16_c_::set(types::options e) { - static const char* options[] = {"qoe", "qoemtsi", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"}; - return convert_enum_idx(options, 8, value, "meas_report_app_layer_r15_ies_s::service_type_r15_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 @@ -8110,8 +10345,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)); @@ -8129,8 +10363,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)); @@ -8146,10 +10379,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"); @@ -8162,6 +10392,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 { @@ -8207,7 +10489,216 @@ void ul_ho_prep_transfer_r8_ies_s::to_json(json_writer& j) const j.write_fieldname("nonCriticalExtension"); non_crit_ext.to_json(j); } - j.end_obj(); + 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(); + break; + case types::ded_info_cdma2000_minus1_xrtt_r16: + c.destroy(); + break; + case types::ded_info_cdma2000_hrpd_r16: + c.destroy(); + 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(); + break; + case types::ded_info_cdma2000_minus1_xrtt_r16: + c.init(); + break; + case types::ded_info_cdma2000_hrpd_r16: + c.init(); + 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()); + break; + case types::ded_info_cdma2000_minus1_xrtt_r16: + c.init(other.c.get()); + break; + case types::ded_info_cdma2000_hrpd_r16: + c.init(other.c.get()); + 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()); + break; + case types::ded_info_cdma2000_minus1_xrtt_r16: + c.set(other.c.get()); + break; + case types::ded_info_cdma2000_hrpd_r16: + c.set(other.c.get()); + 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& 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& 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(); +} +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().to_string()); + break; + case types::ded_info_cdma2000_minus1_xrtt_r16: + j.write_str("dedicatedInfoCDMA2000-1XRTT-r16", c.get().to_string()); + break; + case types::ded_info_cdma2000_hrpd_r16: + j.write_str("dedicatedInfoCDMA2000-HRPD-r16", c.get().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().pack(bref)); + break; + case types::ded_info_cdma2000_minus1_xrtt_r16: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::ded_info_cdma2000_hrpd_r16: + HANDLE_CODE(c.get().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().unpack(bref)); + break; + case types::ded_info_cdma2000_minus1_xrtt_r16: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::ded_info_cdma2000_hrpd_r16: + HANDLE_CODE(c.get().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 @@ -8399,6 +10890,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 { @@ -8691,6 +11230,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 { @@ -9344,6 +11965,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 { @@ -9365,62 +12068,144 @@ void meas_report_app_layer_r15_s::to_json(json_writer& j) const j.end_obj(); } -void meas_report_app_layer_r15_s::crit_exts_c_::set(types::options e) +void meas_report_app_layer_r15_s::crit_exts_c_::set(types::options e) +{ + type_ = e; +} +meas_report_app_layer_r15_ies_s& meas_report_app_layer_r15_s::crit_exts_c_::set_meas_report_app_layer_r15() +{ + set(types::meas_report_app_layer_r15); + return c; +} +void meas_report_app_layer_r15_s::crit_exts_c_::set_crit_exts_future() +{ + set(types::crit_exts_future); +} +void meas_report_app_layer_r15_s::crit_exts_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::meas_report_app_layer_r15: + j.write_fieldname("measReportAppLayer-r15"); + c.to_json(j); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "meas_report_app_layer_r15_s::crit_exts_c_"); + } + j.end_obj(); +} +SRSASN_CODE meas_report_app_layer_r15_s::crit_exts_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::meas_report_app_layer_r15: + HANDLE_CODE(c.pack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "meas_report_app_layer_r15_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE meas_report_app_layer_r15_s::crit_exts_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::meas_report_app_layer_r15: + HANDLE_CODE(c.unpack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "meas_report_app_layer_r15_s::crit_exts_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + 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; } -meas_report_app_layer_r15_ies_s& meas_report_app_layer_r15_s::crit_exts_c_::set_meas_report_app_layer_r15() +pur_cfg_request_r16_ies_s& pur_cfg_request_r16_s::crit_exts_c_::set_pur_cfg_request() { - set(types::meas_report_app_layer_r15); + set(types::pur_cfg_request); return c; } -void meas_report_app_layer_r15_s::crit_exts_c_::set_crit_exts_future() +void pur_cfg_request_r16_s::crit_exts_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void meas_report_app_layer_r15_s::crit_exts_c_::to_json(json_writer& j) const +void pur_cfg_request_r16_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::meas_report_app_layer_r15: - j.write_fieldname("measReportAppLayer-r15"); + 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_, "meas_report_app_layer_r15_s::crit_exts_c_"); + log_invalid_choice_id(type_, "pur_cfg_request_r16_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE meas_report_app_layer_r15_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE pur_cfg_request_r16_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::meas_report_app_layer_r15: + case types::pur_cfg_request: HANDLE_CODE(c.pack(bref)); break; case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "meas_report_app_layer_r15_s::crit_exts_c_"); + log_invalid_choice_id(type_, "pur_cfg_request_r16_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE meas_report_app_layer_r15_s::crit_exts_c_::unpack(cbit_ref& bref) +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::meas_report_app_layer_r15: + case types::pur_cfg_request: HANDLE_CODE(c.unpack(bref)); break; case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "meas_report_app_layer_r15_s::crit_exts_c_"); + log_invalid_choice_id(type_, "pur_cfg_request_r16_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; @@ -10794,78 +13579,323 @@ SRSASN_CODE ueassist_info_r11_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const case types::ue_assist_info_r11: HANDLE_CODE(c.pack(bref)); break; - case types::spare3: - break; - case types::spare2: - break; - case types::spare1: + case types::spare3: + break; + case types::spare2: + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "ueassist_info_r11_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE ueassist_info_r11_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::ue_assist_info_r11: + HANDLE_CODE(c.unpack(bref)); + break; + case types::spare3: + break; + case types::spare2: + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "ueassist_info_r11_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +// UEInformationResponse-r9 ::= SEQUENCE +SRSASN_CODE ue_info_resp_r9_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_r9_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_r9_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_r9_s::crit_exts_c_::set(types::options e) +{ + type_ = e; +} +ue_info_resp_r9_s::crit_exts_c_::c1_c_& ue_info_resp_r9_s::crit_exts_c_::set_c1() +{ + set(types::c1); + return c; +} +void ue_info_resp_r9_s::crit_exts_c_::set_crit_exts_future() +{ + set(types::crit_exts_future); +} +void ue_info_resp_r9_s::crit_exts_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::c1: + j.write_fieldname("c1"); + c.to_json(j); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_"); + } + j.end_obj(); +} +SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::c1: + HANDLE_CODE(c.pack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::c1: + HANDLE_CODE(c.unpack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +void ue_info_resp_r9_s::crit_exts_c_::c1_c_::set(types::options e) +{ + type_ = e; +} +ue_info_resp_r9_ies_s& ue_info_resp_r9_s::crit_exts_c_::c1_c_::set_ue_info_resp_r9() +{ + set(types::ue_info_resp_r9); + return c; +} +void ue_info_resp_r9_s::crit_exts_c_::c1_c_::set_spare3() +{ + set(types::spare3); +} +void ue_info_resp_r9_s::crit_exts_c_::c1_c_::set_spare2() +{ + set(types::spare2); +} +void ue_info_resp_r9_s::crit_exts_c_::c1_c_::set_spare1() +{ + set(types::spare1); +} +void ue_info_resp_r9_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::ue_info_resp_r9: + j.write_fieldname("ueInformationResponse-r9"); + c.to_json(j); + break; + case types::spare3: + break; + case types::spare2: + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_::c1_c_"); + } + j.end_obj(); +} +SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::ue_info_resp_r9: + HANDLE_CODE(c.pack(bref)); + break; + case types::spare3: + break; + case types::spare2: + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::ue_info_resp_r9: + HANDLE_CODE(c.unpack(bref)); + break; + case types::spare3: + break; + case types::spare2: + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + 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_, "ueassist_info_r11_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "ul_ded_msg_segment_r16_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE ueassist_info_r11_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +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::ue_assist_info_r11: + case types::ul_ded_msg_segment_r16: HANDLE_CODE(c.unpack(bref)); break; - case types::spare3: - break; - case types::spare2: - break; - case types::spare1: + case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "ueassist_info_r11_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "ul_ded_msg_segment_r16_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -// UEInformationResponse-r9 ::= SEQUENCE -SRSASN_CODE ue_info_resp_r9_s::pack(bit_ref& bref) const +// ULHandoverPreparationTransfer ::= SEQUENCE +SRSASN_CODE ul_ho_prep_transfer_s::pack(bit_ref& bref) const { - HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE ue_info_resp_r9_s::unpack(cbit_ref& bref) +SRSASN_CODE ul_ho_prep_transfer_s::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void ue_info_resp_r9_s::to_json(json_writer& j) const +void ul_ho_prep_transfer_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); j.write_fieldname("criticalExtensions"); crit_exts.to_json(j); j.end_obj(); } -void ue_info_resp_r9_s::crit_exts_c_::set(types::options e) +void ul_ho_prep_transfer_s::crit_exts_c_::set(types::options e) { type_ = e; } -ue_info_resp_r9_s::crit_exts_c_::c1_c_& ue_info_resp_r9_s::crit_exts_c_::set_c1() +ul_ho_prep_transfer_s::crit_exts_c_::c1_c_& ul_ho_prep_transfer_s::crit_exts_c_::set_c1() { set(types::c1); return c; } -void ue_info_resp_r9_s::crit_exts_c_::set_crit_exts_future() +void ul_ho_prep_transfer_s::crit_exts_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void ue_info_resp_r9_s::crit_exts_c_::to_json(json_writer& j) const +void ul_ho_prep_transfer_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { @@ -10876,11 +13906,11 @@ void ue_info_resp_r9_s::crit_exts_c_::to_json(json_writer& j) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE ul_ho_prep_transfer_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { @@ -10890,12 +13920,12 @@ SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::pack(bit_ref& bref) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE ul_ho_prep_transfer_s::crit_exts_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -10907,39 +13937,39 @@ SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::unpack(cbit_ref& bref) case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -void ue_info_resp_r9_s::crit_exts_c_::c1_c_::set(types::options e) +void ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::set(types::options e) { type_ = e; } -ue_info_resp_r9_ies_s& ue_info_resp_r9_s::crit_exts_c_::c1_c_::set_ue_info_resp_r9() +ul_ho_prep_transfer_r8_ies_s& ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::set_ul_ho_prep_transfer_r8() { - set(types::ue_info_resp_r9); + set(types::ul_ho_prep_transfer_r8); return c; } -void ue_info_resp_r9_s::crit_exts_c_::c1_c_::set_spare3() +void ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::set_spare3() { set(types::spare3); } -void ue_info_resp_r9_s::crit_exts_c_::c1_c_::set_spare2() +void ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::set_spare2() { set(types::spare2); } -void ue_info_resp_r9_s::crit_exts_c_::c1_c_::set_spare1() +void ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::set_spare1() { set(types::spare1); } -void ue_info_resp_r9_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +void ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::ue_info_resp_r9: - j.write_fieldname("ueInformationResponse-r9"); + case types::ul_ho_prep_transfer_r8: + j.write_fieldname("ulHandoverPreparationTransfer-r8"); c.to_json(j); break; case types::spare3: @@ -10949,15 +13979,15 @@ void ue_info_resp_r9_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const case types::spare1: break; default: - log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_::c1_c_"); } j.end_obj(); } -SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +SRSASN_CODE ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::ue_info_resp_r9: + case types::ul_ho_prep_transfer_r8: HANDLE_CODE(c.pack(bref)); break; case types::spare3: @@ -10967,18 +13997,18 @@ SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const case types::spare1: break; default: - log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::ue_info_resp_r9: + case types::ul_ho_prep_transfer_r8: HANDLE_CODE(c.unpack(bref)); break; case types::spare3: @@ -10988,26 +14018,26 @@ SRSASN_CODE ue_info_resp_r9_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) case types::spare1: break; default: - log_invalid_choice_id(type_, "ue_info_resp_r9_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -// ULHandoverPreparationTransfer ::= SEQUENCE -SRSASN_CODE ul_ho_prep_transfer_s::pack(bit_ref& bref) const +// ULInformationTransfer ::= SEQUENCE +SRSASN_CODE ul_info_transfer_s::pack(bit_ref& bref) const { HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE ul_ho_prep_transfer_s::unpack(cbit_ref& bref) +SRSASN_CODE ul_info_transfer_s::unpack(cbit_ref& bref) { HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void ul_ho_prep_transfer_s::to_json(json_writer& j) const +void ul_info_transfer_s::to_json(json_writer& j) const { j.start_obj(); j.write_fieldname("criticalExtensions"); @@ -11015,20 +14045,20 @@ void ul_ho_prep_transfer_s::to_json(json_writer& j) const j.end_obj(); } -void ul_ho_prep_transfer_s::crit_exts_c_::set(types::options e) +void ul_info_transfer_s::crit_exts_c_::set(types::options e) { type_ = e; } -ul_ho_prep_transfer_s::crit_exts_c_::c1_c_& ul_ho_prep_transfer_s::crit_exts_c_::set_c1() +ul_info_transfer_s::crit_exts_c_::c1_c_& ul_info_transfer_s::crit_exts_c_::set_c1() { set(types::c1); return c; } -void ul_ho_prep_transfer_s::crit_exts_c_::set_crit_exts_future() +void ul_info_transfer_s::crit_exts_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void ul_ho_prep_transfer_s::crit_exts_c_::to_json(json_writer& j) const +void ul_info_transfer_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { @@ -11039,11 +14069,11 @@ void ul_ho_prep_transfer_s::crit_exts_c_::to_json(json_writer& j) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE ul_ho_prep_transfer_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE ul_info_transfer_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { @@ -11053,12 +14083,12 @@ SRSASN_CODE ul_ho_prep_transfer_s::crit_exts_c_::pack(bit_ref& bref) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE ul_ho_prep_transfer_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE ul_info_transfer_s::crit_exts_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -11070,107 +14100,188 @@ SRSASN_CODE ul_ho_prep_transfer_s::crit_exts_c_::unpack(cbit_ref& bref) case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -void ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::set(types::options e) +void ul_info_transfer_s::crit_exts_c_::c1_c_::destroy_() +{ + switch (type_) { + case types::ul_info_transfer_r8: + c.destroy(); + break; + case types::ul_info_transfer_r16: + c.destroy(); + 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(); + break; + case types::ul_info_transfer_r16: + c.init(); + 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_ho_prep_transfer_r8_ies_s& ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::set_ul_ho_prep_transfer_r8() +ul_info_transfer_s::crit_exts_c_::c1_c_::c1_c_(const ul_info_transfer_s::crit_exts_c_::c1_c_& other) { - set(types::ul_ho_prep_transfer_r8); - return c; + type_ = other.type(); + switch (type_) { + case types::ul_info_transfer_r8: + c.init(other.c.get()); + break; + case types::ul_info_transfer_r16: + c.init(other.c.get()); + 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_"); + } } -void ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::set_spare3() +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) { - set(types::spare3); + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::ul_info_transfer_r8: + c.set(other.c.get()); + break; + case types::ul_info_transfer_r16: + c.set(other.c.get()); + 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; } -void ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::set_spare2() +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.get(); +} +ul_info_transfer_r16_ies_s& ul_info_transfer_s::crit_exts_c_::c1_c_::set_ul_info_transfer_r16() +{ + set(types::ul_info_transfer_r16); + return c.get(); +} +void ul_info_transfer_s::crit_exts_c_::c1_c_::set_spare2() { set(types::spare2); } -void ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::set_spare1() +void ul_info_transfer_s::crit_exts_c_::c1_c_::set_spare1() { set(types::spare1); } -void ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +void ul_info_transfer_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::ul_ho_prep_transfer_r8: - j.write_fieldname("ulHandoverPreparationTransfer-r8"); - c.to_json(j); + case types::ul_info_transfer_r8: + j.write_fieldname("ulInformationTransfer-r8"); + c.get().to_json(j); break; - case types::spare3: + case types::ul_info_transfer_r16: + j.write_fieldname("ulInformationTransfer-r16"); + c.get().to_json(j); break; case types::spare2: break; case types::spare1: break; default: - log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_::c1_c_"); } j.end_obj(); } -SRSASN_CODE ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +SRSASN_CODE ul_info_transfer_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::ul_ho_prep_transfer_r8: - HANDLE_CODE(c.pack(bref)); + case types::ul_info_transfer_r8: + HANDLE_CODE(c.get().pack(bref)); break; - case types::spare3: + case types::ul_info_transfer_r16: + HANDLE_CODE(c.get().pack(bref)); break; case types::spare2: break; case types::spare1: break; default: - log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE ul_ho_prep_transfer_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE ul_info_transfer_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::ul_ho_prep_transfer_r8: - HANDLE_CODE(c.unpack(bref)); + case types::ul_info_transfer_r8: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::spare3: + case types::ul_info_transfer_r16: + HANDLE_CODE(c.get().unpack(bref)); break; case types::spare2: break; case types::spare1: break; default: - log_invalid_choice_id(type_, "ul_ho_prep_transfer_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -// ULInformationTransfer ::= SEQUENCE -SRSASN_CODE ul_info_transfer_s::pack(bit_ref& bref) const +// 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_s::unpack(cbit_ref& bref) +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_s::to_json(json_writer& j) const +void ul_info_transfer_irat_r16_s::to_json(json_writer& j) const { j.start_obj(); j.write_fieldname("criticalExtensions"); @@ -11178,20 +14289,20 @@ void ul_info_transfer_s::to_json(json_writer& j) const j.end_obj(); } -void ul_info_transfer_s::crit_exts_c_::set(types::options e) +void ul_info_transfer_irat_r16_s::crit_exts_c_::set(types::options e) { type_ = e; } -ul_info_transfer_s::crit_exts_c_::c1_c_& ul_info_transfer_s::crit_exts_c_::set_c1() +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_s::crit_exts_c_::set_crit_exts_future() +void ul_info_transfer_irat_r16_s::crit_exts_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void ul_info_transfer_s::crit_exts_c_::to_json(json_writer& j) const +void ul_info_transfer_irat_r16_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { @@ -11202,11 +14313,11 @@ void ul_info_transfer_s::crit_exts_c_::to_json(json_writer& j) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ul_info_transfer_irat_r16_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE ul_info_transfer_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE ul_info_transfer_irat_r16_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { @@ -11216,12 +14327,12 @@ SRSASN_CODE ul_info_transfer_s::crit_exts_c_::pack(bit_ref& bref) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_"); + 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_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE ul_info_transfer_irat_r16_s::crit_exts_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -11233,39 +14344,39 @@ SRSASN_CODE ul_info_transfer_s::crit_exts_c_::unpack(cbit_ref& bref) case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_"); + 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_s::crit_exts_c_::c1_c_::set(types::options e) +void ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::set(types::options e) { type_ = e; } -ul_info_transfer_r8_ies_s& ul_info_transfer_s::crit_exts_c_::c1_c_::set_ul_info_transfer_r8() +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_r8); + set(types::ul_info_transfer_irat_r16); return c; } -void ul_info_transfer_s::crit_exts_c_::c1_c_::set_spare3() +void ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::set_spare3() { set(types::spare3); } -void ul_info_transfer_s::crit_exts_c_::c1_c_::set_spare2() +void ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::set_spare2() { set(types::spare2); } -void ul_info_transfer_s::crit_exts_c_::c1_c_::set_spare1() +void ul_info_transfer_irat_r16_s::crit_exts_c_::c1_c_::set_spare1() { set(types::spare1); } -void ul_info_transfer_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +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_r8: - j.write_fieldname("ulInformationTransfer-r8"); + case types::ul_info_transfer_irat_r16: + j.write_fieldname("ulInformationTransferIRAT-r16"); c.to_json(j); break; case types::spare3: @@ -11275,15 +14386,15 @@ void ul_info_transfer_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const 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_"); } j.end_obj(); } -SRSASN_CODE ul_info_transfer_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +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_r8: + case types::ul_info_transfer_irat_r16: HANDLE_CODE(c.pack(bref)); break; case types::spare3: @@ -11293,18 +14404,18 @@ SRSASN_CODE ul_info_transfer_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const 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_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE ul_info_transfer_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +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_r8: + case types::ul_info_transfer_irat_r16: HANDLE_CODE(c.unpack(bref)); break; case types::spare3: @@ -11314,7 +14425,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; @@ -12380,6 +15491,21 @@ void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::destroy_() case types::fail_info_r15: c.destroy(); break; + case types::ul_ded_msg_segment_r16: + c.destroy(); + break; + case types::pur_cfg_request_r16: + c.destroy(); + break; + case types::fail_info_r16: + c.destroy(); + break; + case types::mcg_fail_info_r16: + c.destroy(); + break; + case types::ul_info_transfer_irat_r16: + c.destroy(); + break; default: break; } @@ -12422,15 +15548,20 @@ void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::set(types::options e) case types::fail_info_r15: c.init(); break; - case types::spare5: + case types::ul_ded_msg_segment_r16: + c.init(); break; - case types::spare4: + case types::pur_cfg_request_r16: + c.init(); break; - case types::spare3: + case types::fail_info_r16: + c.init(); break; - case types::spare2: + case types::mcg_fail_info_r16: + c.init(); break; - case types::spare1: + case types::ul_info_transfer_irat_r16: + c.init(); break; case types::nulltype: break; @@ -12475,15 +15606,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()); break; - case types::spare5: + case types::ul_ded_msg_segment_r16: + c.init(other.c.get()); break; - case types::spare4: + case types::pur_cfg_request_r16: + c.init(other.c.get()); break; - case types::spare3: + case types::fail_info_r16: + c.init(other.c.get()); break; - case types::spare2: + case types::mcg_fail_info_r16: + c.init(other.c.get()); break; - case types::spare1: + case types::ul_info_transfer_irat_r16: + c.init(other.c.get()); break; case types::nulltype: break; @@ -12532,15 +15668,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()); break; - case types::spare5: + case types::ul_ded_msg_segment_r16: + c.set(other.c.get()); break; - case types::spare4: + case types::pur_cfg_request_r16: + c.set(other.c.get()); break; - case types::spare3: + case types::fail_info_r16: + c.set(other.c.get()); break; - case types::spare2: + case types::mcg_fail_info_r16: + c.set(other.c.get()); break; - case types::spare1: + case types::ul_info_transfer_irat_r16: + c.set(other.c.get()); break; case types::nulltype: break; @@ -12605,25 +15746,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(); } -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(); } -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(); } -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(); } -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(); } -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(); } void ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_::to_json(json_writer& j) const { @@ -12673,15 +15819,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().to_json(j); break; - case types::spare5: + case types::ul_ded_msg_segment_r16: + j.write_fieldname("ulDedicatedMessageSegment-r16"); + c.get().to_json(j); break; - case types::spare4: + case types::pur_cfg_request_r16: + j.write_fieldname("purConfigurationRequest-r16"); + c.get().to_json(j); break; - case types::spare3: + case types::fail_info_r16: + j.write_fieldname("failureInformation-r16"); + c.get().to_json(j); break; - case types::spare2: + case types::mcg_fail_info_r16: + j.write_fieldname("mcgFailureInformation-r16"); + c.get().to_json(j); break; - case types::spare1: + case types::ul_info_transfer_irat_r16: + j.write_fieldname("ulInformationTransferIRAT-r16"); + c.get().to_json(j); break; default: log_invalid_choice_id(type_, "ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_"); @@ -12725,15 +15881,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().pack(bref)); break; - case types::spare5: + case types::ul_ded_msg_segment_r16: + HANDLE_CODE(c.get().pack(bref)); break; - case types::spare4: + case types::pur_cfg_request_r16: + HANDLE_CODE(c.get().pack(bref)); break; - case types::spare3: + case types::fail_info_r16: + HANDLE_CODE(c.get().pack(bref)); break; - case types::spare2: + case types::mcg_fail_info_r16: + HANDLE_CODE(c.get().pack(bref)); break; - case types::spare1: + case types::ul_info_transfer_irat_r16: + HANDLE_CODE(c.get().pack(bref)); break; default: log_invalid_choice_id(type_, "ul_dcch_msg_type_c::msg_class_ext_c_::c2_c_"); @@ -12780,15 +15941,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().unpack(bref)); break; - case types::spare5: + case types::ul_ded_msg_segment_r16: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::spare4: + case types::pur_cfg_request_r16: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::spare3: + case types::fail_info_r16: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::spare2: + case types::mcg_fail_info_r16: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::spare1: + case types::ul_info_transfer_irat_r16: + HANDLE_CODE(c.get().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 0b0efe7115..a25238124d 100644 --- a/lib/src/asn1/rrc_nbiot.cc +++ b/lib/src/asn1/rrc_nbiot.cc @@ -99,32 +99,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(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(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 @@ -179,6 +219,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 { @@ -1080,6 +1300,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 { @@ -1091,6 +1417,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) @@ -1103,6 +1440,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 @@ -1113,6 +1460,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(); } @@ -1356,6 +1708,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 { @@ -1521,10 +1894,22 @@ 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_"); } -// UL-CarrierConfigDedicated-NB-r13 ::= SEQUENCE -SRSASN_CODE ul_carrier_cfg_ded_nb_r13_s::pack(bit_ref& bref) const +// SR-ProhibitTimerOffset-NB-r17 ::= ENUMERATED +const char* sr_prohibit_timer_offset_nb_r17_opts::to_string() const { - bref.pack(ext, 1); + 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 +{ + bref.pack(ext, 1); HANDLE_CODE(bref.pack(ul_carrier_freq_r13_present, 1)); if (ul_carrier_freq_r13_present) { @@ -1641,6 +2026,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]) { @@ -1651,6 +2038,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; } @@ -1681,7 +2084,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]) { @@ -1694,6 +2097,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; } @@ -1724,6 +2145,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(); } @@ -2023,6 +2451,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 { @@ -2069,6 +2549,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 { @@ -2081,653 +2673,689 @@ int16_t periodic_bsr_timer_nb_r13_opts::to_number() const return map_enum_number(options, 7, value, "periodic_bsr_timer_nb_r13_e"); } -// RetxBSR-Timer-NB-r13 ::= ENUMERATED -const char* retx_bsr_timer_nb_r13_opts::to_string() const +// ResourceReservationConfig-NB-r16 ::= SEQUENCE +SRSASN_CODE res_reserv_cfg_nb_r16_s::pack(bit_ref& bref) const { - static const char* options[] = {"pp4", "pp16", "pp64", "pp128", "pp256", "pp512", "infinity", "spare"}; - return convert_enum_idx(options, 8, value, "retx_bsr_timer_nb_r13_e"); + 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; } -int16_t retx_bsr_timer_nb_r13_opts::to_number() const +SRSASN_CODE res_reserv_cfg_nb_r16_s::unpack(cbit_ref& bref) { - static const int16_t options[] = {4, 16, 64, 128, 256, 512, -1}; - return map_enum_number(options, 7, value, "retx_bsr_timer_nb_r13_e"); -} + 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)); -// SR-SPS-BSR-Config-NB-r15 ::= CHOICE -void sr_sps_bsr_cfg_nb_r15_c::set(types::options e) + return SRSASN_SUCCESS; +} +void res_reserv_cfg_nb_r16_s::to_json(json_writer& j) const { - type_ = e; + 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(); } -void sr_sps_bsr_cfg_nb_r15_c::set_release() + +const char* res_reserv_cfg_nb_r16_s::periodicity_r16_opts::to_string() const { - set(types::release); + 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_"); } -sr_sps_bsr_cfg_nb_r15_c::setup_s_& sr_sps_bsr_cfg_nb_r15_c::set_setup() +uint8_t res_reserv_cfg_nb_r16_s::periodicity_r16_opts::to_number() const { - set(types::setup); - return c; + 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 sr_sps_bsr_cfg_nb_r15_c::to_json(json_writer& j) const + +void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::destroy_() { - j.start_obj(); switch (type_) { - case types::release: + case types::sf_bitmap_r16: + c.destroy(); break; - case types::setup: - j.write_fieldname("setup"); - j.start_obj(); - j.write_str("semiPersistSchedC-RNTI-r15", c.semi_persist_sched_c_rnti_r15.to_string()); - j.write_str("semiPersistSchedIntervalUL-r15", c.semi_persist_sched_interv_ul_r15.to_string()); - j.end_obj(); + case types::slot_cfg_r16: + c.destroy(); break; default: - log_invalid_choice_id(type_, "sr_sps_bsr_cfg_nb_r15_c"); + break; } - j.end_obj(); } -SRSASN_CODE sr_sps_bsr_cfg_nb_r15_c::pack(bit_ref& bref) const +void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::set(types::options e) { - type_.pack(bref); + destroy_(); + type_ = e; switch (type_) { - case types::release: + case types::sf_bitmap_r16: + c.init(); break; - case types::setup: - HANDLE_CODE(c.semi_persist_sched_c_rnti_r15.pack(bref)); - HANDLE_CODE(c.semi_persist_sched_interv_ul_r15.pack(bref)); + case types::slot_cfg_r16: + c.init(); + break; + case types::nulltype: break; default: - log_invalid_choice_id(type_, "sr_sps_bsr_cfg_nb_r15_c"); - return SRSASN_ERROR_ENCODE_FAIL; + log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_"); } - return SRSASN_SUCCESS; } -SRSASN_CODE sr_sps_bsr_cfg_nb_r15_c::unpack(cbit_ref& bref) +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) { - types e; - e.unpack(bref); - set(e); + type_ = other.type(); switch (type_) { - case types::release: + case types::sf_bitmap_r16: + c.init(other.c.get()); break; - case types::setup: - HANDLE_CODE(c.semi_persist_sched_c_rnti_r15.unpack(bref)); - HANDLE_CODE(c.semi_persist_sched_interv_ul_r15.unpack(bref)); + case types::slot_cfg_r16: + c.init(other.c.get()); + break; + case types::nulltype: break; default: - log_invalid_choice_id(type_, "sr_sps_bsr_cfg_nb_r15_c"); - return SRSASN_ERROR_DECODE_FAIL; + log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_"); } - return SRSASN_SUCCESS; } - -const char* sr_sps_bsr_cfg_nb_r15_c::setup_s_::semi_persist_sched_interv_ul_r15_opts::to_string() const -{ - static const char* options[] = {"sf128", "sf256", "sf512", "sf1024", "sf1280", "sf2048", "sf2560", "sf5120"}; - return convert_enum_idx(options, 8, value, "sr_sps_bsr_cfg_nb_r15_c::setup_s_::semi_persist_sched_interv_ul_r15_e_"); -} -uint16_t sr_sps_bsr_cfg_nb_r15_c::setup_s_::semi_persist_sched_interv_ul_r15_opts::to_number() const +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) { - static const uint16_t options[] = {128, 256, 512, 1024, 1280, 2048, 2560, 5120}; - return map_enum_number(options, 8, value, "sr_sps_bsr_cfg_nb_r15_c::setup_s_::semi_persist_sched_interv_ul_r15_e_"); -} + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::sf_bitmap_r16: + c.set(other.c.get()); + break; + case types::slot_cfg_r16: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_"); + } -// SR-WithoutHARQ-ACK-Config-NB-r15 ::= CHOICE -void sr_without_harq_ack_cfg_nb_r15_c::set(types::options e) -{ - type_ = e; + return *this; } -void sr_without_harq_ack_cfg_nb_r15_c::set_release() +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::release); + set(types::sf_bitmap_r16); + return c.get(); } -sr_without_harq_ack_cfg_nb_r15_c::setup_s_& sr_without_harq_ack_cfg_nb_r15_c::set_setup() +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::setup); - return c; + set(types::slot_cfg_r16); + return c.get(); } -void sr_without_harq_ack_cfg_nb_r15_c::to_json(json_writer& j) const +void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::release: + case types::sf_bitmap_r16: + j.write_fieldname("subframeBitmap-r16"); + c.get().to_json(j); break; - case types::setup: - j.write_fieldname("setup"); + case types::slot_cfg_r16: + j.write_fieldname("slotConfig-r16"); j.start_obj(); - if (c.sr_prohibit_timer_r15_present) { - j.write_int("sr-ProhibitTimer-r15", c.sr_prohibit_timer_r15); - } - if (c.sr_nprach_res_r15_present) { - j.write_fieldname("sr-NPRACH-Resource-r15"); - c.sr_nprach_res_r15.to_json(j); - } + j.write_fieldname("slotBitmap-r16"); + c.get().slot_bitmap_r16.to_json(j); + j.write_fieldname("symbolBitmap-r16"); + c.get().symbol_bitmap_r16.to_json(j); j.end_obj(); break; default: - log_invalid_choice_id(type_, "sr_without_harq_ack_cfg_nb_r15_c"); + log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_"); } j.end_obj(); } -SRSASN_CODE sr_without_harq_ack_cfg_nb_r15_c::pack(bit_ref& bref) const +SRSASN_CODE res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::release: + case types::sf_bitmap_r16: + HANDLE_CODE(c.get().pack(bref)); break; - case types::setup: - HANDLE_CODE(bref.pack(c.sr_prohibit_timer_r15_present, 1)); - HANDLE_CODE(bref.pack(c.sr_nprach_res_r15_present, 1)); - if (c.sr_prohibit_timer_r15_present) { - HANDLE_CODE(pack_integer(bref, c.sr_prohibit_timer_r15, (uint8_t)0u, (uint8_t)7u)); - } - if (c.sr_nprach_res_r15_present) { - HANDLE_CODE(c.sr_nprach_res_r15.pack(bref)); - } + case types::slot_cfg_r16: + HANDLE_CODE(c.get().slot_bitmap_r16.pack(bref)); + HANDLE_CODE(c.get().symbol_bitmap_r16.pack(bref)); break; default: - log_invalid_choice_id(type_, "sr_without_harq_ack_cfg_nb_r15_c"); + 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 sr_without_harq_ack_cfg_nb_r15_c::unpack(cbit_ref& bref) +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::release: + case types::sf_bitmap_r16: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::setup: - HANDLE_CODE(bref.unpack(c.sr_prohibit_timer_r15_present, 1)); - HANDLE_CODE(bref.unpack(c.sr_nprach_res_r15_present, 1)); - if (c.sr_prohibit_timer_r15_present) { - HANDLE_CODE(unpack_integer(c.sr_prohibit_timer_r15, bref, (uint8_t)0u, (uint8_t)7u)); - } - if (c.sr_nprach_res_r15_present) { - HANDLE_CODE(c.sr_nprach_res_r15.unpack(bref)); - } + case types::slot_cfg_r16: + HANDLE_CODE(c.get().slot_bitmap_r16.unpack(bref)); + HANDLE_CODE(c.get().symbol_bitmap_r16.unpack(bref)); break; default: - log_invalid_choice_id(type_, "sr_without_harq_ack_cfg_nb_r15_c"); + log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -// SRB-ToAddMod-NB-r13 ::= SEQUENCE -SRSASN_CODE srb_to_add_mod_nb_r13_s::pack(bit_ref& bref) const +void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::destroy_() { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(rlc_cfg_r13_present, 1)); - HANDLE_CODE(bref.pack(lc_ch_cfg_r13_present, 1)); - - if (rlc_cfg_r13_present) { - HANDLE_CODE(rlc_cfg_r13.pack(bref)); - } - if (lc_ch_cfg_r13_present) { - HANDLE_CODE(lc_ch_cfg_r13.pack(bref)); - } - - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= rlc_cfg_v1430.is_present(); - group_flags.pack(bref); - - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(rlc_cfg_v1430.is_present(), 1)); - if (rlc_cfg_v1430.is_present()) { - HANDLE_CODE(rlc_cfg_v1430->pack(bref)); - } - } + switch (type_) { + case types::sf_pattern10ms: + c.destroy >(); + break; + case types::sf_pattern40ms: + c.destroy >(); + break; + default: + break; } - return SRSASN_SUCCESS; } -SRSASN_CODE srb_to_add_mod_nb_r13_s::unpack(cbit_ref& bref) +void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::set(types::options e) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(rlc_cfg_r13_present, 1)); - HANDLE_CODE(bref.unpack(lc_ch_cfg_r13_present, 1)); - - if (rlc_cfg_r13_present) { - HANDLE_CODE(rlc_cfg_r13.unpack(bref)); - } - if (lc_ch_cfg_r13_present) { - HANDLE_CODE(lc_ch_cfg_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); - - bool rlc_cfg_v1430_present; - HANDLE_CODE(bref.unpack(rlc_cfg_v1430_present, 1)); - rlc_cfg_v1430.set_present(rlc_cfg_v1430_present); - if (rlc_cfg_v1430.is_present()) { - HANDLE_CODE(rlc_cfg_v1430->unpack(bref)); - } - } + destroy_(); + type_ = e; + switch (type_) { + case types::sf_pattern10ms: + c.init >(); + break; + case types::sf_pattern40ms: + c.init >(); + 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 SRSASN_SUCCESS; } -void srb_to_add_mod_nb_r13_s::to_json(json_writer& j) const +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) { - j.start_obj(); - if (rlc_cfg_r13_present) { - j.write_fieldname("rlc-Config-r13"); - rlc_cfg_r13.to_json(j); + type_ = other.type(); + switch (type_) { + case types::sf_pattern10ms: + c.init(other.c.get >()); + break; + case types::sf_pattern40ms: + c.init(other.c.get >()); + 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_"); } - if (lc_ch_cfg_r13_present) { - j.write_fieldname("logicalChannelConfig-r13"); - lc_ch_cfg_r13.to_json(j); +} +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; } - if (ext) { - if (rlc_cfg_v1430.is_present()) { - j.write_fieldname("rlc-Config-v1430"); - rlc_cfg_v1430->to_json(j); - } + set(other.type()); + switch (type_) { + case types::sf_pattern10ms: + c.set(other.c.get >()); + break; + case types::sf_pattern40ms: + c.set(other.c.get >()); + 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_"); } - j.end_obj(); -} -void srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::set(types::options e) -{ - type_ = e; + return *this; } -rlc_cfg_nb_r13_c& srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::set_explicit_value() +fixed_bitstring<10>& res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::set_sf_pattern10ms() { - set(types::explicit_value); - return c; + set(types::sf_pattern10ms); + return c.get >(); } -void srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::set_default_value() +fixed_bitstring<40>& res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_::set_sf_pattern40ms() { - set(types::default_value); + set(types::sf_pattern40ms); + return c.get >(); } -void srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::to_json(json_writer& j) const +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::explicit_value: - j.write_fieldname("explicitValue"); - c.to_json(j); + case types::sf_pattern10ms: + j.write_str("subframePattern10ms", c.get >().to_string()); break; - case types::default_value: + case types::sf_pattern40ms: + j.write_str("subframePattern40ms", c.get >().to_string()); break; default: - log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_"); + log_invalid_choice_id(type_, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::sf_bitmap_r16_c_"); } j.end_obj(); } -SRSASN_CODE srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::pack(bit_ref& bref) const +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::explicit_value: - HANDLE_CODE(c.pack(bref)); + case types::sf_pattern10ms: + HANDLE_CODE(c.get >().pack(bref)); break; - case types::default_value: + case types::sf_pattern40ms: + HANDLE_CODE(c.get >().pack(bref)); break; default: - log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_"); + 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 srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::unpack(cbit_ref& bref) +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::explicit_value: - HANDLE_CODE(c.unpack(bref)); + case types::sf_pattern10ms: + HANDLE_CODE(c.get >().unpack(bref)); break; - case types::default_value: + case types::sf_pattern40ms: + HANDLE_CODE(c.get >().unpack(bref)); break; default: - log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_"); + 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* srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::types_opts::to_string() const +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[] = {"explicitValue", "defaultValue"}; - return convert_enum_idx(options, 2, value, "srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::types"); + 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 srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::set(types::options e) +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 >(); + break; + case types::slot_pattern40ms: + c.destroy >(); + 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 >(); + break; + case types::slot_pattern40ms: + c.init >(); + 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_"); + } } -lc_ch_cfg_nb_r13_s& srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::set_explicit_value() +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) { - set(types::explicit_value); - return c; + type_ = other.type(); + switch (type_) { + case types::slot_pattern10ms: + c.init(other.c.get >()); + break; + case types::slot_pattern40ms: + c.init(other.c.get >()); + 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_"); + } } -void srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::set_default_value() +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) { - set(types::default_value); + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::slot_pattern10ms: + c.set(other.c.get >()); + break; + case types::slot_pattern40ms: + c.set(other.c.get >()); + 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; } -void srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::to_json(json_writer& j) const +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<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 >(); +} +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::explicit_value: - j.write_fieldname("explicitValue"); - c.to_json(j); + case types::slot_pattern10ms: + j.write_str("slotPattern10ms", c.get >().to_string()); break; - case types::default_value: + case types::slot_pattern40ms: + j.write_str("slotPattern40ms", c.get >().to_string()); break; default: - log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_"); + 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 srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::pack(bit_ref& bref) const +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::explicit_value: - HANDLE_CODE(c.pack(bref)); + case types::slot_pattern10ms: + HANDLE_CODE(c.get >().pack(bref)); break; - case types::default_value: + case types::slot_pattern40ms: + HANDLE_CODE(c.get >().pack(bref)); break; default: - log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_"); + 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 srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::unpack(cbit_ref& bref) +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::explicit_value: - HANDLE_CODE(c.unpack(bref)); + case types::slot_pattern10ms: + HANDLE_CODE(c.get >().unpack(bref)); break; - case types::default_value: + case types::slot_pattern40ms: + HANDLE_CODE(c.get >().unpack(bref)); break; default: - log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_"); + 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* srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::types_opts::to_string() const +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[] = {"explicitValue", "defaultValue"}; - return convert_enum_idx(options, 2, value, "srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::types"); + 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"); } - -// UplinkPowerControlDedicated-NB-r13 ::= SEQUENCE -SRSASN_CODE ul_pwr_ctrl_ded_nb_r13_s::pack(bit_ref& bref) const +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 { - HANDLE_CODE(pack_integer(bref, p0_ue_npusch_r13, (int8_t)-8, (int8_t)7)); + 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"); +} - return SRSASN_SUCCESS; +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(); + break; + case types::symbol_bitmap_fdd_ul_or_tdd: + c.destroy(); + break; + default: + break; + } } -SRSASN_CODE ul_pwr_ctrl_ded_nb_r13_s::unpack(cbit_ref& bref) +void res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::set(types::options e) { - HANDLE_CODE(unpack_integer(p0_ue_npusch_r13, bref, (int8_t)-8, (int8_t)7)); - - return SRSASN_SUCCESS; + destroy_(); + type_ = e; + switch (type_) { + case types::symbol_bitmap_fdd_dl: + c.init(); + break; + case types::symbol_bitmap_fdd_ul_or_tdd: + c.init(); + 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_"); + } } -void ul_pwr_ctrl_ded_nb_r13_s::to_json(json_writer& j) const +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) { - j.start_obj(); - j.write_int("p0-UE-NPUSCH-r13", p0_ue_npusch_r13); - j.end_obj(); + type_ = other.type(); + switch (type_) { + case types::symbol_bitmap_fdd_dl: + c.init(other.c.get()); + break; + case types::symbol_bitmap_fdd_ul_or_tdd: + c.init(other.c.get()); + 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_"); + } } - -// MAC-MainConfig-NB-r13 ::= SEQUENCE -SRSASN_CODE mac_main_cfg_nb_r13_s::pack(bit_ref& bref) const +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) { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(ul_sch_cfg_r13_present, 1)); - HANDLE_CODE(bref.pack(drx_cfg_r13_present, 1)); - HANDLE_CODE(bref.pack(lc_ch_sr_cfg_r13_present, 1)); - - if (ul_sch_cfg_r13_present) { - HANDLE_CODE(bref.pack(ul_sch_cfg_r13.periodic_bsr_timer_r13_present, 1)); - if (ul_sch_cfg_r13.periodic_bsr_timer_r13_present) { - HANDLE_CODE(ul_sch_cfg_r13.periodic_bsr_timer_r13.pack(bref)); - } - HANDLE_CODE(ul_sch_cfg_r13.retx_bsr_timer_r13.pack(bref)); - } - if (drx_cfg_r13_present) { - HANDLE_CODE(drx_cfg_r13.pack(bref)); - } - HANDLE_CODE(time_align_timer_ded_r13.pack(bref)); - if (lc_ch_sr_cfg_r13_present) { - HANDLE_CODE(lc_ch_sr_cfg_r13.pack(bref)); - } - - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= rai_activation_r14_present; - 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.pack(bref); - - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(rai_activation_r14_present, 1)); - HANDLE_CODE(bref.pack(data_inactivity_timer_cfg_r14.is_present(), 1)); - if (data_inactivity_timer_cfg_r14.is_present()) { - HANDLE_CODE(data_inactivity_timer_cfg_r14->pack(bref)); - } - } - if (group_flags[1]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(drx_cycle_v1430_present, 1)); - if (drx_cycle_v1430_present) { - HANDLE_CODE(drx_cycle_v1430.pack(bref)); - } - } - if (group_flags[2]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(ra_cfra_cfg_r14_present, 1)); - } - } - return SRSASN_SUCCESS; -} -SRSASN_CODE mac_main_cfg_nb_r13_s::unpack(cbit_ref& bref) -{ - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(ul_sch_cfg_r13_present, 1)); - HANDLE_CODE(bref.unpack(drx_cfg_r13_present, 1)); - HANDLE_CODE(bref.unpack(lc_ch_sr_cfg_r13_present, 1)); - - if (ul_sch_cfg_r13_present) { - HANDLE_CODE(bref.unpack(ul_sch_cfg_r13.periodic_bsr_timer_r13_present, 1)); - if (ul_sch_cfg_r13.periodic_bsr_timer_r13_present) { - HANDLE_CODE(ul_sch_cfg_r13.periodic_bsr_timer_r13.unpack(bref)); - } - HANDLE_CODE(ul_sch_cfg_r13.retx_bsr_timer_r13.unpack(bref)); - } - if (drx_cfg_r13_present) { - HANDLE_CODE(drx_cfg_r13.unpack(bref)); - } - HANDLE_CODE(time_align_timer_ded_r13.unpack(bref)); - if (lc_ch_sr_cfg_r13_present) { - HANDLE_CODE(lc_ch_sr_cfg_r13.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(rai_activation_r14_present, 1)); - bool data_inactivity_timer_cfg_r14_present; - HANDLE_CODE(bref.unpack(data_inactivity_timer_cfg_r14_present, 1)); - data_inactivity_timer_cfg_r14.set_present(data_inactivity_timer_cfg_r14_present); - if (data_inactivity_timer_cfg_r14.is_present()) { - HANDLE_CODE(data_inactivity_timer_cfg_r14->unpack(bref)); - } - } - if (group_flags[1]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.unpack(drx_cycle_v1430_present, 1)); - if (drx_cycle_v1430_present) { - HANDLE_CODE(drx_cycle_v1430.unpack(bref)); - } - } - if (group_flags[2]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.unpack(ra_cfra_cfg_r14_present, 1)); - } - } - return SRSASN_SUCCESS; -} -void mac_main_cfg_nb_r13_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (ul_sch_cfg_r13_present) { - j.write_fieldname("ul-SCH-Config-r13"); - j.start_obj(); - if (ul_sch_cfg_r13.periodic_bsr_timer_r13_present) { - j.write_str("periodicBSR-Timer-r13", ul_sch_cfg_r13.periodic_bsr_timer_r13.to_string()); - } - j.write_str("retxBSR-Timer-r13", ul_sch_cfg_r13.retx_bsr_timer_r13.to_string()); - j.end_obj(); - } - if (drx_cfg_r13_present) { - j.write_fieldname("drx-Config-r13"); - drx_cfg_r13.to_json(j); - } - j.write_str("timeAlignmentTimerDedicated-r13", time_align_timer_ded_r13.to_string()); - if (lc_ch_sr_cfg_r13_present) { - j.write_fieldname("logicalChannelSR-Config-r13"); - lc_ch_sr_cfg_r13.to_json(j); + if (this == &other) { + return *this; } - if (ext) { - if (rai_activation_r14_present) { - j.write_str("rai-Activation-r14", "true"); - } - if (data_inactivity_timer_cfg_r14.is_present()) { - j.write_fieldname("dataInactivityTimerConfig-r14"); - data_inactivity_timer_cfg_r14->to_json(j); - } - if (drx_cycle_v1430_present) { - j.write_str("drx-Cycle-v1430", drx_cycle_v1430.to_string()); - } - if (ra_cfra_cfg_r14_present) { - j.write_str("ra-CFRA-Config-r14", "true"); - } + set(other.type()); + switch (type_) { + case types::symbol_bitmap_fdd_dl: + c.set(other.c.get()); + break; + case types::symbol_bitmap_fdd_ul_or_tdd: + c.set(other.c.get()); + 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_"); } - j.end_obj(); -} -void mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::set(types::options e) -{ - type_ = e; + return *this; } -void mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::set_release() +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::release); + set(types::symbol_bitmap_fdd_dl); + return c.get(); } -mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::setup_s_& mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::set_setup() +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::setup); - return c; + set(types::symbol_bitmap_fdd_ul_or_tdd); + return c.get(); } -void mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::to_json(json_writer& j) const +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::release: + case types::symbol_bitmap_fdd_dl: + j.write_fieldname("symbolBitmapFddDl"); + j.start_obj(); + if (c.get().symbol_bitmap1_r16_present) { + j.write_str("symbolBitmap1-r16", c.get().symbol_bitmap1_r16.to_string()); + } + if (c.get().symbol_bitmap2_r16_present) { + j.write_str("symbolBitmap2-r16", c.get().symbol_bitmap2_r16.to_string()); + } + j.end_obj(); break; - case types::setup: - j.write_fieldname("setup"); + case types::symbol_bitmap_fdd_ul_or_tdd: + j.write_fieldname("symbolBitmapFddUlOrTdd"); j.start_obj(); - j.write_str("logicalChannelSR-ProhibitTimer-r13", c.lc_ch_sr_prohibit_timer_r13.to_string()); + if (c.get().symbol_bitmap1_r16_present) { + j.write_str("symbolBitmap1-r16", c.get().symbol_bitmap1_r16.to_string()); + } + if (c.get().symbol_bitmap2_r16_present) { + j.write_str("symbolBitmap2-r16", c.get().symbol_bitmap2_r16.to_string()); + } j.end_obj(); break; default: - log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_"); + 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 mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::pack(bit_ref& bref) const +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::release: + case types::symbol_bitmap_fdd_dl: + HANDLE_CODE(bref.pack(c.get().symbol_bitmap1_r16_present, 1)); + HANDLE_CODE(bref.pack(c.get().symbol_bitmap2_r16_present, 1)); + if (c.get().symbol_bitmap1_r16_present) { + HANDLE_CODE(c.get().symbol_bitmap1_r16.pack(bref)); + } + if (c.get().symbol_bitmap2_r16_present) { + HANDLE_CODE(c.get().symbol_bitmap2_r16.pack(bref)); + } break; - case types::setup: - HANDLE_CODE(c.lc_ch_sr_prohibit_timer_r13.pack(bref)); + case types::symbol_bitmap_fdd_ul_or_tdd: + HANDLE_CODE(bref.pack(c.get().symbol_bitmap1_r16_present, 1)); + HANDLE_CODE(bref.pack(c.get().symbol_bitmap2_r16_present, 1)); + if (c.get().symbol_bitmap1_r16_present) { + HANDLE_CODE(c.get().symbol_bitmap1_r16.pack(bref)); + } + if (c.get().symbol_bitmap2_r16_present) { + HANDLE_CODE(c.get().symbol_bitmap2_r16.pack(bref)); + } break; default: - log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_"); + 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 mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::unpack(cbit_ref& bref) +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::release: + case types::symbol_bitmap_fdd_dl: + HANDLE_CODE(bref.unpack(c.get().symbol_bitmap1_r16_present, 1)); + HANDLE_CODE(bref.unpack(c.get().symbol_bitmap2_r16_present, 1)); + if (c.get().symbol_bitmap1_r16_present) { + HANDLE_CODE(c.get().symbol_bitmap1_r16.unpack(bref)); + } + if (c.get().symbol_bitmap2_r16_present) { + HANDLE_CODE(c.get().symbol_bitmap2_r16.unpack(bref)); + } break; - case types::setup: - HANDLE_CODE(c.lc_ch_sr_prohibit_timer_r13.unpack(bref)); + case types::symbol_bitmap_fdd_ul_or_tdd: + HANDLE_CODE(bref.unpack(c.get().symbol_bitmap1_r16_present, 1)); + HANDLE_CODE(bref.unpack(c.get().symbol_bitmap2_r16_present, 1)); + if (c.get().symbol_bitmap1_r16_present) { + HANDLE_CODE(c.get().symbol_bitmap1_r16.unpack(bref)); + } + if (c.get().symbol_bitmap2_r16_present) { + HANDLE_CODE(c.get().symbol_bitmap2_r16.unpack(bref)); + } break; default: - log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_"); + 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* mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::setup_s_::lc_ch_sr_prohibit_timer_r13_opts::to_string() const +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[] = {"pp2", "pp8", "pp32", "pp128", "pp512", "pp1024", "pp2048", "spare"}; + static const char* options[] = {"symbolBitmapFddDl", "symbolBitmapFddUlOrTdd"}; return convert_enum_idx( - options, 8, value, "mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::setup_s_::lc_ch_sr_prohibit_timer_r13_e_"); + options, 2, value, "res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::slot_cfg_r16_s_::symbol_bitmap_r16_c_::types"); } -uint16_t mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::setup_s_::lc_ch_sr_prohibit_timer_r13_opts::to_number() const + +const char* res_reserv_cfg_nb_r16_s::res_reserv_r16_c_::types_opts::to_string() const { - static const uint16_t options[] = {2, 8, 32, 128, 512, 1024, 2048}; - return map_enum_number( - options, 7, value, "mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::setup_s_::lc_ch_sr_prohibit_timer_r13_e_"); + 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"); } -void mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::set(types::options e) +// RetxBSR-Timer-NB-r13 ::= ENUMERATED +const char* retx_bsr_timer_nb_r13_opts::to_string() const +{ + static const char* options[] = {"pp4", "pp16", "pp64", "pp128", "pp256", "pp512", "infinity", "spare"}; + return convert_enum_idx(options, 8, value, "retx_bsr_timer_nb_r13_e"); +} +int16_t retx_bsr_timer_nb_r13_opts::to_number() const +{ + static const int16_t options[] = {4, 16, 64, 128, 256, 512, -1}; + return map_enum_number(options, 7, value, "retx_bsr_timer_nb_r13_e"); +} + +// SR-SPS-BSR-Config-NB-r15 ::= CHOICE +void sr_sps_bsr_cfg_nb_r15_c::set(types::options e) { type_ = e; } -void mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::set_release() +void sr_sps_bsr_cfg_nb_r15_c::set_release() { set(types::release); } -mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::setup_s_& -mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::set_setup() +sr_sps_bsr_cfg_nb_r15_c::setup_s_& sr_sps_bsr_cfg_nb_r15_c::set_setup() { set(types::setup); return c; } -void mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::to_json(json_writer& j) const +void sr_sps_bsr_cfg_nb_r15_c::to_json(json_writer& j) const { j.start_obj(); switch (type_) { @@ -2736,30 +3364,32 @@ void mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::to_json(json_write case types::setup: j.write_fieldname("setup"); j.start_obj(); - j.write_str("dataInactivityTimer-r14", c.data_inactivity_timer_r14.to_string()); + j.write_str("semiPersistSchedC-RNTI-r15", c.semi_persist_sched_c_rnti_r15.to_string()); + j.write_str("semiPersistSchedIntervalUL-r15", c.semi_persist_sched_interv_ul_r15.to_string()); j.end_obj(); break; default: - log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_"); + log_invalid_choice_id(type_, "sr_sps_bsr_cfg_nb_r15_c"); } j.end_obj(); } -SRSASN_CODE mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::pack(bit_ref& bref) const +SRSASN_CODE sr_sps_bsr_cfg_nb_r15_c::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { case types::release: break; case types::setup: - HANDLE_CODE(c.data_inactivity_timer_r14.pack(bref)); + HANDLE_CODE(c.semi_persist_sched_c_rnti_r15.pack(bref)); + HANDLE_CODE(c.semi_persist_sched_interv_ul_r15.pack(bref)); break; default: - log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_"); + log_invalid_choice_id(type_, "sr_sps_bsr_cfg_nb_r15_c"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::unpack(cbit_ref& bref) +SRSASN_CODE sr_sps_bsr_cfg_nb_r15_c::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -2768,1899 +3398,2274 @@ SRSASN_CODE mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::unpack(cbit case types::release: break; case types::setup: - HANDLE_CODE(c.data_inactivity_timer_r14.unpack(bref)); + HANDLE_CODE(c.semi_persist_sched_c_rnti_r15.unpack(bref)); + HANDLE_CODE(c.semi_persist_sched_interv_ul_r15.unpack(bref)); break; default: - log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_"); + log_invalid_choice_id(type_, "sr_sps_bsr_cfg_nb_r15_c"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* mac_main_cfg_nb_r13_s::drx_cycle_v1430_opts::to_string() const +const char* sr_sps_bsr_cfg_nb_r15_c::setup_s_::semi_persist_sched_interv_ul_r15_opts::to_string() const { - static const char* options[] = {"sf1280", "sf2560", "sf5120", "sf10240"}; - return convert_enum_idx(options, 4, value, "mac_main_cfg_nb_r13_s::drx_cycle_v1430_e_"); + static const char* options[] = {"sf128", "sf256", "sf512", "sf1024", "sf1280", "sf2048", "sf2560", "sf5120"}; + return convert_enum_idx(options, 8, value, "sr_sps_bsr_cfg_nb_r15_c::setup_s_::semi_persist_sched_interv_ul_r15_e_"); } -uint16_t mac_main_cfg_nb_r13_s::drx_cycle_v1430_opts::to_number() const +uint16_t sr_sps_bsr_cfg_nb_r15_c::setup_s_::semi_persist_sched_interv_ul_r15_opts::to_number() const { - static const uint16_t options[] = {1280, 2560, 5120, 10240}; - return map_enum_number(options, 4, value, "mac_main_cfg_nb_r13_s::drx_cycle_v1430_e_"); + static const uint16_t options[] = {128, 256, 512, 1024, 1280, 2048, 2560, 5120}; + return map_enum_number(options, 8, value, "sr_sps_bsr_cfg_nb_r15_c::setup_s_::semi_persist_sched_interv_ul_r15_e_"); } -// PhysicalConfigDedicated-NB-r13 ::= SEQUENCE -SRSASN_CODE phys_cfg_ded_nb_r13_s::pack(bit_ref& bref) const +// SR-WithoutHARQ-ACK-Config-NB-r15 ::= CHOICE +void sr_without_harq_ack_cfg_nb_r15_c::set(types::options e) { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(carrier_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.pack(npdcch_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.pack(npusch_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.pack(ul_pwr_ctrl_ded_r13_present, 1)); + type_ = e; +} +void sr_without_harq_ack_cfg_nb_r15_c::set_release() +{ + set(types::release); +} +sr_without_harq_ack_cfg_nb_r15_c::setup_s_& sr_without_harq_ack_cfg_nb_r15_c::set_setup() +{ + set(types::setup); + return c; +} +void sr_without_harq_ack_cfg_nb_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(); + if (c.sr_prohibit_timer_r15_present) { + j.write_int("sr-ProhibitTimer-r15", c.sr_prohibit_timer_r15); + } + if (c.sr_nprach_res_r15_present) { + j.write_fieldname("sr-NPRACH-Resource-r15"); + c.sr_nprach_res_r15.to_json(j); + } + j.end_obj(); + break; + default: + log_invalid_choice_id(type_, "sr_without_harq_ack_cfg_nb_r15_c"); + } + j.end_obj(); +} +SRSASN_CODE sr_without_harq_ack_cfg_nb_r15_c::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::release: + break; + case types::setup: + HANDLE_CODE(bref.pack(c.sr_prohibit_timer_r15_present, 1)); + HANDLE_CODE(bref.pack(c.sr_nprach_res_r15_present, 1)); + if (c.sr_prohibit_timer_r15_present) { + HANDLE_CODE(pack_integer(bref, c.sr_prohibit_timer_r15, (uint8_t)0u, (uint8_t)7u)); + } + if (c.sr_nprach_res_r15_present) { + HANDLE_CODE(c.sr_nprach_res_r15.pack(bref)); + } + break; + default: + log_invalid_choice_id(type_, "sr_without_harq_ack_cfg_nb_r15_c"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE sr_without_harq_ack_cfg_nb_r15_c::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::release: + break; + case types::setup: + HANDLE_CODE(bref.unpack(c.sr_prohibit_timer_r15_present, 1)); + HANDLE_CODE(bref.unpack(c.sr_nprach_res_r15_present, 1)); + if (c.sr_prohibit_timer_r15_present) { + HANDLE_CODE(unpack_integer(c.sr_prohibit_timer_r15, bref, (uint8_t)0u, (uint8_t)7u)); + } + if (c.sr_nprach_res_r15_present) { + HANDLE_CODE(c.sr_nprach_res_r15.unpack(bref)); + } + break; + default: + log_invalid_choice_id(type_, "sr_without_harq_ack_cfg_nb_r15_c"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} - if (carrier_cfg_ded_r13_present) { - HANDLE_CODE(carrier_cfg_ded_r13.pack(bref)); +// 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)); } - if (npdcch_cfg_ded_r13_present) { - HANDLE_CODE(npdcch_cfg_ded_r13.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)); } - if (npusch_cfg_ded_r13_present) { - HANDLE_CODE(npusch_cfg_ded_r13.pack(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); } - if (ul_pwr_ctrl_ded_r13_present) { - HANDLE_CODE(ul_pwr_ctrl_ded_r13.pack(bref)); + j.end_obj(); +} + +// SRB-ToAddMod-NB-r13 ::= SEQUENCE +SRSASN_CODE srb_to_add_mod_nb_r13_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(rlc_cfg_r13_present, 1)); + HANDLE_CODE(bref.pack(lc_ch_cfg_r13_present, 1)); + + if (rlc_cfg_r13_present) { + HANDLE_CODE(rlc_cfg_r13.pack(bref)); + } + if (lc_ch_cfg_r13_present) { + HANDLE_CODE(lc_ch_cfg_r13.pack(bref)); } if (ext) { ext_groups_packer_guard group_flags; - group_flags[0] |= two_harq_processes_cfg_r14_present; - 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[0] |= rlc_cfg_v1430.is_present(); + group_flags[1] |= rlc_cfg_v1700.is_present(); group_flags.pack(bref); if (group_flags[0]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(two_harq_processes_cfg_r14_present, 1)); + HANDLE_CODE(bref.pack(rlc_cfg_v1430.is_present(), 1)); + if (rlc_cfg_v1430.is_present()) { + HANDLE_CODE(rlc_cfg_v1430->pack(bref)); + } } if (group_flags[1]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(interference_randomisation_cfg_r14_present, 1)); - } - if (group_flags[2]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(npdcch_cfg_ded_v1530.is_present(), 1)); - if (npdcch_cfg_ded_v1530.is_present()) { - HANDLE_CODE(npdcch_cfg_ded_v1530->pack(bref)); + HANDLE_CODE(bref.pack(rlc_cfg_v1700.is_present(), 1)); + if (rlc_cfg_v1700.is_present()) { + HANDLE_CODE(rlc_cfg_v1700->pack(bref)); } } - if (group_flags[3]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(add_tx_sib1_cfg_v1540_present, 1)); - } } return SRSASN_SUCCESS; } -SRSASN_CODE phys_cfg_ded_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE srb_to_add_mod_nb_r13_s::unpack(cbit_ref& bref) { bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(carrier_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.unpack(npdcch_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.unpack(npusch_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.unpack(ul_pwr_ctrl_ded_r13_present, 1)); + HANDLE_CODE(bref.unpack(rlc_cfg_r13_present, 1)); + HANDLE_CODE(bref.unpack(lc_ch_cfg_r13_present, 1)); - if (carrier_cfg_ded_r13_present) { - HANDLE_CODE(carrier_cfg_ded_r13.unpack(bref)); - } - if (npdcch_cfg_ded_r13_present) { - HANDLE_CODE(npdcch_cfg_ded_r13.unpack(bref)); - } - if (npusch_cfg_ded_r13_present) { - HANDLE_CODE(npusch_cfg_ded_r13.unpack(bref)); + if (rlc_cfg_r13_present) { + HANDLE_CODE(rlc_cfg_r13.unpack(bref)); } - if (ul_pwr_ctrl_ded_r13_present) { - HANDLE_CODE(ul_pwr_ctrl_ded_r13.unpack(bref)); + if (lc_ch_cfg_r13_present) { + HANDLE_CODE(lc_ch_cfg_r13.unpack(bref)); } if (ext) { - ext_groups_unpacker_guard group_flags(4); + ext_groups_unpacker_guard group_flags(2); group_flags.unpack(bref); if (group_flags[0]) { varlength_field_unpack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.unpack(two_harq_processes_cfg_r14_present, 1)); + bool rlc_cfg_v1430_present; + HANDLE_CODE(bref.unpack(rlc_cfg_v1430_present, 1)); + rlc_cfg_v1430.set_present(rlc_cfg_v1430_present); + if (rlc_cfg_v1430.is_present()) { + HANDLE_CODE(rlc_cfg_v1430->unpack(bref)); + } } if (group_flags[1]) { varlength_field_unpack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.unpack(interference_randomisation_cfg_r14_present, 1)); - } - if (group_flags[2]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - bool npdcch_cfg_ded_v1530_present; - HANDLE_CODE(bref.unpack(npdcch_cfg_ded_v1530_present, 1)); - npdcch_cfg_ded_v1530.set_present(npdcch_cfg_ded_v1530_present); - if (npdcch_cfg_ded_v1530.is_present()) { - HANDLE_CODE(npdcch_cfg_ded_v1530->unpack(bref)); + 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)); } } - if (group_flags[3]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.unpack(add_tx_sib1_cfg_v1540_present, 1)); - } } return SRSASN_SUCCESS; } -void phys_cfg_ded_nb_r13_s::to_json(json_writer& j) const +void srb_to_add_mod_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - if (carrier_cfg_ded_r13_present) { - j.write_fieldname("carrierConfigDedicated-r13"); - carrier_cfg_ded_r13.to_json(j); - } - if (npdcch_cfg_ded_r13_present) { - j.write_fieldname("npdcch-ConfigDedicated-r13"); - npdcch_cfg_ded_r13.to_json(j); - } - if (npusch_cfg_ded_r13_present) { - j.write_fieldname("npusch-ConfigDedicated-r13"); - npusch_cfg_ded_r13.to_json(j); + if (rlc_cfg_r13_present) { + j.write_fieldname("rlc-Config-r13"); + rlc_cfg_r13.to_json(j); } - if (ul_pwr_ctrl_ded_r13_present) { - j.write_fieldname("uplinkPowerControlDedicated-r13"); - ul_pwr_ctrl_ded_r13.to_json(j); + if (lc_ch_cfg_r13_present) { + j.write_fieldname("logicalChannelConfig-r13"); + lc_ch_cfg_r13.to_json(j); } if (ext) { - if (two_harq_processes_cfg_r14_present) { - j.write_str("twoHARQ-ProcessesConfig-r14", "true"); - } - if (interference_randomisation_cfg_r14_present) { - j.write_str("interferenceRandomisationConfig-r14", "true"); - } - if (npdcch_cfg_ded_v1530.is_present()) { - j.write_fieldname("npdcch-ConfigDedicated-v1530"); - npdcch_cfg_ded_v1530->to_json(j); + if (rlc_cfg_v1430.is_present()) { + j.write_fieldname("rlc-Config-v1430"); + rlc_cfg_v1430->to_json(j); } - if (add_tx_sib1_cfg_v1540_present) { - j.write_str("additionalTxSIB1-Config-v1540", "true"); + if (rlc_cfg_v1700.is_present()) { + j.write_fieldname("rlc-Config-v1700"); + rlc_cfg_v1700->to_json(j); } } j.end_obj(); } -// RLF-TimersAndConstants-NB-r13 ::= CHOICE -void rlf_timers_and_consts_nb_r13_c::set(types::options e) +void srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::set(types::options e) { type_ = e; } -void rlf_timers_and_consts_nb_r13_c::set_release() +rlc_cfg_nb_r13_c& srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::set_explicit_value() { - set(types::release); + set(types::explicit_value); + return c; } -rlf_timers_and_consts_nb_r13_c::setup_s_& rlf_timers_and_consts_nb_r13_c::set_setup() +void srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::set_default_value() { - set(types::setup); - return c; + set(types::default_value); } -void rlf_timers_and_consts_nb_r13_c::to_json(json_writer& j) const +void srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::release: - break; - case types::setup: - j.write_fieldname("setup"); + case types::explicit_value: + j.write_fieldname("explicitValue"); c.to_json(j); break; + case types::default_value: + break; default: - log_invalid_choice_id(type_, "rlf_timers_and_consts_nb_r13_c"); + log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_"); } j.end_obj(); } -SRSASN_CODE rlf_timers_and_consts_nb_r13_c::pack(bit_ref& bref) const +SRSASN_CODE srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::release: - break; - case types::setup: + case types::explicit_value: HANDLE_CODE(c.pack(bref)); break; + case types::default_value: + break; default: - log_invalid_choice_id(type_, "rlf_timers_and_consts_nb_r13_c"); + log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rlf_timers_and_consts_nb_r13_c::unpack(cbit_ref& bref) +SRSASN_CODE srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::release: - break; - case types::setup: + case types::explicit_value: HANDLE_CODE(c.unpack(bref)); break; + case types::default_value: + break; default: - log_invalid_choice_id(type_, "rlf_timers_and_consts_nb_r13_c"); + log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rlf_timers_and_consts_nb_r13_c::setup_s_::pack(bit_ref& bref) const +const char* srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::types_opts::to_string() const { - bref.pack(ext, 1); - HANDLE_CODE(t301_r13.pack(bref)); - HANDLE_CODE(t310_r13.pack(bref)); - HANDLE_CODE(n310_r13.pack(bref)); - HANDLE_CODE(t311_r13.pack(bref)); - HANDLE_CODE(n311_r13.pack(bref)); - - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= t311_v1350_present; - group_flags[1] |= t301_v1530_present; - group_flags[1] |= t311_v1530_present; - group_flags.pack(bref); - - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(t311_v1350_present, 1)); - if (t311_v1350_present) { - HANDLE_CODE(t311_v1350.pack(bref)); - } - } - if (group_flags[1]) { - varlength_field_pack_guard varlen_scope(bref, false); + static const char* options[] = {"explicitValue", "defaultValue"}; + return convert_enum_idx(options, 2, value, "srb_to_add_mod_nb_r13_s::rlc_cfg_r13_c_::types"); +} - HANDLE_CODE(bref.pack(t301_v1530_present, 1)); - HANDLE_CODE(bref.pack(t311_v1530_present, 1)); - if (t301_v1530_present) { - HANDLE_CODE(t301_v1530.pack(bref)); - } - if (t311_v1530_present) { - HANDLE_CODE(t311_v1530.pack(bref)); - } - } - } - return SRSASN_SUCCESS; +void srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::set(types::options e) +{ + type_ = e; } -SRSASN_CODE rlf_timers_and_consts_nb_r13_c::setup_s_::unpack(cbit_ref& bref) +lc_ch_cfg_nb_r13_s& srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::set_explicit_value() { - bref.unpack(ext, 1); - HANDLE_CODE(t301_r13.unpack(bref)); - HANDLE_CODE(t310_r13.unpack(bref)); - HANDLE_CODE(n310_r13.unpack(bref)); - HANDLE_CODE(t311_r13.unpack(bref)); - HANDLE_CODE(n311_r13.unpack(bref)); - - if (ext) { - ext_groups_unpacker_guard group_flags(2); - group_flags.unpack(bref); - - if (group_flags[0]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.unpack(t311_v1350_present, 1)); - if (t311_v1350_present) { - HANDLE_CODE(t311_v1350.unpack(bref)); - } - } - if (group_flags[1]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.unpack(t301_v1530_present, 1)); - HANDLE_CODE(bref.unpack(t311_v1530_present, 1)); - if (t301_v1530_present) { - HANDLE_CODE(t301_v1530.unpack(bref)); - } - if (t311_v1530_present) { - HANDLE_CODE(t311_v1530.unpack(bref)); - } - } - } - return SRSASN_SUCCESS; + set(types::explicit_value); + return c; } -void rlf_timers_and_consts_nb_r13_c::setup_s_::to_json(json_writer& j) const +void srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::set_default_value() +{ + set(types::default_value); +} +void srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::to_json(json_writer& j) const { j.start_obj(); - j.write_str("t301-r13", t301_r13.to_string()); - j.write_str("t310-r13", t310_r13.to_string()); - j.write_str("n310-r13", n310_r13.to_string()); - j.write_str("t311-r13", t311_r13.to_string()); - j.write_str("n311-r13", n311_r13.to_string()); - if (ext) { - if (t311_v1350_present) { - j.write_str("t311-v1350", t311_v1350.to_string()); - } - if (t301_v1530_present) { - j.write_str("t301-v1530", t301_v1530.to_string()); - } - if (t311_v1530_present) { - j.write_str("t311-v1530", t311_v1530.to_string()); - } + switch (type_) { + case types::explicit_value: + j.write_fieldname("explicitValue"); + c.to_json(j); + break; + case types::default_value: + break; + default: + log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_"); } j.end_obj(); } - -const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t301_r13_opts::to_string() const +SRSASN_CODE srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::pack(bit_ref& bref) const { - static const char* options[] = {"ms2500", "ms4000", "ms6000", "ms10000", "ms15000", "ms25000", "ms40000", "ms60000"}; - return convert_enum_idx(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t301_r13_e_"); + type_.pack(bref); + switch (type_) { + case types::explicit_value: + HANDLE_CODE(c.pack(bref)); + break; + case types::default_value: + break; + default: + log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; } -uint16_t rlf_timers_and_consts_nb_r13_c::setup_s_::t301_r13_opts::to_number() const +SRSASN_CODE srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::unpack(cbit_ref& bref) { - static const uint16_t options[] = {2500, 4000, 6000, 10000, 15000, 25000, 40000, 60000}; - return map_enum_number(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t301_r13_e_"); + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::explicit_value: + HANDLE_CODE(c.unpack(bref)); + break; + case types::default_value: + break; + default: + log_invalid_choice_id(type_, "srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; } -const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t310_r13_opts::to_string() const -{ - static const char* options[] = {"ms0", "ms200", "ms500", "ms1000", "ms2000", "ms4000", "ms8000"}; - return convert_enum_idx(options, 7, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t310_r13_e_"); -} -uint16_t rlf_timers_and_consts_nb_r13_c::setup_s_::t310_r13_opts::to_number() const +const char* srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::types_opts::to_string() const { - static const uint16_t options[] = {0, 200, 500, 1000, 2000, 4000, 8000}; - return map_enum_number(options, 7, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t310_r13_e_"); + static const char* options[] = {"explicitValue", "defaultValue"}; + return convert_enum_idx(options, 2, value, "srb_to_add_mod_nb_r13_s::lc_ch_cfg_r13_c_::types"); } -const char* rlf_timers_and_consts_nb_r13_c::setup_s_::n310_r13_opts::to_string() const -{ - static const char* options[] = {"n1", "n2", "n3", "n4", "n6", "n8", "n10", "n20"}; - return convert_enum_idx(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::n310_r13_e_"); -} -uint8_t rlf_timers_and_consts_nb_r13_c::setup_s_::n310_r13_opts::to_number() const +// UplinkPowerControlDedicated-NB-r13 ::= SEQUENCE +SRSASN_CODE ul_pwr_ctrl_ded_nb_r13_s::pack(bit_ref& bref) const { - static const uint8_t options[] = {1, 2, 3, 4, 6, 8, 10, 20}; - return map_enum_number(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::n310_r13_e_"); -} + HANDLE_CODE(pack_integer(bref, p0_ue_npusch_r13, (int8_t)-8, (int8_t)7)); -const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t311_r13_opts::to_string() const -{ - static const char* options[] = {"ms1000", "ms3000", "ms5000", "ms10000", "ms15000", "ms20000", "ms30000"}; - return convert_enum_idx(options, 7, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_r13_e_"); + return SRSASN_SUCCESS; } -uint16_t rlf_timers_and_consts_nb_r13_c::setup_s_::t311_r13_opts::to_number() const +SRSASN_CODE ul_pwr_ctrl_ded_nb_r13_s::unpack(cbit_ref& bref) { - static const uint16_t options[] = {1000, 3000, 5000, 10000, 15000, 20000, 30000}; - return map_enum_number(options, 7, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_r13_e_"); -} + HANDLE_CODE(unpack_integer(p0_ue_npusch_r13, bref, (int8_t)-8, (int8_t)7)); -const char* rlf_timers_and_consts_nb_r13_c::setup_s_::n311_r13_opts::to_string() const -{ - static const char* options[] = {"n1", "n2", "n3", "n4", "n5", "n6", "n8", "n10"}; - return convert_enum_idx(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::n311_r13_e_"); + return SRSASN_SUCCESS; } -uint8_t rlf_timers_and_consts_nb_r13_c::setup_s_::n311_r13_opts::to_number() const +void ul_pwr_ctrl_ded_nb_r13_s::to_json(json_writer& j) const { - static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10}; - return map_enum_number(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::n311_r13_e_"); + j.start_obj(); + j.write_int("p0-UE-NPUSCH-r13", p0_ue_npusch_r13); + j.end_obj(); } -const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1350_opts::to_string() const +// UplinkPowerControlDedicated-NB-v1700 ::= SEQUENCE +SRSASN_CODE ul_pwr_ctrl_ded_nb_v1700_s::pack(bit_ref& bref) const { - static const char* options[] = {"ms40000", "ms60000", "ms90000", "ms120000"}; - return convert_enum_idx(options, 4, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1350_e_"); + HANDLE_CODE(delta_mcs_enabled_r17.pack(bref)); + + return SRSASN_SUCCESS; } -uint32_t rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1350_opts::to_number() const +SRSASN_CODE ul_pwr_ctrl_ded_nb_v1700_s::unpack(cbit_ref& bref) { - static const uint32_t options[] = {40000, 60000, 90000, 120000}; - return map_enum_number(options, 4, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1350_e_"); -} + HANDLE_CODE(delta_mcs_enabled_r17.unpack(bref)); -const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t301_v1530_opts::to_string() const -{ - static const char* options[] = {"ms80000", "ms100000", "ms120000"}; - return convert_enum_idx(options, 3, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t301_v1530_e_"); + return SRSASN_SUCCESS; } -uint32_t rlf_timers_and_consts_nb_r13_c::setup_s_::t301_v1530_opts::to_number() const +void ul_pwr_ctrl_ded_nb_v1700_s::to_json(json_writer& j) const { - static const uint32_t options[] = {80000, 100000, 120000}; - return map_enum_number(options, 3, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t301_v1530_e_"); + j.start_obj(); + j.write_str("deltaMCS-Enabled-r17", delta_mcs_enabled_r17.to_string()); + j.end_obj(); } -const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1530_opts::to_string() const +const char* ul_pwr_ctrl_ded_nb_v1700_s::delta_mcs_enabled_r17_opts::to_string() const { - static const char* options[] = {"ms160000", "ms200000"}; - return convert_enum_idx(options, 2, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1530_e_"); + 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_"); } -uint32_t rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1530_opts::to_number() const +uint8_t ul_pwr_ctrl_ded_nb_v1700_s::delta_mcs_enabled_r17_opts::to_number() const { - static const uint32_t options[] = {160000, 200000}; - return map_enum_number(options, 2, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1530_e_"); + 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_"); } -// SchedulingRequestConfig-NB-r15 ::= SEQUENCE -SRSASN_CODE sched_request_cfg_nb_r15_s::pack(bit_ref& bref) const +// MAC-MainConfig-NB-r13 ::= SEQUENCE +SRSASN_CODE mac_main_cfg_nb_r13_s::pack(bit_ref& bref) const { bref.pack(ext, 1); - HANDLE_CODE(bref.pack(sr_with_harq_ack_cfg_r15_present, 1)); - HANDLE_CODE(bref.pack(sr_without_harq_ack_cfg_r15_present, 1)); - HANDLE_CODE(bref.pack(sr_sps_bsr_cfg_r15_present, 1)); + HANDLE_CODE(bref.pack(ul_sch_cfg_r13_present, 1)); + HANDLE_CODE(bref.pack(drx_cfg_r13_present, 1)); + HANDLE_CODE(bref.pack(lc_ch_sr_cfg_r13_present, 1)); - if (sr_without_harq_ack_cfg_r15_present) { - HANDLE_CODE(sr_without_harq_ack_cfg_r15.pack(bref)); + if (ul_sch_cfg_r13_present) { + HANDLE_CODE(bref.pack(ul_sch_cfg_r13.periodic_bsr_timer_r13_present, 1)); + if (ul_sch_cfg_r13.periodic_bsr_timer_r13_present) { + HANDLE_CODE(ul_sch_cfg_r13.periodic_bsr_timer_r13.pack(bref)); + } + HANDLE_CODE(ul_sch_cfg_r13.retx_bsr_timer_r13.pack(bref)); } - if (sr_sps_bsr_cfg_r15_present) { - HANDLE_CODE(sr_sps_bsr_cfg_r15.pack(bref)); - } - - return SRSASN_SUCCESS; -} -SRSASN_CODE sched_request_cfg_nb_r15_s::unpack(cbit_ref& bref) -{ - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(sr_with_harq_ack_cfg_r15_present, 1)); - HANDLE_CODE(bref.unpack(sr_without_harq_ack_cfg_r15_present, 1)); - HANDLE_CODE(bref.unpack(sr_sps_bsr_cfg_r15_present, 1)); - - if (sr_without_harq_ack_cfg_r15_present) { - HANDLE_CODE(sr_without_harq_ack_cfg_r15.unpack(bref)); - } - if (sr_sps_bsr_cfg_r15_present) { - HANDLE_CODE(sr_sps_bsr_cfg_r15.unpack(bref)); - } - - return SRSASN_SUCCESS; -} -void sched_request_cfg_nb_r15_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (sr_with_harq_ack_cfg_r15_present) { - j.write_str("sr-WithHARQ-ACK-Config-r15", "true"); - } - if (sr_without_harq_ack_cfg_r15_present) { - j.write_fieldname("sr-WithoutHARQ-ACK-Config-r15"); - sr_without_harq_ack_cfg_r15.to_json(j); - } - if (sr_sps_bsr_cfg_r15_present) { - j.write_fieldname("sr-SPS-BSR-Config-r15"); - sr_sps_bsr_cfg_r15.to_json(j); - } - j.end_obj(); -} - -// RadioResourceConfigDedicated-NB-r13 ::= SEQUENCE -SRSASN_CODE rr_cfg_ded_nb_r13_s::pack(bit_ref& bref) const -{ - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(srb_to_add_mod_list_r13_present, 1)); - HANDLE_CODE(bref.pack(drb_to_add_mod_list_r13_present, 1)); - HANDLE_CODE(bref.pack(drb_to_release_list_r13_present, 1)); - HANDLE_CODE(bref.pack(mac_main_cfg_r13_present, 1)); - HANDLE_CODE(bref.pack(phys_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.pack(rlf_timers_and_consts_r13_present, 1)); - - if (srb_to_add_mod_list_r13_present) { - HANDLE_CODE(pack_fixed_seq_of(bref, &(srb_to_add_mod_list_r13)[0], srb_to_add_mod_list_r13.size())); - } - if (drb_to_add_mod_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, drb_to_add_mod_list_r13, 1, 2)); - } - if (drb_to_release_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, drb_to_release_list_r13, 1, 2, integer_packer(1, 32))); - } - if (mac_main_cfg_r13_present) { - HANDLE_CODE(mac_main_cfg_r13.pack(bref)); - } - if (phys_cfg_ded_r13_present) { - HANDLE_CODE(phys_cfg_ded_r13.pack(bref)); - } - if (rlf_timers_and_consts_r13_present) { - HANDLE_CODE(rlf_timers_and_consts_r13.pack(bref)); + if (drx_cfg_r13_present) { + HANDLE_CODE(drx_cfg_r13.pack(bref)); + } + HANDLE_CODE(time_align_timer_ded_r13.pack(bref)); + if (lc_ch_sr_cfg_r13_present) { + HANDLE_CODE(lc_ch_sr_cfg_r13.pack(bref)); } if (ext) { ext_groups_packer_guard group_flags; - group_flags[0] |= sched_request_cfg_r15.is_present(); + group_flags[0] |= rai_activation_r14_present; + 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]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(sched_request_cfg_r15.is_present(), 1)); - if (sched_request_cfg_r15.is_present()) { - HANDLE_CODE(sched_request_cfg_r15->pack(bref)); + HANDLE_CODE(bref.pack(rai_activation_r14_present, 1)); + HANDLE_CODE(bref.pack(data_inactivity_timer_cfg_r14.is_present(), 1)); + if (data_inactivity_timer_cfg_r14.is_present()) { + HANDLE_CODE(data_inactivity_timer_cfg_r14->pack(bref)); + } + } + if (group_flags[1]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(drx_cycle_v1430_present, 1)); + if (drx_cycle_v1430_present) { + HANDLE_CODE(drx_cycle_v1430.pack(bref)); + } + } + if (group_flags[2]) { + varlength_field_pack_guard varlen_scope(bref, false); + + 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; } -SRSASN_CODE rr_cfg_ded_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE mac_main_cfg_nb_r13_s::unpack(cbit_ref& bref) { bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(srb_to_add_mod_list_r13_present, 1)); - HANDLE_CODE(bref.unpack(drb_to_add_mod_list_r13_present, 1)); - HANDLE_CODE(bref.unpack(drb_to_release_list_r13_present, 1)); - HANDLE_CODE(bref.unpack(mac_main_cfg_r13_present, 1)); - HANDLE_CODE(bref.unpack(phys_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.unpack(rlf_timers_and_consts_r13_present, 1)); + HANDLE_CODE(bref.unpack(ul_sch_cfg_r13_present, 1)); + HANDLE_CODE(bref.unpack(drx_cfg_r13_present, 1)); + HANDLE_CODE(bref.unpack(lc_ch_sr_cfg_r13_present, 1)); - if (srb_to_add_mod_list_r13_present) { - HANDLE_CODE(unpack_fixed_seq_of(&(srb_to_add_mod_list_r13)[0], bref, srb_to_add_mod_list_r13.size())); - } - if (drb_to_add_mod_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(drb_to_add_mod_list_r13, bref, 1, 2)); - } - if (drb_to_release_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(drb_to_release_list_r13, bref, 1, 2, integer_packer(1, 32))); - } - if (mac_main_cfg_r13_present) { - HANDLE_CODE(mac_main_cfg_r13.unpack(bref)); + if (ul_sch_cfg_r13_present) { + HANDLE_CODE(bref.unpack(ul_sch_cfg_r13.periodic_bsr_timer_r13_present, 1)); + if (ul_sch_cfg_r13.periodic_bsr_timer_r13_present) { + HANDLE_CODE(ul_sch_cfg_r13.periodic_bsr_timer_r13.unpack(bref)); + } + HANDLE_CODE(ul_sch_cfg_r13.retx_bsr_timer_r13.unpack(bref)); } - if (phys_cfg_ded_r13_present) { - HANDLE_CODE(phys_cfg_ded_r13.unpack(bref)); + if (drx_cfg_r13_present) { + HANDLE_CODE(drx_cfg_r13.unpack(bref)); } - if (rlf_timers_and_consts_r13_present) { - HANDLE_CODE(rlf_timers_and_consts_r13.unpack(bref)); + HANDLE_CODE(time_align_timer_ded_r13.unpack(bref)); + if (lc_ch_sr_cfg_r13_present) { + HANDLE_CODE(lc_ch_sr_cfg_r13.unpack(bref)); } if (ext) { - ext_groups_unpacker_guard group_flags(1); + ext_groups_unpacker_guard group_flags(4); group_flags.unpack(bref); if (group_flags[0]) { varlength_field_unpack_guard varlen_scope(bref, false); - bool sched_request_cfg_r15_present; - HANDLE_CODE(bref.unpack(sched_request_cfg_r15_present, 1)); - sched_request_cfg_r15.set_present(sched_request_cfg_r15_present); - if (sched_request_cfg_r15.is_present()) { - HANDLE_CODE(sched_request_cfg_r15->unpack(bref)); + HANDLE_CODE(bref.unpack(rai_activation_r14_present, 1)); + bool data_inactivity_timer_cfg_r14_present; + HANDLE_CODE(bref.unpack(data_inactivity_timer_cfg_r14_present, 1)); + data_inactivity_timer_cfg_r14.set_present(data_inactivity_timer_cfg_r14_present); + if (data_inactivity_timer_cfg_r14.is_present()) { + HANDLE_CODE(data_inactivity_timer_cfg_r14->unpack(bref)); + } + } + if (group_flags[1]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.unpack(drx_cycle_v1430_present, 1)); + if (drx_cycle_v1430_present) { + HANDLE_CODE(drx_cycle_v1430.unpack(bref)); + } + } + if (group_flags[2]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + 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; } -void rr_cfg_ded_nb_r13_s::to_json(json_writer& j) const +void mac_main_cfg_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - if (srb_to_add_mod_list_r13_present) { - j.start_array("srb-ToAddModList-r13"); - for (const auto& e1 : srb_to_add_mod_list_r13) { - e1.to_json(j); - } - j.end_array(); - } - if (drb_to_add_mod_list_r13_present) { - j.start_array("drb-ToAddModList-r13"); - for (const auto& e1 : drb_to_add_mod_list_r13) { - e1.to_json(j); - } - j.end_array(); - } - if (drb_to_release_list_r13_present) { - j.start_array("drb-ToReleaseList-r13"); - for (const auto& e1 : drb_to_release_list_r13) { - j.write_int(e1); + if (ul_sch_cfg_r13_present) { + j.write_fieldname("ul-SCH-Config-r13"); + j.start_obj(); + if (ul_sch_cfg_r13.periodic_bsr_timer_r13_present) { + j.write_str("periodicBSR-Timer-r13", ul_sch_cfg_r13.periodic_bsr_timer_r13.to_string()); } - j.end_array(); - } - if (mac_main_cfg_r13_present) { - j.write_fieldname("mac-MainConfig-r13"); - mac_main_cfg_r13.to_json(j); + j.write_str("retxBSR-Timer-r13", ul_sch_cfg_r13.retx_bsr_timer_r13.to_string()); + j.end_obj(); } - if (phys_cfg_ded_r13_present) { - j.write_fieldname("physicalConfigDedicated-r13"); - phys_cfg_ded_r13.to_json(j); + if (drx_cfg_r13_present) { + j.write_fieldname("drx-Config-r13"); + drx_cfg_r13.to_json(j); } - if (rlf_timers_and_consts_r13_present) { - j.write_fieldname("rlf-TimersAndConstants-r13"); - rlf_timers_and_consts_r13.to_json(j); + j.write_str("timeAlignmentTimerDedicated-r13", time_align_timer_ded_r13.to_string()); + if (lc_ch_sr_cfg_r13_present) { + j.write_fieldname("logicalChannelSR-Config-r13"); + lc_ch_sr_cfg_r13.to_json(j); } if (ext) { - if (sched_request_cfg_r15.is_present()) { - j.write_fieldname("schedulingRequestConfig-r15"); - sched_request_cfg_r15->to_json(j); + if (rai_activation_r14_present) { + j.write_str("rai-Activation-r14", "true"); + } + if (data_inactivity_timer_cfg_r14.is_present()) { + j.write_fieldname("dataInactivityTimerConfig-r14"); + data_inactivity_timer_cfg_r14->to_json(j); + } + if (drx_cycle_v1430_present) { + j.write_str("drx-Cycle-v1430", drx_cycle_v1430.to_string()); + } + 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(); } -void rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::set(types::options e) +void mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::set(types::options e) { type_ = e; } -mac_main_cfg_nb_r13_s& rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::set_explicit_value_r13() +void mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::set_release() { - set(types::explicit_value_r13); - return c; + set(types::release); } -void rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::set_default_value_r13() +mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::setup_s_& mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::set_setup() { - set(types::default_value_r13); + set(types::setup); + return c; } -void rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::to_json(json_writer& j) const +void mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::explicit_value_r13: - j.write_fieldname("explicitValue-r13"); - c.to_json(j); + case types::release: break; - case types::default_value_r13: + case types::setup: + j.write_fieldname("setup"); + j.start_obj(); + j.write_str("logicalChannelSR-ProhibitTimer-r13", c.lc_ch_sr_prohibit_timer_r13.to_string()); + j.end_obj(); break; default: - log_invalid_choice_id(type_, "rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_"); + log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_"); } j.end_obj(); } -SRSASN_CODE rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::pack(bit_ref& bref) const +SRSASN_CODE mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::explicit_value_r13: - HANDLE_CODE(c.pack(bref)); + case types::release: break; - case types::default_value_r13: + case types::setup: + HANDLE_CODE(c.lc_ch_sr_prohibit_timer_r13.pack(bref)); break; default: - log_invalid_choice_id(type_, "rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_"); + log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::unpack(cbit_ref& bref) +SRSASN_CODE mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::explicit_value_r13: - HANDLE_CODE(c.unpack(bref)); + case types::release: break; - case types::default_value_r13: + case types::setup: + HANDLE_CODE(c.lc_ch_sr_prohibit_timer_r13.unpack(bref)); break; default: - log_invalid_choice_id(type_, "rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_"); + log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::types_opts::to_string() const +const char* mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::setup_s_::lc_ch_sr_prohibit_timer_r13_opts::to_string() const { - static const char* options[] = {"explicitValue-r13", "defaultValue-r13"}; - return convert_enum_idx(options, 2, value, "rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::types"); + static const char* options[] = {"pp2", "pp8", "pp32", "pp128", "pp512", "pp1024", "pp2048", "spare"}; + return convert_enum_idx( + options, 8, value, "mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::setup_s_::lc_ch_sr_prohibit_timer_r13_e_"); } - -// AS-Config-NB ::= SEQUENCE -SRSASN_CODE as_cfg_nb_s::pack(bit_ref& bref) const +uint16_t mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::setup_s_::lc_ch_sr_prohibit_timer_r13_opts::to_number() const { - bref.pack(ext, 1); - HANDLE_CODE(source_rr_cfg_r13.pack(bref)); - HANDLE_CODE(source_security_algorithm_cfg_r13.pack(bref)); - HANDLE_CODE(source_ue_id_r13.pack(bref)); - HANDLE_CODE(source_dl_carrier_freq_r13.pack(bref)); - - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= source_dl_carrier_freq_v1550.is_present(); - group_flags.pack(bref); - - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(source_dl_carrier_freq_v1550.is_present(), 1)); - if (source_dl_carrier_freq_v1550.is_present()) { - HANDLE_CODE(source_dl_carrier_freq_v1550->pack(bref)); - } - } - } - return SRSASN_SUCCESS; + static const uint16_t options[] = {2, 8, 32, 128, 512, 1024, 2048}; + return map_enum_number( + options, 7, value, "mac_main_cfg_nb_r13_s::lc_ch_sr_cfg_r13_c_::setup_s_::lc_ch_sr_prohibit_timer_r13_e_"); } -SRSASN_CODE as_cfg_nb_s::unpack(cbit_ref& bref) -{ - bref.unpack(ext, 1); - HANDLE_CODE(source_rr_cfg_r13.unpack(bref)); - HANDLE_CODE(source_security_algorithm_cfg_r13.unpack(bref)); - HANDLE_CODE(source_ue_id_r13.unpack(bref)); - HANDLE_CODE(source_dl_carrier_freq_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); - bool source_dl_carrier_freq_v1550_present; - HANDLE_CODE(bref.unpack(source_dl_carrier_freq_v1550_present, 1)); - source_dl_carrier_freq_v1550.set_present(source_dl_carrier_freq_v1550_present); - if (source_dl_carrier_freq_v1550.is_present()) { - HANDLE_CODE(source_dl_carrier_freq_v1550->unpack(bref)); - } - } - } - return SRSASN_SUCCESS; -} -void as_cfg_nb_s::to_json(json_writer& j) const +void mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::set(types::options e) { - j.start_obj(); - j.write_fieldname("sourceRadioResourceConfig-r13"); - source_rr_cfg_r13.to_json(j); - j.write_fieldname("sourceSecurityAlgorithmConfig-r13"); - source_security_algorithm_cfg_r13.to_json(j); - j.write_str("sourceUE-Identity-r13", source_ue_id_r13.to_string()); - j.write_fieldname("sourceDl-CarrierFreq-r13"); - source_dl_carrier_freq_r13.to_json(j); - if (ext) { - if (source_dl_carrier_freq_v1550.is_present()) { - j.write_fieldname("sourceDL-CarrierFreq-v1550"); - source_dl_carrier_freq_v1550->to_json(j); - } - } - j.end_obj(); + type_ = e; } - -// ReestablishmentInfo-NB ::= SEQUENCE -SRSASN_CODE reest_info_nb_s::pack(bit_ref& bref) const +void mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::set_release() { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(add_reestab_info_list_r13_present, 1)); - - HANDLE_CODE(pack_integer(bref, source_pci_r13, (uint16_t)0u, (uint16_t)503u)); - HANDLE_CODE(target_cell_short_mac_i_r13.pack(bref)); - if (add_reestab_info_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, add_reestab_info_list_r13, 1, 32)); - } - - return SRSASN_SUCCESS; + set(types::release); } -SRSASN_CODE reest_info_nb_s::unpack(cbit_ref& bref) +mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::setup_s_& +mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::set_setup() { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(add_reestab_info_list_r13_present, 1)); - - HANDLE_CODE(unpack_integer(source_pci_r13, bref, (uint16_t)0u, (uint16_t)503u)); - HANDLE_CODE(target_cell_short_mac_i_r13.unpack(bref)); - if (add_reestab_info_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(add_reestab_info_list_r13, bref, 1, 32)); - } - - return SRSASN_SUCCESS; + set(types::setup); + return c; } -void reest_info_nb_s::to_json(json_writer& j) const +void mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::to_json(json_writer& j) const { j.start_obj(); - j.write_int("sourcePhysCellId-r13", source_pci_r13); - j.write_str("targetCellShortMAC-I-r13", target_cell_short_mac_i_r13.to_string()); - if (add_reestab_info_list_r13_present) { - j.start_array("additionalReestabInfoList-r13"); - for (const auto& e1 : add_reestab_info_list_r13) { - e1.to_json(j); - } - j.end_array(); + switch (type_) { + case types::release: + break; + case types::setup: + j.write_fieldname("setup"); + j.start_obj(); + j.write_str("dataInactivityTimer-r14", c.data_inactivity_timer_r14.to_string()); + j.end_obj(); + break; + default: + log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_"); } j.end_obj(); } - -// AS-Context-NB ::= SEQUENCE -SRSASN_CODE as_context_nb_s::pack(bit_ref& bref) const +SRSASN_CODE mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(reest_info_r13_present, 1)); - - if (reest_info_r13_present) { - HANDLE_CODE(reest_info_r13.pack(bref)); + type_.pack(bref); + switch (type_) { + case types::release: + break; + case types::setup: + HANDLE_CODE(c.data_inactivity_timer_r14.pack(bref)); + break; + default: + log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_"); + return SRSASN_ERROR_ENCODE_FAIL; } - return SRSASN_SUCCESS; } -SRSASN_CODE as_context_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(reest_info_r13_present, 1)); - - if (reest_info_r13_present) { - HANDLE_CODE(reest_info_r13.unpack(bref)); + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::release: + break; + case types::setup: + HANDLE_CODE(c.data_inactivity_timer_r14.unpack(bref)); + break; + default: + log_invalid_choice_id(type_, "mac_main_cfg_nb_r13_s::data_inactivity_timer_cfg_r14_c_"); + return SRSASN_ERROR_DECODE_FAIL; } - return SRSASN_SUCCESS; } -void as_context_nb_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (reest_info_r13_present) { - j.write_fieldname("reestablishmentInfo-r13"); - reest_info_r13.to_json(j); - } - j.end_obj(); -} -// ChannelRasterOffset-NB-r13 ::= ENUMERATED -const char* ch_raster_offset_nb_r13_opts::to_string() const -{ - static const char* options[] = {"khz-7dot5", "khz-2dot5", "khz2dot5", "khz7dot5"}; - return convert_enum_idx(options, 4, value, "ch_raster_offset_nb_r13_e"); -} -float ch_raster_offset_nb_r13_opts::to_number() const +const char* mac_main_cfg_nb_r13_s::drx_cycle_v1430_opts::to_string() const { - static const float options[] = {-7.5, -2.5, 2.5, 7.5}; - return map_enum_number(options, 4, value, "ch_raster_offset_nb_r13_e"); + static const char* options[] = {"sf1280", "sf2560", "sf5120", "sf10240"}; + return convert_enum_idx(options, 4, value, "mac_main_cfg_nb_r13_s::drx_cycle_v1430_e_"); } -const char* ch_raster_offset_nb_r13_opts::to_number_string() const +uint16_t mac_main_cfg_nb_r13_s::drx_cycle_v1430_opts::to_number() const { - static const char* options[] = {"-7.5", "-2.5", "2.5", "7.5"}; - return convert_enum_idx(options, 4, value, "ch_raster_offset_nb_r13_e"); + static const uint16_t options[] = {1280, 2560, 5120, 10240}; + return map_enum_number(options, 4, value, "mac_main_cfg_nb_r13_s::drx_cycle_v1430_e_"); } -// Guardband-NB-r13 ::= SEQUENCE -SRSASN_CODE guardband_nb_r13_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(raster_offset_r13.pack(bref)); - HANDLE_CODE(spare.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE guardband_nb_r13_s::unpack(cbit_ref& bref) +// PhysicalConfigDedicated-NB-r13 ::= SEQUENCE +SRSASN_CODE phys_cfg_ded_nb_r13_s::pack(bit_ref& bref) const { - HANDLE_CODE(raster_offset_r13.unpack(bref)); - HANDLE_CODE(spare.unpack(bref)); + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(carrier_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.pack(npdcch_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.pack(npusch_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.pack(ul_pwr_ctrl_ded_r13_present, 1)); - return SRSASN_SUCCESS; -} -void guardband_nb_r13_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_str("rasterOffset-r13", raster_offset_r13.to_string()); - j.write_str("spare", spare.to_string()); - j.end_obj(); -} + if (carrier_cfg_ded_r13_present) { + HANDLE_CODE(carrier_cfg_ded_r13.pack(bref)); + } + if (npdcch_cfg_ded_r13_present) { + HANDLE_CODE(npdcch_cfg_ded_r13.pack(bref)); + } + if (npusch_cfg_ded_r13_present) { + HANDLE_CODE(npusch_cfg_ded_r13.pack(bref)); + } + if (ul_pwr_ctrl_ded_r13_present) { + HANDLE_CODE(ul_pwr_ctrl_ded_r13.pack(bref)); + } -// Inband-DifferentPCI-NB-r13 ::= SEQUENCE -SRSASN_CODE inband_different_pci_nb_r13_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(eutra_num_crs_ports_r13.pack(bref)); - HANDLE_CODE(raster_offset_r13.pack(bref)); - HANDLE_CODE(spare.pack(bref)); + if (ext) { + ext_groups_packer_guard group_flags; + group_flags[0] |= two_harq_processes_cfg_r14_present; + 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]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(two_harq_processes_cfg_r14_present, 1)); + } + if (group_flags[1]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(interference_randomisation_cfg_r14_present, 1)); + } + if (group_flags[2]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(npdcch_cfg_ded_v1530.is_present(), 1)); + if (npdcch_cfg_ded_v1530.is_present()) { + HANDLE_CODE(npdcch_cfg_ded_v1530->pack(bref)); + } + } + if (group_flags[3]) { + varlength_field_pack_guard varlen_scope(bref, false); + + 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; } -SRSASN_CODE inband_different_pci_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE phys_cfg_ded_nb_r13_s::unpack(cbit_ref& bref) { - HANDLE_CODE(eutra_num_crs_ports_r13.unpack(bref)); - HANDLE_CODE(raster_offset_r13.unpack(bref)); - HANDLE_CODE(spare.unpack(bref)); + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(carrier_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.unpack(npdcch_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.unpack(npusch_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.unpack(ul_pwr_ctrl_ded_r13_present, 1)); + + if (carrier_cfg_ded_r13_present) { + HANDLE_CODE(carrier_cfg_ded_r13.unpack(bref)); + } + if (npdcch_cfg_ded_r13_present) { + HANDLE_CODE(npdcch_cfg_ded_r13.unpack(bref)); + } + if (npusch_cfg_ded_r13_present) { + HANDLE_CODE(npusch_cfg_ded_r13.unpack(bref)); + } + if (ul_pwr_ctrl_ded_r13_present) { + HANDLE_CODE(ul_pwr_ctrl_ded_r13.unpack(bref)); + } + + if (ext) { + ext_groups_unpacker_guard group_flags(8); + group_flags.unpack(bref); + + if (group_flags[0]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.unpack(two_harq_processes_cfg_r14_present, 1)); + } + if (group_flags[1]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.unpack(interference_randomisation_cfg_r14_present, 1)); + } + if (group_flags[2]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool npdcch_cfg_ded_v1530_present; + HANDLE_CODE(bref.unpack(npdcch_cfg_ded_v1530_present, 1)); + npdcch_cfg_ded_v1530.set_present(npdcch_cfg_ded_v1530_present); + if (npdcch_cfg_ded_v1530.is_present()) { + HANDLE_CODE(npdcch_cfg_ded_v1530->unpack(bref)); + } + } + if (group_flags[3]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + 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; } -void inband_different_pci_nb_r13_s::to_json(json_writer& j) const +void phys_cfg_ded_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("eutra-NumCRS-Ports-r13", eutra_num_crs_ports_r13.to_string()); - j.write_str("rasterOffset-r13", raster_offset_r13.to_string()); - j.write_str("spare", spare.to_string()); + if (carrier_cfg_ded_r13_present) { + j.write_fieldname("carrierConfigDedicated-r13"); + carrier_cfg_ded_r13.to_json(j); + } + if (npdcch_cfg_ded_r13_present) { + j.write_fieldname("npdcch-ConfigDedicated-r13"); + npdcch_cfg_ded_r13.to_json(j); + } + if (npusch_cfg_ded_r13_present) { + j.write_fieldname("npusch-ConfigDedicated-r13"); + npusch_cfg_ded_r13.to_json(j); + } + if (ul_pwr_ctrl_ded_r13_present) { + j.write_fieldname("uplinkPowerControlDedicated-r13"); + ul_pwr_ctrl_ded_r13.to_json(j); + } + if (ext) { + if (two_harq_processes_cfg_r14_present) { + j.write_str("twoHARQ-ProcessesConfig-r14", "true"); + } + if (interference_randomisation_cfg_r14_present) { + j.write_str("interferenceRandomisationConfig-r14", "true"); + } + if (npdcch_cfg_ded_v1530.is_present()) { + j.write_fieldname("npdcch-ConfigDedicated-v1530"); + npdcch_cfg_ded_v1530->to_json(j); + } + 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* inband_different_pci_nb_r13_s::eutra_num_crs_ports_r13_opts::to_string() const +const char* phys_cfg_ded_nb_r13_s::ul_segmented_precompensation_gap_r17_opts::to_string() const { - static const char* options[] = {"same", "four"}; - return convert_enum_idx(options, 2, value, "inband_different_pci_nb_r13_s::eutra_num_crs_ports_r13_e_"); + 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_"); } -uint8_t inband_different_pci_nb_r13_s::eutra_num_crs_ports_r13_opts::to_number() const + +// RLF-TimersAndConstants-NB-r13 ::= CHOICE +void rlf_timers_and_consts_nb_r13_c::set(types::options e) { - if (value == four) { - return 4; - } - invalid_enum_number(value, "inband_different_pci_nb_r13_s::eutra_num_crs_ports_r13_e_"); - return 0; + type_ = e; } - -// Inband-SamePCI-NB-r13 ::= SEQUENCE -SRSASN_CODE inband_same_pci_nb_r13_s::pack(bit_ref& bref) const +void rlf_timers_and_consts_nb_r13_c::set_release() { - HANDLE_CODE(pack_integer(bref, eutra_crs_seq_info_r13, (uint8_t)0u, (uint8_t)31u)); - - return SRSASN_SUCCESS; + set(types::release); } -SRSASN_CODE inband_same_pci_nb_r13_s::unpack(cbit_ref& bref) +rlf_timers_and_consts_nb_r13_c::setup_s_& rlf_timers_and_consts_nb_r13_c::set_setup() { - HANDLE_CODE(unpack_integer(eutra_crs_seq_info_r13, bref, (uint8_t)0u, (uint8_t)31u)); - - return SRSASN_SUCCESS; + set(types::setup); + return c; } -void inband_same_pci_nb_r13_s::to_json(json_writer& j) const +void rlf_timers_and_consts_nb_r13_c::to_json(json_writer& j) const { j.start_obj(); - j.write_int("eutra-CRS-SequenceInfo-r13", eutra_crs_seq_info_r13); + switch (type_) { + case types::release: + break; + case types::setup: + j.write_fieldname("setup"); + c.to_json(j); + break; + default: + log_invalid_choice_id(type_, "rlf_timers_and_consts_nb_r13_c"); + } j.end_obj(); } - -// Standalone-NB-r13 ::= SEQUENCE -SRSASN_CODE standalone_nb_r13_s::pack(bit_ref& bref) const +SRSASN_CODE rlf_timers_and_consts_nb_r13_c::pack(bit_ref& bref) const { - HANDLE_CODE(spare.pack(bref)); - + type_.pack(bref); + switch (type_) { + case types::release: + break; + case types::setup: + HANDLE_CODE(c.pack(bref)); + break; + default: + log_invalid_choice_id(type_, "rlf_timers_and_consts_nb_r13_c"); + return SRSASN_ERROR_ENCODE_FAIL; + } return SRSASN_SUCCESS; } -SRSASN_CODE standalone_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE rlf_timers_and_consts_nb_r13_c::unpack(cbit_ref& bref) { - HANDLE_CODE(spare.unpack(bref)); - + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::release: + break; + case types::setup: + HANDLE_CODE(c.unpack(bref)); + break; + default: + log_invalid_choice_id(type_, "rlf_timers_and_consts_nb_r13_c"); + return SRSASN_ERROR_DECODE_FAIL; + } return SRSASN_SUCCESS; } -void standalone_nb_r13_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_str("spare", spare.to_string()); - j.end_obj(); -} -// MasterInformationBlock-NB ::= SEQUENCE -SRSASN_CODE mib_nb_s::pack(bit_ref& bref) const +SRSASN_CODE rlf_timers_and_consts_nb_r13_c::setup_s_::pack(bit_ref& bref) const { - HANDLE_CODE(sys_frame_num_msb_r13.pack(bref)); - HANDLE_CODE(hyper_sfn_lsb_r13.pack(bref)); - HANDLE_CODE(pack_integer(bref, sched_info_sib1_r13, (uint8_t)0u, (uint8_t)15u)); - HANDLE_CODE(pack_integer(bref, sys_info_value_tag_r13, (uint8_t)0u, (uint8_t)31u)); - 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(spare.pack(bref)); + bref.pack(ext, 1); + HANDLE_CODE(t301_r13.pack(bref)); + HANDLE_CODE(t310_r13.pack(bref)); + HANDLE_CODE(n310_r13.pack(bref)); + HANDLE_CODE(t311_r13.pack(bref)); + HANDLE_CODE(n311_r13.pack(bref)); + + if (ext) { + ext_groups_packer_guard group_flags; + group_flags[0] |= t311_v1350_present; + group_flags[1] |= t301_v1530_present; + group_flags[1] |= t311_v1530_present; + group_flags.pack(bref); + if (group_flags[0]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(t311_v1350_present, 1)); + if (t311_v1350_present) { + HANDLE_CODE(t311_v1350.pack(bref)); + } + } + if (group_flags[1]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(t301_v1530_present, 1)); + HANDLE_CODE(bref.pack(t311_v1530_present, 1)); + if (t301_v1530_present) { + HANDLE_CODE(t301_v1530.pack(bref)); + } + if (t311_v1530_present) { + HANDLE_CODE(t311_v1530.pack(bref)); + } + } + } return SRSASN_SUCCESS; } -SRSASN_CODE mib_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rlf_timers_and_consts_nb_r13_c::setup_s_::unpack(cbit_ref& bref) { - HANDLE_CODE(sys_frame_num_msb_r13.unpack(bref)); - HANDLE_CODE(hyper_sfn_lsb_r13.unpack(bref)); - HANDLE_CODE(unpack_integer(sched_info_sib1_r13, bref, (uint8_t)0u, (uint8_t)15u)); - HANDLE_CODE(unpack_integer(sys_info_value_tag_r13, bref, (uint8_t)0u, (uint8_t)31u)); - 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(spare.unpack(bref)); + bref.unpack(ext, 1); + HANDLE_CODE(t301_r13.unpack(bref)); + HANDLE_CODE(t310_r13.unpack(bref)); + HANDLE_CODE(n310_r13.unpack(bref)); + HANDLE_CODE(t311_r13.unpack(bref)); + HANDLE_CODE(n311_r13.unpack(bref)); + + if (ext) { + ext_groups_unpacker_guard group_flags(2); + group_flags.unpack(bref); + + if (group_flags[0]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.unpack(t311_v1350_present, 1)); + if (t311_v1350_present) { + HANDLE_CODE(t311_v1350.unpack(bref)); + } + } + if (group_flags[1]) { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(bref.unpack(t301_v1530_present, 1)); + HANDLE_CODE(bref.unpack(t311_v1530_present, 1)); + if (t301_v1530_present) { + HANDLE_CODE(t301_v1530.unpack(bref)); + } + if (t311_v1530_present) { + HANDLE_CODE(t311_v1530.unpack(bref)); + } + } + } return SRSASN_SUCCESS; } -void mib_nb_s::to_json(json_writer& j) const +void rlf_timers_and_consts_nb_r13_c::setup_s_::to_json(json_writer& j) const { j.start_obj(); - j.write_str("systemFrameNumber-MSB-r13", sys_frame_num_msb_r13.to_string()); - j.write_str("hyperSFN-LSB-r13", hyper_sfn_lsb_r13.to_string()); - j.write_int("schedulingInfoSIB1-r13", sched_info_sib1_r13); - j.write_int("systemInfoValueTag-r13", sys_info_value_tag_r13); - j.write_bool("ab-Enabled-r13", ab_enabled_r13); - j.write_fieldname("operationModeInfo-r13"); - operation_mode_info_r13.to_json(j); - j.write_bool("additionalTransmissionSIB1-r15", add_tx_sib1_r15); - j.write_str("spare", spare.to_string()); + j.write_str("t301-r13", t301_r13.to_string()); + j.write_str("t310-r13", t310_r13.to_string()); + j.write_str("n310-r13", n310_r13.to_string()); + j.write_str("t311-r13", t311_r13.to_string()); + j.write_str("n311-r13", n311_r13.to_string()); + if (ext) { + if (t311_v1350_present) { + j.write_str("t311-v1350", t311_v1350.to_string()); + } + if (t301_v1530_present) { + j.write_str("t301-v1530", t301_v1530.to_string()); + } + if (t311_v1530_present) { + j.write_str("t311-v1530", t311_v1530.to_string()); + } + } j.end_obj(); } -void mib_nb_s::operation_mode_info_r13_c_::destroy_() +const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t301_r13_opts::to_string() const { - switch (type_) { - case types::inband_same_pci_r13: - c.destroy(); - break; - case types::inband_different_pci_r13: - c.destroy(); - break; - case types::guardband_r13: - c.destroy(); - break; - case types::standalone_r13: - c.destroy(); - break; - default: - break; - } + static const char* options[] = {"ms2500", "ms4000", "ms6000", "ms10000", "ms15000", "ms25000", "ms40000", "ms60000"}; + return convert_enum_idx(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t301_r13_e_"); } -void mib_nb_s::operation_mode_info_r13_c_::set(types::options e) +uint16_t rlf_timers_and_consts_nb_r13_c::setup_s_::t301_r13_opts::to_number() const { - destroy_(); - type_ = e; - switch (type_) { - case types::inband_same_pci_r13: - c.init(); - break; - case types::inband_different_pci_r13: - c.init(); - break; - case types::guardband_r13: - c.init(); - break; - case types::standalone_r13: - c.init(); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); - } + static const uint16_t options[] = {2500, 4000, 6000, 10000, 15000, 25000, 40000, 60000}; + return map_enum_number(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t301_r13_e_"); } -mib_nb_s::operation_mode_info_r13_c_::operation_mode_info_r13_c_(const mib_nb_s::operation_mode_info_r13_c_& other) + +const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t310_r13_opts::to_string() const { - type_ = other.type(); - switch (type_) { - case types::inband_same_pci_r13: - c.init(other.c.get()); - break; - case types::inband_different_pci_r13: - c.init(other.c.get()); - break; - case types::guardband_r13: - c.init(other.c.get()); - break; - case types::standalone_r13: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); - } + static const char* options[] = {"ms0", "ms200", "ms500", "ms1000", "ms2000", "ms4000", "ms8000"}; + return convert_enum_idx(options, 7, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t310_r13_e_"); } -mib_nb_s::operation_mode_info_r13_c_& -mib_nb_s::operation_mode_info_r13_c_::operator=(const mib_nb_s::operation_mode_info_r13_c_& other) +uint16_t rlf_timers_and_consts_nb_r13_c::setup_s_::t310_r13_opts::to_number() const { - if (this == &other) { - return *this; - } - set(other.type()); - switch (type_) { - case types::inband_same_pci_r13: - c.set(other.c.get()); - break; - case types::inband_different_pci_r13: - c.set(other.c.get()); - break; - case types::guardband_r13: - c.set(other.c.get()); - break; - case types::standalone_r13: - c.set(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); - } - - return *this; + static const uint16_t options[] = {0, 200, 500, 1000, 2000, 4000, 8000}; + return map_enum_number(options, 7, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t310_r13_e_"); } -inband_same_pci_nb_r13_s& mib_nb_s::operation_mode_info_r13_c_::set_inband_same_pci_r13() + +const char* rlf_timers_and_consts_nb_r13_c::setup_s_::n310_r13_opts::to_string() const { - set(types::inband_same_pci_r13); - return c.get(); + static const char* options[] = {"n1", "n2", "n3", "n4", "n6", "n8", "n10", "n20"}; + return convert_enum_idx(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::n310_r13_e_"); } -inband_different_pci_nb_r13_s& mib_nb_s::operation_mode_info_r13_c_::set_inband_different_pci_r13() +uint8_t rlf_timers_and_consts_nb_r13_c::setup_s_::n310_r13_opts::to_number() const { - set(types::inband_different_pci_r13); - return c.get(); + static const uint8_t options[] = {1, 2, 3, 4, 6, 8, 10, 20}; + return map_enum_number(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::n310_r13_e_"); } -guardband_nb_r13_s& mib_nb_s::operation_mode_info_r13_c_::set_guardband_r13() + +const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t311_r13_opts::to_string() const { - set(types::guardband_r13); - return c.get(); + static const char* options[] = {"ms1000", "ms3000", "ms5000", "ms10000", "ms15000", "ms20000", "ms30000"}; + return convert_enum_idx(options, 7, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_r13_e_"); } -standalone_nb_r13_s& mib_nb_s::operation_mode_info_r13_c_::set_standalone_r13() +uint16_t rlf_timers_and_consts_nb_r13_c::setup_s_::t311_r13_opts::to_number() const { - set(types::standalone_r13); - return c.get(); + static const uint16_t options[] = {1000, 3000, 5000, 10000, 15000, 20000, 30000}; + return map_enum_number(options, 7, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_r13_e_"); } -void mib_nb_s::operation_mode_info_r13_c_::to_json(json_writer& j) const + +const char* rlf_timers_and_consts_nb_r13_c::setup_s_::n311_r13_opts::to_string() const { - j.start_obj(); - switch (type_) { - case types::inband_same_pci_r13: - j.write_fieldname("inband-SamePCI-r13"); - c.get().to_json(j); - break; - case types::inband_different_pci_r13: - j.write_fieldname("inband-DifferentPCI-r13"); - c.get().to_json(j); - break; - case types::guardband_r13: - j.write_fieldname("guardband-r13"); - c.get().to_json(j); - break; - case types::standalone_r13: - j.write_fieldname("standalone-r13"); - c.get().to_json(j); - break; - default: - log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); - } - j.end_obj(); + static const char* options[] = {"n1", "n2", "n3", "n4", "n5", "n6", "n8", "n10"}; + return convert_enum_idx(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::n311_r13_e_"); } -SRSASN_CODE mib_nb_s::operation_mode_info_r13_c_::pack(bit_ref& bref) const -{ - type_.pack(bref); - switch (type_) { - case types::inband_same_pci_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::inband_different_pci_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::guardband_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::standalone_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - default: - log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } - return SRSASN_SUCCESS; -} -SRSASN_CODE mib_nb_s::operation_mode_info_r13_c_::unpack(cbit_ref& bref) +uint8_t rlf_timers_and_consts_nb_r13_c::setup_s_::n311_r13_opts::to_number() const { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::inband_same_pci_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::inband_different_pci_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::guardband_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::standalone_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - default: - log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); - return SRSASN_ERROR_DECODE_FAIL; - } - return SRSASN_SUCCESS; + static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10}; + return map_enum_number(options, 8, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::n311_r13_e_"); } -const char* mib_nb_s::operation_mode_info_r13_c_::types_opts::to_string() const -{ - static const char* options[] = {"inband-SamePCI-r13", "inband-DifferentPCI-r13", "guardband-r13", "standalone-r13"}; - return convert_enum_idx(options, 4, value, "mib_nb_s::operation_mode_info_r13_c_::types"); -} -uint8_t mib_nb_s::operation_mode_info_r13_c_::types_opts::to_number() const +const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1350_opts::to_string() const { - if (value == standalone_r13) { - return 1; - } - invalid_enum_number(value, "mib_nb_s::operation_mode_info_r13_c_::types"); - return 0; + static const char* options[] = {"ms40000", "ms60000", "ms90000", "ms120000"}; + return convert_enum_idx(options, 4, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1350_e_"); } - -// BCCH-BCH-Message-NB ::= SEQUENCE -SRSASN_CODE bcch_bch_msg_nb_s::pack(bit_ref& bref) const +uint32_t rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1350_opts::to_number() const { - HANDLE_CODE(msg.pack(bref)); - - bref.align_bytes_zero(); - - return SRSASN_SUCCESS; + static const uint32_t options[] = {40000, 60000, 90000, 120000}; + return map_enum_number(options, 4, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1350_e_"); } -SRSASN_CODE bcch_bch_msg_nb_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(msg.unpack(bref)); - - bref.align_bytes(); - return SRSASN_SUCCESS; -} -void bcch_bch_msg_nb_s::to_json(json_writer& j) const +const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t301_v1530_opts::to_string() const { - j.start_array(); - j.start_obj(); - j.start_obj("BCCH-BCH-Message-NB"); - j.write_fieldname("message"); - msg.to_json(j); - j.end_obj(); - j.end_obj(); - j.end_array(); + static const char* options[] = {"ms80000", "ms100000", "ms120000"}; + return convert_enum_idx(options, 3, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t301_v1530_e_"); } - -// SIB-GuardbandAnchorTDD-NB-r15 ::= SEQUENCE -SRSASN_CODE sib_guardband_anchor_tdd_nb_r15_s::pack(bit_ref& bref) const +uint32_t rlf_timers_and_consts_nb_r13_c::setup_s_::t301_v1530_opts::to_number() const { - HANDLE_CODE(spare.pack(bref)); - - return SRSASN_SUCCESS; + static const uint32_t options[] = {80000, 100000, 120000}; + return map_enum_number(options, 3, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t301_v1530_e_"); } -SRSASN_CODE sib_guardband_anchor_tdd_nb_r15_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(spare.unpack(bref)); - return SRSASN_SUCCESS; -} -void sib_guardband_anchor_tdd_nb_r15_s::to_json(json_writer& j) const +const char* rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1530_opts::to_string() const { - j.start_obj(); - j.write_str("spare", spare.to_string()); - j.end_obj(); + static const char* options[] = {"ms160000", "ms200000"}; + return convert_enum_idx(options, 2, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1530_e_"); } - -// SIB-GuardbandGuardbandTDD-NB-r15 ::= SEQUENCE -SRSASN_CODE sib_guardband_guardband_tdd_nb_r15_s::pack(bit_ref& bref) const +uint32_t rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1530_opts::to_number() const { - HANDLE_CODE(sib_guardband_guardband_location_r15.pack(bref)); - - return SRSASN_SUCCESS; + static const uint32_t options[] = {160000, 200000}; + return map_enum_number(options, 2, value, "rlf_timers_and_consts_nb_r13_c::setup_s_::t311_v1530_e_"); } -SRSASN_CODE sib_guardband_guardband_tdd_nb_r15_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(sib_guardband_guardband_location_r15.unpack(bref)); - return SRSASN_SUCCESS; -} -void sib_guardband_guardband_tdd_nb_r15_s::to_json(json_writer& j) const +// SchedulingRequestConfig-NB-r15 ::= SEQUENCE +SRSASN_CODE sched_request_cfg_nb_r15_s::pack(bit_ref& bref) const { - j.start_obj(); - j.write_str("sib-GuardbandGuardbandLocation-r15", sib_guardband_guardband_location_r15.to_string()); - j.end_obj(); -} + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(sr_with_harq_ack_cfg_r15_present, 1)); + HANDLE_CODE(bref.pack(sr_without_harq_ack_cfg_r15_present, 1)); + HANDLE_CODE(bref.pack(sr_sps_bsr_cfg_r15_present, 1)); -const char* sib_guardband_guardband_tdd_nb_r15_s::sib_guardband_guardband_location_r15_opts::to_string() const -{ - static const char* options[] = {"same", "opposite"}; - return convert_enum_idx( - options, 2, value, "sib_guardband_guardband_tdd_nb_r15_s::sib_guardband_guardband_location_r15_e_"); -} + if (sr_without_harq_ack_cfg_r15_present) { + HANDLE_CODE(sr_without_harq_ack_cfg_r15.pack(bref)); + } + if (sr_sps_bsr_cfg_r15_present) { + HANDLE_CODE(sr_sps_bsr_cfg_r15.pack(bref)); + } -// SIB-GuardbandInbandDiffPCI-TDD-NB-r15 ::= SEQUENCE -SRSASN_CODE sib_guardband_inband_diff_pci_tdd_nb_r15_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(sib_eutra_num_crs_ports_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); - return SRSASN_SUCCESS; -} -SRSASN_CODE sib_guardband_inband_diff_pci_tdd_nb_r15_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(sib_eutra_num_crs_ports_r15.unpack(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; } -void sib_guardband_inband_diff_pci_tdd_nb_r15_s::to_json(json_writer& j) const +SRSASN_CODE sched_request_cfg_nb_r15_s::unpack(cbit_ref& bref) { - j.start_obj(); - j.write_str("sib-EUTRA-NumCRS-Ports-r15", sib_eutra_num_crs_ports_r15.to_string()); - j.end_obj(); -} + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(sr_with_harq_ack_cfg_r15_present, 1)); + HANDLE_CODE(bref.unpack(sr_without_harq_ack_cfg_r15_present, 1)); + HANDLE_CODE(bref.unpack(sr_sps_bsr_cfg_r15_present, 1)); -const char* sib_guardband_inband_diff_pci_tdd_nb_r15_s::sib_eutra_num_crs_ports_r15_opts::to_string() const -{ - static const char* options[] = {"same", "four"}; - return convert_enum_idx( - options, 2, value, "sib_guardband_inband_diff_pci_tdd_nb_r15_s::sib_eutra_num_crs_ports_r15_e_"); -} -uint8_t sib_guardband_inband_diff_pci_tdd_nb_r15_s::sib_eutra_num_crs_ports_r15_opts::to_number() const -{ - if (value == four) { - return 4; + if (sr_without_harq_ack_cfg_r15_present) { + HANDLE_CODE(sr_without_harq_ack_cfg_r15.unpack(bref)); + } + if (sr_sps_bsr_cfg_r15_present) { + HANDLE_CODE(sr_sps_bsr_cfg_r15.unpack(bref)); } - invalid_enum_number(value, "sib_guardband_inband_diff_pci_tdd_nb_r15_s::sib_eutra_num_crs_ports_r15_e_"); - return 0; -} -// SIB-GuardbandInbandSamePCI-TDD-NB-r15 ::= SEQUENCE -SRSASN_CODE sib_guardband_inband_same_pci_tdd_nb_r15_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(spare.pack(bref)); + if (ext) { + ext_groups_unpacker_guard group_flags(1); + group_flags.unpack(bref); - return SRSASN_SUCCESS; -} -SRSASN_CODE sib_guardband_inband_same_pci_tdd_nb_r15_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(spare.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 sib_guardband_inband_same_pci_tdd_nb_r15_s::to_json(json_writer& j) const +void sched_request_cfg_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("spare", spare.to_string()); + if (sr_with_harq_ack_cfg_r15_present) { + j.write_str("sr-WithHARQ-ACK-Config-r15", "true"); + } + if (sr_without_harq_ack_cfg_r15_present) { + j.write_fieldname("sr-WithoutHARQ-ACK-Config-r15"); + sr_without_harq_ack_cfg_r15.to_json(j); + } + if (sr_sps_bsr_cfg_r15_present) { + 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(); } -// GuardbandTDD-NB-r15 ::= SEQUENCE -SRSASN_CODE guardband_tdd_nb_r15_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(raster_offset_r15.pack(bref)); - HANDLE_CODE(sib_guardband_info_r15.pack(bref)); - HANDLE_CODE(eutra_bandwitdh_r15.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE guardband_tdd_nb_r15_s::unpack(cbit_ref& bref) +// RadioResourceConfigDedicated-NB-r13 ::= SEQUENCE +SRSASN_CODE rr_cfg_ded_nb_r13_s::pack(bit_ref& bref) const { - HANDLE_CODE(raster_offset_r15.unpack(bref)); - HANDLE_CODE(sib_guardband_info_r15.unpack(bref)); - HANDLE_CODE(eutra_bandwitdh_r15.unpack(bref)); + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(srb_to_add_mod_list_r13_present, 1)); + HANDLE_CODE(bref.pack(drb_to_add_mod_list_r13_present, 1)); + HANDLE_CODE(bref.pack(drb_to_release_list_r13_present, 1)); + HANDLE_CODE(bref.pack(mac_main_cfg_r13_present, 1)); + HANDLE_CODE(bref.pack(phys_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.pack(rlf_timers_and_consts_r13_present, 1)); - return SRSASN_SUCCESS; -} -void guardband_tdd_nb_r15_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_str("rasterOffset-r15", raster_offset_r15.to_string()); - j.write_fieldname("sib-GuardbandInfo-r15"); - sib_guardband_info_r15.to_json(j); - j.write_str("eutra-Bandwitdh-r15", eutra_bandwitdh_r15.to_string()); - j.end_obj(); + if (srb_to_add_mod_list_r13_present) { + HANDLE_CODE(pack_fixed_seq_of(bref, &(srb_to_add_mod_list_r13)[0], srb_to_add_mod_list_r13.size())); + } + if (drb_to_add_mod_list_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, drb_to_add_mod_list_r13, 1, 2)); + } + if (drb_to_release_list_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, drb_to_release_list_r13, 1, 2, integer_packer(1, 32))); + } + if (mac_main_cfg_r13_present) { + HANDLE_CODE(mac_main_cfg_r13.pack(bref)); + } + if (phys_cfg_ded_r13_present) { + HANDLE_CODE(phys_cfg_ded_r13.pack(bref)); + } + if (rlf_timers_and_consts_r13_present) { + HANDLE_CODE(rlf_timers_and_consts_r13.pack(bref)); + } + + 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]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(sched_request_cfg_r15.is_present(), 1)); + if (sched_request_cfg_r15.is_present()) { + 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; } +SRSASN_CODE rr_cfg_ded_nb_r13_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(srb_to_add_mod_list_r13_present, 1)); + HANDLE_CODE(bref.unpack(drb_to_add_mod_list_r13_present, 1)); + HANDLE_CODE(bref.unpack(drb_to_release_list_r13_present, 1)); + HANDLE_CODE(bref.unpack(mac_main_cfg_r13_present, 1)); + HANDLE_CODE(bref.unpack(phys_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.unpack(rlf_timers_and_consts_r13_present, 1)); -void guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::destroy_() + if (srb_to_add_mod_list_r13_present) { + HANDLE_CODE(unpack_fixed_seq_of(&(srb_to_add_mod_list_r13)[0], bref, srb_to_add_mod_list_r13.size())); + } + if (drb_to_add_mod_list_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(drb_to_add_mod_list_r13, bref, 1, 2)); + } + if (drb_to_release_list_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(drb_to_release_list_r13, bref, 1, 2, integer_packer(1, 32))); + } + if (mac_main_cfg_r13_present) { + HANDLE_CODE(mac_main_cfg_r13.unpack(bref)); + } + if (phys_cfg_ded_r13_present) { + HANDLE_CODE(phys_cfg_ded_r13.unpack(bref)); + } + if (rlf_timers_and_consts_r13_present) { + HANDLE_CODE(rlf_timers_and_consts_r13.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 sched_request_cfg_r15_present; + HANDLE_CODE(bref.unpack(sched_request_cfg_r15_present, 1)); + sched_request_cfg_r15.set_present(sched_request_cfg_r15_present); + if (sched_request_cfg_r15.is_present()) { + 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; +} +void rr_cfg_ded_nb_r13_s::to_json(json_writer& j) const { - switch (type_) { - case types::sib_guardband_anchor_r15: - c.destroy(); - break; - case types::sib_guardband_guardband_r15: - c.destroy(); - break; - case types::sib_guardband_inband_same_pci_r15: - c.destroy(); - break; - case types::sib_guardbandinband_diff_pci_r15: - c.destroy(); - break; - default: - break; + j.start_obj(); + if (srb_to_add_mod_list_r13_present) { + j.start_array("srb-ToAddModList-r13"); + for (const auto& e1 : srb_to_add_mod_list_r13) { + e1.to_json(j); + } + j.end_array(); + } + if (drb_to_add_mod_list_r13_present) { + j.start_array("drb-ToAddModList-r13"); + for (const auto& e1 : drb_to_add_mod_list_r13) { + e1.to_json(j); + } + j.end_array(); + } + if (drb_to_release_list_r13_present) { + j.start_array("drb-ToReleaseList-r13"); + for (const auto& e1 : drb_to_release_list_r13) { + j.write_int(e1); + } + j.end_array(); + } + if (mac_main_cfg_r13_present) { + j.write_fieldname("mac-MainConfig-r13"); + mac_main_cfg_r13.to_json(j); + } + if (phys_cfg_ded_r13_present) { + j.write_fieldname("physicalConfigDedicated-r13"); + phys_cfg_ded_r13.to_json(j); + } + if (rlf_timers_and_consts_r13_present) { + j.write_fieldname("rlf-TimersAndConstants-r13"); + rlf_timers_and_consts_r13.to_json(j); + } + if (ext) { + if (sched_request_cfg_r15.is_present()) { + 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(); } -void guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::set(types::options e) + +void rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::set(types::options e) { - destroy_(); type_ = e; +} +mac_main_cfg_nb_r13_s& rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::set_explicit_value_r13() +{ + set(types::explicit_value_r13); + return c; +} +void rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::set_default_value_r13() +{ + set(types::default_value_r13); +} +void rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::to_json(json_writer& j) const +{ + j.start_obj(); switch (type_) { - case types::sib_guardband_anchor_r15: - c.init(); - break; - case types::sib_guardband_guardband_r15: - c.init(); - break; - case types::sib_guardband_inband_same_pci_r15: - c.init(); - break; - case types::sib_guardbandinband_diff_pci_r15: - c.init(); + case types::explicit_value_r13: + j.write_fieldname("explicitValue-r13"); + c.to_json(j); break; - case types::nulltype: + case types::default_value_r13: break; default: - log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); + log_invalid_choice_id(type_, "rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_"); } + j.end_obj(); } -guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::sib_guardband_info_r15_c_( - const guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_& other) +SRSASN_CODE rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::pack(bit_ref& bref) const { - type_ = other.type(); + type_.pack(bref); switch (type_) { - case types::sib_guardband_anchor_r15: - c.init(other.c.get()); - break; - case types::sib_guardband_guardband_r15: - c.init(other.c.get()); - break; - case types::sib_guardband_inband_same_pci_r15: - c.init(other.c.get()); - break; - case types::sib_guardbandinband_diff_pci_r15: - c.init(other.c.get()); + case types::explicit_value_r13: + HANDLE_CODE(c.pack(bref)); break; - case types::nulltype: + case types::default_value_r13: break; default: - log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); + log_invalid_choice_id(type_, "rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_"); + return SRSASN_ERROR_ENCODE_FAIL; } + return SRSASN_SUCCESS; } -guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_& guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::operator=( - const guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_& other) +SRSASN_CODE rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::unpack(cbit_ref& bref) { - if (this == &other) { - return *this; - } - set(other.type()); + types e; + e.unpack(bref); + set(e); switch (type_) { - case types::sib_guardband_anchor_r15: - c.set(other.c.get()); - break; - case types::sib_guardband_guardband_r15: - c.set(other.c.get()); - break; - case types::sib_guardband_inband_same_pci_r15: - c.set(other.c.get()); - break; - case types::sib_guardbandinband_diff_pci_r15: - c.set(other.c.get()); + case types::explicit_value_r13: + HANDLE_CODE(c.unpack(bref)); break; - case types::nulltype: + case types::default_value_r13: break; default: - log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); + log_invalid_choice_id(type_, "rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_"); + return SRSASN_ERROR_DECODE_FAIL; } - - return *this; + return SRSASN_SUCCESS; } -sib_guardband_anchor_tdd_nb_r15_s& guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::set_sib_guardband_anchor_r15() + +const char* rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::types_opts::to_string() const { - set(types::sib_guardband_anchor_r15); - return c.get(); + static const char* options[] = {"explicitValue-r13", "defaultValue-r13"}; + return convert_enum_idx(options, 2, value, "rr_cfg_ded_nb_r13_s::mac_main_cfg_r13_c_::types"); } -sib_guardband_guardband_tdd_nb_r15_s& -guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::set_sib_guardband_guardband_r15() + +// AS-Config-NB ::= SEQUENCE +SRSASN_CODE as_cfg_nb_s::pack(bit_ref& bref) const { - set(types::sib_guardband_guardband_r15); - return c.get(); -} -sib_guardband_inband_same_pci_tdd_nb_r15_s& -guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::set_sib_guardband_inband_same_pci_r15() -{ - set(types::sib_guardband_inband_same_pci_r15); - return c.get(); + bref.pack(ext, 1); + HANDLE_CODE(source_rr_cfg_r13.pack(bref)); + HANDLE_CODE(source_security_algorithm_cfg_r13.pack(bref)); + HANDLE_CODE(source_ue_id_r13.pack(bref)); + HANDLE_CODE(source_dl_carrier_freq_r13.pack(bref)); + + if (ext) { + ext_groups_packer_guard group_flags; + group_flags[0] |= source_dl_carrier_freq_v1550.is_present(); + group_flags.pack(bref); + + if (group_flags[0]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(source_dl_carrier_freq_v1550.is_present(), 1)); + if (source_dl_carrier_freq_v1550.is_present()) { + HANDLE_CODE(source_dl_carrier_freq_v1550->pack(bref)); + } + } + } + return SRSASN_SUCCESS; } -sib_guardband_inband_diff_pci_tdd_nb_r15_s& -guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::set_sib_guardbandinband_diff_pci_r15() +SRSASN_CODE as_cfg_nb_s::unpack(cbit_ref& bref) { - set(types::sib_guardbandinband_diff_pci_r15); - return c.get(); + bref.unpack(ext, 1); + HANDLE_CODE(source_rr_cfg_r13.unpack(bref)); + HANDLE_CODE(source_security_algorithm_cfg_r13.unpack(bref)); + HANDLE_CODE(source_ue_id_r13.unpack(bref)); + HANDLE_CODE(source_dl_carrier_freq_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); + + bool source_dl_carrier_freq_v1550_present; + HANDLE_CODE(bref.unpack(source_dl_carrier_freq_v1550_present, 1)); + source_dl_carrier_freq_v1550.set_present(source_dl_carrier_freq_v1550_present); + if (source_dl_carrier_freq_v1550.is_present()) { + HANDLE_CODE(source_dl_carrier_freq_v1550->unpack(bref)); + } + } + } + return SRSASN_SUCCESS; } -void guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::to_json(json_writer& j) const +void as_cfg_nb_s::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::sib_guardband_anchor_r15: - j.write_fieldname("sib-GuardbandAnchor-r15"); - c.get().to_json(j); - break; - case types::sib_guardband_guardband_r15: - j.write_fieldname("sib-GuardbandGuardband-r15"); - c.get().to_json(j); - break; - case types::sib_guardband_inband_same_pci_r15: - j.write_fieldname("sib-GuardbandInbandSamePCI-r15"); - c.get().to_json(j); - break; - case types::sib_guardbandinband_diff_pci_r15: - j.write_fieldname("sib-GuardbandinbandDiffPCI-r15"); - c.get().to_json(j); - break; - default: - log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); + j.write_fieldname("sourceRadioResourceConfig-r13"); + source_rr_cfg_r13.to_json(j); + j.write_fieldname("sourceSecurityAlgorithmConfig-r13"); + source_security_algorithm_cfg_r13.to_json(j); + j.write_str("sourceUE-Identity-r13", source_ue_id_r13.to_string()); + j.write_fieldname("sourceDl-CarrierFreq-r13"); + source_dl_carrier_freq_r13.to_json(j); + if (ext) { + if (source_dl_carrier_freq_v1550.is_present()) { + j.write_fieldname("sourceDL-CarrierFreq-v1550"); + source_dl_carrier_freq_v1550->to_json(j); + } } j.end_obj(); } -SRSASN_CODE guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::pack(bit_ref& bref) const + +// ReestablishmentInfo-NB ::= SEQUENCE +SRSASN_CODE reest_info_nb_s::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::sib_guardband_anchor_r15: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::sib_guardband_guardband_r15: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::sib_guardband_inband_same_pci_r15: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::sib_guardbandinband_diff_pci_r15: - HANDLE_CODE(c.get().pack(bref)); - break; - default: - log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); - return SRSASN_ERROR_ENCODE_FAIL; + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(add_reestab_info_list_r13_present, 1)); + + HANDLE_CODE(pack_integer(bref, source_pci_r13, (uint16_t)0u, (uint16_t)503u)); + HANDLE_CODE(target_cell_short_mac_i_r13.pack(bref)); + if (add_reestab_info_list_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, add_reestab_info_list_r13, 1, 32)); } + return SRSASN_SUCCESS; } -SRSASN_CODE guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::unpack(cbit_ref& bref) +SRSASN_CODE reest_info_nb_s::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::sib_guardband_anchor_r15: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::sib_guardband_guardband_r15: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::sib_guardband_inband_same_pci_r15: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::sib_guardbandinband_diff_pci_r15: - HANDLE_CODE(c.get().unpack(bref)); - break; - default: - log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); - return SRSASN_ERROR_DECODE_FAIL; + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(add_reestab_info_list_r13_present, 1)); + + HANDLE_CODE(unpack_integer(source_pci_r13, bref, (uint16_t)0u, (uint16_t)503u)); + HANDLE_CODE(target_cell_short_mac_i_r13.unpack(bref)); + if (add_reestab_info_list_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(add_reestab_info_list_r13, bref, 1, 32)); } + return SRSASN_SUCCESS; } - -const char* guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::types_opts::to_string() const +void reest_info_nb_s::to_json(json_writer& j) const { - static const char* options[] = {"sib-GuardbandAnchor-r15", - "sib-GuardbandGuardband-r15", - "sib-GuardbandInbandSamePCI-r15", - "sib-GuardbandinbandDiffPCI-r15"}; - return convert_enum_idx(options, 4, value, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::types"); + j.start_obj(); + j.write_int("sourcePhysCellId-r13", source_pci_r13); + j.write_str("targetCellShortMAC-I-r13", target_cell_short_mac_i_r13.to_string()); + if (add_reestab_info_list_r13_present) { + j.start_array("additionalReestabInfoList-r13"); + for (const auto& e1 : add_reestab_info_list_r13) { + e1.to_json(j); + } + j.end_array(); + } + j.end_obj(); } -const char* guardband_tdd_nb_r15_s::eutra_bandwitdh_r15_opts::to_string() const -{ - static const char* options[] = {"bw5or10", "bw15or20"}; - return convert_enum_idx(options, 2, value, "guardband_tdd_nb_r15_s::eutra_bandwitdh_r15_e_"); -} -uint8_t guardband_tdd_nb_r15_s::eutra_bandwitdh_r15_opts::to_number() const +// AS-Context-NB ::= SEQUENCE +SRSASN_CODE as_context_nb_s::pack(bit_ref& bref) const { - static const uint8_t options[] = {5, 15}; - return map_enum_number(options, 2, value, "guardband_tdd_nb_r15_s::eutra_bandwitdh_r15_e_"); -} + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(reest_info_r13_present, 1)); -// Inband-DifferentPCI-TDD-NB-r15 ::= SEQUENCE -SRSASN_CODE inband_different_pci_tdd_nb_r15_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(eutra_num_crs_ports_r15.pack(bref)); - HANDLE_CODE(raster_offset_r15.pack(bref)); - HANDLE_CODE(sib_inband_location_r15.pack(bref)); - HANDLE_CODE(spare.pack(bref)); + if (reest_info_r13_present) { + HANDLE_CODE(reest_info_r13.pack(bref)); + } return SRSASN_SUCCESS; } -SRSASN_CODE inband_different_pci_tdd_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE as_context_nb_s::unpack(cbit_ref& bref) { - HANDLE_CODE(eutra_num_crs_ports_r15.unpack(bref)); - HANDLE_CODE(raster_offset_r15.unpack(bref)); - HANDLE_CODE(sib_inband_location_r15.unpack(bref)); - HANDLE_CODE(spare.unpack(bref)); + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(reest_info_r13_present, 1)); + + if (reest_info_r13_present) { + HANDLE_CODE(reest_info_r13.unpack(bref)); + } return SRSASN_SUCCESS; } -void inband_different_pci_tdd_nb_r15_s::to_json(json_writer& j) const +void as_context_nb_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("eutra-NumCRS-Ports-r15", eutra_num_crs_ports_r15.to_string()); - j.write_str("rasterOffset-r15", raster_offset_r15.to_string()); - j.write_str("sib-InbandLocation-r15", sib_inband_location_r15.to_string()); - j.write_str("spare", spare.to_string()); + if (reest_info_r13_present) { + j.write_fieldname("reestablishmentInfo-r13"); + reest_info_r13.to_json(j); + } j.end_obj(); } -const char* inband_different_pci_tdd_nb_r15_s::eutra_num_crs_ports_r15_opts::to_string() const +// ChannelRasterOffset-NB-r13 ::= ENUMERATED +const char* ch_raster_offset_nb_r13_opts::to_string() const { - static const char* options[] = {"same", "four"}; - return convert_enum_idx(options, 2, value, "inband_different_pci_tdd_nb_r15_s::eutra_num_crs_ports_r15_e_"); + static const char* options[] = {"khz-7dot5", "khz-2dot5", "khz2dot5", "khz7dot5"}; + return convert_enum_idx(options, 4, value, "ch_raster_offset_nb_r13_e"); } -uint8_t inband_different_pci_tdd_nb_r15_s::eutra_num_crs_ports_r15_opts::to_number() const +float ch_raster_offset_nb_r13_opts::to_number() const { - if (value == four) { - return 4; - } - invalid_enum_number(value, "inband_different_pci_tdd_nb_r15_s::eutra_num_crs_ports_r15_e_"); - return 0; + static const float options[] = {-7.5, -2.5, 2.5, 7.5}; + return map_enum_number(options, 4, value, "ch_raster_offset_nb_r13_e"); } - -const char* inband_different_pci_tdd_nb_r15_s::sib_inband_location_r15_opts::to_string() const +const char* ch_raster_offset_nb_r13_opts::to_number_string() const { - static const char* options[] = {"lower", "higher"}; - return convert_enum_idx(options, 2, value, "inband_different_pci_tdd_nb_r15_s::sib_inband_location_r15_e_"); + static const char* options[] = {"-7.5", "-2.5", "2.5", "7.5"}; + return convert_enum_idx(options, 4, value, "ch_raster_offset_nb_r13_e"); } -// Inband-SamePCI-TDD-NB-r15 ::= SEQUENCE -SRSASN_CODE inband_same_pci_tdd_nb_r15_s::pack(bit_ref& bref) const +// Guardband-NB-r13 ::= SEQUENCE +SRSASN_CODE guardband_nb_r13_s::pack(bit_ref& bref) const { - HANDLE_CODE(pack_integer(bref, eutra_crs_seq_info_r15, (uint8_t)0u, (uint8_t)31u)); - HANDLE_CODE(sib_inband_location_r15.pack(bref)); + HANDLE_CODE(raster_offset_r13.pack(bref)); + HANDLE_CODE(spare.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE inband_same_pci_tdd_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE guardband_nb_r13_s::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_integer(eutra_crs_seq_info_r15, bref, (uint8_t)0u, (uint8_t)31u)); - HANDLE_CODE(sib_inband_location_r15.unpack(bref)); + HANDLE_CODE(raster_offset_r13.unpack(bref)); + HANDLE_CODE(spare.unpack(bref)); return SRSASN_SUCCESS; } -void inband_same_pci_tdd_nb_r15_s::to_json(json_writer& j) const +void guardband_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("eutra-CRS-SequenceInfo-r15", eutra_crs_seq_info_r15); - j.write_str("sib-InbandLocation-r15", sib_inband_location_r15.to_string()); + j.write_str("rasterOffset-r13", raster_offset_r13.to_string()); + j.write_str("spare", spare.to_string()); j.end_obj(); } -const char* inband_same_pci_tdd_nb_r15_s::sib_inband_location_r15_opts::to_string() const +// Inband-DifferentPCI-NB-r13 ::= SEQUENCE +SRSASN_CODE inband_different_pci_nb_r13_s::pack(bit_ref& bref) const { - static const char* options[] = {"lower", "higher"}; - return convert_enum_idx(options, 2, value, "inband_same_pci_tdd_nb_r15_s::sib_inband_location_r15_e_"); -} - -// StandaloneTDD-NB-r15 ::= SEQUENCE -SRSASN_CODE standalone_tdd_nb_r15_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(sib_standalone_location_r15.pack(bref)); + HANDLE_CODE(eutra_num_crs_ports_r13.pack(bref)); + HANDLE_CODE(raster_offset_r13.pack(bref)); HANDLE_CODE(spare.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE standalone_tdd_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE inband_different_pci_nb_r13_s::unpack(cbit_ref& bref) { - HANDLE_CODE(sib_standalone_location_r15.unpack(bref)); + HANDLE_CODE(eutra_num_crs_ports_r13.unpack(bref)); + HANDLE_CODE(raster_offset_r13.unpack(bref)); HANDLE_CODE(spare.unpack(bref)); return SRSASN_SUCCESS; } -void standalone_tdd_nb_r15_s::to_json(json_writer& j) const +void inband_different_pci_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("sib-StandaloneLocation-r15", sib_standalone_location_r15.to_string()); + j.write_str("eutra-NumCRS-Ports-r13", eutra_num_crs_ports_r13.to_string()); + j.write_str("rasterOffset-r13", raster_offset_r13.to_string()); j.write_str("spare", spare.to_string()); j.end_obj(); } -const char* standalone_tdd_nb_r15_s::sib_standalone_location_r15_opts::to_string() const +const char* inband_different_pci_nb_r13_s::eutra_num_crs_ports_r13_opts::to_string() const { - static const char* options[] = {"lower", "higher"}; - return convert_enum_idx(options, 2, value, "standalone_tdd_nb_r15_s::sib_standalone_location_r15_e_"); + static const char* options[] = {"same", "four"}; + return convert_enum_idx(options, 2, value, "inband_different_pci_nb_r13_s::eutra_num_crs_ports_r13_e_"); +} +uint8_t inband_different_pci_nb_r13_s::eutra_num_crs_ports_r13_opts::to_number() const +{ + if (value == four) { + return 4; + } + invalid_enum_number(value, "inband_different_pci_nb_r13_s::eutra_num_crs_ports_r13_e_"); + return 0; } -// MasterInformationBlock-TDD-NB-r15 ::= SEQUENCE -SRSASN_CODE mib_tdd_nb_r15_s::pack(bit_ref& bref) const +// Inband-SamePCI-NB-r13 ::= SEQUENCE +SRSASN_CODE inband_same_pci_nb_r13_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_integer(bref, eutra_crs_seq_info_r13, (uint8_t)0u, (uint8_t)31u)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE inband_same_pci_nb_r13_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(eutra_crs_seq_info_r13, bref, (uint8_t)0u, (uint8_t)31u)); + + return SRSASN_SUCCESS; +} +void inband_same_pci_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("eutra-CRS-SequenceInfo-r13", eutra_crs_seq_info_r13); + j.end_obj(); +} + +// Standalone-NB-r13 ::= SEQUENCE +SRSASN_CODE standalone_nb_r13_s::pack(bit_ref& bref) const { - HANDLE_CODE(sys_frame_num_msb_r15.pack(bref)); - HANDLE_CODE(hyper_sfn_lsb_r15.pack(bref)); - HANDLE_CODE(pack_integer(bref, sched_info_sib1_r15, (uint8_t)0u, (uint8_t)15u)); - HANDLE_CODE(pack_integer(bref, sys_info_value_tag_r15, (uint8_t)0u, (uint8_t)31u)); - 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(spare.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE mib_tdd_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE standalone_nb_r13_s::unpack(cbit_ref& bref) { - HANDLE_CODE(sys_frame_num_msb_r15.unpack(bref)); - HANDLE_CODE(hyper_sfn_lsb_r15.unpack(bref)); - HANDLE_CODE(unpack_integer(sched_info_sib1_r15, bref, (uint8_t)0u, (uint8_t)15u)); - HANDLE_CODE(unpack_integer(sys_info_value_tag_r15, bref, (uint8_t)0u, (uint8_t)31u)); - 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(spare.unpack(bref)); return SRSASN_SUCCESS; } -void mib_tdd_nb_r15_s::to_json(json_writer& j) const +void standalone_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("systemFrameNumber-MSB-r15", sys_frame_num_msb_r15.to_string()); - j.write_str("hyperSFN-LSB-r15", hyper_sfn_lsb_r15.to_string()); - j.write_int("schedulingInfoSIB1-r15", sched_info_sib1_r15); - j.write_int("systemInfoValueTag-r15", sys_info_value_tag_r15); - j.write_bool("ab-Enabled-r15", ab_enabled_r15); - 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_str("spare", spare.to_string()); j.end_obj(); } -void mib_tdd_nb_r15_s::operation_mode_info_r15_c_::destroy_() +// MasterInformationBlock-NB ::= SEQUENCE +SRSASN_CODE mib_nb_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(sys_frame_num_msb_r13.pack(bref)); + HANDLE_CODE(hyper_sfn_lsb_r13.pack(bref)); + HANDLE_CODE(pack_integer(bref, sched_info_sib1_r13, (uint8_t)0u, (uint8_t)15u)); + HANDLE_CODE(pack_integer(bref, sys_info_value_tag_r13, (uint8_t)0u, (uint8_t)31u)); + 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; +} +SRSASN_CODE mib_nb_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(sys_frame_num_msb_r13.unpack(bref)); + HANDLE_CODE(hyper_sfn_lsb_r13.unpack(bref)); + HANDLE_CODE(unpack_integer(sched_info_sib1_r13, bref, (uint8_t)0u, (uint8_t)15u)); + HANDLE_CODE(unpack_integer(sys_info_value_tag_r13, bref, (uint8_t)0u, (uint8_t)31u)); + 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; +} +void mib_nb_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("systemFrameNumber-MSB-r13", sys_frame_num_msb_r13.to_string()); + j.write_str("hyperSFN-LSB-r13", hyper_sfn_lsb_r13.to_string()); + j.write_int("schedulingInfoSIB1-r13", sched_info_sib1_r13); + j.write_int("systemInfoValueTag-r13", sys_info_value_tag_r13); + j.write_bool("ab-Enabled-r13", ab_enabled_r13); + 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(); +} + +void mib_nb_s::operation_mode_info_r13_c_::destroy_() { switch (type_) { - case types::inband_same_pci_r15: - c.destroy(); + case types::inband_same_pci_r13: + c.destroy(); break; - case types::inband_different_pci_r15: - c.destroy(); + case types::inband_different_pci_r13: + c.destroy(); break; - case types::guardband_r15: - c.destroy(); + case types::guardband_r13: + c.destroy(); break; - case types::standalone_r15: - c.destroy(); + case types::standalone_r13: + c.destroy(); break; default: break; } } -void mib_tdd_nb_r15_s::operation_mode_info_r15_c_::set(types::options e) +void mib_nb_s::operation_mode_info_r13_c_::set(types::options e) { destroy_(); type_ = e; switch (type_) { - case types::inband_same_pci_r15: - c.init(); + case types::inband_same_pci_r13: + c.init(); break; - case types::inband_different_pci_r15: - c.init(); + case types::inband_different_pci_r13: + c.init(); break; - case types::guardband_r15: - c.init(); + case types::guardband_r13: + c.init(); break; - case types::standalone_r15: - c.init(); + case types::standalone_r13: + c.init(); break; case types::nulltype: break; default: - log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); } } -mib_tdd_nb_r15_s::operation_mode_info_r15_c_::operation_mode_info_r15_c_( - const mib_tdd_nb_r15_s::operation_mode_info_r15_c_& other) +mib_nb_s::operation_mode_info_r13_c_::operation_mode_info_r13_c_(const mib_nb_s::operation_mode_info_r13_c_& other) { type_ = other.type(); switch (type_) { - case types::inband_same_pci_r15: - c.init(other.c.get()); + case types::inband_same_pci_r13: + c.init(other.c.get()); break; - case types::inband_different_pci_r15: - c.init(other.c.get()); + case types::inband_different_pci_r13: + c.init(other.c.get()); break; - case types::guardband_r15: - c.init(other.c.get()); + case types::guardband_r13: + c.init(other.c.get()); break; - case types::standalone_r15: - c.init(other.c.get()); + case types::standalone_r13: + c.init(other.c.get()); break; case types::nulltype: break; default: - log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); } } -mib_tdd_nb_r15_s::operation_mode_info_r15_c_& -mib_tdd_nb_r15_s::operation_mode_info_r15_c_::operator=(const mib_tdd_nb_r15_s::operation_mode_info_r15_c_& other) +mib_nb_s::operation_mode_info_r13_c_& +mib_nb_s::operation_mode_info_r13_c_::operator=(const mib_nb_s::operation_mode_info_r13_c_& other) { if (this == &other) { return *this; } set(other.type()); switch (type_) { - case types::inband_same_pci_r15: - c.set(other.c.get()); + case types::inband_same_pci_r13: + c.set(other.c.get()); break; - case types::inband_different_pci_r15: - c.set(other.c.get()); + case types::inband_different_pci_r13: + c.set(other.c.get()); break; - case types::guardband_r15: - c.set(other.c.get()); + case types::guardband_r13: + c.set(other.c.get()); break; - case types::standalone_r15: - c.set(other.c.get()); + case types::standalone_r13: + c.set(other.c.get()); break; case types::nulltype: break; default: - log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); } return *this; } -inband_same_pci_tdd_nb_r15_s& mib_tdd_nb_r15_s::operation_mode_info_r15_c_::set_inband_same_pci_r15() +inband_same_pci_nb_r13_s& mib_nb_s::operation_mode_info_r13_c_::set_inband_same_pci_r13() { - set(types::inband_same_pci_r15); - return c.get(); + set(types::inband_same_pci_r13); + return c.get(); } -inband_different_pci_tdd_nb_r15_s& mib_tdd_nb_r15_s::operation_mode_info_r15_c_::set_inband_different_pci_r15() +inband_different_pci_nb_r13_s& mib_nb_s::operation_mode_info_r13_c_::set_inband_different_pci_r13() { - set(types::inband_different_pci_r15); - return c.get(); + set(types::inband_different_pci_r13); + return c.get(); } -guardband_tdd_nb_r15_s& mib_tdd_nb_r15_s::operation_mode_info_r15_c_::set_guardband_r15() +guardband_nb_r13_s& mib_nb_s::operation_mode_info_r13_c_::set_guardband_r13() { - set(types::guardband_r15); - return c.get(); + set(types::guardband_r13); + return c.get(); } -standalone_tdd_nb_r15_s& mib_tdd_nb_r15_s::operation_mode_info_r15_c_::set_standalone_r15() +standalone_nb_r13_s& mib_nb_s::operation_mode_info_r13_c_::set_standalone_r13() { - set(types::standalone_r15); - return c.get(); + set(types::standalone_r13); + return c.get(); } -void mib_tdd_nb_r15_s::operation_mode_info_r15_c_::to_json(json_writer& j) const +void mib_nb_s::operation_mode_info_r13_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::inband_same_pci_r15: - j.write_fieldname("inband-SamePCI-r15"); - c.get().to_json(j); + case types::inband_same_pci_r13: + j.write_fieldname("inband-SamePCI-r13"); + c.get().to_json(j); break; - case types::inband_different_pci_r15: - j.write_fieldname("inband-DifferentPCI-r15"); - c.get().to_json(j); + case types::inband_different_pci_r13: + j.write_fieldname("inband-DifferentPCI-r13"); + c.get().to_json(j); break; - case types::guardband_r15: - j.write_fieldname("guardband-r15"); - c.get().to_json(j); + case types::guardband_r13: + j.write_fieldname("guardband-r13"); + c.get().to_json(j); break; - case types::standalone_r15: - j.write_fieldname("standalone-r15"); - c.get().to_json(j); + case types::standalone_r13: + j.write_fieldname("standalone-r13"); + c.get().to_json(j); break; default: - log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); } j.end_obj(); } -SRSASN_CODE mib_tdd_nb_r15_s::operation_mode_info_r15_c_::pack(bit_ref& bref) const +SRSASN_CODE mib_nb_s::operation_mode_info_r13_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::inband_same_pci_r15: - HANDLE_CODE(c.get().pack(bref)); + case types::inband_same_pci_r13: + HANDLE_CODE(c.get().pack(bref)); break; - case types::inband_different_pci_r15: - HANDLE_CODE(c.get().pack(bref)); + case types::inband_different_pci_r13: + HANDLE_CODE(c.get().pack(bref)); break; - case types::guardband_r15: - HANDLE_CODE(c.get().pack(bref)); + case types::guardband_r13: + HANDLE_CODE(c.get().pack(bref)); break; - case types::standalone_r15: - HANDLE_CODE(c.get().pack(bref)); + case types::standalone_r13: + HANDLE_CODE(c.get().pack(bref)); break; default: - log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE mib_tdd_nb_r15_s::operation_mode_info_r15_c_::unpack(cbit_ref& bref) +SRSASN_CODE mib_nb_s::operation_mode_info_r13_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::inband_same_pci_r15: - HANDLE_CODE(c.get().unpack(bref)); + case types::inband_same_pci_r13: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::inband_different_pci_r15: - HANDLE_CODE(c.get().unpack(bref)); + case types::inband_different_pci_r13: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::guardband_r15: - HANDLE_CODE(c.get().unpack(bref)); + case types::guardband_r13: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::standalone_r15: - HANDLE_CODE(c.get().unpack(bref)); + case types::standalone_r13: + HANDLE_CODE(c.get().unpack(bref)); break; default: - log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + log_invalid_choice_id(type_, "mib_nb_s::operation_mode_info_r13_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* mib_tdd_nb_r15_s::operation_mode_info_r15_c_::types_opts::to_string() const +const char* mib_nb_s::operation_mode_info_r13_c_::types_opts::to_string() const { - static const char* options[] = {"inband-SamePCI-r15", "inband-DifferentPCI-r15", "guardband-r15", "standalone-r15"}; - return convert_enum_idx(options, 4, value, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_::types"); + static const char* options[] = {"inband-SamePCI-r13", "inband-DifferentPCI-r13", "guardband-r13", "standalone-r13"}; + return convert_enum_idx(options, 4, value, "mib_nb_s::operation_mode_info_r13_c_::types"); } -uint8_t mib_tdd_nb_r15_s::operation_mode_info_r15_c_::types_opts::to_number() const +uint8_t mib_nb_s::operation_mode_info_r13_c_::types_opts::to_number() const { - if (value == standalone_r15) { + if (value == standalone_r13) { return 1; } - invalid_enum_number(value, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_::types"); + invalid_enum_number(value, "mib_nb_s::operation_mode_info_r13_c_::types"); return 0; } -const char* mib_tdd_nb_r15_s::sib1_carrier_info_r15_opts::to_string() const +void mib_nb_s::part_earfcn_minus17_c_::destroy_() { - static const char* options[] = {"anchor", "non-anchor"}; - return convert_enum_idx(options, 2, value, "mib_tdd_nb_r15_s::sib1_carrier_info_r15_e_"); + switch (type_) { + case types::spare: + c.destroy >(); + break; + case types::earfcn_lsb: + c.destroy >(); + 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 >(); + break; + case types::earfcn_lsb: + c.init >(); + 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 >()); + break; + case types::earfcn_lsb: + c.init(other.c.get >()); + 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 >()); + break; + case types::earfcn_lsb: + c.set(other.c.get >()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "mib_nb_s::part_earfcn_minus17_c_"); + } -// BCCH-BCH-Message-TDD-NB ::= SEQUENCE -SRSASN_CODE bcch_bch_msg_tdd_nb_s::pack(bit_ref& bref) const + return *this; +} +fixed_bitstring<2>& mib_nb_s::part_earfcn_minus17_c_::set_spare() +{ + set(types::spare); + return c.get >(); +} +fixed_bitstring<2>& mib_nb_s::part_earfcn_minus17_c_::set_earfcn_lsb() +{ + set(types::earfcn_lsb); + return c.get >(); +} +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 >().to_string()); + break; + case types::earfcn_lsb: + j.write_str("earfcn-LSB", c.get >().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 >().pack(bref)); + break; + case types::earfcn_lsb: + HANDLE_CODE(c.get >().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 >().unpack(bref)); + break; + case types::earfcn_lsb: + HANDLE_CODE(c.get >().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 { HANDLE_CODE(msg.pack(bref)); @@ -4668,7 +5673,7 @@ SRSASN_CODE bcch_bch_msg_tdd_nb_s::pack(bit_ref& bref) const return SRSASN_SUCCESS; } -SRSASN_CODE bcch_bch_msg_tdd_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE bcch_bch_msg_nb_s::unpack(cbit_ref& bref) { HANDLE_CODE(msg.unpack(bref)); @@ -4676,11 +5681,11 @@ SRSASN_CODE bcch_bch_msg_tdd_nb_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void bcch_bch_msg_tdd_nb_s::to_json(json_writer& j) const +void bcch_bch_msg_nb_s::to_json(json_writer& j) const { j.start_array(); j.start_obj(); - j.start_obj("BCCH-BCH-Message-TDD-NB"); + j.start_obj("BCCH-BCH-Message-NB"); j.write_fieldname("message"); msg.to_json(j); j.end_obj(); @@ -4688,1274 +5693,1309 @@ void bcch_bch_msg_tdd_nb_s::to_json(json_writer& j) const j.end_array(); } -// NS-PmaxValue-NB-r13 ::= SEQUENCE -SRSASN_CODE ns_pmax_value_nb_r13_s::pack(bit_ref& bref) const +// SIB-GuardbandAnchorTDD-NB-r15 ::= SEQUENCE +SRSASN_CODE sib_guardband_anchor_tdd_nb_r15_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(add_pmax_r13_present, 1)); - - if (add_pmax_r13_present) { - HANDLE_CODE(pack_integer(bref, add_pmax_r13, (int8_t)-30, (int8_t)33)); - } - HANDLE_CODE(pack_integer(bref, add_spec_emission_r13, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(spare.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE ns_pmax_value_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE sib_guardband_anchor_tdd_nb_r15_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(add_pmax_r13_present, 1)); - - if (add_pmax_r13_present) { - HANDLE_CODE(unpack_integer(add_pmax_r13, bref, (int8_t)-30, (int8_t)33)); - } - HANDLE_CODE(unpack_integer(add_spec_emission_r13, bref, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(spare.unpack(bref)); return SRSASN_SUCCESS; } -void ns_pmax_value_nb_r13_s::to_json(json_writer& j) const +void sib_guardband_anchor_tdd_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - if (add_pmax_r13_present) { - j.write_int("additionalPmax-r13", add_pmax_r13); - } - j.write_int("additionalSpectrumEmission-r13", add_spec_emission_r13); + j.write_str("spare", spare.to_string()); 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"}; - 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"); -} - -// NSSS-RRM-Config-NB-r15 ::= SEQUENCE -SRSASN_CODE nsss_rrm_cfg_nb_r15_s::pack(bit_ref& bref) const +// SIB-GuardbandGuardbandTDD-NB-r15 ::= SEQUENCE +SRSASN_CODE sib_guardband_guardband_tdd_nb_r15_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(nsss_num_occ_diff_precoders_r15_present, 1)); - - HANDLE_CODE(nsss_rrm_pwr_offset_r15.pack(bref)); - if (nsss_num_occ_diff_precoders_r15_present) { - HANDLE_CODE(nsss_num_occ_diff_precoders_r15.pack(bref)); - } + HANDLE_CODE(sib_guardband_guardband_location_r15.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE nsss_rrm_cfg_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE sib_guardband_guardband_tdd_nb_r15_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(nsss_num_occ_diff_precoders_r15_present, 1)); - - HANDLE_CODE(nsss_rrm_pwr_offset_r15.unpack(bref)); - if (nsss_num_occ_diff_precoders_r15_present) { - HANDLE_CODE(nsss_num_occ_diff_precoders_r15.unpack(bref)); - } + HANDLE_CODE(sib_guardband_guardband_location_r15.unpack(bref)); return SRSASN_SUCCESS; } -void nsss_rrm_cfg_nb_r15_s::to_json(json_writer& j) const +void sib_guardband_guardband_tdd_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("nsss-RRM-PowerOffset-r15", nsss_rrm_pwr_offset_r15.to_string()); - if (nsss_num_occ_diff_precoders_r15_present) { - j.write_str("nsss-NumOccDiffPrecoders-r15", nsss_num_occ_diff_precoders_r15.to_string()); - } + j.write_str("sib-GuardbandGuardbandLocation-r15", sib_guardband_guardband_location_r15.to_string()); j.end_obj(); } -const char* nsss_rrm_cfg_nb_r15_s::nsss_rrm_pwr_offset_r15_opts::to_string() const -{ - static const char* options[] = {"dB-3", "db0", "dB3"}; - return convert_enum_idx(options, 3, value, "nsss_rrm_cfg_nb_r15_s::nsss_rrm_pwr_offset_r15_e_"); -} -int8_t nsss_rrm_cfg_nb_r15_s::nsss_rrm_pwr_offset_r15_opts::to_number() const -{ - static const int8_t options[] = {-3, 0, 3}; - return map_enum_number(options, 3, value, "nsss_rrm_cfg_nb_r15_s::nsss_rrm_pwr_offset_r15_e_"); -} - -const char* nsss_rrm_cfg_nb_r15_s::nsss_num_occ_diff_precoders_r15_opts::to_string() const -{ - static const char* options[] = {"n1", "n2", "n4", "n8"}; - return convert_enum_idx(options, 4, value, "nsss_rrm_cfg_nb_r15_s::nsss_num_occ_diff_precoders_r15_e_"); -} -uint8_t nsss_rrm_cfg_nb_r15_s::nsss_num_occ_diff_precoders_r15_opts::to_number() const +const char* sib_guardband_guardband_tdd_nb_r15_s::sib_guardband_guardband_location_r15_opts::to_string() const { - static const uint8_t options[] = {1, 2, 4, 8}; - return map_enum_number(options, 4, value, "nsss_rrm_cfg_nb_r15_s::nsss_num_occ_diff_precoders_r15_e_"); + static const char* options[] = {"same", "opposite"}; + return convert_enum_idx( + options, 2, value, "sib_guardband_guardband_tdd_nb_r15_s::sib_guardband_guardband_location_r15_e_"); } -// EDT-TBS-NB-r15 ::= SEQUENCE -SRSASN_CODE edt_tbs_nb_r15_s::pack(bit_ref& bref) const +// SIB-GuardbandInbandDiffPCI-TDD-NB-r15 ::= SEQUENCE +SRSASN_CODE sib_guardband_inband_diff_pci_tdd_nb_r15_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(edt_small_tbs_enabled_r15, 1)); - HANDLE_CODE(edt_tbs_r15.pack(bref)); + HANDLE_CODE(sib_eutra_num_crs_ports_r15.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE edt_tbs_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE sib_guardband_inband_diff_pci_tdd_nb_r15_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(edt_small_tbs_enabled_r15, 1)); - HANDLE_CODE(edt_tbs_r15.unpack(bref)); + HANDLE_CODE(sib_eutra_num_crs_ports_r15.unpack(bref)); return SRSASN_SUCCESS; } -void edt_tbs_nb_r15_s::to_json(json_writer& j) const +void sib_guardband_inband_diff_pci_tdd_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - j.write_bool("edt-SmallTBS-Enabled-r15", edt_small_tbs_enabled_r15); - j.write_str("edt-TBS-r15", edt_tbs_r15.to_string()); + j.write_str("sib-EUTRA-NumCRS-Ports-r15", sib_eutra_num_crs_ports_r15.to_string()); j.end_obj(); } -const char* edt_tbs_nb_r15_s::edt_tbs_r15_opts::to_string() const +const char* sib_guardband_inband_diff_pci_tdd_nb_r15_s::sib_eutra_num_crs_ports_r15_opts::to_string() const { - static const char* options[] = {"b328", "b408", "b504", "b584", "b680", "b808", "b936", "b1000"}; - return convert_enum_idx(options, 8, value, "edt_tbs_nb_r15_s::edt_tbs_r15_e_"); + static const char* options[] = {"same", "four"}; + return convert_enum_idx( + options, 2, value, "sib_guardband_inband_diff_pci_tdd_nb_r15_s::sib_eutra_num_crs_ports_r15_e_"); } -uint16_t edt_tbs_nb_r15_s::edt_tbs_r15_opts::to_number() const +uint8_t sib_guardband_inband_diff_pci_tdd_nb_r15_s::sib_eutra_num_crs_ports_r15_opts::to_number() const { - static const uint16_t options[] = {328, 408, 504, 584, 680, 808, 936, 1000}; - return map_enum_number(options, 8, value, "edt_tbs_nb_r15_s::edt_tbs_r15_e_"); + if (value == four) { + return 4; + } + invalid_enum_number(value, "sib_guardband_inband_diff_pci_tdd_nb_r15_s::sib_eutra_num_crs_ports_r15_e_"); + return 0; } -// InterFreqNeighCellInfo-NB-v1530 ::= SEQUENCE -SRSASN_CODE inter_freq_neigh_cell_info_nb_v1530_s::pack(bit_ref& bref) const +// SIB-GuardbandInbandSamePCI-TDD-NB-r15 ::= SEQUENCE +SRSASN_CODE sib_guardband_inband_same_pci_tdd_nb_r15_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(nsss_rrm_cfg_r15_present, 1)); - - if (nsss_rrm_cfg_r15_present) { - HANDLE_CODE(nsss_rrm_cfg_r15.pack(bref)); - } + HANDLE_CODE(spare.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE inter_freq_neigh_cell_info_nb_v1530_s::unpack(cbit_ref& bref) +SRSASN_CODE sib_guardband_inband_same_pci_tdd_nb_r15_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(nsss_rrm_cfg_r15_present, 1)); - - if (nsss_rrm_cfg_r15_present) { - HANDLE_CODE(nsss_rrm_cfg_r15.unpack(bref)); - } + HANDLE_CODE(spare.unpack(bref)); return SRSASN_SUCCESS; } -void inter_freq_neigh_cell_info_nb_v1530_s::to_json(json_writer& j) const +void sib_guardband_inband_same_pci_tdd_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - if (nsss_rrm_cfg_r15_present) { - j.write_fieldname("nsss-RRM-Config-r15"); - nsss_rrm_cfg_r15.to_json(j); - } + j.write_str("spare", spare.to_string()); j.end_obj(); } -// MultiBandInfo-NB-r13 ::= SEQUENCE -SRSASN_CODE multi_band_info_nb_r13_s::pack(bit_ref& bref) const +// GuardbandTDD-NB-r15 ::= SEQUENCE +SRSASN_CODE guardband_tdd_nb_r15_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(freq_band_ind_r13_present, 1)); - HANDLE_CODE(bref.pack(freq_band_info_r13_present, 1)); - - if (freq_band_ind_r13_present) { - HANDLE_CODE(pack_integer(bref, freq_band_ind_r13, (uint16_t)1u, (uint16_t)256u)); - } - if (freq_band_info_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_info_r13, 1, 4)); - } + HANDLE_CODE(raster_offset_r15.pack(bref)); + HANDLE_CODE(sib_guardband_info_r15.pack(bref)); + HANDLE_CODE(eutra_bandwitdh_r15.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE multi_band_info_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE guardband_tdd_nb_r15_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(freq_band_ind_r13_present, 1)); - HANDLE_CODE(bref.unpack(freq_band_info_r13_present, 1)); - - if (freq_band_ind_r13_present) { - HANDLE_CODE(unpack_integer(freq_band_ind_r13, bref, (uint16_t)1u, (uint16_t)256u)); - } - if (freq_band_info_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(freq_band_info_r13, bref, 1, 4)); - } + HANDLE_CODE(raster_offset_r15.unpack(bref)); + HANDLE_CODE(sib_guardband_info_r15.unpack(bref)); + HANDLE_CODE(eutra_bandwitdh_r15.unpack(bref)); return SRSASN_SUCCESS; } -void multi_band_info_nb_r13_s::to_json(json_writer& j) const +void guardband_tdd_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - if (freq_band_ind_r13_present) { - j.write_int("freqBandIndicator-r13", freq_band_ind_r13); - } - if (freq_band_info_r13_present) { - j.start_array("freqBandInfo-r13"); - for (const auto& e1 : freq_band_info_r13) { - e1.to_json(j); - } - j.end_array(); - } + j.write_str("rasterOffset-r15", raster_offset_r15.to_string()); + j.write_fieldname("sib-GuardbandInfo-r15"); + sib_guardband_info_r15.to_json(j); + j.write_str("eutra-Bandwitdh-r15", eutra_bandwitdh_r15.to_string()); j.end_obj(); } -// NPRACH-Parameters-NB-r13 ::= SEQUENCE -SRSASN_CODE nprach_params_nb_r13_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(nprach_periodicity_r13.pack(bref)); - HANDLE_CODE(nprach_start_time_r13.pack(bref)); - HANDLE_CODE(nprach_subcarrier_offset_r13.pack(bref)); - HANDLE_CODE(nprach_num_subcarriers_r13.pack(bref)); - HANDLE_CODE(nprach_subcarrier_msg3_range_start_r13.pack(bref)); - HANDLE_CODE(max_num_preamb_attempt_ce_r13.pack(bref)); - HANDLE_CODE(num_repeats_per_preamb_attempt_r13.pack(bref)); - HANDLE_CODE(npdcch_num_repeats_ra_r13.pack(bref)); - HANDLE_CODE(npdcch_start_sf_css_ra_r13.pack(bref)); - HANDLE_CODE(npdcch_offset_ra_r13.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE nprach_params_nb_r13_s::unpack(cbit_ref& bref) +void guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::destroy_() { - HANDLE_CODE(nprach_periodicity_r13.unpack(bref)); - HANDLE_CODE(nprach_start_time_r13.unpack(bref)); - HANDLE_CODE(nprach_subcarrier_offset_r13.unpack(bref)); - HANDLE_CODE(nprach_num_subcarriers_r13.unpack(bref)); - HANDLE_CODE(nprach_subcarrier_msg3_range_start_r13.unpack(bref)); - HANDLE_CODE(max_num_preamb_attempt_ce_r13.unpack(bref)); - HANDLE_CODE(num_repeats_per_preamb_attempt_r13.unpack(bref)); - HANDLE_CODE(npdcch_num_repeats_ra_r13.unpack(bref)); - HANDLE_CODE(npdcch_start_sf_css_ra_r13.unpack(bref)); - HANDLE_CODE(npdcch_offset_ra_r13.unpack(bref)); - - return SRSASN_SUCCESS; + switch (type_) { + case types::sib_guardband_anchor_r15: + c.destroy(); + break; + case types::sib_guardband_guardband_r15: + c.destroy(); + break; + case types::sib_guardband_inband_same_pci_r15: + c.destroy(); + break; + case types::sib_guardbandinband_diff_pci_r15: + c.destroy(); + break; + default: + break; + } } -void nprach_params_nb_r13_s::to_json(json_writer& j) const +void guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::set(types::options e) { - j.start_obj(); - j.write_str("nprach-Periodicity-r13", nprach_periodicity_r13.to_string()); - j.write_str("nprach-StartTime-r13", nprach_start_time_r13.to_string()); - j.write_str("nprach-SubcarrierOffset-r13", nprach_subcarrier_offset_r13.to_string()); - j.write_str("nprach-NumSubcarriers-r13", nprach_num_subcarriers_r13.to_string()); - j.write_str("nprach-SubcarrierMSG3-RangeStart-r13", nprach_subcarrier_msg3_range_start_r13.to_string()); - j.write_str("maxNumPreambleAttemptCE-r13", max_num_preamb_attempt_ce_r13.to_string()); - j.write_str("numRepetitionsPerPreambleAttempt-r13", num_repeats_per_preamb_attempt_r13.to_string()); - j.write_str("npdcch-NumRepetitions-RA-r13", npdcch_num_repeats_ra_r13.to_string()); - j.write_str("npdcch-StartSF-CSS-RA-r13", npdcch_start_sf_css_ra_r13.to_string()); - j.write_str("npdcch-Offset-RA-r13", npdcch_offset_ra_r13.to_string()); - j.end_obj(); + destroy_(); + type_ = e; + switch (type_) { + case types::sib_guardband_anchor_r15: + c.init(); + break; + case types::sib_guardband_guardband_r15: + c.init(); + break; + case types::sib_guardband_inband_same_pci_r15: + c.init(); + break; + case types::sib_guardbandinband_diff_pci_r15: + c.init(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); + } } - -const char* nprach_params_nb_r13_s::nprach_periodicity_r13_opts::to_string() const +guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::sib_guardband_info_r15_c_( + const guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_& other) { - static const char* options[] = {"ms40", "ms80", "ms160", "ms240", "ms320", "ms640", "ms1280", "ms2560"}; - return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::nprach_periodicity_r13_e_"); + type_ = other.type(); + switch (type_) { + case types::sib_guardband_anchor_r15: + c.init(other.c.get()); + break; + case types::sib_guardband_guardband_r15: + c.init(other.c.get()); + break; + case types::sib_guardband_inband_same_pci_r15: + c.init(other.c.get()); + break; + case types::sib_guardbandinband_diff_pci_r15: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); + } } -uint16_t nprach_params_nb_r13_s::nprach_periodicity_r13_opts::to_number() const +guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_& guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::operator=( + const guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_& other) { - static const uint16_t options[] = {40, 80, 160, 240, 320, 640, 1280, 2560}; - return map_enum_number(options, 8, value, "nprach_params_nb_r13_s::nprach_periodicity_r13_e_"); -} + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::sib_guardband_anchor_r15: + c.set(other.c.get()); + break; + case types::sib_guardband_guardband_r15: + c.set(other.c.get()); + break; + case types::sib_guardband_inband_same_pci_r15: + c.set(other.c.get()); + break; + case types::sib_guardbandinband_diff_pci_r15: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); + } -const char* nprach_params_nb_r13_s::nprach_start_time_r13_opts::to_string() const -{ - static const char* options[] = {"ms8", "ms16", "ms32", "ms64", "ms128", "ms256", "ms512", "ms1024"}; - return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::nprach_start_time_r13_e_"); + return *this; } -uint16_t nprach_params_nb_r13_s::nprach_start_time_r13_opts::to_number() const +sib_guardband_anchor_tdd_nb_r15_s& guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::set_sib_guardband_anchor_r15() { - static const uint16_t options[] = {8, 16, 32, 64, 128, 256, 512, 1024}; - return map_enum_number(options, 8, value, "nprach_params_nb_r13_s::nprach_start_time_r13_e_"); + set(types::sib_guardband_anchor_r15); + return c.get(); } - -const char* nprach_params_nb_r13_s::nprach_subcarrier_offset_r13_opts::to_string() const +sib_guardband_guardband_tdd_nb_r15_s& +guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::set_sib_guardband_guardband_r15() { - static const char* options[] = {"n0", "n12", "n24", "n36", "n2", "n18", "n34", "spare1"}; - return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::nprach_subcarrier_offset_r13_e_"); + set(types::sib_guardband_guardband_r15); + return c.get(); } -uint8_t nprach_params_nb_r13_s::nprach_subcarrier_offset_r13_opts::to_number() const +sib_guardband_inband_same_pci_tdd_nb_r15_s& +guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::set_sib_guardband_inband_same_pci_r15() { - static const uint8_t options[] = {0, 12, 24, 36, 2, 18, 34}; - return map_enum_number(options, 7, value, "nprach_params_nb_r13_s::nprach_subcarrier_offset_r13_e_"); + set(types::sib_guardband_inband_same_pci_r15); + return c.get(); } - -const char* nprach_params_nb_r13_s::nprach_num_subcarriers_r13_opts::to_string() const +sib_guardband_inband_diff_pci_tdd_nb_r15_s& +guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::set_sib_guardbandinband_diff_pci_r15() { - static const char* options[] = {"n12", "n24", "n36", "n48"}; - return convert_enum_idx(options, 4, value, "nprach_params_nb_r13_s::nprach_num_subcarriers_r13_e_"); + set(types::sib_guardbandinband_diff_pci_r15); + return c.get(); } -uint8_t nprach_params_nb_r13_s::nprach_num_subcarriers_r13_opts::to_number() const +void guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::to_json(json_writer& j) const { - static const uint8_t options[] = {12, 24, 36, 48}; - return map_enum_number(options, 4, value, "nprach_params_nb_r13_s::nprach_num_subcarriers_r13_e_"); + j.start_obj(); + switch (type_) { + case types::sib_guardband_anchor_r15: + j.write_fieldname("sib-GuardbandAnchor-r15"); + c.get().to_json(j); + break; + case types::sib_guardband_guardband_r15: + j.write_fieldname("sib-GuardbandGuardband-r15"); + c.get().to_json(j); + break; + case types::sib_guardband_inband_same_pci_r15: + j.write_fieldname("sib-GuardbandInbandSamePCI-r15"); + c.get().to_json(j); + break; + case types::sib_guardbandinband_diff_pci_r15: + j.write_fieldname("sib-GuardbandinbandDiffPCI-r15"); + c.get().to_json(j); + break; + default: + log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); + } + j.end_obj(); } - -const char* nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_opts::to_string() const +SRSASN_CODE guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::pack(bit_ref& bref) const { - static const char* options[] = {"zero", "oneThird", "twoThird", "one"}; - return convert_enum_idx(options, 4, value, "nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_e_"); + type_.pack(bref); + switch (type_) { + case types::sib_guardband_anchor_r15: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::sib_guardband_guardband_r15: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::sib_guardband_inband_same_pci_r15: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::sib_guardbandinband_diff_pci_r15: + HANDLE_CODE(c.get().pack(bref)); + break; + default: + log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; } -float nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_opts::to_number() const +SRSASN_CODE guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::unpack(cbit_ref& bref) { - static const float options[] = {0.0, 0.3333333333333333, 0.6666666666666666, 1.0}; - return map_enum_number(options, 4, value, "nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_e_"); + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::sib_guardband_anchor_r15: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::sib_guardband_guardband_r15: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::sib_guardband_inband_same_pci_r15: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::sib_guardbandinband_diff_pci_r15: + HANDLE_CODE(c.get().unpack(bref)); + break; + default: + log_invalid_choice_id(type_, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; } -const char* nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_opts::to_number_string() const + +const char* guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::types_opts::to_string() const { - static const char* options[] = {"0", "1/3", "2/3", "1"}; - return convert_enum_idx(options, 4, value, "nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_e_"); + static const char* options[] = {"sib-GuardbandAnchor-r15", + "sib-GuardbandGuardband-r15", + "sib-GuardbandInbandSamePCI-r15", + "sib-GuardbandinbandDiffPCI-r15"}; + return convert_enum_idx(options, 4, value, "guardband_tdd_nb_r15_s::sib_guardband_info_r15_c_::types"); } -const char* nprach_params_nb_r13_s::max_num_preamb_attempt_ce_r13_opts::to_string() const +const char* guardband_tdd_nb_r15_s::eutra_bandwitdh_r15_opts::to_string() const { - static const char* options[] = {"n3", "n4", "n5", "n6", "n7", "n8", "n10", "spare1"}; - return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::max_num_preamb_attempt_ce_r13_e_"); + static const char* options[] = {"bw5or10", "bw15or20"}; + return convert_enum_idx(options, 2, value, "guardband_tdd_nb_r15_s::eutra_bandwitdh_r15_e_"); } -uint8_t nprach_params_nb_r13_s::max_num_preamb_attempt_ce_r13_opts::to_number() const +uint8_t guardband_tdd_nb_r15_s::eutra_bandwitdh_r15_opts::to_number() const { - static const uint8_t options[] = {3, 4, 5, 6, 7, 8, 10}; - return map_enum_number(options, 7, value, "nprach_params_nb_r13_s::max_num_preamb_attempt_ce_r13_e_"); + static const uint8_t options[] = {5, 15}; + return map_enum_number(options, 2, value, "guardband_tdd_nb_r15_s::eutra_bandwitdh_r15_e_"); } -const char* nprach_params_nb_r13_s::num_repeats_per_preamb_attempt_r13_opts::to_string() const +// Inband-DifferentPCI-TDD-NB-r15 ::= SEQUENCE +SRSASN_CODE inband_different_pci_tdd_nb_r15_s::pack(bit_ref& bref) const { - static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32", "n64", "n128"}; - return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::num_repeats_per_preamb_attempt_r13_e_"); + HANDLE_CODE(eutra_num_crs_ports_r15.pack(bref)); + HANDLE_CODE(raster_offset_r15.pack(bref)); + HANDLE_CODE(sib_inband_location_r15.pack(bref)); + HANDLE_CODE(spare.pack(bref)); + + return SRSASN_SUCCESS; } -uint8_t nprach_params_nb_r13_s::num_repeats_per_preamb_attempt_r13_opts::to_number() const +SRSASN_CODE inband_different_pci_tdd_nb_r15_s::unpack(cbit_ref& bref) { - static const uint8_t options[] = {1, 2, 4, 8, 16, 32, 64, 128}; - return map_enum_number(options, 8, value, "nprach_params_nb_r13_s::num_repeats_per_preamb_attempt_r13_e_"); -} + HANDLE_CODE(eutra_num_crs_ports_r15.unpack(bref)); + HANDLE_CODE(raster_offset_r15.unpack(bref)); + HANDLE_CODE(sib_inband_location_r15.unpack(bref)); + HANDLE_CODE(spare.unpack(bref)); -const char* nprach_params_nb_r13_s::npdcch_num_repeats_ra_r13_opts::to_string() const -{ - static const char* options[] = {"r1", - "r2", - "r4", - "r8", - "r16", - "r32", - "r64", - "r128", - "r256", - "r512", - "r1024", - "r2048", - "spare4", - "spare3", - "spare2", - "spare1"}; - return convert_enum_idx(options, 16, value, "nprach_params_nb_r13_s::npdcch_num_repeats_ra_r13_e_"); + return SRSASN_SUCCESS; } -uint16_t nprach_params_nb_r13_s::npdcch_num_repeats_ra_r13_opts::to_number() const +void inband_different_pci_tdd_nb_r15_s::to_json(json_writer& j) const { - static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; - return map_enum_number(options, 12, value, "nprach_params_nb_r13_s::npdcch_num_repeats_ra_r13_e_"); + j.start_obj(); + j.write_str("eutra-NumCRS-Ports-r15", eutra_num_crs_ports_r15.to_string()); + j.write_str("rasterOffset-r15", raster_offset_r15.to_string()); + j.write_str("sib-InbandLocation-r15", sib_inband_location_r15.to_string()); + j.write_str("spare", spare.to_string()); + j.end_obj(); } -const char* nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_opts::to_string() const +const char* inband_different_pci_tdd_nb_r15_s::eutra_num_crs_ports_r15_opts::to_string() const { - static const char* options[] = {"v1dot5", "v2", "v4", "v8", "v16", "v32", "v48", "v64"}; - return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_e_"); + static const char* options[] = {"same", "four"}; + return convert_enum_idx(options, 2, value, "inband_different_pci_tdd_nb_r15_s::eutra_num_crs_ports_r15_e_"); } -float nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_opts::to_number() const +uint8_t inband_different_pci_tdd_nb_r15_s::eutra_num_crs_ports_r15_opts::to_number() const { - static const float options[] = {1.5, 2.0, 4.0, 8.0, 16.0, 32.0, 48.0, 64.0}; - return map_enum_number(options, 8, value, "nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_e_"); + if (value == four) { + return 4; + } + invalid_enum_number(value, "inband_different_pci_tdd_nb_r15_s::eutra_num_crs_ports_r15_e_"); + return 0; } -const char* nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_opts::to_number_string() const + +const char* inband_different_pci_tdd_nb_r15_s::sib_inband_location_r15_opts::to_string() const { - static const char* options[] = {"1.5", "2", "4", "8", "16", "32", "48", "64"}; - return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_e_"); + static const char* options[] = {"lower", "higher"}; + return convert_enum_idx(options, 2, value, "inband_different_pci_tdd_nb_r15_s::sib_inband_location_r15_e_"); } -const char* nprach_params_nb_r13_s::npdcch_offset_ra_r13_opts::to_string() const +// Inband-SamePCI-TDD-NB-r15 ::= SEQUENCE +SRSASN_CODE inband_same_pci_tdd_nb_r15_s::pack(bit_ref& bref) const { - static const char* options[] = {"zero", "oneEighth", "oneFourth", "threeEighth"}; - return convert_enum_idx(options, 4, value, "nprach_params_nb_r13_s::npdcch_offset_ra_r13_e_"); + HANDLE_CODE(pack_integer(bref, eutra_crs_seq_info_r15, (uint8_t)0u, (uint8_t)31u)); + HANDLE_CODE(sib_inband_location_r15.pack(bref)); + + return SRSASN_SUCCESS; } -float nprach_params_nb_r13_s::npdcch_offset_ra_r13_opts::to_number() const +SRSASN_CODE inband_same_pci_tdd_nb_r15_s::unpack(cbit_ref& bref) { - static const float options[] = {0.0, 0.125, 0.25, 0.375}; - return map_enum_number(options, 4, value, "nprach_params_nb_r13_s::npdcch_offset_ra_r13_e_"); + HANDLE_CODE(unpack_integer(eutra_crs_seq_info_r15, bref, (uint8_t)0u, (uint8_t)31u)); + HANDLE_CODE(sib_inband_location_r15.unpack(bref)); + + return SRSASN_SUCCESS; } -const char* nprach_params_nb_r13_s::npdcch_offset_ra_r13_opts::to_number_string() const +void inband_same_pci_tdd_nb_r15_s::to_json(json_writer& j) const { - static const char* options[] = {"0", "1/8", "1/4", "3/8"}; - return convert_enum_idx(options, 4, value, "nprach_params_nb_r13_s::npdcch_offset_ra_r13_e_"); + j.start_obj(); + j.write_int("eutra-CRS-SequenceInfo-r15", eutra_crs_seq_info_r15); + j.write_str("sib-InbandLocation-r15", sib_inband_location_r15.to_string()); + j.end_obj(); } -// NPRACH-Parameters-NB-r14 ::= SEQUENCE -SRSASN_CODE nprach_params_nb_r14_s::pack(bit_ref& bref) const +const char* inband_same_pci_tdd_nb_r15_s::sib_inband_location_r15_opts::to_string() const { - HANDLE_CODE(bref.pack(nprach_params_r14_present, 1)); + static const char* options[] = {"lower", "higher"}; + return convert_enum_idx(options, 2, value, "inband_same_pci_tdd_nb_r15_s::sib_inband_location_r15_e_"); +} - if (nprach_params_r14_present) { - bref.pack(nprach_params_r14.ext, 1); - HANDLE_CODE(bref.pack(nprach_params_r14.nprach_periodicity_r14_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r14.nprach_start_time_r14_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r14.nprach_subcarrier_offset_r14_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r14.nprach_num_subcarriers_r14_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r14.nprach_subcarrier_msg3_range_start_r14_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r14.npdcch_num_repeats_ra_r14_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r14.npdcch_start_sf_css_ra_r14_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r14.npdcch_offset_ra_r14_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r14.nprach_num_cbra_start_subcarriers_r14_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r14.npdcch_carrier_idx_r14_present, 1)); - if (nprach_params_r14.nprach_periodicity_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_periodicity_r14.pack(bref)); - } - if (nprach_params_r14.nprach_start_time_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_start_time_r14.pack(bref)); - } - if (nprach_params_r14.nprach_subcarrier_offset_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_subcarrier_offset_r14.pack(bref)); - } - if (nprach_params_r14.nprach_num_subcarriers_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_num_subcarriers_r14.pack(bref)); - } - if (nprach_params_r14.nprach_subcarrier_msg3_range_start_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_subcarrier_msg3_range_start_r14.pack(bref)); - } - if (nprach_params_r14.npdcch_num_repeats_ra_r14_present) { - HANDLE_CODE(nprach_params_r14.npdcch_num_repeats_ra_r14.pack(bref)); - } - if (nprach_params_r14.npdcch_start_sf_css_ra_r14_present) { - HANDLE_CODE(nprach_params_r14.npdcch_start_sf_css_ra_r14.pack(bref)); - } - if (nprach_params_r14.npdcch_offset_ra_r14_present) { - HANDLE_CODE(nprach_params_r14.npdcch_offset_ra_r14.pack(bref)); - } - if (nprach_params_r14.nprach_num_cbra_start_subcarriers_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_num_cbra_start_subcarriers_r14.pack(bref)); - } - if (nprach_params_r14.npdcch_carrier_idx_r14_present) { - HANDLE_CODE(pack_integer(bref, nprach_params_r14.npdcch_carrier_idx_r14, (uint8_t)1u, (uint8_t)15u)); - } - } +// StandaloneTDD-NB-r15 ::= SEQUENCE +SRSASN_CODE standalone_tdd_nb_r15_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(sib_standalone_location_r15.pack(bref)); + HANDLE_CODE(spare.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE nprach_params_nb_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE standalone_tdd_nb_r15_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(nprach_params_r14_present, 1)); - - if (nprach_params_r14_present) { - bref.unpack(nprach_params_r14.ext, 1); - HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_periodicity_r14_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_start_time_r14_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_subcarrier_offset_r14_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_num_subcarriers_r14_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_subcarrier_msg3_range_start_r14_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r14.npdcch_num_repeats_ra_r14_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r14.npdcch_start_sf_css_ra_r14_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r14.npdcch_offset_ra_r14_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_num_cbra_start_subcarriers_r14_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r14.npdcch_carrier_idx_r14_present, 1)); - if (nprach_params_r14.nprach_periodicity_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_periodicity_r14.unpack(bref)); - } - if (nprach_params_r14.nprach_start_time_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_start_time_r14.unpack(bref)); - } - if (nprach_params_r14.nprach_subcarrier_offset_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_subcarrier_offset_r14.unpack(bref)); - } - if (nprach_params_r14.nprach_num_subcarriers_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_num_subcarriers_r14.unpack(bref)); - } - if (nprach_params_r14.nprach_subcarrier_msg3_range_start_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_subcarrier_msg3_range_start_r14.unpack(bref)); - } - if (nprach_params_r14.npdcch_num_repeats_ra_r14_present) { - HANDLE_CODE(nprach_params_r14.npdcch_num_repeats_ra_r14.unpack(bref)); - } - if (nprach_params_r14.npdcch_start_sf_css_ra_r14_present) { - HANDLE_CODE(nprach_params_r14.npdcch_start_sf_css_ra_r14.unpack(bref)); - } - if (nprach_params_r14.npdcch_offset_ra_r14_present) { - HANDLE_CODE(nprach_params_r14.npdcch_offset_ra_r14.unpack(bref)); - } - if (nprach_params_r14.nprach_num_cbra_start_subcarriers_r14_present) { - HANDLE_CODE(nprach_params_r14.nprach_num_cbra_start_subcarriers_r14.unpack(bref)); - } - if (nprach_params_r14.npdcch_carrier_idx_r14_present) { - HANDLE_CODE(unpack_integer(nprach_params_r14.npdcch_carrier_idx_r14, bref, (uint8_t)1u, (uint8_t)15u)); - } - } + HANDLE_CODE(sib_standalone_location_r15.unpack(bref)); + HANDLE_CODE(spare.unpack(bref)); return SRSASN_SUCCESS; } -void nprach_params_nb_r14_s::to_json(json_writer& j) const +void standalone_tdd_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - if (nprach_params_r14_present) { - j.write_fieldname("nprach-Parameters-r14"); - j.start_obj(); - if (nprach_params_r14.nprach_periodicity_r14_present) { - j.write_str("nprach-Periodicity-r14", nprach_params_r14.nprach_periodicity_r14.to_string()); - } - if (nprach_params_r14.nprach_start_time_r14_present) { - j.write_str("nprach-StartTime-r14", nprach_params_r14.nprach_start_time_r14.to_string()); - } - if (nprach_params_r14.nprach_subcarrier_offset_r14_present) { - j.write_str("nprach-SubcarrierOffset-r14", nprach_params_r14.nprach_subcarrier_offset_r14.to_string()); - } - if (nprach_params_r14.nprach_num_subcarriers_r14_present) { - j.write_str("nprach-NumSubcarriers-r14", nprach_params_r14.nprach_num_subcarriers_r14.to_string()); - } - if (nprach_params_r14.nprach_subcarrier_msg3_range_start_r14_present) { - j.write_str("nprach-SubcarrierMSG3-RangeStart-r14", - nprach_params_r14.nprach_subcarrier_msg3_range_start_r14.to_string()); - } - if (nprach_params_r14.npdcch_num_repeats_ra_r14_present) { - j.write_str("npdcch-NumRepetitions-RA-r14", nprach_params_r14.npdcch_num_repeats_ra_r14.to_string()); - } - if (nprach_params_r14.npdcch_start_sf_css_ra_r14_present) { - j.write_str("npdcch-StartSF-CSS-RA-r14", nprach_params_r14.npdcch_start_sf_css_ra_r14.to_string()); - } - if (nprach_params_r14.npdcch_offset_ra_r14_present) { - j.write_str("npdcch-Offset-RA-r14", nprach_params_r14.npdcch_offset_ra_r14.to_string()); - } - if (nprach_params_r14.nprach_num_cbra_start_subcarriers_r14_present) { - j.write_str("nprach-NumCBRA-StartSubcarriers-r14", - nprach_params_r14.nprach_num_cbra_start_subcarriers_r14.to_string()); - } - if (nprach_params_r14.npdcch_carrier_idx_r14_present) { - j.write_int("npdcch-CarrierIndex-r14", nprach_params_r14.npdcch_carrier_idx_r14); - } - j.end_obj(); - } + j.write_str("sib-StandaloneLocation-r15", sib_standalone_location_r15.to_string()); + j.write_str("spare", spare.to_string()); j.end_obj(); } -const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_periodicity_r14_opts::to_string() const +const char* standalone_tdd_nb_r15_s::sib_standalone_location_r15_opts::to_string() const { - static const char* options[] = {"ms40", "ms80", "ms160", "ms240", "ms320", "ms640", "ms1280", "ms2560"}; - return convert_enum_idx(options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_periodicity_r14_e_"); + static const char* options[] = {"lower", "higher"}; + return convert_enum_idx(options, 2, value, "standalone_tdd_nb_r15_s::sib_standalone_location_r15_e_"); } -uint16_t nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_periodicity_r14_opts::to_number() const + +// MasterInformationBlock-TDD-NB-r15 ::= SEQUENCE +SRSASN_CODE mib_tdd_nb_r15_s::pack(bit_ref& bref) const { - static const uint16_t options[] = {40, 80, 160, 240, 320, 640, 1280, 2560}; - return map_enum_number(options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_periodicity_r14_e_"); -} + HANDLE_CODE(sys_frame_num_msb_r15.pack(bref)); + HANDLE_CODE(hyper_sfn_lsb_r15.pack(bref)); + HANDLE_CODE(pack_integer(bref, sched_info_sib1_r15, (uint8_t)0u, (uint8_t)15u)); + HANDLE_CODE(pack_integer(bref, sys_info_value_tag_r15, (uint8_t)0u, (uint8_t)31u)); + 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)); -const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_start_time_r14_opts::to_string() const + return SRSASN_SUCCESS; +} +SRSASN_CODE mib_tdd_nb_r15_s::unpack(cbit_ref& bref) { - static const char* options[] = {"ms8", "ms16", "ms32", "ms64", "ms128", "ms256", "ms512", "ms1024"}; - return convert_enum_idx(options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_start_time_r14_e_"); + HANDLE_CODE(sys_frame_num_msb_r15.unpack(bref)); + HANDLE_CODE(hyper_sfn_lsb_r15.unpack(bref)); + HANDLE_CODE(unpack_integer(sched_info_sib1_r15, bref, (uint8_t)0u, (uint8_t)15u)); + HANDLE_CODE(unpack_integer(sys_info_value_tag_r15, bref, (uint8_t)0u, (uint8_t)31u)); + 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; } -uint16_t nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_start_time_r14_opts::to_number() const +void mib_tdd_nb_r15_s::to_json(json_writer& j) const { - static const uint16_t options[] = {8, 16, 32, 64, 128, 256, 512, 1024}; - return map_enum_number(options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_start_time_r14_e_"); + j.start_obj(); + j.write_str("systemFrameNumber-MSB-r15", sys_frame_num_msb_r15.to_string()); + j.write_str("hyperSFN-LSB-r15", hyper_sfn_lsb_r15.to_string()); + j.write_int("schedulingInfoSIB1-r15", sched_info_sib1_r15); + j.write_int("systemInfoValueTag-r15", sys_info_value_tag_r15); + j.write_bool("ab-Enabled-r15", ab_enabled_r15); + 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(); } -const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_offset_r14_opts::to_string() const +void mib_tdd_nb_r15_s::operation_mode_info_r15_c_::destroy_() { - static const char* options[] = {"n0", "n12", "n24", "n36", "n2", "n18", "n34", "spare1"}; - return convert_enum_idx( - options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_offset_r14_e_"); + switch (type_) { + case types::inband_same_pci_r15: + c.destroy(); + break; + case types::inband_different_pci_r15: + c.destroy(); + break; + case types::guardband_r15: + c.destroy(); + break; + case types::standalone_r15: + c.destroy(); + break; + default: + break; + } } -uint8_t nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_offset_r14_opts::to_number() const +void mib_tdd_nb_r15_s::operation_mode_info_r15_c_::set(types::options e) { - static const uint8_t options[] = {0, 12, 24, 36, 2, 18, 34}; - return map_enum_number( - options, 7, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_offset_r14_e_"); + destroy_(); + type_ = e; + switch (type_) { + case types::inband_same_pci_r15: + c.init(); + break; + case types::inband_different_pci_r15: + c.init(); + break; + case types::guardband_r15: + c.init(); + break; + case types::standalone_r15: + c.init(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + } } - -const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_subcarriers_r14_opts::to_string() const +mib_tdd_nb_r15_s::operation_mode_info_r15_c_::operation_mode_info_r15_c_( + const mib_tdd_nb_r15_s::operation_mode_info_r15_c_& other) { - static const char* options[] = {"n12", "n24", "n36", "n48"}; - return convert_enum_idx( - options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_subcarriers_r14_e_"); + type_ = other.type(); + switch (type_) { + case types::inband_same_pci_r15: + c.init(other.c.get()); + break; + case types::inband_different_pci_r15: + c.init(other.c.get()); + break; + case types::guardband_r15: + c.init(other.c.get()); + break; + case types::standalone_r15: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + } } -uint8_t nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_subcarriers_r14_opts::to_number() const +mib_tdd_nb_r15_s::operation_mode_info_r15_c_& +mib_tdd_nb_r15_s::operation_mode_info_r15_c_::operator=(const mib_tdd_nb_r15_s::operation_mode_info_r15_c_& other) { - static const uint8_t options[] = {12, 24, 36, 48}; - return map_enum_number( - options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_subcarriers_r14_e_"); -} + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::inband_same_pci_r15: + c.set(other.c.get()); + break; + case types::inband_different_pci_r15: + c.set(other.c.get()); + break; + case types::guardband_r15: + c.set(other.c.get()); + break; + case types::standalone_r15: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + } -const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_opts::to_string() const + return *this; +} +inband_same_pci_tdd_nb_r15_s& mib_tdd_nb_r15_s::operation_mode_info_r15_c_::set_inband_same_pci_r15() { - static const char* options[] = {"zero", "oneThird", "twoThird", "one"}; - return convert_enum_idx( - options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_e_"); + set(types::inband_same_pci_r15); + return c.get(); } -float nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_opts::to_number() const +inband_different_pci_tdd_nb_r15_s& mib_tdd_nb_r15_s::operation_mode_info_r15_c_::set_inband_different_pci_r15() { - static const float options[] = {0.0, 0.3333333333333333, 0.6666666666666666, 1.0}; - return map_enum_number( - options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_e_"); + set(types::inband_different_pci_r15); + return c.get(); } -const char* -nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_opts::to_number_string() const +guardband_tdd_nb_r15_s& mib_tdd_nb_r15_s::operation_mode_info_r15_c_::set_guardband_r15() { - static const char* options[] = {"0", "1/3", "2/3", "1"}; - return convert_enum_idx( - options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_e_"); + set(types::guardband_r15); + return c.get(); } - -const char* nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_num_repeats_ra_r14_opts::to_string() const +standalone_tdd_nb_r15_s& mib_tdd_nb_r15_s::operation_mode_info_r15_c_::set_standalone_r15() { - static const char* options[] = {"r1", - "r2", - "r4", - "r8", - "r16", - "r32", - "r64", - "r128", - "r256", - "r512", - "r1024", - "r2048", - "spare4", - "spare3", - "spare2", - "spare1"}; - return convert_enum_idx( - options, 16, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_num_repeats_ra_r14_e_"); + set(types::standalone_r15); + return c.get(); } -uint16_t nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_num_repeats_ra_r14_opts::to_number() const +void mib_tdd_nb_r15_s::operation_mode_info_r15_c_::to_json(json_writer& j) const { - static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; - return map_enum_number( - options, 12, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_num_repeats_ra_r14_e_"); + j.start_obj(); + switch (type_) { + case types::inband_same_pci_r15: + j.write_fieldname("inband-SamePCI-r15"); + c.get().to_json(j); + break; + case types::inband_different_pci_r15: + j.write_fieldname("inband-DifferentPCI-r15"); + c.get().to_json(j); + break; + case types::guardband_r15: + j.write_fieldname("guardband-r15"); + c.get().to_json(j); + break; + case types::standalone_r15: + j.write_fieldname("standalone-r15"); + c.get().to_json(j); + break; + default: + log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + } + j.end_obj(); +} +SRSASN_CODE mib_tdd_nb_r15_s::operation_mode_info_r15_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::inband_same_pci_r15: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::inband_different_pci_r15: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::guardband_r15: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::standalone_r15: + HANDLE_CODE(c.get().pack(bref)); + break; + default: + log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE mib_tdd_nb_r15_s::operation_mode_info_r15_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::inband_same_pci_r15: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::inband_different_pci_r15: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::guardband_r15: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::standalone_r15: + HANDLE_CODE(c.get().unpack(bref)); + break; + default: + log_invalid_choice_id(type_, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; } -const char* nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_opts::to_string() const +const char* mib_tdd_nb_r15_s::operation_mode_info_r15_c_::types_opts::to_string() const { - static const char* options[] = {"v1dot5", "v2", "v4", "v8", "v16", "v32", "v48", "v64"}; - return convert_enum_idx( - options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_e_"); + static const char* options[] = {"inband-SamePCI-r15", "inband-DifferentPCI-r15", "guardband-r15", "standalone-r15"}; + return convert_enum_idx(options, 4, value, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_::types"); } -float nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_opts::to_number() const +uint8_t mib_tdd_nb_r15_s::operation_mode_info_r15_c_::types_opts::to_number() const { - static const float options[] = {1.5, 2.0, 4.0, 8.0, 16.0, 32.0, 48.0, 64.0}; - return map_enum_number( - options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_e_"); + if (value == standalone_r15) { + return 1; + } + invalid_enum_number(value, "mib_tdd_nb_r15_s::operation_mode_info_r15_c_::types"); + return 0; } -const char* nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_opts::to_number_string() const + +const char* mib_tdd_nb_r15_s::sib1_carrier_info_r15_opts::to_string() const { - static const char* options[] = {"1.5", "2", "4", "8", "16", "32", "48", "64"}; - return convert_enum_idx( - options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_e_"); + static const char* options[] = {"anchor", "non-anchor"}; + return convert_enum_idx(options, 2, value, "mib_tdd_nb_r15_s::sib1_carrier_info_r15_e_"); } -const char* nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_opts::to_string() const +// BCCH-BCH-Message-TDD-NB ::= SEQUENCE +SRSASN_CODE bcch_bch_msg_tdd_nb_s::pack(bit_ref& bref) const { - static const char* options[] = {"zero", "oneEighth", "oneFourth", "threeEighth"}; - return convert_enum_idx(options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_e_"); + HANDLE_CODE(msg.pack(bref)); + + bref.align_bytes_zero(); + + return SRSASN_SUCCESS; } -float nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_opts::to_number() const +SRSASN_CODE bcch_bch_msg_tdd_nb_s::unpack(cbit_ref& bref) { - static const float options[] = {0.0, 0.125, 0.25, 0.375}; - return map_enum_number(options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_e_"); + HANDLE_CODE(msg.unpack(bref)); + + bref.align_bytes(); + + return SRSASN_SUCCESS; } -const char* nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_opts::to_number_string() const +void bcch_bch_msg_tdd_nb_s::to_json(json_writer& j) const { - static const char* options[] = {"0", "1/8", "1/4", "3/8"}; - return convert_enum_idx(options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_e_"); + j.start_array(); + j.start_obj(); + j.start_obj("BCCH-BCH-Message-TDD-NB"); + j.write_fieldname("message"); + msg.to_json(j); + j.end_obj(); + j.end_obj(); + j.end_array(); } -const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_cbra_start_subcarriers_r14_opts::to_string() const +// NS-PmaxValue-NB-r13 ::= SEQUENCE +SRSASN_CODE ns_pmax_value_nb_r13_s::pack(bit_ref& bref) const { - static const char* options[] = { - "n8", "n10", "n11", "n12", "n20", "n22", "n23", "n24", "n32", "n34", "n35", "n36", "n40", "n44", "n46", "n48"}; - return convert_enum_idx( - options, 16, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_cbra_start_subcarriers_r14_e_"); + HANDLE_CODE(bref.pack(add_pmax_r13_present, 1)); + + if (add_pmax_r13_present) { + HANDLE_CODE(pack_integer(bref, add_pmax_r13, (int8_t)-30, (int8_t)33)); + } + HANDLE_CODE(pack_integer(bref, add_spec_emission_r13, (uint8_t)1u, (uint8_t)32u)); + + return SRSASN_SUCCESS; } -uint8_t nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_cbra_start_subcarriers_r14_opts::to_number() const +SRSASN_CODE ns_pmax_value_nb_r13_s::unpack(cbit_ref& bref) { - static const uint8_t options[] = {8, 10, 11, 12, 20, 22, 23, 24, 32, 34, 35, 36, 40, 44, 46, 48}; - return map_enum_number( - options, 16, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_cbra_start_subcarriers_r14_e_"); + HANDLE_CODE(bref.unpack(add_pmax_r13_present, 1)); + + if (add_pmax_r13_present) { + HANDLE_CODE(unpack_integer(add_pmax_r13, bref, (int8_t)-30, (int8_t)33)); + } + HANDLE_CODE(unpack_integer(add_spec_emission_r13, bref, (uint8_t)1u, (uint8_t)32u)); + + return SRSASN_SUCCESS; +} +void ns_pmax_value_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (add_pmax_r13_present) { + j.write_int("additionalPmax-r13", add_pmax_r13); + } + j.write_int("additionalSpectrumEmission-r13", add_spec_emission_r13); + j.end_obj(); } -// NPRACH-Parameters-NB-v1330 ::= SEQUENCE -SRSASN_CODE nprach_params_nb_v1330_s::pack(bit_ref& bref) const +// PLMN-IdentityInfo-NB-v1700 ::= SEQUENCE +SRSASN_CODE plmn_id_info_nb_v1700_s::pack(bit_ref& bref) const { - HANDLE_CODE(nprach_num_cbra_start_subcarriers_r13.pack(bref)); + 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 nprach_params_nb_v1330_s::unpack(cbit_ref& bref) +SRSASN_CODE plmn_id_info_nb_v1700_s::unpack(cbit_ref& bref) { - HANDLE_CODE(nprach_num_cbra_start_subcarriers_r13.unpack(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 nprach_params_nb_v1330_s::to_json(json_writer& j) const +void plmn_id_info_nb_v1700_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("nprach-NumCBRA-StartSubcarriers-r13", nprach_num_cbra_start_subcarriers_r13.to_string()); + 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(); } -const char* nprach_params_nb_v1330_s::nprach_num_cbra_start_subcarriers_r13_opts::to_string() const +// SIB-Type-NB-v1530 ::= ENUMERATED +const char* sib_type_nb_v1530_opts::to_string() const { - static const char* options[] = { - "n8", "n10", "n11", "n12", "n20", "n22", "n23", "n24", "n32", "n34", "n35", "n36", "n40", "n44", "n46", "n48"}; - return convert_enum_idx(options, 16, value, "nprach_params_nb_v1330_s::nprach_num_cbra_start_subcarriers_r13_e_"); + 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 nprach_params_nb_v1330_s::nprach_num_cbra_start_subcarriers_r13_opts::to_number() const +uint8_t sib_type_nb_v1530_opts::to_number() const { - static const uint8_t options[] = {8, 10, 11, 12, 20, 22, 23, 24, 32, 34, 35, 36, 40, 44, 46, 48}; - return map_enum_number(options, 16, value, "nprach_params_nb_v1330_s::nprach_num_cbra_start_subcarriers_r13_e_"); + static const uint8_t options[] = {23, 27, 31, 32}; + return map_enum_number(options, 4, value, "sib_type_nb_v1530_e"); } -// NPRACH-ParametersFmt2-NB-r15 ::= SEQUENCE -SRSASN_CODE nprach_params_fmt2_nb_r15_s::pack(bit_ref& bref) const +// GWUS-NumGroups-NB-r16 ::= ENUMERATED +const char* gwus_num_groups_nb_r16_opts::to_string() const { - HANDLE_CODE(bref.pack(nprach_params_r15_present, 1)); + 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"); +} - if (nprach_params_r15_present) { - bref.pack(nprach_params_r15.ext, 1); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_periodicity_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_start_time_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_subcarrier_offset_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_num_subcarriers_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_num_repeats_ra_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_start_sf_css_ra_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_offset_ra_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_carrier_idx_r15_present, 1)); - if (nprach_params_r15.nprach_periodicity_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_periodicity_r15.pack(bref)); - } - if (nprach_params_r15.nprach_start_time_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_start_time_r15.pack(bref)); - } - if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_subcarrier_offset_r15.pack(bref)); - } - if (nprach_params_r15.nprach_num_subcarriers_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_num_subcarriers_r15.pack(bref)); - } - if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.pack(bref)); - } - if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_num_repeats_ra_r15.pack(bref)); - } - if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_start_sf_css_ra_r15.pack(bref)); - } - if (nprach_params_r15.npdcch_offset_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_offset_ra_r15.pack(bref)); - } - if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.pack(bref)); - } - if (nprach_params_r15.npdcch_carrier_idx_r15_present) { - HANDLE_CODE(pack_integer(bref, nprach_params_r15.npdcch_carrier_idx_r15, (uint8_t)1u, (uint8_t)15u)); - } +// NSSS-RRM-Config-NB-r15 ::= SEQUENCE +SRSASN_CODE nsss_rrm_cfg_nb_r15_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(nsss_num_occ_diff_precoders_r15_present, 1)); + + HANDLE_CODE(nsss_rrm_pwr_offset_r15.pack(bref)); + if (nsss_num_occ_diff_precoders_r15_present) { + HANDLE_CODE(nsss_num_occ_diff_precoders_r15.pack(bref)); } return SRSASN_SUCCESS; } -SRSASN_CODE nprach_params_fmt2_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE nsss_rrm_cfg_nb_r15_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(nprach_params_r15_present, 1)); + HANDLE_CODE(bref.unpack(nsss_num_occ_diff_precoders_r15_present, 1)); - if (nprach_params_r15_present) { - bref.unpack(nprach_params_r15.ext, 1); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_periodicity_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_start_time_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_subcarrier_offset_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_num_subcarriers_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_num_repeats_ra_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_start_sf_css_ra_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_offset_ra_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_carrier_idx_r15_present, 1)); - if (nprach_params_r15.nprach_periodicity_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_periodicity_r15.unpack(bref)); - } - if (nprach_params_r15.nprach_start_time_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_start_time_r15.unpack(bref)); - } - if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_subcarrier_offset_r15.unpack(bref)); - } - if (nprach_params_r15.nprach_num_subcarriers_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_num_subcarriers_r15.unpack(bref)); - } - if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.unpack(bref)); - } - if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_num_repeats_ra_r15.unpack(bref)); - } - if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_start_sf_css_ra_r15.unpack(bref)); - } - if (nprach_params_r15.npdcch_offset_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_offset_ra_r15.unpack(bref)); - } - if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.unpack(bref)); - } - if (nprach_params_r15.npdcch_carrier_idx_r15_present) { - HANDLE_CODE(unpack_integer(nprach_params_r15.npdcch_carrier_idx_r15, bref, (uint8_t)1u, (uint8_t)15u)); - } + HANDLE_CODE(nsss_rrm_pwr_offset_r15.unpack(bref)); + if (nsss_num_occ_diff_precoders_r15_present) { + HANDLE_CODE(nsss_num_occ_diff_precoders_r15.unpack(bref)); } return SRSASN_SUCCESS; } -void nprach_params_fmt2_nb_r15_s::to_json(json_writer& j) const +void nsss_rrm_cfg_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - if (nprach_params_r15_present) { - j.write_fieldname("nprach-Parameters-r15"); - j.start_obj(); - if (nprach_params_r15.nprach_periodicity_r15_present) { - j.write_str("nprach-Periodicity-r15", nprach_params_r15.nprach_periodicity_r15.to_string()); - } - if (nprach_params_r15.nprach_start_time_r15_present) { - j.write_str("nprach-StartTime-r15", nprach_params_r15.nprach_start_time_r15.to_string()); - } - if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { - j.write_str("nprach-SubcarrierOffset-r15", nprach_params_r15.nprach_subcarrier_offset_r15.to_string()); - } - if (nprach_params_r15.nprach_num_subcarriers_r15_present) { - j.write_str("nprach-NumSubcarriers-r15", nprach_params_r15.nprach_num_subcarriers_r15.to_string()); - } - if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { - j.write_str("nprach-SubcarrierMSG3-RangeStart-r15", - nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.to_string()); - } - if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { - j.write_str("npdcch-NumRepetitions-RA-r15", nprach_params_r15.npdcch_num_repeats_ra_r15.to_string()); - } - if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { - j.write_str("npdcch-StartSF-CSS-RA-r15", nprach_params_r15.npdcch_start_sf_css_ra_r15.to_string()); - } - if (nprach_params_r15.npdcch_offset_ra_r15_present) { - j.write_str("npdcch-Offset-RA-r15", nprach_params_r15.npdcch_offset_ra_r15.to_string()); - } - if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { - j.write_str("nprach-NumCBRA-StartSubcarriers-r15", - nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.to_string()); - } - if (nprach_params_r15.npdcch_carrier_idx_r15_present) { - j.write_int("npdcch-CarrierIndex-r15", nprach_params_r15.npdcch_carrier_idx_r15); - } - j.end_obj(); + j.write_str("nsss-RRM-PowerOffset-r15", nsss_rrm_pwr_offset_r15.to_string()); + if (nsss_num_occ_diff_precoders_r15_present) { + j.write_str("nsss-NumOccDiffPrecoders-r15", nsss_num_occ_diff_precoders_r15.to_string()); } j.end_obj(); } -const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_opts::to_string() const +const char* nsss_rrm_cfg_nb_r15_s::nsss_rrm_pwr_offset_r15_opts::to_string() const { - static const char* options[] = {"ms40", "ms80", "ms160", "ms320", "ms640", "ms1280", "ms2560", "ms5120"}; - return convert_enum_idx( - options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_e_"); + static const char* options[] = {"dB-3", "db0", "dB3"}; + return convert_enum_idx(options, 3, value, "nsss_rrm_cfg_nb_r15_s::nsss_rrm_pwr_offset_r15_e_"); } -uint16_t nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_opts::to_number() const +int8_t nsss_rrm_cfg_nb_r15_s::nsss_rrm_pwr_offset_r15_opts::to_number() const { - static const uint16_t options[] = {40, 80, 160, 320, 640, 1280, 2560, 5120}; - return map_enum_number( - options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_e_"); + static const int8_t options[] = {-3, 0, 3}; + return map_enum_number(options, 3, value, "nsss_rrm_cfg_nb_r15_s::nsss_rrm_pwr_offset_r15_e_"); } -const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_opts::to_string() const +const char* nsss_rrm_cfg_nb_r15_s::nsss_num_occ_diff_precoders_r15_opts::to_string() const { - static const char* options[] = {"ms8", "ms16", "ms32", "ms64", "ms128", "ms256", "ms512", "ms1024"}; - return convert_enum_idx( - options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_e_"); + static const char* options[] = {"n1", "n2", "n4", "n8"}; + return convert_enum_idx(options, 4, value, "nsss_rrm_cfg_nb_r15_s::nsss_num_occ_diff_precoders_r15_e_"); } -uint16_t nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_opts::to_number() const +uint8_t nsss_rrm_cfg_nb_r15_s::nsss_num_occ_diff_precoders_r15_opts::to_number() const { - static const uint16_t options[] = {8, 16, 32, 64, 128, 256, 512, 1024}; - return map_enum_number( - options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_e_"); + static const uint8_t options[] = {1, 2, 4, 8}; + return map_enum_number(options, 4, value, "nsss_rrm_cfg_nb_r15_s::nsss_num_occ_diff_precoders_r15_e_"); } -const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_opts::to_string() const +// PLMN-IdentityInfo-5GC-NB-r16 ::= SEQUENCE +SRSASN_CODE plmn_id_info_minus5_gc_nb_r16_s::pack(bit_ref& bref) const { - static const char* options[] = { - "n0", "n36", "n72", "n108", "n6", "n54", "n102", "n42", "n78", "n90", "n12", "n24", "n48", "n84", "n60", "n18"}; - return convert_enum_idx( - options, 16, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_e_"); + 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; } -uint8_t nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_opts::to_number() const +SRSASN_CODE plmn_id_info_minus5_gc_nb_r16_s::unpack(cbit_ref& bref) { - static const uint8_t options[] = {0, 36, 72, 108, 6, 54, 102, 42, 78, 90, 12, 24, 48, 84, 60, 18}; - return map_enum_number( - options, 16, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_e_"); -} + HANDLE_CODE(bref.unpack(ng_u_data_transfer_r16_present, 1)); + HANDLE_CODE(bref.unpack(up_cio_t_minus5_gs_optim_r16_present, 1)); -const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_opts::to_string() const -{ - static const char* options[] = {"n36", "n72", "n108", "n144"}; - return convert_enum_idx( - options, 4, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_e_"); + HANDLE_CODE(plmn_id_minus5_gc_r16.unpack(bref)); + HANDLE_CODE(cell_reserved_for_oper_r16.unpack(bref)); + + return SRSASN_SUCCESS; } -uint8_t nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_opts::to_number() const +void plmn_id_info_minus5_gc_nb_r16_s::to_json(json_writer& j) const { - static const uint8_t options[] = {36, 72, 108, 144}; - return map_enum_number( - options, 4, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_e_"); + 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(); } -const char* -nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_string() const +void plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::destroy_() { - static const char* options[] = {"zero", "oneThird", "twoThird", "one"}; - return convert_enum_idx( - options, - 4, - value, - "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); + switch (type_) { + case types::plmn_id_r16: + c.destroy(); + break; + default: + break; + } } -float nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_number() const +void plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::set(types::options e) { - static const float options[] = {0.0, 0.3333333333333333, 0.6666666666666666, 1.0}; - return map_enum_number( - options, - 4, - value, - "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); + destroy_(); + type_ = e; + switch (type_) { + case types::plmn_id_r16: + c.init(); + 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_"); + } } -const char* -nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_number_string() const +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) { - static const char* options[] = {"0", "1/3", "2/3", "1"}; - return convert_enum_idx( - options, - 4, - value, - "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); + type_ = other.type(); + switch (type_) { + case types::plmn_id_r16: + c.init(other.c.get()); + break; + case types::plmn_idx_r16: + c.init(other.c.get()); + 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()); + break; + case types::plmn_idx_r16: + c.set(other.c.get()); + 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_"); + } -const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_opts::to_string() const + return *this; +} +plmn_id_s& plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::set_plmn_id_r16() { - static const char* options[] = {"r1", - "r2", - "r4", - "r8", - "r16", - "r32", - "r64", - "r128", - "r256", - "r512", - "r1024", - "r2048", - "spare4", - "spare3", - "spare2", - "spare1"}; - return convert_enum_idx( - options, 16, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_e_"); + set(types::plmn_id_r16); + return c.get(); } -uint16_t nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_opts::to_number() const +uint8_t& plmn_id_info_minus5_gc_nb_r16_s::plmn_id_minus5_gc_r16_c_::set_plmn_idx_r16() { - static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; - return map_enum_number( - options, 12, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_e_"); + set(types::plmn_idx_r16); + return c.get(); +} +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().to_json(j); + break; + case types::plmn_idx_r16: + j.write_int("plmn-Index-r16", c.get()); + 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().pack(bref)); + break; + case types::plmn_idx_r16: + HANDLE_CODE(pack_integer(bref, c.get(), (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().unpack(bref)); + break; + case types::plmn_idx_r16: + HANDLE_CODE(unpack_integer(c.get(), 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* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_opts::to_string() const +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[] = {"v1dot5", "v2", "v4", "v8", "v16", "v32", "v48", "v64"}; - return convert_enum_idx( - options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_e_"); + 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"); } -float nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_opts::to_number() const + +const char* plmn_id_info_minus5_gc_nb_r16_s::cell_reserved_for_oper_r16_opts::to_string() const { - static const float options[] = {1.5, 2.0, 4.0, 8.0, 16.0, 32.0, 48.0, 64.0}; - return map_enum_number( - options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_e_"); + 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_"); } -const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_opts::to_number_string() const + +// EDT-TBS-NB-r15 ::= SEQUENCE +SRSASN_CODE edt_tbs_nb_r15_s::pack(bit_ref& bref) const { - static const char* options[] = {"1.5", "2", "4", "8", "16", "32", "48", "64"}; - return convert_enum_idx( - options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_e_"); + HANDLE_CODE(bref.pack(edt_small_tbs_enabled_r15, 1)); + HANDLE_CODE(edt_tbs_r15.pack(bref)); + + return SRSASN_SUCCESS; } +SRSASN_CODE edt_tbs_nb_r15_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(edt_small_tbs_enabled_r15, 1)); + HANDLE_CODE(edt_tbs_r15.unpack(bref)); -const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_string() const + return SRSASN_SUCCESS; +} +void edt_tbs_nb_r15_s::to_json(json_writer& j) const { - static const char* options[] = {"zero", "oneEighth", "oneFourth", "threeEighth"}; - return convert_enum_idx( - options, 4, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); + j.start_obj(); + j.write_bool("edt-SmallTBS-Enabled-r15", edt_small_tbs_enabled_r15); + j.write_str("edt-TBS-r15", edt_tbs_r15.to_string()); + j.end_obj(); } -float nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_number() const + +const char* edt_tbs_nb_r15_s::edt_tbs_r15_opts::to_string() const { - static const float options[] = {0.0, 0.125, 0.25, 0.375}; - return map_enum_number( - options, 4, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); + static const char* options[] = {"b328", "b408", "b504", "b584", "b680", "b808", "b936", "b1000"}; + return convert_enum_idx(options, 8, value, "edt_tbs_nb_r15_s::edt_tbs_r15_e_"); } -const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_number_string() const +uint16_t edt_tbs_nb_r15_s::edt_tbs_r15_opts::to_number() const { - static const char* options[] = {"0", "1/8", "1/4", "3/8"}; - return convert_enum_idx( - options, 4, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); + static const uint16_t options[] = {328, 408, 504, 584, 680, 808, 936, 1000}; + return map_enum_number(options, 8, value, "edt_tbs_nb_r15_s::edt_tbs_r15_e_"); } -const char* -nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_opts::to_string() const +// GWUS-Paging-ProbThresh-NB-r16 ::= ENUMERATED +const char* gwus_paging_prob_thresh_nb_r16_opts::to_string() const { - static const char* options[] = {"n24", - "n30", - "n33", - "n36", - "n60", - "n66", - "n69", - "n72", - "n96", - "n102", - "n105", - "n108", - "n120", - "n132", - "n138", - "n144"}; - return convert_enum_idx( - options, - 16, - value, - "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_e_"); + 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 nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_opts::to_number() const +uint8_t gwus_paging_prob_thresh_nb_r16_opts::to_number() const { - static const uint8_t options[] = {24, 30, 33, 36, 60, 66, 69, 72, 96, 102, 105, 108, 120, 132, 138, 144}; - return map_enum_number(options, - 16, - value, - "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_e_"); + 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"); } -// NPRACH-ParametersTDD-NB-r15 ::= SEQUENCE -SRSASN_CODE nprach_params_tdd_nb_r15_s::pack(bit_ref& bref) const +// InterFreqNeighCellInfo-NB-v1530 ::= SEQUENCE +SRSASN_CODE inter_freq_neigh_cell_info_nb_v1530_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(nprach_params_r15_present, 1)); + HANDLE_CODE(bref.pack(nsss_rrm_cfg_r15_present, 1)); - if (nprach_params_r15_present) { - bref.pack(nprach_params_r15.ext, 1); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_periodicity_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_start_time_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_subcarrier_offset_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_num_subcarriers_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_num_repeats_ra_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_start_sf_css_ra_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_offset_ra_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present, 1)); - if (nprach_params_r15.nprach_periodicity_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_periodicity_r15.pack(bref)); - } - if (nprach_params_r15.nprach_start_time_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_start_time_r15.pack(bref)); - } - if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_subcarrier_offset_r15.pack(bref)); - } - if (nprach_params_r15.nprach_num_subcarriers_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_num_subcarriers_r15.pack(bref)); - } - if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.pack(bref)); - } - if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_num_repeats_ra_r15.pack(bref)); - } - if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_start_sf_css_ra_r15.pack(bref)); - } - if (nprach_params_r15.npdcch_offset_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_offset_ra_r15.pack(bref)); - } - if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.pack(bref)); - } + if (nsss_rrm_cfg_r15_present) { + HANDLE_CODE(nsss_rrm_cfg_r15.pack(bref)); } return SRSASN_SUCCESS; } -SRSASN_CODE nprach_params_tdd_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE inter_freq_neigh_cell_info_nb_v1530_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(nprach_params_r15_present, 1)); + HANDLE_CODE(bref.unpack(nsss_rrm_cfg_r15_present, 1)); - if (nprach_params_r15_present) { - bref.unpack(nprach_params_r15.ext, 1); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_periodicity_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_start_time_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_subcarrier_offset_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_num_subcarriers_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_num_repeats_ra_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_start_sf_css_ra_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_offset_ra_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present, 1)); - if (nprach_params_r15.nprach_periodicity_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_periodicity_r15.unpack(bref)); - } - if (nprach_params_r15.nprach_start_time_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_start_time_r15.unpack(bref)); - } - if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_subcarrier_offset_r15.unpack(bref)); - } - if (nprach_params_r15.nprach_num_subcarriers_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_num_subcarriers_r15.unpack(bref)); - } - if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.unpack(bref)); - } - if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_num_repeats_ra_r15.unpack(bref)); - } - if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_start_sf_css_ra_r15.unpack(bref)); - } - if (nprach_params_r15.npdcch_offset_ra_r15_present) { - HANDLE_CODE(nprach_params_r15.npdcch_offset_ra_r15.unpack(bref)); - } - if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { - HANDLE_CODE(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.unpack(bref)); - } + if (nsss_rrm_cfg_r15_present) { + HANDLE_CODE(nsss_rrm_cfg_r15.unpack(bref)); } return SRSASN_SUCCESS; } -void nprach_params_tdd_nb_r15_s::to_json(json_writer& j) const +void inter_freq_neigh_cell_info_nb_v1530_s::to_json(json_writer& j) const { j.start_obj(); - if (nprach_params_r15_present) { - j.write_fieldname("nprach-Parameters-r15"); - j.start_obj(); - if (nprach_params_r15.nprach_periodicity_r15_present) { - j.write_str("nprach-Periodicity-r15", nprach_params_r15.nprach_periodicity_r15.to_string()); - } - if (nprach_params_r15.nprach_start_time_r15_present) { - j.write_str("nprach-StartTime-r15", nprach_params_r15.nprach_start_time_r15.to_string()); - } - if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { - j.write_str("nprach-SubcarrierOffset-r15", nprach_params_r15.nprach_subcarrier_offset_r15.to_string()); - } - if (nprach_params_r15.nprach_num_subcarriers_r15_present) { - j.write_str("nprach-NumSubcarriers-r15", nprach_params_r15.nprach_num_subcarriers_r15.to_string()); - } - if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { - j.write_str("nprach-SubcarrierMSG3-RangeStart-r15", - nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.to_string()); - } - if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { - j.write_str("npdcch-NumRepetitions-RA-r15", nprach_params_r15.npdcch_num_repeats_ra_r15.to_string()); - } - if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { - j.write_str("npdcch-StartSF-CSS-RA-r15", nprach_params_r15.npdcch_start_sf_css_ra_r15.to_string()); - } - if (nprach_params_r15.npdcch_offset_ra_r15_present) { - j.write_str("npdcch-Offset-RA-r15", nprach_params_r15.npdcch_offset_ra_r15.to_string()); - } - if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { - j.write_str("nprach-NumCBRA-StartSubcarriers-r15", - nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.to_string()); - } - j.end_obj(); + if (nsss_rrm_cfg_r15_present) { + j.write_fieldname("nsss-RRM-Config-r15"); + nsss_rrm_cfg_r15.to_json(j); } j.end_obj(); } -const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_opts::to_string() const -{ - static const char* options[] = {"ms80", "ms160", "ms320", "ms640", "ms1280", "ms2560", "ms5120", "ms10240"}; - return convert_enum_idx( - options, 8, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_e_"); -} -uint16_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_opts::to_number() const +// MultiBandInfo-NB-r13 ::= SEQUENCE +SRSASN_CODE multi_band_info_nb_r13_s::pack(bit_ref& bref) const { - static const uint16_t options[] = {80, 160, 320, 640, 1280, 2560, 5120, 10240}; - return map_enum_number( - options, 8, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_e_"); -} + HANDLE_CODE(bref.pack(freq_band_ind_r13_present, 1)); + HANDLE_CODE(bref.pack(freq_band_info_r13_present, 1)); -const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_opts::to_string() const -{ - static const char* options[] = {"ms10", - "ms20", - "ms40", - "ms80", - "ms160", - "ms320", - "ms640", - "ms1280", - "ms2560", - "ms5120", - "spare6", - "spare5", - "spare4", - "spare3", - "spare2", - "spare1"}; - return convert_enum_idx( - options, 16, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_e_"); + if (freq_band_ind_r13_present) { + HANDLE_CODE(pack_integer(bref, freq_band_ind_r13, (uint16_t)1u, (uint16_t)256u)); + } + if (freq_band_info_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_info_r13, 1, 4)); + } + + return SRSASN_SUCCESS; } -uint16_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_opts::to_number() const +SRSASN_CODE multi_band_info_nb_r13_s::unpack(cbit_ref& bref) { - static const uint16_t options[] = {10, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120}; - return map_enum_number( - options, 10, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_e_"); + HANDLE_CODE(bref.unpack(freq_band_ind_r13_present, 1)); + HANDLE_CODE(bref.unpack(freq_band_info_r13_present, 1)); + + if (freq_band_ind_r13_present) { + HANDLE_CODE(unpack_integer(freq_band_ind_r13, bref, (uint16_t)1u, (uint16_t)256u)); + } + if (freq_band_info_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(freq_band_info_r13, bref, 1, 4)); + } + + return SRSASN_SUCCESS; +} +void multi_band_info_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (freq_band_ind_r13_present) { + j.write_int("freqBandIndicator-r13", freq_band_ind_r13); + } + if (freq_band_info_r13_present) { + j.start_array("freqBandInfo-r13"); + for (const auto& e1 : freq_band_info_r13) { + e1.to_json(j); + } + j.end_array(); + } + j.end_obj(); } -const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_opts::to_string() const +// NPRACH-Parameters-NB-r13 ::= SEQUENCE +SRSASN_CODE nprach_params_nb_r13_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(nprach_periodicity_r13.pack(bref)); + HANDLE_CODE(nprach_start_time_r13.pack(bref)); + HANDLE_CODE(nprach_subcarrier_offset_r13.pack(bref)); + HANDLE_CODE(nprach_num_subcarriers_r13.pack(bref)); + HANDLE_CODE(nprach_subcarrier_msg3_range_start_r13.pack(bref)); + HANDLE_CODE(max_num_preamb_attempt_ce_r13.pack(bref)); + HANDLE_CODE(num_repeats_per_preamb_attempt_r13.pack(bref)); + HANDLE_CODE(npdcch_num_repeats_ra_r13.pack(bref)); + HANDLE_CODE(npdcch_start_sf_css_ra_r13.pack(bref)); + HANDLE_CODE(npdcch_offset_ra_r13.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE nprach_params_nb_r13_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(nprach_periodicity_r13.unpack(bref)); + HANDLE_CODE(nprach_start_time_r13.unpack(bref)); + HANDLE_CODE(nprach_subcarrier_offset_r13.unpack(bref)); + HANDLE_CODE(nprach_num_subcarriers_r13.unpack(bref)); + HANDLE_CODE(nprach_subcarrier_msg3_range_start_r13.unpack(bref)); + HANDLE_CODE(max_num_preamb_attempt_ce_r13.unpack(bref)); + HANDLE_CODE(num_repeats_per_preamb_attempt_r13.unpack(bref)); + HANDLE_CODE(npdcch_num_repeats_ra_r13.unpack(bref)); + HANDLE_CODE(npdcch_start_sf_css_ra_r13.unpack(bref)); + HANDLE_CODE(npdcch_offset_ra_r13.unpack(bref)); + + return SRSASN_SUCCESS; +} +void nprach_params_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("nprach-Periodicity-r13", nprach_periodicity_r13.to_string()); + j.write_str("nprach-StartTime-r13", nprach_start_time_r13.to_string()); + j.write_str("nprach-SubcarrierOffset-r13", nprach_subcarrier_offset_r13.to_string()); + j.write_str("nprach-NumSubcarriers-r13", nprach_num_subcarriers_r13.to_string()); + j.write_str("nprach-SubcarrierMSG3-RangeStart-r13", nprach_subcarrier_msg3_range_start_r13.to_string()); + j.write_str("maxNumPreambleAttemptCE-r13", max_num_preamb_attempt_ce_r13.to_string()); + j.write_str("numRepetitionsPerPreambleAttempt-r13", num_repeats_per_preamb_attempt_r13.to_string()); + j.write_str("npdcch-NumRepetitions-RA-r13", npdcch_num_repeats_ra_r13.to_string()); + j.write_str("npdcch-StartSF-CSS-RA-r13", npdcch_start_sf_css_ra_r13.to_string()); + j.write_str("npdcch-Offset-RA-r13", npdcch_offset_ra_r13.to_string()); + j.end_obj(); +} + +const char* nprach_params_nb_r13_s::nprach_periodicity_r13_opts::to_string() const +{ + static const char* options[] = {"ms40", "ms80", "ms160", "ms240", "ms320", "ms640", "ms1280", "ms2560"}; + return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::nprach_periodicity_r13_e_"); +} +uint16_t nprach_params_nb_r13_s::nprach_periodicity_r13_opts::to_number() const +{ + static const uint16_t options[] = {40, 80, 160, 240, 320, 640, 1280, 2560}; + return map_enum_number(options, 8, value, "nprach_params_nb_r13_s::nprach_periodicity_r13_e_"); +} + +const char* nprach_params_nb_r13_s::nprach_start_time_r13_opts::to_string() const +{ + static const char* options[] = {"ms8", "ms16", "ms32", "ms64", "ms128", "ms256", "ms512", "ms1024"}; + return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::nprach_start_time_r13_e_"); +} +uint16_t nprach_params_nb_r13_s::nprach_start_time_r13_opts::to_number() const +{ + static const uint16_t options[] = {8, 16, 32, 64, 128, 256, 512, 1024}; + return map_enum_number(options, 8, value, "nprach_params_nb_r13_s::nprach_start_time_r13_e_"); +} + +const char* nprach_params_nb_r13_s::nprach_subcarrier_offset_r13_opts::to_string() const { static const char* options[] = {"n0", "n12", "n24", "n36", "n2", "n18", "n34", "spare1"}; - return convert_enum_idx( - options, 8, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_e_"); + return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::nprach_subcarrier_offset_r13_e_"); } -uint8_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_opts::to_number() const +uint8_t nprach_params_nb_r13_s::nprach_subcarrier_offset_r13_opts::to_number() const { static const uint8_t options[] = {0, 12, 24, 36, 2, 18, 34}; - return map_enum_number( - options, 7, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_e_"); + return map_enum_number(options, 7, value, "nprach_params_nb_r13_s::nprach_subcarrier_offset_r13_e_"); } -const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_opts::to_string() const +const char* nprach_params_nb_r13_s::nprach_num_subcarriers_r13_opts::to_string() const { static const char* options[] = {"n12", "n24", "n36", "n48"}; - return convert_enum_idx( - options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_e_"); + return convert_enum_idx(options, 4, value, "nprach_params_nb_r13_s::nprach_num_subcarriers_r13_e_"); } -uint8_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_opts::to_number() const +uint8_t nprach_params_nb_r13_s::nprach_num_subcarriers_r13_opts::to_number() const { static const uint8_t options[] = {12, 24, 36, 48}; - return map_enum_number( - options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_e_"); + return map_enum_number(options, 4, value, "nprach_params_nb_r13_s::nprach_num_subcarriers_r13_e_"); } -const char* -nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_string() const +const char* nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_opts::to_string() const { static const char* options[] = {"zero", "oneThird", "twoThird", "one"}; - return convert_enum_idx( - options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); + return convert_enum_idx(options, 4, value, "nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_e_"); } -float nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_number() const +float nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_opts::to_number() const { static const float options[] = {0.0, 0.3333333333333333, 0.6666666666666666, 1.0}; - return map_enum_number( - options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); + return map_enum_number(options, 4, value, "nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_e_"); } -const char* -nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_number_string() const +const char* nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_opts::to_number_string() const { static const char* options[] = {"0", "1/3", "2/3", "1"}; - return convert_enum_idx( - options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); + return convert_enum_idx(options, 4, value, "nprach_params_nb_r13_s::nprach_subcarrier_msg3_range_start_r13_e_"); } -const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_opts::to_string() const +const char* nprach_params_nb_r13_s::max_num_preamb_attempt_ce_r13_opts::to_string() const +{ + static const char* options[] = {"n3", "n4", "n5", "n6", "n7", "n8", "n10", "spare1"}; + return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::max_num_preamb_attempt_ce_r13_e_"); +} +uint8_t nprach_params_nb_r13_s::max_num_preamb_attempt_ce_r13_opts::to_number() const +{ + static const uint8_t options[] = {3, 4, 5, 6, 7, 8, 10}; + return map_enum_number(options, 7, value, "nprach_params_nb_r13_s::max_num_preamb_attempt_ce_r13_e_"); +} + +const char* nprach_params_nb_r13_s::num_repeats_per_preamb_attempt_r13_opts::to_string() const +{ + static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32", "n64", "n128"}; + return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::num_repeats_per_preamb_attempt_r13_e_"); +} +uint8_t nprach_params_nb_r13_s::num_repeats_per_preamb_attempt_r13_opts::to_number() const +{ + static const uint8_t options[] = {1, 2, 4, 8, 16, 32, 64, 128}; + return map_enum_number(options, 8, value, "nprach_params_nb_r13_s::num_repeats_per_preamb_attempt_r13_e_"); +} + +const char* nprach_params_nb_r13_s::npdcch_num_repeats_ra_r13_opts::to_string() const { static const char* options[] = {"r1", "r2", @@ -5973,767 +7013,916 @@ const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats "spare3", "spare2", "spare1"}; - return convert_enum_idx( - options, 16, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_e_"); + return convert_enum_idx(options, 16, value, "nprach_params_nb_r13_s::npdcch_num_repeats_ra_r13_e_"); } -uint16_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_opts::to_number() const +uint16_t nprach_params_nb_r13_s::npdcch_num_repeats_ra_r13_opts::to_number() const { static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; - return map_enum_number( - options, 12, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_e_"); + return map_enum_number(options, 12, value, "nprach_params_nb_r13_s::npdcch_num_repeats_ra_r13_e_"); } -const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_opts::to_string() const +const char* nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_opts::to_string() const { - static const char* options[] = {"v4", "v8", "v16", "v32", "v48", "v64", "v96", "v128"}; - return convert_enum_idx( - options, 8, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_e_"); + static const char* options[] = {"v1dot5", "v2", "v4", "v8", "v16", "v32", "v48", "v64"}; + return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_e_"); } -uint8_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_opts::to_number() const +float nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_opts::to_number() const { - static const uint8_t options[] = {4, 8, 16, 32, 48, 64, 96, 128}; - return map_enum_number( - options, 8, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_e_"); + static const float options[] = {1.5, 2.0, 4.0, 8.0, 16.0, 32.0, 48.0, 64.0}; + return map_enum_number(options, 8, value, "nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_e_"); +} +const char* nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_opts::to_number_string() const +{ + static const char* options[] = {"1.5", "2", "4", "8", "16", "32", "48", "64"}; + return convert_enum_idx(options, 8, value, "nprach_params_nb_r13_s::npdcch_start_sf_css_ra_r13_e_"); } -const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_string() const +const char* nprach_params_nb_r13_s::npdcch_offset_ra_r13_opts::to_string() const { static const char* options[] = {"zero", "oneEighth", "oneFourth", "threeEighth"}; - return convert_enum_idx( - options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); + return convert_enum_idx(options, 4, value, "nprach_params_nb_r13_s::npdcch_offset_ra_r13_e_"); } -float nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_number() const +float nprach_params_nb_r13_s::npdcch_offset_ra_r13_opts::to_number() const { static const float options[] = {0.0, 0.125, 0.25, 0.375}; - return map_enum_number( - options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); + return map_enum_number(options, 4, value, "nprach_params_nb_r13_s::npdcch_offset_ra_r13_e_"); } -const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_number_string() const +const char* nprach_params_nb_r13_s::npdcch_offset_ra_r13_opts::to_number_string() const { static const char* options[] = {"0", "1/8", "1/4", "3/8"}; - return convert_enum_idx( - options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); -} - -const char* -nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_opts::to_string() const -{ - static const char* options[] = { - "n8", "n10", "n11", "n12", "n20", "n22", "n23", "n24", "n32", "n34", "n35", "n36", "n40", "n44", "n46", "n48"}; - return convert_enum_idx( - options, 16, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_e_"); -} -uint8_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_opts::to_number() const -{ - static const uint8_t options[] = {8, 10, 11, 12, 20, 22, 23, 24, 32, 34, 35, 36, 40, 44, 46, 48}; - return map_enum_number( - options, 16, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_e_"); + return convert_enum_idx(options, 4, value, "nprach_params_nb_r13_s::npdcch_offset_ra_r13_e_"); } -// NPRACH-ParametersTDD-NB-v1550 ::= SEQUENCE -SRSASN_CODE nprach_params_tdd_nb_v1550_s::pack(bit_ref& bref) const +// NPRACH-Parameters-NB-r14 ::= SEQUENCE +SRSASN_CODE nprach_params_nb_r14_s::pack(bit_ref& bref) const { - HANDLE_CODE(max_num_preamb_attempt_ce_v1550.pack(bref)); - HANDLE_CODE(num_repeats_per_preamb_attempt_v1550.pack(bref)); + HANDLE_CODE(bref.pack(nprach_params_r14_present, 1)); - return SRSASN_SUCCESS; -} -SRSASN_CODE nprach_params_tdd_nb_v1550_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(max_num_preamb_attempt_ce_v1550.unpack(bref)); - HANDLE_CODE(num_repeats_per_preamb_attempt_v1550.unpack(bref)); + if (nprach_params_r14_present) { + bref.pack(nprach_params_r14.ext, 1); + HANDLE_CODE(bref.pack(nprach_params_r14.nprach_periodicity_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r14.nprach_start_time_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r14.nprach_subcarrier_offset_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r14.nprach_num_subcarriers_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r14.nprach_subcarrier_msg3_range_start_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r14.npdcch_num_repeats_ra_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r14.npdcch_start_sf_css_ra_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r14.npdcch_offset_ra_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r14.nprach_num_cbra_start_subcarriers_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r14.npdcch_carrier_idx_r14_present, 1)); + if (nprach_params_r14.nprach_periodicity_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_periodicity_r14.pack(bref)); + } + if (nprach_params_r14.nprach_start_time_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_start_time_r14.pack(bref)); + } + if (nprach_params_r14.nprach_subcarrier_offset_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_subcarrier_offset_r14.pack(bref)); + } + if (nprach_params_r14.nprach_num_subcarriers_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_num_subcarriers_r14.pack(bref)); + } + if (nprach_params_r14.nprach_subcarrier_msg3_range_start_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_subcarrier_msg3_range_start_r14.pack(bref)); + } + if (nprach_params_r14.npdcch_num_repeats_ra_r14_present) { + HANDLE_CODE(nprach_params_r14.npdcch_num_repeats_ra_r14.pack(bref)); + } + if (nprach_params_r14.npdcch_start_sf_css_ra_r14_present) { + HANDLE_CODE(nprach_params_r14.npdcch_start_sf_css_ra_r14.pack(bref)); + } + if (nprach_params_r14.npdcch_offset_ra_r14_present) { + HANDLE_CODE(nprach_params_r14.npdcch_offset_ra_r14.pack(bref)); + } + if (nprach_params_r14.nprach_num_cbra_start_subcarriers_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_num_cbra_start_subcarriers_r14.pack(bref)); + } + if (nprach_params_r14.npdcch_carrier_idx_r14_present) { + HANDLE_CODE(pack_integer(bref, nprach_params_r14.npdcch_carrier_idx_r14, (uint8_t)1u, (uint8_t)15u)); + } + } return SRSASN_SUCCESS; } -void nprach_params_tdd_nb_v1550_s::to_json(json_writer& j) const +SRSASN_CODE nprach_params_nb_r14_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(nprach_params_r14_present, 1)); + + if (nprach_params_r14_present) { + bref.unpack(nprach_params_r14.ext, 1); + HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_periodicity_r14_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_start_time_r14_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_subcarrier_offset_r14_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_num_subcarriers_r14_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_subcarrier_msg3_range_start_r14_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r14.npdcch_num_repeats_ra_r14_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r14.npdcch_start_sf_css_ra_r14_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r14.npdcch_offset_ra_r14_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r14.nprach_num_cbra_start_subcarriers_r14_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r14.npdcch_carrier_idx_r14_present, 1)); + if (nprach_params_r14.nprach_periodicity_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_periodicity_r14.unpack(bref)); + } + if (nprach_params_r14.nprach_start_time_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_start_time_r14.unpack(bref)); + } + if (nprach_params_r14.nprach_subcarrier_offset_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_subcarrier_offset_r14.unpack(bref)); + } + if (nprach_params_r14.nprach_num_subcarriers_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_num_subcarriers_r14.unpack(bref)); + } + if (nprach_params_r14.nprach_subcarrier_msg3_range_start_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_subcarrier_msg3_range_start_r14.unpack(bref)); + } + if (nprach_params_r14.npdcch_num_repeats_ra_r14_present) { + HANDLE_CODE(nprach_params_r14.npdcch_num_repeats_ra_r14.unpack(bref)); + } + if (nprach_params_r14.npdcch_start_sf_css_ra_r14_present) { + HANDLE_CODE(nprach_params_r14.npdcch_start_sf_css_ra_r14.unpack(bref)); + } + if (nprach_params_r14.npdcch_offset_ra_r14_present) { + HANDLE_CODE(nprach_params_r14.npdcch_offset_ra_r14.unpack(bref)); + } + if (nprach_params_r14.nprach_num_cbra_start_subcarriers_r14_present) { + HANDLE_CODE(nprach_params_r14.nprach_num_cbra_start_subcarriers_r14.unpack(bref)); + } + if (nprach_params_r14.npdcch_carrier_idx_r14_present) { + HANDLE_CODE(unpack_integer(nprach_params_r14.npdcch_carrier_idx_r14, bref, (uint8_t)1u, (uint8_t)15u)); + } + } + + return SRSASN_SUCCESS; +} +void nprach_params_nb_r14_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("maxNumPreambleAttemptCE-v1550", max_num_preamb_attempt_ce_v1550.to_string()); - j.write_str("numRepetitionsPerPreambleAttempt-v1550", num_repeats_per_preamb_attempt_v1550.to_string()); + if (nprach_params_r14_present) { + j.write_fieldname("nprach-Parameters-r14"); + j.start_obj(); + if (nprach_params_r14.nprach_periodicity_r14_present) { + j.write_str("nprach-Periodicity-r14", nprach_params_r14.nprach_periodicity_r14.to_string()); + } + if (nprach_params_r14.nprach_start_time_r14_present) { + j.write_str("nprach-StartTime-r14", nprach_params_r14.nprach_start_time_r14.to_string()); + } + if (nprach_params_r14.nprach_subcarrier_offset_r14_present) { + j.write_str("nprach-SubcarrierOffset-r14", nprach_params_r14.nprach_subcarrier_offset_r14.to_string()); + } + if (nprach_params_r14.nprach_num_subcarriers_r14_present) { + j.write_str("nprach-NumSubcarriers-r14", nprach_params_r14.nprach_num_subcarriers_r14.to_string()); + } + if (nprach_params_r14.nprach_subcarrier_msg3_range_start_r14_present) { + j.write_str("nprach-SubcarrierMSG3-RangeStart-r14", + nprach_params_r14.nprach_subcarrier_msg3_range_start_r14.to_string()); + } + if (nprach_params_r14.npdcch_num_repeats_ra_r14_present) { + j.write_str("npdcch-NumRepetitions-RA-r14", nprach_params_r14.npdcch_num_repeats_ra_r14.to_string()); + } + if (nprach_params_r14.npdcch_start_sf_css_ra_r14_present) { + j.write_str("npdcch-StartSF-CSS-RA-r14", nprach_params_r14.npdcch_start_sf_css_ra_r14.to_string()); + } + if (nprach_params_r14.npdcch_offset_ra_r14_present) { + j.write_str("npdcch-Offset-RA-r14", nprach_params_r14.npdcch_offset_ra_r14.to_string()); + } + if (nprach_params_r14.nprach_num_cbra_start_subcarriers_r14_present) { + j.write_str("nprach-NumCBRA-StartSubcarriers-r14", + nprach_params_r14.nprach_num_cbra_start_subcarriers_r14.to_string()); + } + if (nprach_params_r14.npdcch_carrier_idx_r14_present) { + j.write_int("npdcch-CarrierIndex-r14", nprach_params_r14.npdcch_carrier_idx_r14); + } + j.end_obj(); + } j.end_obj(); } -const char* nprach_params_tdd_nb_v1550_s::max_num_preamb_attempt_ce_v1550_opts::to_string() const +const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_periodicity_r14_opts::to_string() const { - static const char* options[] = {"n3", "n4", "n5", "n6", "n7", "n8", "n10", "spare1"}; - return convert_enum_idx(options, 8, value, "nprach_params_tdd_nb_v1550_s::max_num_preamb_attempt_ce_v1550_e_"); + static const char* options[] = {"ms40", "ms80", "ms160", "ms240", "ms320", "ms640", "ms1280", "ms2560"}; + return convert_enum_idx(options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_periodicity_r14_e_"); } -uint8_t nprach_params_tdd_nb_v1550_s::max_num_preamb_attempt_ce_v1550_opts::to_number() const +uint16_t nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_periodicity_r14_opts::to_number() const { - static const uint8_t options[] = {3, 4, 5, 6, 7, 8, 10}; - return map_enum_number(options, 7, value, "nprach_params_tdd_nb_v1550_s::max_num_preamb_attempt_ce_v1550_e_"); + static const uint16_t options[] = {40, 80, 160, 240, 320, 640, 1280, 2560}; + return map_enum_number(options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_periodicity_r14_e_"); } -const char* nprach_params_tdd_nb_v1550_s::num_repeats_per_preamb_attempt_v1550_opts::to_string() const +const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_start_time_r14_opts::to_string() const { - static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32", "n64", "n128", "n256", "n512", "n1024"}; - return convert_enum_idx(options, 11, value, "nprach_params_tdd_nb_v1550_s::num_repeats_per_preamb_attempt_v1550_e_"); + static const char* options[] = {"ms8", "ms16", "ms32", "ms64", "ms128", "ms256", "ms512", "ms1024"}; + return convert_enum_idx(options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_start_time_r14_e_"); } -uint16_t nprach_params_tdd_nb_v1550_s::num_repeats_per_preamb_attempt_v1550_opts::to_number() const +uint16_t nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_start_time_r14_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, "nprach_params_tdd_nb_v1550_s::num_repeats_per_preamb_attempt_v1550_e_"); + static const uint16_t options[] = {8, 16, 32, 64, 128, 256, 512, 1024}; + return map_enum_number(options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_start_time_r14_e_"); } -// PagingWeight-NB-r14 ::= ENUMERATED -const char* paging_weight_nb_r14_opts::to_string() const +const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_offset_r14_opts::to_string() const { - static const char* options[] = { - "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16"}; - return convert_enum_idx(options, 16, value, "paging_weight_nb_r14_e"); + static const char* options[] = {"n0", "n12", "n24", "n36", "n2", "n18", "n34", "spare1"}; + return convert_enum_idx( + options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_offset_r14_e_"); } -uint8_t paging_weight_nb_r14_opts::to_number() const +uint8_t nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_offset_r14_opts::to_number() const { - static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - return map_enum_number(options, 16, value, "paging_weight_nb_r14_e"); + static const uint8_t options[] = {0, 12, 24, 36, 2, 18, 34}; + return map_enum_number( + options, 7, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_offset_r14_e_"); } -// RACH-Info-NB-r13 ::= SEQUENCE -SRSASN_CODE rach_info_nb_r13_s::pack(bit_ref& bref) const +const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_subcarriers_r14_opts::to_string() const { - HANDLE_CODE(ra_resp_win_size_r13.pack(bref)); - HANDLE_CODE(mac_contention_resolution_timer_r13.pack(bref)); - - return SRSASN_SUCCESS; + static const char* options[] = {"n12", "n24", "n36", "n48"}; + return convert_enum_idx( + options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_subcarriers_r14_e_"); } -SRSASN_CODE rach_info_nb_r13_s::unpack(cbit_ref& bref) +uint8_t nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_subcarriers_r14_opts::to_number() const { - HANDLE_CODE(ra_resp_win_size_r13.unpack(bref)); - HANDLE_CODE(mac_contention_resolution_timer_r13.unpack(bref)); - - return SRSASN_SUCCESS; + static const uint8_t options[] = {12, 24, 36, 48}; + return map_enum_number( + options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_subcarriers_r14_e_"); } -void rach_info_nb_r13_s::to_json(json_writer& j) const + +const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_opts::to_string() const { - j.start_obj(); - j.write_str("ra-ResponseWindowSize-r13", ra_resp_win_size_r13.to_string()); - j.write_str("mac-ContentionResolutionTimer-r13", mac_contention_resolution_timer_r13.to_string()); - j.end_obj(); + static const char* options[] = {"zero", "oneThird", "twoThird", "one"}; + return convert_enum_idx( + options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_e_"); } - -const char* rach_info_nb_r13_s::ra_resp_win_size_r13_opts::to_string() const +float nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_opts::to_number() const { - static const char* options[] = {"pp2", "pp3", "pp4", "pp5", "pp6", "pp7", "pp8", "pp10"}; - return convert_enum_idx(options, 8, value, "rach_info_nb_r13_s::ra_resp_win_size_r13_e_"); + static const float options[] = {0.0, 0.3333333333333333, 0.6666666666666666, 1.0}; + return map_enum_number( + options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_e_"); } -uint8_t rach_info_nb_r13_s::ra_resp_win_size_r13_opts::to_number() const +const char* +nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_opts::to_number_string() const { - static const uint8_t options[] = {2, 3, 4, 5, 6, 7, 8, 10}; - return map_enum_number(options, 8, value, "rach_info_nb_r13_s::ra_resp_win_size_r13_e_"); + static const char* options[] = {"0", "1/3", "2/3", "1"}; + return convert_enum_idx( + options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_subcarrier_msg3_range_start_r14_e_"); } -const char* rach_info_nb_r13_s::mac_contention_resolution_timer_r13_opts::to_string() const +const char* nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_num_repeats_ra_r14_opts::to_string() const { - static const char* options[] = {"pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32", "pp64"}; - return convert_enum_idx(options, 8, value, "rach_info_nb_r13_s::mac_contention_resolution_timer_r13_e_"); + static const char* options[] = {"r1", + "r2", + "r4", + "r8", + "r16", + "r32", + "r64", + "r128", + "r256", + "r512", + "r1024", + "r2048", + "spare4", + "spare3", + "spare2", + "spare1"}; + return convert_enum_idx( + options, 16, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_num_repeats_ra_r14_e_"); } -uint8_t rach_info_nb_r13_s::mac_contention_resolution_timer_r13_opts::to_number() const +uint16_t nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_num_repeats_ra_r14_opts::to_number() const { - static const uint8_t options[] = {1, 2, 3, 4, 8, 16, 32, 64}; - return map_enum_number(options, 8, value, "rach_info_nb_r13_s::mac_contention_resolution_timer_r13_e_"); + static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; + return map_enum_number( + options, 12, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_num_repeats_ra_r14_e_"); } -// RACH-Info-NB-v1530 ::= SEQUENCE -SRSASN_CODE rach_info_nb_v1530_s::pack(bit_ref& bref) const +const char* nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_opts::to_string() const { - HANDLE_CODE(mac_contention_resolution_timer_r15.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE rach_info_nb_v1530_s::unpack(cbit_ref& bref) + static const char* options[] = {"v1dot5", "v2", "v4", "v8", "v16", "v32", "v48", "v64"}; + return convert_enum_idx( + options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_e_"); +} +float nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_opts::to_number() const { - HANDLE_CODE(mac_contention_resolution_timer_r15.unpack(bref)); - - return SRSASN_SUCCESS; + static const float options[] = {1.5, 2.0, 4.0, 8.0, 16.0, 32.0, 48.0, 64.0}; + return map_enum_number( + options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_e_"); } -void rach_info_nb_v1530_s::to_json(json_writer& j) const +const char* nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_opts::to_number_string() const { - j.start_obj(); - j.write_str("mac-ContentionResolutionTimer-r15", mac_contention_resolution_timer_r15.to_string()); - j.end_obj(); + static const char* options[] = {"1.5", "2", "4", "8", "16", "32", "48", "64"}; + return convert_enum_idx( + options, 8, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_start_sf_css_ra_r14_e_"); } -const char* rach_info_nb_v1530_s::mac_contention_resolution_timer_r15_opts::to_string() const +const char* nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_opts::to_string() const { - static const char* options[] = {"pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32", "pp64"}; - return convert_enum_idx(options, 8, value, "rach_info_nb_v1530_s::mac_contention_resolution_timer_r15_e_"); + static const char* options[] = {"zero", "oneEighth", "oneFourth", "threeEighth"}; + return convert_enum_idx(options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_e_"); } -uint8_t rach_info_nb_v1530_s::mac_contention_resolution_timer_r15_opts::to_number() const +float nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_opts::to_number() const { - static const uint8_t options[] = {1, 2, 3, 4, 8, 16, 32, 64}; - return map_enum_number(options, 8, value, "rach_info_nb_v1530_s::mac_contention_resolution_timer_r15_e_"); + static const float options[] = {0.0, 0.125, 0.25, 0.375}; + return map_enum_number(options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_e_"); +} +const char* nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_opts::to_number_string() const +{ + static const char* options[] = {"0", "1/8", "1/4", "3/8"}; + return convert_enum_idx(options, 4, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::npdcch_offset_ra_r14_e_"); } -// SchedulingInfo-NB-v1530 ::= SEQUENCE -SRSASN_CODE sched_info_nb_v1530_s::pack(bit_ref& bref) const +const char* nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_cbra_start_subcarriers_r14_opts::to_string() const { - HANDLE_CODE(bref.pack(sib_map_info_v1530_present, 1)); + static const char* options[] = { + "n8", "n10", "n11", "n12", "n20", "n22", "n23", "n24", "n32", "n34", "n35", "n36", "n40", "n44", "n46", "n48"}; + return convert_enum_idx( + options, 16, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_cbra_start_subcarriers_r14_e_"); +} +uint8_t nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_cbra_start_subcarriers_r14_opts::to_number() const +{ + static const uint8_t options[] = {8, 10, 11, 12, 20, 22, 23, 24, 32, 34, 35, 36, 40, 44, 46, 48}; + return map_enum_number( + options, 16, value, "nprach_params_nb_r14_s::nprach_params_r14_s_::nprach_num_cbra_start_subcarriers_r14_e_"); +} - if (sib_map_info_v1530_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, sib_map_info_v1530, 1, 8)); - } +// NPRACH-Parameters-NB-v1330 ::= SEQUENCE +SRSASN_CODE nprach_params_nb_v1330_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(nprach_num_cbra_start_subcarriers_r13.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE sched_info_nb_v1530_s::unpack(cbit_ref& bref) +SRSASN_CODE nprach_params_nb_v1330_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(sib_map_info_v1530_present, 1)); - - if (sib_map_info_v1530_present) { - HANDLE_CODE(unpack_dyn_seq_of(sib_map_info_v1530, bref, 1, 8)); - } + HANDLE_CODE(nprach_num_cbra_start_subcarriers_r13.unpack(bref)); return SRSASN_SUCCESS; } -void sched_info_nb_v1530_s::to_json(json_writer& j) const +void nprach_params_nb_v1330_s::to_json(json_writer& j) const { j.start_obj(); - if (sib_map_info_v1530_present) { - j.start_array("sib-MappingInfo-v1530"); - for (const auto& e1 : sib_map_info_v1530) { - j.write_str(e1.to_string()); - } - j.end_array(); - } + j.write_str("nprach-NumCBRA-StartSubcarriers-r13", nprach_num_cbra_start_subcarriers_r13.to_string()); j.end_obj(); } -// WUS-MaxDurationFactor-NB-r15 ::= ENUMERATED -const char* wus_max_dur_factor_nb_r15_opts::to_string() const -{ - static const char* options[] = {"one128th", "one64th", "one32th", "one16th", "oneEighth", "oneQuarter", "oneHalf"}; - return convert_enum_idx(options, 7, value, "wus_max_dur_factor_nb_r15_e"); -} -float wus_max_dur_factor_nb_r15_opts::to_number() const +const char* nprach_params_nb_v1330_s::nprach_num_cbra_start_subcarriers_r13_opts::to_string() const { - static const float options[] = {128.0, 64.0, 32.0, 16.0, 0.125, 0.25, 0.5}; - return map_enum_number(options, 7, value, "wus_max_dur_factor_nb_r15_e"); + static const char* options[] = { + "n8", "n10", "n11", "n12", "n20", "n22", "n23", "n24", "n32", "n34", "n35", "n36", "n40", "n44", "n46", "n48"}; + return convert_enum_idx(options, 16, value, "nprach_params_nb_v1330_s::nprach_num_cbra_start_subcarriers_r13_e_"); } -const char* wus_max_dur_factor_nb_r15_opts::to_number_string() const +uint8_t nprach_params_nb_v1330_s::nprach_num_cbra_start_subcarriers_r13_opts::to_number() const { - static const char* options[] = {"128", "64", "32", "16", "1/8", "1/4", "1/2"}; - return convert_enum_idx(options, 7, value, "wus_max_dur_factor_nb_r15_e"); + static const uint8_t options[] = {8, 10, 11, 12, 20, 22, 23, 24, 32, 34, 35, 36, 40, 44, 46, 48}; + return map_enum_number(options, 16, value, "nprach_params_nb_v1330_s::nprach_num_cbra_start_subcarriers_r13_e_"); } -// DL-CarrierConfigCommon-NB-r14 ::= SEQUENCE -SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::pack(bit_ref& bref) const +// NPRACH-ParametersFmt2-NB-r15 ::= SEQUENCE +SRSASN_CODE nprach_params_fmt2_nb_r15_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(inband_carrier_info_r14_present, 1)); - HANDLE_CODE(bref.pack(nrs_pwr_offset_non_anchor_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15_present, 1)); - HANDLE_CODE(dl_carrier_freq_r14.pack(bref)); - HANDLE_CODE(dl_bitmap_non_anchor_r14.pack(bref)); - HANDLE_CODE(dl_gap_non_anchor_r14.pack(bref)); - if (inband_carrier_info_r14_present) { - HANDLE_CODE(bref.pack(inband_carrier_info_r14.same_pci_ind_r14_present, 1)); - if (inband_carrier_info_r14.same_pci_ind_r14_present) { - HANDLE_CODE(inband_carrier_info_r14.same_pci_ind_r14.pack(bref)); + if (nprach_params_r15_present) { + bref.pack(nprach_params_r15.ext, 1); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_periodicity_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_start_time_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_subcarrier_offset_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_num_subcarriers_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_num_repeats_ra_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_start_sf_css_ra_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_offset_ra_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_carrier_idx_r15_present, 1)); + if (nprach_params_r15.nprach_periodicity_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_periodicity_r15.pack(bref)); } - HANDLE_CODE(inband_carrier_info_r14.eutra_ctrl_region_size_r14.pack(bref)); - } - if (nrs_pwr_offset_non_anchor_r14_present) { - HANDLE_CODE(nrs_pwr_offset_non_anchor_r14.pack(bref)); - } - - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= dl_gap_non_anchor_v1530.is_present(); - group_flags[1] |= dl_carrier_freq_v1550.is_present(); - group_flags.pack(bref); - - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(dl_gap_non_anchor_v1530.is_present(), 1)); - if (dl_gap_non_anchor_v1530.is_present()) { - HANDLE_CODE(dl_gap_non_anchor_v1530->pack(bref)); - } + if (nprach_params_r15.nprach_start_time_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_start_time_r15.pack(bref)); } - if (group_flags[1]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(dl_carrier_freq_v1550.is_present(), 1)); - if (dl_carrier_freq_v1550.is_present()) { - HANDLE_CODE(dl_carrier_freq_v1550->pack(bref)); - } + if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_subcarrier_offset_r15.pack(bref)); } - } - return SRSASN_SUCCESS; -} -SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::unpack(cbit_ref& bref) -{ - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(inband_carrier_info_r14_present, 1)); - HANDLE_CODE(bref.unpack(nrs_pwr_offset_non_anchor_r14_present, 1)); - - HANDLE_CODE(dl_carrier_freq_r14.unpack(bref)); - HANDLE_CODE(dl_bitmap_non_anchor_r14.unpack(bref)); - HANDLE_CODE(dl_gap_non_anchor_r14.unpack(bref)); - if (inband_carrier_info_r14_present) { - HANDLE_CODE(bref.unpack(inband_carrier_info_r14.same_pci_ind_r14_present, 1)); - if (inband_carrier_info_r14.same_pci_ind_r14_present) { - HANDLE_CODE(inband_carrier_info_r14.same_pci_ind_r14.unpack(bref)); + if (nprach_params_r15.nprach_num_subcarriers_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_num_subcarriers_r15.pack(bref)); } - HANDLE_CODE(inband_carrier_info_r14.eutra_ctrl_region_size_r14.unpack(bref)); - } - if (nrs_pwr_offset_non_anchor_r14_present) { - HANDLE_CODE(nrs_pwr_offset_non_anchor_r14.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 dl_gap_non_anchor_v1530_present; - HANDLE_CODE(bref.unpack(dl_gap_non_anchor_v1530_present, 1)); - dl_gap_non_anchor_v1530.set_present(dl_gap_non_anchor_v1530_present); - if (dl_gap_non_anchor_v1530.is_present()) { - HANDLE_CODE(dl_gap_non_anchor_v1530->unpack(bref)); - } + if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.pack(bref)); } - if (group_flags[1]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - bool dl_carrier_freq_v1550_present; - HANDLE_CODE(bref.unpack(dl_carrier_freq_v1550_present, 1)); - dl_carrier_freq_v1550.set_present(dl_carrier_freq_v1550_present); - if (dl_carrier_freq_v1550.is_present()) { - HANDLE_CODE(dl_carrier_freq_v1550->unpack(bref)); - } + if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_num_repeats_ra_r15.pack(bref)); } - } - return SRSASN_SUCCESS; -} -void dl_carrier_cfg_common_nb_r14_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_fieldname("dl-CarrierFreq-r14"); - dl_carrier_freq_r14.to_json(j); - j.write_fieldname("downlinkBitmapNonAnchor-r14"); - dl_bitmap_non_anchor_r14.to_json(j); - j.write_fieldname("dl-GapNonAnchor-r14"); - dl_gap_non_anchor_r14.to_json(j); - if (inband_carrier_info_r14_present) { - j.write_fieldname("inbandCarrierInfo-r14"); - j.start_obj(); - if (inband_carrier_info_r14.same_pci_ind_r14_present) { - j.write_fieldname("samePCI-Indicator-r14"); - inband_carrier_info_r14.same_pci_ind_r14.to_json(j); + if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_start_sf_css_ra_r15.pack(bref)); } - j.write_str("eutraControlRegionSize-r14", inband_carrier_info_r14.eutra_ctrl_region_size_r14.to_string()); - j.end_obj(); - } - if (nrs_pwr_offset_non_anchor_r14_present) { - j.write_str("nrs-PowerOffsetNonAnchor-r14", nrs_pwr_offset_non_anchor_r14.to_string()); - } - if (ext) { - if (dl_gap_non_anchor_v1530.is_present()) { - j.write_fieldname("dl-GapNonAnchor-v1530"); - dl_gap_non_anchor_v1530->to_json(j); + if (nprach_params_r15.npdcch_offset_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_offset_ra_r15.pack(bref)); } - if (dl_carrier_freq_v1550.is_present()) { - j.write_fieldname("dl-CarrierFreq-v1550"); - dl_carrier_freq_v1550->to_json(j); + if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.pack(bref)); + } + if (nprach_params_r15.npdcch_carrier_idx_r15_present) { + HANDLE_CODE(pack_integer(bref, nprach_params_r15.npdcch_carrier_idx_r15, (uint8_t)1u, (uint8_t)15u)); } } - j.end_obj(); -} -void dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::set(types::options e) -{ - type_ = e; + return SRSASN_SUCCESS; } -void dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::set_use_no_bitmap_r14() +SRSASN_CODE nprach_params_fmt2_nb_r15_s::unpack(cbit_ref& bref) { - set(types::use_no_bitmap_r14); -} -void dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::set_use_anchor_bitmap_r14() -{ - set(types::use_anchor_bitmap_r14); -} -dl_bitmap_nb_r13_c& dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::set_explicit_bitmap_cfg_r14() -{ - set(types::explicit_bitmap_cfg_r14); - return c; + HANDLE_CODE(bref.unpack(nprach_params_r15_present, 1)); + + if (nprach_params_r15_present) { + bref.unpack(nprach_params_r15.ext, 1); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_periodicity_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_start_time_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_subcarrier_offset_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_num_subcarriers_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_num_repeats_ra_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_start_sf_css_ra_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_offset_ra_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_carrier_idx_r15_present, 1)); + if (nprach_params_r15.nprach_periodicity_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_periodicity_r15.unpack(bref)); + } + if (nprach_params_r15.nprach_start_time_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_start_time_r15.unpack(bref)); + } + if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_subcarrier_offset_r15.unpack(bref)); + } + if (nprach_params_r15.nprach_num_subcarriers_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_num_subcarriers_r15.unpack(bref)); + } + if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.unpack(bref)); + } + if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_num_repeats_ra_r15.unpack(bref)); + } + if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_start_sf_css_ra_r15.unpack(bref)); + } + if (nprach_params_r15.npdcch_offset_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_offset_ra_r15.unpack(bref)); + } + if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.unpack(bref)); + } + if (nprach_params_r15.npdcch_carrier_idx_r15_present) { + HANDLE_CODE(unpack_integer(nprach_params_r15.npdcch_carrier_idx_r15, bref, (uint8_t)1u, (uint8_t)15u)); + } + } + + return SRSASN_SUCCESS; } -void dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::to_json(json_writer& j) const +void nprach_params_fmt2_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::use_no_bitmap_r14: - break; - case types::use_anchor_bitmap_r14: - break; - case types::explicit_bitmap_cfg_r14: - j.write_fieldname("explicitBitmapConfiguration-r14"); - c.to_json(j); - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_"); + if (nprach_params_r15_present) { + j.write_fieldname("nprach-Parameters-r15"); + j.start_obj(); + if (nprach_params_r15.nprach_periodicity_r15_present) { + j.write_str("nprach-Periodicity-r15", nprach_params_r15.nprach_periodicity_r15.to_string()); + } + if (nprach_params_r15.nprach_start_time_r15_present) { + j.write_str("nprach-StartTime-r15", nprach_params_r15.nprach_start_time_r15.to_string()); + } + if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { + j.write_str("nprach-SubcarrierOffset-r15", nprach_params_r15.nprach_subcarrier_offset_r15.to_string()); + } + if (nprach_params_r15.nprach_num_subcarriers_r15_present) { + j.write_str("nprach-NumSubcarriers-r15", nprach_params_r15.nprach_num_subcarriers_r15.to_string()); + } + if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { + j.write_str("nprach-SubcarrierMSG3-RangeStart-r15", + nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.to_string()); + } + if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { + j.write_str("npdcch-NumRepetitions-RA-r15", nprach_params_r15.npdcch_num_repeats_ra_r15.to_string()); + } + if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { + j.write_str("npdcch-StartSF-CSS-RA-r15", nprach_params_r15.npdcch_start_sf_css_ra_r15.to_string()); + } + if (nprach_params_r15.npdcch_offset_ra_r15_present) { + j.write_str("npdcch-Offset-RA-r15", nprach_params_r15.npdcch_offset_ra_r15.to_string()); + } + if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { + j.write_str("nprach-NumCBRA-StartSubcarriers-r15", + nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.to_string()); + } + if (nprach_params_r15.npdcch_carrier_idx_r15_present) { + j.write_int("npdcch-CarrierIndex-r15", nprach_params_r15.npdcch_carrier_idx_r15); + } + j.end_obj(); } j.end_obj(); } -SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::pack(bit_ref& bref) const + +const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_opts::to_string() const { - type_.pack(bref); - switch (type_) { - case types::use_no_bitmap_r14: - break; - case types::use_anchor_bitmap_r14: - break; - case types::explicit_bitmap_cfg_r14: - HANDLE_CODE(c.pack(bref)); - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } - return SRSASN_SUCCESS; + static const char* options[] = {"ms40", "ms80", "ms160", "ms320", "ms640", "ms1280", "ms2560", "ms5120"}; + return convert_enum_idx( + options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_e_"); } -SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::unpack(cbit_ref& bref) +uint16_t nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_opts::to_number() const { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::use_no_bitmap_r14: - break; - case types::use_anchor_bitmap_r14: - break; - case types::explicit_bitmap_cfg_r14: - HANDLE_CODE(c.unpack(bref)); - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_"); - return SRSASN_ERROR_DECODE_FAIL; - } - return SRSASN_SUCCESS; + static const uint16_t options[] = {40, 80, 160, 320, 640, 1280, 2560, 5120}; + return map_enum_number( + options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_e_"); } -const char* dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::types_opts::to_string() const +const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_opts::to_string() const { - static const char* options[] = {"useNoBitmap-r14", "useAnchorBitmap-r14", "explicitBitmapConfiguration-r14"}; - return convert_enum_idx(options, 3, value, "dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::types"); + static const char* options[] = {"ms8", "ms16", "ms32", "ms64", "ms128", "ms256", "ms512", "ms1024"}; + return convert_enum_idx( + options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_e_"); +} +uint16_t nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_opts::to_number() const +{ + static const uint16_t options[] = {8, 16, 32, 64, 128, 256, 512, 1024}; + return map_enum_number( + options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_e_"); } -void dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::set(types::options e) +const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_opts::to_string() const { - type_ = e; + static const char* options[] = { + "n0", "n36", "n72", "n108", "n6", "n54", "n102", "n42", "n78", "n90", "n12", "n24", "n48", "n84", "n60", "n18"}; + return convert_enum_idx( + options, 16, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_e_"); } -void dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::set_use_no_gap_r14() +uint8_t nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_opts::to_number() const { - set(types::use_no_gap_r14); + static const uint8_t options[] = {0, 36, 72, 108, 6, 54, 102, 42, 78, 90, 12, 24, 48, 84, 60, 18}; + return map_enum_number( + options, 16, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_e_"); } -void dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::set_use_anchor_gap_cfg_r14() + +const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_opts::to_string() const { - set(types::use_anchor_gap_cfg_r14); + static const char* options[] = {"n36", "n72", "n108", "n144"}; + return convert_enum_idx( + options, 4, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_e_"); } -dl_gap_cfg_nb_r13_s& dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::set_explicit_gap_cfg_r14() +uint8_t nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_opts::to_number() const { - set(types::explicit_gap_cfg_r14); - return c; + static const uint8_t options[] = {36, 72, 108, 144}; + return map_enum_number( + options, 4, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_e_"); } -void dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::to_json(json_writer& j) const + +const char* +nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_string() const { - j.start_obj(); - switch (type_) { - case types::use_no_gap_r14: - break; - case types::use_anchor_gap_cfg_r14: - break; - case types::explicit_gap_cfg_r14: - j.write_fieldname("explicitGapConfiguration-r14"); - c.to_json(j); - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_"); - } - j.end_obj(); + static const char* options[] = {"zero", "oneThird", "twoThird", "one"}; + return convert_enum_idx( + options, + 4, + value, + "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); } -SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::pack(bit_ref& bref) const +float nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_number() const { - type_.pack(bref); - switch (type_) { - case types::use_no_gap_r14: - break; - case types::use_anchor_gap_cfg_r14: - break; - case types::explicit_gap_cfg_r14: - HANDLE_CODE(c.pack(bref)); - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } - return SRSASN_SUCCESS; + static const float options[] = {0.0, 0.3333333333333333, 0.6666666666666666, 1.0}; + return map_enum_number( + options, + 4, + value, + "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); } -SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::unpack(cbit_ref& bref) +const char* +nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_number_string() const { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::use_no_gap_r14: - break; - case types::use_anchor_gap_cfg_r14: - break; - case types::explicit_gap_cfg_r14: - HANDLE_CODE(c.unpack(bref)); - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_"); - return SRSASN_ERROR_DECODE_FAIL; - } - return SRSASN_SUCCESS; + static const char* options[] = {"0", "1/3", "2/3", "1"}; + return convert_enum_idx( + options, + 4, + value, + "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); } -const char* dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::types_opts::to_string() const -{ - static const char* options[] = {"useNoGap-r14", "useAnchorGapConfig-r14", "explicitGapConfiguration-r14"}; - return convert_enum_idx(options, 3, value, "dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::types"); -} - -void dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::destroy_() -{ - switch (type_) { - case types::same_pci_r14: - c.destroy(); - break; - case types::different_pci_r14: - c.destroy(); - break; - default: - break; - } -} -void dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::set(types::options e) +const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_opts::to_string() const { - destroy_(); - type_ = e; - switch (type_) { - case types::same_pci_r14: - c.init(); - break; - case types::different_pci_r14: - c.init(); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); - } + static const char* options[] = {"r1", + "r2", + "r4", + "r8", + "r16", + "r32", + "r64", + "r128", + "r256", + "r512", + "r1024", + "r2048", + "spare4", + "spare3", + "spare2", + "spare1"}; + return convert_enum_idx( + options, 16, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_e_"); } -dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::same_pci_ind_r14_c_( - const dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_& other) +uint16_t nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_opts::to_number() const { - type_ = other.type(); - switch (type_) { - case types::same_pci_r14: - c.init(other.c.get()); - break; - case types::different_pci_r14: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); - } + static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; + return map_enum_number( + options, 12, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_e_"); } -dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_& -dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::operator=( - const dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_& other) -{ - if (this == &other) { - return *this; - } - set(other.type()); - switch (type_) { - case types::same_pci_r14: - c.set(other.c.get()); - break; - case types::different_pci_r14: - c.set(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); - } - return *this; -} -dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::same_pci_r14_s_& -dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::set_same_pci_r14() -{ - set(types::same_pci_r14); - return c.get(); -} -dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::different_pci_r14_s_& -dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::set_different_pci_r14() -{ - set(types::different_pci_r14); - return c.get(); -} -void dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::to_json(json_writer& j) const +const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_opts::to_string() const { - j.start_obj(); - switch (type_) { - case types::same_pci_r14: - j.write_fieldname("samePCI-r14"); - j.start_obj(); - j.write_int("indexToMidPRB-r14", c.get().idx_to_mid_prb_r14); - j.end_obj(); - break; - case types::different_pci_r14: - j.write_fieldname("differentPCI-r14"); - j.start_obj(); - j.write_str("eutra-NumCRS-Ports-r14", c.get().eutra_num_crs_ports_r14.to_string()); - j.end_obj(); - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); - } - j.end_obj(); + static const char* options[] = {"v1dot5", "v2", "v4", "v8", "v16", "v32", "v48", "v64"}; + return convert_enum_idx( + options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_e_"); } -SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::pack(bit_ref& bref) const +float nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_opts::to_number() const { - type_.pack(bref); - switch (type_) { - case types::same_pci_r14: - HANDLE_CODE(pack_integer(bref, c.get().idx_to_mid_prb_r14, (int8_t)-55, (int8_t)54)); - break; - case types::different_pci_r14: - HANDLE_CODE(c.get().eutra_num_crs_ports_r14.pack(bref)); - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } - return SRSASN_SUCCESS; + static const float options[] = {1.5, 2.0, 4.0, 8.0, 16.0, 32.0, 48.0, 64.0}; + return map_enum_number( + options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_e_"); } -SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::unpack(cbit_ref& bref) +const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_opts::to_number_string() const { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::same_pci_r14: - HANDLE_CODE(unpack_integer(c.get().idx_to_mid_prb_r14, bref, (int8_t)-55, (int8_t)54)); - break; - case types::different_pci_r14: - HANDLE_CODE(c.get().eutra_num_crs_ports_r14.unpack(bref)); - break; - default: - log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); - return SRSASN_ERROR_DECODE_FAIL; - } - return SRSASN_SUCCESS; + static const char* options[] = {"1.5", "2", "4", "8", "16", "32", "48", "64"}; + return convert_enum_idx( + options, 8, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_e_"); } -const char* dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::different_pci_r14_s_:: - eutra_num_crs_ports_r14_opts::to_string() const +const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_string() const { - static const char* options[] = {"same", "four"}; - return convert_enum_idx(options, - 2, - value, - "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::different_" - "pci_r14_s_::eutra_num_crs_ports_r14_e_"); + static const char* options[] = {"zero", "oneEighth", "oneFourth", "threeEighth"}; + return convert_enum_idx( + options, 4, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); } -uint8_t dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::different_pci_r14_s_:: - eutra_num_crs_ports_r14_opts::to_number() const +float nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_number() const { - if (value == four) { - return 4; - } - invalid_enum_number(value, - "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::different_pci_" - "r14_s_::eutra_num_crs_ports_r14_e_"); - return 0; + static const float options[] = {0.0, 0.125, 0.25, 0.375}; + return map_enum_number( + options, 4, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); } - -const char* -dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::types_opts::to_string() const +const char* nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_number_string() const { - static const char* options[] = {"samePCI-r14", "differentPCI-r14"}; + static const char* options[] = {"0", "1/8", "1/4", "3/8"}; return convert_enum_idx( - options, 2, value, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::types"); + options, 4, value, "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); } const char* -dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::eutra_ctrl_region_size_r14_opts::to_string() const +nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_opts::to_string() const { - static const char* options[] = {"n1", "n2", "n3"}; + static const char* options[] = {"n24", + "n30", + "n33", + "n36", + "n60", + "n66", + "n69", + "n72", + "n96", + "n102", + "n105", + "n108", + "n120", + "n132", + "n138", + "n144"}; return convert_enum_idx( - options, 3, value, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::eutra_ctrl_region_size_r14_e_"); -} -uint8_t dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::eutra_ctrl_region_size_r14_opts::to_number() const -{ - static const uint8_t options[] = {1, 2, 3}; - return map_enum_number( - options, 3, value, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::eutra_ctrl_region_size_r14_e_"); -} - -const char* dl_carrier_cfg_common_nb_r14_s::nrs_pwr_offset_non_anchor_r14_opts::to_string() const -{ - static const char* options[] = {"dB-12", "dB-10", "dB-8", "dB-6", "dB-4", "dB-2", "dB0", "dB3"}; - return convert_enum_idx(options, 8, value, "dl_carrier_cfg_common_nb_r14_s::nrs_pwr_offset_non_anchor_r14_e_"); + options, + 16, + value, + "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_e_"); } -int8_t dl_carrier_cfg_common_nb_r14_s::nrs_pwr_offset_non_anchor_r14_opts::to_number() const +uint8_t nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_opts::to_number() const { - static const int8_t options[] = {-12, -10, -8, -6, -4, -2, 0, 3}; - return map_enum_number(options, 8, value, "dl_carrier_cfg_common_nb_r14_s::nrs_pwr_offset_non_anchor_r14_e_"); + static const uint8_t options[] = {24, 30, 33, 36, 60, 66, 69, 72, 96, 102, 105, 108, 120, 132, 138, 144}; + return map_enum_number(options, + 16, + value, + "nprach_params_fmt2_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_e_"); } -// PCCH-Config-NB-r14 ::= SEQUENCE -SRSASN_CODE pcch_cfg_nb_r14_s::pack(bit_ref& bref) const +// NPRACH-ParametersTDD-NB-r15 ::= SEQUENCE +SRSASN_CODE nprach_params_tdd_nb_r15_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(npdcch_num_repeat_paging_r14_present, 1)); - HANDLE_CODE(bref.pack(paging_weight_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15_present, 1)); - if (npdcch_num_repeat_paging_r14_present) { - HANDLE_CODE(npdcch_num_repeat_paging_r14.pack(bref)); - } - if (paging_weight_r14_present) { - HANDLE_CODE(paging_weight_r14.pack(bref)); + if (nprach_params_r15_present) { + bref.pack(nprach_params_r15.ext, 1); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_periodicity_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_start_time_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_subcarrier_offset_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_num_subcarriers_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_num_repeats_ra_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_start_sf_css_ra_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.npdcch_offset_ra_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present, 1)); + if (nprach_params_r15.nprach_periodicity_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_periodicity_r15.pack(bref)); + } + if (nprach_params_r15.nprach_start_time_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_start_time_r15.pack(bref)); + } + if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_subcarrier_offset_r15.pack(bref)); + } + if (nprach_params_r15.nprach_num_subcarriers_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_num_subcarriers_r15.pack(bref)); + } + if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.pack(bref)); + } + if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_num_repeats_ra_r15.pack(bref)); + } + if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_start_sf_css_ra_r15.pack(bref)); + } + if (nprach_params_r15.npdcch_offset_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_offset_ra_r15.pack(bref)); + } + if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.pack(bref)); + } } return SRSASN_SUCCESS; } -SRSASN_CODE pcch_cfg_nb_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE nprach_params_tdd_nb_r15_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(npdcch_num_repeat_paging_r14_present, 1)); - HANDLE_CODE(bref.unpack(paging_weight_r14_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15_present, 1)); - if (npdcch_num_repeat_paging_r14_present) { - HANDLE_CODE(npdcch_num_repeat_paging_r14.unpack(bref)); - } - if (paging_weight_r14_present) { - HANDLE_CODE(paging_weight_r14.unpack(bref)); + if (nprach_params_r15_present) { + bref.unpack(nprach_params_r15.ext, 1); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_periodicity_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_start_time_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_subcarrier_offset_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_num_subcarriers_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_num_repeats_ra_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_start_sf_css_ra_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.npdcch_offset_ra_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present, 1)); + if (nprach_params_r15.nprach_periodicity_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_periodicity_r15.unpack(bref)); + } + if (nprach_params_r15.nprach_start_time_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_start_time_r15.unpack(bref)); + } + if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_subcarrier_offset_r15.unpack(bref)); + } + if (nprach_params_r15.nprach_num_subcarriers_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_num_subcarriers_r15.unpack(bref)); + } + if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.unpack(bref)); + } + if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_num_repeats_ra_r15.unpack(bref)); + } + if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_start_sf_css_ra_r15.unpack(bref)); + } + if (nprach_params_r15.npdcch_offset_ra_r15_present) { + HANDLE_CODE(nprach_params_r15.npdcch_offset_ra_r15.unpack(bref)); + } + if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { + HANDLE_CODE(nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.unpack(bref)); + } } return SRSASN_SUCCESS; } -void pcch_cfg_nb_r14_s::to_json(json_writer& j) const +void nprach_params_tdd_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - if (npdcch_num_repeat_paging_r14_present) { - j.write_str("npdcch-NumRepetitionPaging-r14", npdcch_num_repeat_paging_r14.to_string()); - } - if (paging_weight_r14_present) { - j.write_str("pagingWeight-r14", paging_weight_r14.to_string()); + if (nprach_params_r15_present) { + j.write_fieldname("nprach-Parameters-r15"); + j.start_obj(); + if (nprach_params_r15.nprach_periodicity_r15_present) { + j.write_str("nprach-Periodicity-r15", nprach_params_r15.nprach_periodicity_r15.to_string()); + } + if (nprach_params_r15.nprach_start_time_r15_present) { + j.write_str("nprach-StartTime-r15", nprach_params_r15.nprach_start_time_r15.to_string()); + } + if (nprach_params_r15.nprach_subcarrier_offset_r15_present) { + j.write_str("nprach-SubcarrierOffset-r15", nprach_params_r15.nprach_subcarrier_offset_r15.to_string()); + } + if (nprach_params_r15.nprach_num_subcarriers_r15_present) { + j.write_str("nprach-NumSubcarriers-r15", nprach_params_r15.nprach_num_subcarriers_r15.to_string()); + } + if (nprach_params_r15.nprach_subcarrier_msg3_range_start_r15_present) { + j.write_str("nprach-SubcarrierMSG3-RangeStart-r15", + nprach_params_r15.nprach_subcarrier_msg3_range_start_r15.to_string()); + } + if (nprach_params_r15.npdcch_num_repeats_ra_r15_present) { + j.write_str("npdcch-NumRepetitions-RA-r15", nprach_params_r15.npdcch_num_repeats_ra_r15.to_string()); + } + if (nprach_params_r15.npdcch_start_sf_css_ra_r15_present) { + j.write_str("npdcch-StartSF-CSS-RA-r15", nprach_params_r15.npdcch_start_sf_css_ra_r15.to_string()); + } + if (nprach_params_r15.npdcch_offset_ra_r15_present) { + j.write_str("npdcch-Offset-RA-r15", nprach_params_r15.npdcch_offset_ra_r15.to_string()); + } + if (nprach_params_r15.nprach_num_cbra_start_subcarriers_r15_present) { + j.write_str("nprach-NumCBRA-StartSubcarriers-r15", + nprach_params_r15.nprach_num_cbra_start_subcarriers_r15.to_string()); + } + j.end_obj(); } j.end_obj(); } -const char* pcch_cfg_nb_r14_s::npdcch_num_repeat_paging_r14_opts::to_string() const +const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_opts::to_string() const +{ + static const char* options[] = {"ms80", "ms160", "ms320", "ms640", "ms1280", "ms2560", "ms5120", "ms10240"}; + return convert_enum_idx( + options, 8, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_e_"); +} +uint16_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_opts::to_number() const +{ + static const uint16_t options[] = {80, 160, 320, 640, 1280, 2560, 5120, 10240}; + return map_enum_number( + options, 8, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_periodicity_r15_e_"); +} + +const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_opts::to_string() const +{ + static const char* options[] = {"ms10", + "ms20", + "ms40", + "ms80", + "ms160", + "ms320", + "ms640", + "ms1280", + "ms2560", + "ms5120", + "spare6", + "spare5", + "spare4", + "spare3", + "spare2", + "spare1"}; + return convert_enum_idx( + options, 16, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_e_"); +} +uint16_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_opts::to_number() const +{ + static const uint16_t options[] = {10, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120}; + return map_enum_number( + options, 10, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_start_time_r15_e_"); +} + +const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_opts::to_string() const +{ + static const char* options[] = {"n0", "n12", "n24", "n36", "n2", "n18", "n34", "spare1"}; + return convert_enum_idx( + options, 8, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_e_"); +} +uint8_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_opts::to_number() const +{ + static const uint8_t options[] = {0, 12, 24, 36, 2, 18, 34}; + return map_enum_number( + options, 7, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_offset_r15_e_"); +} + +const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_opts::to_string() const +{ + static const char* options[] = {"n12", "n24", "n36", "n48"}; + return convert_enum_idx( + options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_e_"); +} +uint8_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_opts::to_number() const +{ + static const uint8_t options[] = {12, 24, 36, 48}; + return map_enum_number( + options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_subcarriers_r15_e_"); +} + +const char* +nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_string() const +{ + static const char* options[] = {"zero", "oneThird", "twoThird", "one"}; + return convert_enum_idx( + options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); +} +float nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_number() const +{ + static const float options[] = {0.0, 0.3333333333333333, 0.6666666666666666, 1.0}; + return map_enum_number( + options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); +} +const char* +nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_opts::to_number_string() const +{ + static const char* options[] = {"0", "1/3", "2/3", "1"}; + return convert_enum_idx( + options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_subcarrier_msg3_range_start_r15_e_"); +} + +const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_opts::to_string() const { static const char* options[] = {"r1", "r2", @@ -6751,376 +7940,403 @@ const char* pcch_cfg_nb_r14_s::npdcch_num_repeat_paging_r14_opts::to_string() co "spare3", "spare2", "spare1"}; - return convert_enum_idx(options, 16, value, "pcch_cfg_nb_r14_s::npdcch_num_repeat_paging_r14_e_"); + return convert_enum_idx( + options, 16, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_e_"); } -uint16_t pcch_cfg_nb_r14_s::npdcch_num_repeat_paging_r14_opts::to_number() const +uint16_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_opts::to_number() const { static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; - return map_enum_number(options, 12, value, "pcch_cfg_nb_r14_s::npdcch_num_repeat_paging_r14_e_"); + return map_enum_number( + options, 12, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_num_repeats_ra_r15_e_"); } -// PowerRampingParameters-NB-v1450 ::= SEQUENCE -SRSASN_CODE pwr_ramp_params_nb_v1450_s::pack(bit_ref& bref) const +const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_opts::to_string() const { - HANDLE_CODE(bref.pack(preamb_init_rx_target_pwr_v1450_present, 1)); - HANDLE_CODE(bref.pack(pwr_ramp_params_ce1_r14_present, 1)); - - if (preamb_init_rx_target_pwr_v1450_present) { - HANDLE_CODE(preamb_init_rx_target_pwr_v1450.pack(bref)); - } - if (pwr_ramp_params_ce1_r14_present) { - HANDLE_CODE(pwr_ramp_params_ce1_r14.pwr_ramp_step_ce1_r14.pack(bref)); - HANDLE_CODE(pwr_ramp_params_ce1_r14.preamb_init_rx_target_pwr_ce1_r14.pack(bref)); - } - - return SRSASN_SUCCESS; + static const char* options[] = {"v4", "v8", "v16", "v32", "v48", "v64", "v96", "v128"}; + return convert_enum_idx( + options, 8, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_e_"); } -SRSASN_CODE pwr_ramp_params_nb_v1450_s::unpack(cbit_ref& bref) +uint8_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_opts::to_number() const { - HANDLE_CODE(bref.unpack(preamb_init_rx_target_pwr_v1450_present, 1)); - HANDLE_CODE(bref.unpack(pwr_ramp_params_ce1_r14_present, 1)); + static const uint8_t options[] = {4, 8, 16, 32, 48, 64, 96, 128}; + return map_enum_number( + options, 8, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_start_sf_css_ra_r15_e_"); +} - if (preamb_init_rx_target_pwr_v1450_present) { - HANDLE_CODE(preamb_init_rx_target_pwr_v1450.unpack(bref)); - } - if (pwr_ramp_params_ce1_r14_present) { - HANDLE_CODE(pwr_ramp_params_ce1_r14.pwr_ramp_step_ce1_r14.unpack(bref)); - HANDLE_CODE(pwr_ramp_params_ce1_r14.preamb_init_rx_target_pwr_ce1_r14.unpack(bref)); - } - - return SRSASN_SUCCESS; -} -void pwr_ramp_params_nb_v1450_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (preamb_init_rx_target_pwr_v1450_present) { - j.write_str("preambleInitialReceivedTargetPower-v1450", preamb_init_rx_target_pwr_v1450.to_string()); - } - if (pwr_ramp_params_ce1_r14_present) { - j.write_fieldname("powerRampingParametersCE1-r14"); - j.start_obj(); - j.write_str("powerRampingStepCE1-r14", pwr_ramp_params_ce1_r14.pwr_ramp_step_ce1_r14.to_string()); - j.write_str("preambleInitialReceivedTargetPowerCE1-r14", - pwr_ramp_params_ce1_r14.preamb_init_rx_target_pwr_ce1_r14.to_string()); - j.end_obj(); - } - j.end_obj(); -} - -const char* pwr_ramp_params_nb_v1450_s::preamb_init_rx_target_pwr_v1450_opts::to_string() const +const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_string() const { - static const char* options[] = { - "dBm-130", "dBm-128", "dBm-126", "dBm-124", "dBm-122", "dBm-88", "dBm-86", "dBm-84", "dBm-82", "dBm-80"}; - return convert_enum_idx(options, 10, value, "pwr_ramp_params_nb_v1450_s::preamb_init_rx_target_pwr_v1450_e_"); + static const char* options[] = {"zero", "oneEighth", "oneFourth", "threeEighth"}; + return convert_enum_idx( + options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); } -int16_t pwr_ramp_params_nb_v1450_s::preamb_init_rx_target_pwr_v1450_opts::to_number() const +float nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_number() const { - static const int16_t options[] = {-130, -128, -126, -124, -122, -88, -86, -84, -82, -80}; - return map_enum_number(options, 10, value, "pwr_ramp_params_nb_v1450_s::preamb_init_rx_target_pwr_v1450_e_"); + static const float options[] = {0.0, 0.125, 0.25, 0.375}; + return map_enum_number( + options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); } - -const char* pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::pwr_ramp_step_ce1_r14_opts::to_string() const +const char* nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_opts::to_number_string() const { - static const char* options[] = {"dB0", "dB2", "dB4", "dB6"}; + static const char* options[] = {"0", "1/8", "1/4", "3/8"}; return convert_enum_idx( - options, 4, value, "pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::pwr_ramp_step_ce1_r14_e_"); -} -uint8_t pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::pwr_ramp_step_ce1_r14_opts::to_number() const -{ - static const uint8_t options[] = {0, 2, 4, 6}; - return map_enum_number( - options, 4, value, "pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::pwr_ramp_step_ce1_r14_e_"); + options, 4, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::npdcch_offset_ra_r15_e_"); } const char* -pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::preamb_init_rx_target_pwr_ce1_r14_opts::to_string() const +nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_opts::to_string() const { - static const char* options[] = {"dBm-130", "dBm-128", "dBm-126", "dBm-124", "dBm-122", "dBm-120", "dBm-118", - "dBm-116", "dBm-114", "dBm-112", "dBm-110", "dBm-108", "dBm-106", "dBm-104", - "dBm-102", "dBm-100", "dBm-98", "dBm-96", "dBm-94", "dBm-92", "dBm-90", - "dBm-88", "dBm-86", "dBm-84", "dBm-82", "dBm-80"}; + static const char* options[] = { + "n8", "n10", "n11", "n12", "n20", "n22", "n23", "n24", "n32", "n34", "n35", "n36", "n40", "n44", "n46", "n48"}; return convert_enum_idx( - options, - 26, - value, - "pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::preamb_init_rx_target_pwr_ce1_r14_e_"); + options, 16, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_e_"); } -int16_t -pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::preamb_init_rx_target_pwr_ce1_r14_opts::to_number() const +uint8_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_opts::to_number() const { - static const int16_t options[] = {-130, -128, -126, -124, -122, -120, -118, -116, -114, -112, -110, -108, -106, - -104, -102, -100, -98, -96, -94, -92, -90, -88, -86, -84, -82, -80}; + static const uint8_t options[] = {8, 10, 11, 12, 20, 22, 23, 24, 32, 34, 35, 36, 40, 44, 46, 48}; return map_enum_number( - options, - 26, - value, - "pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::preamb_init_rx_target_pwr_ce1_r14_e_"); + options, 16, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_e_"); } -// TDD-Config-NB-r15 ::= SEQUENCE -SRSASN_CODE tdd_cfg_nb_r15_s::pack(bit_ref& bref) const +// NPRACH-ParametersTDD-NB-v1550 ::= SEQUENCE +SRSASN_CODE nprach_params_tdd_nb_v1550_s::pack(bit_ref& bref) const { - HANDLE_CODE(sf_assign_r15.pack(bref)); - HANDLE_CODE(special_sf_patterns_r15.pack(bref)); + HANDLE_CODE(max_num_preamb_attempt_ce_v1550.pack(bref)); + HANDLE_CODE(num_repeats_per_preamb_attempt_v1550.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE tdd_cfg_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE nprach_params_tdd_nb_v1550_s::unpack(cbit_ref& bref) { - HANDLE_CODE(sf_assign_r15.unpack(bref)); - HANDLE_CODE(special_sf_patterns_r15.unpack(bref)); + HANDLE_CODE(max_num_preamb_attempt_ce_v1550.unpack(bref)); + HANDLE_CODE(num_repeats_per_preamb_attempt_v1550.unpack(bref)); return SRSASN_SUCCESS; } -void tdd_cfg_nb_r15_s::to_json(json_writer& j) const +void nprach_params_tdd_nb_v1550_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("subframeAssignment-r15", sf_assign_r15.to_string()); - j.write_str("specialSubframePatterns-r15", special_sf_patterns_r15.to_string()); + j.write_str("maxNumPreambleAttemptCE-v1550", max_num_preamb_attempt_ce_v1550.to_string()); + j.write_str("numRepetitionsPerPreambleAttempt-v1550", num_repeats_per_preamb_attempt_v1550.to_string()); j.end_obj(); } -const char* tdd_cfg_nb_r15_s::sf_assign_r15_opts::to_string() const +const char* nprach_params_tdd_nb_v1550_s::max_num_preamb_attempt_ce_v1550_opts::to_string() const { - static const char* options[] = {"sa1", "sa2", "sa3", "sa4", "sa5"}; - return convert_enum_idx(options, 5, value, "tdd_cfg_nb_r15_s::sf_assign_r15_e_"); + static const char* options[] = {"n3", "n4", "n5", "n6", "n7", "n8", "n10", "spare1"}; + return convert_enum_idx(options, 8, value, "nprach_params_tdd_nb_v1550_s::max_num_preamb_attempt_ce_v1550_e_"); } -uint8_t tdd_cfg_nb_r15_s::sf_assign_r15_opts::to_number() const +uint8_t nprach_params_tdd_nb_v1550_s::max_num_preamb_attempt_ce_v1550_opts::to_number() const { - static const uint8_t options[] = {1, 2, 3, 4, 5}; - return map_enum_number(options, 5, value, "tdd_cfg_nb_r15_s::sf_assign_r15_e_"); + static const uint8_t options[] = {3, 4, 5, 6, 7, 8, 10}; + return map_enum_number(options, 7, value, "nprach_params_tdd_nb_v1550_s::max_num_preamb_attempt_ce_v1550_e_"); } -const char* tdd_cfg_nb_r15_s::special_sf_patterns_r15_opts::to_string() const +const char* nprach_params_tdd_nb_v1550_s::num_repeats_per_preamb_attempt_v1550_opts::to_string() const +{ + static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32", "n64", "n128", "n256", "n512", "n1024"}; + return convert_enum_idx(options, 11, value, "nprach_params_tdd_nb_v1550_s::num_repeats_per_preamb_attempt_v1550_e_"); +} +uint16_t nprach_params_tdd_nb_v1550_s::num_repeats_per_preamb_attempt_v1550_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, "nprach_params_tdd_nb_v1550_s::num_repeats_per_preamb_attempt_v1550_e_"); +} + +// PagingWeight-NB-r14 ::= ENUMERATED +const char* paging_weight_nb_r14_opts::to_string() const { static const char* options[] = { - "ssp0", "ssp1", "ssp2", "ssp3", "ssp4", "ssp5", "ssp6", "ssp7", "ssp8", "ssp9", "ssp10", "ssp10-CRS-LessDwPTS"}; - return convert_enum_idx(options, 12, value, "tdd_cfg_nb_r15_s::special_sf_patterns_r15_e_"); + "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16"}; + return convert_enum_idx(options, 16, value, "paging_weight_nb_r14_e"); +} +uint8_t paging_weight_nb_r14_opts::to_number() const +{ + static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; + return map_enum_number(options, 16, value, "paging_weight_nb_r14_e"); } -// UL-ReferenceSignalsNPUSCH-NB-r13 ::= SEQUENCE -SRSASN_CODE ul_ref_sigs_npusch_nb_r13_s::pack(bit_ref& bref) const +// RACH-Info-NB-r13 ::= SEQUENCE +SRSASN_CODE rach_info_nb_r13_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(group_hop_enabled_r13, 1)); - HANDLE_CODE(pack_integer(bref, group_assign_npusch_r13, (uint8_t)0u, (uint8_t)29u)); + HANDLE_CODE(ra_resp_win_size_r13.pack(bref)); + HANDLE_CODE(mac_contention_resolution_timer_r13.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE ul_ref_sigs_npusch_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE rach_info_nb_r13_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(group_hop_enabled_r13, 1)); - HANDLE_CODE(unpack_integer(group_assign_npusch_r13, bref, (uint8_t)0u, (uint8_t)29u)); + HANDLE_CODE(ra_resp_win_size_r13.unpack(bref)); + HANDLE_CODE(mac_contention_resolution_timer_r13.unpack(bref)); return SRSASN_SUCCESS; } -void ul_ref_sigs_npusch_nb_r13_s::to_json(json_writer& j) const +void rach_info_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - j.write_bool("groupHoppingEnabled-r13", group_hop_enabled_r13); - j.write_int("groupAssignmentNPUSCH-r13", group_assign_npusch_r13); + j.write_str("ra-ResponseWindowSize-r13", ra_resp_win_size_r13.to_string()); + j.write_str("mac-ContentionResolutionTimer-r13", mac_contention_resolution_timer_r13.to_string()); j.end_obj(); } -// WUS-ConfigPerCarrier-NB-r15 ::= SEQUENCE -SRSASN_CODE wus_cfg_per_carrier_nb_r15_s::pack(bit_ref& bref) const +const char* rach_info_nb_r13_s::ra_resp_win_size_r13_opts::to_string() const { - HANDLE_CODE(max_dur_factor_r15.pack(bref)); - - return SRSASN_SUCCESS; + static const char* options[] = {"pp2", "pp3", "pp4", "pp5", "pp6", "pp7", "pp8", "pp10"}; + return convert_enum_idx(options, 8, value, "rach_info_nb_r13_s::ra_resp_win_size_r13_e_"); } -SRSASN_CODE wus_cfg_per_carrier_nb_r15_s::unpack(cbit_ref& bref) +uint8_t rach_info_nb_r13_s::ra_resp_win_size_r13_opts::to_number() const { - HANDLE_CODE(max_dur_factor_r15.unpack(bref)); + static const uint8_t options[] = {2, 3, 4, 5, 6, 7, 8, 10}; + return map_enum_number(options, 8, value, "rach_info_nb_r13_s::ra_resp_win_size_r13_e_"); +} - return SRSASN_SUCCESS; +const char* rach_info_nb_r13_s::mac_contention_resolution_timer_r13_opts::to_string() const +{ + static const char* options[] = {"pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32", "pp64"}; + return convert_enum_idx(options, 8, value, "rach_info_nb_r13_s::mac_contention_resolution_timer_r13_e_"); } -void wus_cfg_per_carrier_nb_r15_s::to_json(json_writer& j) const +uint8_t rach_info_nb_r13_s::mac_contention_resolution_timer_r13_opts::to_number() const { - j.start_obj(); - j.write_str("maxDurationFactor-r15", max_dur_factor_r15.to_string()); - j.end_obj(); + static const uint8_t options[] = {1, 2, 3, 4, 8, 16, 32, 64}; + return map_enum_number(options, 8, value, "rach_info_nb_r13_s::mac_contention_resolution_timer_r13_e_"); } -// BCCH-Config-NB-r13 ::= SEQUENCE -SRSASN_CODE bcch_cfg_nb_r13_s::pack(bit_ref& bref) const +// RACH-Info-NB-v1530 ::= SEQUENCE +SRSASN_CODE rach_info_nb_v1530_s::pack(bit_ref& bref) const { - HANDLE_CODE(mod_period_coeff_r13.pack(bref)); + HANDLE_CODE(mac_contention_resolution_timer_r15.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE bcch_cfg_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE rach_info_nb_v1530_s::unpack(cbit_ref& bref) { - HANDLE_CODE(mod_period_coeff_r13.unpack(bref)); + HANDLE_CODE(mac_contention_resolution_timer_r15.unpack(bref)); return SRSASN_SUCCESS; } -void bcch_cfg_nb_r13_s::to_json(json_writer& j) const +void rach_info_nb_v1530_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("modificationPeriodCoeff-r13", mod_period_coeff_r13.to_string()); + j.write_str("mac-ContentionResolutionTimer-r15", mac_contention_resolution_timer_r15.to_string()); j.end_obj(); } -const char* bcch_cfg_nb_r13_s::mod_period_coeff_r13_opts::to_string() const +const char* rach_info_nb_v1530_s::mac_contention_resolution_timer_r15_opts::to_string() const { - static const char* options[] = {"n16", "n32", "n64", "n128"}; - return convert_enum_idx(options, 4, value, "bcch_cfg_nb_r13_s::mod_period_coeff_r13_e_"); + static const char* options[] = {"pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32", "pp64"}; + return convert_enum_idx(options, 8, value, "rach_info_nb_v1530_s::mac_contention_resolution_timer_r15_e_"); } -uint8_t bcch_cfg_nb_r13_s::mod_period_coeff_r13_opts::to_number() const +uint8_t rach_info_nb_v1530_s::mac_contention_resolution_timer_r15_opts::to_number() const { - static const uint8_t options[] = {16, 32, 64, 128}; - return map_enum_number(options, 4, value, "bcch_cfg_nb_r13_s::mod_period_coeff_r13_e_"); + static const uint8_t options[] = {1, 2, 3, 4, 8, 16, 32, 64}; + return map_enum_number(options, 8, value, "rach_info_nb_v1530_s::mac_contention_resolution_timer_r15_e_"); } -// DL-ConfigCommon-NB-r14 ::= SEQUENCE -SRSASN_CODE dl_cfg_common_nb_r14_s::pack(bit_ref& bref) const +// SchedulingInfo-NB-v1530 ::= SEQUENCE +SRSASN_CODE sched_info_nb_v1530_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(pcch_cfg_r14_present, 1)); + HANDLE_CODE(bref.pack(sib_map_info_v1530_present, 1)); - HANDLE_CODE(dl_carrier_cfg_r14.pack(bref)); - if (pcch_cfg_r14_present) { - HANDLE_CODE(pcch_cfg_r14.pack(bref)); + if (sib_map_info_v1530_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, sib_map_info_v1530, 1, 8)); } - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= wus_cfg_r15.is_present(); - group_flags.pack(bref); - - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(wus_cfg_r15.is_present(), 1)); - if (wus_cfg_r15.is_present()) { - HANDLE_CODE(wus_cfg_r15->pack(bref)); - } - } - } return SRSASN_SUCCESS; } -SRSASN_CODE dl_cfg_common_nb_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE sched_info_nb_v1530_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(pcch_cfg_r14_present, 1)); + HANDLE_CODE(bref.unpack(sib_map_info_v1530_present, 1)); - HANDLE_CODE(dl_carrier_cfg_r14.unpack(bref)); - if (pcch_cfg_r14_present) { - HANDLE_CODE(pcch_cfg_r14.unpack(bref)); + if (sib_map_info_v1530_present) { + HANDLE_CODE(unpack_dyn_seq_of(sib_map_info_v1530, 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 wus_cfg_r15_present; - HANDLE_CODE(bref.unpack(wus_cfg_r15_present, 1)); - wus_cfg_r15.set_present(wus_cfg_r15_present); - if (wus_cfg_r15.is_present()) { - HANDLE_CODE(wus_cfg_r15->unpack(bref)); - } - } - } return SRSASN_SUCCESS; } -void dl_cfg_common_nb_r14_s::to_json(json_writer& j) const +void sched_info_nb_v1530_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("dl-CarrierConfig-r14"); - dl_carrier_cfg_r14.to_json(j); - if (pcch_cfg_r14_present) { - j.write_fieldname("pcch-Config-r14"); - pcch_cfg_r14.to_json(j); - } - if (ext) { - if (wus_cfg_r15.is_present()) { - j.write_fieldname("wus-Config-r15"); - wus_cfg_r15->to_json(j); + if (sib_map_info_v1530_present) { + j.start_array("sib-MappingInfo-v1530"); + for (const auto& e1 : sib_map_info_v1530) { + j.write_str(e1.to_string()); } + j.end_array(); } j.end_obj(); } -// InterFreqCarrierFreqInfo-NB-r13 ::= SEQUENCE -SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::pack(bit_ref& bref) const +// SystemInformationBlockType1-NB-v1700 ::= SEQUENCE +SRSASN_CODE sib_type1_nb_v1700_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(q_qual_min_r13_present, 1)); - 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(multi_band_info_list_r13_present, 1)); + HANDLE_CODE(bref.pack(cell_access_related_info_ntn_r17_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - HANDLE_CODE(dl_carrier_freq_r13.pack(bref)); - HANDLE_CODE(pack_integer(bref, q_rx_lev_min_r13, (int8_t)-70, (int8_t)-22)); - if (q_qual_min_r13_present) { - HANDLE_CODE(pack_integer(bref, q_qual_min_r13, (int8_t)-34, (int8_t)-3)); + 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)); + } } - if (p_max_r13_present) { - HANDLE_CODE(pack_integer(bref, p_max_r13, (int8_t)-30, (int8_t)33)); + + 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)); + } } - if (q_offset_freq_r13_present) { - HANDLE_CODE(q_offset_freq_r13.pack(bref)); + + 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 (inter_freq_neigh_cell_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_neigh_cell_list_r13, 1, 16, integer_packer(0, 503))); + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); } - 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(0, 503))); + 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 +{ + static const char* options[] = {"one128th", "one64th", "one32th", "one16th", "oneEighth", "oneQuarter", "oneHalf"}; + return convert_enum_idx(options, 7, value, "wus_max_dur_factor_nb_r15_e"); +} +float wus_max_dur_factor_nb_r15_opts::to_number() const +{ + static const float options[] = {128.0, 64.0, 32.0, 16.0, 0.125, 0.25, 0.5}; + return map_enum_number(options, 7, value, "wus_max_dur_factor_nb_r15_e"); +} +const char* wus_max_dur_factor_nb_r15_opts::to_number_string() const +{ + static const char* options[] = {"128", "64", "32", "16", "1/8", "1/4", "1/2"}; + return convert_enum_idx(options, 7, value, "wus_max_dur_factor_nb_r15_e"); +} + +// DL-CarrierConfigCommon-NB-r14 ::= SEQUENCE +SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(inband_carrier_info_r14_present, 1)); + HANDLE_CODE(bref.pack(nrs_pwr_offset_non_anchor_r14_present, 1)); + + HANDLE_CODE(dl_carrier_freq_r14.pack(bref)); + HANDLE_CODE(dl_bitmap_non_anchor_r14.pack(bref)); + HANDLE_CODE(dl_gap_non_anchor_r14.pack(bref)); + if (inband_carrier_info_r14_present) { + HANDLE_CODE(bref.pack(inband_carrier_info_r14.same_pci_ind_r14_present, 1)); + if (inband_carrier_info_r14.same_pci_ind_r14_present) { + HANDLE_CODE(inband_carrier_info_r14.same_pci_ind_r14.pack(bref)); + } + HANDLE_CODE(inband_carrier_info_r14.eutra_ctrl_region_size_r14.pack(bref)); } - if (multi_band_info_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_r13, 1, 8)); + if (nrs_pwr_offset_non_anchor_r14_present) { + HANDLE_CODE(nrs_pwr_offset_non_anchor_r14.pack(bref)); } if (ext) { ext_groups_packer_guard group_flags; - group_flags[0] |= delta_rx_lev_min_v1350_present; - group_flags[1] |= pwr_class14dbm_offset_r14_present; - group_flags[1] |= ce_authorisation_offset_r14_present; - group_flags[2] |= nsss_rrm_cfg_r15.is_present(); - group_flags[2] |= inter_freq_neigh_cell_list_v1530.is_present(); - group_flags[3] |= dl_carrier_freq_v1550.is_present(); + group_flags[0] |= dl_gap_non_anchor_v1530.is_present(); + group_flags[1] |= dl_carrier_freq_v1550.is_present(); group_flags.pack(bref); if (group_flags[0]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(delta_rx_lev_min_v1350_present, 1)); - if (delta_rx_lev_min_v1350_present) { - HANDLE_CODE(pack_integer(bref, delta_rx_lev_min_v1350, (int8_t)-8, (int8_t)-1)); + HANDLE_CODE(bref.pack(dl_gap_non_anchor_v1530.is_present(), 1)); + if (dl_gap_non_anchor_v1530.is_present()) { + HANDLE_CODE(dl_gap_non_anchor_v1530->pack(bref)); } } if (group_flags[1]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(pwr_class14dbm_offset_r14_present, 1)); - HANDLE_CODE(bref.pack(ce_authorisation_offset_r14_present, 1)); - if (pwr_class14dbm_offset_r14_present) { - HANDLE_CODE(pwr_class14dbm_offset_r14.pack(bref)); - } - if (ce_authorisation_offset_r14_present) { - HANDLE_CODE(ce_authorisation_offset_r14.pack(bref)); - } - } - if (group_flags[2]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(nsss_rrm_cfg_r15.is_present(), 1)); - HANDLE_CODE(bref.pack(inter_freq_neigh_cell_list_v1530.is_present(), 1)); - if (nsss_rrm_cfg_r15.is_present()) { - HANDLE_CODE(nsss_rrm_cfg_r15->pack(bref)); - } - if (inter_freq_neigh_cell_list_v1530.is_present()) { - HANDLE_CODE(pack_dyn_seq_of(bref, *inter_freq_neigh_cell_list_v1530, 1, 16)); - } - } - if (group_flags[3]) { - varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(dl_carrier_freq_v1550.is_present(), 1)); if (dl_carrier_freq_v1550.is_present()) { HANDLE_CODE(dl_carrier_freq_v1550->pack(bref)); @@ -7129,80 +8345,43 @@ SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::pack(bit_ref& bref) const } return SRSASN_SUCCESS; } -SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::unpack(cbit_ref& bref) { bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(q_qual_min_r13_present, 1)); - 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(multi_band_info_list_r13_present, 1)); + HANDLE_CODE(bref.unpack(inband_carrier_info_r14_present, 1)); + HANDLE_CODE(bref.unpack(nrs_pwr_offset_non_anchor_r14_present, 1)); - HANDLE_CODE(dl_carrier_freq_r13.unpack(bref)); - HANDLE_CODE(unpack_integer(q_rx_lev_min_r13, bref, (int8_t)-70, (int8_t)-22)); - if (q_qual_min_r13_present) { - HANDLE_CODE(unpack_integer(q_qual_min_r13, bref, (int8_t)-34, (int8_t)-3)); - } - if (p_max_r13_present) { - HANDLE_CODE(unpack_integer(p_max_r13, bref, (int8_t)-30, (int8_t)33)); - } - if (q_offset_freq_r13_present) { - HANDLE_CODE(q_offset_freq_r13.unpack(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(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(0, 503))); + HANDLE_CODE(dl_carrier_freq_r14.unpack(bref)); + HANDLE_CODE(dl_bitmap_non_anchor_r14.unpack(bref)); + HANDLE_CODE(dl_gap_non_anchor_r14.unpack(bref)); + if (inband_carrier_info_r14_present) { + HANDLE_CODE(bref.unpack(inband_carrier_info_r14.same_pci_ind_r14_present, 1)); + if (inband_carrier_info_r14.same_pci_ind_r14_present) { + HANDLE_CODE(inband_carrier_info_r14.same_pci_ind_r14.unpack(bref)); + } + HANDLE_CODE(inband_carrier_info_r14.eutra_ctrl_region_size_r14.unpack(bref)); } - if (multi_band_info_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_r13, bref, 1, 8)); + if (nrs_pwr_offset_non_anchor_r14_present) { + HANDLE_CODE(nrs_pwr_offset_non_anchor_r14.unpack(bref)); } if (ext) { - ext_groups_unpacker_guard group_flags(4); + ext_groups_unpacker_guard group_flags(2); group_flags.unpack(bref); if (group_flags[0]) { varlength_field_unpack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.unpack(delta_rx_lev_min_v1350_present, 1)); - if (delta_rx_lev_min_v1350_present) { - HANDLE_CODE(unpack_integer(delta_rx_lev_min_v1350, bref, (int8_t)-8, (int8_t)-1)); + bool dl_gap_non_anchor_v1530_present; + HANDLE_CODE(bref.unpack(dl_gap_non_anchor_v1530_present, 1)); + dl_gap_non_anchor_v1530.set_present(dl_gap_non_anchor_v1530_present); + if (dl_gap_non_anchor_v1530.is_present()) { + HANDLE_CODE(dl_gap_non_anchor_v1530->unpack(bref)); } } if (group_flags[1]) { varlength_field_unpack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.unpack(pwr_class14dbm_offset_r14_present, 1)); - HANDLE_CODE(bref.unpack(ce_authorisation_offset_r14_present, 1)); - if (pwr_class14dbm_offset_r14_present) { - HANDLE_CODE(pwr_class14dbm_offset_r14.unpack(bref)); - } - if (ce_authorisation_offset_r14_present) { - HANDLE_CODE(ce_authorisation_offset_r14.unpack(bref)); - } - } - if (group_flags[2]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - bool nsss_rrm_cfg_r15_present; - HANDLE_CODE(bref.unpack(nsss_rrm_cfg_r15_present, 1)); - nsss_rrm_cfg_r15.set_present(nsss_rrm_cfg_r15_present); - bool inter_freq_neigh_cell_list_v1530_present; - HANDLE_CODE(bref.unpack(inter_freq_neigh_cell_list_v1530_present, 1)); - inter_freq_neigh_cell_list_v1530.set_present(inter_freq_neigh_cell_list_v1530_present); - if (nsss_rrm_cfg_r15.is_present()) { - HANDLE_CODE(nsss_rrm_cfg_r15->unpack(bref)); - } - if (inter_freq_neigh_cell_list_v1530.is_present()) { - HANDLE_CODE(unpack_dyn_seq_of(*inter_freq_neigh_cell_list_v1530, bref, 1, 16)); - } - } - if (group_flags[3]) { - varlength_field_unpack_guard varlen_scope(bref, false); - bool dl_carrier_freq_v1550_present; HANDLE_CODE(bref.unpack(dl_carrier_freq_v1550_present, 1)); dl_carrier_freq_v1550.set_present(dl_carrier_freq_v1550_present); @@ -7213,62 +8392,32 @@ SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::unpack(cbit_ref& bref) } return SRSASN_SUCCESS; } -void inter_freq_carrier_freq_info_nb_r13_s::to_json(json_writer& j) const +void dl_carrier_cfg_common_nb_r14_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("dl-CarrierFreq-r13"); - dl_carrier_freq_r13.to_json(j); - j.write_int("q-RxLevMin-r13", q_rx_lev_min_r13); - if (q_qual_min_r13_present) { - j.write_int("q-QualMin-r13", q_qual_min_r13); - } - if (p_max_r13_present) { - j.write_int("p-Max-r13", p_max_r13); - } - if (q_offset_freq_r13_present) { - j.write_str("q-OffsetFreq-r13", q_offset_freq_r13.to_string()); - } - if (inter_freq_neigh_cell_list_r13_present) { - j.start_array("interFreqNeighCellList-r13"); - for (const auto& e1 : inter_freq_neigh_cell_list_r13) { - j.write_int(e1); - } - 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) { - j.write_int(e1); + j.write_fieldname("dl-CarrierFreq-r14"); + dl_carrier_freq_r14.to_json(j); + j.write_fieldname("downlinkBitmapNonAnchor-r14"); + dl_bitmap_non_anchor_r14.to_json(j); + j.write_fieldname("dl-GapNonAnchor-r14"); + dl_gap_non_anchor_r14.to_json(j); + if (inband_carrier_info_r14_present) { + j.write_fieldname("inbandCarrierInfo-r14"); + j.start_obj(); + if (inband_carrier_info_r14.same_pci_ind_r14_present) { + j.write_fieldname("samePCI-Indicator-r14"); + inband_carrier_info_r14.same_pci_ind_r14.to_json(j); } - j.end_array(); + j.write_str("eutraControlRegionSize-r14", inband_carrier_info_r14.eutra_ctrl_region_size_r14.to_string()); + j.end_obj(); } - if (multi_band_info_list_r13_present) { - j.start_array("multiBandInfoList-r13"); - for (const auto& e1 : multi_band_info_list_r13) { - e1.to_json(j); - } - j.end_array(); + if (nrs_pwr_offset_non_anchor_r14_present) { + j.write_str("nrs-PowerOffsetNonAnchor-r14", nrs_pwr_offset_non_anchor_r14.to_string()); } if (ext) { - if (delta_rx_lev_min_v1350_present) { - j.write_int("delta-RxLevMin-v1350", delta_rx_lev_min_v1350); - } - if (pwr_class14dbm_offset_r14_present) { - j.write_str("powerClass14dBm-Offset-r14", pwr_class14dbm_offset_r14.to_string()); - } - if (ce_authorisation_offset_r14_present) { - j.write_str("ce-AuthorisationOffset-r14", ce_authorisation_offset_r14.to_string()); - } - if (nsss_rrm_cfg_r15.is_present()) { - j.write_fieldname("nsss-RRM-Config-r15"); - nsss_rrm_cfg_r15->to_json(j); - } - if (inter_freq_neigh_cell_list_v1530.is_present()) { - j.start_array("interFreqNeighCellList-v1530"); - for (const auto& e1 : *inter_freq_neigh_cell_list_v1530) { - e1.to_json(j); - } - j.end_array(); + if (dl_gap_non_anchor_v1530.is_present()) { + j.write_fieldname("dl-GapNonAnchor-v1530"); + dl_gap_non_anchor_v1530->to_json(j); } if (dl_carrier_freq_v1550.is_present()) { j.write_fieldname("dl-CarrierFreq-v1550"); @@ -7278,1584 +8427,1420 @@ void inter_freq_carrier_freq_info_nb_r13_s::to_json(json_writer& j) const j.end_obj(); } -const char* inter_freq_carrier_freq_info_nb_r13_s::pwr_class14dbm_offset_r14_opts::to_string() const +void dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::set(types::options e) { - static const char* options[] = {"dB-6", "dB-3", "dB3", "dB6", "dB9", "dB12"}; - return convert_enum_idx(options, 6, value, "inter_freq_carrier_freq_info_nb_r13_s::pwr_class14dbm_offset_r14_e_"); + type_ = e; } -int8_t inter_freq_carrier_freq_info_nb_r13_s::pwr_class14dbm_offset_r14_opts::to_number() const +void dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::set_use_no_bitmap_r14() { - static const int8_t options[] = {-6, -3, 3, 6, 9, 12}; - return map_enum_number(options, 6, value, "inter_freq_carrier_freq_info_nb_r13_s::pwr_class14dbm_offset_r14_e_"); + set(types::use_no_bitmap_r14); } - -const char* inter_freq_carrier_freq_info_nb_r13_s::ce_authorisation_offset_r14_opts::to_string() const +void dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::set_use_anchor_bitmap_r14() { - static const char* options[] = {"dB5", "dB10", "dB15", "dB20", "dB25", "dB30", "dB35"}; - return convert_enum_idx(options, 7, value, "inter_freq_carrier_freq_info_nb_r13_s::ce_authorisation_offset_r14_e_"); + set(types::use_anchor_bitmap_r14); } -uint8_t inter_freq_carrier_freq_info_nb_r13_s::ce_authorisation_offset_r14_opts::to_number() const +dl_bitmap_nb_r13_c& dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::set_explicit_bitmap_cfg_r14() { - static const uint8_t options[] = {5, 10, 15, 20, 25, 30, 35}; - return map_enum_number(options, 7, value, "inter_freq_carrier_freq_info_nb_r13_s::ce_authorisation_offset_r14_e_"); + set(types::explicit_bitmap_cfg_r14); + return c; } - -// IntraFreqNeighCellInfo-NB-v1530 ::= SEQUENCE -SRSASN_CODE intra_freq_neigh_cell_info_nb_v1530_s::pack(bit_ref& bref) const +void dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::to_json(json_writer& j) const { - HANDLE_CODE(bref.pack(nsss_rrm_cfg_r15_present, 1)); - - if (nsss_rrm_cfg_r15_present) { - HANDLE_CODE(nsss_rrm_cfg_r15.pack(bref)); + j.start_obj(); + switch (type_) { + case types::use_no_bitmap_r14: + break; + case types::use_anchor_bitmap_r14: + break; + case types::explicit_bitmap_cfg_r14: + j.write_fieldname("explicitBitmapConfiguration-r14"); + c.to_json(j); + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_"); } - - return SRSASN_SUCCESS; + j.end_obj(); } -SRSASN_CODE intra_freq_neigh_cell_info_nb_v1530_s::unpack(cbit_ref& bref) +SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::pack(bit_ref& bref) const { - HANDLE_CODE(bref.unpack(nsss_rrm_cfg_r15_present, 1)); - - if (nsss_rrm_cfg_r15_present) { - HANDLE_CODE(nsss_rrm_cfg_r15.unpack(bref)); + type_.pack(bref); + switch (type_) { + case types::use_no_bitmap_r14: + break; + case types::use_anchor_bitmap_r14: + break; + case types::explicit_bitmap_cfg_r14: + HANDLE_CODE(c.pack(bref)); + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_"); + return SRSASN_ERROR_ENCODE_FAIL; } - return SRSASN_SUCCESS; } -void intra_freq_neigh_cell_info_nb_v1530_s::to_json(json_writer& j) const +SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::unpack(cbit_ref& bref) { - j.start_obj(); - if (nsss_rrm_cfg_r15_present) { - j.write_fieldname("nsss-RRM-Config-r15"); - nsss_rrm_cfg_r15.to_json(j); + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::use_no_bitmap_r14: + break; + case types::use_anchor_bitmap_r14: + break; + case types::explicit_bitmap_cfg_r14: + HANDLE_CODE(c.unpack(bref)); + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_"); + return SRSASN_ERROR_DECODE_FAIL; } - j.end_obj(); + return SRSASN_SUCCESS; } -// MBMS-SAI-InterFreq-NB-r14 ::= SEQUENCE -SRSASN_CODE mbms_sai_inter_freq_nb_r14_s::pack(bit_ref& bref) const +const char* dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::types_opts::to_string() const { - HANDLE_CODE(bref.pack(multi_band_info_list_r14_present, 1)); - - HANDLE_CODE(dl_carrier_freq_r14.pack(bref)); - HANDLE_CODE(pack_dyn_seq_of(bref, mbms_sai_list_r14, 1, 64, integer_packer(0, 65535))); - if (multi_band_info_list_r14_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_r14, 1, 8, integer_packer(1, 256))); - } - - return SRSASN_SUCCESS; + static const char* options[] = {"useNoBitmap-r14", "useAnchorBitmap-r14", "explicitBitmapConfiguration-r14"}; + return convert_enum_idx(options, 3, value, "dl_carrier_cfg_common_nb_r14_s::dl_bitmap_non_anchor_r14_c_::types"); } -SRSASN_CODE mbms_sai_inter_freq_nb_r14_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(multi_band_info_list_r14_present, 1)); - - HANDLE_CODE(dl_carrier_freq_r14.unpack(bref)); - HANDLE_CODE(unpack_dyn_seq_of(mbms_sai_list_r14, bref, 1, 64, integer_packer(0, 65535))); - if (multi_band_info_list_r14_present) { - HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_r14, bref, 1, 8, integer_packer(1, 256))); - } - return SRSASN_SUCCESS; +void dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::set(types::options e) +{ + type_ = e; } -void mbms_sai_inter_freq_nb_r14_s::to_json(json_writer& j) const +void dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::set_use_no_gap_r14() { - j.start_obj(); - j.write_fieldname("dl-CarrierFreq-r14"); - dl_carrier_freq_r14.to_json(j); - j.start_array("mbms-SAI-List-r14"); - for (const auto& e1 : mbms_sai_list_r14) { - j.write_int(e1); - } - j.end_array(); - if (multi_band_info_list_r14_present) { - j.start_array("multiBandInfoList-r14"); - for (const auto& e1 : multi_band_info_list_r14) { - j.write_int(e1); - } - j.end_array(); - } - j.end_obj(); + set(types::use_no_gap_r14); } - -// NPDSCH-ConfigCommon-NB-r13 ::= SEQUENCE -SRSASN_CODE npdsch_cfg_common_nb_r13_s::pack(bit_ref& bref) const +void dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::set_use_anchor_gap_cfg_r14() { - HANDLE_CODE(pack_integer(bref, nrs_pwr_r13, (int8_t)-60, (int8_t)50)); - - return SRSASN_SUCCESS; + set(types::use_anchor_gap_cfg_r14); } -SRSASN_CODE npdsch_cfg_common_nb_r13_s::unpack(cbit_ref& bref) +dl_gap_cfg_nb_r13_s& dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::set_explicit_gap_cfg_r14() { - HANDLE_CODE(unpack_integer(nrs_pwr_r13, bref, (int8_t)-60, (int8_t)50)); - - return SRSASN_SUCCESS; + set(types::explicit_gap_cfg_r14); + return c; } -void npdsch_cfg_common_nb_r13_s::to_json(json_writer& j) const +void dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::to_json(json_writer& j) const { j.start_obj(); - j.write_int("nrs-Power-r13", nrs_pwr_r13); + switch (type_) { + case types::use_no_gap_r14: + break; + case types::use_anchor_gap_cfg_r14: + break; + case types::explicit_gap_cfg_r14: + j.write_fieldname("explicitGapConfiguration-r14"); + c.to_json(j); + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_"); + } j.end_obj(); } - -// NPRACH-ConfigSIB-NB-r13 ::= SEQUENCE -SRSASN_CODE nprach_cfg_sib_nb_r13_s::pack(bit_ref& bref) const +SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(rsrp_thress_prach_info_list_r13_present, 1)); - - HANDLE_CODE(nprach_cp_len_r13.pack(bref)); - if (rsrp_thress_prach_info_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, rsrp_thress_prach_info_list_r13, 1, 2, integer_packer(0, 97))); + type_.pack(bref); + switch (type_) { + case types::use_no_gap_r14: + break; + case types::use_anchor_gap_cfg_r14: + break; + case types::explicit_gap_cfg_r14: + HANDLE_CODE(c.pack(bref)); + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_"); + return SRSASN_ERROR_ENCODE_FAIL; } - HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_r13, 1, 3)); - return SRSASN_SUCCESS; } -SRSASN_CODE nprach_cfg_sib_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(rsrp_thress_prach_info_list_r13_present, 1)); + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::use_no_gap_r14: + break; + case types::use_anchor_gap_cfg_r14: + break; + case types::explicit_gap_cfg_r14: + HANDLE_CODE(c.unpack(bref)); + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} - HANDLE_CODE(nprach_cp_len_r13.unpack(bref)); - if (rsrp_thress_prach_info_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(rsrp_thress_prach_info_list_r13, bref, 1, 2, integer_packer(0, 97))); - } - HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_r13, bref, 1, 3)); +const char* dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::types_opts::to_string() const +{ + static const char* options[] = {"useNoGap-r14", "useAnchorGapConfig-r14", "explicitGapConfiguration-r14"}; + return convert_enum_idx(options, 3, value, "dl_carrier_cfg_common_nb_r14_s::dl_gap_non_anchor_r14_c_::types"); +} - return SRSASN_SUCCESS; +void dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::destroy_() +{ + switch (type_) { + case types::same_pci_r14: + c.destroy(); + break; + case types::different_pci_r14: + c.destroy(); + break; + default: + break; + } } -void nprach_cfg_sib_nb_r13_s::to_json(json_writer& j) const +void dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::set(types::options e) { - j.start_obj(); - j.write_str("nprach-CP-Length-r13", nprach_cp_len_r13.to_string()); - if (rsrp_thress_prach_info_list_r13_present) { - j.start_array("rsrp-ThresholdsPrachInfoList-r13"); - for (const auto& e1 : rsrp_thress_prach_info_list_r13) { - j.write_int(e1); - } - j.end_array(); + destroy_(); + type_ = e; + switch (type_) { + case types::same_pci_r14: + c.init(); + break; + case types::different_pci_r14: + c.init(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); } - j.start_array("nprach-ParametersList-r13"); - for (const auto& e1 : nprach_params_list_r13) { - e1.to_json(j); +} +dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::same_pci_ind_r14_c_( + const dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::same_pci_r14: + c.init(other.c.get()); + break; + case types::different_pci_r14: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); } - j.end_array(); - j.end_obj(); } +dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_& +dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::operator=( + const dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_& other) +{ + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::same_pci_r14: + c.set(other.c.get()); + break; + case types::different_pci_r14: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); + } -const char* nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_opts::to_string() const + return *this; +} +dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::same_pci_r14_s_& +dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::set_same_pci_r14() { - static const char* options[] = {"us66dot7", "us266dot7"}; - return convert_enum_idx(options, 2, value, "nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_e_"); + set(types::same_pci_r14); + return c.get(); } -float nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_opts::to_number() const +dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::different_pci_r14_s_& +dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::set_different_pci_r14() { - static const float options[] = {66.7, 266.7}; - return map_enum_number(options, 2, value, "nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_e_"); + set(types::different_pci_r14); + return c.get(); } -const char* nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_opts::to_number_string() const +void dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::to_json(json_writer& j) const { - static const char* options[] = {"66.7", "266.7"}; - return convert_enum_idx(options, 2, value, "nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_e_"); + j.start_obj(); + switch (type_) { + case types::same_pci_r14: + j.write_fieldname("samePCI-r14"); + j.start_obj(); + j.write_int("indexToMidPRB-r14", c.get().idx_to_mid_prb_r14); + j.end_obj(); + break; + case types::different_pci_r14: + j.write_fieldname("differentPCI-r14"); + j.start_obj(); + j.write_str("eutra-NumCRS-Ports-r14", c.get().eutra_num_crs_ports_r14.to_string()); + j.end_obj(); + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); + } + j.end_obj(); } - -// NPRACH-ConfigSIB-NB-v1330 ::= SEQUENCE -SRSASN_CODE nprach_cfg_sib_nb_v1330_s::pack(bit_ref& bref) const +SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::pack(bit_ref& bref) const { - HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_v1330, 1, 3)); - + type_.pack(bref); + switch (type_) { + case types::same_pci_r14: + HANDLE_CODE(pack_integer(bref, c.get().idx_to_mid_prb_r14, (int8_t)-55, (int8_t)54)); + break; + case types::different_pci_r14: + HANDLE_CODE(c.get().eutra_num_crs_ports_r14.pack(bref)); + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } return SRSASN_SUCCESS; } -SRSASN_CODE nprach_cfg_sib_nb_v1330_s::unpack(cbit_ref& bref) +SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_v1330, bref, 1, 3)); - + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::same_pci_r14: + HANDLE_CODE(unpack_integer(c.get().idx_to_mid_prb_r14, bref, (int8_t)-55, (int8_t)54)); + break; + case types::different_pci_r14: + HANDLE_CODE(c.get().eutra_num_crs_ports_r14.unpack(bref)); + break; + default: + log_invalid_choice_id(type_, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } return SRSASN_SUCCESS; } -void nprach_cfg_sib_nb_v1330_s::to_json(json_writer& j) const + +const char* dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::different_pci_r14_s_:: + eutra_num_crs_ports_r14_opts::to_string() const { - j.start_obj(); - j.start_array("nprach-ParametersList-v1330"); - for (const auto& e1 : nprach_params_list_v1330) { - e1.to_json(j); + static const char* options[] = {"same", "four"}; + return convert_enum_idx(options, + 2, + value, + "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::different_" + "pci_r14_s_::eutra_num_crs_ports_r14_e_"); +} +uint8_t dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::different_pci_r14_s_:: + eutra_num_crs_ports_r14_opts::to_number() const +{ + if (value == four) { + return 4; } - j.end_array(); - j.end_obj(); + invalid_enum_number(value, + "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::different_pci_" + "r14_s_::eutra_num_crs_ports_r14_e_"); + return 0; } -// NPRACH-ConfigSIB-NB-v1450 ::= SEQUENCE -SRSASN_CODE nprach_cfg_sib_nb_v1450_s::pack(bit_ref& bref) const +const char* +dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::types_opts::to_string() const { - HANDLE_CODE(max_num_preamb_attempt_ce_r14.pack(bref)); - - return SRSASN_SUCCESS; + static const char* options[] = {"samePCI-r14", "differentPCI-r14"}; + return convert_enum_idx( + options, 2, value, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::same_pci_ind_r14_c_::types"); } -SRSASN_CODE nprach_cfg_sib_nb_v1450_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(max_num_preamb_attempt_ce_r14.unpack(bref)); - return SRSASN_SUCCESS; +const char* +dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::eutra_ctrl_region_size_r14_opts::to_string() const +{ + static const char* options[] = {"n1", "n2", "n3"}; + return convert_enum_idx( + options, 3, value, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::eutra_ctrl_region_size_r14_e_"); } -void nprach_cfg_sib_nb_v1450_s::to_json(json_writer& j) const +uint8_t dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::eutra_ctrl_region_size_r14_opts::to_number() const { - j.start_obj(); - j.write_str("maxNumPreambleAttemptCE-r14", max_num_preamb_attempt_ce_r14.to_string()); - j.end_obj(); + static const uint8_t options[] = {1, 2, 3}; + return map_enum_number( + options, 3, value, "dl_carrier_cfg_common_nb_r14_s::inband_carrier_info_r14_s_::eutra_ctrl_region_size_r14_e_"); } -const char* nprach_cfg_sib_nb_v1450_s::max_num_preamb_attempt_ce_r14_opts::to_string() const +const char* dl_carrier_cfg_common_nb_r14_s::nrs_pwr_offset_non_anchor_r14_opts::to_string() const { - static const char* options[] = {"n3", "n4", "n5", "n6", "n7", "n8", "n10", "spare1"}; - return convert_enum_idx(options, 8, value, "nprach_cfg_sib_nb_v1450_s::max_num_preamb_attempt_ce_r14_e_"); + static const char* options[] = {"dB-12", "dB-10", "dB-8", "dB-6", "dB-4", "dB-2", "dB0", "dB3"}; + return convert_enum_idx(options, 8, value, "dl_carrier_cfg_common_nb_r14_s::nrs_pwr_offset_non_anchor_r14_e_"); } -uint8_t nprach_cfg_sib_nb_v1450_s::max_num_preamb_attempt_ce_r14_opts::to_number() const +int8_t dl_carrier_cfg_common_nb_r14_s::nrs_pwr_offset_non_anchor_r14_opts::to_number() const { - static const uint8_t options[] = {3, 4, 5, 6, 7, 8, 10}; - return map_enum_number(options, 7, value, "nprach_cfg_sib_nb_v1450_s::max_num_preamb_attempt_ce_r14_e_"); + static const int8_t options[] = {-12, -10, -8, -6, -4, -2, 0, 3}; + return map_enum_number(options, 8, value, "dl_carrier_cfg_common_nb_r14_s::nrs_pwr_offset_non_anchor_r14_e_"); } -// NPRACH-ConfigSIB-NB-v1530 ::= SEQUENCE -SRSASN_CODE nprach_cfg_sib_nb_v1530_s::pack(bit_ref& bref) const +// GWUS-ResourceConfig-NB-r16 ::= SEQUENCE +SRSASN_CODE gwus_res_cfg_nb_r16_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(tdd_params_r15_present, 1)); - HANDLE_CODE(bref.pack(fmt2_params_r15_present, 1)); - HANDLE_CODE(bref.pack(edt_params_r15_present, 1)); + HANDLE_CODE(bref.pack(num_groups_list_r16_present, 1)); + HANDLE_CODE(bref.pack(groups_for_service_list_r16_present, 1)); - if (tdd_params_r15_present) { - HANDLE_CODE(tdd_params_r15.nprach_preamb_format_r15.pack(bref)); - HANDLE_CODE(tdd_params_r15.dummy.pack(bref)); - HANDLE_CODE(pack_dyn_seq_of(bref, tdd_params_r15.nprach_params_list_tdd_r15, 1, 3)); - } - if (fmt2_params_r15_present) { - HANDLE_CODE(bref.pack(fmt2_params_r15.nprach_params_list_fmt2_r15_present, 1)); - HANDLE_CODE(bref.pack(fmt2_params_r15.nprach_params_list_fmt2_edt_r15_present, 1)); - if (fmt2_params_r15.nprach_params_list_fmt2_r15_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, fmt2_params_r15.nprach_params_list_fmt2_r15, 1, 3)); - } - if (fmt2_params_r15.nprach_params_list_fmt2_edt_r15_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, fmt2_params_r15.nprach_params_list_fmt2_edt_r15, 1, 3)); - } + 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 (edt_params_r15_present) { - HANDLE_CODE(bref.pack(edt_params_r15.edt_small_tbs_subset_r15_present, 1)); - HANDLE_CODE(bref.pack(edt_params_r15.nprach_params_list_edt_r15_present, 1)); - HANDLE_CODE(pack_dyn_seq_of(bref, edt_params_r15.edt_tbs_info_list_r15, 1, 3)); - if (edt_params_r15.nprach_params_list_edt_r15_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, edt_params_r15.nprach_params_list_edt_r15, 1, 3)); - } + if (groups_for_service_list_r16_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, groups_for_service_list_r16, 1, 3, integer_packer(1, 15))); } return SRSASN_SUCCESS; } -SRSASN_CODE nprach_cfg_sib_nb_v1530_s::unpack(cbit_ref& bref) +SRSASN_CODE gwus_res_cfg_nb_r16_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(tdd_params_r15_present, 1)); - HANDLE_CODE(bref.unpack(fmt2_params_r15_present, 1)); - HANDLE_CODE(bref.unpack(edt_params_r15_present, 1)); + HANDLE_CODE(bref.unpack(num_groups_list_r16_present, 1)); + HANDLE_CODE(bref.unpack(groups_for_service_list_r16_present, 1)); - if (tdd_params_r15_present) { - HANDLE_CODE(tdd_params_r15.nprach_preamb_format_r15.unpack(bref)); - HANDLE_CODE(tdd_params_r15.dummy.unpack(bref)); - HANDLE_CODE(unpack_dyn_seq_of(tdd_params_r15.nprach_params_list_tdd_r15, bref, 1, 3)); - } - if (fmt2_params_r15_present) { - HANDLE_CODE(bref.unpack(fmt2_params_r15.nprach_params_list_fmt2_r15_present, 1)); - HANDLE_CODE(bref.unpack(fmt2_params_r15.nprach_params_list_fmt2_edt_r15_present, 1)); - if (fmt2_params_r15.nprach_params_list_fmt2_r15_present) { - HANDLE_CODE(unpack_dyn_seq_of(fmt2_params_r15.nprach_params_list_fmt2_r15, bref, 1, 3)); - } - if (fmt2_params_r15.nprach_params_list_fmt2_edt_r15_present) { - HANDLE_CODE(unpack_dyn_seq_of(fmt2_params_r15.nprach_params_list_fmt2_edt_r15, bref, 1, 3)); - } + 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 (edt_params_r15_present) { - HANDLE_CODE(bref.unpack(edt_params_r15.edt_small_tbs_subset_r15_present, 1)); - HANDLE_CODE(bref.unpack(edt_params_r15.nprach_params_list_edt_r15_present, 1)); - HANDLE_CODE(unpack_dyn_seq_of(edt_params_r15.edt_tbs_info_list_r15, bref, 1, 3)); - if (edt_params_r15.nprach_params_list_edt_r15_present) { - HANDLE_CODE(unpack_dyn_seq_of(edt_params_r15.nprach_params_list_edt_r15, bref, 1, 3)); - } + if (groups_for_service_list_r16_present) { + HANDLE_CODE(unpack_dyn_seq_of(groups_for_service_list_r16, bref, 1, 3, integer_packer(1, 15))); } return SRSASN_SUCCESS; } -void nprach_cfg_sib_nb_v1530_s::to_json(json_writer& j) const +void gwus_res_cfg_nb_r16_s::to_json(json_writer& j) const { j.start_obj(); - if (tdd_params_r15_present) { - j.write_fieldname("tdd-Parameters-r15"); - j.start_obj(); - j.write_str("nprach-PreambleFormat-r15", tdd_params_r15.nprach_preamb_format_r15.to_string()); - j.write_str("dummy", tdd_params_r15.dummy.to_string()); - j.start_array("nprach-ParametersListTDD-r15"); - for (const auto& e1 : tdd_params_r15.nprach_params_list_tdd_r15) { - e1.to_json(j); + 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(); - j.end_obj(); - } - if (fmt2_params_r15_present) { - j.write_fieldname("fmt2-Parameters-r15"); - j.start_obj(); - if (fmt2_params_r15.nprach_params_list_fmt2_r15_present) { - j.start_array("nprach-ParametersListFmt2-r15"); - for (const auto& e1 : fmt2_params_r15.nprach_params_list_fmt2_r15) { - e1.to_json(j); - } - j.end_array(); - } - if (fmt2_params_r15.nprach_params_list_fmt2_edt_r15_present) { - j.start_array("nprach-ParametersListFmt2EDT-r15"); - for (const auto& e1 : fmt2_params_r15.nprach_params_list_fmt2_edt_r15) { - e1.to_json(j); - } - j.end_array(); - } - j.end_obj(); } - if (edt_params_r15_present) { - j.write_fieldname("edt-Parameters-r15"); - j.start_obj(); - if (edt_params_r15.edt_small_tbs_subset_r15_present) { - j.write_str("edt-SmallTBS-Subset-r15", "true"); - } - j.start_array("edt-TBS-InfoList-r15"); - for (const auto& e1 : edt_params_r15.edt_tbs_info_list_r15) { - e1.to_json(j); + 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(); - if (edt_params_r15.nprach_params_list_edt_r15_present) { - j.start_array("nprach-ParametersListEDT-r15"); - for (const auto& e1 : edt_params_r15.nprach_params_list_edt_r15) { - e1.to_json(j); - } - j.end_array(); - } - j.end_obj(); } j.end_obj(); } -const char* nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::nprach_preamb_format_r15_opts::to_string() const +const char* gwus_res_cfg_nb_r16_s::res_position_r16_opts::to_string() const { - static const char* options[] = {"fmt0", "fmt1", "fmt2", "fmt0-a", "fmt1-a"}; - return convert_enum_idx( - options, 5, value, "nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::nprach_preamb_format_r15_e_"); + static const char* options[] = {"primary", "secondary"}; + return convert_enum_idx(options, 2, value, "gwus_res_cfg_nb_r16_s::res_position_r16_e_"); } -const char* nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::dummy_opts::to_string() const -{ - static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32", "n64", "n128", "n256", "n512", "n1024"}; - return convert_enum_idx(options, 11, value, "nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::dummy_e_"); -} -uint16_t nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::dummy_opts::to_number() const +// PCCH-Config-NB-r14 ::= SEQUENCE +SRSASN_CODE pcch_cfg_nb_r14_s::pack(bit_ref& bref) const { - static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024}; - return map_enum_number(options, 11, value, "nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::dummy_e_"); -} + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(npdcch_num_repeat_paging_r14_present, 1)); + HANDLE_CODE(bref.pack(paging_weight_r14_present, 1)); -// NPRACH-ConfigSIB-NB-v1550 ::= SEQUENCE -SRSASN_CODE nprach_cfg_sib_nb_v1550_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(pack_dyn_seq_of(bref, tdd_params_v1550.nprach_params_list_tdd_v1550, 1, 3)); + if (npdcch_num_repeat_paging_r14_present) { + HANDLE_CODE(npdcch_num_repeat_paging_r14.pack(bref)); + } + if (paging_weight_r14_present) { + HANDLE_CODE(paging_weight_r14.pack(bref)); + } return SRSASN_SUCCESS; } -SRSASN_CODE nprach_cfg_sib_nb_v1550_s::unpack(cbit_ref& bref) +SRSASN_CODE pcch_cfg_nb_r14_s::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_dyn_seq_of(tdd_params_v1550.nprach_params_list_tdd_v1550, bref, 1, 3)); + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(npdcch_num_repeat_paging_r14_present, 1)); + HANDLE_CODE(bref.unpack(paging_weight_r14_present, 1)); + + if (npdcch_num_repeat_paging_r14_present) { + HANDLE_CODE(npdcch_num_repeat_paging_r14.unpack(bref)); + } + if (paging_weight_r14_present) { + HANDLE_CODE(paging_weight_r14.unpack(bref)); + } return SRSASN_SUCCESS; } -void nprach_cfg_sib_nb_v1550_s::to_json(json_writer& j) const +void pcch_cfg_nb_r14_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("tdd-Parameters-v1550"); - j.start_obj(); - j.start_array("nprach-ParametersListTDD-v1550"); - for (const auto& e1 : tdd_params_v1550.nprach_params_list_tdd_v1550) { - e1.to_json(j); + if (npdcch_num_repeat_paging_r14_present) { + j.write_str("npdcch-NumRepetitionPaging-r14", npdcch_num_repeat_paging_r14.to_string()); + } + if (paging_weight_r14_present) { + j.write_str("pagingWeight-r14", paging_weight_r14.to_string()); } - j.end_array(); - j.end_obj(); j.end_obj(); } -// NPRACH-ProbabilityAnchor-NB-r14 ::= SEQUENCE -SRSASN_CODE nprach_probability_anchor_nb_r14_s::pack(bit_ref& bref) const +const char* pcch_cfg_nb_r14_s::npdcch_num_repeat_paging_r14_opts::to_string() const { - HANDLE_CODE(bref.pack(nprach_probability_anchor_r14_present, 1)); + static const char* options[] = {"r1", + "r2", + "r4", + "r8", + "r16", + "r32", + "r64", + "r128", + "r256", + "r512", + "r1024", + "r2048", + "spare4", + "spare3", + "spare2", + "spare1"}; + return convert_enum_idx(options, 16, value, "pcch_cfg_nb_r14_s::npdcch_num_repeat_paging_r14_e_"); +} +uint16_t pcch_cfg_nb_r14_s::npdcch_num_repeat_paging_r14_opts::to_number() const +{ + static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; + return map_enum_number(options, 12, value, "pcch_cfg_nb_r14_s::npdcch_num_repeat_paging_r14_e_"); +} - if (nprach_probability_anchor_r14_present) { - HANDLE_CODE(nprach_probability_anchor_r14.pack(bref)); +// 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 nprach_probability_anchor_nb_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE pcch_cfg_nb_r17_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(nprach_probability_anchor_r14_present, 1)); + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(paging_weight_r17_present, 1)); - if (nprach_probability_anchor_r14_present) { - HANDLE_CODE(nprach_probability_anchor_r14.unpack(bref)); + 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 nprach_probability_anchor_nb_r14_s::to_json(json_writer& j) const +void pcch_cfg_nb_r17_s::to_json(json_writer& j) const { j.start_obj(); - if (nprach_probability_anchor_r14_present) { - j.write_str("nprach-ProbabilityAnchor-r14", nprach_probability_anchor_r14.to_string()); + 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* nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_opts::to_string() const -{ - static const char* options[] = {"zero", - "oneSixteenth", - "oneFifteenth", - "oneFourteenth", - "oneThirteenth", - "oneTwelfth", - "oneEleventh", - "oneTenth", - "oneNinth", - "oneEighth", - "oneSeventh", - "oneSixth", - "oneFifth", - "oneFourth", - "oneThird", - "oneHalf"}; - return convert_enum_idx(options, 16, value, "nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_e_"); -} -float nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_opts::to_number() const +const char* pcch_cfg_nb_r17_s::npdcch_num_repeat_paging_r17_opts::to_string() const { - static const float options[] = {0.0, - 0.0625, - 0.06666666666666667, - 0.07142857142857142, - 0.07692307692307693, - 0.08333333333333333, - 0.09090909090909091, - 0.1, - 0.1111111111111111, - 0.125, - 0.14285714285714285, - 0.16666666666666666, - 0.2, - 0.25, - 0.3333333333333333, - 0.5}; - return map_enum_number(options, 16, value, "nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_e_"); + 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_"); } -const char* nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_opts::to_number_string() const +uint8_t pcch_cfg_nb_r17_s::npdcch_num_repeat_paging_r17_opts::to_number() const { - static const char* options[] = {"0", - "1/16", - "1/15", - "1/14", - "1/13", - "1/12", - "1/11", - "1/10", - "1/9", - "1/8", - "1/7", - "1/6", - "1/5", - "1/4", - "1/3", - "1/2"}; - return convert_enum_idx(options, 16, value, "nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_e_"); + 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_"); } -// NPUSCH-ConfigCommon-NB-r13 ::= SEQUENCE -SRSASN_CODE npusch_cfg_common_nb_r13_s::pack(bit_ref& bref) const +// PowerRampingParameters-NB-v1450 ::= SEQUENCE +SRSASN_CODE pwr_ramp_params_nb_v1450_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(srs_sf_cfg_r13_present, 1)); - HANDLE_CODE(bref.pack(dmrs_cfg_r13_present, 1)); + HANDLE_CODE(bref.pack(preamb_init_rx_target_pwr_v1450_present, 1)); + HANDLE_CODE(bref.pack(pwr_ramp_params_ce1_r14_present, 1)); - HANDLE_CODE(pack_dyn_seq_of(bref, ack_nack_num_repeats_msg4_r13, 1, 3)); - if (srs_sf_cfg_r13_present) { - HANDLE_CODE(srs_sf_cfg_r13.pack(bref)); + if (preamb_init_rx_target_pwr_v1450_present) { + HANDLE_CODE(preamb_init_rx_target_pwr_v1450.pack(bref)); } - if (dmrs_cfg_r13_present) { - HANDLE_CODE(bref.pack(dmrs_cfg_r13.three_tone_base_seq_r13_present, 1)); - HANDLE_CODE(bref.pack(dmrs_cfg_r13.six_tone_base_seq_r13_present, 1)); - HANDLE_CODE(bref.pack(dmrs_cfg_r13.twelve_tone_base_seq_r13_present, 1)); - if (dmrs_cfg_r13.three_tone_base_seq_r13_present) { - HANDLE_CODE(pack_integer(bref, dmrs_cfg_r13.three_tone_base_seq_r13, (uint8_t)0u, (uint8_t)12u)); - } - HANDLE_CODE(pack_integer(bref, dmrs_cfg_r13.three_tone_cyclic_shift_r13, (uint8_t)0u, (uint8_t)2u)); - if (dmrs_cfg_r13.six_tone_base_seq_r13_present) { - HANDLE_CODE(pack_integer(bref, dmrs_cfg_r13.six_tone_base_seq_r13, (uint8_t)0u, (uint8_t)14u)); - } - HANDLE_CODE(pack_integer(bref, dmrs_cfg_r13.six_tone_cyclic_shift_r13, (uint8_t)0u, (uint8_t)3u)); - if (dmrs_cfg_r13.twelve_tone_base_seq_r13_present) { - HANDLE_CODE(pack_integer(bref, dmrs_cfg_r13.twelve_tone_base_seq_r13, (uint8_t)0u, (uint8_t)30u)); - } + if (pwr_ramp_params_ce1_r14_present) { + HANDLE_CODE(pwr_ramp_params_ce1_r14.pwr_ramp_step_ce1_r14.pack(bref)); + HANDLE_CODE(pwr_ramp_params_ce1_r14.preamb_init_rx_target_pwr_ce1_r14.pack(bref)); } - HANDLE_CODE(ul_ref_sigs_npusch_r13.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE npusch_cfg_common_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE pwr_ramp_params_nb_v1450_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(srs_sf_cfg_r13_present, 1)); - HANDLE_CODE(bref.unpack(dmrs_cfg_r13_present, 1)); + HANDLE_CODE(bref.unpack(preamb_init_rx_target_pwr_v1450_present, 1)); + HANDLE_CODE(bref.unpack(pwr_ramp_params_ce1_r14_present, 1)); - HANDLE_CODE(unpack_dyn_seq_of(ack_nack_num_repeats_msg4_r13, bref, 1, 3)); - if (srs_sf_cfg_r13_present) { - HANDLE_CODE(srs_sf_cfg_r13.unpack(bref)); + if (preamb_init_rx_target_pwr_v1450_present) { + HANDLE_CODE(preamb_init_rx_target_pwr_v1450.unpack(bref)); } - if (dmrs_cfg_r13_present) { - HANDLE_CODE(bref.unpack(dmrs_cfg_r13.three_tone_base_seq_r13_present, 1)); - HANDLE_CODE(bref.unpack(dmrs_cfg_r13.six_tone_base_seq_r13_present, 1)); - HANDLE_CODE(bref.unpack(dmrs_cfg_r13.twelve_tone_base_seq_r13_present, 1)); - if (dmrs_cfg_r13.three_tone_base_seq_r13_present) { - HANDLE_CODE(unpack_integer(dmrs_cfg_r13.three_tone_base_seq_r13, bref, (uint8_t)0u, (uint8_t)12u)); - } - HANDLE_CODE(unpack_integer(dmrs_cfg_r13.three_tone_cyclic_shift_r13, bref, (uint8_t)0u, (uint8_t)2u)); - if (dmrs_cfg_r13.six_tone_base_seq_r13_present) { - HANDLE_CODE(unpack_integer(dmrs_cfg_r13.six_tone_base_seq_r13, bref, (uint8_t)0u, (uint8_t)14u)); - } - HANDLE_CODE(unpack_integer(dmrs_cfg_r13.six_tone_cyclic_shift_r13, bref, (uint8_t)0u, (uint8_t)3u)); - if (dmrs_cfg_r13.twelve_tone_base_seq_r13_present) { - HANDLE_CODE(unpack_integer(dmrs_cfg_r13.twelve_tone_base_seq_r13, bref, (uint8_t)0u, (uint8_t)30u)); - } + if (pwr_ramp_params_ce1_r14_present) { + HANDLE_CODE(pwr_ramp_params_ce1_r14.pwr_ramp_step_ce1_r14.unpack(bref)); + HANDLE_CODE(pwr_ramp_params_ce1_r14.preamb_init_rx_target_pwr_ce1_r14.unpack(bref)); } - HANDLE_CODE(ul_ref_sigs_npusch_r13.unpack(bref)); return SRSASN_SUCCESS; } -void npusch_cfg_common_nb_r13_s::to_json(json_writer& j) const +void pwr_ramp_params_nb_v1450_s::to_json(json_writer& j) const { j.start_obj(); - j.start_array("ack-NACK-NumRepetitions-Msg4-r13"); - for (const auto& e1 : ack_nack_num_repeats_msg4_r13) { - j.write_str(e1.to_string()); - } - j.end_array(); - if (srs_sf_cfg_r13_present) { - j.write_str("srs-SubframeConfig-r13", srs_sf_cfg_r13.to_string()); + if (preamb_init_rx_target_pwr_v1450_present) { + j.write_str("preambleInitialReceivedTargetPower-v1450", preamb_init_rx_target_pwr_v1450.to_string()); } - if (dmrs_cfg_r13_present) { - j.write_fieldname("dmrs-Config-r13"); + if (pwr_ramp_params_ce1_r14_present) { + j.write_fieldname("powerRampingParametersCE1-r14"); j.start_obj(); - if (dmrs_cfg_r13.three_tone_base_seq_r13_present) { - j.write_int("threeTone-BaseSequence-r13", dmrs_cfg_r13.three_tone_base_seq_r13); - } - j.write_int("threeTone-CyclicShift-r13", dmrs_cfg_r13.three_tone_cyclic_shift_r13); - if (dmrs_cfg_r13.six_tone_base_seq_r13_present) { - j.write_int("sixTone-BaseSequence-r13", dmrs_cfg_r13.six_tone_base_seq_r13); - } - j.write_int("sixTone-CyclicShift-r13", dmrs_cfg_r13.six_tone_cyclic_shift_r13); - if (dmrs_cfg_r13.twelve_tone_base_seq_r13_present) { - j.write_int("twelveTone-BaseSequence-r13", dmrs_cfg_r13.twelve_tone_base_seq_r13); - } + j.write_str("powerRampingStepCE1-r14", pwr_ramp_params_ce1_r14.pwr_ramp_step_ce1_r14.to_string()); + j.write_str("preambleInitialReceivedTargetPowerCE1-r14", + pwr_ramp_params_ce1_r14.preamb_init_rx_target_pwr_ce1_r14.to_string()); j.end_obj(); } - j.write_fieldname("ul-ReferenceSignalsNPUSCH-r13"); - ul_ref_sigs_npusch_r13.to_json(j); j.end_obj(); } -const char* npusch_cfg_common_nb_r13_s::srs_sf_cfg_r13_opts::to_string() const +const char* pwr_ramp_params_nb_v1450_s::preamb_init_rx_target_pwr_v1450_opts::to_string() const { - static const char* options[] = {"sc0", - "sc1", - "sc2", - "sc3", - "sc4", - "sc5", - "sc6", - "sc7", - "sc8", - "sc9", - "sc10", - "sc11", - "sc12", - "sc13", - "sc14", - "sc15"}; - return convert_enum_idx(options, 16, value, "npusch_cfg_common_nb_r13_s::srs_sf_cfg_r13_e_"); + static const char* options[] = { + "dBm-130", "dBm-128", "dBm-126", "dBm-124", "dBm-122", "dBm-88", "dBm-86", "dBm-84", "dBm-82", "dBm-80"}; + return convert_enum_idx(options, 10, value, "pwr_ramp_params_nb_v1450_s::preamb_init_rx_target_pwr_v1450_e_"); } -uint8_t npusch_cfg_common_nb_r13_s::srs_sf_cfg_r13_opts::to_number() const +int16_t pwr_ramp_params_nb_v1450_s::preamb_init_rx_target_pwr_v1450_opts::to_number() const { - static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; - return map_enum_number(options, 16, value, "npusch_cfg_common_nb_r13_s::srs_sf_cfg_r13_e_"); + static const int16_t options[] = {-130, -128, -126, -124, -122, -88, -86, -84, -82, -80}; + return map_enum_number(options, 10, value, "pwr_ramp_params_nb_v1450_s::preamb_init_rx_target_pwr_v1450_e_"); } -// PCCH-Config-NB-r13 ::= SEQUENCE -SRSASN_CODE pcch_cfg_nb_r13_s::pack(bit_ref& bref) const +const char* pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::pwr_ramp_step_ce1_r14_opts::to_string() const { - HANDLE_CODE(default_paging_cycle_r13.pack(bref)); - HANDLE_CODE(nb_r13.pack(bref)); - HANDLE_CODE(npdcch_num_repeat_paging_r13.pack(bref)); + static const char* options[] = {"dB0", "dB2", "dB4", "dB6"}; + return convert_enum_idx( + options, 4, value, "pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::pwr_ramp_step_ce1_r14_e_"); +} +uint8_t pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::pwr_ramp_step_ce1_r14_opts::to_number() const +{ + static const uint8_t options[] = {0, 2, 4, 6}; + return map_enum_number( + options, 4, value, "pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::pwr_ramp_step_ce1_r14_e_"); +} + +const char* +pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::preamb_init_rx_target_pwr_ce1_r14_opts::to_string() const +{ + static const char* options[] = {"dBm-130", "dBm-128", "dBm-126", "dBm-124", "dBm-122", "dBm-120", "dBm-118", + "dBm-116", "dBm-114", "dBm-112", "dBm-110", "dBm-108", "dBm-106", "dBm-104", + "dBm-102", "dBm-100", "dBm-98", "dBm-96", "dBm-94", "dBm-92", "dBm-90", + "dBm-88", "dBm-86", "dBm-84", "dBm-82", "dBm-80"}; + return convert_enum_idx( + options, + 26, + value, + "pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::preamb_init_rx_target_pwr_ce1_r14_e_"); +} +int16_t +pwr_ramp_params_nb_v1450_s::pwr_ramp_params_ce1_r14_s_::preamb_init_rx_target_pwr_ce1_r14_opts::to_number() const +{ + static const int16_t options[] = {-130, -128, -126, -124, -122, -120, -118, -116, -114, -112, -110, -108, -106, + -104, -102, -100, -98, -96, -94, -92, -90, -88, -86, -84, -82, -80}; + return map_enum_number( + options, + 26, + value, + "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 pcch_cfg_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE sib_type1_nb_v1610_s::unpack(cbit_ref& bref) { - HANDLE_CODE(default_paging_cycle_r13.unpack(bref)); - HANDLE_CODE(nb_r13.unpack(bref)); - HANDLE_CODE(npdcch_num_repeat_paging_r13.unpack(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 pcch_cfg_nb_r13_s::to_json(json_writer& j) const +void sib_type1_nb_v1610_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("defaultPagingCycle-r13", default_paging_cycle_r13.to_string()); - j.write_str("nB-r13", nb_r13.to_string()); - j.write_str("npdcch-NumRepetitionPaging-r13", npdcch_num_repeat_paging_r13.to_string()); + 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* pcch_cfg_nb_r13_s::default_paging_cycle_r13_opts::to_string() const -{ - static const char* options[] = {"rf128", "rf256", "rf512", "rf1024"}; - return convert_enum_idx(options, 4, value, "pcch_cfg_nb_r13_s::default_paging_cycle_r13_e_"); -} -uint16_t pcch_cfg_nb_r13_s::default_paging_cycle_r13_opts::to_number() const +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 uint16_t options[] = {128, 256, 512, 1024}; - return map_enum_number(options, 4, value, "pcch_cfg_nb_r13_s::default_paging_cycle_r13_e_"); + 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_"); } -const char* pcch_cfg_nb_r13_s::nb_r13_opts::to_string() const +// TDD-Config-NB-r15 ::= SEQUENCE +SRSASN_CODE tdd_cfg_nb_r15_s::pack(bit_ref& bref) 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, "pcch_cfg_nb_r13_s::nb_r13_e_"); + HANDLE_CODE(sf_assign_r15.pack(bref)); + HANDLE_CODE(special_sf_patterns_r15.pack(bref)); + + return SRSASN_SUCCESS; } -float pcch_cfg_nb_r13_s::nb_r13_opts::to_number() const +SRSASN_CODE tdd_cfg_nb_r15_s::unpack(cbit_ref& bref) { - 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, "pcch_cfg_nb_r13_s::nb_r13_e_"); + HANDLE_CODE(sf_assign_r15.unpack(bref)); + HANDLE_CODE(special_sf_patterns_r15.unpack(bref)); + + return SRSASN_SUCCESS; } -const char* pcch_cfg_nb_r13_s::nb_r13_opts::to_number_string() const +void tdd_cfg_nb_r15_s::to_json(json_writer& j) 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, "pcch_cfg_nb_r13_s::nb_r13_e_"); + j.start_obj(); + j.write_str("subframeAssignment-r15", sf_assign_r15.to_string()); + j.write_str("specialSubframePatterns-r15", special_sf_patterns_r15.to_string()); + j.end_obj(); } -const char* pcch_cfg_nb_r13_s::npdcch_num_repeat_paging_r13_opts::to_string() const +const char* tdd_cfg_nb_r15_s::sf_assign_r15_opts::to_string() const { - static const char* options[] = {"r1", - "r2", - "r4", - "r8", - "r16", - "r32", - "r64", - "r128", - "r256", - "r512", - "r1024", - "r2048", - "spare4", - "spare3", - "spare2", - "spare1"}; - return convert_enum_idx(options, 16, value, "pcch_cfg_nb_r13_s::npdcch_num_repeat_paging_r13_e_"); + static const char* options[] = {"sa1", "sa2", "sa3", "sa4", "sa5"}; + return convert_enum_idx(options, 5, value, "tdd_cfg_nb_r15_s::sf_assign_r15_e_"); } -uint16_t pcch_cfg_nb_r13_s::npdcch_num_repeat_paging_r13_opts::to_number() const +uint8_t tdd_cfg_nb_r15_s::sf_assign_r15_opts::to_number() const { - static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; - return map_enum_number(options, 12, value, "pcch_cfg_nb_r13_s::npdcch_num_repeat_paging_r13_e_"); + static const uint8_t options[] = {1, 2, 3, 4, 5}; + return map_enum_number(options, 5, value, "tdd_cfg_nb_r15_s::sf_assign_r15_e_"); } -// RACH-ConfigCommon-NB-r13 ::= SEQUENCE -SRSASN_CODE rach_cfg_common_nb_r13_s::pack(bit_ref& bref) const +const char* tdd_cfg_nb_r15_s::special_sf_patterns_r15_opts::to_string() const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(conn_est_fail_offset_r13_present, 1)); + static const char* options[] = { + "ssp0", "ssp1", "ssp2", "ssp3", "ssp4", "ssp5", "ssp6", "ssp7", "ssp8", "ssp9", "ssp10", "ssp10-CRS-LessDwPTS"}; + return convert_enum_idx(options, 12, value, "tdd_cfg_nb_r15_s::special_sf_patterns_r15_e_"); +} - HANDLE_CODE(preamb_trans_max_ce_r13.pack(bref)); - HANDLE_CODE(pwr_ramp_params_r13.pack(bref)); - HANDLE_CODE(pack_dyn_seq_of(bref, rach_info_list_r13, 1, 3)); - if (conn_est_fail_offset_r13_present) { - HANDLE_CODE(pack_integer(bref, conn_est_fail_offset_r13, (uint8_t)0u, (uint8_t)15u)); - } - - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= pwr_ramp_params_v1450.is_present(); - group_flags[1] |= rach_info_list_v1530.is_present(); - group_flags.pack(bref); - - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(pwr_ramp_params_v1450.is_present(), 1)); - if (pwr_ramp_params_v1450.is_present()) { - HANDLE_CODE(pwr_ramp_params_v1450->pack(bref)); - } - } - if (group_flags[1]) { - varlength_field_pack_guard varlen_scope(bref, false); +// UL-ReferenceSignalsNPUSCH-NB-r13 ::= SEQUENCE +SRSASN_CODE ul_ref_sigs_npusch_nb_r13_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(group_hop_enabled_r13, 1)); + HANDLE_CODE(pack_integer(bref, group_assign_npusch_r13, (uint8_t)0u, (uint8_t)29u)); - HANDLE_CODE(bref.pack(rach_info_list_v1530.is_present(), 1)); - if (rach_info_list_v1530.is_present()) { - HANDLE_CODE(pack_dyn_seq_of(bref, *rach_info_list_v1530, 1, 3)); - } - } - } return SRSASN_SUCCESS; } -SRSASN_CODE rach_cfg_common_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE ul_ref_sigs_npusch_nb_r13_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(conn_est_fail_offset_r13_present, 1)); - - HANDLE_CODE(preamb_trans_max_ce_r13.unpack(bref)); - HANDLE_CODE(pwr_ramp_params_r13.unpack(bref)); - HANDLE_CODE(unpack_dyn_seq_of(rach_info_list_r13, bref, 1, 3)); - if (conn_est_fail_offset_r13_present) { - HANDLE_CODE(unpack_integer(conn_est_fail_offset_r13, bref, (uint8_t)0u, (uint8_t)15u)); - } - - 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 pwr_ramp_params_v1450_present; - HANDLE_CODE(bref.unpack(pwr_ramp_params_v1450_present, 1)); - pwr_ramp_params_v1450.set_present(pwr_ramp_params_v1450_present); - if (pwr_ramp_params_v1450.is_present()) { - HANDLE_CODE(pwr_ramp_params_v1450->unpack(bref)); - } - } - if (group_flags[1]) { - varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(bref.unpack(group_hop_enabled_r13, 1)); + HANDLE_CODE(unpack_integer(group_assign_npusch_r13, bref, (uint8_t)0u, (uint8_t)29u)); - bool rach_info_list_v1530_present; - HANDLE_CODE(bref.unpack(rach_info_list_v1530_present, 1)); - rach_info_list_v1530.set_present(rach_info_list_v1530_present); - if (rach_info_list_v1530.is_present()) { - HANDLE_CODE(unpack_dyn_seq_of(*rach_info_list_v1530, bref, 1, 3)); - } - } - } return SRSASN_SUCCESS; } -void rach_cfg_common_nb_r13_s::to_json(json_writer& j) const +void ul_ref_sigs_npusch_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("preambleTransMax-CE-r13", preamb_trans_max_ce_r13.to_string()); - j.write_fieldname("powerRampingParameters-r13"); - pwr_ramp_params_r13.to_json(j); - j.start_array("rach-InfoList-r13"); - for (const auto& e1 : rach_info_list_r13) { - e1.to_json(j); - } - j.end_array(); - if (conn_est_fail_offset_r13_present) { - j.write_int("connEstFailOffset-r13", conn_est_fail_offset_r13); - } - if (ext) { - if (pwr_ramp_params_v1450.is_present()) { - j.write_fieldname("powerRampingParameters-v1450"); - pwr_ramp_params_v1450->to_json(j); - } - if (rach_info_list_v1530.is_present()) { - j.start_array("rach-InfoList-v1530"); - for (const auto& e1 : *rach_info_list_v1530) { - e1.to_json(j); - } - j.end_array(); - } - } + j.write_bool("groupHoppingEnabled-r13", group_hop_enabled_r13); + j.write_int("groupAssignmentNPUSCH-r13", group_assign_npusch_r13); j.end_obj(); } -// SIB-Type-NB-r13 ::= ENUMERATED -const char* sib_type_nb_r13_opts::to_string() const -{ - static const char* options[] = {"sibType3-NB-r13", - "sibType4-NB-r13", - "sibType5-NB-r13", - "sibType14-NB-r13", - "sibType16-NB-r13", - "sibType15-NB-r14", - "sibType20-NB-r14", - "sibType22-NB-r14"}; - return convert_enum_idx(options, 8, value, "sib_type_nb_r13_e"); -} -uint8_t sib_type_nb_r13_opts::to_number() const -{ - static const uint8_t options[] = {3, 4, 5, 14, 16, 15, 20, 22}; - return map_enum_number(options, 8, value, "sib_type_nb_r13_e"); -} - -// SystemInformationBlockType1-NB-v1530 ::= SEQUENCE -SRSASN_CODE sib_type1_nb_v1530_s::pack(bit_ref& bref) const +// WUS-Config-NB-r15 ::= SEQUENCE +SRSASN_CODE wus_cfg_nb_r15_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(tdd_params_r15_present, 1)); - HANDLE_CODE(bref.pack(sched_info_list_v1530_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + 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)); - if (tdd_params_r15_present) { - HANDLE_CODE(bref.pack(tdd_params_r15.tdd_si_sfs_bitmap_r15_present, 1)); - HANDLE_CODE(tdd_params_r15.tdd_cfg_r15.pack(bref)); - HANDLE_CODE(tdd_params_r15.tdd_si_carrier_info_r15.pack(bref)); - if (tdd_params_r15.tdd_si_sfs_bitmap_r15_present) { - HANDLE_CODE(tdd_params_r15.tdd_si_sfs_bitmap_r15.pack(bref)); - } + HANDLE_CODE(max_dur_factor_r15.pack(bref)); + if (num_pos_r15_present) { + HANDLE_CODE(num_pos_r15.pack(bref)); } - if (sched_info_list_v1530_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, sched_info_list_v1530, 1, 8)); + 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 sib_type1_nb_v1530_s::unpack(cbit_ref& bref) +SRSASN_CODE wus_cfg_nb_r15_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(tdd_params_r15_present, 1)); - HANDLE_CODE(bref.unpack(sched_info_list_v1530_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + 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)); - if (tdd_params_r15_present) { - HANDLE_CODE(bref.unpack(tdd_params_r15.tdd_si_sfs_bitmap_r15_present, 1)); - HANDLE_CODE(tdd_params_r15.tdd_cfg_r15.unpack(bref)); - HANDLE_CODE(tdd_params_r15.tdd_si_carrier_info_r15.unpack(bref)); - if (tdd_params_r15.tdd_si_sfs_bitmap_r15_present) { - HANDLE_CODE(tdd_params_r15.tdd_si_sfs_bitmap_r15.unpack(bref)); - } + HANDLE_CODE(max_dur_factor_r15.unpack(bref)); + if (num_pos_r15_present) { + HANDLE_CODE(num_pos_r15.unpack(bref)); } - if (sched_info_list_v1530_present) { - HANDLE_CODE(unpack_dyn_seq_of(sched_info_list_v1530, bref, 1, 8)); + 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 sib_type1_nb_v1530_s::to_json(json_writer& j) const +void wus_cfg_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - if (tdd_params_r15_present) { - j.write_fieldname("tdd-Parameters-r15"); - j.start_obj(); - j.write_fieldname("tdd-Config-r15"); - tdd_params_r15.tdd_cfg_r15.to_json(j); - j.write_str("tdd-SI-CarrierInfo-r15", tdd_params_r15.tdd_si_carrier_info_r15.to_string()); - if (tdd_params_r15.tdd_si_sfs_bitmap_r15_present) { - j.write_fieldname("tdd-SI-SubframesBitmap-r15"); - tdd_params_r15.tdd_si_sfs_bitmap_r15.to_json(j); - } - j.end_obj(); - } - if (sched_info_list_v1530_present) { - j.start_array("schedulingInfoList-v1530"); - for (const auto& e1 : sched_info_list_v1530) { - e1.to_json(j); - } - j.end_array(); + 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()); } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - j.start_obj(); - j.end_obj(); + 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* sib_type1_nb_v1530_s::tdd_params_r15_s_::tdd_si_carrier_info_r15_opts::to_string() const +const char* wus_cfg_nb_r15_s::num_pos_r15_opts::to_string() const { - static const char* options[] = {"anchor", "non-anchor"}; - return convert_enum_idx(options, 2, value, "sib_type1_nb_v1530_s::tdd_params_r15_s_::tdd_si_carrier_info_r15_e_"); + static const char* options[] = {"n1", "n2", "n4"}; + return convert_enum_idx(options, 3, value, "wus_cfg_nb_r15_s::num_pos_r15_e_"); } - -// UL-ConfigCommon-NB-r14 ::= SEQUENCE -SRSASN_CODE ul_cfg_common_nb_r14_s::pack(bit_ref& bref) const +uint8_t wus_cfg_nb_r15_s::num_pos_r15_opts::to_number() const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(nprach_params_list_r14_present, 1)); - - HANDLE_CODE(ul_carrier_freq_r14.pack(bref)); - if (nprach_params_list_r14_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_r14, 1, 3)); - } - - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= nprach_params_list_edt_r15.is_present(); - group_flags.pack(bref); + static const uint8_t options[] = {1, 2, 4}; + return map_enum_number(options, 3, value, "wus_cfg_nb_r15_s::num_pos_r15_e_"); +} - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); +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_"); +} - HANDLE_CODE(bref.pack(nprach_params_list_edt_r15.is_present(), 1)); - if (nprach_params_list_edt_r15.is_present()) { - HANDLE_CODE(pack_dyn_seq_of(bref, *nprach_params_list_edt_r15, 1, 3)); - } - } - } - return SRSASN_SUCCESS; +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_"); } -SRSASN_CODE ul_cfg_common_nb_r14_s::unpack(cbit_ref& bref) +uint8_t wus_cfg_nb_r15_s::time_offset_drx_r15_opts::to_number() const { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(nprach_params_list_r14_present, 1)); + 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_"); +} - HANDLE_CODE(ul_carrier_freq_r14.unpack(bref)); - if (nprach_params_list_r14_present) { - HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_r14, bref, 1, 3)); - } +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_"); +} - if (ext) { - ext_groups_unpacker_guard group_flags(1); - group_flags.unpack(bref); +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_"); +} - if (group_flags[0]) { - varlength_field_unpack_guard varlen_scope(bref, false); +// WUS-ConfigPerCarrier-NB-r15 ::= SEQUENCE +SRSASN_CODE wus_cfg_per_carrier_nb_r15_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(max_dur_factor_r15.pack(bref)); - bool nprach_params_list_edt_r15_present; - HANDLE_CODE(bref.unpack(nprach_params_list_edt_r15_present, 1)); - nprach_params_list_edt_r15.set_present(nprach_params_list_edt_r15_present); - if (nprach_params_list_edt_r15.is_present()) { - HANDLE_CODE(unpack_dyn_seq_of(*nprach_params_list_edt_r15, bref, 1, 3)); - } - } - } return SRSASN_SUCCESS; } -void ul_cfg_common_nb_r14_s::to_json(json_writer& j) const +SRSASN_CODE wus_cfg_per_carrier_nb_r15_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(max_dur_factor_r15.unpack(bref)); + + return SRSASN_SUCCESS; +} +void wus_cfg_per_carrier_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("ul-CarrierFreq-r14"); - ul_carrier_freq_r14.to_json(j); - if (nprach_params_list_r14_present) { - j.start_array("nprach-ParametersList-r14"); - for (const auto& e1 : nprach_params_list_r14) { - e1.to_json(j); - } - j.end_array(); - } - if (ext) { - if (nprach_params_list_edt_r15.is_present()) { - j.start_array("nprach-ParametersListEDT-r15"); - for (const auto& e1 : *nprach_params_list_edt_r15) { - e1.to_json(j); - } - j.end_array(); - } - } + j.write_str("maxDurationFactor-r15", max_dur_factor_r15.to_string()); j.end_obj(); } -// UL-ConfigCommon-NB-v1530 ::= SEQUENCE -SRSASN_CODE ul_cfg_common_nb_v1530_s::pack(bit_ref& bref) const +// BCCH-Config-NB-r13 ::= SEQUENCE +SRSASN_CODE bcch_cfg_nb_r13_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(nprach_params_list_fmt2_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_params_list_fmt2_edt_r15_present, 1)); - - if (nprach_params_list_fmt2_r15_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_fmt2_r15, 1, 3)); - } - if (nprach_params_list_fmt2_edt_r15_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_fmt2_edt_r15, 1, 3)); - } + HANDLE_CODE(mod_period_coeff_r13.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE ul_cfg_common_nb_v1530_s::unpack(cbit_ref& bref) +SRSASN_CODE bcch_cfg_nb_r13_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(nprach_params_list_fmt2_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_params_list_fmt2_edt_r15_present, 1)); - - if (nprach_params_list_fmt2_r15_present) { - HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_fmt2_r15, bref, 1, 3)); - } - if (nprach_params_list_fmt2_edt_r15_present) { - HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_fmt2_edt_r15, bref, 1, 3)); - } + HANDLE_CODE(mod_period_coeff_r13.unpack(bref)); return SRSASN_SUCCESS; } -void ul_cfg_common_nb_v1530_s::to_json(json_writer& j) const +void bcch_cfg_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - if (nprach_params_list_fmt2_r15_present) { - j.start_array("nprach-ParametersListFmt2-r15"); - for (const auto& e1 : nprach_params_list_fmt2_r15) { - e1.to_json(j); - } - j.end_array(); - } - if (nprach_params_list_fmt2_edt_r15_present) { - j.start_array("nprach-ParametersListFmt2EDT-r15"); - for (const auto& e1 : nprach_params_list_fmt2_edt_r15) { - e1.to_json(j); - } - j.end_array(); - } + j.write_str("modificationPeriodCoeff-r13", mod_period_coeff_r13.to_string()); j.end_obj(); } -// UL-ConfigCommonTDD-NB-r15 ::= SEQUENCE -SRSASN_CODE ul_cfg_common_tdd_nb_r15_s::pack(bit_ref& bref) const +const char* bcch_cfg_nb_r13_s::mod_period_coeff_r13_opts::to_string() const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(nprach_params_list_tdd_r15_present, 1)); + static const char* options[] = {"n16", "n32", "n64", "n128"}; + return convert_enum_idx(options, 4, value, "bcch_cfg_nb_r13_s::mod_period_coeff_r13_e_"); +} +uint8_t bcch_cfg_nb_r13_s::mod_period_coeff_r13_opts::to_number() const +{ + static const uint8_t options[] = {16, 32, 64, 128}; + return map_enum_number(options, 4, value, "bcch_cfg_nb_r13_s::mod_period_coeff_r13_e_"); +} - HANDLE_CODE(tdd_ul_dl_align_offset_r15.pack(bref)); - if (nprach_params_list_tdd_r15_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_tdd_r15, 1, 3)); +// 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 ul_cfg_common_tdd_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE cbp_cfg_nb_r17_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(nprach_params_list_tdd_r15_present, 1)); + HANDLE_CODE(bref.unpack(nb_r17_present, 1)); + HANDLE_CODE(bref.unpack(ue_specific_drx_cycle_min_r17_present, 1)); - HANDLE_CODE(tdd_ul_dl_align_offset_r15.unpack(bref)); - if (nprach_params_list_tdd_r15_present) { - HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_tdd_r15, bref, 1, 3)); + 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 ul_cfg_common_tdd_nb_r15_s::to_json(json_writer& j) const +void cbp_cfg_nb_r17_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("tdd-UL-DL-AlignmentOffset-r15", tdd_ul_dl_align_offset_r15.to_string()); - if (nprach_params_list_tdd_r15_present) { - j.start_array("nprach-ParametersListTDD-r15"); - for (const auto& e1 : nprach_params_list_tdd_r15) { - e1.to_json(j); - } - j.end_array(); + 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(); } -// UplinkPowerControlCommon-NB-r13 ::= SEQUENCE -SRSASN_CODE ul_pwr_ctrl_common_nb_r13_s::pack(bit_ref& bref) const +const char* cbp_cfg_nb_r17_s::nb_r17_opts::to_string() const { - HANDLE_CODE(pack_integer(bref, p0_nominal_npusch_r13, (int8_t)-126, (int8_t)24)); - HANDLE_CODE(alpha_r13.pack(bref)); - HANDLE_CODE(pack_integer(bref, delta_preamb_msg3_r13, (int8_t)-1, (int8_t)6)); - - return SRSASN_SUCCESS; + 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_"); } -SRSASN_CODE ul_pwr_ctrl_common_nb_r13_s::unpack(cbit_ref& bref) +float cbp_cfg_nb_r17_s::nb_r17_opts::to_number() const { - HANDLE_CODE(unpack_integer(p0_nominal_npusch_r13, bref, (int8_t)-126, (int8_t)24)); - HANDLE_CODE(alpha_r13.unpack(bref)); - HANDLE_CODE(unpack_integer(delta_preamb_msg3_r13, bref, (int8_t)-1, (int8_t)6)); - - return SRSASN_SUCCESS; + 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_"); } -void ul_pwr_ctrl_common_nb_r13_s::to_json(json_writer& j) const +const char* cbp_cfg_nb_r17_s::nb_r17_opts::to_number_string() const { - j.start_obj(); - j.write_int("p0-NominalNPUSCH-r13", p0_nominal_npusch_r13); - j.write_str("alpha-r13", alpha_r13.to_string()); - j.write_int("deltaPreambleMsg3-r13", delta_preamb_msg3_r13); - j.end_obj(); + 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* ul_pwr_ctrl_common_nb_r13_s::alpha_r13_opts::to_string() const -{ - static const char* options[] = {"al0", "al04", "al05", "al06", "al07", "al08", "al09", "al1"}; - return convert_enum_idx(options, 8, value, "ul_pwr_ctrl_common_nb_r13_s::alpha_r13_e_"); -} -float ul_pwr_ctrl_common_nb_r13_s::alpha_r13_opts::to_number() const +const char* cbp_cfg_nb_r17_s::ue_specific_drx_cycle_min_r17_opts::to_string() 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, "ul_pwr_ctrl_common_nb_r13_s::alpha_r13_e_"); + 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_"); } -const char* ul_pwr_ctrl_common_nb_r13_s::alpha_r13_opts::to_number_string() const +uint16_t cbp_cfg_nb_r17_s::ue_specific_drx_cycle_min_r17_opts::to_number() 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, "ul_pwr_ctrl_common_nb_r13_s::alpha_r13_e_"); + 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_"); } -// WUS-Config-NB-r15 ::= SEQUENCE -SRSASN_CODE wus_cfg_nb_r15_s::pack(bit_ref& bref) const +// 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(num_pos_r15_present, 1)); - HANDLE_CODE(bref.pack(time_offset_e_drx_long_r15_present, 1)); + HANDLE_CODE(bref.pack(sib1_r16_present, 1)); + HANDLE_CODE(bref.pack(sib1_br_r16_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)); - } + HANDLE_CODE(pack_integer(bref, carrier_freq_r16, (uint32_t)0u, (uint32_t)262143u)); return SRSASN_SUCCESS; } -SRSASN_CODE wus_cfg_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE carrier_freq_eutra_nb_r16_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(bref.unpack(sib1_r16_present, 1)); + HANDLE_CODE(bref.unpack(sib1_br_r16_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)); - } + HANDLE_CODE(unpack_integer(carrier_freq_r16, bref, (uint32_t)0u, (uint32_t)262143u)); return SRSASN_SUCCESS; } -void wus_cfg_nb_r15_s::to_json(json_writer& j) const +void carrier_freq_eutra_nb_r16_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_int("carrierFreq-r16", carrier_freq_r16); + if (sib1_r16_present) { + j.write_str("sib1-r16", "supported"); } - 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()); + if (sib1_br_r16_present) { + j.write_str("sib1-BR-r16", "supported"); } j.end_obj(); } -const char* wus_cfg_nb_r15_s::num_pos_r15_opts::to_string() const +// CarrierFreqsGERAN-NB-r16 ::= SEQUENCE +SRSASN_CODE carrier_freqs_geran_nb_r16_s::pack(bit_ref& bref) const { - static const char* options[] = {"n1", "n2", "n4"}; - return convert_enum_idx(options, 3, value, "wus_cfg_nb_r15_s::num_pos_r15_e_"); + 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; } -uint8_t wus_cfg_nb_r15_s::num_pos_r15_opts::to_number() const +SRSASN_CODE carrier_freqs_geran_nb_r16_s::unpack(cbit_ref& bref) { - static const uint8_t options[] = {1, 2, 4}; - return map_enum_number(options, 3, value, "wus_cfg_nb_r15_s::num_pos_r15_e_"); -} + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(ec_gsm_iot_r16_present, 1)); + HANDLE_CODE(bref.unpack(peo_r16_present, 1)); -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_"); + HANDLE_CODE(carrier_freqs_r16.unpack(bref)); + + return SRSASN_SUCCESS; } -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 -{ - HANDLE_CODE(s_search_delta_p_r14.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE cell_resel_info_common_nb_v1450_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(s_search_delta_p_r14.unpack(bref)); - - return SRSASN_SUCCESS; -} -void cell_resel_info_common_nb_v1450_s::to_json(json_writer& j) const +void carrier_freqs_geran_nb_r16_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("s-SearchDeltaP-r14", s_search_delta_p_r14.to_string()); + 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(); } -const char* cell_resel_info_common_nb_v1450_s::s_search_delta_p_r14_opts::to_string() const -{ - static const char* options[] = {"dB6", "dB9", "dB12", "dB15"}; - return convert_enum_idx(options, 4, value, "cell_resel_info_common_nb_v1450_s::s_search_delta_p_r14_e_"); -} -uint8_t cell_resel_info_common_nb_v1450_s::s_search_delta_p_r14_opts::to_number() const -{ - static const uint8_t options[] = {6, 9, 12, 15}; - return map_enum_number(options, 4, value, "cell_resel_info_common_nb_v1450_s::s_search_delta_p_r14_e_"); -} - -// CellSelectionInfo-NB-v1430 ::= SEQUENCE -SRSASN_CODE cell_sel_info_nb_v1430_s::pack(bit_ref& bref) const +// DL-ConfigCommon-NB-r14 ::= SEQUENCE +SRSASN_CODE dl_cfg_common_nb_r14_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(pwr_class14dbm_offset_r14_present, 1)); - HANDLE_CODE(bref.pack(ce_authorisation_offset_r14_present, 1)); + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(pcch_cfg_r14_present, 1)); - if (pwr_class14dbm_offset_r14_present) { - HANDLE_CODE(pwr_class14dbm_offset_r14.pack(bref)); - } - if (ce_authorisation_offset_r14_present) { - HANDLE_CODE(ce_authorisation_offset_r14.pack(bref)); + HANDLE_CODE(dl_carrier_cfg_r14.pack(bref)); + if (pcch_cfg_r14_present) { + HANDLE_CODE(pcch_cfg_r14.pack(bref)); } - return SRSASN_SUCCESS; -} -SRSASN_CODE cell_sel_info_nb_v1430_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(pwr_class14dbm_offset_r14_present, 1)); - HANDLE_CODE(bref.unpack(ce_authorisation_offset_r14_present, 1)); + 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 (pwr_class14dbm_offset_r14_present) { - HANDLE_CODE(pwr_class14dbm_offset_r14.unpack(bref)); - } - if (ce_authorisation_offset_r14_present) { - HANDLE_CODE(ce_authorisation_offset_r14.unpack(bref)); - } + if (group_flags[0]) { + varlength_field_pack_guard varlen_scope(bref, false); - return SRSASN_SUCCESS; -} -void cell_sel_info_nb_v1430_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (pwr_class14dbm_offset_r14_present) { - j.write_str("powerClass14dBm-Offset-r14", pwr_class14dbm_offset_r14.to_string()); - } - if (ce_authorisation_offset_r14_present) { - j.write_str("ce-authorisationOffset-r14", ce_authorisation_offset_r14.to_string()); - } - j.end_obj(); -} + HANDLE_CODE(bref.pack(wus_cfg_r15.is_present(), 1)); + if (wus_cfg_r15.is_present()) { + HANDLE_CODE(wus_cfg_r15->pack(bref)); + } + } + if (group_flags[1]) { + varlength_field_pack_guard varlen_scope(bref, false); -const char* cell_sel_info_nb_v1430_s::pwr_class14dbm_offset_r14_opts::to_string() const -{ - static const char* options[] = {"dB-6", "dB-3", "dB3", "dB6", "dB9", "dB12"}; - return convert_enum_idx(options, 6, value, "cell_sel_info_nb_v1430_s::pwr_class14dbm_offset_r14_e_"); -} -int8_t cell_sel_info_nb_v1430_s::pwr_class14dbm_offset_r14_opts::to_number() const -{ - static const int8_t options[] = {-6, -3, 3, 6, 9, 12}; - return map_enum_number(options, 6, value, "cell_sel_info_nb_v1430_s::pwr_class14dbm_offset_r14_e_"); -} + 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); -const char* cell_sel_info_nb_v1430_s::ce_authorisation_offset_r14_opts::to_string() const -{ - static const char* options[] = {"dB5", "dB10", "dB15", "dB20", "dB25", "dB30", "dB35"}; - return convert_enum_idx(options, 7, value, "cell_sel_info_nb_v1430_s::ce_authorisation_offset_r14_e_"); + 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; } -uint8_t cell_sel_info_nb_v1430_s::ce_authorisation_offset_r14_opts::to_number() const +SRSASN_CODE dl_cfg_common_nb_r14_s::unpack(cbit_ref& bref) { - static const uint8_t options[] = {5, 10, 15, 20, 25, 30, 35}; - return map_enum_number(options, 7, value, "cell_sel_info_nb_v1430_s::ce_authorisation_offset_r14_e_"); -} + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(pcch_cfg_r14_present, 1)); -// IntraFreqCellReselectionInfo-NB-v1350 ::= SEQUENCE -SRSASN_CODE intra_freq_cell_resel_info_nb_v1350_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(pack_integer(bref, delta_rx_lev_min_v1350, (int8_t)-8, (int8_t)-1)); + HANDLE_CODE(dl_carrier_cfg_r14.unpack(bref)); + if (pcch_cfg_r14_present) { + HANDLE_CODE(pcch_cfg_r14.unpack(bref)); + } - return SRSASN_SUCCESS; -} -SRSASN_CODE intra_freq_cell_resel_info_nb_v1350_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(unpack_integer(delta_rx_lev_min_v1350, bref, (int8_t)-8, (int8_t)-1)); + if (ext) { + ext_groups_unpacker_guard group_flags(3); + group_flags.unpack(bref); - return SRSASN_SUCCESS; -} -void intra_freq_cell_resel_info_nb_v1350_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_int("delta-RxLevMin-v1350", delta_rx_lev_min_v1350); - j.end_obj(); -} + if (group_flags[0]) { + varlength_field_unpack_guard varlen_scope(bref, false); -// IntraFreqCellReselectionInfo-NB-v1360 ::= SEQUENCE -SRSASN_CODE intra_freq_cell_resel_info_nb_v1360_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(pack_integer(bref, s_intra_search_p_v1360, (uint8_t)32u, (uint8_t)63u)); + bool wus_cfg_r15_present; + HANDLE_CODE(bref.unpack(wus_cfg_r15_present, 1)); + wus_cfg_r15.set_present(wus_cfg_r15_present); + if (wus_cfg_r15.is_present()) { + HANDLE_CODE(wus_cfg_r15->unpack(bref)); + } + } + if (group_flags[1]) { + varlength_field_unpack_guard varlen_scope(bref, false); - return SRSASN_SUCCESS; -} -SRSASN_CODE intra_freq_cell_resel_info_nb_v1360_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(unpack_integer(s_intra_search_p_v1360, bref, (uint8_t)32u, (uint8_t)63u)); + 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; } -void intra_freq_cell_resel_info_nb_v1360_s::to_json(json_writer& j) const +void dl_cfg_common_nb_r14_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("s-IntraSearchP-v1360", s_intra_search_p_v1360); + j.write_fieldname("dl-CarrierConfig-r14"); + dl_carrier_cfg_r14.to_json(j); + if (pcch_cfg_r14_present) { + j.write_fieldname("pcch-Config-r14"); + pcch_cfg_r14.to_json(j); + } + if (ext) { + if (wus_cfg_r15.is_present()) { + 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(); } -// IntraFreqCellReselectionInfo-NB-v1430 ::= SEQUENCE -SRSASN_CODE intra_freq_cell_resel_info_nb_v1430_s::pack(bit_ref& bref) const +// GWUS-Config-NB-r16 ::= SEQUENCE +SRSASN_CODE gwus_cfg_nb_r16_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(pwr_class14dbm_offset_r14_present, 1)); - HANDLE_CODE(bref.pack(ce_authorisation_offset_r14_present, 1)); + 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 (pwr_class14dbm_offset_r14_present) { - HANDLE_CODE(pwr_class14dbm_offset_r14.pack(bref)); + if (common_seq_r16_present) { + HANDLE_CODE(common_seq_r16.pack(bref)); } - if (ce_authorisation_offset_r14_present) { - HANDLE_CODE(ce_authorisation_offset_r14.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 intra_freq_cell_resel_info_nb_v1430_s::unpack(cbit_ref& bref) +SRSASN_CODE gwus_cfg_nb_r16_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(pwr_class14dbm_offset_r14_present, 1)); - HANDLE_CODE(bref.unpack(ce_authorisation_offset_r14_present, 1)); + 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 (pwr_class14dbm_offset_r14_present) { - HANDLE_CODE(pwr_class14dbm_offset_r14.unpack(bref)); + if (common_seq_r16_present) { + HANDLE_CODE(common_seq_r16.unpack(bref)); } - if (ce_authorisation_offset_r14_present) { - HANDLE_CODE(ce_authorisation_offset_r14.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 intra_freq_cell_resel_info_nb_v1430_s::to_json(json_writer& j) const +void gwus_cfg_nb_r16_s::to_json(json_writer& j) const { j.start_obj(); - if (pwr_class14dbm_offset_r14_present) { - j.write_str("powerClass14dBm-Offset-r14", pwr_class14dbm_offset_r14.to_string()); + if (group_alternation_r16_present) { + j.write_str("groupAlternation-r16", "true"); } - if (ce_authorisation_offset_r14_present) { - j.write_str("ce-AuthorisationOffset-r14", ce_authorisation_offset_r14.to_string()); + 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* intra_freq_cell_resel_info_nb_v1430_s::pwr_class14dbm_offset_r14_opts::to_string() const +const char* gwus_cfg_nb_r16_s::common_seq_r16_opts::to_string() const { - static const char* options[] = {"dB-6", "dB-3", "dB3", "dB6", "dB9", "dB12"}; - return convert_enum_idx(options, 6, value, "intra_freq_cell_resel_info_nb_v1430_s::pwr_class14dbm_offset_r14_e_"); + static const char* options[] = {"g0", "g126"}; + return convert_enum_idx(options, 2, value, "gwus_cfg_nb_r16_s::common_seq_r16_e_"); } -int8_t intra_freq_cell_resel_info_nb_v1430_s::pwr_class14dbm_offset_r14_opts::to_number() const +uint8_t gwus_cfg_nb_r16_s::common_seq_r16_opts::to_number() const { - static const int8_t options[] = {-6, -3, 3, 6, 9, 12}; - return map_enum_number(options, 6, value, "intra_freq_cell_resel_info_nb_v1430_s::pwr_class14dbm_offset_r14_e_"); + static const uint8_t options[] = {0, 126}; + return map_enum_number(options, 2, value, "gwus_cfg_nb_r16_s::common_seq_r16_e_"); } -const char* intra_freq_cell_resel_info_nb_v1430_s::ce_authorisation_offset_r14_opts::to_string() const -{ - static const char* options[] = {"dB5", "dB10", "dB15", "dB20", "dB25", "dB30", "dB35"}; - return convert_enum_idx(options, 7, value, "intra_freq_cell_resel_info_nb_v1430_s::ce_authorisation_offset_r14_e_"); -} -uint8_t intra_freq_cell_resel_info_nb_v1430_s::ce_authorisation_offset_r14_opts::to_number() const -{ - static const uint8_t options[] = {5, 10, 15, 20, 25, 30, 35}; - return map_enum_number(options, 7, value, "intra_freq_cell_resel_info_nb_v1430_s::ce_authorisation_offset_r14_e_"); -} - -// NPDCCH-SC-MCCH-Config-NB-r14 ::= SEQUENCE -SRSASN_CODE npdcch_sc_mcch_cfg_nb_r14_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(npdcch_num_repeats_sc_mcch_r14.pack(bref)); - HANDLE_CODE(npdcch_start_sf_sc_mcch_r14.pack(bref)); - HANDLE_CODE(npdcch_offset_sc_mcch_r14.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE npdcch_sc_mcch_cfg_nb_r14_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(npdcch_num_repeats_sc_mcch_r14.unpack(bref)); - HANDLE_CODE(npdcch_start_sf_sc_mcch_r14.unpack(bref)); - HANDLE_CODE(npdcch_offset_sc_mcch_r14.unpack(bref)); - - return SRSASN_SUCCESS; -} -void npdcch_sc_mcch_cfg_nb_r14_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_str("npdcch-NumRepetitions-SC-MCCH-r14", npdcch_num_repeats_sc_mcch_r14.to_string()); - j.write_str("npdcch-StartSF-SC-MCCH-r14", npdcch_start_sf_sc_mcch_r14.to_string()); - j.write_str("npdcch-Offset-SC-MCCH-r14", npdcch_offset_sc_mcch_r14.to_string()); - j.end_obj(); -} - -const char* npdcch_sc_mcch_cfg_nb_r14_s::npdcch_num_repeats_sc_mcch_r14_opts::to_string() const -{ - static const char* options[] = { - "r1", "r2", "r4", "r8", "r16", "r32", "r64", "r128", "r256", "r512", "r1024", "r2048"}; - return convert_enum_idx(options, 12, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_num_repeats_sc_mcch_r14_e_"); -} -uint16_t npdcch_sc_mcch_cfg_nb_r14_s::npdcch_num_repeats_sc_mcch_r14_opts::to_number() const -{ - static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; - return map_enum_number(options, 12, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_num_repeats_sc_mcch_r14_e_"); -} - -const char* npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_opts::to_string() const -{ - static const char* options[] = {"v1dot5", "v2", "v4", "v8", "v16", "v32", "v48", "v64"}; - return convert_enum_idx(options, 8, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_e_"); -} -float npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_opts::to_number() const -{ - static const float options[] = {1.5, 2.0, 4.0, 8.0, 16.0, 32.0, 48.0, 64.0}; - return map_enum_number(options, 8, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_e_"); -} -const char* npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_opts::to_number_string() const -{ - static const char* options[] = {"1.5", "2", "4", "8", "16", "32", "48", "64"}; - return convert_enum_idx(options, 8, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_e_"); -} - -const char* npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_r14_opts::to_string() const -{ - static const char* options[] = { - "zero", "oneEighth", "oneQuarter", "threeEighth", "oneHalf", "fiveEighth", "threeQuarter", "sevenEighth"}; - return convert_enum_idx(options, 8, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_r14_e_"); -} -float npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_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, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_r14_e_"); -} -const char* npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_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, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_r14_e_"); -} - -// RadioResourceConfigCommonSIB-NB-r13 ::= SEQUENCE -SRSASN_CODE rr_cfg_common_sib_nb_r13_s::pack(bit_ref& bref) const +// InterFreqCarrierFreqInfo-NB-r13 ::= SEQUENCE +SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::pack(bit_ref& bref) const { bref.pack(ext, 1); - HANDLE_CODE(bref.pack(dl_gap_r13_present, 1)); + HANDLE_CODE(bref.pack(q_qual_min_r13_present, 1)); + 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_excluded_cell_list_r13_present, 1)); + HANDLE_CODE(bref.pack(multi_band_info_list_r13_present, 1)); - HANDLE_CODE(rach_cfg_common_r13.pack(bref)); - HANDLE_CODE(bcch_cfg_r13.pack(bref)); - HANDLE_CODE(pcch_cfg_r13.pack(bref)); - HANDLE_CODE(nprach_cfg_r13.pack(bref)); - HANDLE_CODE(npdsch_cfg_common_r13.pack(bref)); - HANDLE_CODE(npusch_cfg_common_r13.pack(bref)); - if (dl_gap_r13_present) { - HANDLE_CODE(dl_gap_r13.pack(bref)); + HANDLE_CODE(dl_carrier_freq_r13.pack(bref)); + HANDLE_CODE(pack_integer(bref, q_rx_lev_min_r13, (int8_t)-70, (int8_t)-22)); + if (q_qual_min_r13_present) { + HANDLE_CODE(pack_integer(bref, q_qual_min_r13, (int8_t)-34, (int8_t)-3)); + } + if (p_max_r13_present) { + HANDLE_CODE(pack_integer(bref, p_max_r13, (int8_t)-30, (int8_t)33)); + } + if (q_offset_freq_r13_present) { + HANDLE_CODE(q_offset_freq_r13.pack(bref)); + } + 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(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(0, 503))); + } + if (multi_band_info_list_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_r13, 1, 8)); } - HANDLE_CODE(ul_pwr_ctrl_common_r13.pack(bref)); if (ext) { ext_groups_packer_guard group_flags; - group_flags[0] |= nprach_cfg_v1330.is_present(); - group_flags[1] |= nprach_cfg_v1450.is_present(); - group_flags[2] |= nprach_cfg_v1530.is_present(); - 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[0] |= delta_rx_lev_min_v1350_present; + group_flags[1] |= pwr_class14dbm_offset_r14_present; + group_flags[1] |= ce_authorisation_offset_r14_present; + group_flags[2] |= nsss_rrm_cfg_r15.is_present(); + group_flags[2] |= inter_freq_neigh_cell_list_v1530.is_present(); + group_flags[3] |= dl_carrier_freq_v1550.is_present(); group_flags.pack(bref); if (group_flags[0]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(nprach_cfg_v1330.is_present(), 1)); - if (nprach_cfg_v1330.is_present()) { - HANDLE_CODE(nprach_cfg_v1330->pack(bref)); + HANDLE_CODE(bref.pack(delta_rx_lev_min_v1350_present, 1)); + if (delta_rx_lev_min_v1350_present) { + HANDLE_CODE(pack_integer(bref, delta_rx_lev_min_v1350, (int8_t)-8, (int8_t)-1)); } } if (group_flags[1]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(nprach_cfg_v1450.is_present(), 1)); - if (nprach_cfg_v1450.is_present()) { - HANDLE_CODE(nprach_cfg_v1450->pack(bref)); + HANDLE_CODE(bref.pack(pwr_class14dbm_offset_r14_present, 1)); + HANDLE_CODE(bref.pack(ce_authorisation_offset_r14_present, 1)); + if (pwr_class14dbm_offset_r14_present) { + HANDLE_CODE(pwr_class14dbm_offset_r14.pack(bref)); + } + if (ce_authorisation_offset_r14_present) { + HANDLE_CODE(ce_authorisation_offset_r14.pack(bref)); } } if (group_flags[2]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(nprach_cfg_v1530.is_present(), 1)); - HANDLE_CODE(bref.pack(dl_gap_v1530.is_present(), 1)); - HANDLE_CODE(bref.pack(wus_cfg_r15.is_present(), 1)); - if (nprach_cfg_v1530.is_present()) { - HANDLE_CODE(nprach_cfg_v1530->pack(bref)); - } - if (dl_gap_v1530.is_present()) { - HANDLE_CODE(dl_gap_v1530->pack(bref)); + HANDLE_CODE(bref.pack(nsss_rrm_cfg_r15.is_present(), 1)); + HANDLE_CODE(bref.pack(inter_freq_neigh_cell_list_v1530.is_present(), 1)); + if (nsss_rrm_cfg_r15.is_present()) { + HANDLE_CODE(nsss_rrm_cfg_r15->pack(bref)); } - if (wus_cfg_r15.is_present()) { - HANDLE_CODE(wus_cfg_r15->pack(bref)); + if (inter_freq_neigh_cell_list_v1530.is_present()) { + HANDLE_CODE(pack_dyn_seq_of(bref, *inter_freq_neigh_cell_list_v1530, 1, 16)); } } if (group_flags[3]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(nprach_cfg_v1550.is_present(), 1)); - if (nprach_cfg_v1550.is_present()) { - HANDLE_CODE(nprach_cfg_v1550->pack(bref)); + HANDLE_CODE(bref.pack(dl_carrier_freq_v1550.is_present(), 1)); + if (dl_carrier_freq_v1550.is_present()) { + HANDLE_CODE(dl_carrier_freq_v1550->pack(bref)); } } } return SRSASN_SUCCESS; } -SRSASN_CODE rr_cfg_common_sib_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::unpack(cbit_ref& bref) { bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(dl_gap_r13_present, 1)); + HANDLE_CODE(bref.unpack(q_qual_min_r13_present, 1)); + 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_excluded_cell_list_r13_present, 1)); + HANDLE_CODE(bref.unpack(multi_band_info_list_r13_present, 1)); - HANDLE_CODE(rach_cfg_common_r13.unpack(bref)); - HANDLE_CODE(bcch_cfg_r13.unpack(bref)); - HANDLE_CODE(pcch_cfg_r13.unpack(bref)); - HANDLE_CODE(nprach_cfg_r13.unpack(bref)); - HANDLE_CODE(npdsch_cfg_common_r13.unpack(bref)); - HANDLE_CODE(npusch_cfg_common_r13.unpack(bref)); - if (dl_gap_r13_present) { - HANDLE_CODE(dl_gap_r13.unpack(bref)); + HANDLE_CODE(dl_carrier_freq_r13.unpack(bref)); + HANDLE_CODE(unpack_integer(q_rx_lev_min_r13, bref, (int8_t)-70, (int8_t)-22)); + if (q_qual_min_r13_present) { + HANDLE_CODE(unpack_integer(q_qual_min_r13, bref, (int8_t)-34, (int8_t)-3)); + } + if (p_max_r13_present) { + HANDLE_CODE(unpack_integer(p_max_r13, bref, (int8_t)-30, (int8_t)33)); + } + if (q_offset_freq_r13_present) { + HANDLE_CODE(q_offset_freq_r13.unpack(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(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(0, 503))); + } + if (multi_band_info_list_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_r13, bref, 1, 8)); } - HANDLE_CODE(ul_pwr_ctrl_common_r13.unpack(bref)); if (ext) { ext_groups_unpacker_guard group_flags(4); @@ -8864,1038 +9849,1024 @@ SRSASN_CODE rr_cfg_common_sib_nb_r13_s::unpack(cbit_ref& bref) if (group_flags[0]) { varlength_field_unpack_guard varlen_scope(bref, false); - bool nprach_cfg_v1330_present; - HANDLE_CODE(bref.unpack(nprach_cfg_v1330_present, 1)); - nprach_cfg_v1330.set_present(nprach_cfg_v1330_present); - if (nprach_cfg_v1330.is_present()) { - HANDLE_CODE(nprach_cfg_v1330->unpack(bref)); + HANDLE_CODE(bref.unpack(delta_rx_lev_min_v1350_present, 1)); + if (delta_rx_lev_min_v1350_present) { + HANDLE_CODE(unpack_integer(delta_rx_lev_min_v1350, bref, (int8_t)-8, (int8_t)-1)); } } if (group_flags[1]) { varlength_field_unpack_guard varlen_scope(bref, false); - bool nprach_cfg_v1450_present; - HANDLE_CODE(bref.unpack(nprach_cfg_v1450_present, 1)); - nprach_cfg_v1450.set_present(nprach_cfg_v1450_present); - if (nprach_cfg_v1450.is_present()) { - HANDLE_CODE(nprach_cfg_v1450->unpack(bref)); + HANDLE_CODE(bref.unpack(pwr_class14dbm_offset_r14_present, 1)); + HANDLE_CODE(bref.unpack(ce_authorisation_offset_r14_present, 1)); + if (pwr_class14dbm_offset_r14_present) { + HANDLE_CODE(pwr_class14dbm_offset_r14.unpack(bref)); + } + if (ce_authorisation_offset_r14_present) { + HANDLE_CODE(ce_authorisation_offset_r14.unpack(bref)); } } if (group_flags[2]) { varlength_field_unpack_guard varlen_scope(bref, false); - bool nprach_cfg_v1530_present; - HANDLE_CODE(bref.unpack(nprach_cfg_v1530_present, 1)); - nprach_cfg_v1530.set_present(nprach_cfg_v1530_present); - bool dl_gap_v1530_present; - HANDLE_CODE(bref.unpack(dl_gap_v1530_present, 1)); - dl_gap_v1530.set_present(dl_gap_v1530_present); - bool wus_cfg_r15_present; - HANDLE_CODE(bref.unpack(wus_cfg_r15_present, 1)); - wus_cfg_r15.set_present(wus_cfg_r15_present); - if (nprach_cfg_v1530.is_present()) { - HANDLE_CODE(nprach_cfg_v1530->unpack(bref)); - } - if (dl_gap_v1530.is_present()) { - HANDLE_CODE(dl_gap_v1530->unpack(bref)); + bool nsss_rrm_cfg_r15_present; + HANDLE_CODE(bref.unpack(nsss_rrm_cfg_r15_present, 1)); + nsss_rrm_cfg_r15.set_present(nsss_rrm_cfg_r15_present); + bool inter_freq_neigh_cell_list_v1530_present; + HANDLE_CODE(bref.unpack(inter_freq_neigh_cell_list_v1530_present, 1)); + inter_freq_neigh_cell_list_v1530.set_present(inter_freq_neigh_cell_list_v1530_present); + if (nsss_rrm_cfg_r15.is_present()) { + HANDLE_CODE(nsss_rrm_cfg_r15->unpack(bref)); } - if (wus_cfg_r15.is_present()) { - HANDLE_CODE(wus_cfg_r15->unpack(bref)); + if (inter_freq_neigh_cell_list_v1530.is_present()) { + HANDLE_CODE(unpack_dyn_seq_of(*inter_freq_neigh_cell_list_v1530, bref, 1, 16)); } } if (group_flags[3]) { varlength_field_unpack_guard varlen_scope(bref, false); - bool nprach_cfg_v1550_present; - HANDLE_CODE(bref.unpack(nprach_cfg_v1550_present, 1)); - nprach_cfg_v1550.set_present(nprach_cfg_v1550_present); - if (nprach_cfg_v1550.is_present()) { - HANDLE_CODE(nprach_cfg_v1550->unpack(bref)); + bool dl_carrier_freq_v1550_present; + HANDLE_CODE(bref.unpack(dl_carrier_freq_v1550_present, 1)); + dl_carrier_freq_v1550.set_present(dl_carrier_freq_v1550_present); + if (dl_carrier_freq_v1550.is_present()) { + HANDLE_CODE(dl_carrier_freq_v1550->unpack(bref)); } } } return SRSASN_SUCCESS; } -void rr_cfg_common_sib_nb_r13_s::to_json(json_writer& j) const +void inter_freq_carrier_freq_info_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("rach-ConfigCommon-r13"); - rach_cfg_common_r13.to_json(j); - j.write_fieldname("bcch-Config-r13"); - bcch_cfg_r13.to_json(j); - j.write_fieldname("pcch-Config-r13"); - pcch_cfg_r13.to_json(j); - j.write_fieldname("nprach-Config-r13"); - nprach_cfg_r13.to_json(j); - j.write_fieldname("npdsch-ConfigCommon-r13"); - npdsch_cfg_common_r13.to_json(j); - j.write_fieldname("npusch-ConfigCommon-r13"); - npusch_cfg_common_r13.to_json(j); - if (dl_gap_r13_present) { - j.write_fieldname("dl-Gap-r13"); - dl_gap_r13.to_json(j); + j.write_fieldname("dl-CarrierFreq-r13"); + dl_carrier_freq_r13.to_json(j); + j.write_int("q-RxLevMin-r13", q_rx_lev_min_r13); + if (q_qual_min_r13_present) { + j.write_int("q-QualMin-r13", q_qual_min_r13); + } + if (p_max_r13_present) { + j.write_int("p-Max-r13", p_max_r13); + } + if (q_offset_freq_r13_present) { + j.write_str("q-OffsetFreq-r13", q_offset_freq_r13.to_string()); + } + if (inter_freq_neigh_cell_list_r13_present) { + j.start_array("interFreqNeighCellList-r13"); + for (const auto& e1 : inter_freq_neigh_cell_list_r13) { + j.write_int(e1); + } + j.end_array(); + } + 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(); + } + if (multi_band_info_list_r13_present) { + j.start_array("multiBandInfoList-r13"); + for (const auto& e1 : multi_band_info_list_r13) { + e1.to_json(j); + } + j.end_array(); } - j.write_fieldname("uplinkPowerControlCommon-r13"); - ul_pwr_ctrl_common_r13.to_json(j); if (ext) { - if (nprach_cfg_v1330.is_present()) { - j.write_fieldname("nprach-Config-v1330"); - nprach_cfg_v1330->to_json(j); + if (delta_rx_lev_min_v1350_present) { + j.write_int("delta-RxLevMin-v1350", delta_rx_lev_min_v1350); } - if (nprach_cfg_v1450.is_present()) { - j.write_fieldname("nprach-Config-v1450"); - nprach_cfg_v1450->to_json(j); + if (pwr_class14dbm_offset_r14_present) { + j.write_str("powerClass14dBm-Offset-r14", pwr_class14dbm_offset_r14.to_string()); } - if (nprach_cfg_v1530.is_present()) { - j.write_fieldname("nprach-Config-v1530"); - nprach_cfg_v1530->to_json(j); + if (ce_authorisation_offset_r14_present) { + j.write_str("ce-AuthorisationOffset-r14", ce_authorisation_offset_r14.to_string()); } - if (dl_gap_v1530.is_present()) { - j.write_fieldname("dl-Gap-v1530"); - dl_gap_v1530->to_json(j); + if (nsss_rrm_cfg_r15.is_present()) { + j.write_fieldname("nsss-RRM-Config-r15"); + nsss_rrm_cfg_r15->to_json(j); } - if (wus_cfg_r15.is_present()) { - j.write_fieldname("wus-Config-r15"); - wus_cfg_r15->to_json(j); + if (inter_freq_neigh_cell_list_v1530.is_present()) { + j.start_array("interFreqNeighCellList-v1530"); + for (const auto& e1 : *inter_freq_neigh_cell_list_v1530) { + e1.to_json(j); + } + j.end_array(); } - if (nprach_cfg_v1550.is_present()) { - j.write_fieldname("nprach-Config-v1550"); - nprach_cfg_v1550->to_json(j); + if (dl_carrier_freq_v1550.is_present()) { + j.write_fieldname("dl-CarrierFreq-v1550"); + dl_carrier_freq_v1550->to_json(j); } } j.end_obj(); } -// SC-MCCH-SchedulingInfo-NB-r14 ::= SEQUENCE -SRSASN_CODE sc_mcch_sched_info_nb_r14_s::pack(bit_ref& bref) const +const char* inter_freq_carrier_freq_info_nb_r13_s::pwr_class14dbm_offset_r14_opts::to_string() const { - bref.pack(ext, 1); - HANDLE_CODE(on_dur_timer_scptm_r14.pack(bref)); - HANDLE_CODE(drx_inactivity_timer_scptm_r14.pack(bref)); - HANDLE_CODE(sched_period_start_offset_scptm_r14.pack(bref)); + static const char* options[] = {"dB-6", "dB-3", "dB3", "dB6", "dB9", "dB12"}; + return convert_enum_idx(options, 6, value, "inter_freq_carrier_freq_info_nb_r13_s::pwr_class14dbm_offset_r14_e_"); +} +int8_t inter_freq_carrier_freq_info_nb_r13_s::pwr_class14dbm_offset_r14_opts::to_number() const +{ + static const int8_t options[] = {-6, -3, 3, 6, 9, 12}; + return map_enum_number(options, 6, value, "inter_freq_carrier_freq_info_nb_r13_s::pwr_class14dbm_offset_r14_e_"); +} + +const char* inter_freq_carrier_freq_info_nb_r13_s::ce_authorisation_offset_r14_opts::to_string() const +{ + static const char* options[] = {"dB5", "dB10", "dB15", "dB20", "dB25", "dB30", "dB35"}; + return convert_enum_idx(options, 7, value, "inter_freq_carrier_freq_info_nb_r13_s::ce_authorisation_offset_r14_e_"); +} +uint8_t inter_freq_carrier_freq_info_nb_r13_s::ce_authorisation_offset_r14_opts::to_number() const +{ + static const uint8_t options[] = {5, 10, 15, 20, 25, 30, 35}; + return map_enum_number(options, 7, value, "inter_freq_carrier_freq_info_nb_r13_s::ce_authorisation_offset_r14_e_"); +} + +// IntraFreqNeighCellInfo-NB-v1530 ::= SEQUENCE +SRSASN_CODE intra_freq_neigh_cell_info_nb_v1530_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(nsss_rrm_cfg_r15_present, 1)); + + if (nsss_rrm_cfg_r15_present) { + HANDLE_CODE(nsss_rrm_cfg_r15.pack(bref)); + } return SRSASN_SUCCESS; } -SRSASN_CODE sc_mcch_sched_info_nb_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE intra_freq_neigh_cell_info_nb_v1530_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(on_dur_timer_scptm_r14.unpack(bref)); - HANDLE_CODE(drx_inactivity_timer_scptm_r14.unpack(bref)); - HANDLE_CODE(sched_period_start_offset_scptm_r14.unpack(bref)); + HANDLE_CODE(bref.unpack(nsss_rrm_cfg_r15_present, 1)); + + if (nsss_rrm_cfg_r15_present) { + HANDLE_CODE(nsss_rrm_cfg_r15.unpack(bref)); + } return SRSASN_SUCCESS; } -void sc_mcch_sched_info_nb_r14_s::to_json(json_writer& j) const +void intra_freq_neigh_cell_info_nb_v1530_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("onDurationTimerSCPTM-r14", on_dur_timer_scptm_r14.to_string()); - j.write_str("drx-InactivityTimerSCPTM-r14", drx_inactivity_timer_scptm_r14.to_string()); - j.write_fieldname("schedulingPeriodStartOffsetSCPTM-r14"); - sched_period_start_offset_scptm_r14.to_json(j); + if (nsss_rrm_cfg_r15_present) { + j.write_fieldname("nsss-RRM-Config-r15"); + nsss_rrm_cfg_r15.to_json(j); + } j.end_obj(); } -const char* sc_mcch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_opts::to_string() const +// MBMS-SAI-InterFreq-NB-r14 ::= SEQUENCE +SRSASN_CODE mbms_sai_inter_freq_nb_r14_s::pack(bit_ref& bref) const { - static const char* options[] = {"pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32", "spare"}; - return convert_enum_idx(options, 8, value, "sc_mcch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_e_"); + HANDLE_CODE(bref.pack(multi_band_info_list_r14_present, 1)); + + HANDLE_CODE(dl_carrier_freq_r14.pack(bref)); + HANDLE_CODE(pack_dyn_seq_of(bref, mbms_sai_list_r14, 1, 64, integer_packer(0, 65535))); + if (multi_band_info_list_r14_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_r14, 1, 8, integer_packer(1, 256))); + } + + return SRSASN_SUCCESS; } -uint8_t sc_mcch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_opts::to_number() const +SRSASN_CODE mbms_sai_inter_freq_nb_r14_s::unpack(cbit_ref& bref) { - static const uint8_t options[] = {1, 2, 3, 4, 8, 16, 32}; - return map_enum_number(options, 7, value, "sc_mcch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_e_"); + HANDLE_CODE(bref.unpack(multi_band_info_list_r14_present, 1)); + + HANDLE_CODE(dl_carrier_freq_r14.unpack(bref)); + HANDLE_CODE(unpack_dyn_seq_of(mbms_sai_list_r14, bref, 1, 64, integer_packer(0, 65535))); + if (multi_band_info_list_r14_present) { + HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_r14, bref, 1, 8, integer_packer(1, 256))); + } + + return SRSASN_SUCCESS; +} +void mbms_sai_inter_freq_nb_r14_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("dl-CarrierFreq-r14"); + dl_carrier_freq_r14.to_json(j); + j.start_array("mbms-SAI-List-r14"); + for (const auto& e1 : mbms_sai_list_r14) { + j.write_int(e1); + } + j.end_array(); + if (multi_band_info_list_r14_present) { + j.start_array("multiBandInfoList-r14"); + for (const auto& e1 : multi_band_info_list_r14) { + j.write_int(e1); + } + j.end_array(); + } + j.end_obj(); } -const char* sc_mcch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_opts::to_string() const +// NPDSCH-ConfigCommon-NB-r13 ::= SEQUENCE +SRSASN_CODE npdsch_cfg_common_nb_r13_s::pack(bit_ref& bref) const { - static const char* options[] = {"pp0", "pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32"}; - return convert_enum_idx(options, 8, value, "sc_mcch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_e_"); + HANDLE_CODE(pack_integer(bref, nrs_pwr_r13, (int8_t)-60, (int8_t)50)); + + return SRSASN_SUCCESS; } -uint8_t sc_mcch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_opts::to_number() const +SRSASN_CODE npdsch_cfg_common_nb_r13_s::unpack(cbit_ref& bref) { - static const uint8_t options[] = {0, 1, 2, 3, 4, 8, 16, 32}; - return map_enum_number(options, 8, value, "sc_mcch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_e_"); + HANDLE_CODE(unpack_integer(nrs_pwr_r13, bref, (int8_t)-60, (int8_t)50)); + + return SRSASN_SUCCESS; +} +void npdsch_cfg_common_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("nrs-Power-r13", nrs_pwr_r13); + j.end_obj(); } -void sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::destroy_() {} -void sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set(types::options e) +// NPRACH-ConfigSIB-NB-r13 ::= SEQUENCE +SRSASN_CODE nprach_cfg_sib_nb_r13_s::pack(bit_ref& bref) const { - destroy_(); - type_ = e; + HANDLE_CODE(bref.pack(rsrp_thress_prach_info_list_r13_present, 1)); + + HANDLE_CODE(nprach_cp_len_r13.pack(bref)); + if (rsrp_thress_prach_info_list_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, rsrp_thress_prach_info_list_r13, 1, 2, integer_packer(0, 97))); + } + HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_r13, 1, 3)); + + return SRSASN_SUCCESS; } -sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::sched_period_start_offset_scptm_r14_c_( - const sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& other) +SRSASN_CODE nprach_cfg_sib_nb_r13_s::unpack(cbit_ref& bref) { - type_ = other.type(); - switch (type_) { - case types::sf10: - c.init(other.c.get()); - break; - case types::sf20: - c.init(other.c.get()); - break; - case types::sf32: - c.init(other.c.get()); - break; - case types::sf40: - c.init(other.c.get()); - break; - case types::sf64: - c.init(other.c.get()); - break; - case types::sf80: - c.init(other.c.get()); - break; - case types::sf128: - c.init(other.c.get()); - break; - case types::sf160: - c.init(other.c.get()); - break; - case types::sf256: - c.init(other.c.get()); - break; - case types::sf320: - c.init(other.c.get()); - break; - case types::sf512: - c.init(other.c.get()); - break; - case types::sf640: - c.init(other.c.get()); - break; - case types::sf1024: - c.init(other.c.get()); - break; - case types::sf2048: - c.init(other.c.get()); - break; - case types::sf4096: - c.init(other.c.get()); - break; - case types::sf8192: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + HANDLE_CODE(bref.unpack(rsrp_thress_prach_info_list_r13_present, 1)); + + HANDLE_CODE(nprach_cp_len_r13.unpack(bref)); + if (rsrp_thress_prach_info_list_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(rsrp_thress_prach_info_list_r13, bref, 1, 2, integer_packer(0, 97))); } + HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_r13, bref, 1, 3)); + + return SRSASN_SUCCESS; } -sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& -sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::operator=( - const sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& other) +void nprach_cfg_sib_nb_r13_s::to_json(json_writer& j) const { - if (this == &other) { - return *this; + j.start_obj(); + j.write_str("nprach-CP-Length-r13", nprach_cp_len_r13.to_string()); + if (rsrp_thress_prach_info_list_r13_present) { + j.start_array("rsrp-ThresholdsPrachInfoList-r13"); + for (const auto& e1 : rsrp_thress_prach_info_list_r13) { + j.write_int(e1); + } + j.end_array(); } - set(other.type()); - switch (type_) { - case types::sf10: - c.set(other.c.get()); - break; - case types::sf20: - c.set(other.c.get()); - break; - case types::sf32: - c.set(other.c.get()); - break; - case types::sf40: - c.set(other.c.get()); - break; - case types::sf64: - c.set(other.c.get()); - break; - case types::sf80: - c.set(other.c.get()); - break; - case types::sf128: - c.set(other.c.get()); - break; - case types::sf160: - c.set(other.c.get()); - break; - case types::sf256: - c.set(other.c.get()); - break; - case types::sf320: - c.set(other.c.get()); - break; - case types::sf512: - c.set(other.c.get()); - break; - case types::sf640: - c.set(other.c.get()); - break; - case types::sf1024: - c.set(other.c.get()); - break; - case types::sf2048: - c.set(other.c.get()); - break; - case types::sf4096: - c.set(other.c.get()); - break; - case types::sf8192: - c.set(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + j.start_array("nprach-ParametersList-r13"); + for (const auto& e1 : nprach_params_list_r13) { + e1.to_json(j); } - - return *this; + j.end_array(); + j.end_obj(); } -uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf10() + +const char* nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_opts::to_string() const { - set(types::sf10); - return c.get(); + static const char* options[] = {"us66dot7", "us266dot7"}; + return convert_enum_idx(options, 2, value, "nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_e_"); } -uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf20() +float nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_opts::to_number() const { - set(types::sf20); - return c.get(); + static const float options[] = {66.7, 266.7}; + return map_enum_number(options, 2, value, "nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_e_"); } -uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf32() +const char* nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_opts::to_number_string() const { - set(types::sf32); - return c.get(); + static const char* options[] = {"66.7", "266.7"}; + return convert_enum_idx(options, 2, value, "nprach_cfg_sib_nb_r13_s::nprach_cp_len_r13_e_"); } -uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf40() + +// NPRACH-ConfigSIB-NB-v1330 ::= SEQUENCE +SRSASN_CODE nprach_cfg_sib_nb_v1330_s::pack(bit_ref& bref) const { - set(types::sf40); - return c.get(); + HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_v1330, 1, 3)); + + return SRSASN_SUCCESS; } -uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf64() +SRSASN_CODE nprach_cfg_sib_nb_v1330_s::unpack(cbit_ref& bref) { - set(types::sf64); - return c.get(); + HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_v1330, bref, 1, 3)); + + return SRSASN_SUCCESS; } -uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf80() +void nprach_cfg_sib_nb_v1330_s::to_json(json_writer& j) const { - set(types::sf80); - return c.get(); + j.start_obj(); + j.start_array("nprach-ParametersList-v1330"); + for (const auto& e1 : nprach_params_list_v1330) { + e1.to_json(j); + } + j.end_array(); + j.end_obj(); } -uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf128() + +// NPRACH-ConfigSIB-NB-v1450 ::= SEQUENCE +SRSASN_CODE nprach_cfg_sib_nb_v1450_s::pack(bit_ref& bref) const { - set(types::sf128); - return c.get(); + HANDLE_CODE(max_num_preamb_attempt_ce_r14.pack(bref)); + + return SRSASN_SUCCESS; } -uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf160() +SRSASN_CODE nprach_cfg_sib_nb_v1450_s::unpack(cbit_ref& bref) { - set(types::sf160); - return c.get(); + HANDLE_CODE(max_num_preamb_attempt_ce_r14.unpack(bref)); + + return SRSASN_SUCCESS; } -uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf256() +void nprach_cfg_sib_nb_v1450_s::to_json(json_writer& j) const { - set(types::sf256); - return c.get(); + j.start_obj(); + j.write_str("maxNumPreambleAttemptCE-r14", max_num_preamb_attempt_ce_r14.to_string()); + j.end_obj(); } -uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf320() + +const char* nprach_cfg_sib_nb_v1450_s::max_num_preamb_attempt_ce_r14_opts::to_string() const { - set(types::sf320); - return c.get(); + static const char* options[] = {"n3", "n4", "n5", "n6", "n7", "n8", "n10", "spare1"}; + return convert_enum_idx(options, 8, value, "nprach_cfg_sib_nb_v1450_s::max_num_preamb_attempt_ce_r14_e_"); } -uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf512() +uint8_t nprach_cfg_sib_nb_v1450_s::max_num_preamb_attempt_ce_r14_opts::to_number() const { - set(types::sf512); - return c.get(); + static const uint8_t options[] = {3, 4, 5, 6, 7, 8, 10}; + return map_enum_number(options, 7, value, "nprach_cfg_sib_nb_v1450_s::max_num_preamb_attempt_ce_r14_e_"); } -uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf640() + +// NPRACH-ConfigSIB-NB-v1530 ::= SEQUENCE +SRSASN_CODE nprach_cfg_sib_nb_v1530_s::pack(bit_ref& bref) const { - set(types::sf640); - return c.get(); + HANDLE_CODE(bref.pack(tdd_params_r15_present, 1)); + HANDLE_CODE(bref.pack(fmt2_params_r15_present, 1)); + HANDLE_CODE(bref.pack(edt_params_r15_present, 1)); + + if (tdd_params_r15_present) { + HANDLE_CODE(tdd_params_r15.nprach_preamb_format_r15.pack(bref)); + HANDLE_CODE(tdd_params_r15.dummy.pack(bref)); + HANDLE_CODE(pack_dyn_seq_of(bref, tdd_params_r15.nprach_params_list_tdd_r15, 1, 3)); + } + if (fmt2_params_r15_present) { + HANDLE_CODE(bref.pack(fmt2_params_r15.nprach_params_list_fmt2_r15_present, 1)); + HANDLE_CODE(bref.pack(fmt2_params_r15.nprach_params_list_fmt2_edt_r15_present, 1)); + if (fmt2_params_r15.nprach_params_list_fmt2_r15_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, fmt2_params_r15.nprach_params_list_fmt2_r15, 1, 3)); + } + if (fmt2_params_r15.nprach_params_list_fmt2_edt_r15_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, fmt2_params_r15.nprach_params_list_fmt2_edt_r15, 1, 3)); + } + } + if (edt_params_r15_present) { + HANDLE_CODE(bref.pack(edt_params_r15.edt_small_tbs_subset_r15_present, 1)); + HANDLE_CODE(bref.pack(edt_params_r15.nprach_params_list_edt_r15_present, 1)); + HANDLE_CODE(pack_dyn_seq_of(bref, edt_params_r15.edt_tbs_info_list_r15, 1, 3)); + if (edt_params_r15.nprach_params_list_edt_r15_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, edt_params_r15.nprach_params_list_edt_r15, 1, 3)); + } + } + + return SRSASN_SUCCESS; } -uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf1024() +SRSASN_CODE nprach_cfg_sib_nb_v1530_s::unpack(cbit_ref& bref) { - set(types::sf1024); - return c.get(); + HANDLE_CODE(bref.unpack(tdd_params_r15_present, 1)); + HANDLE_CODE(bref.unpack(fmt2_params_r15_present, 1)); + HANDLE_CODE(bref.unpack(edt_params_r15_present, 1)); + + if (tdd_params_r15_present) { + HANDLE_CODE(tdd_params_r15.nprach_preamb_format_r15.unpack(bref)); + HANDLE_CODE(tdd_params_r15.dummy.unpack(bref)); + HANDLE_CODE(unpack_dyn_seq_of(tdd_params_r15.nprach_params_list_tdd_r15, bref, 1, 3)); + } + if (fmt2_params_r15_present) { + HANDLE_CODE(bref.unpack(fmt2_params_r15.nprach_params_list_fmt2_r15_present, 1)); + HANDLE_CODE(bref.unpack(fmt2_params_r15.nprach_params_list_fmt2_edt_r15_present, 1)); + if (fmt2_params_r15.nprach_params_list_fmt2_r15_present) { + HANDLE_CODE(unpack_dyn_seq_of(fmt2_params_r15.nprach_params_list_fmt2_r15, bref, 1, 3)); + } + if (fmt2_params_r15.nprach_params_list_fmt2_edt_r15_present) { + HANDLE_CODE(unpack_dyn_seq_of(fmt2_params_r15.nprach_params_list_fmt2_edt_r15, bref, 1, 3)); + } + } + if (edt_params_r15_present) { + HANDLE_CODE(bref.unpack(edt_params_r15.edt_small_tbs_subset_r15_present, 1)); + HANDLE_CODE(bref.unpack(edt_params_r15.nprach_params_list_edt_r15_present, 1)); + HANDLE_CODE(unpack_dyn_seq_of(edt_params_r15.edt_tbs_info_list_r15, bref, 1, 3)); + if (edt_params_r15.nprach_params_list_edt_r15_present) { + HANDLE_CODE(unpack_dyn_seq_of(edt_params_r15.nprach_params_list_edt_r15, bref, 1, 3)); + } + } + + return SRSASN_SUCCESS; } -uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf2048() +void nprach_cfg_sib_nb_v1530_s::to_json(json_writer& j) const { - set(types::sf2048); - return c.get(); + j.start_obj(); + if (tdd_params_r15_present) { + j.write_fieldname("tdd-Parameters-r15"); + j.start_obj(); + j.write_str("nprach-PreambleFormat-r15", tdd_params_r15.nprach_preamb_format_r15.to_string()); + j.write_str("dummy", tdd_params_r15.dummy.to_string()); + j.start_array("nprach-ParametersListTDD-r15"); + for (const auto& e1 : tdd_params_r15.nprach_params_list_tdd_r15) { + e1.to_json(j); + } + j.end_array(); + j.end_obj(); + } + if (fmt2_params_r15_present) { + j.write_fieldname("fmt2-Parameters-r15"); + j.start_obj(); + if (fmt2_params_r15.nprach_params_list_fmt2_r15_present) { + j.start_array("nprach-ParametersListFmt2-r15"); + for (const auto& e1 : fmt2_params_r15.nprach_params_list_fmt2_r15) { + e1.to_json(j); + } + j.end_array(); + } + if (fmt2_params_r15.nprach_params_list_fmt2_edt_r15_present) { + j.start_array("nprach-ParametersListFmt2EDT-r15"); + for (const auto& e1 : fmt2_params_r15.nprach_params_list_fmt2_edt_r15) { + e1.to_json(j); + } + j.end_array(); + } + j.end_obj(); + } + if (edt_params_r15_present) { + j.write_fieldname("edt-Parameters-r15"); + j.start_obj(); + if (edt_params_r15.edt_small_tbs_subset_r15_present) { + j.write_str("edt-SmallTBS-Subset-r15", "true"); + } + j.start_array("edt-TBS-InfoList-r15"); + for (const auto& e1 : edt_params_r15.edt_tbs_info_list_r15) { + e1.to_json(j); + } + j.end_array(); + if (edt_params_r15.nprach_params_list_edt_r15_present) { + j.start_array("nprach-ParametersListEDT-r15"); + for (const auto& e1 : edt_params_r15.nprach_params_list_edt_r15) { + e1.to_json(j); + } + j.end_array(); + } + j.end_obj(); + } + j.end_obj(); } -uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf4096() + +const char* nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::nprach_preamb_format_r15_opts::to_string() const { - set(types::sf4096); - return c.get(); + static const char* options[] = {"fmt0", "fmt1", "fmt2", "fmt0-a", "fmt1-a"}; + return convert_enum_idx( + options, 5, value, "nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::nprach_preamb_format_r15_e_"); } -uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf8192() + +const char* nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::dummy_opts::to_string() const { - set(types::sf8192); - return c.get(); + static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32", "n64", "n128", "n256", "n512", "n1024"}; + return convert_enum_idx(options, 11, value, "nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::dummy_e_"); } -void sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::to_json(json_writer& j) const +uint16_t nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::dummy_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, "nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::dummy_e_"); +} + +// NPRACH-ConfigSIB-NB-v1550 ::= SEQUENCE +SRSASN_CODE nprach_cfg_sib_nb_v1550_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_dyn_seq_of(bref, tdd_params_v1550.nprach_params_list_tdd_v1550, 1, 3)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE nprach_cfg_sib_nb_v1550_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_dyn_seq_of(tdd_params_v1550.nprach_params_list_tdd_v1550, bref, 1, 3)); + + return SRSASN_SUCCESS; +} +void nprach_cfg_sib_nb_v1550_s::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::sf10: - j.write_int("sf10", c.get()); - break; - case types::sf20: - j.write_int("sf20", c.get()); - break; - case types::sf32: - j.write_int("sf32", c.get()); - break; - case types::sf40: - j.write_int("sf40", c.get()); - break; - case types::sf64: - j.write_int("sf64", c.get()); - break; - case types::sf80: - j.write_int("sf80", c.get()); - break; - case types::sf128: - j.write_int("sf128", c.get()); - break; - case types::sf160: - j.write_int("sf160", c.get()); - break; - case types::sf256: - j.write_int("sf256", c.get()); - break; - case types::sf320: - j.write_int("sf320", c.get()); - break; - case types::sf512: - j.write_int("sf512", c.get()); - break; - case types::sf640: - j.write_int("sf640", c.get()); - break; - case types::sf1024: - j.write_int("sf1024", c.get()); - break; - case types::sf2048: - j.write_int("sf2048", c.get()); - break; - case types::sf4096: - j.write_int("sf4096", c.get()); - break; - case types::sf8192: - j.write_int("sf8192", c.get()); - break; - default: - log_invalid_choice_id(type_, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + j.write_fieldname("tdd-Parameters-v1550"); + j.start_obj(); + j.start_array("nprach-ParametersListTDD-v1550"); + for (const auto& e1 : tdd_params_v1550.nprach_params_list_tdd_v1550) { + e1.to_json(j); } + j.end_array(); + j.end_obj(); j.end_obj(); } -SRSASN_CODE sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::pack(bit_ref& bref) const + +// NPRACH-ProbabilityAnchor-NB-r14 ::= SEQUENCE +SRSASN_CODE nprach_probability_anchor_nb_r14_s::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::sf10: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)9u)); - break; - case types::sf20: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)19u)); - break; - case types::sf32: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)31u)); - break; - case types::sf40: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)39u)); - break; - case types::sf64: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)63u)); - break; - case types::sf80: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)79u)); - break; - case types::sf128: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); - break; - case types::sf160: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)159u)); - break; - case types::sf256: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)255u)); - break; - case types::sf320: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)319u)); - break; - case types::sf512: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)511u)); - break; - case types::sf640: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)639u)); - break; - case types::sf1024: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)1023u)); - break; - case types::sf2048: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)2047u)); - break; - case types::sf4096: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)4095u)); - break; - case types::sf8192: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)8191u)); - break; - default: - log_invalid_choice_id(type_, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); - return SRSASN_ERROR_ENCODE_FAIL; + HANDLE_CODE(bref.pack(nprach_probability_anchor_r14_present, 1)); + + if (nprach_probability_anchor_r14_present) { + HANDLE_CODE(nprach_probability_anchor_r14.pack(bref)); } + return SRSASN_SUCCESS; } -SRSASN_CODE sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::unpack(cbit_ref& bref) +SRSASN_CODE nprach_probability_anchor_nb_r14_s::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::sf10: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)9u)); - break; - case types::sf20: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)19u)); - break; - case types::sf32: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)31u)); - break; - case types::sf40: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)39u)); - break; - case types::sf64: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)63u)); - break; - case types::sf80: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)79u)); - break; - case types::sf128: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); - break; - case types::sf160: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)159u)); - break; - case types::sf256: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)255u)); - break; - case types::sf320: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)319u)); - break; - case types::sf512: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)511u)); - break; - case types::sf640: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)639u)); - break; - case types::sf1024: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)1023u)); - break; - case types::sf2048: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)2047u)); - break; - case types::sf4096: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)4095u)); - break; - case types::sf8192: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)8191u)); - break; - default: - log_invalid_choice_id(type_, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); - return SRSASN_ERROR_DECODE_FAIL; + HANDLE_CODE(bref.unpack(nprach_probability_anchor_r14_present, 1)); + + if (nprach_probability_anchor_r14_present) { + HANDLE_CODE(nprach_probability_anchor_r14.unpack(bref)); } + return SRSASN_SUCCESS; } +void nprach_probability_anchor_nb_r14_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (nprach_probability_anchor_r14_present) { + j.write_str("nprach-ProbabilityAnchor-r14", nprach_probability_anchor_r14.to_string()); + } + j.end_obj(); +} -const char* sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types_opts::to_string() const +const char* nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_opts::to_string() const { - static const char* options[] = {"sf10", - "sf20", - "sf32", - "sf40", - "sf64", - "sf80", - "sf128", - "sf160", - "sf256", - "sf320", - "sf512", - "sf640", - "sf1024", - "sf2048", - "sf4096", - "sf8192"}; - return convert_enum_idx( - options, 16, value, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types"); + static const char* options[] = {"zero", + "oneSixteenth", + "oneFifteenth", + "oneFourteenth", + "oneThirteenth", + "oneTwelfth", + "oneEleventh", + "oneTenth", + "oneNinth", + "oneEighth", + "oneSeventh", + "oneSixth", + "oneFifth", + "oneFourth", + "oneThird", + "oneHalf"}; + return convert_enum_idx(options, 16, value, "nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_e_"); } -uint16_t sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types_opts::to_number() const +float nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_opts::to_number() const { - static const uint16_t options[] = {10, 20, 32, 40, 64, 80, 128, 160, 256, 320, 512, 640, 1024, 2048, 4096, 8192}; - return map_enum_number( - options, 16, value, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types"); + static const float options[] = {0.0, + 0.0625, + 0.06666666666666667, + 0.07142857142857142, + 0.07692307692307693, + 0.08333333333333333, + 0.09090909090909091, + 0.1, + 0.1111111111111111, + 0.125, + 0.14285714285714285, + 0.16666666666666666, + 0.2, + 0.25, + 0.3333333333333333, + 0.5}; + return map_enum_number(options, 16, value, "nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_e_"); } - -// SystemInformationBlockType1-NB-v1450 ::= SEQUENCE -SRSASN_CODE sib_type1_nb_v1450_s::pack(bit_ref& bref) const +const char* nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_opts::to_number_string() const { - HANDLE_CODE(bref.pack(nrs_crs_pwr_offset_v1450_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + static const char* options[] = {"0", + "1/16", + "1/15", + "1/14", + "1/13", + "1/12", + "1/11", + "1/10", + "1/9", + "1/8", + "1/7", + "1/6", + "1/5", + "1/4", + "1/3", + "1/2"}; + return convert_enum_idx(options, 16, value, "nprach_probability_anchor_nb_r14_s::nprach_probability_anchor_r14_e_"); +} - if (nrs_crs_pwr_offset_v1450_present) { - HANDLE_CODE(nrs_crs_pwr_offset_v1450.pack(bref)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.pack(bref)); - } +// 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 sib_type1_nb_v1450_s::unpack(cbit_ref& bref) +SRSASN_CODE nprach_tx_dur_fmt01_nb_r17_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(nrs_crs_pwr_offset_v1450_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - if (nrs_crs_pwr_offset_v1450_present) { - HANDLE_CODE(nrs_crs_pwr_offset_v1450.unpack(bref)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); - } + HANDLE_CODE(nprach_tx_dur_fmt01_r17.unpack(bref)); return SRSASN_SUCCESS; } -void sib_type1_nb_v1450_s::to_json(json_writer& j) const +void nprach_tx_dur_fmt01_nb_r17_s::to_json(json_writer& j) const { j.start_obj(); - if (nrs_crs_pwr_offset_v1450_present) { - j.write_str("nrs-CRS-PowerOffset-v1450", nrs_crs_pwr_offset_v1450.to_string()); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); - } + j.write_str("nprach-TxDurationFmt01-r17", nprach_tx_dur_fmt01_r17.to_string()); j.end_obj(); } -const char* sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_opts::to_string() const +const char* nprach_tx_dur_fmt01_nb_r17_s::nprach_tx_dur_fmt01_r17_opts::to_string() const { - static const char* options[] = {"dB-6", - "dB-4dot77", - "dB-3", - "dB-1dot77", - "dB0", - "dB1", - "dB1dot23", - "dB2", - "dB3", - "dB4", - "dB4dot23", - "dB5", - "dB6", - "dB7", - "dB8", - "dB9"}; - return convert_enum_idx(options, 16, value, "sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_e_"); + 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_"); } -float sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_opts::to_number() const +uint8_t nprach_tx_dur_fmt01_nb_r17_s::nprach_tx_dur_fmt01_r17_opts::to_number() const { - static const float options[] = { - -6.0, -4.77, -3.0, -1.77, 0.0, 1.0, 1.23, 2.0, 3.0, 4.0, 4.23, 5.0, 6.0, 7.0, 8.0, 9.0}; - return map_enum_number(options, 16, value, "sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_e_"); + 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_"); } -const char* sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_opts::to_number_string() const + +// NPRACH-TxDurationFmt2-NB-r17 ::= SEQUENCE +SRSASN_CODE nprach_tx_dur_fmt2_nb_r17_s::pack(bit_ref& bref) const { - static const char* options[] = { - "-6", "-4.77", "-3", "-1.77", "0", "1", "1.23", "2", "3", "4", "4.23", "5", "6", "7", "8", "9"}; - return convert_enum_idx(options, 16, value, "sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_e_"); -} + HANDLE_CODE(nprach_tx_dur_fmt2_r17.pack(bref)); -// T-Reselection-NB-r13 ::= ENUMERATED -const char* t_resel_nb_r13_opts::to_string() const + return SRSASN_SUCCESS; +} +SRSASN_CODE nprach_tx_dur_fmt2_nb_r17_s::unpack(cbit_ref& bref) { - static const char* options[] = {"s0", "s3", "s6", "s9", "s12", "s15", "s18", "s21"}; - return convert_enum_idx(options, 8, value, "t_resel_nb_r13_e"); + HANDLE_CODE(nprach_tx_dur_fmt2_r17.unpack(bref)); + + return SRSASN_SUCCESS; } -uint8_t t_resel_nb_r13_opts::to_number() const +void nprach_tx_dur_fmt2_nb_r17_s::to_json(json_writer& j) const { - static const uint8_t options[] = {0, 3, 6, 9, 12, 15, 18, 21}; - return map_enum_number(options, 8, value, "t_resel_nb_r13_e"); + j.start_obj(); + j.write_str("nprach-TxDurationFmt2-r17", nprach_tx_dur_fmt2_r17.to_string()); + j.end_obj(); } -// UE-TimersAndConstants-NB-r13 ::= SEQUENCE -SRSASN_CODE ue_timers_and_consts_nb_r13_s::pack(bit_ref& bref) const +const char* nprach_tx_dur_fmt2_nb_r17_s::nprach_tx_dur_fmt2_r17_opts::to_string() const { - bref.pack(ext, 1); - HANDLE_CODE(t300_r13.pack(bref)); - HANDLE_CODE(t301_r13.pack(bref)); - HANDLE_CODE(t310_r13.pack(bref)); - HANDLE_CODE(n310_r13.pack(bref)); - HANDLE_CODE(t311_r13.pack(bref)); - HANDLE_CODE(n311_r13.pack(bref)); - - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= t311_v1350_present; - group_flags[1] |= t300_v1530_present; - group_flags[1] |= t301_v1530_present; - group_flags[1] |= t311_v1530_present; - group_flags[1] |= t300_r15_present; - group_flags.pack(bref); + 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_"); +} - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); +// NPUSCH-ConfigCommon-NB-r13 ::= SEQUENCE +SRSASN_CODE npusch_cfg_common_nb_r13_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(srs_sf_cfg_r13_present, 1)); + HANDLE_CODE(bref.pack(dmrs_cfg_r13_present, 1)); - HANDLE_CODE(bref.pack(t311_v1350_present, 1)); - if (t311_v1350_present) { - HANDLE_CODE(t311_v1350.pack(bref)); - } + HANDLE_CODE(pack_dyn_seq_of(bref, ack_nack_num_repeats_msg4_r13, 1, 3)); + if (srs_sf_cfg_r13_present) { + HANDLE_CODE(srs_sf_cfg_r13.pack(bref)); + } + if (dmrs_cfg_r13_present) { + HANDLE_CODE(bref.pack(dmrs_cfg_r13.three_tone_base_seq_r13_present, 1)); + HANDLE_CODE(bref.pack(dmrs_cfg_r13.six_tone_base_seq_r13_present, 1)); + HANDLE_CODE(bref.pack(dmrs_cfg_r13.twelve_tone_base_seq_r13_present, 1)); + if (dmrs_cfg_r13.three_tone_base_seq_r13_present) { + HANDLE_CODE(pack_integer(bref, dmrs_cfg_r13.three_tone_base_seq_r13, (uint8_t)0u, (uint8_t)12u)); } - if (group_flags[1]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(t300_v1530_present, 1)); - HANDLE_CODE(bref.pack(t301_v1530_present, 1)); - HANDLE_CODE(bref.pack(t311_v1530_present, 1)); - HANDLE_CODE(bref.pack(t300_r15_present, 1)); - if (t300_v1530_present) { - HANDLE_CODE(t300_v1530.pack(bref)); - } - if (t301_v1530_present) { - HANDLE_CODE(t301_v1530.pack(bref)); - } - if (t311_v1530_present) { - HANDLE_CODE(t311_v1530.pack(bref)); - } - if (t300_r15_present) { - HANDLE_CODE(t300_r15.pack(bref)); - } + HANDLE_CODE(pack_integer(bref, dmrs_cfg_r13.three_tone_cyclic_shift_r13, (uint8_t)0u, (uint8_t)2u)); + if (dmrs_cfg_r13.six_tone_base_seq_r13_present) { + HANDLE_CODE(pack_integer(bref, dmrs_cfg_r13.six_tone_base_seq_r13, (uint8_t)0u, (uint8_t)14u)); + } + HANDLE_CODE(pack_integer(bref, dmrs_cfg_r13.six_tone_cyclic_shift_r13, (uint8_t)0u, (uint8_t)3u)); + if (dmrs_cfg_r13.twelve_tone_base_seq_r13_present) { + HANDLE_CODE(pack_integer(bref, dmrs_cfg_r13.twelve_tone_base_seq_r13, (uint8_t)0u, (uint8_t)30u)); } } + HANDLE_CODE(ul_ref_sigs_npusch_r13.pack(bref)); + return SRSASN_SUCCESS; } -SRSASN_CODE ue_timers_and_consts_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE npusch_cfg_common_nb_r13_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(t300_r13.unpack(bref)); - HANDLE_CODE(t301_r13.unpack(bref)); - HANDLE_CODE(t310_r13.unpack(bref)); - HANDLE_CODE(n310_r13.unpack(bref)); - HANDLE_CODE(t311_r13.unpack(bref)); - HANDLE_CODE(n311_r13.unpack(bref)); + HANDLE_CODE(bref.unpack(srs_sf_cfg_r13_present, 1)); + HANDLE_CODE(bref.unpack(dmrs_cfg_r13_present, 1)); - if (ext) { - ext_groups_unpacker_guard group_flags(2); - group_flags.unpack(bref); - - if (group_flags[0]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.unpack(t311_v1350_present, 1)); - if (t311_v1350_present) { - HANDLE_CODE(t311_v1350.unpack(bref)); - } + HANDLE_CODE(unpack_dyn_seq_of(ack_nack_num_repeats_msg4_r13, bref, 1, 3)); + if (srs_sf_cfg_r13_present) { + HANDLE_CODE(srs_sf_cfg_r13.unpack(bref)); + } + if (dmrs_cfg_r13_present) { + HANDLE_CODE(bref.unpack(dmrs_cfg_r13.three_tone_base_seq_r13_present, 1)); + HANDLE_CODE(bref.unpack(dmrs_cfg_r13.six_tone_base_seq_r13_present, 1)); + HANDLE_CODE(bref.unpack(dmrs_cfg_r13.twelve_tone_base_seq_r13_present, 1)); + if (dmrs_cfg_r13.three_tone_base_seq_r13_present) { + HANDLE_CODE(unpack_integer(dmrs_cfg_r13.three_tone_base_seq_r13, bref, (uint8_t)0u, (uint8_t)12u)); } - if (group_flags[1]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.unpack(t300_v1530_present, 1)); - HANDLE_CODE(bref.unpack(t301_v1530_present, 1)); - HANDLE_CODE(bref.unpack(t311_v1530_present, 1)); - HANDLE_CODE(bref.unpack(t300_r15_present, 1)); - if (t300_v1530_present) { - HANDLE_CODE(t300_v1530.unpack(bref)); - } - if (t301_v1530_present) { - HANDLE_CODE(t301_v1530.unpack(bref)); - } - if (t311_v1530_present) { - HANDLE_CODE(t311_v1530.unpack(bref)); - } - if (t300_r15_present) { - HANDLE_CODE(t300_r15.unpack(bref)); - } + HANDLE_CODE(unpack_integer(dmrs_cfg_r13.three_tone_cyclic_shift_r13, bref, (uint8_t)0u, (uint8_t)2u)); + if (dmrs_cfg_r13.six_tone_base_seq_r13_present) { + HANDLE_CODE(unpack_integer(dmrs_cfg_r13.six_tone_base_seq_r13, bref, (uint8_t)0u, (uint8_t)14u)); + } + HANDLE_CODE(unpack_integer(dmrs_cfg_r13.six_tone_cyclic_shift_r13, bref, (uint8_t)0u, (uint8_t)3u)); + if (dmrs_cfg_r13.twelve_tone_base_seq_r13_present) { + HANDLE_CODE(unpack_integer(dmrs_cfg_r13.twelve_tone_base_seq_r13, bref, (uint8_t)0u, (uint8_t)30u)); } } + HANDLE_CODE(ul_ref_sigs_npusch_r13.unpack(bref)); + return SRSASN_SUCCESS; } -void ue_timers_and_consts_nb_r13_s::to_json(json_writer& j) const +void npusch_cfg_common_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("t300-r13", t300_r13.to_string()); - j.write_str("t301-r13", t301_r13.to_string()); - j.write_str("t310-r13", t310_r13.to_string()); - j.write_str("n310-r13", n310_r13.to_string()); - j.write_str("t311-r13", t311_r13.to_string()); - j.write_str("n311-r13", n311_r13.to_string()); - if (ext) { - if (t311_v1350_present) { - j.write_str("t311-v1350", t311_v1350.to_string()); - } - if (t300_v1530_present) { - j.write_str("t300-v1530", t300_v1530.to_string()); - } - if (t301_v1530_present) { - j.write_str("t301-v1530", t301_v1530.to_string()); + j.start_array("ack-NACK-NumRepetitions-Msg4-r13"); + for (const auto& e1 : ack_nack_num_repeats_msg4_r13) { + j.write_str(e1.to_string()); + } + j.end_array(); + if (srs_sf_cfg_r13_present) { + j.write_str("srs-SubframeConfig-r13", srs_sf_cfg_r13.to_string()); + } + if (dmrs_cfg_r13_present) { + j.write_fieldname("dmrs-Config-r13"); + j.start_obj(); + if (dmrs_cfg_r13.three_tone_base_seq_r13_present) { + j.write_int("threeTone-BaseSequence-r13", dmrs_cfg_r13.three_tone_base_seq_r13); } - if (t311_v1530_present) { - j.write_str("t311-v1530", t311_v1530.to_string()); + j.write_int("threeTone-CyclicShift-r13", dmrs_cfg_r13.three_tone_cyclic_shift_r13); + if (dmrs_cfg_r13.six_tone_base_seq_r13_present) { + j.write_int("sixTone-BaseSequence-r13", dmrs_cfg_r13.six_tone_base_seq_r13); } - if (t300_r15_present) { - j.write_str("t300-r15", t300_r15.to_string()); + j.write_int("sixTone-CyclicShift-r13", dmrs_cfg_r13.six_tone_cyclic_shift_r13); + if (dmrs_cfg_r13.twelve_tone_base_seq_r13_present) { + j.write_int("twelveTone-BaseSequence-r13", dmrs_cfg_r13.twelve_tone_base_seq_r13); } + j.end_obj(); } + j.write_fieldname("ul-ReferenceSignalsNPUSCH-r13"); + ul_ref_sigs_npusch_r13.to_json(j); j.end_obj(); } -const char* ue_timers_and_consts_nb_r13_s::t300_r13_opts::to_string() const +const char* npusch_cfg_common_nb_r13_s::srs_sf_cfg_r13_opts::to_string() const { - static const char* options[] = {"ms2500", "ms4000", "ms6000", "ms10000", "ms15000", "ms25000", "ms40000", "ms60000"}; - return convert_enum_idx(options, 8, value, "ue_timers_and_consts_nb_r13_s::t300_r13_e_"); + static const char* options[] = {"sc0", + "sc1", + "sc2", + "sc3", + "sc4", + "sc5", + "sc6", + "sc7", + "sc8", + "sc9", + "sc10", + "sc11", + "sc12", + "sc13", + "sc14", + "sc15"}; + return convert_enum_idx(options, 16, value, "npusch_cfg_common_nb_r13_s::srs_sf_cfg_r13_e_"); } -uint16_t ue_timers_and_consts_nb_r13_s::t300_r13_opts::to_number() const +uint8_t npusch_cfg_common_nb_r13_s::srs_sf_cfg_r13_opts::to_number() const { - static const uint16_t options[] = {2500, 4000, 6000, 10000, 15000, 25000, 40000, 60000}; - return map_enum_number(options, 8, value, "ue_timers_and_consts_nb_r13_s::t300_r13_e_"); + static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; + return map_enum_number(options, 16, value, "npusch_cfg_common_nb_r13_s::srs_sf_cfg_r13_e_"); } -const char* ue_timers_and_consts_nb_r13_s::t301_r13_opts::to_string() const -{ - static const char* options[] = {"ms2500", "ms4000", "ms6000", "ms10000", "ms15000", "ms25000", "ms40000", "ms60000"}; - return convert_enum_idx(options, 8, value, "ue_timers_and_consts_nb_r13_s::t301_r13_e_"); -} -uint16_t ue_timers_and_consts_nb_r13_s::t301_r13_opts::to_number() const +// PCCH-Config-NB-r13 ::= SEQUENCE +SRSASN_CODE pcch_cfg_nb_r13_s::pack(bit_ref& bref) const { - static const uint16_t options[] = {2500, 4000, 6000, 10000, 15000, 25000, 40000, 60000}; - return map_enum_number(options, 8, value, "ue_timers_and_consts_nb_r13_s::t301_r13_e_"); -} + HANDLE_CODE(default_paging_cycle_r13.pack(bref)); + HANDLE_CODE(nb_r13.pack(bref)); + HANDLE_CODE(npdcch_num_repeat_paging_r13.pack(bref)); -const char* ue_timers_and_consts_nb_r13_s::t310_r13_opts::to_string() const -{ - static const char* options[] = {"ms0", "ms200", "ms500", "ms1000", "ms2000", "ms4000", "ms8000"}; - return convert_enum_idx(options, 7, value, "ue_timers_and_consts_nb_r13_s::t310_r13_e_"); + return SRSASN_SUCCESS; } -uint16_t ue_timers_and_consts_nb_r13_s::t310_r13_opts::to_number() const +SRSASN_CODE pcch_cfg_nb_r13_s::unpack(cbit_ref& bref) { - static const uint16_t options[] = {0, 200, 500, 1000, 2000, 4000, 8000}; - return map_enum_number(options, 7, value, "ue_timers_and_consts_nb_r13_s::t310_r13_e_"); -} + HANDLE_CODE(default_paging_cycle_r13.unpack(bref)); + HANDLE_CODE(nb_r13.unpack(bref)); + HANDLE_CODE(npdcch_num_repeat_paging_r13.unpack(bref)); -const char* ue_timers_and_consts_nb_r13_s::n310_r13_opts::to_string() const -{ - static const char* options[] = {"n1", "n2", "n3", "n4", "n6", "n8", "n10", "n20"}; - return convert_enum_idx(options, 8, value, "ue_timers_and_consts_nb_r13_s::n310_r13_e_"); + return SRSASN_SUCCESS; } -uint8_t ue_timers_and_consts_nb_r13_s::n310_r13_opts::to_number() const +void pcch_cfg_nb_r13_s::to_json(json_writer& j) const { - static const uint8_t options[] = {1, 2, 3, 4, 6, 8, 10, 20}; - return map_enum_number(options, 8, value, "ue_timers_and_consts_nb_r13_s::n310_r13_e_"); + j.start_obj(); + j.write_str("defaultPagingCycle-r13", default_paging_cycle_r13.to_string()); + j.write_str("nB-r13", nb_r13.to_string()); + j.write_str("npdcch-NumRepetitionPaging-r13", npdcch_num_repeat_paging_r13.to_string()); + j.end_obj(); } -const char* ue_timers_and_consts_nb_r13_s::t311_r13_opts::to_string() const +const char* pcch_cfg_nb_r13_s::default_paging_cycle_r13_opts::to_string() const { - static const char* options[] = {"ms1000", "ms3000", "ms5000", "ms10000", "ms15000", "ms20000", "ms30000"}; - return convert_enum_idx(options, 7, value, "ue_timers_and_consts_nb_r13_s::t311_r13_e_"); + static const char* options[] = {"rf128", "rf256", "rf512", "rf1024"}; + return convert_enum_idx(options, 4, value, "pcch_cfg_nb_r13_s::default_paging_cycle_r13_e_"); } -uint16_t ue_timers_and_consts_nb_r13_s::t311_r13_opts::to_number() const +uint16_t pcch_cfg_nb_r13_s::default_paging_cycle_r13_opts::to_number() const { - static const uint16_t options[] = {1000, 3000, 5000, 10000, 15000, 20000, 30000}; - return map_enum_number(options, 7, value, "ue_timers_and_consts_nb_r13_s::t311_r13_e_"); + static const uint16_t options[] = {128, 256, 512, 1024}; + return map_enum_number(options, 4, value, "pcch_cfg_nb_r13_s::default_paging_cycle_r13_e_"); } -const char* ue_timers_and_consts_nb_r13_s::n311_r13_opts::to_string() const -{ - static const char* options[] = {"n1", "n2", "n3", "n4", "n5", "n6", "n8", "n10"}; - return convert_enum_idx(options, 8, value, "ue_timers_and_consts_nb_r13_s::n311_r13_e_"); -} -uint8_t ue_timers_and_consts_nb_r13_s::n311_r13_opts::to_number() const +const char* pcch_cfg_nb_r13_s::nb_r13_opts::to_string() const { - static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10}; - return map_enum_number(options, 8, value, "ue_timers_and_consts_nb_r13_s::n311_r13_e_"); + 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, "pcch_cfg_nb_r13_s::nb_r13_e_"); } - -const char* ue_timers_and_consts_nb_r13_s::t311_v1350_opts::to_string() const +float pcch_cfg_nb_r13_s::nb_r13_opts::to_number() const { - static const char* options[] = {"ms40000", "ms60000", "ms90000", "ms120000"}; - return convert_enum_idx(options, 4, value, "ue_timers_and_consts_nb_r13_s::t311_v1350_e_"); + 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, "pcch_cfg_nb_r13_s::nb_r13_e_"); } -uint32_t ue_timers_and_consts_nb_r13_s::t311_v1350_opts::to_number() const +const char* pcch_cfg_nb_r13_s::nb_r13_opts::to_number_string() const { - static const uint32_t options[] = {40000, 60000, 90000, 120000}; - return map_enum_number(options, 4, value, "ue_timers_and_consts_nb_r13_s::t311_v1350_e_"); + 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, "pcch_cfg_nb_r13_s::nb_r13_e_"); } -const char* ue_timers_and_consts_nb_r13_s::t300_v1530_opts::to_string() const +const char* pcch_cfg_nb_r13_s::npdcch_num_repeat_paging_r13_opts::to_string() const { - static const char* options[] = {"ms80000", "ms100000", "ms120000"}; - return convert_enum_idx(options, 3, value, "ue_timers_and_consts_nb_r13_s::t300_v1530_e_"); + static const char* options[] = {"r1", + "r2", + "r4", + "r8", + "r16", + "r32", + "r64", + "r128", + "r256", + "r512", + "r1024", + "r2048", + "spare4", + "spare3", + "spare2", + "spare1"}; + return convert_enum_idx(options, 16, value, "pcch_cfg_nb_r13_s::npdcch_num_repeat_paging_r13_e_"); } -uint32_t ue_timers_and_consts_nb_r13_s::t300_v1530_opts::to_number() const +uint16_t pcch_cfg_nb_r13_s::npdcch_num_repeat_paging_r13_opts::to_number() const { - static const uint32_t options[] = {80000, 100000, 120000}; - return map_enum_number(options, 3, value, "ue_timers_and_consts_nb_r13_s::t300_v1530_e_"); + static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; + return map_enum_number(options, 12, value, "pcch_cfg_nb_r13_s::npdcch_num_repeat_paging_r13_e_"); } -const char* ue_timers_and_consts_nb_r13_s::t301_v1530_opts::to_string() const -{ - static const char* options[] = {"ms80000", "ms100000", "ms120000"}; - return convert_enum_idx(options, 3, value, "ue_timers_and_consts_nb_r13_s::t301_v1530_e_"); -} -uint32_t ue_timers_and_consts_nb_r13_s::t301_v1530_opts::to_number() const +// RACH-ConfigCommon-NB-r13 ::= SEQUENCE +SRSASN_CODE rach_cfg_common_nb_r13_s::pack(bit_ref& bref) const { - static const uint32_t options[] = {80000, 100000, 120000}; - return map_enum_number(options, 3, value, "ue_timers_and_consts_nb_r13_s::t301_v1530_e_"); -} + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(conn_est_fail_offset_r13_present, 1)); -const char* ue_timers_and_consts_nb_r13_s::t311_v1530_opts::to_string() const -{ - static const char* options[] = {"ms160000", "ms200000"}; - return convert_enum_idx(options, 2, value, "ue_timers_and_consts_nb_r13_s::t311_v1530_e_"); -} -uint32_t ue_timers_and_consts_nb_r13_s::t311_v1530_opts::to_number() const -{ - static const uint32_t options[] = {160000, 200000}; - return map_enum_number(options, 2, value, "ue_timers_and_consts_nb_r13_s::t311_v1530_e_"); -} - -const char* ue_timers_and_consts_nb_r13_s::t300_r15_opts::to_string() const -{ - static const char* options[] = { - "ms6000", "ms10000", "ms15000", "ms25000", "ms40000", "ms60000", "ms80000", "ms120000"}; - return convert_enum_idx(options, 8, value, "ue_timers_and_consts_nb_r13_s::t300_r15_e_"); -} -uint32_t ue_timers_and_consts_nb_r13_s::t300_r15_opts::to_number() const -{ - static const uint32_t options[] = {6000, 10000, 15000, 25000, 40000, 60000, 80000, 120000}; - return map_enum_number(options, 8, value, "ue_timers_and_consts_nb_r13_s::t300_r15_e_"); -} - -// CellSelectionInfo-NB-v1350 ::= SEQUENCE -SRSASN_CODE cell_sel_info_nb_v1350_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(pack_integer(bref, delta_rx_lev_min_v1350, (int8_t)-8, (int8_t)-1)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE cell_sel_info_nb_v1350_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(unpack_integer(delta_rx_lev_min_v1350, bref, (int8_t)-8, (int8_t)-1)); + HANDLE_CODE(preamb_trans_max_ce_r13.pack(bref)); + HANDLE_CODE(pwr_ramp_params_r13.pack(bref)); + HANDLE_CODE(pack_dyn_seq_of(bref, rach_info_list_r13, 1, 3)); + if (conn_est_fail_offset_r13_present) { + HANDLE_CODE(pack_integer(bref, conn_est_fail_offset_r13, (uint8_t)0u, (uint8_t)15u)); + } - return SRSASN_SUCCESS; -} -void cell_sel_info_nb_v1350_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_int("delta-RxLevMin-v1350", delta_rx_lev_min_v1350); - j.end_obj(); -} + if (ext) { + ext_groups_packer_guard group_flags; + group_flags[0] |= pwr_ramp_params_v1450.is_present(); + group_flags[1] |= rach_info_list_v1530.is_present(); + group_flags.pack(bref); -// PLMN-IdentityInfo-NB-r13 ::= SEQUENCE -SRSASN_CODE plmn_id_info_nb_r13_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(attach_without_pdn_connect_r13_present, 1)); + if (group_flags[0]) { + varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(plmn_id_r13.pack(bref)); - HANDLE_CODE(cell_reserved_for_oper_r13.pack(bref)); + HANDLE_CODE(bref.pack(pwr_ramp_params_v1450.is_present(), 1)); + if (pwr_ramp_params_v1450.is_present()) { + HANDLE_CODE(pwr_ramp_params_v1450->pack(bref)); + } + } + if (group_flags[1]) { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(bref.pack(rach_info_list_v1530.is_present(), 1)); + if (rach_info_list_v1530.is_present()) { + HANDLE_CODE(pack_dyn_seq_of(bref, *rach_info_list_v1530, 1, 3)); + } + } + } return SRSASN_SUCCESS; } -SRSASN_CODE plmn_id_info_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE rach_cfg_common_nb_r13_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(attach_without_pdn_connect_r13_present, 1)); - - HANDLE_CODE(plmn_id_r13.unpack(bref)); - HANDLE_CODE(cell_reserved_for_oper_r13.unpack(bref)); + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(conn_est_fail_offset_r13_present, 1)); - return SRSASN_SUCCESS; -} -void plmn_id_info_nb_r13_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_fieldname("plmn-Identity-r13"); - plmn_id_r13.to_json(j); - j.write_str("cellReservedForOperatorUse-r13", cell_reserved_for_oper_r13.to_string()); - if (attach_without_pdn_connect_r13_present) { - j.write_str("attachWithoutPDN-Connectivity-r13", "true"); + HANDLE_CODE(preamb_trans_max_ce_r13.unpack(bref)); + HANDLE_CODE(pwr_ramp_params_r13.unpack(bref)); + HANDLE_CODE(unpack_dyn_seq_of(rach_info_list_r13, bref, 1, 3)); + if (conn_est_fail_offset_r13_present) { + HANDLE_CODE(unpack_integer(conn_est_fail_offset_r13, bref, (uint8_t)0u, (uint8_t)15u)); } - j.end_obj(); -} -const char* plmn_id_info_nb_r13_s::cell_reserved_for_oper_r13_opts::to_string() const -{ - static const char* options[] = {"reserved", "notReserved"}; - return convert_enum_idx(options, 2, value, "plmn_id_info_nb_r13_s::cell_reserved_for_oper_r13_e_"); -} + if (ext) { + ext_groups_unpacker_guard group_flags(2); + group_flags.unpack(bref); -// SchedulingInfo-NB-r13 ::= SEQUENCE -SRSASN_CODE sched_info_nb_r13_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(si_periodicity_r13.pack(bref)); - HANDLE_CODE(si_repeat_pattern_r13.pack(bref)); - HANDLE_CODE(pack_dyn_seq_of(bref, sib_map_info_r13, 0, 31)); - HANDLE_CODE(si_tb_r13.pack(bref)); + if (group_flags[0]) { + varlength_field_unpack_guard varlen_scope(bref, false); - return SRSASN_SUCCESS; -} -SRSASN_CODE sched_info_nb_r13_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(si_periodicity_r13.unpack(bref)); - HANDLE_CODE(si_repeat_pattern_r13.unpack(bref)); - HANDLE_CODE(unpack_dyn_seq_of(sib_map_info_r13, bref, 0, 31)); - HANDLE_CODE(si_tb_r13.unpack(bref)); + bool pwr_ramp_params_v1450_present; + HANDLE_CODE(bref.unpack(pwr_ramp_params_v1450_present, 1)); + pwr_ramp_params_v1450.set_present(pwr_ramp_params_v1450_present); + if (pwr_ramp_params_v1450.is_present()) { + HANDLE_CODE(pwr_ramp_params_v1450->unpack(bref)); + } + } + if (group_flags[1]) { + varlength_field_unpack_guard varlen_scope(bref, false); + bool rach_info_list_v1530_present; + HANDLE_CODE(bref.unpack(rach_info_list_v1530_present, 1)); + rach_info_list_v1530.set_present(rach_info_list_v1530_present); + if (rach_info_list_v1530.is_present()) { + HANDLE_CODE(unpack_dyn_seq_of(*rach_info_list_v1530, bref, 1, 3)); + } + } + } return SRSASN_SUCCESS; } -void sched_info_nb_r13_s::to_json(json_writer& j) const +void rach_cfg_common_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("si-Periodicity-r13", si_periodicity_r13.to_string()); - j.write_str("si-RepetitionPattern-r13", si_repeat_pattern_r13.to_string()); - j.start_array("sib-MappingInfo-r13"); - for (const auto& e1 : sib_map_info_r13) { - j.write_str(e1.to_string()); + j.write_str("preambleTransMax-CE-r13", preamb_trans_max_ce_r13.to_string()); + j.write_fieldname("powerRampingParameters-r13"); + pwr_ramp_params_r13.to_json(j); + j.start_array("rach-InfoList-r13"); + for (const auto& e1 : rach_info_list_r13) { + e1.to_json(j); } j.end_array(); - j.write_str("si-TB-r13", si_tb_r13.to_string()); + if (conn_est_fail_offset_r13_present) { + j.write_int("connEstFailOffset-r13", conn_est_fail_offset_r13); + } + if (ext) { + if (pwr_ramp_params_v1450.is_present()) { + j.write_fieldname("powerRampingParameters-v1450"); + pwr_ramp_params_v1450->to_json(j); + } + if (rach_info_list_v1530.is_present()) { + j.start_array("rach-InfoList-v1530"); + for (const auto& e1 : *rach_info_list_v1530) { + e1.to_json(j); + } + j.end_array(); + } + } j.end_obj(); } -const char* sched_info_nb_r13_s::si_periodicity_r13_opts::to_string() const -{ - static const char* options[] = {"rf64", "rf128", "rf256", "rf512", "rf1024", "rf2048", "rf4096", "spare"}; - return convert_enum_idx(options, 8, value, "sched_info_nb_r13_s::si_periodicity_r13_e_"); -} -uint16_t sched_info_nb_r13_s::si_periodicity_r13_opts::to_number() const -{ - static const uint16_t options[] = {64, 128, 256, 512, 1024, 2048, 4096}; - return map_enum_number(options, 7, value, "sched_info_nb_r13_s::si_periodicity_r13_e_"); -} - -const char* sched_info_nb_r13_s::si_repeat_pattern_r13_opts::to_string() const -{ - static const char* options[] = {"every2ndRF", "every4thRF", "every8thRF", "every16thRF"}; - return convert_enum_idx(options, 4, value, "sched_info_nb_r13_s::si_repeat_pattern_r13_e_"); -} -uint8_t sched_info_nb_r13_s::si_repeat_pattern_r13_opts::to_number() const -{ - static const uint8_t options[] = {2, 4, 8, 16}; - return map_enum_number(options, 4, value, "sched_info_nb_r13_s::si_repeat_pattern_r13_e_"); -} - -const char* sched_info_nb_r13_s::si_tb_r13_opts::to_string() const +// SIB-Type-NB-r13 ::= ENUMERATED +const char* sib_type_nb_r13_opts::to_string() const { - static const char* options[] = {"b56", "b120", "b208", "b256", "b328", "b440", "b552", "b680"}; - return convert_enum_idx(options, 8, value, "sched_info_nb_r13_s::si_tb_r13_e_"); + static const char* options[] = {"sibType3-NB-r13", + "sibType4-NB-r13", + "sibType5-NB-r13", + "sibType14-NB-r13", + "sibType16-NB-r13", + "sibType15-NB-r14", + "sibType20-NB-r14", + "sibType22-NB-r14"}; + return convert_enum_idx(options, 8, value, "sib_type_nb_r13_e"); } -uint16_t sched_info_nb_r13_s::si_tb_r13_opts::to_number() const +uint8_t sib_type_nb_r13_opts::to_number() const { - static const uint16_t options[] = {56, 120, 208, 256, 328, 440, 552, 680}; - return map_enum_number(options, 8, value, "sched_info_nb_r13_s::si_tb_r13_e_"); + static const uint8_t options[] = {3, 4, 5, 14, 16, 15, 20, 22}; + return map_enum_number(options, 8, value, "sib_type_nb_r13_e"); } -// SystemInformationBlockType1-NB-v1430 ::= SEQUENCE -SRSASN_CODE sib_type1_nb_v1430_s::pack(bit_ref& bref) const +// SystemInformationBlockType1-NB-v1530 ::= SEQUENCE +SRSASN_CODE sib_type1_nb_v1530_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(cell_sel_info_v1430_present, 1)); + HANDLE_CODE(bref.pack(tdd_params_r15_present, 1)); + HANDLE_CODE(bref.pack(sched_info_list_v1530_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - if (cell_sel_info_v1430_present) { - HANDLE_CODE(cell_sel_info_v1430.pack(bref)); + if (tdd_params_r15_present) { + HANDLE_CODE(bref.pack(tdd_params_r15.tdd_si_sfs_bitmap_r15_present, 1)); + HANDLE_CODE(tdd_params_r15.tdd_cfg_r15.pack(bref)); + HANDLE_CODE(tdd_params_r15.tdd_si_carrier_info_r15.pack(bref)); + if (tdd_params_r15.tdd_si_sfs_bitmap_r15_present) { + HANDLE_CODE(tdd_params_r15.tdd_si_sfs_bitmap_r15.pack(bref)); + } + } + 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)); @@ -9903,13 +10874,22 @@ SRSASN_CODE sib_type1_nb_v1430_s::pack(bit_ref& bref) const return SRSASN_SUCCESS; } -SRSASN_CODE sib_type1_nb_v1430_s::unpack(cbit_ref& bref) +SRSASN_CODE sib_type1_nb_v1530_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(cell_sel_info_v1430_present, 1)); + HANDLE_CODE(bref.unpack(tdd_params_r15_present, 1)); + HANDLE_CODE(bref.unpack(sched_info_list_v1530_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - if (cell_sel_info_v1430_present) { - HANDLE_CODE(cell_sel_info_v1430.unpack(bref)); + if (tdd_params_r15_present) { + HANDLE_CODE(bref.unpack(tdd_params_r15.tdd_si_sfs_bitmap_r15_present, 1)); + HANDLE_CODE(tdd_params_r15.tdd_cfg_r15.unpack(bref)); + HANDLE_CODE(tdd_params_r15.tdd_si_carrier_info_r15.unpack(bref)); + if (tdd_params_r15.tdd_si_sfs_bitmap_r15_present) { + HANDLE_CODE(tdd_params_r15.tdd_si_sfs_bitmap_r15.unpack(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)); @@ -9917,2489 +10897,7639 @@ SRSASN_CODE sib_type1_nb_v1430_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void sib_type1_nb_v1430_s::to_json(json_writer& j) const +void sib_type1_nb_v1530_s::to_json(json_writer& j) const { j.start_obj(); - if (cell_sel_info_v1430_present) { - j.write_fieldname("cellSelectionInfo-v1430"); - cell_sel_info_v1430.to_json(j); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); - } - j.end_obj(); -} - -// SystemInformationBlockType14-NB-r13 ::= SEQUENCE -SRSASN_CODE sib_type14_nb_r13_s::pack(bit_ref& bref) const + if (tdd_params_r15_present) { + j.write_fieldname("tdd-Parameters-r15"); + j.start_obj(); + j.write_fieldname("tdd-Config-r15"); + tdd_params_r15.tdd_cfg_r15.to_json(j); + j.write_str("tdd-SI-CarrierInfo-r15", tdd_params_r15.tdd_si_carrier_info_r15.to_string()); + if (tdd_params_r15.tdd_si_sfs_bitmap_r15_present) { + j.write_fieldname("tdd-SI-SubframesBitmap-r15"); + tdd_params_r15.tdd_si_sfs_bitmap_r15.to_json(j); + } + j.end_obj(); + } + if (sched_info_list_v1530_present) { + j.start_array("schedulingInfoList-v1530"); + for (const auto& e1 : sched_info_list_v1530) { + e1.to_json(j); + } + j.end_array(); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + +const char* sib_type1_nb_v1530_s::tdd_params_r15_s_::tdd_si_carrier_info_r15_opts::to_string() const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(ab_param_r13_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + static const char* options[] = {"anchor", "non-anchor"}; + return convert_enum_idx(options, 2, value, "sib_type1_nb_v1530_s::tdd_params_r15_s_::tdd_si_carrier_info_r15_e_"); +} - if (ab_param_r13_present) { - HANDLE_CODE(ab_param_r13.pack(bref)); +// 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 (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); + 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 +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(nprach_params_list_r14_present, 1)); + + HANDLE_CODE(ul_carrier_freq_r14.pack(bref)); + if (nprach_params_list_r14_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_r14, 1, 3)); } if (ext) { ext_groups_packer_guard group_flags; - group_flags[0] |= ab_per_nrsrp_r15_present; + 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]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(ab_per_nrsrp_r15_present, 1)); - if (ab_per_nrsrp_r15_present) { - HANDLE_CODE(ab_per_nrsrp_r15.pack(bref)); + HANDLE_CODE(bref.pack(nprach_params_list_edt_r15.is_present(), 1)); + if (nprach_params_list_edt_r15.is_present()) { + 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(0, 97))); } } } return SRSASN_SUCCESS; } -SRSASN_CODE sib_type14_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE ul_cfg_common_nb_r14_s::unpack(cbit_ref& bref) { bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(ab_param_r13_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_list_r14_present, 1)); - if (ab_param_r13_present) { - HANDLE_CODE(ab_param_r13.unpack(bref)); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); + HANDLE_CODE(ul_carrier_freq_r14.unpack(bref)); + if (nprach_params_list_r14_present) { + HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_r14, bref, 1, 3)); } if (ext) { - ext_groups_unpacker_guard group_flags(1); + ext_groups_unpacker_guard group_flags(2); group_flags.unpack(bref); if (group_flags[0]) { varlength_field_unpack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.unpack(ab_per_nrsrp_r15_present, 1)); - if (ab_per_nrsrp_r15_present) { - HANDLE_CODE(ab_per_nrsrp_r15.unpack(bref)); + bool nprach_params_list_edt_r15_present; + HANDLE_CODE(bref.unpack(nprach_params_list_edt_r15_present, 1)); + nprach_params_list_edt_r15.set_present(nprach_params_list_edt_r15_present); + if (nprach_params_list_edt_r15.is_present()) { + 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(0, 97))); } } } return SRSASN_SUCCESS; } -void sib_type14_nb_r13_s::to_json(json_writer& j) const +void ul_cfg_common_nb_r14_s::to_json(json_writer& j) const { j.start_obj(); - if (ab_param_r13_present) { - j.write_fieldname("ab-Param-r13"); - ab_param_r13.to_json(j); - } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + j.write_fieldname("ul-CarrierFreq-r14"); + ul_carrier_freq_r14.to_json(j); + if (nprach_params_list_r14_present) { + j.start_array("nprach-ParametersList-r14"); + for (const auto& e1 : nprach_params_list_r14) { + e1.to_json(j); + } + j.end_array(); } if (ext) { - if (ab_per_nrsrp_r15_present) { - j.write_str("ab-PerNRSRP-r15", ab_per_nrsrp_r15.to_string()); + if (nprach_params_list_edt_r15.is_present()) { + j.start_array("nprach-ParametersListEDT-r15"); + for (const auto& e1 : *nprach_params_list_edt_r15) { + e1.to_json(j); + } + 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(); } -void sib_type14_nb_r13_s::ab_param_r13_c_::destroy_() +// UL-ConfigCommon-NB-v1530 ::= SEQUENCE +SRSASN_CODE ul_cfg_common_nb_v1530_s::pack(bit_ref& bref) const { - switch (type_) { - case types::ab_common_r13: - c.destroy(); - break; - case types::ab_per_plmn_list_r13: - c.destroy(); - break; - default: - break; + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(nprach_params_list_fmt2_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_params_list_fmt2_edt_r15_present, 1)); + + if (nprach_params_list_fmt2_r15_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_fmt2_r15, 1, 3)); } -} -void sib_type14_nb_r13_s::ab_param_r13_c_::set(types::options e) -{ - destroy_(); - type_ = e; - switch (type_) { - case types::ab_common_r13: - c.init(); - break; - case types::ab_per_plmn_list_r13: - c.init(); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); + if (nprach_params_list_fmt2_edt_r15_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_fmt2_edt_r15, 1, 3)); } + + return SRSASN_SUCCESS; } -sib_type14_nb_r13_s::ab_param_r13_c_::ab_param_r13_c_(const sib_type14_nb_r13_s::ab_param_r13_c_& other) +SRSASN_CODE ul_cfg_common_nb_v1530_s::unpack(cbit_ref& bref) { - type_ = other.type(); - switch (type_) { - case types::ab_common_r13: - c.init(other.c.get()); - break; - case types::ab_per_plmn_list_r13: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(nprach_params_list_fmt2_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_params_list_fmt2_edt_r15_present, 1)); + + if (nprach_params_list_fmt2_r15_present) { + HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_fmt2_r15, bref, 1, 3)); + } + if (nprach_params_list_fmt2_edt_r15_present) { + HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_fmt2_edt_r15, bref, 1, 3)); } + + return SRSASN_SUCCESS; } -sib_type14_nb_r13_s::ab_param_r13_c_& -sib_type14_nb_r13_s::ab_param_r13_c_::operator=(const sib_type14_nb_r13_s::ab_param_r13_c_& other) +void ul_cfg_common_nb_v1530_s::to_json(json_writer& j) const { - if (this == &other) { - return *this; + j.start_obj(); + if (nprach_params_list_fmt2_r15_present) { + j.start_array("nprach-ParametersListFmt2-r15"); + for (const auto& e1 : nprach_params_list_fmt2_r15) { + e1.to_json(j); + } + j.end_array(); } - set(other.type()); - switch (type_) { - case types::ab_common_r13: - c.set(other.c.get()); - break; - case types::ab_per_plmn_list_r13: - c.set(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); + if (nprach_params_list_fmt2_edt_r15_present) { + j.start_array("nprach-ParametersListFmt2EDT-r15"); + for (const auto& e1 : nprach_params_list_fmt2_edt_r15) { + e1.to_json(j); + } + j.end_array(); } - - return *this; + j.end_obj(); } -ab_cfg_nb_r13_s& sib_type14_nb_r13_s::ab_param_r13_c_::set_ab_common_r13() + +// UL-ConfigCommonTDD-NB-r15 ::= SEQUENCE +SRSASN_CODE ul_cfg_common_tdd_nb_r15_s::pack(bit_ref& bref) const { - set(types::ab_common_r13); - return c.get(); + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(nprach_params_list_tdd_r15_present, 1)); + + HANDLE_CODE(tdd_ul_dl_align_offset_r15.pack(bref)); + if (nprach_params_list_tdd_r15_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, nprach_params_list_tdd_r15, 1, 3)); + } + + return SRSASN_SUCCESS; } -sib_type14_nb_r13_s::ab_param_r13_c_::ab_per_plmn_list_r13_l_& -sib_type14_nb_r13_s::ab_param_r13_c_::set_ab_per_plmn_list_r13() +SRSASN_CODE ul_cfg_common_tdd_nb_r15_s::unpack(cbit_ref& bref) { - set(types::ab_per_plmn_list_r13); - return c.get(); -} -void sib_type14_nb_r13_s::ab_param_r13_c_::to_json(json_writer& j) const + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(nprach_params_list_tdd_r15_present, 1)); + + HANDLE_CODE(tdd_ul_dl_align_offset_r15.unpack(bref)); + if (nprach_params_list_tdd_r15_present) { + HANDLE_CODE(unpack_dyn_seq_of(nprach_params_list_tdd_r15, bref, 1, 3)); + } + + return SRSASN_SUCCESS; +} +void ul_cfg_common_tdd_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::ab_common_r13: - j.write_fieldname("ab-Common-r13"); - c.get().to_json(j); - break; - case types::ab_per_plmn_list_r13: - j.start_array("ab-PerPLMN-List-r13"); - for (const auto& e1 : c.get()) { - e1.to_json(j); - } - j.end_array(); - break; - default: - log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); + j.write_str("tdd-UL-DL-AlignmentOffset-r15", tdd_ul_dl_align_offset_r15.to_string()); + if (nprach_params_list_tdd_r15_present) { + j.start_array("nprach-ParametersListTDD-r15"); + for (const auto& e1 : nprach_params_list_tdd_r15) { + e1.to_json(j); + } + j.end_array(); } j.end_obj(); } -SRSASN_CODE sib_type14_nb_r13_s::ab_param_r13_c_::pack(bit_ref& bref) const + +// UplinkPowerControlCommon-NB-r13 ::= SEQUENCE +SRSASN_CODE ul_pwr_ctrl_common_nb_r13_s::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::ab_common_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::ab_per_plmn_list_r13: - HANDLE_CODE(pack_dyn_seq_of(bref, c.get(), 1, 6)); - break; - default: - log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } + HANDLE_CODE(pack_integer(bref, p0_nominal_npusch_r13, (int8_t)-126, (int8_t)24)); + HANDLE_CODE(alpha_r13.pack(bref)); + HANDLE_CODE(pack_integer(bref, delta_preamb_msg3_r13, (int8_t)-1, (int8_t)6)); + return SRSASN_SUCCESS; } -SRSASN_CODE sib_type14_nb_r13_s::ab_param_r13_c_::unpack(cbit_ref& bref) +SRSASN_CODE ul_pwr_ctrl_common_nb_r13_s::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::ab_common_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::ab_per_plmn_list_r13: - HANDLE_CODE(unpack_dyn_seq_of(c.get(), bref, 1, 6)); - break; - default: - log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); - return SRSASN_ERROR_DECODE_FAIL; - } + HANDLE_CODE(unpack_integer(p0_nominal_npusch_r13, bref, (int8_t)-126, (int8_t)24)); + HANDLE_CODE(alpha_r13.unpack(bref)); + HANDLE_CODE(unpack_integer(delta_preamb_msg3_r13, bref, (int8_t)-1, (int8_t)6)); + return SRSASN_SUCCESS; } +void ul_pwr_ctrl_common_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("p0-NominalNPUSCH-r13", p0_nominal_npusch_r13); + j.write_str("alpha-r13", alpha_r13.to_string()); + j.write_int("deltaPreambleMsg3-r13", delta_preamb_msg3_r13); + j.end_obj(); +} -const char* sib_type14_nb_r13_s::ab_param_r13_c_::types_opts::to_string() const +const char* ul_pwr_ctrl_common_nb_r13_s::alpha_r13_opts::to_string() const { - static const char* options[] = {"ab-Common-r13", "ab-PerPLMN-List-r13"}; - return convert_enum_idx(options, 2, value, "sib_type14_nb_r13_s::ab_param_r13_c_::types"); + static const char* options[] = {"al0", "al04", "al05", "al06", "al07", "al08", "al09", "al1"}; + return convert_enum_idx(options, 8, value, "ul_pwr_ctrl_common_nb_r13_s::alpha_r13_e_"); +} +float ul_pwr_ctrl_common_nb_r13_s::alpha_r13_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, "ul_pwr_ctrl_common_nb_r13_s::alpha_r13_e_"); +} +const char* ul_pwr_ctrl_common_nb_r13_s::alpha_r13_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, "ul_pwr_ctrl_common_nb_r13_s::alpha_r13_e_"); } -const char* sib_type14_nb_r13_s::ab_per_nrsrp_r15_opts::to_string() const +// CellReselectionInfoCommon-NB-v1450 ::= SEQUENCE +SRSASN_CODE cell_resel_info_common_nb_v1450_s::pack(bit_ref& bref) const { - static const char* options[] = {"thresh1", "thresh2"}; - return convert_enum_idx(options, 2, value, "sib_type14_nb_r13_s::ab_per_nrsrp_r15_e_"); + HANDLE_CODE(s_search_delta_p_r14.pack(bref)); + + return SRSASN_SUCCESS; } -uint8_t sib_type14_nb_r13_s::ab_per_nrsrp_r15_opts::to_number() const +SRSASN_CODE cell_resel_info_common_nb_v1450_s::unpack(cbit_ref& bref) { - static const uint8_t options[] = {1, 2}; - return map_enum_number(options, 2, value, "sib_type14_nb_r13_s::ab_per_nrsrp_r15_e_"); + HANDLE_CODE(s_search_delta_p_r14.unpack(bref)); + + return SRSASN_SUCCESS; +} +void cell_resel_info_common_nb_v1450_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("s-SearchDeltaP-r14", s_search_delta_p_r14.to_string()); + j.end_obj(); } -// SystemInformationBlockType15-NB-r14 ::= SEQUENCE -SRSASN_CODE sib_type15_nb_r14_s::pack(bit_ref& bref) const +const char* cell_resel_info_common_nb_v1450_s::s_search_delta_p_r14_opts::to_string() const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(mbms_sai_intra_freq_r14_present, 1)); - HANDLE_CODE(bref.pack(mbms_sai_inter_freq_list_r14_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + static const char* options[] = {"dB6", "dB9", "dB12", "dB15"}; + return convert_enum_idx(options, 4, value, "cell_resel_info_common_nb_v1450_s::s_search_delta_p_r14_e_"); +} +uint8_t cell_resel_info_common_nb_v1450_s::s_search_delta_p_r14_opts::to_number() const +{ + static const uint8_t options[] = {6, 9, 12, 15}; + return map_enum_number(options, 4, value, "cell_resel_info_common_nb_v1450_s::s_search_delta_p_r14_e_"); +} - if (mbms_sai_intra_freq_r14_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, mbms_sai_intra_freq_r14, 1, 64, integer_packer(0, 65535))); - } - if (mbms_sai_inter_freq_list_r14_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, mbms_sai_inter_freq_list_r14, 1, 8)); +// CellSelectionInfo-NB-v1430 ::= SEQUENCE +SRSASN_CODE cell_sel_info_nb_v1430_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(pwr_class14dbm_offset_r14_present, 1)); + HANDLE_CODE(bref.pack(ce_authorisation_offset_r14_present, 1)); + + if (pwr_class14dbm_offset_r14_present) { + HANDLE_CODE(pwr_class14dbm_offset_r14.pack(bref)); } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); + if (ce_authorisation_offset_r14_present) { + HANDLE_CODE(ce_authorisation_offset_r14.pack(bref)); } return SRSASN_SUCCESS; } -SRSASN_CODE sib_type15_nb_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE cell_sel_info_nb_v1430_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(mbms_sai_intra_freq_r14_present, 1)); - HANDLE_CODE(bref.unpack(mbms_sai_inter_freq_list_r14_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(pwr_class14dbm_offset_r14_present, 1)); + HANDLE_CODE(bref.unpack(ce_authorisation_offset_r14_present, 1)); - if (mbms_sai_intra_freq_r14_present) { - HANDLE_CODE(unpack_dyn_seq_of(mbms_sai_intra_freq_r14, bref, 1, 64, integer_packer(0, 65535))); - } - if (mbms_sai_inter_freq_list_r14_present) { - HANDLE_CODE(unpack_dyn_seq_of(mbms_sai_inter_freq_list_r14, bref, 1, 8)); + if (pwr_class14dbm_offset_r14_present) { + HANDLE_CODE(pwr_class14dbm_offset_r14.unpack(bref)); } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); + if (ce_authorisation_offset_r14_present) { + HANDLE_CODE(ce_authorisation_offset_r14.unpack(bref)); } return SRSASN_SUCCESS; } -void sib_type15_nb_r14_s::to_json(json_writer& j) const +void cell_sel_info_nb_v1430_s::to_json(json_writer& j) const { j.start_obj(); - if (mbms_sai_intra_freq_r14_present) { - j.start_array("mbms-SAI-IntraFreq-r14"); - for (const auto& e1 : mbms_sai_intra_freq_r14) { - j.write_int(e1); - } - j.end_array(); - } - if (mbms_sai_inter_freq_list_r14_present) { - j.start_array("mbms-SAI-InterFreqList-r14"); - for (const auto& e1 : mbms_sai_inter_freq_list_r14) { - e1.to_json(j); - } - j.end_array(); + if (pwr_class14dbm_offset_r14_present) { + j.write_str("powerClass14dBm-Offset-r14", pwr_class14dbm_offset_r14.to_string()); } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + if (ce_authorisation_offset_r14_present) { + j.write_str("ce-authorisationOffset-r14", ce_authorisation_offset_r14.to_string()); } j.end_obj(); } -// SystemInformationBlockType2-NB-r13 ::= SEQUENCE -SRSASN_CODE sib_type2_nb_r13_s::pack(bit_ref& bref) const +const char* cell_sel_info_nb_v1430_s::pwr_class14dbm_offset_r14_opts::to_string() const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(multi_band_info_list_r13_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + static const char* options[] = {"dB-6", "dB-3", "dB3", "dB6", "dB9", "dB12"}; + return convert_enum_idx(options, 6, value, "cell_sel_info_nb_v1430_s::pwr_class14dbm_offset_r14_e_"); +} +int8_t cell_sel_info_nb_v1430_s::pwr_class14dbm_offset_r14_opts::to_number() const +{ + static const int8_t options[] = {-6, -3, 3, 6, 9, 12}; + return map_enum_number(options, 6, value, "cell_sel_info_nb_v1430_s::pwr_class14dbm_offset_r14_e_"); +} - HANDLE_CODE(rr_cfg_common_r13.pack(bref)); - HANDLE_CODE(ue_timers_and_consts_r13.pack(bref)); - HANDLE_CODE(bref.pack(freq_info_r13.ul_carrier_freq_r13_present, 1)); - if (freq_info_r13.ul_carrier_freq_r13_present) { - HANDLE_CODE(freq_info_r13.ul_carrier_freq_r13.pack(bref)); - } - HANDLE_CODE(pack_integer(bref, freq_info_r13.add_spec_emission_r13, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(time_align_timer_common_r13.pack(bref)); - if (multi_band_info_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_r13, 1, 8, integer_packer(1, 32))); +const char* cell_sel_info_nb_v1430_s::ce_authorisation_offset_r14_opts::to_string() const +{ + static const char* options[] = {"dB5", "dB10", "dB15", "dB20", "dB25", "dB30", "dB35"}; + return convert_enum_idx(options, 7, value, "cell_sel_info_nb_v1430_s::ce_authorisation_offset_r14_e_"); +} +uint8_t cell_sel_info_nb_v1430_s::ce_authorisation_offset_r14_opts::to_number() const +{ + static const uint8_t options[] = {5, 10, 15, 20, 25, 30, 35}; + 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 (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); + 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)); } - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= cp_reest_r14_present; - group_flags[1] |= serving_cell_meas_info_r14_present; - group_flags[1] |= cqi_report_r14_present; - group_flags[2] |= enhanced_phr_r15_present; - group_flags[2] |= freq_info_v1530.is_present(); - group_flags[2] |= cp_edt_r15_present; - group_flags[2] |= up_edt_r15_present; - group_flags.pack(bref); - - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); + 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(bref.pack(cp_reest_r14_present, 1)); - } - if (group_flags[1]) { - varlength_field_pack_guard varlen_scope(bref, false); + 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)); + } - HANDLE_CODE(bref.pack(serving_cell_meas_info_r14_present, 1)); - HANDLE_CODE(bref.pack(cqi_report_r14_present, 1)); - } - if (group_flags[2]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(enhanced_phr_r15_present, 1)); - HANDLE_CODE(bref.pack(freq_info_v1530.is_present(), 1)); - HANDLE_CODE(bref.pack(cp_edt_r15_present, 1)); - HANDLE_CODE(bref.pack(up_edt_r15_present, 1)); - if (freq_info_v1530.is_present()) { - HANDLE_CODE(freq_info_v1530->tdd_ul_dl_align_offset_r15.pack(bref)); - } - } - } return SRSASN_SUCCESS; } -SRSASN_CODE sib_type2_nb_r13_s::unpack(cbit_ref& bref) +void conn_meas_cfg_nb_r17_s::to_json(json_writer& j) const { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(multi_band_info_list_r13_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); - - HANDLE_CODE(rr_cfg_common_r13.unpack(bref)); - HANDLE_CODE(ue_timers_and_consts_r13.unpack(bref)); - HANDLE_CODE(bref.unpack(freq_info_r13.ul_carrier_freq_r13_present, 1)); - if (freq_info_r13.ul_carrier_freq_r13_present) { - HANDLE_CODE(freq_info_r13.ul_carrier_freq_r13.unpack(bref)); - } - HANDLE_CODE(unpack_integer(freq_info_r13.add_spec_emission_r13, bref, (uint8_t)1u, (uint8_t)32u)); - HANDLE_CODE(time_align_timer_common_r13.unpack(bref)); - if (multi_band_info_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_r13, bref, 1, 8, integer_packer(1, 32))); + 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 (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); + 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(); +} - if (ext) { - ext_groups_unpacker_guard group_flags(3); - group_flags.unpack(bref); +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_"); +} - if (group_flags[0]) { - varlength_field_unpack_guard varlen_scope(bref, false); +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_"); +} - HANDLE_CODE(bref.unpack(cp_reest_r14_present, 1)); - } - if (group_flags[1]) { - varlength_field_unpack_guard varlen_scope(bref, false); +// 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)); - HANDLE_CODE(bref.unpack(serving_cell_meas_info_r14_present, 1)); - HANDLE_CODE(bref.unpack(cqi_report_r14_present, 1)); - } - if (group_flags[2]) { - varlength_field_unpack_guard varlen_scope(bref, false); + 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)); - HANDLE_CODE(bref.unpack(enhanced_phr_r15_present, 1)); - bool freq_info_v1530_present; - HANDLE_CODE(bref.unpack(freq_info_v1530_present, 1)); - freq_info_v1530.set_present(freq_info_v1530_present); - HANDLE_CODE(bref.unpack(cp_edt_r15_present, 1)); - HANDLE_CODE(bref.unpack(up_edt_r15_present, 1)); - if (freq_info_v1530.is_present()) { - HANDLE_CODE(freq_info_v1530->tdd_ul_dl_align_offset_r15.unpack(bref)); - } - } - } return SRSASN_SUCCESS; } -void sib_type2_nb_r13_s::to_json(json_writer& j) const +void coverage_based_paging_cfg_nb_r17_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("radioResourceConfigCommon-r13"); - rr_cfg_common_r13.to_json(j); - j.write_fieldname("ue-TimersAndConstants-r13"); - ue_timers_and_consts_r13.to_json(j); - j.write_fieldname("freqInfo-r13"); - j.start_obj(); - if (freq_info_r13.ul_carrier_freq_r13_present) { - j.write_fieldname("ul-CarrierFreq-r13"); - freq_info_r13.ul_carrier_freq_r13.to_json(j); + 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.write_int("additionalSpectrumEmission-r13", freq_info_r13.add_spec_emission_r13); + j.end_array(); j.end_obj(); - j.write_str("timeAlignmentTimerCommon-r13", time_align_timer_common_r13.to_string()); - if (multi_band_info_list_r13_present) { - j.start_array("multiBandInfoList-r13"); - for (const auto& e1 : multi_band_info_list_r13) { - j.write_int(e1); - } - j.end_array(); - } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (ext) { - if (cp_reest_r14_present) { - j.write_str("cp-Reestablishment-r14", "true"); - } - if (serving_cell_meas_info_r14_present) { - j.write_str("servingCellMeasInfo-r14", "true"); - } - if (cqi_report_r14_present) { - j.write_str("cqi-Reporting-r14", "true"); - } - if (enhanced_phr_r15_present) { - j.write_str("enhancedPHR-r15", "true"); - } - if (freq_info_v1530.is_present()) { - j.write_fieldname("freqInfo-v1530"); - j.start_obj(); - j.write_str("tdd-UL-DL-AlignmentOffset-r15", freq_info_v1530->tdd_ul_dl_align_offset_r15.to_string()); - j.end_obj(); - } - if (cp_edt_r15_present) { - j.write_str("cp-EDT-r15", "true"); - } - if (up_edt_r15_present) { - j.write_str("up-EDT-r15", "true"); - } - } +} + +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 +{ + HANDLE_CODE(pack_integer(bref, delta_rx_lev_min_v1350, (int8_t)-8, (int8_t)-1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE intra_freq_cell_resel_info_nb_v1350_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(delta_rx_lev_min_v1350, bref, (int8_t)-8, (int8_t)-1)); + + return SRSASN_SUCCESS; +} +void intra_freq_cell_resel_info_nb_v1350_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("delta-RxLevMin-v1350", delta_rx_lev_min_v1350); j.end_obj(); } -// SystemInformationBlockType20-NB-r14 ::= SEQUENCE -SRSASN_CODE sib_type20_nb_r14_s::pack(bit_ref& bref) const +// IntraFreqCellReselectionInfo-NB-v1360 ::= SEQUENCE +SRSASN_CODE intra_freq_cell_resel_info_nb_v1360_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(sc_mcch_sched_info_r14_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(pack_integer(bref, s_intra_search_p_v1360, (uint8_t)32u, (uint8_t)63u)); - HANDLE_CODE(npdcch_sc_mcch_cfg_r14.pack(bref)); - HANDLE_CODE(sc_mcch_carrier_cfg_r14.pack(bref)); - HANDLE_CODE(sc_mcch_repeat_period_r14.pack(bref)); - HANDLE_CODE(pack_integer(bref, sc_mcch_offset_r14, (uint8_t)0u, (uint8_t)10u)); - HANDLE_CODE(sc_mcch_mod_period_r14.pack(bref)); - if (sc_mcch_sched_info_r14_present) { - HANDLE_CODE(sc_mcch_sched_info_r14.pack(bref)); + return SRSASN_SUCCESS; +} +SRSASN_CODE intra_freq_cell_resel_info_nb_v1360_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(s_intra_search_p_v1360, bref, (uint8_t)32u, (uint8_t)63u)); + + return SRSASN_SUCCESS; +} +void intra_freq_cell_resel_info_nb_v1360_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("s-IntraSearchP-v1360", s_intra_search_p_v1360); + j.end_obj(); +} + +// IntraFreqCellReselectionInfo-NB-v1430 ::= SEQUENCE +SRSASN_CODE intra_freq_cell_resel_info_nb_v1430_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(pwr_class14dbm_offset_r14_present, 1)); + HANDLE_CODE(bref.pack(ce_authorisation_offset_r14_present, 1)); + + if (pwr_class14dbm_offset_r14_present) { + HANDLE_CODE(pwr_class14dbm_offset_r14.pack(bref)); } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); + if (ce_authorisation_offset_r14_present) { + HANDLE_CODE(ce_authorisation_offset_r14.pack(bref)); } return SRSASN_SUCCESS; } -SRSASN_CODE sib_type20_nb_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE intra_freq_cell_resel_info_nb_v1430_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(sc_mcch_sched_info_r14_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(pwr_class14dbm_offset_r14_present, 1)); + HANDLE_CODE(bref.unpack(ce_authorisation_offset_r14_present, 1)); - HANDLE_CODE(npdcch_sc_mcch_cfg_r14.unpack(bref)); - HANDLE_CODE(sc_mcch_carrier_cfg_r14.unpack(bref)); - HANDLE_CODE(sc_mcch_repeat_period_r14.unpack(bref)); - HANDLE_CODE(unpack_integer(sc_mcch_offset_r14, bref, (uint8_t)0u, (uint8_t)10u)); - HANDLE_CODE(sc_mcch_mod_period_r14.unpack(bref)); - if (sc_mcch_sched_info_r14_present) { - HANDLE_CODE(sc_mcch_sched_info_r14.unpack(bref)); + if (pwr_class14dbm_offset_r14_present) { + HANDLE_CODE(pwr_class14dbm_offset_r14.unpack(bref)); } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); + if (ce_authorisation_offset_r14_present) { + HANDLE_CODE(ce_authorisation_offset_r14.unpack(bref)); } return SRSASN_SUCCESS; } -void sib_type20_nb_r14_s::to_json(json_writer& j) const +void intra_freq_cell_resel_info_nb_v1430_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("npdcch-SC-MCCH-Config-r14"); - npdcch_sc_mcch_cfg_r14.to_json(j); - j.write_fieldname("sc-mcch-CarrierConfig-r14"); - sc_mcch_carrier_cfg_r14.to_json(j); - j.write_str("sc-mcch-RepetitionPeriod-r14", sc_mcch_repeat_period_r14.to_string()); - j.write_int("sc-mcch-Offset-r14", sc_mcch_offset_r14); - j.write_str("sc-mcch-ModificationPeriod-r14", sc_mcch_mod_period_r14.to_string()); - if (sc_mcch_sched_info_r14_present) { - j.write_fieldname("sc-mcch-SchedulingInfo-r14"); - sc_mcch_sched_info_r14.to_json(j); + if (pwr_class14dbm_offset_r14_present) { + j.write_str("powerClass14dBm-Offset-r14", pwr_class14dbm_offset_r14.to_string()); } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + if (ce_authorisation_offset_r14_present) { + j.write_str("ce-AuthorisationOffset-r14", ce_authorisation_offset_r14.to_string()); } j.end_obj(); } -void sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::destroy_() +const char* intra_freq_cell_resel_info_nb_v1430_s::pwr_class14dbm_offset_r14_opts::to_string() const { - switch (type_) { - case types::dl_carrier_cfg_r14: - c.destroy(); - break; - default: - break; - } + static const char* options[] = {"dB-6", "dB-3", "dB3", "dB6", "dB9", "dB12"}; + return convert_enum_idx(options, 6, value, "intra_freq_cell_resel_info_nb_v1430_s::pwr_class14dbm_offset_r14_e_"); } -void sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::set(types::options e) +int8_t intra_freq_cell_resel_info_nb_v1430_s::pwr_class14dbm_offset_r14_opts::to_number() const { - destroy_(); - type_ = e; - switch (type_) { - case types::dl_carrier_cfg_r14: - c.init(); - break; - case types::dl_carrier_idx_r14: - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); - } -} -sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::sc_mcch_carrier_cfg_r14_c_( - const sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_& other) + static const int8_t options[] = {-6, -3, 3, 6, 9, 12}; + return map_enum_number(options, 6, value, "intra_freq_cell_resel_info_nb_v1430_s::pwr_class14dbm_offset_r14_e_"); +} + +const char* intra_freq_cell_resel_info_nb_v1430_s::ce_authorisation_offset_r14_opts::to_string() const { - type_ = other.type(); - switch (type_) { - case types::dl_carrier_cfg_r14: - c.init(other.c.get()); - break; - case types::dl_carrier_idx_r14: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); - } + static const char* options[] = {"dB5", "dB10", "dB15", "dB20", "dB25", "dB30", "dB35"}; + return convert_enum_idx(options, 7, value, "intra_freq_cell_resel_info_nb_v1430_s::ce_authorisation_offset_r14_e_"); } -sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_& -sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::operator=(const sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_& other) +uint8_t intra_freq_cell_resel_info_nb_v1430_s::ce_authorisation_offset_r14_opts::to_number() const { - if (this == &other) { - return *this; - } - set(other.type()); - switch (type_) { - case types::dl_carrier_cfg_r14: - c.set(other.c.get()); - break; - case types::dl_carrier_idx_r14: - c.set(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); - } - - return *this; + static const uint8_t options[] = {5, 10, 15, 20, 25, 30, 35}; + return map_enum_number(options, 7, value, "intra_freq_cell_resel_info_nb_v1430_s::ce_authorisation_offset_r14_e_"); } -dl_carrier_cfg_common_nb_r14_s& sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::set_dl_carrier_cfg_r14() + +// NPDCCH-SC-MCCH-Config-NB-r14 ::= SEQUENCE +SRSASN_CODE npdcch_sc_mcch_cfg_nb_r14_s::pack(bit_ref& bref) const { - set(types::dl_carrier_cfg_r14); - return c.get(); + HANDLE_CODE(npdcch_num_repeats_sc_mcch_r14.pack(bref)); + HANDLE_CODE(npdcch_start_sf_sc_mcch_r14.pack(bref)); + HANDLE_CODE(npdcch_offset_sc_mcch_r14.pack(bref)); + + return SRSASN_SUCCESS; } -uint8_t& sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::set_dl_carrier_idx_r14() +SRSASN_CODE npdcch_sc_mcch_cfg_nb_r14_s::unpack(cbit_ref& bref) { - set(types::dl_carrier_idx_r14); - return c.get(); + HANDLE_CODE(npdcch_num_repeats_sc_mcch_r14.unpack(bref)); + HANDLE_CODE(npdcch_start_sf_sc_mcch_r14.unpack(bref)); + HANDLE_CODE(npdcch_offset_sc_mcch_r14.unpack(bref)); + + return SRSASN_SUCCESS; } -void sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::to_json(json_writer& j) const +void npdcch_sc_mcch_cfg_nb_r14_s::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::dl_carrier_cfg_r14: - j.write_fieldname("dl-CarrierConfig-r14"); - c.get().to_json(j); - break; - case types::dl_carrier_idx_r14: - j.write_int("dl-CarrierIndex-r14", c.get()); - break; - default: - log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); - } + j.write_str("npdcch-NumRepetitions-SC-MCCH-r14", npdcch_num_repeats_sc_mcch_r14.to_string()); + j.write_str("npdcch-StartSF-SC-MCCH-r14", npdcch_start_sf_sc_mcch_r14.to_string()); + j.write_str("npdcch-Offset-SC-MCCH-r14", npdcch_offset_sc_mcch_r14.to_string()); j.end_obj(); } -SRSASN_CODE sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::pack(bit_ref& bref) const + +const char* npdcch_sc_mcch_cfg_nb_r14_s::npdcch_num_repeats_sc_mcch_r14_opts::to_string() const { - type_.pack(bref); - switch (type_) { - case types::dl_carrier_cfg_r14: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::dl_carrier_idx_r14: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)15u)); - break; - default: - log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } - return SRSASN_SUCCESS; + static const char* options[] = { + "r1", "r2", "r4", "r8", "r16", "r32", "r64", "r128", "r256", "r512", "r1024", "r2048"}; + return convert_enum_idx(options, 12, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_num_repeats_sc_mcch_r14_e_"); } -SRSASN_CODE sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::unpack(cbit_ref& bref) +uint16_t npdcch_sc_mcch_cfg_nb_r14_s::npdcch_num_repeats_sc_mcch_r14_opts::to_number() const { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::dl_carrier_cfg_r14: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::dl_carrier_idx_r14: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)15u)); - break; - default: - log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); - return SRSASN_ERROR_DECODE_FAIL; - } - return SRSASN_SUCCESS; + static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; + return map_enum_number(options, 12, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_num_repeats_sc_mcch_r14_e_"); } -const char* sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::types_opts::to_string() const +const char* npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_opts::to_string() const { - static const char* options[] = {"dl-CarrierConfig-r14", "dl-CarrierIndex-r14"}; - return convert_enum_idx(options, 2, value, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::types"); + static const char* options[] = {"v1dot5", "v2", "v4", "v8", "v16", "v32", "v48", "v64"}; + return convert_enum_idx(options, 8, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_e_"); } - -const char* sib_type20_nb_r14_s::sc_mcch_repeat_period_r14_opts::to_string() const +float npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_opts::to_number() const { - static const char* options[] = {"rf32", "rf128", "rf512", "rf1024", "rf2048", "rf4096", "rf8192", "rf16384"}; - return convert_enum_idx(options, 8, value, "sib_type20_nb_r14_s::sc_mcch_repeat_period_r14_e_"); + static const float options[] = {1.5, 2.0, 4.0, 8.0, 16.0, 32.0, 48.0, 64.0}; + return map_enum_number(options, 8, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_e_"); } -uint16_t sib_type20_nb_r14_s::sc_mcch_repeat_period_r14_opts::to_number() const +const char* npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_opts::to_number_string() const { - static const uint16_t options[] = {32, 128, 512, 1024, 2048, 4096, 8192, 16384}; - return map_enum_number(options, 8, value, "sib_type20_nb_r14_s::sc_mcch_repeat_period_r14_e_"); + static const char* options[] = {"1.5", "2", "4", "8", "16", "32", "48", "64"}; + return convert_enum_idx(options, 8, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_start_sf_sc_mcch_r14_e_"); } -const char* sib_type20_nb_r14_s::sc_mcch_mod_period_r14_opts::to_string() const +const char* npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_r14_opts::to_string() const { - static const char* options[] = {"rf32", - "rf128", - "rf256", - "rf512", - "rf1024", - "rf2048", - "rf4096", - "rf8192", - "rf16384", - "rf32768", - "rf65536", - "rf131072", - "rf262144", - "rf524288", - "rf1048576", - "spare1"}; - return convert_enum_idx(options, 16, value, "sib_type20_nb_r14_s::sc_mcch_mod_period_r14_e_"); + static const char* options[] = { + "zero", "oneEighth", "oneQuarter", "threeEighth", "oneHalf", "fiveEighth", "threeQuarter", "sevenEighth"}; + return convert_enum_idx(options, 8, value, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_r14_e_"); } -uint32_t sib_type20_nb_r14_s::sc_mcch_mod_period_r14_opts::to_number() const +float npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_r14_opts::to_number() const { - static const uint32_t options[] = { - 32, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576}; - return map_enum_number(options, 15, value, "sib_type20_nb_r14_s::sc_mcch_mod_period_r14_e_"); + 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, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_r14_e_"); +} +const char* npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_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, "npdcch_sc_mcch_cfg_nb_r14_s::npdcch_offset_sc_mcch_r14_e_"); } -// SystemInformationBlockType22-NB-r14 ::= SEQUENCE -SRSASN_CODE sib_type22_nb_r14_s::pack(bit_ref& bref) const +// RadioResourceConfigCommonSIB-NB-r13 ::= SEQUENCE +SRSASN_CODE rr_cfg_common_sib_nb_r13_s::pack(bit_ref& bref) const { bref.pack(ext, 1); - HANDLE_CODE(bref.pack(dl_cfg_list_r14_present, 1)); - HANDLE_CODE(bref.pack(ul_cfg_list_r14_present, 1)); - HANDLE_CODE(bref.pack(paging_weight_anchor_r14_present, 1)); - HANDLE_CODE(bref.pack(nprach_probability_anchor_list_r14_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(dl_gap_r13_present, 1)); - if (dl_cfg_list_r14_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, dl_cfg_list_r14, 1, 15)); - } - if (ul_cfg_list_r14_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, ul_cfg_list_r14, 1, 15)); - } - if (paging_weight_anchor_r14_present) { - HANDLE_CODE(paging_weight_anchor_r14.pack(bref)); - } - if (nprach_probability_anchor_list_r14_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, nprach_probability_anchor_list_r14, 1, 3)); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); + HANDLE_CODE(rach_cfg_common_r13.pack(bref)); + HANDLE_CODE(bcch_cfg_r13.pack(bref)); + HANDLE_CODE(pcch_cfg_r13.pack(bref)); + HANDLE_CODE(nprach_cfg_r13.pack(bref)); + HANDLE_CODE(npdsch_cfg_common_r13.pack(bref)); + HANDLE_CODE(npusch_cfg_common_r13.pack(bref)); + if (dl_gap_r13_present) { + HANDLE_CODE(dl_gap_r13.pack(bref)); } + HANDLE_CODE(ul_pwr_ctrl_common_r13.pack(bref)); if (ext) { 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[0] |= nprach_cfg_v1330.is_present(); + group_flags[1] |= nprach_cfg_v1450.is_present(); + group_flags[2] |= nprach_cfg_v1530.is_present(); + 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]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(mixed_operation_mode_cfg_r15.is_present(), 1)); - HANDLE_CODE(bref.pack(ul_cfg_list_r15.is_present(), 1)); - if (mixed_operation_mode_cfg_r15.is_present()) { - HANDLE_CODE(bref.pack(mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15_present, 1)); - HANDLE_CODE(bref.pack(mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15_present, 1)); - HANDLE_CODE(bref.pack(mixed_operation_mode_cfg_r15->paging_distribution_r15_present, 1)); - HANDLE_CODE(bref.pack(mixed_operation_mode_cfg_r15->nprach_distribution_r15_present, 1)); - if (mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15, 1, 15)); - } - if (mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15, 1, 15)); - } + HANDLE_CODE(bref.pack(nprach_cfg_v1330.is_present(), 1)); + if (nprach_cfg_v1330.is_present()) { + HANDLE_CODE(nprach_cfg_v1330->pack(bref)); } - if (ul_cfg_list_r15.is_present()) { - 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(nprach_cfg_v1450.is_present(), 1)); + if (nprach_cfg_v1450.is_present()) { + HANDLE_CODE(nprach_cfg_v1450->pack(bref)); } } - } - return SRSASN_SUCCESS; -} -SRSASN_CODE sib_type22_nb_r14_s::unpack(cbit_ref& bref) -{ - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(dl_cfg_list_r14_present, 1)); - HANDLE_CODE(bref.unpack(ul_cfg_list_r14_present, 1)); - HANDLE_CODE(bref.unpack(paging_weight_anchor_r14_present, 1)); - HANDLE_CODE(bref.unpack(nprach_probability_anchor_list_r14_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + if (group_flags[2]) { + varlength_field_pack_guard varlen_scope(bref, false); - if (dl_cfg_list_r14_present) { - HANDLE_CODE(unpack_dyn_seq_of(dl_cfg_list_r14, bref, 1, 15)); - } - if (ul_cfg_list_r14_present) { - HANDLE_CODE(unpack_dyn_seq_of(ul_cfg_list_r14, bref, 1, 15)); - } - if (paging_weight_anchor_r14_present) { - HANDLE_CODE(paging_weight_anchor_r14.unpack(bref)); - } - if (nprach_probability_anchor_list_r14_present) { - HANDLE_CODE(unpack_dyn_seq_of(nprach_probability_anchor_list_r14, bref, 1, 3)); + HANDLE_CODE(bref.pack(nprach_cfg_v1530.is_present(), 1)); + HANDLE_CODE(bref.pack(dl_gap_v1530.is_present(), 1)); + HANDLE_CODE(bref.pack(wus_cfg_r15.is_present(), 1)); + if (nprach_cfg_v1530.is_present()) { + HANDLE_CODE(nprach_cfg_v1530->pack(bref)); + } + if (dl_gap_v1530.is_present()) { + HANDLE_CODE(dl_gap_v1530->pack(bref)); + } + if (wus_cfg_r15.is_present()) { + HANDLE_CODE(wus_cfg_r15->pack(bref)); + } + } + if (group_flags[3]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(nprach_cfg_v1550.is_present(), 1)); + if (nprach_cfg_v1550.is_present()) { + 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)); + } + } + } } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); + return SRSASN_SUCCESS; +} +SRSASN_CODE rr_cfg_common_sib_nb_r13_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(dl_gap_r13_present, 1)); + + HANDLE_CODE(rach_cfg_common_r13.unpack(bref)); + HANDLE_CODE(bcch_cfg_r13.unpack(bref)); + HANDLE_CODE(pcch_cfg_r13.unpack(bref)); + HANDLE_CODE(nprach_cfg_r13.unpack(bref)); + HANDLE_CODE(npdsch_cfg_common_r13.unpack(bref)); + HANDLE_CODE(npusch_cfg_common_r13.unpack(bref)); + if (dl_gap_r13_present) { + HANDLE_CODE(dl_gap_r13.unpack(bref)); } + HANDLE_CODE(ul_pwr_ctrl_common_r13.unpack(bref)); if (ext) { - ext_groups_unpacker_guard group_flags(1); + ext_groups_unpacker_guard group_flags(6); group_flags.unpack(bref); if (group_flags[0]) { varlength_field_unpack_guard varlen_scope(bref, false); - bool mixed_operation_mode_cfg_r15_present; - HANDLE_CODE(bref.unpack(mixed_operation_mode_cfg_r15_present, 1)); - mixed_operation_mode_cfg_r15.set_present(mixed_operation_mode_cfg_r15_present); - bool ul_cfg_list_r15_present; - HANDLE_CODE(bref.unpack(ul_cfg_list_r15_present, 1)); - ul_cfg_list_r15.set_present(ul_cfg_list_r15_present); - if (mixed_operation_mode_cfg_r15.is_present()) { - HANDLE_CODE(bref.unpack(mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15_present, 1)); - HANDLE_CODE(bref.unpack(mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15_present, 1)); - HANDLE_CODE(bref.unpack(mixed_operation_mode_cfg_r15->paging_distribution_r15_present, 1)); - HANDLE_CODE(bref.unpack(mixed_operation_mode_cfg_r15->nprach_distribution_r15_present, 1)); - if (mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15_present) { - HANDLE_CODE(unpack_dyn_seq_of(mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15, bref, 1, 15)); + bool nprach_cfg_v1330_present; + HANDLE_CODE(bref.unpack(nprach_cfg_v1330_present, 1)); + nprach_cfg_v1330.set_present(nprach_cfg_v1330_present); + if (nprach_cfg_v1330.is_present()) { + HANDLE_CODE(nprach_cfg_v1330->unpack(bref)); + } + } + if (group_flags[1]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool nprach_cfg_v1450_present; + HANDLE_CODE(bref.unpack(nprach_cfg_v1450_present, 1)); + nprach_cfg_v1450.set_present(nprach_cfg_v1450_present); + if (nprach_cfg_v1450.is_present()) { + HANDLE_CODE(nprach_cfg_v1450->unpack(bref)); + } + } + if (group_flags[2]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool nprach_cfg_v1530_present; + HANDLE_CODE(bref.unpack(nprach_cfg_v1530_present, 1)); + nprach_cfg_v1530.set_present(nprach_cfg_v1530_present); + bool dl_gap_v1530_present; + HANDLE_CODE(bref.unpack(dl_gap_v1530_present, 1)); + dl_gap_v1530.set_present(dl_gap_v1530_present); + bool wus_cfg_r15_present; + HANDLE_CODE(bref.unpack(wus_cfg_r15_present, 1)); + wus_cfg_r15.set_present(wus_cfg_r15_present); + if (nprach_cfg_v1530.is_present()) { + HANDLE_CODE(nprach_cfg_v1530->unpack(bref)); + } + if (dl_gap_v1530.is_present()) { + HANDLE_CODE(dl_gap_v1530->unpack(bref)); + } + if (wus_cfg_r15.is_present()) { + HANDLE_CODE(wus_cfg_r15->unpack(bref)); + } + } + if (group_flags[3]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool nprach_cfg_v1550_present; + HANDLE_CODE(bref.unpack(nprach_cfg_v1550_present, 1)); + nprach_cfg_v1550.set_present(nprach_cfg_v1550_present); + if (nprach_cfg_v1550.is_present()) { + 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 (mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15_present) { - HANDLE_CODE(unpack_dyn_seq_of(mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15, bref, 1, 15)); + 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)); } - } - if (ul_cfg_list_r15.is_present()) { - HANDLE_CODE(unpack_dyn_seq_of(*ul_cfg_list_r15, bref, 1, 15)); } } } return SRSASN_SUCCESS; } -void sib_type22_nb_r14_s::to_json(json_writer& j) const +void rr_cfg_common_sib_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - if (dl_cfg_list_r14_present) { - j.start_array("dl-ConfigList-r14"); - for (const auto& e1 : dl_cfg_list_r14) { - e1.to_json(j); - } - j.end_array(); + j.write_fieldname("rach-ConfigCommon-r13"); + rach_cfg_common_r13.to_json(j); + j.write_fieldname("bcch-Config-r13"); + bcch_cfg_r13.to_json(j); + j.write_fieldname("pcch-Config-r13"); + pcch_cfg_r13.to_json(j); + j.write_fieldname("nprach-Config-r13"); + nprach_cfg_r13.to_json(j); + j.write_fieldname("npdsch-ConfigCommon-r13"); + npdsch_cfg_common_r13.to_json(j); + j.write_fieldname("npusch-ConfigCommon-r13"); + npusch_cfg_common_r13.to_json(j); + if (dl_gap_r13_present) { + j.write_fieldname("dl-Gap-r13"); + dl_gap_r13.to_json(j); } - if (ul_cfg_list_r14_present) { - j.start_array("ul-ConfigList-r14"); - for (const auto& e1 : ul_cfg_list_r14) { - e1.to_json(j); + j.write_fieldname("uplinkPowerControlCommon-r13"); + ul_pwr_ctrl_common_r13.to_json(j); + if (ext) { + if (nprach_cfg_v1330.is_present()) { + j.write_fieldname("nprach-Config-v1330"); + nprach_cfg_v1330->to_json(j); } - j.end_array(); - } - if (paging_weight_anchor_r14_present) { - j.write_str("pagingWeightAnchor-r14", paging_weight_anchor_r14.to_string()); - } - if (nprach_probability_anchor_list_r14_present) { - j.start_array("nprach-ProbabilityAnchorList-r14"); - for (const auto& e1 : nprach_probability_anchor_list_r14) { - e1.to_json(j); + if (nprach_cfg_v1450.is_present()) { + j.write_fieldname("nprach-Config-v1450"); + nprach_cfg_v1450->to_json(j); } - j.end_array(); - } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (ext) { - if (mixed_operation_mode_cfg_r15.is_present()) { - j.write_fieldname("mixedOperationModeConfig-r15"); + if (nprach_cfg_v1530.is_present()) { + j.write_fieldname("nprach-Config-v1530"); + nprach_cfg_v1530->to_json(j); + } + if (dl_gap_v1530.is_present()) { + j.write_fieldname("dl-Gap-v1530"); + dl_gap_v1530->to_json(j); + } + if (wus_cfg_r15.is_present()) { + j.write_fieldname("wus-Config-r15"); + wus_cfg_r15->to_json(j); + } + if (nprach_cfg_v1550.is_present()) { + 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 (mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15_present) { - j.start_array("dl-ConfigListMixed-r15"); - for (const auto& e1 : mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15) { - e1.to_json(j); - } - j.end_array(); + if (ntn_cfg_common_r17->ta_report_r17_present) { + j.write_str("ta-Report-r17", "enabled"); } - if (mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15_present) { - j.start_array("ul-ConfigListMixed-r15"); - for (const auto& e1 : mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15) { - e1.to_json(j); - } - j.end_array(); + 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 (mixed_operation_mode_cfg_r15->paging_distribution_r15_present) { - j.write_str("pagingDistribution-r15", "true"); + 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 (mixed_operation_mode_cfg_r15->nprach_distribution_r15_present) { - j.write_str("nprach-Distribution-r15", "true"); + 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(); } - if (ul_cfg_list_r15.is_present()) { - j.start_array("ul-ConfigList-r15"); - for (const auto& e1 : *ul_cfg_list_r15) { - e1.to_json(j); - } - j.end_array(); - } } j.end_obj(); } -// SystemInformationBlockType23-NB-r15 ::= SEQUENCE -SRSASN_CODE sib_type23_nb_r15_s::pack(bit_ref& bref) const +const char* rr_cfg_common_sib_nb_r13_s::ue_specific_drx_cycle_min_r16_opts::to_string() const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(ul_cfg_list_v1530_present, 1)); - HANDLE_CODE(bref.pack(ul_cfg_list_mixed_v1530_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); - - if (ul_cfg_list_v1530_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, ul_cfg_list_v1530, 1, 15)); - } - if (ul_cfg_list_mixed_v1530_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, ul_cfg_list_mixed_v1530, 1, 15)); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); - } - - return SRSASN_SUCCESS; + 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_"); } -SRSASN_CODE sib_type23_nb_r15_s::unpack(cbit_ref& bref) +uint16_t rr_cfg_common_sib_nb_r13_s::ue_specific_drx_cycle_min_r16_opts::to_number() const { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(ul_cfg_list_v1530_present, 1)); - HANDLE_CODE(bref.unpack(ul_cfg_list_mixed_v1530_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + 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_"); +} - if (ul_cfg_list_v1530_present) { - HANDLE_CODE(unpack_dyn_seq_of(ul_cfg_list_v1530, bref, 1, 15)); - } - if (ul_cfg_list_mixed_v1530_present) { - HANDLE_CODE(unpack_dyn_seq_of(ul_cfg_list_mixed_v1530, bref, 1, 15)); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); - } - - return SRSASN_SUCCESS; +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_"); } -void sib_type23_nb_r15_s::to_json(json_writer& j) const +uint16_t rr_cfg_common_sib_nb_r13_s::ntn_cfg_common_r17_s_::t318_r17_opts::to_number() const { - j.start_obj(); - if (ul_cfg_list_v1530_present) { - j.start_array("ul-ConfigList-v1530"); - for (const auto& e1 : ul_cfg_list_v1530) { - e1.to_json(j); - } - j.end_array(); - } - if (ul_cfg_list_mixed_v1530_present) { - j.start_array("ul-ConfigListMixed-v1530"); - for (const auto& e1 : ul_cfg_list_mixed_v1530) { - 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(); + 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_"); } -// SystemInformationBlockType3-NB-r13 ::= SEQUENCE -SRSASN_CODE sib_type3_nb_r13_s::pack(bit_ref& bref) const +// SC-MCCH-SchedulingInfo-NB-r14 ::= SEQUENCE +SRSASN_CODE sc_mcch_sched_info_nb_r14_s::pack(bit_ref& bref) const { bref.pack(ext, 1); - HANDLE_CODE(bref.pack(freq_band_info_r13_present, 1)); - HANDLE_CODE(bref.pack(multi_band_info_list_r13_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); - - HANDLE_CODE(cell_resel_info_common_r13.q_hyst_r13.pack(bref)); - HANDLE_CODE(pack_integer(bref, cell_resel_serving_freq_info_r13.s_non_intra_search_r13, (uint8_t)0u, (uint8_t)31u)); - HANDLE_CODE(bref.pack(intra_freq_cell_resel_info_r13.q_qual_min_r13_present, 1)); - HANDLE_CODE(bref.pack(intra_freq_cell_resel_info_r13.p_max_r13_present, 1)); - HANDLE_CODE(pack_integer(bref, intra_freq_cell_resel_info_r13.q_rx_lev_min_r13, (int8_t)-70, (int8_t)-22)); - if (intra_freq_cell_resel_info_r13.q_qual_min_r13_present) { - HANDLE_CODE(pack_integer(bref, intra_freq_cell_resel_info_r13.q_qual_min_r13, (int8_t)-34, (int8_t)-3)); - } - if (intra_freq_cell_resel_info_r13.p_max_r13_present) { - HANDLE_CODE(pack_integer(bref, intra_freq_cell_resel_info_r13.p_max_r13, (int8_t)-30, (int8_t)33)); - } - HANDLE_CODE(pack_integer(bref, intra_freq_cell_resel_info_r13.s_intra_search_p_r13, (uint8_t)0u, (uint8_t)31u)); - HANDLE_CODE(intra_freq_cell_resel_info_r13.t_resel_r13.pack(bref)); - if (freq_band_info_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_info_r13, 1, 4)); - } - if (multi_band_info_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_r13, 1, 8, SeqOfPacker(1, 4, Packer()))); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); - } - - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= intra_freq_cell_resel_info_v1350.is_present(); - group_flags[1] |= intra_freq_cell_resel_info_v1360.is_present(); - group_flags[2] |= intra_freq_cell_resel_info_v1430.is_present(); - 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.pack(bref); - - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(intra_freq_cell_resel_info_v1350.is_present(), 1)); - if (intra_freq_cell_resel_info_v1350.is_present()) { - HANDLE_CODE(intra_freq_cell_resel_info_v1350->pack(bref)); - } - } - if (group_flags[1]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(intra_freq_cell_resel_info_v1360.is_present(), 1)); - if (intra_freq_cell_resel_info_v1360.is_present()) { - HANDLE_CODE(intra_freq_cell_resel_info_v1360->pack(bref)); - } - } - if (group_flags[2]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(intra_freq_cell_resel_info_v1430.is_present(), 1)); - if (intra_freq_cell_resel_info_v1430.is_present()) { - HANDLE_CODE(intra_freq_cell_resel_info_v1430->pack(bref)); - } - } - if (group_flags[3]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(cell_resel_info_common_v1450.is_present(), 1)); - if (cell_resel_info_common_v1450.is_present()) { - HANDLE_CODE(cell_resel_info_common_v1450->pack(bref)); - } - } - if (group_flags[4]) { - varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(on_dur_timer_scptm_r14.pack(bref)); + HANDLE_CODE(drx_inactivity_timer_scptm_r14.pack(bref)); + HANDLE_CODE(sched_period_start_offset_scptm_r14.pack(bref)); - HANDLE_CODE(bref.pack(nsss_rrm_cfg_r15.is_present(), 1)); - HANDLE_CODE(bref.pack(npbch_rrm_cfg_r15_present, 1)); - if (nsss_rrm_cfg_r15.is_present()) { - HANDLE_CODE(nsss_rrm_cfg_r15->pack(bref)); - } - } - } return SRSASN_SUCCESS; } -SRSASN_CODE sib_type3_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE sc_mcch_sched_info_nb_r14_s::unpack(cbit_ref& bref) { bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(freq_band_info_r13_present, 1)); - HANDLE_CODE(bref.unpack(multi_band_info_list_r13_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); - - HANDLE_CODE(cell_resel_info_common_r13.q_hyst_r13.unpack(bref)); - HANDLE_CODE(unpack_integer(cell_resel_serving_freq_info_r13.s_non_intra_search_r13, bref, (uint8_t)0u, (uint8_t)31u)); - HANDLE_CODE(bref.unpack(intra_freq_cell_resel_info_r13.q_qual_min_r13_present, 1)); - HANDLE_CODE(bref.unpack(intra_freq_cell_resel_info_r13.p_max_r13_present, 1)); - HANDLE_CODE(unpack_integer(intra_freq_cell_resel_info_r13.q_rx_lev_min_r13, bref, (int8_t)-70, (int8_t)-22)); - if (intra_freq_cell_resel_info_r13.q_qual_min_r13_present) { - HANDLE_CODE(unpack_integer(intra_freq_cell_resel_info_r13.q_qual_min_r13, bref, (int8_t)-34, (int8_t)-3)); - } - if (intra_freq_cell_resel_info_r13.p_max_r13_present) { - HANDLE_CODE(unpack_integer(intra_freq_cell_resel_info_r13.p_max_r13, bref, (int8_t)-30, (int8_t)33)); - } - HANDLE_CODE(unpack_integer(intra_freq_cell_resel_info_r13.s_intra_search_p_r13, bref, (uint8_t)0u, (uint8_t)31u)); - HANDLE_CODE(intra_freq_cell_resel_info_r13.t_resel_r13.unpack(bref)); - if (freq_band_info_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(freq_band_info_r13, bref, 1, 4)); - } - if (multi_band_info_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_r13, bref, 1, 8, SeqOfPacker(1, 4, Packer()))); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); - } - - if (ext) { - ext_groups_unpacker_guard group_flags(5); - group_flags.unpack(bref); - - if (group_flags[0]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - bool intra_freq_cell_resel_info_v1350_present; - HANDLE_CODE(bref.unpack(intra_freq_cell_resel_info_v1350_present, 1)); - intra_freq_cell_resel_info_v1350.set_present(intra_freq_cell_resel_info_v1350_present); - if (intra_freq_cell_resel_info_v1350.is_present()) { - HANDLE_CODE(intra_freq_cell_resel_info_v1350->unpack(bref)); - } - } - if (group_flags[1]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - bool intra_freq_cell_resel_info_v1360_present; - HANDLE_CODE(bref.unpack(intra_freq_cell_resel_info_v1360_present, 1)); - intra_freq_cell_resel_info_v1360.set_present(intra_freq_cell_resel_info_v1360_present); - if (intra_freq_cell_resel_info_v1360.is_present()) { - HANDLE_CODE(intra_freq_cell_resel_info_v1360->unpack(bref)); - } - } - if (group_flags[2]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - bool intra_freq_cell_resel_info_v1430_present; - HANDLE_CODE(bref.unpack(intra_freq_cell_resel_info_v1430_present, 1)); - intra_freq_cell_resel_info_v1430.set_present(intra_freq_cell_resel_info_v1430_present); - if (intra_freq_cell_resel_info_v1430.is_present()) { - HANDLE_CODE(intra_freq_cell_resel_info_v1430->unpack(bref)); - } - } - if (group_flags[3]) { - varlength_field_unpack_guard varlen_scope(bref, false); - - bool cell_resel_info_common_v1450_present; - HANDLE_CODE(bref.unpack(cell_resel_info_common_v1450_present, 1)); - cell_resel_info_common_v1450.set_present(cell_resel_info_common_v1450_present); - if (cell_resel_info_common_v1450.is_present()) { - HANDLE_CODE(cell_resel_info_common_v1450->unpack(bref)); - } - } - if (group_flags[4]) { - varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(on_dur_timer_scptm_r14.unpack(bref)); + HANDLE_CODE(drx_inactivity_timer_scptm_r14.unpack(bref)); + HANDLE_CODE(sched_period_start_offset_scptm_r14.unpack(bref)); - bool nsss_rrm_cfg_r15_present; - HANDLE_CODE(bref.unpack(nsss_rrm_cfg_r15_present, 1)); - nsss_rrm_cfg_r15.set_present(nsss_rrm_cfg_r15_present); - HANDLE_CODE(bref.unpack(npbch_rrm_cfg_r15_present, 1)); - if (nsss_rrm_cfg_r15.is_present()) { - HANDLE_CODE(nsss_rrm_cfg_r15->unpack(bref)); - } - } - } return SRSASN_SUCCESS; } -void sib_type3_nb_r13_s::to_json(json_writer& j) const +void sc_mcch_sched_info_nb_r14_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("cellReselectionInfoCommon-r13"); - j.start_obj(); - j.write_str("q-Hyst-r13", cell_resel_info_common_r13.q_hyst_r13.to_string()); - j.end_obj(); - j.write_fieldname("cellReselectionServingFreqInfo-r13"); - j.start_obj(); - j.write_int("s-NonIntraSearch-r13", cell_resel_serving_freq_info_r13.s_non_intra_search_r13); - j.end_obj(); - j.write_fieldname("intraFreqCellReselectionInfo-r13"); - j.start_obj(); - j.write_int("q-RxLevMin-r13", intra_freq_cell_resel_info_r13.q_rx_lev_min_r13); - if (intra_freq_cell_resel_info_r13.q_qual_min_r13_present) { - j.write_int("q-QualMin-r13", intra_freq_cell_resel_info_r13.q_qual_min_r13); - } - if (intra_freq_cell_resel_info_r13.p_max_r13_present) { - j.write_int("p-Max-r13", intra_freq_cell_resel_info_r13.p_max_r13); - } - j.write_int("s-IntraSearchP-r13", intra_freq_cell_resel_info_r13.s_intra_search_p_r13); - j.write_str("t-Reselection-r13", intra_freq_cell_resel_info_r13.t_resel_r13.to_string()); - j.end_obj(); - if (freq_band_info_r13_present) { - j.start_array("freqBandInfo-r13"); - for (const auto& e1 : freq_band_info_r13) { - e1.to_json(j); - } - j.end_array(); - } - if (multi_band_info_list_r13_present) { - j.start_array("multiBandInfoList-r13"); - for (const auto& e1 : multi_band_info_list_r13) { - j.start_array(); - for (const auto& e2 : e1) { - e2.to_json(j); - } - j.end_array(); - } - j.end_array(); - } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (ext) { - if (intra_freq_cell_resel_info_v1350.is_present()) { - j.write_fieldname("intraFreqCellReselectionInfo-v1350"); - intra_freq_cell_resel_info_v1350->to_json(j); - } - if (intra_freq_cell_resel_info_v1360.is_present()) { - j.write_fieldname("intraFreqCellReselectionInfo-v1360"); - intra_freq_cell_resel_info_v1360->to_json(j); - } - if (intra_freq_cell_resel_info_v1430.is_present()) { - j.write_fieldname("intraFreqCellReselectionInfo-v1430"); - intra_freq_cell_resel_info_v1430->to_json(j); - } - if (cell_resel_info_common_v1450.is_present()) { - j.write_fieldname("cellReselectionInfoCommon-v1450"); - cell_resel_info_common_v1450->to_json(j); - } - if (nsss_rrm_cfg_r15.is_present()) { - j.write_fieldname("nsss-RRM-Config-r15"); - nsss_rrm_cfg_r15->to_json(j); - } - if (npbch_rrm_cfg_r15_present) { - j.write_str("npbch-RRM-Config-r15", "enabled"); - } - } + j.write_str("onDurationTimerSCPTM-r14", on_dur_timer_scptm_r14.to_string()); + j.write_str("drx-InactivityTimerSCPTM-r14", drx_inactivity_timer_scptm_r14.to_string()); + j.write_fieldname("schedulingPeriodStartOffsetSCPTM-r14"); + sched_period_start_offset_scptm_r14.to_json(j); j.end_obj(); } -const char* sib_type3_nb_r13_s::cell_resel_info_common_r13_s_::q_hyst_r13_opts::to_string() const +const char* sc_mcch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_opts::to_string() const { - static const char* options[] = {"dB0", - "dB1", - "dB2", - "dB3", - "dB4", - "dB5", - "dB6", - "dB8", - "dB10", - "dB12", - "dB14", - "dB16", - "dB18", - "dB20", - "dB22", - "dB24"}; - return convert_enum_idx(options, 16, value, "sib_type3_nb_r13_s::cell_resel_info_common_r13_s_::q_hyst_r13_e_"); + static const char* options[] = {"pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32", "spare"}; + return convert_enum_idx(options, 8, value, "sc_mcch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_e_"); } -uint8_t sib_type3_nb_r13_s::cell_resel_info_common_r13_s_::q_hyst_r13_opts::to_number() const +uint8_t sc_mcch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_opts::to_number() const { - static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24}; - return map_enum_number(options, 16, value, "sib_type3_nb_r13_s::cell_resel_info_common_r13_s_::q_hyst_r13_e_"); + static const uint8_t options[] = {1, 2, 3, 4, 8, 16, 32}; + return map_enum_number(options, 7, value, "sc_mcch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_e_"); } -// SystemInformationBlockType4-NB-r13 ::= SEQUENCE -SRSASN_CODE sib_type4_nb_r13_s::pack(bit_ref& bref) const +const char* sc_mcch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_opts::to_string() 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(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 (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); - } - - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= nsss_rrm_cfg_r15.is_present(); - group_flags[0] |= intra_freq_neigh_cell_list_v1530.is_present(); - group_flags.pack(bref); - - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); - - HANDLE_CODE(bref.pack(nsss_rrm_cfg_r15.is_present(), 1)); - HANDLE_CODE(bref.pack(intra_freq_neigh_cell_list_v1530.is_present(), 1)); - if (nsss_rrm_cfg_r15.is_present()) { - HANDLE_CODE(nsss_rrm_cfg_r15->pack(bref)); - } - if (intra_freq_neigh_cell_list_v1530.is_present()) { - HANDLE_CODE(pack_dyn_seq_of(bref, *intra_freq_neigh_cell_list_v1530, 1, 16)); - } - } - } - return SRSASN_SUCCESS; + static const char* options[] = {"pp0", "pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32"}; + return convert_enum_idx(options, 8, value, "sc_mcch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_e_"); } -SRSASN_CODE sib_type4_nb_r13_s::unpack(cbit_ref& bref) +uint8_t sc_mcch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_opts::to_number() const { - 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(late_non_crit_ext_present, 1)); + static const uint8_t options[] = {0, 1, 2, 3, 4, 8, 16, 32}; + return map_enum_number(options, 8, value, "sc_mcch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_e_"); +} - if (intra_freq_neigh_cell_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(intra_freq_neigh_cell_list_r13, bref, 1, 16)); +void sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::destroy_() {} +void sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set(types::options e) +{ + destroy_(); + type_ = e; +} +sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::sched_period_start_offset_scptm_r14_c_( + const sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::sf10: + c.init(other.c.get()); + break; + case types::sf20: + c.init(other.c.get()); + break; + case types::sf32: + c.init(other.c.get()); + break; + case types::sf40: + c.init(other.c.get()); + break; + case types::sf64: + c.init(other.c.get()); + break; + case types::sf80: + c.init(other.c.get()); + break; + case types::sf128: + c.init(other.c.get()); + break; + case types::sf160: + c.init(other.c.get()); + break; + case types::sf256: + c.init(other.c.get()); + break; + case types::sf320: + c.init(other.c.get()); + break; + case types::sf512: + c.init(other.c.get()); + break; + case types::sf640: + c.init(other.c.get()); + break; + case types::sf1024: + c.init(other.c.get()); + break; + case types::sf2048: + c.init(other.c.get()); + break; + case types::sf4096: + c.init(other.c.get()); + break; + case types::sf8192: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); } - if (intra_freq_black_cell_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(intra_freq_black_cell_list_r13, bref, 1, 16)); +} +sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& +sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::operator=( + const sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& other) +{ + if (this == &other) { + return *this; } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); + set(other.type()); + switch (type_) { + case types::sf10: + c.set(other.c.get()); + break; + case types::sf20: + c.set(other.c.get()); + break; + case types::sf32: + c.set(other.c.get()); + break; + case types::sf40: + c.set(other.c.get()); + break; + case types::sf64: + c.set(other.c.get()); + break; + case types::sf80: + c.set(other.c.get()); + break; + case types::sf128: + c.set(other.c.get()); + break; + case types::sf160: + c.set(other.c.get()); + break; + case types::sf256: + c.set(other.c.get()); + break; + case types::sf320: + c.set(other.c.get()); + break; + case types::sf512: + c.set(other.c.get()); + break; + case types::sf640: + c.set(other.c.get()); + break; + case types::sf1024: + c.set(other.c.get()); + break; + case types::sf2048: + c.set(other.c.get()); + break; + case types::sf4096: + c.set(other.c.get()); + break; + case types::sf8192: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); } - 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 nsss_rrm_cfg_r15_present; - HANDLE_CODE(bref.unpack(nsss_rrm_cfg_r15_present, 1)); - nsss_rrm_cfg_r15.set_present(nsss_rrm_cfg_r15_present); - bool intra_freq_neigh_cell_list_v1530_present; - HANDLE_CODE(bref.unpack(intra_freq_neigh_cell_list_v1530_present, 1)); - intra_freq_neigh_cell_list_v1530.set_present(intra_freq_neigh_cell_list_v1530_present); - if (nsss_rrm_cfg_r15.is_present()) { - HANDLE_CODE(nsss_rrm_cfg_r15->unpack(bref)); - } - if (intra_freq_neigh_cell_list_v1530.is_present()) { - HANDLE_CODE(unpack_dyn_seq_of(*intra_freq_neigh_cell_list_v1530, bref, 1, 16)); - } - } + return *this; +} +uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf10() +{ + set(types::sf10); + return c.get(); +} +uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf20() +{ + set(types::sf20); + return c.get(); +} +uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf32() +{ + set(types::sf32); + return c.get(); +} +uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf40() +{ + set(types::sf40); + return c.get(); +} +uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf64() +{ + set(types::sf64); + return c.get(); +} +uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf80() +{ + set(types::sf80); + return c.get(); +} +uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf128() +{ + set(types::sf128); + return c.get(); +} +uint8_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf160() +{ + set(types::sf160); + return c.get(); +} +uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf256() +{ + set(types::sf256); + return c.get(); +} +uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf320() +{ + set(types::sf320); + return c.get(); +} +uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf512() +{ + set(types::sf512); + return c.get(); +} +uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf640() +{ + set(types::sf640); + return c.get(); +} +uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf1024() +{ + set(types::sf1024); + return c.get(); +} +uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf2048() +{ + set(types::sf2048); + return c.get(); +} +uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf4096() +{ + set(types::sf4096); + return c.get(); +} +uint16_t& sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf8192() +{ + set(types::sf8192); + return c.get(); +} +void sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::sf10: + j.write_int("sf10", c.get()); + break; + case types::sf20: + j.write_int("sf20", c.get()); + break; + case types::sf32: + j.write_int("sf32", c.get()); + break; + case types::sf40: + j.write_int("sf40", c.get()); + break; + case types::sf64: + j.write_int("sf64", c.get()); + break; + case types::sf80: + j.write_int("sf80", c.get()); + break; + case types::sf128: + j.write_int("sf128", c.get()); + break; + case types::sf160: + j.write_int("sf160", c.get()); + break; + case types::sf256: + j.write_int("sf256", c.get()); + break; + case types::sf320: + j.write_int("sf320", c.get()); + break; + case types::sf512: + j.write_int("sf512", c.get()); + break; + case types::sf640: + j.write_int("sf640", c.get()); + break; + case types::sf1024: + j.write_int("sf1024", c.get()); + break; + case types::sf2048: + j.write_int("sf2048", c.get()); + break; + case types::sf4096: + j.write_int("sf4096", c.get()); + break; + case types::sf8192: + j.write_int("sf8192", c.get()); + break; + default: + log_invalid_choice_id(type_, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + } + j.end_obj(); +} +SRSASN_CODE sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::sf10: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)9u)); + break; + case types::sf20: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)19u)); + break; + case types::sf32: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)31u)); + break; + case types::sf40: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)39u)); + break; + case types::sf64: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)63u)); + break; + case types::sf80: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)79u)); + break; + case types::sf128: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + break; + case types::sf160: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)159u)); + break; + case types::sf256: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)255u)); + break; + case types::sf320: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)319u)); + break; + case types::sf512: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)511u)); + break; + case types::sf640: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)639u)); + break; + case types::sf1024: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)1023u)); + break; + case types::sf2048: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)2047u)); + break; + case types::sf4096: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)4095u)); + break; + case types::sf8192: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)8191u)); + break; + default: + log_invalid_choice_id(type_, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::sf10: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)9u)); + break; + case types::sf20: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)19u)); + break; + case types::sf32: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)31u)); + break; + case types::sf40: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)39u)); + break; + case types::sf64: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)63u)); + break; + case types::sf80: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)79u)); + break; + case types::sf128: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + break; + case types::sf160: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)159u)); + break; + case types::sf256: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)255u)); + break; + case types::sf320: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)319u)); + break; + case types::sf512: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)511u)); + break; + case types::sf640: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)639u)); + break; + case types::sf1024: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)1023u)); + break; + case types::sf2048: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)2047u)); + break; + case types::sf4096: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)4095u)); + break; + case types::sf8192: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)8191u)); + break; + default: + log_invalid_choice_id(type_, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +const char* sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types_opts::to_string() const +{ + static const char* options[] = {"sf10", + "sf20", + "sf32", + "sf40", + "sf64", + "sf80", + "sf128", + "sf160", + "sf256", + "sf320", + "sf512", + "sf640", + "sf1024", + "sf2048", + "sf4096", + "sf8192"}; + return convert_enum_idx( + options, 16, value, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types"); +} +uint16_t sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types_opts::to_number() const +{ + static const uint16_t options[] = {10, 20, 32, 40, 64, 80, 128, 160, 256, 320, 512, 640, 1024, 2048, 4096, 8192}; + return map_enum_number( + options, 16, value, "sc_mcch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types"); +} + +// SystemInformationBlockType1-NB-v1450 ::= SEQUENCE +SRSASN_CODE sib_type1_nb_v1450_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(nrs_crs_pwr_offset_v1450_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (nrs_crs_pwr_offset_v1450_present) { + HANDLE_CODE(nrs_crs_pwr_offset_v1450.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE sib_type1_nb_v1450_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(nrs_crs_pwr_offset_v1450_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (nrs_crs_pwr_offset_v1450_present) { + HANDLE_CODE(nrs_crs_pwr_offset_v1450.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void sib_type1_nb_v1450_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (nrs_crs_pwr_offset_v1450_present) { + j.write_str("nrs-CRS-PowerOffset-v1450", nrs_crs_pwr_offset_v1450.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + +const char* sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_opts::to_string() const +{ + static const char* options[] = {"dB-6", + "dB-4dot77", + "dB-3", + "dB-1dot77", + "dB0", + "dB1", + "dB1dot23", + "dB2", + "dB3", + "dB4", + "dB4dot23", + "dB5", + "dB6", + "dB7", + "dB8", + "dB9"}; + return convert_enum_idx(options, 16, value, "sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_e_"); +} +float sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_opts::to_number() const +{ + static const float options[] = { + -6.0, -4.77, -3.0, -1.77, 0.0, 1.0, 1.23, 2.0, 3.0, 4.0, 4.23, 5.0, 6.0, 7.0, 8.0, 9.0}; + return map_enum_number(options, 16, value, "sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_e_"); +} +const char* sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_opts::to_number_string() const +{ + static const char* options[] = { + "-6", "-4.77", "-3", "-1.77", "0", "1", "1.23", "2", "3", "4", "4.23", "5", "6", "7", "8", "9"}; + return convert_enum_idx(options, 16, value, "sib_type1_nb_v1450_s::nrs_crs_pwr_offset_v1450_e_"); +} + +// T-Reselection-NB-r13 ::= ENUMERATED +const char* t_resel_nb_r13_opts::to_string() const +{ + static const char* options[] = {"s0", "s3", "s6", "s9", "s12", "s15", "s18", "s21"}; + return convert_enum_idx(options, 8, value, "t_resel_nb_r13_e"); +} +uint8_t t_resel_nb_r13_opts::to_number() const +{ + static const uint8_t options[] = {0, 3, 6, 9, 12, 15, 18, 21}; + 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(); + break; + case types::uac_barr_per_plmn_list: + c.destroy(); + 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(); + break; + case types::uac_barr_per_plmn_list: + c.init(); + 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()); + break; + case types::uac_barr_per_plmn_list: + c.init(other.c.get()); + 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()); + break; + case types::uac_barr_per_plmn_list: + c.set(other.c.get()); + 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_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(); +} +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().to_json(j); + break; + case types::uac_barr_per_plmn_list: + j.start_array("uac-BarringPerPLMN-List"); + for (const auto& e1 : c.get()) { + 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().pack(bref)); + break; + case types::uac_barr_per_plmn_list: + HANDLE_CODE(pack_dyn_seq_of(bref, c.get(), 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().unpack(bref)); + break; + case types::uac_barr_per_plmn_list: + HANDLE_CODE(unpack_dyn_seq_of(c.get(), 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 +{ + bref.pack(ext, 1); + HANDLE_CODE(t300_r13.pack(bref)); + HANDLE_CODE(t301_r13.pack(bref)); + HANDLE_CODE(t310_r13.pack(bref)); + HANDLE_CODE(n310_r13.pack(bref)); + HANDLE_CODE(t311_r13.pack(bref)); + HANDLE_CODE(n311_r13.pack(bref)); + + if (ext) { + ext_groups_packer_guard group_flags; + group_flags[0] |= t311_v1350_present; + group_flags[1] |= t300_v1530_present; + group_flags[1] |= t301_v1530_present; + group_flags[1] |= t311_v1530_present; + group_flags[1] |= t300_r15_present; + group_flags.pack(bref); + + if (group_flags[0]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(t311_v1350_present, 1)); + if (t311_v1350_present) { + HANDLE_CODE(t311_v1350.pack(bref)); + } + } + if (group_flags[1]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(t300_v1530_present, 1)); + HANDLE_CODE(bref.pack(t301_v1530_present, 1)); + HANDLE_CODE(bref.pack(t311_v1530_present, 1)); + HANDLE_CODE(bref.pack(t300_r15_present, 1)); + if (t300_v1530_present) { + HANDLE_CODE(t300_v1530.pack(bref)); + } + if (t301_v1530_present) { + HANDLE_CODE(t301_v1530.pack(bref)); + } + if (t311_v1530_present) { + HANDLE_CODE(t311_v1530.pack(bref)); + } + if (t300_r15_present) { + HANDLE_CODE(t300_r15.pack(bref)); + } + } + } + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_timers_and_consts_nb_r13_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(t300_r13.unpack(bref)); + HANDLE_CODE(t301_r13.unpack(bref)); + HANDLE_CODE(t310_r13.unpack(bref)); + HANDLE_CODE(n310_r13.unpack(bref)); + HANDLE_CODE(t311_r13.unpack(bref)); + HANDLE_CODE(n311_r13.unpack(bref)); + + if (ext) { + ext_groups_unpacker_guard group_flags(2); + group_flags.unpack(bref); + + if (group_flags[0]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.unpack(t311_v1350_present, 1)); + if (t311_v1350_present) { + HANDLE_CODE(t311_v1350.unpack(bref)); + } + } + if (group_flags[1]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.unpack(t300_v1530_present, 1)); + HANDLE_CODE(bref.unpack(t301_v1530_present, 1)); + HANDLE_CODE(bref.unpack(t311_v1530_present, 1)); + HANDLE_CODE(bref.unpack(t300_r15_present, 1)); + if (t300_v1530_present) { + HANDLE_CODE(t300_v1530.unpack(bref)); + } + if (t301_v1530_present) { + HANDLE_CODE(t301_v1530.unpack(bref)); + } + if (t311_v1530_present) { + HANDLE_CODE(t311_v1530.unpack(bref)); + } + if (t300_r15_present) { + HANDLE_CODE(t300_r15.unpack(bref)); + } + } + } + return SRSASN_SUCCESS; +} +void ue_timers_and_consts_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("t300-r13", t300_r13.to_string()); + j.write_str("t301-r13", t301_r13.to_string()); + j.write_str("t310-r13", t310_r13.to_string()); + j.write_str("n310-r13", n310_r13.to_string()); + j.write_str("t311-r13", t311_r13.to_string()); + j.write_str("n311-r13", n311_r13.to_string()); + if (ext) { + if (t311_v1350_present) { + j.write_str("t311-v1350", t311_v1350.to_string()); + } + if (t300_v1530_present) { + j.write_str("t300-v1530", t300_v1530.to_string()); + } + if (t301_v1530_present) { + j.write_str("t301-v1530", t301_v1530.to_string()); + } + if (t311_v1530_present) { + j.write_str("t311-v1530", t311_v1530.to_string()); + } + if (t300_r15_present) { + j.write_str("t300-r15", t300_r15.to_string()); + } + } + j.end_obj(); +} + +const char* ue_timers_and_consts_nb_r13_s::t300_r13_opts::to_string() const +{ + static const char* options[] = {"ms2500", "ms4000", "ms6000", "ms10000", "ms15000", "ms25000", "ms40000", "ms60000"}; + return convert_enum_idx(options, 8, value, "ue_timers_and_consts_nb_r13_s::t300_r13_e_"); +} +uint16_t ue_timers_and_consts_nb_r13_s::t300_r13_opts::to_number() const +{ + static const uint16_t options[] = {2500, 4000, 6000, 10000, 15000, 25000, 40000, 60000}; + return map_enum_number(options, 8, value, "ue_timers_and_consts_nb_r13_s::t300_r13_e_"); +} + +const char* ue_timers_and_consts_nb_r13_s::t301_r13_opts::to_string() const +{ + static const char* options[] = {"ms2500", "ms4000", "ms6000", "ms10000", "ms15000", "ms25000", "ms40000", "ms60000"}; + return convert_enum_idx(options, 8, value, "ue_timers_and_consts_nb_r13_s::t301_r13_e_"); +} +uint16_t ue_timers_and_consts_nb_r13_s::t301_r13_opts::to_number() const +{ + static const uint16_t options[] = {2500, 4000, 6000, 10000, 15000, 25000, 40000, 60000}; + return map_enum_number(options, 8, value, "ue_timers_and_consts_nb_r13_s::t301_r13_e_"); +} + +const char* ue_timers_and_consts_nb_r13_s::t310_r13_opts::to_string() const +{ + static const char* options[] = {"ms0", "ms200", "ms500", "ms1000", "ms2000", "ms4000", "ms8000"}; + return convert_enum_idx(options, 7, value, "ue_timers_and_consts_nb_r13_s::t310_r13_e_"); +} +uint16_t ue_timers_and_consts_nb_r13_s::t310_r13_opts::to_number() const +{ + static const uint16_t options[] = {0, 200, 500, 1000, 2000, 4000, 8000}; + return map_enum_number(options, 7, value, "ue_timers_and_consts_nb_r13_s::t310_r13_e_"); +} + +const char* ue_timers_and_consts_nb_r13_s::n310_r13_opts::to_string() const +{ + static const char* options[] = {"n1", "n2", "n3", "n4", "n6", "n8", "n10", "n20"}; + return convert_enum_idx(options, 8, value, "ue_timers_and_consts_nb_r13_s::n310_r13_e_"); +} +uint8_t ue_timers_and_consts_nb_r13_s::n310_r13_opts::to_number() const +{ + static const uint8_t options[] = {1, 2, 3, 4, 6, 8, 10, 20}; + return map_enum_number(options, 8, value, "ue_timers_and_consts_nb_r13_s::n310_r13_e_"); +} + +const char* ue_timers_and_consts_nb_r13_s::t311_r13_opts::to_string() const +{ + static const char* options[] = {"ms1000", "ms3000", "ms5000", "ms10000", "ms15000", "ms20000", "ms30000"}; + return convert_enum_idx(options, 7, value, "ue_timers_and_consts_nb_r13_s::t311_r13_e_"); +} +uint16_t ue_timers_and_consts_nb_r13_s::t311_r13_opts::to_number() const +{ + static const uint16_t options[] = {1000, 3000, 5000, 10000, 15000, 20000, 30000}; + return map_enum_number(options, 7, value, "ue_timers_and_consts_nb_r13_s::t311_r13_e_"); +} + +const char* ue_timers_and_consts_nb_r13_s::n311_r13_opts::to_string() const +{ + static const char* options[] = {"n1", "n2", "n3", "n4", "n5", "n6", "n8", "n10"}; + return convert_enum_idx(options, 8, value, "ue_timers_and_consts_nb_r13_s::n311_r13_e_"); +} +uint8_t ue_timers_and_consts_nb_r13_s::n311_r13_opts::to_number() const +{ + static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10}; + return map_enum_number(options, 8, value, "ue_timers_and_consts_nb_r13_s::n311_r13_e_"); +} + +const char* ue_timers_and_consts_nb_r13_s::t311_v1350_opts::to_string() const +{ + static const char* options[] = {"ms40000", "ms60000", "ms90000", "ms120000"}; + return convert_enum_idx(options, 4, value, "ue_timers_and_consts_nb_r13_s::t311_v1350_e_"); +} +uint32_t ue_timers_and_consts_nb_r13_s::t311_v1350_opts::to_number() const +{ + static const uint32_t options[] = {40000, 60000, 90000, 120000}; + return map_enum_number(options, 4, value, "ue_timers_and_consts_nb_r13_s::t311_v1350_e_"); +} + +const char* ue_timers_and_consts_nb_r13_s::t300_v1530_opts::to_string() const +{ + static const char* options[] = {"ms80000", "ms100000", "ms120000"}; + return convert_enum_idx(options, 3, value, "ue_timers_and_consts_nb_r13_s::t300_v1530_e_"); +} +uint32_t ue_timers_and_consts_nb_r13_s::t300_v1530_opts::to_number() const +{ + static const uint32_t options[] = {80000, 100000, 120000}; + return map_enum_number(options, 3, value, "ue_timers_and_consts_nb_r13_s::t300_v1530_e_"); +} + +const char* ue_timers_and_consts_nb_r13_s::t301_v1530_opts::to_string() const +{ + static const char* options[] = {"ms80000", "ms100000", "ms120000"}; + return convert_enum_idx(options, 3, value, "ue_timers_and_consts_nb_r13_s::t301_v1530_e_"); +} +uint32_t ue_timers_and_consts_nb_r13_s::t301_v1530_opts::to_number() const +{ + static const uint32_t options[] = {80000, 100000, 120000}; + return map_enum_number(options, 3, value, "ue_timers_and_consts_nb_r13_s::t301_v1530_e_"); +} + +const char* ue_timers_and_consts_nb_r13_s::t311_v1530_opts::to_string() const +{ + static const char* options[] = {"ms160000", "ms200000"}; + return convert_enum_idx(options, 2, value, "ue_timers_and_consts_nb_r13_s::t311_v1530_e_"); +} +uint32_t ue_timers_and_consts_nb_r13_s::t311_v1530_opts::to_number() const +{ + static const uint32_t options[] = {160000, 200000}; + return map_enum_number(options, 2, value, "ue_timers_and_consts_nb_r13_s::t311_v1530_e_"); +} + +const char* ue_timers_and_consts_nb_r13_s::t300_r15_opts::to_string() const +{ + static const char* options[] = { + "ms6000", "ms10000", "ms15000", "ms25000", "ms40000", "ms60000", "ms80000", "ms120000"}; + return convert_enum_idx(options, 8, value, "ue_timers_and_consts_nb_r13_s::t300_r15_e_"); +} +uint32_t ue_timers_and_consts_nb_r13_s::t300_r15_opts::to_number() const +{ + static const uint32_t options[] = {6000, 10000, 15000, 25000, 40000, 60000, 80000, 120000}; + return map_enum_number(options, 8, value, "ue_timers_and_consts_nb_r13_s::t300_r15_e_"); +} + +// CellSelectionInfo-NB-v1350 ::= SEQUENCE +SRSASN_CODE cell_sel_info_nb_v1350_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_integer(bref, delta_rx_lev_min_v1350, (int8_t)-8, (int8_t)-1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE cell_sel_info_nb_v1350_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(delta_rx_lev_min_v1350, bref, (int8_t)-8, (int8_t)-1)); + + return SRSASN_SUCCESS; +} +void cell_sel_info_nb_v1350_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("delta-RxLevMin-v1350", delta_rx_lev_min_v1350); + j.end_obj(); +} + +// PLMN-IdentityInfo-NB-r13 ::= SEQUENCE +SRSASN_CODE plmn_id_info_nb_r13_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(attach_without_pdn_connect_r13_present, 1)); + + HANDLE_CODE(plmn_id_r13.pack(bref)); + HANDLE_CODE(cell_reserved_for_oper_r13.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE plmn_id_info_nb_r13_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(attach_without_pdn_connect_r13_present, 1)); + + HANDLE_CODE(plmn_id_r13.unpack(bref)); + HANDLE_CODE(cell_reserved_for_oper_r13.unpack(bref)); + + return SRSASN_SUCCESS; +} +void plmn_id_info_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("plmn-Identity-r13"); + plmn_id_r13.to_json(j); + j.write_str("cellReservedForOperatorUse-r13", cell_reserved_for_oper_r13.to_string()); + if (attach_without_pdn_connect_r13_present) { + j.write_str("attachWithoutPDN-Connectivity-r13", "true"); + } + j.end_obj(); +} + +const char* plmn_id_info_nb_r13_s::cell_reserved_for_oper_r13_opts::to_string() const +{ + static const char* options[] = {"reserved", "notReserved"}; + return convert_enum_idx(options, 2, value, "plmn_id_info_nb_r13_s::cell_reserved_for_oper_r13_e_"); +} + +// SchedulingInfo-NB-r13 ::= SEQUENCE +SRSASN_CODE sched_info_nb_r13_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(si_periodicity_r13.pack(bref)); + HANDLE_CODE(si_repeat_pattern_r13.pack(bref)); + HANDLE_CODE(pack_dyn_seq_of(bref, sib_map_info_r13, 0, 31)); + HANDLE_CODE(si_tb_r13.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE sched_info_nb_r13_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(si_periodicity_r13.unpack(bref)); + HANDLE_CODE(si_repeat_pattern_r13.unpack(bref)); + HANDLE_CODE(unpack_dyn_seq_of(sib_map_info_r13, bref, 0, 31)); + HANDLE_CODE(si_tb_r13.unpack(bref)); + + return SRSASN_SUCCESS; +} +void sched_info_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("si-Periodicity-r13", si_periodicity_r13.to_string()); + j.write_str("si-RepetitionPattern-r13", si_repeat_pattern_r13.to_string()); + j.start_array("sib-MappingInfo-r13"); + for (const auto& e1 : sib_map_info_r13) { + j.write_str(e1.to_string()); + } + j.end_array(); + j.write_str("si-TB-r13", si_tb_r13.to_string()); + j.end_obj(); +} + +const char* sched_info_nb_r13_s::si_periodicity_r13_opts::to_string() const +{ + static const char* options[] = {"rf64", "rf128", "rf256", "rf512", "rf1024", "rf2048", "rf4096", "spare"}; + return convert_enum_idx(options, 8, value, "sched_info_nb_r13_s::si_periodicity_r13_e_"); +} +uint16_t sched_info_nb_r13_s::si_periodicity_r13_opts::to_number() const +{ + static const uint16_t options[] = {64, 128, 256, 512, 1024, 2048, 4096}; + return map_enum_number(options, 7, value, "sched_info_nb_r13_s::si_periodicity_r13_e_"); +} + +const char* sched_info_nb_r13_s::si_repeat_pattern_r13_opts::to_string() const +{ + static const char* options[] = {"every2ndRF", "every4thRF", "every8thRF", "every16thRF"}; + return convert_enum_idx(options, 4, value, "sched_info_nb_r13_s::si_repeat_pattern_r13_e_"); +} +uint8_t sched_info_nb_r13_s::si_repeat_pattern_r13_opts::to_number() const +{ + static const uint8_t options[] = {2, 4, 8, 16}; + return map_enum_number(options, 4, value, "sched_info_nb_r13_s::si_repeat_pattern_r13_e_"); +} + +const char* sched_info_nb_r13_s::si_tb_r13_opts::to_string() const +{ + static const char* options[] = {"b56", "b120", "b208", "b256", "b328", "b440", "b552", "b680"}; + return convert_enum_idx(options, 8, value, "sched_info_nb_r13_s::si_tb_r13_e_"); +} +uint16_t sched_info_nb_r13_s::si_tb_r13_opts::to_number() const +{ + static const uint16_t options[] = {56, 120, 208, 256, 328, 440, 552, 680}; + return map_enum_number(options, 8, value, "sched_info_nb_r13_s::si_tb_r13_e_"); +} + +// SystemInformationBlockType1-NB-v1430 ::= SEQUENCE +SRSASN_CODE sib_type1_nb_v1430_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(cell_sel_info_v1430_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (cell_sel_info_v1430_present) { + HANDLE_CODE(cell_sel_info_v1430.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE sib_type1_nb_v1430_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(cell_sel_info_v1430_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (cell_sel_info_v1430_present) { + HANDLE_CODE(cell_sel_info_v1430.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void sib_type1_nb_v1430_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (cell_sel_info_v1430_present) { + j.write_fieldname("cellSelectionInfo-v1430"); + cell_sel_info_v1430.to_json(j); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + +// SystemInformationBlockType14-NB-r13 ::= SEQUENCE +SRSASN_CODE sib_type14_nb_r13_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(ab_param_r13_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + + if (ab_param_r13_present) { + HANDLE_CODE(ab_param_r13.pack(bref)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + 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]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(ab_per_nrsrp_r15_present, 1)); + if (ab_per_nrsrp_r15_present) { + 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; +} +SRSASN_CODE sib_type14_nb_r13_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(ab_param_r13_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + + if (ab_param_r13_present) { + HANDLE_CODE(ab_param_r13.unpack(bref)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + if (ext) { + ext_groups_unpacker_guard group_flags(2); + group_flags.unpack(bref); + + if (group_flags[0]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.unpack(ab_per_nrsrp_r15_present, 1)); + if (ab_per_nrsrp_r15_present) { + 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; +} +void sib_type14_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (ab_param_r13_present) { + j.write_fieldname("ab-Param-r13"); + ab_param_r13.to_json(j); + } + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (ext) { + 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(); +} + +void sib_type14_nb_r13_s::ab_param_r13_c_::destroy_() +{ + switch (type_) { + case types::ab_common_r13: + c.destroy(); + break; + case types::ab_per_plmn_list_r13: + c.destroy(); + break; + default: + break; + } +} +void sib_type14_nb_r13_s::ab_param_r13_c_::set(types::options e) +{ + destroy_(); + type_ = e; + switch (type_) { + case types::ab_common_r13: + c.init(); + break; + case types::ab_per_plmn_list_r13: + c.init(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); + } +} +sib_type14_nb_r13_s::ab_param_r13_c_::ab_param_r13_c_(const sib_type14_nb_r13_s::ab_param_r13_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::ab_common_r13: + c.init(other.c.get()); + break; + case types::ab_per_plmn_list_r13: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); + } +} +sib_type14_nb_r13_s::ab_param_r13_c_& +sib_type14_nb_r13_s::ab_param_r13_c_::operator=(const sib_type14_nb_r13_s::ab_param_r13_c_& other) +{ + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::ab_common_r13: + c.set(other.c.get()); + break; + case types::ab_per_plmn_list_r13: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); + } + + return *this; +} +ab_cfg_nb_r13_s& sib_type14_nb_r13_s::ab_param_r13_c_::set_ab_common_r13() +{ + set(types::ab_common_r13); + return c.get(); +} +sib_type14_nb_r13_s::ab_param_r13_c_::ab_per_plmn_list_r13_l_& +sib_type14_nb_r13_s::ab_param_r13_c_::set_ab_per_plmn_list_r13() +{ + set(types::ab_per_plmn_list_r13); + return c.get(); +} +void sib_type14_nb_r13_s::ab_param_r13_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::ab_common_r13: + j.write_fieldname("ab-Common-r13"); + c.get().to_json(j); + break; + case types::ab_per_plmn_list_r13: + j.start_array("ab-PerPLMN-List-r13"); + for (const auto& e1 : c.get()) { + e1.to_json(j); + } + j.end_array(); + break; + default: + log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); + } + j.end_obj(); +} +SRSASN_CODE sib_type14_nb_r13_s::ab_param_r13_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::ab_common_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::ab_per_plmn_list_r13: + HANDLE_CODE(pack_dyn_seq_of(bref, c.get(), 1, 6)); + break; + default: + log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE sib_type14_nb_r13_s::ab_param_r13_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::ab_common_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::ab_per_plmn_list_r13: + HANDLE_CODE(unpack_dyn_seq_of(c.get(), bref, 1, 6)); + break; + default: + log_invalid_choice_id(type_, "sib_type14_nb_r13_s::ab_param_r13_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +const char* sib_type14_nb_r13_s::ab_param_r13_c_::types_opts::to_string() const +{ + static const char* options[] = {"ab-Common-r13", "ab-PerPLMN-List-r13"}; + return convert_enum_idx(options, 2, value, "sib_type14_nb_r13_s::ab_param_r13_c_::types"); +} + +const char* sib_type14_nb_r13_s::ab_per_nrsrp_r15_opts::to_string() const +{ + static const char* options[] = {"thresh1", "thresh2"}; + return convert_enum_idx(options, 2, value, "sib_type14_nb_r13_s::ab_per_nrsrp_r15_e_"); +} +uint8_t sib_type14_nb_r13_s::ab_per_nrsrp_r15_opts::to_number() const +{ + static const uint8_t options[] = {1, 2}; + return map_enum_number(options, 2, value, "sib_type14_nb_r13_s::ab_per_nrsrp_r15_e_"); +} + +// SystemInformationBlockType15-NB-r14 ::= SEQUENCE +SRSASN_CODE sib_type15_nb_r14_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(mbms_sai_intra_freq_r14_present, 1)); + HANDLE_CODE(bref.pack(mbms_sai_inter_freq_list_r14_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + + if (mbms_sai_intra_freq_r14_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, mbms_sai_intra_freq_r14, 1, 64, integer_packer(0, 65535))); + } + if (mbms_sai_inter_freq_list_r14_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, mbms_sai_inter_freq_list_r14, 1, 8)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE sib_type15_nb_r14_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(mbms_sai_intra_freq_r14_present, 1)); + HANDLE_CODE(bref.unpack(mbms_sai_inter_freq_list_r14_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + + if (mbms_sai_intra_freq_r14_present) { + HANDLE_CODE(unpack_dyn_seq_of(mbms_sai_intra_freq_r14, bref, 1, 64, integer_packer(0, 65535))); + } + if (mbms_sai_inter_freq_list_r14_present) { + HANDLE_CODE(unpack_dyn_seq_of(mbms_sai_inter_freq_list_r14, bref, 1, 8)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void sib_type15_nb_r14_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (mbms_sai_intra_freq_r14_present) { + j.start_array("mbms-SAI-IntraFreq-r14"); + for (const auto& e1 : mbms_sai_intra_freq_r14) { + j.write_int(e1); + } + j.end_array(); + } + if (mbms_sai_inter_freq_list_r14_present) { + j.start_array("mbms-SAI-InterFreqList-r14"); + for (const auto& e1 : mbms_sai_inter_freq_list_r14) { + 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(); +} + +// SystemInformationBlockType2-NB-r13 ::= SEQUENCE +SRSASN_CODE sib_type2_nb_r13_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(multi_band_info_list_r13_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + + HANDLE_CODE(rr_cfg_common_r13.pack(bref)); + HANDLE_CODE(ue_timers_and_consts_r13.pack(bref)); + HANDLE_CODE(bref.pack(freq_info_r13.ul_carrier_freq_r13_present, 1)); + if (freq_info_r13.ul_carrier_freq_r13_present) { + HANDLE_CODE(freq_info_r13.ul_carrier_freq_r13.pack(bref)); + } + HANDLE_CODE(pack_integer(bref, freq_info_r13.add_spec_emission_r13, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(time_align_timer_common_r13.pack(bref)); + if (multi_band_info_list_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_r13, 1, 8, integer_packer(1, 32))); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + if (ext) { + ext_groups_packer_guard group_flags; + group_flags[0] |= cp_reest_r14_present; + group_flags[1] |= serving_cell_meas_info_r14_present; + group_flags[1] |= cqi_report_r14_present; + group_flags[2] |= enhanced_phr_r15_present; + 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]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(cp_reest_r14_present, 1)); + } + if (group_flags[1]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(serving_cell_meas_info_r14_present, 1)); + HANDLE_CODE(bref.pack(cqi_report_r14_present, 1)); + } + if (group_flags[2]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(enhanced_phr_r15_present, 1)); + HANDLE_CODE(bref.pack(freq_info_v1530.is_present(), 1)); + HANDLE_CODE(bref.pack(cp_edt_r15_present, 1)); + HANDLE_CODE(bref.pack(up_edt_r15_present, 1)); + if (freq_info_v1530.is_present()) { + 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; +} +SRSASN_CODE sib_type2_nb_r13_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(multi_band_info_list_r13_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + + HANDLE_CODE(rr_cfg_common_r13.unpack(bref)); + HANDLE_CODE(ue_timers_and_consts_r13.unpack(bref)); + HANDLE_CODE(bref.unpack(freq_info_r13.ul_carrier_freq_r13_present, 1)); + if (freq_info_r13.ul_carrier_freq_r13_present) { + HANDLE_CODE(freq_info_r13.ul_carrier_freq_r13.unpack(bref)); + } + HANDLE_CODE(unpack_integer(freq_info_r13.add_spec_emission_r13, bref, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(time_align_timer_common_r13.unpack(bref)); + if (multi_band_info_list_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_r13, bref, 1, 8, integer_packer(1, 32))); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + if (ext) { + ext_groups_unpacker_guard group_flags(4); + group_flags.unpack(bref); + + if (group_flags[0]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.unpack(cp_reest_r14_present, 1)); + } + if (group_flags[1]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.unpack(serving_cell_meas_info_r14_present, 1)); + HANDLE_CODE(bref.unpack(cqi_report_r14_present, 1)); + } + if (group_flags[2]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.unpack(enhanced_phr_r15_present, 1)); + bool freq_info_v1530_present; + HANDLE_CODE(bref.unpack(freq_info_v1530_present, 1)); + freq_info_v1530.set_present(freq_info_v1530_present); + HANDLE_CODE(bref.unpack(cp_edt_r15_present, 1)); + HANDLE_CODE(bref.unpack(up_edt_r15_present, 1)); + if (freq_info_v1530.is_present()) { + 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; +} +void sib_type2_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("radioResourceConfigCommon-r13"); + rr_cfg_common_r13.to_json(j); + j.write_fieldname("ue-TimersAndConstants-r13"); + ue_timers_and_consts_r13.to_json(j); + j.write_fieldname("freqInfo-r13"); + j.start_obj(); + if (freq_info_r13.ul_carrier_freq_r13_present) { + j.write_fieldname("ul-CarrierFreq-r13"); + freq_info_r13.ul_carrier_freq_r13.to_json(j); + } + j.write_int("additionalSpectrumEmission-r13", freq_info_r13.add_spec_emission_r13); + j.end_obj(); + j.write_str("timeAlignmentTimerCommon-r13", time_align_timer_common_r13.to_string()); + if (multi_band_info_list_r13_present) { + j.start_array("multiBandInfoList-r13"); + for (const auto& e1 : multi_band_info_list_r13) { + j.write_int(e1); + } + j.end_array(); + } + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (ext) { + if (cp_reest_r14_present) { + j.write_str("cp-Reestablishment-r14", "true"); + } + if (serving_cell_meas_info_r14_present) { + j.write_str("servingCellMeasInfo-r14", "true"); + } + if (cqi_report_r14_present) { + j.write_str("cqi-Reporting-r14", "true"); + } + if (enhanced_phr_r15_present) { + j.write_str("enhancedPHR-r15", "true"); + } + if (freq_info_v1530.is_present()) { + j.write_fieldname("freqInfo-v1530"); + j.start_obj(); + j.write_str("tdd-UL-DL-AlignmentOffset-r15", freq_info_v1530->tdd_ul_dl_align_offset_r15.to_string()); + j.end_obj(); + } + if (cp_edt_r15_present) { + j.write_str("cp-EDT-r15", "true"); + } + 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(); +} + +// SystemInformationBlockType20-NB-r14 ::= SEQUENCE +SRSASN_CODE sib_type20_nb_r14_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(sc_mcch_sched_info_r14_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + + HANDLE_CODE(npdcch_sc_mcch_cfg_r14.pack(bref)); + HANDLE_CODE(sc_mcch_carrier_cfg_r14.pack(bref)); + HANDLE_CODE(sc_mcch_repeat_period_r14.pack(bref)); + HANDLE_CODE(pack_integer(bref, sc_mcch_offset_r14, (uint8_t)0u, (uint8_t)10u)); + HANDLE_CODE(sc_mcch_mod_period_r14.pack(bref)); + if (sc_mcch_sched_info_r14_present) { + HANDLE_CODE(sc_mcch_sched_info_r14.pack(bref)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE sib_type20_nb_r14_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(sc_mcch_sched_info_r14_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + + HANDLE_CODE(npdcch_sc_mcch_cfg_r14.unpack(bref)); + HANDLE_CODE(sc_mcch_carrier_cfg_r14.unpack(bref)); + HANDLE_CODE(sc_mcch_repeat_period_r14.unpack(bref)); + HANDLE_CODE(unpack_integer(sc_mcch_offset_r14, bref, (uint8_t)0u, (uint8_t)10u)); + HANDLE_CODE(sc_mcch_mod_period_r14.unpack(bref)); + if (sc_mcch_sched_info_r14_present) { + HANDLE_CODE(sc_mcch_sched_info_r14.unpack(bref)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void sib_type20_nb_r14_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("npdcch-SC-MCCH-Config-r14"); + npdcch_sc_mcch_cfg_r14.to_json(j); + j.write_fieldname("sc-mcch-CarrierConfig-r14"); + sc_mcch_carrier_cfg_r14.to_json(j); + j.write_str("sc-mcch-RepetitionPeriod-r14", sc_mcch_repeat_period_r14.to_string()); + j.write_int("sc-mcch-Offset-r14", sc_mcch_offset_r14); + j.write_str("sc-mcch-ModificationPeriod-r14", sc_mcch_mod_period_r14.to_string()); + if (sc_mcch_sched_info_r14_present) { + j.write_fieldname("sc-mcch-SchedulingInfo-r14"); + sc_mcch_sched_info_r14.to_json(j); + } + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + j.end_obj(); +} + +void sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::destroy_() +{ + switch (type_) { + case types::dl_carrier_cfg_r14: + c.destroy(); + break; + default: + break; + } +} +void sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::set(types::options e) +{ + destroy_(); + type_ = e; + switch (type_) { + case types::dl_carrier_cfg_r14: + c.init(); + break; + case types::dl_carrier_idx_r14: + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); + } +} +sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::sc_mcch_carrier_cfg_r14_c_( + const sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::dl_carrier_cfg_r14: + c.init(other.c.get()); + break; + case types::dl_carrier_idx_r14: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); + } +} +sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_& +sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::operator=(const sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_& other) +{ + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::dl_carrier_cfg_r14: + c.set(other.c.get()); + break; + case types::dl_carrier_idx_r14: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); + } + + return *this; +} +dl_carrier_cfg_common_nb_r14_s& sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::set_dl_carrier_cfg_r14() +{ + set(types::dl_carrier_cfg_r14); + return c.get(); +} +uint8_t& sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::set_dl_carrier_idx_r14() +{ + set(types::dl_carrier_idx_r14); + return c.get(); +} +void sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::dl_carrier_cfg_r14: + j.write_fieldname("dl-CarrierConfig-r14"); + c.get().to_json(j); + break; + case types::dl_carrier_idx_r14: + j.write_int("dl-CarrierIndex-r14", c.get()); + break; + default: + log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); + } + j.end_obj(); +} +SRSASN_CODE sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::dl_carrier_cfg_r14: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::dl_carrier_idx_r14: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)15u)); + break; + default: + log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::dl_carrier_cfg_r14: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::dl_carrier_idx_r14: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)15u)); + break; + default: + log_invalid_choice_id(type_, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +const char* sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::types_opts::to_string() const +{ + static const char* options[] = {"dl-CarrierConfig-r14", "dl-CarrierIndex-r14"}; + return convert_enum_idx(options, 2, value, "sib_type20_nb_r14_s::sc_mcch_carrier_cfg_r14_c_::types"); +} + +const char* sib_type20_nb_r14_s::sc_mcch_repeat_period_r14_opts::to_string() const +{ + static const char* options[] = {"rf32", "rf128", "rf512", "rf1024", "rf2048", "rf4096", "rf8192", "rf16384"}; + return convert_enum_idx(options, 8, value, "sib_type20_nb_r14_s::sc_mcch_repeat_period_r14_e_"); +} +uint16_t sib_type20_nb_r14_s::sc_mcch_repeat_period_r14_opts::to_number() const +{ + static const uint16_t options[] = {32, 128, 512, 1024, 2048, 4096, 8192, 16384}; + return map_enum_number(options, 8, value, "sib_type20_nb_r14_s::sc_mcch_repeat_period_r14_e_"); +} + +const char* sib_type20_nb_r14_s::sc_mcch_mod_period_r14_opts::to_string() const +{ + static const char* options[] = {"rf32", + "rf128", + "rf256", + "rf512", + "rf1024", + "rf2048", + "rf4096", + "rf8192", + "rf16384", + "rf32768", + "rf65536", + "rf131072", + "rf262144", + "rf524288", + "rf1048576", + "spare1"}; + return convert_enum_idx(options, 16, value, "sib_type20_nb_r14_s::sc_mcch_mod_period_r14_e_"); +} +uint32_t sib_type20_nb_r14_s::sc_mcch_mod_period_r14_opts::to_number() const +{ + static const uint32_t options[] = { + 32, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576}; + return map_enum_number(options, 15, value, "sib_type20_nb_r14_s::sc_mcch_mod_period_r14_e_"); +} + +// SystemInformationBlockType22-NB-r14 ::= SEQUENCE +SRSASN_CODE sib_type22_nb_r14_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(dl_cfg_list_r14_present, 1)); + HANDLE_CODE(bref.pack(ul_cfg_list_r14_present, 1)); + HANDLE_CODE(bref.pack(paging_weight_anchor_r14_present, 1)); + HANDLE_CODE(bref.pack(nprach_probability_anchor_list_r14_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + + if (dl_cfg_list_r14_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, dl_cfg_list_r14, 1, 15)); + } + if (ul_cfg_list_r14_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, ul_cfg_list_r14, 1, 15)); + } + if (paging_weight_anchor_r14_present) { + HANDLE_CODE(paging_weight_anchor_r14.pack(bref)); + } + if (nprach_probability_anchor_list_r14_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, nprach_probability_anchor_list_r14, 1, 3)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + if (ext) { + 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]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(mixed_operation_mode_cfg_r15.is_present(), 1)); + HANDLE_CODE(bref.pack(ul_cfg_list_r15.is_present(), 1)); + if (mixed_operation_mode_cfg_r15.is_present()) { + HANDLE_CODE(bref.pack(mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15_present, 1)); + HANDLE_CODE(bref.pack(mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15_present, 1)); + HANDLE_CODE(bref.pack(mixed_operation_mode_cfg_r15->paging_distribution_r15_present, 1)); + HANDLE_CODE(bref.pack(mixed_operation_mode_cfg_r15->nprach_distribution_r15_present, 1)); + if (mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15, 1, 15)); + } + if (mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15, 1, 15)); + } + } + if (ul_cfg_list_r15.is_present()) { + 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; +} +SRSASN_CODE sib_type22_nb_r14_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(dl_cfg_list_r14_present, 1)); + HANDLE_CODE(bref.unpack(ul_cfg_list_r14_present, 1)); + HANDLE_CODE(bref.unpack(paging_weight_anchor_r14_present, 1)); + HANDLE_CODE(bref.unpack(nprach_probability_anchor_list_r14_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + + if (dl_cfg_list_r14_present) { + HANDLE_CODE(unpack_dyn_seq_of(dl_cfg_list_r14, bref, 1, 15)); + } + if (ul_cfg_list_r14_present) { + HANDLE_CODE(unpack_dyn_seq_of(ul_cfg_list_r14, bref, 1, 15)); + } + if (paging_weight_anchor_r14_present) { + HANDLE_CODE(paging_weight_anchor_r14.unpack(bref)); + } + if (nprach_probability_anchor_list_r14_present) { + HANDLE_CODE(unpack_dyn_seq_of(nprach_probability_anchor_list_r14, bref, 1, 3)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.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 mixed_operation_mode_cfg_r15_present; + HANDLE_CODE(bref.unpack(mixed_operation_mode_cfg_r15_present, 1)); + mixed_operation_mode_cfg_r15.set_present(mixed_operation_mode_cfg_r15_present); + bool ul_cfg_list_r15_present; + HANDLE_CODE(bref.unpack(ul_cfg_list_r15_present, 1)); + ul_cfg_list_r15.set_present(ul_cfg_list_r15_present); + if (mixed_operation_mode_cfg_r15.is_present()) { + HANDLE_CODE(bref.unpack(mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15_present, 1)); + HANDLE_CODE(bref.unpack(mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15_present, 1)); + HANDLE_CODE(bref.unpack(mixed_operation_mode_cfg_r15->paging_distribution_r15_present, 1)); + HANDLE_CODE(bref.unpack(mixed_operation_mode_cfg_r15->nprach_distribution_r15_present, 1)); + if (mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15_present) { + HANDLE_CODE(unpack_dyn_seq_of(mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15, bref, 1, 15)); + } + if (mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15_present) { + HANDLE_CODE(unpack_dyn_seq_of(mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15, bref, 1, 15)); + } + } + if (ul_cfg_list_r15.is_present()) { + 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; +} +void sib_type22_nb_r14_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (dl_cfg_list_r14_present) { + j.start_array("dl-ConfigList-r14"); + for (const auto& e1 : dl_cfg_list_r14) { + e1.to_json(j); + } + j.end_array(); + } + if (ul_cfg_list_r14_present) { + j.start_array("ul-ConfigList-r14"); + for (const auto& e1 : ul_cfg_list_r14) { + e1.to_json(j); + } + j.end_array(); + } + if (paging_weight_anchor_r14_present) { + j.write_str("pagingWeightAnchor-r14", paging_weight_anchor_r14.to_string()); + } + if (nprach_probability_anchor_list_r14_present) { + j.start_array("nprach-ProbabilityAnchorList-r14"); + for (const auto& e1 : nprach_probability_anchor_list_r14) { + e1.to_json(j); + } + j.end_array(); + } + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (ext) { + if (mixed_operation_mode_cfg_r15.is_present()) { + j.write_fieldname("mixedOperationModeConfig-r15"); + j.start_obj(); + if (mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15_present) { + j.start_array("dl-ConfigListMixed-r15"); + for (const auto& e1 : mixed_operation_mode_cfg_r15->dl_cfg_list_mixed_r15) { + e1.to_json(j); + } + j.end_array(); + } + if (mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15_present) { + j.start_array("ul-ConfigListMixed-r15"); + for (const auto& e1 : mixed_operation_mode_cfg_r15->ul_cfg_list_mixed_r15) { + e1.to_json(j); + } + j.end_array(); + } + if (mixed_operation_mode_cfg_r15->paging_distribution_r15_present) { + j.write_str("pagingDistribution-r15", "true"); + } + if (mixed_operation_mode_cfg_r15->nprach_distribution_r15_present) { + j.write_str("nprach-Distribution-r15", "true"); + } + j.end_obj(); + } + if (ul_cfg_list_r15.is_present()) { + j.start_array("ul-ConfigList-r15"); + for (const auto& e1 : *ul_cfg_list_r15) { + e1.to_json(j); + } + 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(); +} + +// SystemInformationBlockType23-NB-r15 ::= SEQUENCE +SRSASN_CODE sib_type23_nb_r15_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(ul_cfg_list_v1530_present, 1)); + HANDLE_CODE(bref.pack(ul_cfg_list_mixed_v1530_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + + if (ul_cfg_list_v1530_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, ul_cfg_list_v1530, 1, 15)); + } + if (ul_cfg_list_mixed_v1530_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, ul_cfg_list_mixed_v1530, 1, 15)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE sib_type23_nb_r15_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(ul_cfg_list_v1530_present, 1)); + HANDLE_CODE(bref.unpack(ul_cfg_list_mixed_v1530_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + + if (ul_cfg_list_v1530_present) { + HANDLE_CODE(unpack_dyn_seq_of(ul_cfg_list_v1530, bref, 1, 15)); + } + if (ul_cfg_list_mixed_v1530_present) { + HANDLE_CODE(unpack_dyn_seq_of(ul_cfg_list_mixed_v1530, bref, 1, 15)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void sib_type23_nb_r15_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (ul_cfg_list_v1530_present) { + j.start_array("ul-ConfigList-v1530"); + for (const auto& e1 : ul_cfg_list_v1530) { + e1.to_json(j); + } + j.end_array(); + } + if (ul_cfg_list_mixed_v1530_present) { + j.start_array("ul-ConfigListMixed-v1530"); + for (const auto& e1 : ul_cfg_list_mixed_v1530) { + 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(); +} + +// 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 +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(freq_band_info_r13_present, 1)); + HANDLE_CODE(bref.pack(multi_band_info_list_r13_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + + HANDLE_CODE(cell_resel_info_common_r13.q_hyst_r13.pack(bref)); + HANDLE_CODE(pack_integer(bref, cell_resel_serving_freq_info_r13.s_non_intra_search_r13, (uint8_t)0u, (uint8_t)31u)); + HANDLE_CODE(bref.pack(intra_freq_cell_resel_info_r13.q_qual_min_r13_present, 1)); + HANDLE_CODE(bref.pack(intra_freq_cell_resel_info_r13.p_max_r13_present, 1)); + HANDLE_CODE(pack_integer(bref, intra_freq_cell_resel_info_r13.q_rx_lev_min_r13, (int8_t)-70, (int8_t)-22)); + if (intra_freq_cell_resel_info_r13.q_qual_min_r13_present) { + HANDLE_CODE(pack_integer(bref, intra_freq_cell_resel_info_r13.q_qual_min_r13, (int8_t)-34, (int8_t)-3)); + } + if (intra_freq_cell_resel_info_r13.p_max_r13_present) { + HANDLE_CODE(pack_integer(bref, intra_freq_cell_resel_info_r13.p_max_r13, (int8_t)-30, (int8_t)33)); + } + HANDLE_CODE(pack_integer(bref, intra_freq_cell_resel_info_r13.s_intra_search_p_r13, (uint8_t)0u, (uint8_t)31u)); + HANDLE_CODE(intra_freq_cell_resel_info_r13.t_resel_r13.pack(bref)); + if (freq_band_info_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_info_r13, 1, 4)); + } + if (multi_band_info_list_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_r13, 1, 8, SeqOfPacker(1, 4, Packer()))); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + if (ext) { + ext_groups_packer_guard group_flags; + group_flags[0] |= intra_freq_cell_resel_info_v1350.is_present(); + group_flags[1] |= intra_freq_cell_resel_info_v1360.is_present(); + group_flags[2] |= intra_freq_cell_resel_info_v1430.is_present(); + 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]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(intra_freq_cell_resel_info_v1350.is_present(), 1)); + if (intra_freq_cell_resel_info_v1350.is_present()) { + HANDLE_CODE(intra_freq_cell_resel_info_v1350->pack(bref)); + } + } + if (group_flags[1]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(intra_freq_cell_resel_info_v1360.is_present(), 1)); + if (intra_freq_cell_resel_info_v1360.is_present()) { + HANDLE_CODE(intra_freq_cell_resel_info_v1360->pack(bref)); + } + } + if (group_flags[2]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(intra_freq_cell_resel_info_v1430.is_present(), 1)); + if (intra_freq_cell_resel_info_v1430.is_present()) { + HANDLE_CODE(intra_freq_cell_resel_info_v1430->pack(bref)); + } + } + if (group_flags[3]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(cell_resel_info_common_v1450.is_present(), 1)); + if (cell_resel_info_common_v1450.is_present()) { + HANDLE_CODE(cell_resel_info_common_v1450->pack(bref)); + } + } + if (group_flags[4]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(nsss_rrm_cfg_r15.is_present(), 1)); + HANDLE_CODE(bref.pack(npbch_rrm_cfg_r15_present, 1)); + if (nsss_rrm_cfg_r15.is_present()) { + 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; +} +SRSASN_CODE sib_type3_nb_r13_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(freq_band_info_r13_present, 1)); + HANDLE_CODE(bref.unpack(multi_band_info_list_r13_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + + HANDLE_CODE(cell_resel_info_common_r13.q_hyst_r13.unpack(bref)); + HANDLE_CODE(unpack_integer(cell_resel_serving_freq_info_r13.s_non_intra_search_r13, bref, (uint8_t)0u, (uint8_t)31u)); + HANDLE_CODE(bref.unpack(intra_freq_cell_resel_info_r13.q_qual_min_r13_present, 1)); + HANDLE_CODE(bref.unpack(intra_freq_cell_resel_info_r13.p_max_r13_present, 1)); + HANDLE_CODE(unpack_integer(intra_freq_cell_resel_info_r13.q_rx_lev_min_r13, bref, (int8_t)-70, (int8_t)-22)); + if (intra_freq_cell_resel_info_r13.q_qual_min_r13_present) { + HANDLE_CODE(unpack_integer(intra_freq_cell_resel_info_r13.q_qual_min_r13, bref, (int8_t)-34, (int8_t)-3)); + } + if (intra_freq_cell_resel_info_r13.p_max_r13_present) { + HANDLE_CODE(unpack_integer(intra_freq_cell_resel_info_r13.p_max_r13, bref, (int8_t)-30, (int8_t)33)); + } + HANDLE_CODE(unpack_integer(intra_freq_cell_resel_info_r13.s_intra_search_p_r13, bref, (uint8_t)0u, (uint8_t)31u)); + HANDLE_CODE(intra_freq_cell_resel_info_r13.t_resel_r13.unpack(bref)); + if (freq_band_info_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(freq_band_info_r13, bref, 1, 4)); + } + if (multi_band_info_list_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_r13, bref, 1, 8, SeqOfPacker(1, 4, Packer()))); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + if (ext) { + ext_groups_unpacker_guard group_flags(6); + group_flags.unpack(bref); + + if (group_flags[0]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool intra_freq_cell_resel_info_v1350_present; + HANDLE_CODE(bref.unpack(intra_freq_cell_resel_info_v1350_present, 1)); + intra_freq_cell_resel_info_v1350.set_present(intra_freq_cell_resel_info_v1350_present); + if (intra_freq_cell_resel_info_v1350.is_present()) { + HANDLE_CODE(intra_freq_cell_resel_info_v1350->unpack(bref)); + } + } + if (group_flags[1]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool intra_freq_cell_resel_info_v1360_present; + HANDLE_CODE(bref.unpack(intra_freq_cell_resel_info_v1360_present, 1)); + intra_freq_cell_resel_info_v1360.set_present(intra_freq_cell_resel_info_v1360_present); + if (intra_freq_cell_resel_info_v1360.is_present()) { + HANDLE_CODE(intra_freq_cell_resel_info_v1360->unpack(bref)); + } + } + if (group_flags[2]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool intra_freq_cell_resel_info_v1430_present; + HANDLE_CODE(bref.unpack(intra_freq_cell_resel_info_v1430_present, 1)); + intra_freq_cell_resel_info_v1430.set_present(intra_freq_cell_resel_info_v1430_present); + if (intra_freq_cell_resel_info_v1430.is_present()) { + HANDLE_CODE(intra_freq_cell_resel_info_v1430->unpack(bref)); + } + } + if (group_flags[3]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool cell_resel_info_common_v1450_present; + HANDLE_CODE(bref.unpack(cell_resel_info_common_v1450_present, 1)); + cell_resel_info_common_v1450.set_present(cell_resel_info_common_v1450_present); + if (cell_resel_info_common_v1450.is_present()) { + HANDLE_CODE(cell_resel_info_common_v1450->unpack(bref)); + } + } + if (group_flags[4]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool nsss_rrm_cfg_r15_present; + HANDLE_CODE(bref.unpack(nsss_rrm_cfg_r15_present, 1)); + nsss_rrm_cfg_r15.set_present(nsss_rrm_cfg_r15_present); + HANDLE_CODE(bref.unpack(npbch_rrm_cfg_r15_present, 1)); + if (nsss_rrm_cfg_r15.is_present()) { + 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; +} +void sib_type3_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("cellReselectionInfoCommon-r13"); + j.start_obj(); + j.write_str("q-Hyst-r13", cell_resel_info_common_r13.q_hyst_r13.to_string()); + j.end_obj(); + j.write_fieldname("cellReselectionServingFreqInfo-r13"); + j.start_obj(); + j.write_int("s-NonIntraSearch-r13", cell_resel_serving_freq_info_r13.s_non_intra_search_r13); + j.end_obj(); + j.write_fieldname("intraFreqCellReselectionInfo-r13"); + j.start_obj(); + j.write_int("q-RxLevMin-r13", intra_freq_cell_resel_info_r13.q_rx_lev_min_r13); + if (intra_freq_cell_resel_info_r13.q_qual_min_r13_present) { + j.write_int("q-QualMin-r13", intra_freq_cell_resel_info_r13.q_qual_min_r13); + } + if (intra_freq_cell_resel_info_r13.p_max_r13_present) { + j.write_int("p-Max-r13", intra_freq_cell_resel_info_r13.p_max_r13); + } + j.write_int("s-IntraSearchP-r13", intra_freq_cell_resel_info_r13.s_intra_search_p_r13); + j.write_str("t-Reselection-r13", intra_freq_cell_resel_info_r13.t_resel_r13.to_string()); + j.end_obj(); + if (freq_band_info_r13_present) { + j.start_array("freqBandInfo-r13"); + for (const auto& e1 : freq_band_info_r13) { + e1.to_json(j); + } + j.end_array(); + } + if (multi_band_info_list_r13_present) { + j.start_array("multiBandInfoList-r13"); + for (const auto& e1 : multi_band_info_list_r13) { + j.start_array(); + for (const auto& e2 : e1) { + e2.to_json(j); + } + j.end_array(); + } + j.end_array(); + } + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (ext) { + if (intra_freq_cell_resel_info_v1350.is_present()) { + j.write_fieldname("intraFreqCellReselectionInfo-v1350"); + intra_freq_cell_resel_info_v1350->to_json(j); + } + if (intra_freq_cell_resel_info_v1360.is_present()) { + j.write_fieldname("intraFreqCellReselectionInfo-v1360"); + intra_freq_cell_resel_info_v1360->to_json(j); + } + if (intra_freq_cell_resel_info_v1430.is_present()) { + j.write_fieldname("intraFreqCellReselectionInfo-v1430"); + intra_freq_cell_resel_info_v1430->to_json(j); + } + if (cell_resel_info_common_v1450.is_present()) { + j.write_fieldname("cellReselectionInfoCommon-v1450"); + cell_resel_info_common_v1450->to_json(j); + } + if (nsss_rrm_cfg_r15.is_present()) { + j.write_fieldname("nsss-RRM-Config-r15"); + nsss_rrm_cfg_r15->to_json(j); + } + 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(); +} + +const char* sib_type3_nb_r13_s::cell_resel_info_common_r13_s_::q_hyst_r13_opts::to_string() const +{ + static const char* options[] = {"dB0", + "dB1", + "dB2", + "dB3", + "dB4", + "dB5", + "dB6", + "dB8", + "dB10", + "dB12", + "dB14", + "dB16", + "dB18", + "dB20", + "dB22", + "dB24"}; + return convert_enum_idx(options, 16, value, "sib_type3_nb_r13_s::cell_resel_info_common_r13_s_::q_hyst_r13_e_"); +} +uint8_t sib_type3_nb_r13_s::cell_resel_info_common_r13_s_::q_hyst_r13_opts::to_number() const +{ + static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24}; + return map_enum_number(options, 16, value, "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_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_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)); + } + + if (ext) { + ext_groups_packer_guard group_flags; + group_flags[0] |= nsss_rrm_cfg_r15.is_present(); + group_flags[0] |= intra_freq_neigh_cell_list_v1530.is_present(); + group_flags.pack(bref); + + if (group_flags[0]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(nsss_rrm_cfg_r15.is_present(), 1)); + HANDLE_CODE(bref.pack(intra_freq_neigh_cell_list_v1530.is_present(), 1)); + if (nsss_rrm_cfg_r15.is_present()) { + HANDLE_CODE(nsss_rrm_cfg_r15->pack(bref)); + } + if (intra_freq_neigh_cell_list_v1530.is_present()) { + HANDLE_CODE(pack_dyn_seq_of(bref, *intra_freq_neigh_cell_list_v1530, 1, 16)); + } + } + } + return SRSASN_SUCCESS; +} +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_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_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)); + } + + 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 nsss_rrm_cfg_r15_present; + HANDLE_CODE(bref.unpack(nsss_rrm_cfg_r15_present, 1)); + nsss_rrm_cfg_r15.set_present(nsss_rrm_cfg_r15_present); + bool intra_freq_neigh_cell_list_v1530_present; + HANDLE_CODE(bref.unpack(intra_freq_neigh_cell_list_v1530_present, 1)); + intra_freq_neigh_cell_list_v1530.set_present(intra_freq_neigh_cell_list_v1530_present); + if (nsss_rrm_cfg_r15.is_present()) { + HANDLE_CODE(nsss_rrm_cfg_r15->unpack(bref)); + } + if (intra_freq_neigh_cell_list_v1530.is_present()) { + HANDLE_CODE(unpack_dyn_seq_of(*intra_freq_neigh_cell_list_v1530, bref, 1, 16)); + } + } + } + return SRSASN_SUCCESS; +} +void sib_type4_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (intra_freq_neigh_cell_list_r13_present) { + j.start_array("intraFreqNeighCellList-r13"); + for (const auto& e1 : intra_freq_neigh_cell_list_r13) { + e1.to_json(j); + } + j.end_array(); + } + 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(); + } + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (ext) { + if (nsss_rrm_cfg_r15.is_present()) { + j.write_fieldname("nsss-RRM-Config-r15"); + nsss_rrm_cfg_r15->to_json(j); + } + if (intra_freq_neigh_cell_list_v1530.is_present()) { + j.start_array("intraFreqNeighCellList-v1530"); + for (const auto& e1 : *intra_freq_neigh_cell_list_v1530) { + e1.to_json(j); + } + j.end_array(); + } + } + j.end_obj(); +} + +// SystemInformationBlockType5-NB-r13 ::= SEQUENCE +SRSASN_CODE sib_type5_nb_r13_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + + HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_carrier_freq_list_r13, 1, 8)); + HANDLE_CODE(t_resel_r13.pack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + if (ext) { + ext_groups_packer_guard group_flags; + group_flags[0] |= scptm_freq_offset_r14_present; + group_flags.pack(bref); + + if (group_flags[0]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(scptm_freq_offset_r14_present, 1)); + if (scptm_freq_offset_r14_present) { + HANDLE_CODE(pack_integer(bref, scptm_freq_offset_r14, (uint8_t)1u, (uint8_t)8u)); + } + } + } + return SRSASN_SUCCESS; +} +SRSASN_CODE sib_type5_nb_r13_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + + HANDLE_CODE(unpack_dyn_seq_of(inter_freq_carrier_freq_list_r13, bref, 1, 8)); + HANDLE_CODE(t_resel_r13.unpack(bref)); + if (late_non_crit_ext_present) { + 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); + + HANDLE_CODE(bref.unpack(scptm_freq_offset_r14_present, 1)); + if (scptm_freq_offset_r14_present) { + HANDLE_CODE(unpack_integer(scptm_freq_offset_r14, bref, (uint8_t)1u, (uint8_t)8u)); + } + } + } + return SRSASN_SUCCESS; +} +void sib_type5_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.start_array("interFreqCarrierFreqList-r13"); + for (const auto& e1 : inter_freq_carrier_freq_list_r13) { + e1.to_json(j); + } + j.end_array(); + j.write_str("t-Reselection-r13", t_resel_r13.to_string()); + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (ext) { + if (scptm_freq_offset_r14_present) { + j.write_int("scptm-FreqOffset-r14", scptm_freq_offset_r14); + } + } + j.end_obj(); +} + +// SystemInformation-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE sys_info_nb_r13_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + HANDLE_CODE(pack_dyn_seq_of(bref, sib_type_and_info_r13, 1, 32)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE sys_info_nb_r13_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + HANDLE_CODE(unpack_dyn_seq_of(sib_type_and_info_r13, bref, 1, 32)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void sys_info_nb_r13_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.start_array("sib-TypeAndInfo-r13"); + for (const auto& e1 : sib_type_and_info_r13) { + e1.to_json(j); + } + j.end_array(); + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + +void sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::destroy_() +{ + switch (type_) { + case types::sib2_r13: + c.destroy(); + break; + case types::sib3_r13: + c.destroy(); + break; + case types::sib4_r13: + c.destroy(); + break; + case types::sib5_r13: + c.destroy(); + break; + case types::sib14_r13: + c.destroy(); + break; + case types::sib16_r13: + c.destroy(); + break; + case types::sib15_v1430: + c.destroy(); + break; + case types::sib20_v1430: + c.destroy(); + break; + case types::sib22_v1430: + c.destroy(); + break; + case types::sib23_v1530: + c.destroy(); + break; + case types::sib27_v1610: + c.destroy(); + break; + case types::sib31_v1700: + c.destroy(); + break; + case types::sib32_v1700: + c.destroy(); + break; + default: + break; + } +} +void sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set(types::options e) +{ + destroy_(); + type_ = e; + switch (type_) { + case types::sib2_r13: + c.init(); + break; + case types::sib3_r13: + c.init(); + break; + case types::sib4_r13: + c.init(); + break; + case types::sib5_r13: + c.init(); + break; + case types::sib14_r13: + c.init(); + break; + case types::sib16_r13: + c.init(); + break; + case types::sib15_v1430: + c.init(); + break; + case types::sib20_v1430: + c.init(); + break; + case types::sib22_v1430: + c.init(); + break; + case types::sib23_v1530: + c.init(); + break; + case types::sib27_v1610: + c.init(); + break; + case types::sib31_v1700: + c.init(); + break; + case types::sib32_v1700: + c.init(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_"); + } +} +sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::sib_type_and_info_r13_item_c_( + const sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::sib2_r13: + c.init(other.c.get()); + break; + case types::sib3_r13: + c.init(other.c.get()); + break; + case types::sib4_r13: + c.init(other.c.get()); + break; + case types::sib5_r13: + c.init(other.c.get()); + break; + case types::sib14_r13: + c.init(other.c.get()); + break; + case types::sib16_r13: + c.init(other.c.get()); + break; + case types::sib15_v1430: + c.init(other.c.get()); + break; + case types::sib20_v1430: + c.init(other.c.get()); + break; + case types::sib22_v1430: + c.init(other.c.get()); + break; + case types::sib23_v1530: + c.init(other.c.get()); + break; + case types::sib27_v1610: + c.init(other.c.get()); + break; + case types::sib31_v1700: + c.init(other.c.get()); + break; + case types::sib32_v1700: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_"); + } +} +sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::operator=( + const sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_& other) +{ + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::sib2_r13: + c.set(other.c.get()); + break; + case types::sib3_r13: + c.set(other.c.get()); + break; + case types::sib4_r13: + c.set(other.c.get()); + break; + case types::sib5_r13: + c.set(other.c.get()); + break; + case types::sib14_r13: + c.set(other.c.get()); + break; + case types::sib16_r13: + c.set(other.c.get()); + break; + case types::sib15_v1430: + c.set(other.c.get()); + break; + case types::sib20_v1430: + c.set(other.c.get()); + break; + case types::sib22_v1430: + c.set(other.c.get()); + break; + case types::sib23_v1530: + c.set(other.c.get()); + break; + case types::sib27_v1610: + c.set(other.c.get()); + break; + case types::sib31_v1700: + c.set(other.c.get()); + break; + case types::sib32_v1700: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_"); + } + + return *this; +} +sib_type2_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib2_r13() +{ + set(types::sib2_r13); + return c.get(); +} +sib_type3_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib3_r13() +{ + set(types::sib3_r13); + return c.get(); +} +sib_type4_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib4_r13() +{ + set(types::sib4_r13); + return c.get(); +} +sib_type5_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib5_r13() +{ + set(types::sib5_r13); + return c.get(); +} +sib_type14_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib14_r13() +{ + set(types::sib14_r13); + return c.get(); +} +sib_type16_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib16_r13() +{ + set(types::sib16_r13); + return c.get(); +} +sib_type15_nb_r14_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib15_v1430() +{ + set(types::sib15_v1430); + return c.get(); +} +sib_type20_nb_r14_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib20_v1430() +{ + set(types::sib20_v1430); + return c.get(); +} +sib_type22_nb_r14_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib22_v1430() +{ + set(types::sib22_v1430); + return c.get(); +} +sib_type23_nb_r15_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib23_v1530() +{ + set(types::sib23_v1530); + return c.get(); +} +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_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_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(); +} +void sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::sib2_r13: + j.write_fieldname("sib2-r13"); + c.get().to_json(j); + break; + case types::sib3_r13: + j.write_fieldname("sib3-r13"); + c.get().to_json(j); + break; + case types::sib4_r13: + j.write_fieldname("sib4-r13"); + c.get().to_json(j); + break; + case types::sib5_r13: + j.write_fieldname("sib5-r13"); + c.get().to_json(j); + break; + case types::sib14_r13: + j.write_fieldname("sib14-r13"); + c.get().to_json(j); + break; + case types::sib16_r13: + j.write_fieldname("sib16-r13"); + c.get().to_json(j); + break; + case types::sib15_v1430: + j.write_fieldname("sib15-v1430"); + c.get().to_json(j); + break; + case types::sib20_v1430: + j.write_fieldname("sib20-v1430"); + c.get().to_json(j); + break; + case types::sib22_v1430: + j.write_fieldname("sib22-v1430"); + c.get().to_json(j); + break; + case types::sib23_v1530: + j.write_fieldname("sib23-v1530"); + c.get().to_json(j); + break; + case types::sib27_v1610: + j.write_fieldname("sib27-v1610"); + c.get().to_json(j); + break; + case types::sib31_v1700: + j.write_fieldname("sib31-v1700"); + c.get().to_json(j); + break; + case types::sib32_v1700: + j.write_fieldname("sib32-v1700"); + c.get().to_json(j); + break; + default: + log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_"); + } + j.end_obj(); +} +SRSASN_CODE sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::sib2_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::sib3_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::sib4_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::sib5_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::sib14_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::sib16_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::sib15_v1430: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib20_v1430: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib22_v1430: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib23_v1530: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib27_v1610: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib31_v1700: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().pack(bref)); + } break; + case types::sib32_v1700: { + varlength_field_pack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().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; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::sib2_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::sib3_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::sib4_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::sib5_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::sib14_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::sib16_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::sib15_v1430: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib20_v1430: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib22_v1430: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib23_v1530: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib27_v1610: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib31_v1700: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().unpack(bref)); + } break; + case types::sib32_v1700: { + varlength_field_unpack_guard varlen_scope(bref, false); + HANDLE_CODE(c.get().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; + } + return SRSASN_SUCCESS; +} + +const char* sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::types_opts::to_string() const +{ + static const char* options[] = {"sib2-r13", + "sib3-r13", + "sib4-r13", + "sib5-r13", + "sib14-r13", + "sib16-r13", + "sib15-v1430", + "sib20-v1430", + "sib22-v1430", + "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, 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 +SRSASN_CODE sib_type1_nb_v1350_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(cell_sel_info_v1350_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (cell_sel_info_v1350_present) { + HANDLE_CODE(cell_sel_info_v1350.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE sib_type1_nb_v1350_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(cell_sel_info_v1350_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (cell_sel_info_v1350_present) { + HANDLE_CODE(cell_sel_info_v1350.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void sib_type1_nb_v1350_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (cell_sel_info_v1350_present) { + j.write_fieldname("cellSelectionInfo-v1350"); + cell_sel_info_v1350.to_json(j); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + +// SystemInformation-NB ::= SEQUENCE +SRSASN_CODE sys_info_nb_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(crit_exts.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE sys_info_nb_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(crit_exts.unpack(bref)); + + return SRSASN_SUCCESS; +} +void sys_info_nb_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); + j.end_obj(); +} + +void sys_info_nb_s::crit_exts_c_::set(types::options e) +{ + type_ = e; +} +sys_info_nb_r13_ies_s& sys_info_nb_s::crit_exts_c_::set_sys_info_r13() +{ + set(types::sys_info_r13); + return c; +} +void sys_info_nb_s::crit_exts_c_::set_crit_exts_future() +{ + set(types::crit_exts_future); +} +void sys_info_nb_s::crit_exts_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::sys_info_r13: + j.write_fieldname("systemInformation-r13"); + c.to_json(j); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "sys_info_nb_s::crit_exts_c_"); + } + j.end_obj(); +} +SRSASN_CODE sys_info_nb_s::crit_exts_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::sys_info_r13: + HANDLE_CODE(c.pack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "sys_info_nb_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE sys_info_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::sys_info_r13: + HANDLE_CODE(c.unpack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "sys_info_nb_s::crit_exts_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +const char* sys_info_nb_s::crit_exts_c_::types_opts::to_string() const +{ + static const char* options[] = {"systemInformation-r13", "criticalExtensionsFuture"}; + return convert_enum_idx(options, 2, value, "sys_info_nb_s::crit_exts_c_::types"); +} + +// SystemInformationBlockType1-NB ::= SEQUENCE +SRSASN_CODE sib_type1_nb_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(p_max_r13_present, 1)); + HANDLE_CODE(bref.pack(freq_band_info_r13_present, 1)); + HANDLE_CODE(bref.pack(multi_band_info_list_r13_present, 1)); + HANDLE_CODE(bref.pack(dl_bitmap_r13_present, 1)); + HANDLE_CODE(bref.pack(eutra_ctrl_region_size_r13_present, 1)); + HANDLE_CODE(bref.pack(nrs_crs_pwr_offset_r13_present, 1)); + HANDLE_CODE(bref.pack(si_radio_frame_offset_r13_present, 1)); + HANDLE_CODE(bref.pack(sys_info_value_tag_list_r13_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + HANDLE_CODE(hyper_sfn_msb_r13.pack(bref)); + HANDLE_CODE(pack_dyn_seq_of(bref, cell_access_related_info_r13.plmn_id_list_r13, 1, 6)); + HANDLE_CODE(cell_access_related_info_r13.tac_r13.pack(bref)); + HANDLE_CODE(cell_access_related_info_r13.cell_id_r13.pack(bref)); + HANDLE_CODE(cell_access_related_info_r13.cell_barred_r13.pack(bref)); + HANDLE_CODE(cell_access_related_info_r13.intra_freq_resel_r13.pack(bref)); + HANDLE_CODE(pack_integer(bref, cell_sel_info_r13.q_rx_lev_min_r13, (int8_t)-70, (int8_t)-22)); + HANDLE_CODE(pack_integer(bref, cell_sel_info_r13.q_qual_min_r13, (int8_t)-34, (int8_t)-3)); + if (p_max_r13_present) { + HANDLE_CODE(pack_integer(bref, p_max_r13, (int8_t)-30, (int8_t)33)); + } + HANDLE_CODE(pack_integer(bref, freq_band_ind_r13, (uint16_t)1u, (uint16_t)256u)); + if (freq_band_info_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_info_r13, 1, 4)); + } + if (multi_band_info_list_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_r13, 1, 8)); + } + if (dl_bitmap_r13_present) { + HANDLE_CODE(dl_bitmap_r13.pack(bref)); + } + if (eutra_ctrl_region_size_r13_present) { + HANDLE_CODE(eutra_ctrl_region_size_r13.pack(bref)); + } + if (nrs_crs_pwr_offset_r13_present) { + HANDLE_CODE(nrs_crs_pwr_offset_r13.pack(bref)); + } + HANDLE_CODE(pack_dyn_seq_of(bref, sched_info_list_r13, 1, 8)); + HANDLE_CODE(si_win_len_r13.pack(bref)); + if (si_radio_frame_offset_r13_present) { + HANDLE_CODE(pack_integer(bref, si_radio_frame_offset_r13, (uint8_t)1u, (uint8_t)15u)); + } + if (sys_info_value_tag_list_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, sys_info_value_tag_list_r13, 1, 8, integer_packer(0, 3))); + } + 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 sib_type1_nb_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(p_max_r13_present, 1)); + HANDLE_CODE(bref.unpack(freq_band_info_r13_present, 1)); + HANDLE_CODE(bref.unpack(multi_band_info_list_r13_present, 1)); + HANDLE_CODE(bref.unpack(dl_bitmap_r13_present, 1)); + HANDLE_CODE(bref.unpack(eutra_ctrl_region_size_r13_present, 1)); + HANDLE_CODE(bref.unpack(nrs_crs_pwr_offset_r13_present, 1)); + HANDLE_CODE(bref.unpack(si_radio_frame_offset_r13_present, 1)); + HANDLE_CODE(bref.unpack(sys_info_value_tag_list_r13_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + HANDLE_CODE(hyper_sfn_msb_r13.unpack(bref)); + HANDLE_CODE(unpack_dyn_seq_of(cell_access_related_info_r13.plmn_id_list_r13, bref, 1, 6)); + HANDLE_CODE(cell_access_related_info_r13.tac_r13.unpack(bref)); + HANDLE_CODE(cell_access_related_info_r13.cell_id_r13.unpack(bref)); + HANDLE_CODE(cell_access_related_info_r13.cell_barred_r13.unpack(bref)); + HANDLE_CODE(cell_access_related_info_r13.intra_freq_resel_r13.unpack(bref)); + HANDLE_CODE(unpack_integer(cell_sel_info_r13.q_rx_lev_min_r13, bref, (int8_t)-70, (int8_t)-22)); + HANDLE_CODE(unpack_integer(cell_sel_info_r13.q_qual_min_r13, bref, (int8_t)-34, (int8_t)-3)); + if (p_max_r13_present) { + HANDLE_CODE(unpack_integer(p_max_r13, bref, (int8_t)-30, (int8_t)33)); + } + HANDLE_CODE(unpack_integer(freq_band_ind_r13, bref, (uint16_t)1u, (uint16_t)256u)); + if (freq_band_info_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(freq_band_info_r13, bref, 1, 4)); + } + if (multi_band_info_list_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_r13, bref, 1, 8)); + } + if (dl_bitmap_r13_present) { + HANDLE_CODE(dl_bitmap_r13.unpack(bref)); + } + if (eutra_ctrl_region_size_r13_present) { + HANDLE_CODE(eutra_ctrl_region_size_r13.unpack(bref)); + } + if (nrs_crs_pwr_offset_r13_present) { + HANDLE_CODE(nrs_crs_pwr_offset_r13.unpack(bref)); + } + HANDLE_CODE(unpack_dyn_seq_of(sched_info_list_r13, bref, 1, 8)); + HANDLE_CODE(si_win_len_r13.unpack(bref)); + if (si_radio_frame_offset_r13_present) { + HANDLE_CODE(unpack_integer(si_radio_frame_offset_r13, bref, (uint8_t)1u, (uint8_t)15u)); + } + if (sys_info_value_tag_list_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(sys_info_value_tag_list_r13, bref, 1, 8, integer_packer(0, 3))); + } + 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 sib_type1_nb_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("hyperSFN-MSB-r13", hyper_sfn_msb_r13.to_string()); + j.write_fieldname("cellAccessRelatedInfo-r13"); + j.start_obj(); + j.start_array("plmn-IdentityList-r13"); + for (const auto& e1 : cell_access_related_info_r13.plmn_id_list_r13) { + e1.to_json(j); + } + j.end_array(); + j.write_str("trackingAreaCode-r13", cell_access_related_info_r13.tac_r13.to_string()); + j.write_str("cellIdentity-r13", cell_access_related_info_r13.cell_id_r13.to_string()); + j.write_str("cellBarred-r13", cell_access_related_info_r13.cell_barred_r13.to_string()); + j.write_str("intraFreqReselection-r13", cell_access_related_info_r13.intra_freq_resel_r13.to_string()); + j.end_obj(); + j.write_fieldname("cellSelectionInfo-r13"); + j.start_obj(); + j.write_int("q-RxLevMin-r13", cell_sel_info_r13.q_rx_lev_min_r13); + j.write_int("q-QualMin-r13", cell_sel_info_r13.q_qual_min_r13); + j.end_obj(); + if (p_max_r13_present) { + j.write_int("p-Max-r13", p_max_r13); + } + j.write_int("freqBandIndicator-r13", freq_band_ind_r13); + if (freq_band_info_r13_present) { + j.start_array("freqBandInfo-r13"); + for (const auto& e1 : freq_band_info_r13) { + e1.to_json(j); + } + j.end_array(); + } + if (multi_band_info_list_r13_present) { + j.start_array("multiBandInfoList-r13"); + for (const auto& e1 : multi_band_info_list_r13) { + e1.to_json(j); + } + j.end_array(); + } + if (dl_bitmap_r13_present) { + j.write_fieldname("downlinkBitmap-r13"); + dl_bitmap_r13.to_json(j); + } + if (eutra_ctrl_region_size_r13_present) { + j.write_str("eutraControlRegionSize-r13", eutra_ctrl_region_size_r13.to_string()); + } + if (nrs_crs_pwr_offset_r13_present) { + j.write_str("nrs-CRS-PowerOffset-r13", nrs_crs_pwr_offset_r13.to_string()); + } + j.start_array("schedulingInfoList-r13"); + for (const auto& e1 : sched_info_list_r13) { + e1.to_json(j); + } + j.end_array(); + j.write_str("si-WindowLength-r13", si_win_len_r13.to_string()); + if (si_radio_frame_offset_r13_present) { + j.write_int("si-RadioFrameOffset-r13", si_radio_frame_offset_r13); + } + if (sys_info_value_tag_list_r13_present) { + j.start_array("systemInfoValueTagList-r13"); + for (const auto& e1 : sys_info_value_tag_list_r13) { + j.write_int(e1); + } + j.end_array(); + } + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + +const char* sib_type1_nb_s::cell_access_related_info_r13_s_::cell_barred_r13_opts::to_string() const +{ + static const char* options[] = {"barred", "notBarred"}; + return convert_enum_idx(options, 2, value, "sib_type1_nb_s::cell_access_related_info_r13_s_::cell_barred_r13_e_"); +} + +const char* sib_type1_nb_s::cell_access_related_info_r13_s_::intra_freq_resel_r13_opts::to_string() const +{ + static const char* options[] = {"allowed", "notAllowed"}; + return convert_enum_idx( + options, 2, value, "sib_type1_nb_s::cell_access_related_info_r13_s_::intra_freq_resel_r13_e_"); +} + +const char* sib_type1_nb_s::eutra_ctrl_region_size_r13_opts::to_string() const +{ + static const char* options[] = {"n1", "n2", "n3"}; + return convert_enum_idx(options, 3, value, "sib_type1_nb_s::eutra_ctrl_region_size_r13_e_"); +} +uint8_t sib_type1_nb_s::eutra_ctrl_region_size_r13_opts::to_number() const +{ + static const uint8_t options[] = {1, 2, 3}; + return map_enum_number(options, 3, value, "sib_type1_nb_s::eutra_ctrl_region_size_r13_e_"); +} + +const char* sib_type1_nb_s::nrs_crs_pwr_offset_r13_opts::to_string() const +{ + static const char* options[] = {"dB-6", + "dB-4dot77", + "dB-3", + "dB-1dot77", + "dB0", + "dB1", + "dB1dot23", + "dB2", + "dB3", + "dB4", + "dB4dot23", + "dB5", + "dB6", + "dB7", + "dB8", + "dB9"}; + return convert_enum_idx(options, 16, value, "sib_type1_nb_s::nrs_crs_pwr_offset_r13_e_"); +} +float sib_type1_nb_s::nrs_crs_pwr_offset_r13_opts::to_number() const +{ + static const float options[] = { + -6.0, -4.77, -3.0, -1.77, 0.0, 1.0, 1.23, 2.0, 3.0, 4.0, 4.23, 5.0, 6.0, 7.0, 8.0, 9.0}; + return map_enum_number(options, 16, value, "sib_type1_nb_s::nrs_crs_pwr_offset_r13_e_"); +} +const char* sib_type1_nb_s::nrs_crs_pwr_offset_r13_opts::to_number_string() const +{ + static const char* options[] = { + "-6", "-4.77", "-3", "-1.77", "0", "1", "1.23", "2", "3", "4", "4.23", "5", "6", "7", "8", "9"}; + return convert_enum_idx(options, 16, value, "sib_type1_nb_s::nrs_crs_pwr_offset_r13_e_"); +} + +const char* sib_type1_nb_s::si_win_len_r13_opts::to_string() const +{ + static const char* options[] = {"ms160", "ms320", "ms480", "ms640", "ms960", "ms1280", "ms1600", "spare1"}; + return convert_enum_idx(options, 8, value, "sib_type1_nb_s::si_win_len_r13_e_"); +} +uint16_t sib_type1_nb_s::si_win_len_r13_opts::to_number() const +{ + static const uint16_t options[] = {160, 320, 480, 640, 960, 1280, 1600}; + return map_enum_number(options, 7, value, "sib_type1_nb_s::si_win_len_r13_e_"); +} + +// BCCH-DL-SCH-MessageType-NB ::= CHOICE +void bcch_dl_sch_msg_type_nb_c::set(types::options e) +{ + type_ = e; +} +bcch_dl_sch_msg_type_nb_c::c1_c_& bcch_dl_sch_msg_type_nb_c::set_c1() +{ + set(types::c1); + return c; +} +void bcch_dl_sch_msg_type_nb_c::set_msg_class_ext() +{ + set(types::msg_class_ext); +} +void bcch_dl_sch_msg_type_nb_c::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::c1: + j.write_fieldname("c1"); + c.to_json(j); + break; + case types::msg_class_ext: + break; + default: + log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c"); + } + j.end_obj(); +} +SRSASN_CODE bcch_dl_sch_msg_type_nb_c::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::c1: + HANDLE_CODE(c.pack(bref)); + break; + case types::msg_class_ext: + break; + default: + log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE bcch_dl_sch_msg_type_nb_c::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::c1: + HANDLE_CODE(c.unpack(bref)); + break; + case types::msg_class_ext: + break; + default: + log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +void bcch_dl_sch_msg_type_nb_c::c1_c_::destroy_() +{ + switch (type_) { + case types::sys_info_r13: + c.destroy(); + break; + case types::sib_type1_r13: + c.destroy(); + break; + default: + break; + } +} +void bcch_dl_sch_msg_type_nb_c::c1_c_::set(types::options e) +{ + destroy_(); + type_ = e; + switch (type_) { + case types::sys_info_r13: + c.init(); + break; + case types::sib_type1_r13: + c.init(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); + } +} +bcch_dl_sch_msg_type_nb_c::c1_c_::c1_c_(const bcch_dl_sch_msg_type_nb_c::c1_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::sys_info_r13: + c.init(other.c.get()); + break; + case types::sib_type1_r13: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); + } +} +bcch_dl_sch_msg_type_nb_c::c1_c_& +bcch_dl_sch_msg_type_nb_c::c1_c_::operator=(const bcch_dl_sch_msg_type_nb_c::c1_c_& other) +{ + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::sys_info_r13: + c.set(other.c.get()); + break; + case types::sib_type1_r13: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); + } + + return *this; +} +sys_info_nb_s& bcch_dl_sch_msg_type_nb_c::c1_c_::set_sys_info_r13() +{ + set(types::sys_info_r13); + return c.get(); +} +sib_type1_nb_s& bcch_dl_sch_msg_type_nb_c::c1_c_::set_sib_type1_r13() +{ + set(types::sib_type1_r13); + return c.get(); +} +void bcch_dl_sch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::sys_info_r13: + j.write_fieldname("systemInformation-r13"); + c.get().to_json(j); + break; + case types::sib_type1_r13: + j.write_fieldname("systemInformationBlockType1-r13"); + c.get().to_json(j); + break; + default: + log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); + } + j.end_obj(); +} +SRSASN_CODE bcch_dl_sch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::sys_info_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::sib_type1_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + default: + log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE bcch_dl_sch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::sys_info_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::sib_type1_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + default: + log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +const char* bcch_dl_sch_msg_type_nb_c::c1_c_::types_opts::to_string() const +{ + static const char* options[] = {"systemInformation-r13", "systemInformationBlockType1-r13"}; + return convert_enum_idx(options, 2, value, "bcch_dl_sch_msg_type_nb_c::c1_c_::types"); +} +uint8_t bcch_dl_sch_msg_type_nb_c::c1_c_::types_opts::to_number() const +{ + if (value == sib_type1_r13) { + return 1; + } + invalid_enum_number(value, "bcch_dl_sch_msg_type_nb_c::c1_c_::types"); + return 0; +} + +const char* bcch_dl_sch_msg_type_nb_c::types_opts::to_string() const +{ + static const char* options[] = {"c1", "messageClassExtension"}; + return convert_enum_idx(options, 2, value, "bcch_dl_sch_msg_type_nb_c::types"); +} +uint8_t bcch_dl_sch_msg_type_nb_c::types_opts::to_number() const +{ + static const uint8_t options[] = {1}; + return map_enum_number(options, 1, value, "bcch_dl_sch_msg_type_nb_c::types"); +} + +// BCCH-DL-SCH-Message-NB ::= SEQUENCE +SRSASN_CODE bcch_dl_sch_msg_nb_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(msg.pack(bref)); + + bref.align_bytes_zero(); + + return SRSASN_SUCCESS; +} +SRSASN_CODE bcch_dl_sch_msg_nb_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(msg.unpack(bref)); + + bref.align_bytes(); + + return SRSASN_SUCCESS; +} +void bcch_dl_sch_msg_nb_s::to_json(json_writer& j) const +{ + j.start_array(); + j.start_obj(); + j.start_obj("BCCH-DL-SCH-Message-NB"); + j.write_fieldname("message"); + msg.to_json(j); + j.end_obj(); + j.end_obj(); + 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 +{ + HANDLE_CODE(bref.pack(dl_nas_mac_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (dl_nas_mac_present) { + HANDLE_CODE(dl_nas_mac.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_reest_nb_v1430_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(dl_nas_mac_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (dl_nas_mac_present) { + HANDLE_CODE(dl_nas_mac.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void rrc_conn_reest_nb_v1430_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (dl_nas_mac_present) { + j.write_str("dl-NAS-MAC", dl_nas_mac.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + 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 +{ + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_early_data_complete_nb_v1590_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void rrc_early_data_complete_nb_v1590_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + +// RedirectedCarrierInfo-NB-v1430 ::= SEQUENCE +SRSASN_CODE redirected_carrier_info_nb_v1430_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(redirected_carrier_offset_ded_r14.pack(bref)); + HANDLE_CODE(t322_r14.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE redirected_carrier_info_nb_v1430_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(redirected_carrier_offset_ded_r14.unpack(bref)); + HANDLE_CODE(t322_r14.unpack(bref)); + + return SRSASN_SUCCESS; +} +void redirected_carrier_info_nb_v1430_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("redirectedCarrierOffsetDedicated-r14", redirected_carrier_offset_ded_r14.to_string()); + j.write_str("t322-r14", t322_r14.to_string()); + j.end_obj(); +} + +const char* redirected_carrier_info_nb_v1430_s::redirected_carrier_offset_ded_r14_opts::to_string() const +{ + static const char* options[] = {"dB1", + "dB2", + "dB3", + "dB4", + "dB5", + "dB6", + "dB8", + "dB10", + "dB12", + "dB14", + "dB16", + "dB18", + "dB20", + "dB22", + "dB24", + "dB26"}; + return convert_enum_idx( + options, 16, value, "redirected_carrier_info_nb_v1430_s::redirected_carrier_offset_ded_r14_e_"); +} +uint8_t redirected_carrier_info_nb_v1430_s::redirected_carrier_offset_ded_r14_opts::to_number() const +{ + static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26}; + return map_enum_number( + options, 16, value, "redirected_carrier_info_nb_v1430_s::redirected_carrier_offset_ded_r14_e_"); +} + +const char* redirected_carrier_info_nb_v1430_s::t322_r14_opts::to_string() const +{ + static const char* options[] = {"min5", "min10", "min20", "min30", "min60", "min120", "min180", "spare1"}; + return convert_enum_idx(options, 8, value, "redirected_carrier_info_nb_v1430_s::t322_r14_e_"); +} +uint8_t redirected_carrier_info_nb_v1430_s::t322_r14_opts::to_number() const +{ + static const uint8_t options[] = {5, 10, 20, 30, 60, 120, 180}; + return map_enum_number(options, 7, value, "redirected_carrier_info_nb_v1430_s::t322_r14_e_"); +} + +// RRCConnectionReestablishment-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_reest_nb_r13_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(rr_cfg_ded_r13.pack(bref)); + HANDLE_CODE(pack_integer(bref, next_hop_chaining_count_r13, (uint8_t)0u, (uint8_t)7u)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_reest_nb_r13_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(rr_cfg_ded_r13.unpack(bref)); + HANDLE_CODE(unpack_integer(next_hop_chaining_count_r13, bref, (uint8_t)0u, (uint8_t)7u)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void rrc_conn_reest_nb_r13_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("radioResourceConfigDedicated-r13"); + rr_cfg_ded_r13.to_json(j); + j.write_int("nextHopChainingCount-r13", next_hop_chaining_count_r13); + 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(); +} + +// RRCConnectionReject-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_reject_nb_r13_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(rrc_suspend_ind_r13_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + HANDLE_CODE(pack_integer(bref, extended_wait_time_r13, (uint16_t)1u, (uint16_t)1800u)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_reject_nb_r13_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(rrc_suspend_ind_r13_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + HANDLE_CODE(unpack_integer(extended_wait_time_r13, bref, (uint16_t)1u, (uint16_t)1800u)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void rrc_conn_reject_nb_r13_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("extendedWaitTime-r13", extended_wait_time_r13); + if (rrc_suspend_ind_r13_present) { + j.write_str("rrc-SuspendIndication-r13", "true"); + } + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + +// RRCConnectionSetup-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_setup_nb_r13_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(rr_cfg_ded_r13.pack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_setup_nb_r13_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(rr_cfg_ded_r13.unpack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void rrc_conn_setup_nb_r13_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("radioResourceConfigDedicated-r13"); + rr_cfg_ded_r13.to_json(j); + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + +// RRCEarlyDataComplete-NB-r15-IEs ::= SEQUENCE +SRSASN_CODE rrc_early_data_complete_nb_r15_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(ded_info_nas_r15_present, 1)); + HANDLE_CODE(bref.pack(extended_wait_time_r15_present, 1)); + HANDLE_CODE(bref.pack(redirected_carrier_info_r15_present, 1)); + HANDLE_CODE(bref.pack(redirected_carrier_info_ext_r15_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (ded_info_nas_r15_present) { + HANDLE_CODE(ded_info_nas_r15.pack(bref)); + } + if (extended_wait_time_r15_present) { + HANDLE_CODE(pack_integer(bref, extended_wait_time_r15, (uint16_t)1u, (uint16_t)1800u)); + } + if (redirected_carrier_info_r15_present) { + HANDLE_CODE(redirected_carrier_info_r15.pack(bref)); + } + if (redirected_carrier_info_ext_r15_present) { + HANDLE_CODE(redirected_carrier_info_ext_r15.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_early_data_complete_nb_r15_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(ded_info_nas_r15_present, 1)); + HANDLE_CODE(bref.unpack(extended_wait_time_r15_present, 1)); + HANDLE_CODE(bref.unpack(redirected_carrier_info_r15_present, 1)); + HANDLE_CODE(bref.unpack(redirected_carrier_info_ext_r15_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (ded_info_nas_r15_present) { + HANDLE_CODE(ded_info_nas_r15.unpack(bref)); + } + if (extended_wait_time_r15_present) { + HANDLE_CODE(unpack_integer(extended_wait_time_r15, bref, (uint16_t)1u, (uint16_t)1800u)); + } + if (redirected_carrier_info_r15_present) { + HANDLE_CODE(redirected_carrier_info_r15.unpack(bref)); + } + if (redirected_carrier_info_ext_r15_present) { + HANDLE_CODE(redirected_carrier_info_ext_r15.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void rrc_early_data_complete_nb_r15_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (ded_info_nas_r15_present) { + j.write_str("dedicatedInfoNAS-r15", ded_info_nas_r15.to_string()); + } + if (extended_wait_time_r15_present) { + j.write_int("extendedWaitTime-r15", extended_wait_time_r15); + } + if (redirected_carrier_info_r15_present) { + j.write_fieldname("redirectedCarrierInfo-r15"); + redirected_carrier_info_r15.to_json(j); + } + if (redirected_carrier_info_ext_r15_present) { + j.write_fieldname("redirectedCarrierInfoExt-r15"); + redirected_carrier_info_ext_r15.to_json(j); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + +// RRCConnectionReestablishment-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_reest_nb_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); + HANDLE_CODE(crit_exts.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_reest_nb_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); + HANDLE_CODE(crit_exts.unpack(bref)); + + return SRSASN_SUCCESS; +} +void rrc_conn_reest_nb_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); + j.end_obj(); +} + +void rrc_conn_reest_nb_s::crit_exts_c_::set(types::options e) +{ + type_ = e; +} +rrc_conn_reest_nb_s::crit_exts_c_::c1_c_& rrc_conn_reest_nb_s::crit_exts_c_::set_c1() +{ + set(types::c1); + return c; +} +void rrc_conn_reest_nb_s::crit_exts_c_::set_crit_exts_future() +{ + set(types::crit_exts_future); +} +void rrc_conn_reest_nb_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_, "rrc_conn_reest_nb_s::crit_exts_c_"); + } + j.end_obj(); +} +SRSASN_CODE rrc_conn_reest_nb_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_, "rrc_conn_reest_nb_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_reest_nb_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_, "rrc_conn_reest_nb_s::crit_exts_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +void rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::set(types::options e) +{ + type_ = e; +} +rrc_conn_reest_nb_r13_ies_s& rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_reest_r13() +{ + set(types::rrc_conn_reest_r13); + return c; +} +void rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::set_spare1() +{ + set(types::spare1); +} +void rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::rrc_conn_reest_r13: + j.write_fieldname("rrcConnectionReestablishment-r13"); + c.to_json(j); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reest_nb_s::crit_exts_c_::c1_c_"); + } + j.end_obj(); +} +SRSASN_CODE rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::rrc_conn_reest_r13: + HANDLE_CODE(c.pack(bref)); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reest_nb_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::rrc_conn_reest_r13: + HANDLE_CODE(c.unpack(bref)); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reest_nb_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +const char* rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const +{ + static const char* options[] = {"rrcConnectionReestablishment-r13", "spare1"}; + return convert_enum_idx(options, 2, value, "rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::types"); +} + +// RRCConnectionReject-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_reject_nb_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(crit_exts.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_reject_nb_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(crit_exts.unpack(bref)); + + return SRSASN_SUCCESS; +} +void rrc_conn_reject_nb_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); + j.end_obj(); +} + +void rrc_conn_reject_nb_s::crit_exts_c_::set(types::options e) +{ + type_ = e; +} +rrc_conn_reject_nb_s::crit_exts_c_::c1_c_& rrc_conn_reject_nb_s::crit_exts_c_::set_c1() +{ + set(types::c1); + return c; +} +void rrc_conn_reject_nb_s::crit_exts_c_::set_crit_exts_future() +{ + set(types::crit_exts_future); +} +void rrc_conn_reject_nb_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_, "rrc_conn_reject_nb_s::crit_exts_c_"); + } + j.end_obj(); +} +SRSASN_CODE rrc_conn_reject_nb_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_, "rrc_conn_reject_nb_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_reject_nb_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_, "rrc_conn_reject_nb_s::crit_exts_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +void rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::set(types::options e) +{ + type_ = e; +} +rrc_conn_reject_nb_r13_ies_s& rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_reject_r13() +{ + set(types::rrc_conn_reject_r13); + return c; +} +void rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::set_spare1() +{ + set(types::spare1); +} +void rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::rrc_conn_reject_r13: + j.write_fieldname("rrcConnectionReject-r13"); + c.to_json(j); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reject_nb_s::crit_exts_c_::c1_c_"); + } + j.end_obj(); +} +SRSASN_CODE rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::rrc_conn_reject_r13: + HANDLE_CODE(c.pack(bref)); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reject_nb_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::rrc_conn_reject_r13: + HANDLE_CODE(c.unpack(bref)); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reject_nb_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +const char* rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const +{ + static const char* options[] = {"rrcConnectionReject-r13", "spare1"}; + return convert_enum_idx(options, 2, value, "rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::types"); +} + +// RRCConnectionSetup-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_setup_nb_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); + HANDLE_CODE(crit_exts.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_setup_nb_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); + HANDLE_CODE(crit_exts.unpack(bref)); + + return SRSASN_SUCCESS; +} +void rrc_conn_setup_nb_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); + j.end_obj(); +} + +void rrc_conn_setup_nb_s::crit_exts_c_::set(types::options e) +{ + type_ = e; +} +rrc_conn_setup_nb_s::crit_exts_c_::c1_c_& rrc_conn_setup_nb_s::crit_exts_c_::set_c1() +{ + set(types::c1); + return c; +} +void rrc_conn_setup_nb_s::crit_exts_c_::set_crit_exts_future() +{ + set(types::crit_exts_future); +} +void rrc_conn_setup_nb_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_, "rrc_conn_setup_nb_s::crit_exts_c_"); + } + j.end_obj(); +} +SRSASN_CODE rrc_conn_setup_nb_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_, "rrc_conn_setup_nb_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_setup_nb_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_, "rrc_conn_setup_nb_s::crit_exts_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +void rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::set(types::options e) +{ + type_ = e; +} +rrc_conn_setup_nb_r13_ies_s& rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_setup_r13() +{ + set(types::rrc_conn_setup_r13); + return c; +} +void rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::set_spare1() +{ + set(types::spare1); +} +void rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::rrc_conn_setup_r13: + j.write_fieldname("rrcConnectionSetup-r13"); + c.to_json(j); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_setup_nb_s::crit_exts_c_::c1_c_"); + } + j.end_obj(); +} +SRSASN_CODE rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::rrc_conn_setup_r13: + HANDLE_CODE(c.pack(bref)); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_setup_nb_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::rrc_conn_setup_r13: + HANDLE_CODE(c.unpack(bref)); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_setup_nb_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +const char* rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const +{ + static const char* options[] = {"rrcConnectionSetup-r13", "spare1"}; + return convert_enum_idx(options, 2, value, "rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::types"); +} + +// RRCEarlyDataComplete-NB-r15 ::= SEQUENCE +SRSASN_CODE rrc_early_data_complete_nb_r15_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(crit_exts.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_early_data_complete_nb_r15_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(crit_exts.unpack(bref)); + + return SRSASN_SUCCESS; +} +void rrc_early_data_complete_nb_r15_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); + j.end_obj(); +} + +void rrc_early_data_complete_nb_r15_s::crit_exts_c_::set(types::options e) +{ + type_ = e; +} +rrc_early_data_complete_nb_r15_ies_s& rrc_early_data_complete_nb_r15_s::crit_exts_c_::set_rrc_early_data_complete_r15() +{ + set(types::rrc_early_data_complete_r15); + return c; +} +void rrc_early_data_complete_nb_r15_s::crit_exts_c_::set_crit_exts_future() +{ + set(types::crit_exts_future); +} +void rrc_early_data_complete_nb_r15_s::crit_exts_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::rrc_early_data_complete_r15: + j.write_fieldname("rrcEarlyDataComplete-r15"); + c.to_json(j); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "rrc_early_data_complete_nb_r15_s::crit_exts_c_"); + } + j.end_obj(); +} +SRSASN_CODE rrc_early_data_complete_nb_r15_s::crit_exts_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::rrc_early_data_complete_r15: + HANDLE_CODE(c.pack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "rrc_early_data_complete_nb_r15_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_early_data_complete_nb_r15_s::crit_exts_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::rrc_early_data_complete_r15: + HANDLE_CODE(c.unpack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "rrc_early_data_complete_nb_r15_s::crit_exts_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +const char* rrc_early_data_complete_nb_r15_s::crit_exts_c_::types_opts::to_string() const +{ + static const char* options[] = {"rrcEarlyDataComplete-r15", "criticalExtensionsFuture"}; + return convert_enum_idx(options, 2, value, "rrc_early_data_complete_nb_r15_s::crit_exts_c_::types"); +} + +// DL-CCCH-MessageType-NB ::= CHOICE +void dl_ccch_msg_type_nb_c::set(types::options e) +{ + type_ = e; +} +dl_ccch_msg_type_nb_c::c1_c_& dl_ccch_msg_type_nb_c::set_c1() +{ + set(types::c1); + return c; +} +void dl_ccch_msg_type_nb_c::set_msg_class_ext() +{ + set(types::msg_class_ext); +} +void dl_ccch_msg_type_nb_c::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::c1: + j.write_fieldname("c1"); + c.to_json(j); + break; + case types::msg_class_ext: + break; + default: + log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c"); + } + j.end_obj(); +} +SRSASN_CODE dl_ccch_msg_type_nb_c::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::c1: + HANDLE_CODE(c.pack(bref)); + break; + case types::msg_class_ext: + break; + default: + log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE dl_ccch_msg_type_nb_c::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::c1: + HANDLE_CODE(c.unpack(bref)); + break; + case types::msg_class_ext: + break; + default: + log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +void dl_ccch_msg_type_nb_c::c1_c_::destroy_() +{ + switch (type_) { + case types::rrc_conn_reest_r13: + c.destroy(); + break; + case types::rrc_conn_reest_reject_r13: + c.destroy(); + break; + case types::rrc_conn_reject_r13: + c.destroy(); + break; + case types::rrc_conn_setup_r13: + c.destroy(); + break; + case types::rrc_early_data_complete_r15: + c.destroy(); + break; + default: + break; + } +} +void dl_ccch_msg_type_nb_c::c1_c_::set(types::options e) +{ + destroy_(); + type_ = e; + switch (type_) { + case types::rrc_conn_reest_r13: + c.init(); + break; + case types::rrc_conn_reest_reject_r13: + c.init(); + break; + case types::rrc_conn_reject_r13: + c.init(); + break; + case types::rrc_conn_setup_r13: + c.init(); + break; + case types::rrc_early_data_complete_r15: + c.init(); + break; + case types::spare3: + break; + case types::spare2: + break; + case types::spare1: + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); + } +} +dl_ccch_msg_type_nb_c::c1_c_::c1_c_(const dl_ccch_msg_type_nb_c::c1_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::rrc_conn_reest_r13: + c.init(other.c.get()); + break; + case types::rrc_conn_reest_reject_r13: + c.init(other.c.get()); + break; + case types::rrc_conn_reject_r13: + c.init(other.c.get()); + break; + case types::rrc_conn_setup_r13: + c.init(other.c.get()); + break; + case types::rrc_early_data_complete_r15: + c.init(other.c.get()); + break; + case types::spare3: + break; + case types::spare2: + break; + case types::spare1: + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); + } +} +dl_ccch_msg_type_nb_c::c1_c_& dl_ccch_msg_type_nb_c::c1_c_::operator=(const dl_ccch_msg_type_nb_c::c1_c_& other) +{ + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::rrc_conn_reest_r13: + c.set(other.c.get()); + break; + case types::rrc_conn_reest_reject_r13: + c.set(other.c.get()); + break; + case types::rrc_conn_reject_r13: + c.set(other.c.get()); + break; + case types::rrc_conn_setup_r13: + c.set(other.c.get()); + break; + case types::rrc_early_data_complete_r15: + c.set(other.c.get()); + break; + case types::spare3: + break; + case types::spare2: + break; + case types::spare1: + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); + } + + return *this; +} +rrc_conn_reest_nb_s& dl_ccch_msg_type_nb_c::c1_c_::set_rrc_conn_reest_r13() +{ + set(types::rrc_conn_reest_r13); + return c.get(); +} +rrc_conn_reest_reject_s& dl_ccch_msg_type_nb_c::c1_c_::set_rrc_conn_reest_reject_r13() +{ + set(types::rrc_conn_reest_reject_r13); + return c.get(); +} +rrc_conn_reject_nb_s& dl_ccch_msg_type_nb_c::c1_c_::set_rrc_conn_reject_r13() +{ + set(types::rrc_conn_reject_r13); + return c.get(); +} +rrc_conn_setup_nb_s& dl_ccch_msg_type_nb_c::c1_c_::set_rrc_conn_setup_r13() +{ + set(types::rrc_conn_setup_r13); + return c.get(); +} +rrc_early_data_complete_nb_r15_s& dl_ccch_msg_type_nb_c::c1_c_::set_rrc_early_data_complete_r15() +{ + set(types::rrc_early_data_complete_r15); + return c.get(); +} +void dl_ccch_msg_type_nb_c::c1_c_::set_spare3() +{ + set(types::spare3); +} +void dl_ccch_msg_type_nb_c::c1_c_::set_spare2() +{ + set(types::spare2); +} +void dl_ccch_msg_type_nb_c::c1_c_::set_spare1() +{ + set(types::spare1); +} +void dl_ccch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::rrc_conn_reest_r13: + j.write_fieldname("rrcConnectionReestablishment-r13"); + c.get().to_json(j); + break; + case types::rrc_conn_reest_reject_r13: + j.write_fieldname("rrcConnectionReestablishmentReject-r13"); + c.get().to_json(j); + break; + case types::rrc_conn_reject_r13: + j.write_fieldname("rrcConnectionReject-r13"); + c.get().to_json(j); + break; + case types::rrc_conn_setup_r13: + j.write_fieldname("rrcConnectionSetup-r13"); + c.get().to_json(j); + break; + case types::rrc_early_data_complete_r15: + j.write_fieldname("rrcEarlyDataComplete-r15"); + c.get().to_json(j); + break; + case types::spare3: + break; + case types::spare2: + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); + } + j.end_obj(); +} +SRSASN_CODE dl_ccch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::rrc_conn_reest_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::rrc_conn_reest_reject_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::rrc_conn_reject_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::rrc_conn_setup_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::rrc_early_data_complete_r15: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::spare3: + break; + case types::spare2: + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); + return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -void sib_type4_nb_r13_s::to_json(json_writer& j) const +SRSASN_CODE dl_ccch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref) { - j.start_obj(); - if (intra_freq_neigh_cell_list_r13_present) { - j.start_array("intraFreqNeighCellList-r13"); - for (const auto& e1 : intra_freq_neigh_cell_list_r13) { - e1.to_json(j); - } - 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) { - e1.to_json(j); - } - j.end_array(); - } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (ext) { - if (nsss_rrm_cfg_r15.is_present()) { - j.write_fieldname("nsss-RRM-Config-r15"); - nsss_rrm_cfg_r15->to_json(j); - } - if (intra_freq_neigh_cell_list_v1530.is_present()) { - j.start_array("intraFreqNeighCellList-v1530"); - for (const auto& e1 : *intra_freq_neigh_cell_list_v1530) { - e1.to_json(j); - } - j.end_array(); - } + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::rrc_conn_reest_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::rrc_conn_reest_reject_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::rrc_conn_reject_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::rrc_conn_setup_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::rrc_early_data_complete_r15: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::spare3: + break; + case types::spare2: + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); + return SRSASN_ERROR_DECODE_FAIL; } - j.end_obj(); + return SRSASN_SUCCESS; } -// SystemInformationBlockType5-NB-r13 ::= SEQUENCE -SRSASN_CODE sib_type5_nb_r13_s::pack(bit_ref& bref) const +const char* dl_ccch_msg_type_nb_c::c1_c_::types_opts::to_string() const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + static const char* options[] = {"rrcConnectionReestablishment-r13", + "rrcConnectionReestablishmentReject-r13", + "rrcConnectionReject-r13", + "rrcConnectionSetup-r13", + "rrcEarlyDataComplete-r15", + "spare3", + "spare2", + "spare1"}; + return convert_enum_idx(options, 8, value, "dl_ccch_msg_type_nb_c::c1_c_::types"); +} - HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_carrier_freq_list_r13, 1, 8)); - HANDLE_CODE(t_resel_r13.pack(bref)); - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); - } +const char* dl_ccch_msg_type_nb_c::types_opts::to_string() const +{ + static const char* options[] = {"c1", "messageClassExtension"}; + return convert_enum_idx(options, 2, value, "dl_ccch_msg_type_nb_c::types"); +} +uint8_t dl_ccch_msg_type_nb_c::types_opts::to_number() const +{ + static const uint8_t options[] = {1}; + return map_enum_number(options, 1, value, "dl_ccch_msg_type_nb_c::types"); +} - if (ext) { - ext_groups_packer_guard group_flags; - group_flags[0] |= scptm_freq_offset_r14_present; - group_flags.pack(bref); +// DL-CCCH-Message-NB ::= SEQUENCE +SRSASN_CODE dl_ccch_msg_nb_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(msg.pack(bref)); - if (group_flags[0]) { - varlength_field_pack_guard varlen_scope(bref, false); + bref.align_bytes_zero(); - HANDLE_CODE(bref.pack(scptm_freq_offset_r14_present, 1)); - if (scptm_freq_offset_r14_present) { - HANDLE_CODE(pack_integer(bref, scptm_freq_offset_r14, (uint8_t)1u, (uint8_t)8u)); - } - } - } return SRSASN_SUCCESS; } -SRSASN_CODE sib_type5_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE dl_ccch_msg_nb_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); - - HANDLE_CODE(unpack_dyn_seq_of(inter_freq_carrier_freq_list_r13, bref, 1, 8)); - HANDLE_CODE(t_resel_r13.unpack(bref)); - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); - } - - if (ext) { - ext_groups_unpacker_guard group_flags(1); - group_flags.unpack(bref); + HANDLE_CODE(msg.unpack(bref)); - if (group_flags[0]) { - varlength_field_unpack_guard varlen_scope(bref, false); + bref.align_bytes(); - HANDLE_CODE(bref.unpack(scptm_freq_offset_r14_present, 1)); - if (scptm_freq_offset_r14_present) { - HANDLE_CODE(unpack_integer(scptm_freq_offset_r14, bref, (uint8_t)1u, (uint8_t)8u)); - } - } - } return SRSASN_SUCCESS; } -void sib_type5_nb_r13_s::to_json(json_writer& j) const +void dl_ccch_msg_nb_s::to_json(json_writer& j) const { + j.start_array(); j.start_obj(); - j.start_array("interFreqCarrierFreqList-r13"); - for (const auto& e1 : inter_freq_carrier_freq_list_r13) { - e1.to_json(j); - } - j.end_array(); - j.write_str("t-Reselection-r13", t_resel_r13.to_string()); - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (ext) { - if (scptm_freq_offset_r14_present) { - j.write_int("scptm-FreqOffset-r14", scptm_freq_offset_r14); - } - } + j.start_obj("DL-CCCH-Message-NB"); + j.write_fieldname("message"); + msg.to_json(j); + j.end_obj(); j.end_obj(); + j.end_array(); } -// SystemInformation-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE sys_info_nb_r13_ies_s::pack(bit_ref& bref) const +// NRSRP-ChangeThresh-NB-r16 ::= ENUMERATED +const char* nrsrp_change_thresh_nb_r16_opts::to_string() const { - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + 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"); +} - HANDLE_CODE(pack_dyn_seq_of(bref, sib_type_and_info_r13, 1, 32)); - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); +// 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 sys_info_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE pur_nrsrp_change_thres_nb_r16_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(decrease_thresh_r16_present, 1)); - HANDLE_CODE(unpack_dyn_seq_of(sib_type_and_info_r13, bref, 1, 32)); - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); + HANDLE_CODE(increase_thresh_r16.unpack(bref)); + if (decrease_thresh_r16_present) { + HANDLE_CODE(decrease_thresh_r16.unpack(bref)); } return SRSASN_SUCCESS; } -void sys_info_nb_r13_ies_s::to_json(json_writer& j) const +void pur_nrsrp_change_thres_nb_r16_s::to_json(json_writer& j) const { j.start_obj(); - j.start_array("sib-TypeAndInfo-r13"); - for (const auto& e1 : sib_type_and_info_r13) { - e1.to_json(j); - } - j.end_array(); - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - j.start_obj(); - j.end_obj(); + j.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(); } -void sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::destroy_() +// 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::sib2_r13: - c.destroy(); + case types::periodicity8: + c.init(other.c.get()); + break; + case types::periodicity16: + c.init(other.c.get()); + break; + case types::periodicity32: + c.init(other.c.get()); + break; + case types::periodicity64: + c.init(other.c.get()); + break; + case types::periodicity128: + c.init(other.c.get()); + break; + case types::periodicity256: + c.init(other.c.get()); + break; + case types::periodicity512: + c.init(other.c.get()); + break; + case types::periodicity1024: + c.init(other.c.get()); + break; + case types::periodicity2048: + c.init(other.c.get()); + break; + case types::periodicity4096: + c.init(other.c.get()); + break; + case types::periodicity8192: + c.init(other.c.get()); + 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()); + break; + case types::periodicity16: + c.set(other.c.get()); + break; + case types::periodicity32: + c.set(other.c.get()); break; - case types::sib3_r13: - c.destroy(); + case types::periodicity64: + c.set(other.c.get()); break; - case types::sib4_r13: - c.destroy(); + case types::periodicity128: + c.set(other.c.get()); break; - case types::sib5_r13: - c.destroy(); + case types::periodicity256: + c.set(other.c.get()); break; - case types::sib14_r13: - c.destroy(); + case types::periodicity512: + c.set(other.c.get()); break; - case types::sib16_r13: - c.destroy(); + case types::periodicity1024: + c.set(other.c.get()); break; - case types::sib15_v1430: - c.destroy(); + case types::periodicity2048: + c.set(other.c.get()); break; - case types::sib20_v1430: - c.destroy(); + case types::periodicity4096: + c.set(other.c.get()); break; - case types::sib22_v1430: - c.destroy(); + case types::periodicity8192: + c.set(other.c.get()); break; - case types::sib23_v1530: - c.destroy(); + case types::nulltype: break; default: - break; + log_invalid_choice_id(type_, "pur_periodicity_and_offset_nb_r16_c"); } + + return *this; } -void sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set(types::options e) +uint8_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity8() { - destroy_(); - type_ = e; + set(types::periodicity8); + return c.get(); +} +uint8_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity16() +{ + set(types::periodicity16); + return c.get(); +} +uint8_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity32() +{ + set(types::periodicity32); + return c.get(); +} +uint8_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity64() +{ + set(types::periodicity64); + return c.get(); +} +uint8_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity128() +{ + set(types::periodicity128); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity256() +{ + set(types::periodicity256); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity512() +{ + set(types::periodicity512); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity1024() +{ + set(types::periodicity1024); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity2048() +{ + set(types::periodicity2048); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity4096() +{ + set(types::periodicity4096); + return c.get(); +} +uint16_t& pur_periodicity_and_offset_nb_r16_c::set_periodicity8192() +{ + set(types::periodicity8192); + return c.get(); +} +void pur_periodicity_and_offset_nb_r16_c::to_json(json_writer& j) const +{ + j.start_obj(); switch (type_) { - case types::sib2_r13: - c.init(); + case types::periodicity8: + j.write_int("periodicity8", c.get()); break; - case types::sib3_r13: - c.init(); + case types::periodicity16: + j.write_int("periodicity16", c.get()); break; - case types::sib4_r13: - c.init(); + case types::periodicity32: + j.write_int("periodicity32", c.get()); break; - case types::sib5_r13: - c.init(); + case types::periodicity64: + j.write_int("periodicity64", c.get()); break; - case types::sib14_r13: - c.init(); + case types::periodicity128: + j.write_int("periodicity128", c.get()); break; - case types::sib16_r13: - c.init(); + case types::periodicity256: + j.write_int("periodicity256", c.get()); break; - case types::sib15_v1430: - c.init(); + case types::periodicity512: + j.write_int("periodicity512", c.get()); break; - case types::sib20_v1430: - c.init(); + case types::periodicity1024: + j.write_int("periodicity1024", c.get()); break; - case types::sib22_v1430: - c.init(); + case types::periodicity2048: + j.write_int("periodicity2048", c.get()); break; - case types::sib23_v1530: - c.init(); + case types::periodicity4096: + j.write_int("periodicity4096", c.get()); break; - case types::nulltype: + case types::periodicity8192: + j.write_int("periodicity8192", c.get()); break; default: - log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_"); + log_invalid_choice_id(type_, "pur_periodicity_and_offset_nb_r16_c"); } + j.end_obj(); } -sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::sib_type_and_info_r13_item_c_( - const sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_& other) +SRSASN_CODE pur_periodicity_and_offset_nb_r16_c::pack(bit_ref& bref) const { - type_ = other.type(); + type_.pack(bref); switch (type_) { - case types::sib2_r13: - c.init(other.c.get()); + case types::periodicity8: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)7u)); break; - case types::sib3_r13: - c.init(other.c.get()); + case types::periodicity16: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)15u)); break; - case types::sib4_r13: - c.init(other.c.get()); + case types::periodicity32: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)31u)); break; - case types::sib5_r13: - c.init(other.c.get()); + case types::periodicity64: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)63u)); break; - case types::sib14_r13: - c.init(other.c.get()); + case types::periodicity128: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)127u)); break; - case types::sib16_r13: - c.init(other.c.get()); + case types::periodicity256: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)1u, (uint16_t)257u)); break; - case types::sib15_v1430: - c.init(other.c.get()); + case types::periodicity512: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)1u, (uint16_t)511u)); break; - case types::sib20_v1430: - c.init(other.c.get()); + case types::periodicity1024: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)1u, (uint16_t)1023u)); break; - case types::sib22_v1430: - c.init(other.c.get()); + case types::periodicity2048: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)1u, (uint16_t)2047u)); break; - case types::sib23_v1530: - c.init(other.c.get()); + case types::periodicity4096: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)1u, (uint16_t)4095u)); break; - case types::nulltype: + case types::periodicity8192: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)1u, (uint16_t)8191u)); break; default: - log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_"); + log_invalid_choice_id(type_, "pur_periodicity_and_offset_nb_r16_c"); + return SRSASN_ERROR_ENCODE_FAIL; } + return SRSASN_SUCCESS; } -sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::operator=( - const sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_& other) +SRSASN_CODE pur_periodicity_and_offset_nb_r16_c::unpack(cbit_ref& bref) { - if (this == &other) { - return *this; - } - set(other.type()); + types e; + e.unpack(bref); + set(e); switch (type_) { - case types::sib2_r13: - c.set(other.c.get()); + case types::periodicity8: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)7u)); break; - case types::sib3_r13: - c.set(other.c.get()); + case types::periodicity16: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)15u)); break; - case types::sib4_r13: - c.set(other.c.get()); + case types::periodicity32: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)31u)); break; - case types::sib5_r13: - c.set(other.c.get()); + case types::periodicity64: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)63u)); break; - case types::sib14_r13: - c.set(other.c.get()); + case types::periodicity128: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)127u)); break; - case types::sib16_r13: - c.set(other.c.get()); + case types::periodicity256: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)257u)); break; - case types::sib15_v1430: - c.set(other.c.get()); + case types::periodicity512: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)511u)); break; - case types::sib20_v1430: - c.set(other.c.get()); + case types::periodicity1024: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)1023u)); break; - case types::sib22_v1430: - c.set(other.c.get()); + case types::periodicity2048: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)2047u)); break; - case types::sib23_v1530: - c.set(other.c.get()); + case types::periodicity4096: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)4095u)); break; - case types::nulltype: + case types::periodicity8192: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)1u, (uint16_t)8191u)); break; default: - log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_"); + log_invalid_choice_id(type_, "pur_periodicity_and_offset_nb_r16_c"); + return SRSASN_ERROR_DECODE_FAIL; } + return SRSASN_SUCCESS; +} - return *this; +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"); } -sib_type2_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib2_r13() +uint16_t pur_periodicity_and_offset_nb_r16_c::types_opts::to_number() const { - set(types::sib2_r13); - return c.get(); + 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"); } -sib_type3_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib3_r13() + +// PUR-UL-16QAM-Config-NB-r17 ::= SEQUENCE +SRSASN_CODE pur_ul_minus16_qam_cfg_nb_r17_s::pack(bit_ref& bref) const { - set(types::sib3_r13); - return c.get(); + HANDLE_CODE(ul_pwr_ctrl_ded_r17.pack(bref)); + + return SRSASN_SUCCESS; } -sib_type4_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib4_r13() +SRSASN_CODE pur_ul_minus16_qam_cfg_nb_r17_s::unpack(cbit_ref& bref) { - set(types::sib4_r13); - return c.get(); + HANDLE_CODE(ul_pwr_ctrl_ded_r17.unpack(bref)); + + return SRSASN_SUCCESS; } -sib_type5_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib5_r13() +void pur_ul_minus16_qam_cfg_nb_r17_s::to_json(json_writer& j) const { - set(types::sib5_r13); - return c.get(); + j.start_obj(); + j.write_fieldname("uplinkPowerControlDedicated-r17"); + ul_pwr_ctrl_ded_r17.to_json(j); + j.end_obj(); } -sib_type14_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib14_r13() + +// PUR-Config-NB-r16 ::= SEQUENCE +SRSASN_CODE pur_cfg_nb_r16_s::pack(bit_ref& bref) const { - set(types::sib14_r13); - return c.get(); + 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; } -sib_type16_nb_r13_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib16_r13() +SRSASN_CODE pur_cfg_nb_r16_s::unpack(cbit_ref& bref) { - set(types::sib16_r13); - return c.get(); + 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_"); } -sib_type15_nb_r14_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib15_v1430() +uint8_t pur_cfg_nb_r16_s::pur_resp_win_timer_r16_opts::to_number() const { - set(types::sib15_v1430); - return c.get(); + 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_"); } -sib_type20_nb_r14_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib20_v1430() + +const char* pur_cfg_nb_r16_s::pur_num_occasions_r16_opts::to_string() const { - set(types::sib20_v1430); - return c.get(); + static const char* options[] = {"one", "infinite"}; + return convert_enum_idx(options, 2, value, "pur_cfg_nb_r16_s::pur_num_occasions_r16_e_"); } -sib_type22_nb_r14_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib22_v1430() +uint8_t pur_cfg_nb_r16_s::pur_num_occasions_r16_opts::to_number() const { - set(types::sib22_v1430); - return c.get(); + static const uint8_t options[] = {1}; + return map_enum_number(options, 1, value, "pur_cfg_nb_r16_s::pur_num_occasions_r16_e_"); } -sib_type23_nb_r15_s& sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::set_sib23_v1530() + +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) { - set(types::sib23_v1530); - return c.get(); + destroy_(); + type_ = e; } -void sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::to_json(json_writer& j) const +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) { - j.start_obj(); + type_ = other.type(); switch (type_) { - case types::sib2_r13: - j.write_fieldname("sib2-r13"); - c.get().to_json(j); - break; - case types::sib3_r13: - j.write_fieldname("sib3-r13"); - c.get().to_json(j); - break; - case types::sib4_r13: - j.write_fieldname("sib4-r13"); - c.get().to_json(j); + case types::khz15: + c.init(other.c.get()); break; - case types::sib5_r13: - j.write_fieldname("sib5-r13"); - c.get().to_json(j); + case types::khz3dot75: + c.init(other.c.get()); break; - case types::sib14_r13: - j.write_fieldname("sib14-r13"); - c.get().to_json(j); + case types::nulltype: break; - case types::sib16_r13: - j.write_fieldname("sib16-r13"); - c.get().to_json(j); + 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()); break; - case types::sib15_v1430: - j.write_fieldname("sib15-v1430"); - c.get().to_json(j); + case types::khz3dot75: + c.set(other.c.get()); break; - case types::sib20_v1430: - j.write_fieldname("sib20-v1430"); - c.get().to_json(j); + case types::nulltype: break; - case types::sib22_v1430: - j.write_fieldname("sib22-v1430"); - c.get().to_json(j); + 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& 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(); +} +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()); break; - case types::sib23_v1530: - j.write_fieldname("sib23-v1530"); - c.get().to_json(j); + case types::khz3dot75: + j.write_int("khz3dot75", c.get()); break; default: - log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_"); + 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 sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::pack(bit_ref& bref) const +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::sib2_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::sib3_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::sib4_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::sib5_r13: - HANDLE_CODE(c.get().pack(bref)); + case types::khz15: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)18u)); break; - case types::sib14_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::sib16_r13: - HANDLE_CODE(c.get().pack(bref)); + case types::khz3dot75: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)47u)); break; - case types::sib15_v1430: { - varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(c.get().pack(bref)); - } break; - case types::sib20_v1430: { - varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(c.get().pack(bref)); - } break; - case types::sib22_v1430: { - varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(c.get().pack(bref)); - } break; - case types::sib23_v1530: { - varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(c.get().pack(bref)); - } break; default: - log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_"); + 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 sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::unpack(cbit_ref& bref) +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::sib2_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::sib3_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::sib4_r13: - HANDLE_CODE(c.get().unpack(bref)); + case types::khz15: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)18u)); break; - case types::sib5_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::sib14_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::sib16_r13: - HANDLE_CODE(c.get().unpack(bref)); + case types::khz3dot75: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)47u)); break; - case types::sib15_v1430: { - varlength_field_unpack_guard varlen_scope(bref, false); - HANDLE_CODE(c.get().unpack(bref)); - } break; - case types::sib20_v1430: { - varlength_field_unpack_guard varlen_scope(bref, false); - HANDLE_CODE(c.get().unpack(bref)); - } break; - case types::sib22_v1430: { - varlength_field_unpack_guard varlen_scope(bref, false); - HANDLE_CODE(c.get().unpack(bref)); - } break; - case types::sib23_v1530: { - varlength_field_unpack_guard varlen_scope(bref, false); - HANDLE_CODE(c.get().unpack(bref)); - } break; default: - log_invalid_choice_id(type_, "sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_"); + 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* sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::types_opts::to_string() const +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[] = {"sib2-r13", - "sib3-r13", - "sib4-r13", - "sib5-r13", - "sib14-r13", - "sib16-r13", - "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"); + 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"); } -uint8_t sys_info_nb_r13_ies_s::sib_type_and_info_r13_item_c_::types_opts::to_number() const +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 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 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"); } - -// SystemInformationBlockType1-NB-v1350 ::= SEQUENCE -SRSASN_CODE sib_type1_nb_v1350_s::pack(bit_ref& bref) const +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 { - HANDLE_CODE(bref.pack(cell_sel_info_v1350_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - if (cell_sel_info_v1350_present) { - HANDLE_CODE(cell_sel_info_v1350.pack(bref)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.pack(bref)); - } + 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"); +} - return SRSASN_SUCCESS; +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; } -SRSASN_CODE sib_type1_nb_v1350_s::unpack(cbit_ref& bref) +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) { - HANDLE_CODE(bref.unpack(cell_sel_info_v1350_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - if (cell_sel_info_v1350_present) { - HANDLE_CODE(cell_sel_info_v1350.unpack(bref)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); + type_ = other.type(); + switch (type_) { + case types::single_tone: + c.init(other.c.get()); + break; + case types::multi_tone: + c.init(other.c.get()); + 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 SRSASN_SUCCESS; } -void sib_type1_nb_v1350_s::to_json(json_writer& j) const +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) { - j.start_obj(); - if (cell_sel_info_v1350_present) { - j.write_fieldname("cellSelectionInfo-v1350"); - cell_sel_info_v1350.to_json(j); + if (this == &other) { + return *this; } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); + set(other.type()); + switch (type_) { + case types::single_tone: + c.set(other.c.get()); + break; + case types::multi_tone: + c.set(other.c.get()); + 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_"); } - j.end_obj(); -} - -// SystemInformation-NB ::= SEQUENCE -SRSASN_CODE sys_info_nb_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(crit_exts.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE sys_info_nb_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(crit_exts.unpack(bref)); - - return SRSASN_SUCCESS; -} -void sys_info_nb_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_fieldname("criticalExtensions"); - crit_exts.to_json(j); - j.end_obj(); -} -void sys_info_nb_s::crit_exts_c_::set(types::options e) -{ - type_ = e; + return *this; } -sys_info_nb_r13_ies_s& sys_info_nb_s::crit_exts_c_::set_sys_info_r13() -{ - set(types::sys_info_r13); - return c; +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(); } -void sys_info_nb_s::crit_exts_c_::set_crit_exts_future() +uint8_t& pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_::set_multi_tone() { - set(types::crit_exts_future); + set(types::multi_tone); + return c.get(); } -void sys_info_nb_s::crit_exts_c_::to_json(json_writer& j) const +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::sys_info_r13: - j.write_fieldname("systemInformation-r13"); - c.to_json(j); + case types::single_tone: + j.write_int("singleTone", c.get()); break; - case types::crit_exts_future: + case types::multi_tone: + j.write_int("multiTone", c.get()); break; default: - log_invalid_choice_id(type_, "sys_info_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_mcs_r16_c_"); } j.end_obj(); } -SRSASN_CODE sys_info_nb_s::crit_exts_c_::pack(bit_ref& bref) const +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::sys_info_r13: - HANDLE_CODE(c.pack(bref)); + case types::single_tone: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)10u)); break; - case types::crit_exts_future: + case types::multi_tone: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)13u)); break; default: - log_invalid_choice_id(type_, "sys_info_nb_s::crit_exts_c_"); + 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 sys_info_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +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::sys_info_r13: - HANDLE_CODE(c.unpack(bref)); + case types::single_tone: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)10u)); break; - case types::crit_exts_future: + case types::multi_tone: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)13u)); break; default: - log_invalid_choice_id(type_, "sys_info_nb_s::crit_exts_c_"); + 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* sys_info_nb_s::crit_exts_c_::types_opts::to_string() const +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[] = {"systemInformation-r13", "criticalExtensionsFuture"}; - return convert_enum_idx(options, 2, value, "sys_info_nb_s::crit_exts_c_::types"); + 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"); } -// SystemInformationBlockType1-NB ::= SEQUENCE -SRSASN_CODE sib_type1_nb_s::pack(bit_ref& bref) const +const char* pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::alpha_r16_opts::to_string() const { - HANDLE_CODE(bref.pack(p_max_r13_present, 1)); - HANDLE_CODE(bref.pack(freq_band_info_r13_present, 1)); - HANDLE_CODE(bref.pack(multi_band_info_list_r13_present, 1)); - HANDLE_CODE(bref.pack(dl_bitmap_r13_present, 1)); - HANDLE_CODE(bref.pack(eutra_ctrl_region_size_r13_present, 1)); - HANDLE_CODE(bref.pack(nrs_crs_pwr_offset_r13_present, 1)); - HANDLE_CODE(bref.pack(si_radio_frame_offset_r13_present, 1)); - HANDLE_CODE(bref.pack(sys_info_value_tag_list_r13_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - HANDLE_CODE(hyper_sfn_msb_r13.pack(bref)); - HANDLE_CODE(pack_dyn_seq_of(bref, cell_access_related_info_r13.plmn_id_list_r13, 1, 6)); - HANDLE_CODE(cell_access_related_info_r13.tac_r13.pack(bref)); - HANDLE_CODE(cell_access_related_info_r13.cell_id_r13.pack(bref)); - HANDLE_CODE(cell_access_related_info_r13.cell_barred_r13.pack(bref)); - HANDLE_CODE(cell_access_related_info_r13.intra_freq_resel_r13.pack(bref)); - HANDLE_CODE(pack_integer(bref, cell_sel_info_r13.q_rx_lev_min_r13, (int8_t)-70, (int8_t)-22)); - HANDLE_CODE(pack_integer(bref, cell_sel_info_r13.q_qual_min_r13, (int8_t)-34, (int8_t)-3)); - if (p_max_r13_present) { - HANDLE_CODE(pack_integer(bref, p_max_r13, (int8_t)-30, (int8_t)33)); - } - HANDLE_CODE(pack_integer(bref, freq_band_ind_r13, (uint16_t)1u, (uint16_t)256u)); - if (freq_band_info_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_info_r13, 1, 4)); - } - if (multi_band_info_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_r13, 1, 8)); - } - if (dl_bitmap_r13_present) { - HANDLE_CODE(dl_bitmap_r13.pack(bref)); - } - if (eutra_ctrl_region_size_r13_present) { - HANDLE_CODE(eutra_ctrl_region_size_r13.pack(bref)); - } - if (nrs_crs_pwr_offset_r13_present) { - HANDLE_CODE(nrs_crs_pwr_offset_r13.pack(bref)); - } - HANDLE_CODE(pack_dyn_seq_of(bref, sched_info_list_r13, 1, 8)); - HANDLE_CODE(si_win_len_r13.pack(bref)); - if (si_radio_frame_offset_r13_present) { - HANDLE_CODE(pack_integer(bref, si_radio_frame_offset_r13, (uint8_t)1u, (uint8_t)15u)); - } - if (sys_info_value_tag_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, sys_info_value_tag_list_r13, 1, 8, integer_packer(0, 3))); - } - 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; + 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_"); } -SRSASN_CODE sib_type1_nb_s::unpack(cbit_ref& bref) +float pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::alpha_r16_opts::to_number() const { - HANDLE_CODE(bref.unpack(p_max_r13_present, 1)); - HANDLE_CODE(bref.unpack(freq_band_info_r13_present, 1)); - HANDLE_CODE(bref.unpack(multi_band_info_list_r13_present, 1)); - HANDLE_CODE(bref.unpack(dl_bitmap_r13_present, 1)); - HANDLE_CODE(bref.unpack(eutra_ctrl_region_size_r13_present, 1)); - HANDLE_CODE(bref.unpack(nrs_crs_pwr_offset_r13_present, 1)); - HANDLE_CODE(bref.unpack(si_radio_frame_offset_r13_present, 1)); - HANDLE_CODE(bref.unpack(sys_info_value_tag_list_r13_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - HANDLE_CODE(hyper_sfn_msb_r13.unpack(bref)); - HANDLE_CODE(unpack_dyn_seq_of(cell_access_related_info_r13.plmn_id_list_r13, bref, 1, 6)); - HANDLE_CODE(cell_access_related_info_r13.tac_r13.unpack(bref)); - HANDLE_CODE(cell_access_related_info_r13.cell_id_r13.unpack(bref)); - HANDLE_CODE(cell_access_related_info_r13.cell_barred_r13.unpack(bref)); - HANDLE_CODE(cell_access_related_info_r13.intra_freq_resel_r13.unpack(bref)); - HANDLE_CODE(unpack_integer(cell_sel_info_r13.q_rx_lev_min_r13, bref, (int8_t)-70, (int8_t)-22)); - HANDLE_CODE(unpack_integer(cell_sel_info_r13.q_qual_min_r13, bref, (int8_t)-34, (int8_t)-3)); - if (p_max_r13_present) { - HANDLE_CODE(unpack_integer(p_max_r13, bref, (int8_t)-30, (int8_t)33)); - } - HANDLE_CODE(unpack_integer(freq_band_ind_r13, bref, (uint16_t)1u, (uint16_t)256u)); - if (freq_band_info_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(freq_band_info_r13, bref, 1, 4)); - } - if (multi_band_info_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_r13, bref, 1, 8)); - } - if (dl_bitmap_r13_present) { - HANDLE_CODE(dl_bitmap_r13.unpack(bref)); - } - if (eutra_ctrl_region_size_r13_present) { - HANDLE_CODE(eutra_ctrl_region_size_r13.unpack(bref)); - } - if (nrs_crs_pwr_offset_r13_present) { - HANDLE_CODE(nrs_crs_pwr_offset_r13.unpack(bref)); - } - HANDLE_CODE(unpack_dyn_seq_of(sched_info_list_r13, bref, 1, 8)); - HANDLE_CODE(si_win_len_r13.unpack(bref)); - if (si_radio_frame_offset_r13_present) { - HANDLE_CODE(unpack_integer(si_radio_frame_offset_r13, bref, (uint8_t)1u, (uint8_t)15u)); - } - if (sys_info_value_tag_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(sys_info_value_tag_list_r13, bref, 1, 8, integer_packer(0, 3))); - } - 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; + 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_"); } -void sib_type1_nb_s::to_json(json_writer& j) const +const char* pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::alpha_r16_opts::to_number_string() const { - j.start_obj(); - j.write_str("hyperSFN-MSB-r13", hyper_sfn_msb_r13.to_string()); - j.write_fieldname("cellAccessRelatedInfo-r13"); - j.start_obj(); - j.start_array("plmn-IdentityList-r13"); - for (const auto& e1 : cell_access_related_info_r13.plmn_id_list_r13) { - e1.to_json(j); - } - j.end_array(); - j.write_str("trackingAreaCode-r13", cell_access_related_info_r13.tac_r13.to_string()); - j.write_str("cellIdentity-r13", cell_access_related_info_r13.cell_id_r13.to_string()); - j.write_str("cellBarred-r13", cell_access_related_info_r13.cell_barred_r13.to_string()); - j.write_str("intraFreqReselection-r13", cell_access_related_info_r13.intra_freq_resel_r13.to_string()); - j.end_obj(); - j.write_fieldname("cellSelectionInfo-r13"); - j.start_obj(); - j.write_int("q-RxLevMin-r13", cell_sel_info_r13.q_rx_lev_min_r13); - j.write_int("q-QualMin-r13", cell_sel_info_r13.q_qual_min_r13); - j.end_obj(); - if (p_max_r13_present) { - j.write_int("p-Max-r13", p_max_r13); - } - j.write_int("freqBandIndicator-r13", freq_band_ind_r13); - if (freq_band_info_r13_present) { - j.start_array("freqBandInfo-r13"); - for (const auto& e1 : freq_band_info_r13) { - e1.to_json(j); - } - j.end_array(); - } - if (multi_band_info_list_r13_present) { - j.start_array("multiBandInfoList-r13"); - for (const auto& e1 : multi_band_info_list_r13) { - e1.to_json(j); - } - j.end_array(); - } - if (dl_bitmap_r13_present) { - j.write_fieldname("downlinkBitmap-r13"); - dl_bitmap_r13.to_json(j); - } - if (eutra_ctrl_region_size_r13_present) { - j.write_str("eutraControlRegionSize-r13", eutra_ctrl_region_size_r13.to_string()); - } - if (nrs_crs_pwr_offset_r13_present) { - j.write_str("nrs-CRS-PowerOffset-r13", nrs_crs_pwr_offset_r13.to_string()); - } - j.start_array("schedulingInfoList-r13"); - for (const auto& e1 : sched_info_list_r13) { - e1.to_json(j); - } - j.end_array(); - j.write_str("si-WindowLength-r13", si_win_len_r13.to_string()); - if (si_radio_frame_offset_r13_present) { - j.write_int("si-RadioFrameOffset-r13", si_radio_frame_offset_r13); - } - if (sys_info_value_tag_list_r13_present) { - j.start_array("systemInfoValueTagList-r13"); - for (const auto& e1 : sys_info_value_tag_list_r13) { - j.write_int(e1); - } - j.end_array(); - } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); - } - j.end_obj(); + 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* sib_type1_nb_s::cell_access_related_info_r13_s_::cell_barred_r13_opts::to_string() const +const char* pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_cyclic_shift_r16_opts::to_string() const { - static const char* options[] = {"barred", "notBarred"}; - return convert_enum_idx(options, 2, value, "sib_type1_nb_s::cell_access_related_info_r13_s_::cell_barred_r13_e_"); + 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_"); } - -const char* sib_type1_nb_s::cell_access_related_info_r13_s_::intra_freq_resel_r13_opts::to_string() const +uint8_t pur_cfg_nb_r16_s::pur_phys_cfg_r16_s_::npusch_cyclic_shift_r16_opts::to_number() const { - static const char* options[] = {"allowed", "notAllowed"}; - return convert_enum_idx( - options, 2, value, "sib_type1_nb_s::cell_access_related_info_r13_s_::intra_freq_resel_r13_e_"); + 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_"); } -const char* sib_type1_nb_s::eutra_ctrl_region_size_r13_opts::to_string() const -{ - static const char* options[] = {"n1", "n2", "n3"}; - return convert_enum_idx(options, 3, value, "sib_type1_nb_s::eutra_ctrl_region_size_r13_e_"); -} -uint8_t sib_type1_nb_s::eutra_ctrl_region_size_r13_opts::to_number() const +// RRCConnectionRelease-NB-v1700-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_release_nb_v1700_ies_s::pack(bit_ref& bref) const { - static const uint8_t options[] = {1, 2, 3}; - return map_enum_number(options, 3, value, "sib_type1_nb_s::eutra_ctrl_region_size_r13_e_"); -} + HANDLE_CODE(bref.pack(cbp_idx_r17_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); -const char* sib_type1_nb_s::nrs_crs_pwr_offset_r13_opts::to_string() const -{ - static const char* options[] = {"dB-6", - "dB-4dot77", - "dB-3", - "dB-1dot77", - "dB0", - "dB1", - "dB1dot23", - "dB2", - "dB3", - "dB4", - "dB4dot23", - "dB5", - "dB6", - "dB7", - "dB8", - "dB9"}; - return convert_enum_idx(options, 16, value, "sib_type1_nb_s::nrs_crs_pwr_offset_r13_e_"); -} -float sib_type1_nb_s::nrs_crs_pwr_offset_r13_opts::to_number() const -{ - static const float options[] = { - -6.0, -4.77, -3.0, -1.77, 0.0, 1.0, 1.23, 2.0, 3.0, 4.0, 4.23, 5.0, 6.0, 7.0, 8.0, 9.0}; - return map_enum_number(options, 16, value, "sib_type1_nb_s::nrs_crs_pwr_offset_r13_e_"); + if (cbp_idx_r17_present) { + HANDLE_CODE(pack_integer(bref, cbp_idx_r17, (uint8_t)1u, (uint8_t)2u)); + } + + return SRSASN_SUCCESS; } -const char* sib_type1_nb_s::nrs_crs_pwr_offset_r13_opts::to_number_string() const +SRSASN_CODE rrc_conn_release_nb_v1700_ies_s::unpack(cbit_ref& bref) { - static const char* options[] = { - "-6", "-4.77", "-3", "-1.77", "0", "1", "1.23", "2", "3", "4", "4.23", "5", "6", "7", "8", "9"}; - return convert_enum_idx(options, 16, value, "sib_type1_nb_s::nrs_crs_pwr_offset_r13_e_"); -} + HANDLE_CODE(bref.unpack(cbp_idx_r17_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); -const char* sib_type1_nb_s::si_win_len_r13_opts::to_string() const + 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 { - static const char* options[] = {"ms160", "ms320", "ms480", "ms640", "ms960", "ms1280", "ms1600", "spare1"}; - return convert_enum_idx(options, 8, value, "sib_type1_nb_s::si_win_len_r13_e_"); + 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(); } -uint16_t sib_type1_nb_s::si_win_len_r13_opts::to_number() const + +// RRCConnectionRelease-NB-v1610-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_release_nb_v1610_ies_s::pack(bit_ref& bref) const { - static const uint16_t options[] = {160, 320, 480, 640, 960, 1280, 1600}; - return map_enum_number(options, 7, value, "sib_type1_nb_s::si_win_len_r13_e_"); + 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)); -// BCCH-DL-SCH-MessageType-NB ::= CHOICE -void bcch_dl_sch_msg_type_nb_c::set(types::options e) + 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 { - type_ = e; + 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(); } -bcch_dl_sch_msg_type_nb_c::c1_c_& bcch_dl_sch_msg_type_nb_c::set_c1() + +// RRCConnectionRelease-NB-v15b0-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_release_nb_v15b0_ies_s::pack(bit_ref& bref) const { - set(types::c1); - return c; + 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; } -void bcch_dl_sch_msg_type_nb_c::set_msg_class_ext() +SRSASN_CODE rrc_conn_release_nb_v15b0_ies_s::unpack(cbit_ref& bref) { - set(types::msg_class_ext); + 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 bcch_dl_sch_msg_type_nb_c::to_json(json_writer& j) const +void rrc_conn_release_nb_v15b0_ies_s::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::c1: - j.write_fieldname("c1"); - c.to_json(j); - break; - case types::msg_class_ext: - break; - default: - log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c"); + if (no_last_cell_upd_r15_present) { + j.write_str("noLastCellUpdate-r15", "true"); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); } j.end_obj(); } -SRSASN_CODE bcch_dl_sch_msg_type_nb_c::pack(bit_ref& bref) const + +// RRCConnectionRelease-NB-v1550-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_release_nb_v1550_ies_s::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::c1: - HANDLE_CODE(c.pack(bref)); - break; - case types::msg_class_ext: - break; - default: - log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c"); - return SRSASN_ERROR_ENCODE_FAIL; + HANDLE_CODE(bref.pack(redirected_carrier_info_v1550_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (redirected_carrier_info_v1550_present) { + HANDLE_CODE(redirected_carrier_info_v1550.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); } + return SRSASN_SUCCESS; } -SRSASN_CODE bcch_dl_sch_msg_type_nb_c::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_release_nb_v1550_ies_s::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::c1: - HANDLE_CODE(c.unpack(bref)); - break; - case types::msg_class_ext: - break; - default: - log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c"); - return SRSASN_ERROR_DECODE_FAIL; + HANDLE_CODE(bref.unpack(redirected_carrier_info_v1550_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (redirected_carrier_info_v1550_present) { + HANDLE_CODE(redirected_carrier_info_v1550.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); } + return SRSASN_SUCCESS; } - -void bcch_dl_sch_msg_type_nb_c::c1_c_::destroy_() +void rrc_conn_release_nb_v1550_ies_s::to_json(json_writer& j) const { - switch (type_) { - case types::sys_info_r13: - c.destroy(); - break; - case types::sib_type1_r13: - c.destroy(); - break; - default: - break; + j.start_obj(); + if (redirected_carrier_info_v1550_present) { + j.write_fieldname("redirectedCarrierInfo-v1550"); + redirected_carrier_info_v1550.to_json(j); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); } + j.end_obj(); } -void bcch_dl_sch_msg_type_nb_c::c1_c_::set(types::options e) + +// RRCConnectionRelease-NB-v1530-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_release_nb_v1530_ies_s::pack(bit_ref& bref) const { - destroy_(); - type_ = e; - switch (type_) { - case types::sys_info_r13: - c.init(); - break; - case types::sib_type1_r13: - c.init(); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); + HANDLE_CODE(bref.pack(drb_continue_rohc_r15_present, 1)); + HANDLE_CODE(bref.pack(next_hop_chaining_count_r15_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (next_hop_chaining_count_r15_present) { + HANDLE_CODE(pack_integer(bref, next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); } + + return SRSASN_SUCCESS; } -bcch_dl_sch_msg_type_nb_c::c1_c_::c1_c_(const bcch_dl_sch_msg_type_nb_c::c1_c_& other) +SRSASN_CODE rrc_conn_release_nb_v1530_ies_s::unpack(cbit_ref& bref) { - type_ = other.type(); - switch (type_) { - case types::sys_info_r13: - c.init(other.c.get()); - break; - case types::sib_type1_r13: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); + HANDLE_CODE(bref.unpack(drb_continue_rohc_r15_present, 1)); + HANDLE_CODE(bref.unpack(next_hop_chaining_count_r15_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (next_hop_chaining_count_r15_present) { + HANDLE_CODE(unpack_integer(next_hop_chaining_count_r15, bref, (uint8_t)0u, (uint8_t)7u)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); } + + return SRSASN_SUCCESS; } -bcch_dl_sch_msg_type_nb_c::c1_c_& -bcch_dl_sch_msg_type_nb_c::c1_c_::operator=(const bcch_dl_sch_msg_type_nb_c::c1_c_& other) +void rrc_conn_release_nb_v1530_ies_s::to_json(json_writer& j) const { - if (this == &other) { - return *this; + j.start_obj(); + if (drb_continue_rohc_r15_present) { + j.write_str("drb-ContinueROHC-r15", "true"); } - set(other.type()); - switch (type_) { - case types::sys_info_r13: - c.set(other.c.get()); - break; - case types::sib_type1_r13: - c.set(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); + if (next_hop_chaining_count_r15_present) { + j.write_int("nextHopChainingCount-r15", next_hop_chaining_count_r15); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + +// RRCConnectionRelease-NB-v1430-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_release_nb_v1430_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(redirected_carrier_info_v1430_present, 1)); + HANDLE_CODE(bref.pack(extended_wait_time_cpdata_r14_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (redirected_carrier_info_v1430_present) { + HANDLE_CODE(redirected_carrier_info_v1430.pack(bref)); + } + if (extended_wait_time_cpdata_r14_present) { + HANDLE_CODE(pack_integer(bref, extended_wait_time_cpdata_r14, (uint16_t)1u, (uint16_t)1800u)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); } - return *this; -} -sys_info_nb_s& bcch_dl_sch_msg_type_nb_c::c1_c_::set_sys_info_r13() -{ - set(types::sys_info_r13); - return c.get(); + return SRSASN_SUCCESS; } -sib_type1_nb_s& bcch_dl_sch_msg_type_nb_c::c1_c_::set_sib_type1_r13() +SRSASN_CODE rrc_conn_release_nb_v1430_ies_s::unpack(cbit_ref& bref) { - set(types::sib_type1_r13); - return c.get(); + HANDLE_CODE(bref.unpack(redirected_carrier_info_v1430_present, 1)); + HANDLE_CODE(bref.unpack(extended_wait_time_cpdata_r14_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (redirected_carrier_info_v1430_present) { + HANDLE_CODE(redirected_carrier_info_v1430.unpack(bref)); + } + if (extended_wait_time_cpdata_r14_present) { + HANDLE_CODE(unpack_integer(extended_wait_time_cpdata_r14, bref, (uint16_t)1u, (uint16_t)1800u)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; } -void bcch_dl_sch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const +void rrc_conn_release_nb_v1430_ies_s::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::sys_info_r13: - j.write_fieldname("systemInformation-r13"); - c.get().to_json(j); - break; - case types::sib_type1_r13: - j.write_fieldname("systemInformationBlockType1-r13"); - c.get().to_json(j); - break; - default: - log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); + if (redirected_carrier_info_v1430_present) { + j.write_fieldname("redirectedCarrierInfo-v1430"); + redirected_carrier_info_v1430.to_json(j); + } + if (extended_wait_time_cpdata_r14_present) { + j.write_int("extendedWaitTime-CPdata-r14", extended_wait_time_cpdata_r14); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); } j.end_obj(); } -SRSASN_CODE bcch_dl_sch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const + +// RRCConnectionResume-NB-v1610-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_resume_nb_v1610_ies_s::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::sys_info_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::sib_type1_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - default: - log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } + HANDLE_CODE(bref.pack(full_cfg_r16_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + return SRSASN_SUCCESS; } -SRSASN_CODE bcch_dl_sch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_nb_v1610_ies_s::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::sys_info_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::sib_type1_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - default: - log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_nb_c::c1_c_"); - return SRSASN_ERROR_DECODE_FAIL; - } - return SRSASN_SUCCESS; -} + HANDLE_CODE(bref.unpack(full_cfg_r16_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); -const char* bcch_dl_sch_msg_type_nb_c::c1_c_::types_opts::to_string() const -{ - static const char* options[] = {"systemInformation-r13", "systemInformationBlockType1-r13"}; - return convert_enum_idx(options, 2, value, "bcch_dl_sch_msg_type_nb_c::c1_c_::types"); + return SRSASN_SUCCESS; } -uint8_t bcch_dl_sch_msg_type_nb_c::c1_c_::types_opts::to_number() const +void rrc_conn_resume_nb_v1610_ies_s::to_json(json_writer& j) const { - if (value == sib_type1_r13) { - return 1; + j.start_obj(); + if (full_cfg_r16_present) { + j.write_str("fullConfig-r16", "true"); } - invalid_enum_number(value, "bcch_dl_sch_msg_type_nb_c::c1_c_::types"); - return 0; + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); } -const char* bcch_dl_sch_msg_type_nb_c::types_opts::to_string() const -{ - static const char* options[] = {"c1", "messageClassExtension"}; - return convert_enum_idx(options, 2, value, "bcch_dl_sch_msg_type_nb_c::types"); -} -uint8_t bcch_dl_sch_msg_type_nb_c::types_opts::to_number() const +// ReleaseCause-NB-r13 ::= ENUMERATED +const char* release_cause_nb_r13_opts::to_string() const { - static const uint8_t options[] = {1}; - return map_enum_number(options, 1, value, "bcch_dl_sch_msg_type_nb_c::types"); + static const char* options[] = {"loadBalancingTAUrequired", "other", "rrc-Suspend", "spare1"}; + return convert_enum_idx(options, 4, value, "release_cause_nb_r13_e"); } -// BCCH-DL-SCH-Message-NB ::= SEQUENCE -SRSASN_CODE bcch_dl_sch_msg_nb_s::pack(bit_ref& bref) const +// DLInformationTransfer-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE dl_info_transfer_nb_r13_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(msg.pack(bref)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - bref.align_bytes_zero(); + HANDLE_CODE(ded_info_nas_r13.pack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } return SRSASN_SUCCESS; } -SRSASN_CODE bcch_dl_sch_msg_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE dl_info_transfer_nb_r13_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(msg.unpack(bref)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - bref.align_bytes(); + HANDLE_CODE(ded_info_nas_r13.unpack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } return SRSASN_SUCCESS; } -void bcch_dl_sch_msg_nb_s::to_json(json_writer& j) const +void dl_info_transfer_nb_r13_ies_s::to_json(json_writer& j) const { - j.start_array(); j.start_obj(); - j.start_obj("BCCH-DL-SCH-Message-NB"); - j.write_fieldname("message"); - msg.to_json(j); - j.end_obj(); + j.write_str("dedicatedInfoNAS-r13", ded_info_nas_r13.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(); - j.end_array(); } -// RRCConnectionReestablishment-NB-v1430-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_reest_nb_v1430_ies_s::pack(bit_ref& bref) const +// RRCConnectionReconfiguration-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_recfg_nb_r13_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(dl_nas_mac_present, 1)); + HANDLE_CODE(bref.pack(ded_info_nas_list_r13_present, 1)); + HANDLE_CODE(bref.pack(rr_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.pack(full_cfg_r13_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - if (dl_nas_mac_present) { - HANDLE_CODE(dl_nas_mac.pack(bref)); + if (ded_info_nas_list_r13_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, ded_info_nas_list_r13, 1, 2)); + } + if (rr_cfg_ded_r13_present) { + HANDLE_CODE(rr_cfg_ded_r13.pack(bref)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reest_nb_v1430_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_recfg_nb_r13_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(dl_nas_mac_present, 1)); + HANDLE_CODE(bref.unpack(ded_info_nas_list_r13_present, 1)); + HANDLE_CODE(bref.unpack(rr_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.unpack(full_cfg_r13_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - if (dl_nas_mac_present) { - HANDLE_CODE(dl_nas_mac.unpack(bref)); + if (ded_info_nas_list_r13_present) { + HANDLE_CODE(unpack_dyn_seq_of(ded_info_nas_list_r13, bref, 1, 2)); + } + if (rr_cfg_ded_r13_present) { + HANDLE_CODE(rr_cfg_ded_r13.unpack(bref)); + } + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); } return SRSASN_SUCCESS; } -void rrc_conn_reest_nb_v1430_ies_s::to_json(json_writer& j) const +void rrc_conn_recfg_nb_r13_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (dl_nas_mac_present) { - j.write_str("dl-NAS-MAC", dl_nas_mac.to_string()); + if (ded_info_nas_list_r13_present) { + j.start_array("dedicatedInfoNASList-r13"); + for (const auto& e1 : ded_info_nas_list_r13) { + j.write_str(e1.to_string()); + } + j.end_array(); + } + if (rr_cfg_ded_r13_present) { + j.write_fieldname("radioResourceConfigDedicated-r13"); + rr_cfg_ded_r13.to_json(j); + } + if (full_cfg_r13_present) { + j.write_str("fullConfig-r13", "true"); + } + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); } if (non_crit_ext_present) { j.write_fieldname("nonCriticalExtension"); @@ -12409,112 +18539,96 @@ void rrc_conn_reest_nb_v1430_ies_s::to_json(json_writer& j) const j.end_obj(); } -// RRCEarlyDataComplete-NB-v1590-IEs ::= SEQUENCE -SRSASN_CODE rrc_early_data_complete_nb_v1590_ies_s::pack(bit_ref& bref) const +// RRCConnectionRelease-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_release_nb_r13_ies_s::pack(bit_ref& bref) const { + HANDLE_CODE(bref.pack(resume_id_r13_present, 1)); + HANDLE_CODE(bref.pack(extended_wait_time_r13_present, 1)); + HANDLE_CODE(bref.pack(redirected_carrier_info_r13_present, 1)); HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + HANDLE_CODE(release_cause_r13.pack(bref)); + if (resume_id_r13_present) { + HANDLE_CODE(resume_id_r13.pack(bref)); + } + if (extended_wait_time_r13_present) { + HANDLE_CODE(pack_integer(bref, extended_wait_time_r13, (uint16_t)1u, (uint16_t)1800u)); + } + if (redirected_carrier_info_r13_present) { + HANDLE_CODE(redirected_carrier_info_r13.pack(bref)); + } if (late_non_crit_ext_present) { HANDLE_CODE(late_non_crit_ext.pack(bref)); } - - return SRSASN_SUCCESS; -} -SRSASN_CODE rrc_early_data_complete_nb_v1590_ies_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_release_nb_r13_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(resume_id_r13_present, 1)); + HANDLE_CODE(bref.unpack(extended_wait_time_r13_present, 1)); + HANDLE_CODE(bref.unpack(redirected_carrier_info_r13_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + HANDLE_CODE(release_cause_r13.unpack(bref)); + if (resume_id_r13_present) { + HANDLE_CODE(resume_id_r13.unpack(bref)); + } + if (extended_wait_time_r13_present) { + HANDLE_CODE(unpack_integer(extended_wait_time_r13, bref, (uint16_t)1u, (uint16_t)1800u)); + } + if (redirected_carrier_info_r13_present) { + HANDLE_CODE(redirected_carrier_info_r13.unpack(bref)); + } if (late_non_crit_ext_present) { HANDLE_CODE(late_non_crit_ext.unpack(bref)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } return SRSASN_SUCCESS; } -void rrc_early_data_complete_nb_v1590_ies_s::to_json(json_writer& j) const +void rrc_conn_release_nb_r13_ies_s::to_json(json_writer& j) const { j.start_obj(); + j.write_str("releaseCause-r13", release_cause_r13.to_string()); + if (resume_id_r13_present) { + j.write_str("resumeIdentity-r13", resume_id_r13.to_string()); + } + if (extended_wait_time_r13_present) { + j.write_int("extendedWaitTime-r13", extended_wait_time_r13); + } + if (redirected_carrier_info_r13_present) { + j.write_fieldname("redirectedCarrierInfo-r13"); + redirected_carrier_info_r13.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(); + non_crit_ext.to_json(j); } j.end_obj(); } -// RedirectedCarrierInfo-NB-v1430 ::= SEQUENCE -SRSASN_CODE redirected_carrier_info_nb_v1430_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(redirected_carrier_offset_ded_r14.pack(bref)); - HANDLE_CODE(t322_r14.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE redirected_carrier_info_nb_v1430_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(redirected_carrier_offset_ded_r14.unpack(bref)); - HANDLE_CODE(t322_r14.unpack(bref)); - - return SRSASN_SUCCESS; -} -void redirected_carrier_info_nb_v1430_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_str("redirectedCarrierOffsetDedicated-r14", redirected_carrier_offset_ded_r14.to_string()); - j.write_str("t322-r14", t322_r14.to_string()); - j.end_obj(); -} - -const char* redirected_carrier_info_nb_v1430_s::redirected_carrier_offset_ded_r14_opts::to_string() const -{ - static const char* options[] = {"dB1", - "dB2", - "dB3", - "dB4", - "dB5", - "dB6", - "dB8", - "dB10", - "dB12", - "dB14", - "dB16", - "dB18", - "dB20", - "dB22", - "dB24", - "dB26"}; - return convert_enum_idx( - options, 16, value, "redirected_carrier_info_nb_v1430_s::redirected_carrier_offset_ded_r14_e_"); -} -uint8_t redirected_carrier_info_nb_v1430_s::redirected_carrier_offset_ded_r14_opts::to_number() const -{ - static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26}; - return map_enum_number( - options, 16, value, "redirected_carrier_info_nb_v1430_s::redirected_carrier_offset_ded_r14_e_"); -} - -const char* redirected_carrier_info_nb_v1430_s::t322_r14_opts::to_string() const -{ - static const char* options[] = {"min5", "min10", "min20", "min30", "min60", "min120", "min180", "spare1"}; - return convert_enum_idx(options, 8, value, "redirected_carrier_info_nb_v1430_s::t322_r14_e_"); -} -uint8_t redirected_carrier_info_nb_v1430_s::t322_r14_opts::to_number() const -{ - static const uint8_t options[] = {5, 10, 20, 30, 60, 120, 180}; - return map_enum_number(options, 7, value, "redirected_carrier_info_nb_v1430_s::t322_r14_e_"); -} - -// RRCConnectionReestablishment-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_reest_nb_r13_ies_s::pack(bit_ref& bref) const +// RRCConnectionResume-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_resume_nb_r13_ies_s::pack(bit_ref& bref) const { + HANDLE_CODE(bref.pack(rr_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.pack(drb_continue_rohc_r13_present, 1)); HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - HANDLE_CODE(rr_cfg_ded_r13.pack(bref)); + if (rr_cfg_ded_r13_present) { + HANDLE_CODE(rr_cfg_ded_r13.pack(bref)); + } HANDLE_CODE(pack_integer(bref, next_hop_chaining_count_r13, (uint8_t)0u, (uint8_t)7u)); if (late_non_crit_ext_present) { HANDLE_CODE(late_non_crit_ext.pack(bref)); @@ -12525,12 +18639,16 @@ SRSASN_CODE rrc_conn_reest_nb_r13_ies_s::pack(bit_ref& bref) const return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reest_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_nb_r13_ies_s::unpack(cbit_ref& bref) { + HANDLE_CODE(bref.unpack(rr_cfg_ded_r13_present, 1)); + HANDLE_CODE(bref.unpack(drb_continue_rohc_r13_present, 1)); HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - HANDLE_CODE(rr_cfg_ded_r13.unpack(bref)); + if (rr_cfg_ded_r13_present) { + HANDLE_CODE(rr_cfg_ded_r13.unpack(bref)); + } HANDLE_CODE(unpack_integer(next_hop_chaining_count_r13, bref, (uint8_t)0u, (uint8_t)7u)); if (late_non_crit_ext_present) { HANDLE_CODE(late_non_crit_ext.unpack(bref)); @@ -12541,12 +18659,17 @@ SRSASN_CODE rrc_conn_reest_nb_r13_ies_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void rrc_conn_reest_nb_r13_ies_s::to_json(json_writer& j) const +void rrc_conn_resume_nb_r13_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("radioResourceConfigDedicated-r13"); - rr_cfg_ded_r13.to_json(j); + if (rr_cfg_ded_r13_present) { + j.write_fieldname("radioResourceConfigDedicated-r13"); + rr_cfg_ded_r13.to_json(j); + } j.write_int("nextHopChainingCount-r13", next_hop_chaining_count_r13); + if (drb_continue_rohc_r13_present) { + j.write_str("drb-ContinueROHC-r13", "true"); + } if (late_non_crit_ext_present) { j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); } @@ -12557,40 +18680,32 @@ void rrc_conn_reest_nb_r13_ies_s::to_json(json_writer& j) const j.end_obj(); } -// RRCConnectionReject-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_reject_nb_r13_ies_s::pack(bit_ref& bref) const +// UECapabilityEnquiry-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE ue_cap_enquiry_nb_r13_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(rrc_suspend_ind_r13_present, 1)); HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - HANDLE_CODE(pack_integer(bref, extended_wait_time_r13, (uint16_t)1u, (uint16_t)1800u)); if (late_non_crit_ext_present) { HANDLE_CODE(late_non_crit_ext.pack(bref)); } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reject_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE ue_cap_enquiry_nb_r13_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(rrc_suspend_ind_r13_present, 1)); HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - HANDLE_CODE(unpack_integer(extended_wait_time_r13, bref, (uint16_t)1u, (uint16_t)1800u)); if (late_non_crit_ext_present) { HANDLE_CODE(late_non_crit_ext.unpack(bref)); } return SRSASN_SUCCESS; } -void rrc_conn_reject_nb_r13_ies_s::to_json(json_writer& j) const +void ue_cap_enquiry_nb_r13_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("extendedWaitTime-r13", extended_wait_time_r13); - if (rrc_suspend_ind_r13_present) { - j.write_str("rrc-SuspendIndication-r13", "true"); - } if (late_non_crit_ext_present) { j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); } @@ -12602,36 +18717,41 @@ void rrc_conn_reject_nb_r13_ies_s::to_json(json_writer& j) const j.end_obj(); } -// RRCConnectionSetup-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_setup_nb_r13_ies_s::pack(bit_ref& bref) const +// 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(rr_cfg_ded_r13.pack(bref)); + 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 rrc_conn_setup_nb_r13_ies_s::unpack(cbit_ref& bref) +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(rr_cfg_ded_r13.unpack(bref)); + 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 rrc_conn_setup_nb_r13_ies_s::to_json(json_writer& j) const +void ue_info_request_nb_r16_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("radioResourceConfigDedicated-r13"); - rr_cfg_ded_r13.to_json(j); + 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()); } @@ -12643,99 +18763,174 @@ void rrc_conn_setup_nb_r13_ies_s::to_json(json_writer& j) const j.end_obj(); } -// RRCEarlyDataComplete-NB-r15-IEs ::= SEQUENCE -SRSASN_CODE rrc_early_data_complete_nb_r15_ies_s::pack(bit_ref& bref) const +// DLInformationTransfer-NB ::= SEQUENCE +SRSASN_CODE dl_info_transfer_nb_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(ded_info_nas_r15_present, 1)); - HANDLE_CODE(bref.pack(extended_wait_time_r15_present, 1)); - HANDLE_CODE(bref.pack(redirected_carrier_info_r15_present, 1)); - HANDLE_CODE(bref.pack(redirected_carrier_info_ext_r15_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); + HANDLE_CODE(crit_exts.pack(bref)); - if (ded_info_nas_r15_present) { - HANDLE_CODE(ded_info_nas_r15.pack(bref)); + return SRSASN_SUCCESS; +} +SRSASN_CODE dl_info_transfer_nb_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); + HANDLE_CODE(crit_exts.unpack(bref)); + + return SRSASN_SUCCESS; +} +void dl_info_transfer_nb_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); + j.end_obj(); +} + +void dl_info_transfer_nb_s::crit_exts_c_::set(types::options e) +{ + type_ = e; +} +dl_info_transfer_nb_s::crit_exts_c_::c1_c_& dl_info_transfer_nb_s::crit_exts_c_::set_c1() +{ + set(types::c1); + return c; +} +void dl_info_transfer_nb_s::crit_exts_c_::set_crit_exts_future() +{ + set(types::crit_exts_future); +} +void dl_info_transfer_nb_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_, "dl_info_transfer_nb_s::crit_exts_c_"); } - if (extended_wait_time_r15_present) { - HANDLE_CODE(pack_integer(bref, extended_wait_time_r15, (uint16_t)1u, (uint16_t)1800u)); + j.end_obj(); +} +SRSASN_CODE dl_info_transfer_nb_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_, "dl_info_transfer_nb_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; } - if (redirected_carrier_info_r15_present) { - HANDLE_CODE(redirected_carrier_info_r15.pack(bref)); + return SRSASN_SUCCESS; +} +SRSASN_CODE dl_info_transfer_nb_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_, "dl_info_transfer_nb_s::crit_exts_c_"); + return SRSASN_ERROR_DECODE_FAIL; } - if (redirected_carrier_info_ext_r15_present) { - HANDLE_CODE(redirected_carrier_info_ext_r15.pack(bref)); + return SRSASN_SUCCESS; +} + +void dl_info_transfer_nb_s::crit_exts_c_::c1_c_::set(types::options e) +{ + type_ = e; +} +dl_info_transfer_nb_r13_ies_s& dl_info_transfer_nb_s::crit_exts_c_::c1_c_::set_dl_info_transfer_r13() +{ + set(types::dl_info_transfer_r13); + return c; +} +void dl_info_transfer_nb_s::crit_exts_c_::c1_c_::set_spare1() +{ + set(types::spare1); +} +void dl_info_transfer_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::dl_info_transfer_r13: + j.write_fieldname("dlInformationTransfer-r13"); + c.to_json(j); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "dl_info_transfer_nb_s::crit_exts_c_::c1_c_"); } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.pack(bref)); + j.end_obj(); +} +SRSASN_CODE dl_info_transfer_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::dl_info_transfer_r13: + HANDLE_CODE(c.pack(bref)); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "dl_info_transfer_nb_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_ENCODE_FAIL; } - return SRSASN_SUCCESS; } -SRSASN_CODE rrc_early_data_complete_nb_r15_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE dl_info_transfer_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(ded_info_nas_r15_present, 1)); - HANDLE_CODE(bref.unpack(extended_wait_time_r15_present, 1)); - HANDLE_CODE(bref.unpack(redirected_carrier_info_r15_present, 1)); - HANDLE_CODE(bref.unpack(redirected_carrier_info_ext_r15_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - if (ded_info_nas_r15_present) { - HANDLE_CODE(ded_info_nas_r15.unpack(bref)); - } - if (extended_wait_time_r15_present) { - HANDLE_CODE(unpack_integer(extended_wait_time_r15, bref, (uint16_t)1u, (uint16_t)1800u)); - } - if (redirected_carrier_info_r15_present) { - HANDLE_CODE(redirected_carrier_info_r15.unpack(bref)); - } - if (redirected_carrier_info_ext_r15_present) { - HANDLE_CODE(redirected_carrier_info_ext_r15.unpack(bref)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::dl_info_transfer_r13: + HANDLE_CODE(c.unpack(bref)); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "dl_info_transfer_nb_s::crit_exts_c_::c1_c_"); + return SRSASN_ERROR_DECODE_FAIL; } - return SRSASN_SUCCESS; } -void rrc_early_data_complete_nb_r15_ies_s::to_json(json_writer& j) const + +const char* dl_info_transfer_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const { - j.start_obj(); - if (ded_info_nas_r15_present) { - j.write_str("dedicatedInfoNAS-r15", ded_info_nas_r15.to_string()); - } - if (extended_wait_time_r15_present) { - j.write_int("extendedWaitTime-r15", extended_wait_time_r15); - } - if (redirected_carrier_info_r15_present) { - j.write_fieldname("redirectedCarrierInfo-r15"); - redirected_carrier_info_r15.to_json(j); - } - if (redirected_carrier_info_ext_r15_present) { - j.write_fieldname("redirectedCarrierInfoExt-r15"); - redirected_carrier_info_ext_r15.to_json(j); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); - } - j.end_obj(); + static const char* options[] = {"dlInformationTransfer-r13", "spare1"}; + return convert_enum_idx(options, 2, value, "dl_info_transfer_nb_s::crit_exts_c_::c1_c_::types"); } -// RRCConnectionReestablishment-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_reest_nb_s::pack(bit_ref& bref) const +// RRCConnectionReconfiguration-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_recfg_nb_s::pack(bit_ref& bref) const { HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reest_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_recfg_nb_s::unpack(cbit_ref& bref) { HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void rrc_conn_reest_nb_s::to_json(json_writer& j) const +void rrc_conn_recfg_nb_s::to_json(json_writer& j) const { j.start_obj(); j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); @@ -12744,20 +18939,20 @@ void rrc_conn_reest_nb_s::to_json(json_writer& j) const j.end_obj(); } -void rrc_conn_reest_nb_s::crit_exts_c_::set(types::options e) +void rrc_conn_recfg_nb_s::crit_exts_c_::set(types::options e) { type_ = e; } -rrc_conn_reest_nb_s::crit_exts_c_::c1_c_& rrc_conn_reest_nb_s::crit_exts_c_::set_c1() +rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_& rrc_conn_recfg_nb_s::crit_exts_c_::set_c1() { set(types::c1); return c; } -void rrc_conn_reest_nb_s::crit_exts_c_::set_crit_exts_future() +void rrc_conn_recfg_nb_s::crit_exts_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void rrc_conn_reest_nb_s::crit_exts_c_::to_json(json_writer& j) const +void rrc_conn_recfg_nb_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { @@ -12768,11 +18963,11 @@ void rrc_conn_reest_nb_s::crit_exts_c_::to_json(json_writer& j) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_recfg_nb_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_reest_nb_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE rrc_conn_recfg_nb_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { @@ -12782,12 +18977,12 @@ SRSASN_CODE rrc_conn_reest_nb_s::crit_exts_c_::pack(bit_ref& bref) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_recfg_nb_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reest_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_recfg_nb_s::crit_exts_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -12799,114 +18994,117 @@ SRSASN_CODE rrc_conn_reest_nb_s::crit_exts_c_::unpack(cbit_ref& bref) case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_recfg_nb_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -void rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::set(types::options e) +void rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::set(types::options e) { type_ = e; } -rrc_conn_reest_nb_r13_ies_s& rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_reest_r13() +rrc_conn_recfg_nb_r13_ies_s& rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_recfg_r13() { - set(types::rrc_conn_reest_r13); + set(types::rrc_conn_recfg_r13); return c; } -void rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::set_spare1() +void rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::set_spare1() { set(types::spare1); } -void rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +void rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::rrc_conn_reest_r13: - j.write_fieldname("rrcConnectionReestablishment-r13"); + case types::rrc_conn_recfg_r13: + j.write_fieldname("rrcConnectionReconfiguration-r13"); c.to_json(j); break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +SRSASN_CODE rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::rrc_conn_reest_r13: + case types::rrc_conn_recfg_r13: HANDLE_CODE(c.pack(bref)); break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::rrc_conn_reest_r13: + case types::rrc_conn_recfg_r13: HANDLE_CODE(c.unpack(bref)); break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const +const char* rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const { - static const char* options[] = {"rrcConnectionReestablishment-r13", "spare1"}; - return convert_enum_idx(options, 2, value, "rrc_conn_reest_nb_s::crit_exts_c_::c1_c_::types"); + static const char* options[] = {"rrcConnectionReconfiguration-r13", "spare1"}; + return convert_enum_idx(options, 2, value, "rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::types"); } -// RRCConnectionReject-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_reject_nb_s::pack(bit_ref& bref) const +// RRCConnectionRelease-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_release_nb_s::pack(bit_ref& bref) const { + HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reject_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_release_nb_s::unpack(cbit_ref& bref) { + HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void rrc_conn_reject_nb_s::to_json(json_writer& j) const +void rrc_conn_release_nb_s::to_json(json_writer& j) const { j.start_obj(); + j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); j.write_fieldname("criticalExtensions"); crit_exts.to_json(j); j.end_obj(); } -void rrc_conn_reject_nb_s::crit_exts_c_::set(types::options e) +void rrc_conn_release_nb_s::crit_exts_c_::set(types::options e) { type_ = e; } -rrc_conn_reject_nb_s::crit_exts_c_::c1_c_& rrc_conn_reject_nb_s::crit_exts_c_::set_c1() +rrc_conn_release_nb_s::crit_exts_c_::c1_c_& rrc_conn_release_nb_s::crit_exts_c_::set_c1() { set(types::c1); return c; } -void rrc_conn_reject_nb_s::crit_exts_c_::set_crit_exts_future() +void rrc_conn_release_nb_s::crit_exts_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void rrc_conn_reject_nb_s::crit_exts_c_::to_json(json_writer& j) const +void rrc_conn_release_nb_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { @@ -12917,11 +19115,11 @@ void rrc_conn_reject_nb_s::crit_exts_c_::to_json(json_writer& j) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_reject_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_reject_nb_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE rrc_conn_release_nb_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { @@ -12931,12 +19129,12 @@ SRSASN_CODE rrc_conn_reject_nb_s::crit_exts_c_::pack(bit_ref& bref) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_reject_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reject_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_release_nb_s::crit_exts_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -12948,95 +19146,95 @@ SRSASN_CODE rrc_conn_reject_nb_s::crit_exts_c_::unpack(cbit_ref& bref) case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_reject_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -void rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::set(types::options e) +void rrc_conn_release_nb_s::crit_exts_c_::c1_c_::set(types::options e) { type_ = e; } -rrc_conn_reject_nb_r13_ies_s& rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_reject_r13() +rrc_conn_release_nb_r13_ies_s& rrc_conn_release_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_release_r13() { - set(types::rrc_conn_reject_r13); + set(types::rrc_conn_release_r13); return c; } -void rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::set_spare1() +void rrc_conn_release_nb_s::crit_exts_c_::c1_c_::set_spare1() { set(types::spare1); } -void rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +void rrc_conn_release_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::rrc_conn_reject_r13: - j.write_fieldname("rrcConnectionReject-r13"); + case types::rrc_conn_release_r13: + j.write_fieldname("rrcConnectionRelease-r13"); c.to_json(j); break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_reject_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_::c1_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +SRSASN_CODE rrc_conn_release_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::rrc_conn_reject_r13: + case types::rrc_conn_release_r13: HANDLE_CODE(c.pack(bref)); break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_reject_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_release_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::rrc_conn_reject_r13: + case types::rrc_conn_release_r13: HANDLE_CODE(c.unpack(bref)); break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_reject_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const +const char* rrc_conn_release_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const { - static const char* options[] = {"rrcConnectionReject-r13", "spare1"}; - return convert_enum_idx(options, 2, value, "rrc_conn_reject_nb_s::crit_exts_c_::c1_c_::types"); + static const char* options[] = {"rrcConnectionRelease-r13", "spare1"}; + return convert_enum_idx(options, 2, value, "rrc_conn_release_nb_s::crit_exts_c_::c1_c_::types"); } -// RRCConnectionSetup-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_setup_nb_s::pack(bit_ref& bref) const +// RRCConnectionResume-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_resume_nb_s::pack(bit_ref& bref) const { HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_setup_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_nb_s::unpack(cbit_ref& bref) { HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void rrc_conn_setup_nb_s::to_json(json_writer& j) const +void rrc_conn_resume_nb_s::to_json(json_writer& j) const { j.start_obj(); j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); @@ -13045,20 +19243,20 @@ void rrc_conn_setup_nb_s::to_json(json_writer& j) const j.end_obj(); } -void rrc_conn_setup_nb_s::crit_exts_c_::set(types::options e) +void rrc_conn_resume_nb_s::crit_exts_c_::set(types::options e) { type_ = e; } -rrc_conn_setup_nb_s::crit_exts_c_::c1_c_& rrc_conn_setup_nb_s::crit_exts_c_::set_c1() +rrc_conn_resume_nb_s::crit_exts_c_::c1_c_& rrc_conn_resume_nb_s::crit_exts_c_::set_c1() { set(types::c1); return c; } -void rrc_conn_setup_nb_s::crit_exts_c_::set_crit_exts_future() +void rrc_conn_resume_nb_s::crit_exts_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void rrc_conn_setup_nb_s::crit_exts_c_::to_json(json_writer& j) const +void rrc_conn_resume_nb_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { @@ -13069,11 +19267,11 @@ void rrc_conn_setup_nb_s::crit_exts_c_::to_json(json_writer& j) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_setup_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_setup_nb_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE rrc_conn_resume_nb_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { @@ -13083,12 +19281,12 @@ SRSASN_CODE rrc_conn_setup_nb_s::crit_exts_c_::pack(bit_ref& bref) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_setup_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_setup_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_nb_s::crit_exts_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -13100,993 +19298,784 @@ SRSASN_CODE rrc_conn_setup_nb_s::crit_exts_c_::unpack(cbit_ref& bref) case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_setup_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -void rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::set(types::options e) +void rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::set(types::options e) { type_ = e; } -rrc_conn_setup_nb_r13_ies_s& rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_setup_r13() +rrc_conn_resume_nb_r13_ies_s& rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_resume_r13() { - set(types::rrc_conn_setup_r13); + set(types::rrc_conn_resume_r13); return c; } -void rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::set_spare1() +void rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::set_spare1() { set(types::spare1); } -void rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +void rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::rrc_conn_setup_r13: - j.write_fieldname("rrcConnectionSetup-r13"); + case types::rrc_conn_resume_r13: + j.write_fieldname("rrcConnectionResume-r13"); c.to_json(j); break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_setup_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_::c1_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +SRSASN_CODE rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::rrc_conn_setup_r13: + case types::rrc_conn_resume_r13: HANDLE_CODE(c.pack(bref)); break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_setup_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::rrc_conn_setup_r13: + case types::rrc_conn_resume_r13: HANDLE_CODE(c.unpack(bref)); break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_setup_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const +const char* rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const { - static const char* options[] = {"rrcConnectionSetup-r13", "spare1"}; - return convert_enum_idx(options, 2, value, "rrc_conn_setup_nb_s::crit_exts_c_::c1_c_::types"); + static const char* options[] = {"rrcConnectionResume-r13", "spare1"}; + return convert_enum_idx(options, 2, value, "rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::types"); } -// RRCEarlyDataComplete-NB-r15 ::= SEQUENCE -SRSASN_CODE rrc_early_data_complete_nb_r15_s::pack(bit_ref& bref) const +// UECapabilityEnquiry-NB ::= SEQUENCE +SRSASN_CODE ue_cap_enquiry_nb_s::pack(bit_ref& bref) const { + HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE rrc_early_data_complete_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE ue_cap_enquiry_nb_s::unpack(cbit_ref& bref) { + HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void rrc_early_data_complete_nb_r15_s::to_json(json_writer& j) const +void ue_cap_enquiry_nb_s::to_json(json_writer& j) const { j.start_obj(); + j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); j.write_fieldname("criticalExtensions"); crit_exts.to_json(j); j.end_obj(); } -void rrc_early_data_complete_nb_r15_s::crit_exts_c_::set(types::options e) +void ue_cap_enquiry_nb_s::crit_exts_c_::set(types::options e) { type_ = e; } -rrc_early_data_complete_nb_r15_ies_s& rrc_early_data_complete_nb_r15_s::crit_exts_c_::set_rrc_early_data_complete_r15() +ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_& ue_cap_enquiry_nb_s::crit_exts_c_::set_c1() { - set(types::rrc_early_data_complete_r15); + set(types::c1); return c; } -void rrc_early_data_complete_nb_r15_s::crit_exts_c_::set_crit_exts_future() +void ue_cap_enquiry_nb_s::crit_exts_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void rrc_early_data_complete_nb_r15_s::crit_exts_c_::to_json(json_writer& j) const +void ue_cap_enquiry_nb_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::rrc_early_data_complete_r15: - j.write_fieldname("rrcEarlyDataComplete-r15"); + case types::c1: + j.write_fieldname("c1"); c.to_json(j); break; case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_early_data_complete_nb_r15_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE rrc_early_data_complete_nb_r15_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE ue_cap_enquiry_nb_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::rrc_early_data_complete_r15: + case types::c1: HANDLE_CODE(c.pack(bref)); break; case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_early_data_complete_nb_r15_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_early_data_complete_nb_r15_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE ue_cap_enquiry_nb_s::crit_exts_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::rrc_early_data_complete_r15: + case types::c1: HANDLE_CODE(c.unpack(bref)); break; case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_early_data_complete_nb_r15_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* rrc_early_data_complete_nb_r15_s::crit_exts_c_::types_opts::to_string() const -{ - static const char* options[] = {"rrcEarlyDataComplete-r15", "criticalExtensionsFuture"}; - return convert_enum_idx(options, 2, value, "rrc_early_data_complete_nb_r15_s::crit_exts_c_::types"); -} - -// DL-CCCH-MessageType-NB ::= CHOICE -void dl_ccch_msg_type_nb_c::set(types::options e) +void ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::set(types::options e) { type_ = e; } -dl_ccch_msg_type_nb_c::c1_c_& dl_ccch_msg_type_nb_c::set_c1() +ue_cap_enquiry_nb_r13_ies_s& ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::set_ue_cap_enquiry_r13() { - set(types::c1); + set(types::ue_cap_enquiry_r13); return c; } -void dl_ccch_msg_type_nb_c::set_msg_class_ext() +void ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::set_spare1() { - set(types::msg_class_ext); + set(types::spare1); } -void dl_ccch_msg_type_nb_c::to_json(json_writer& j) const +void ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::c1: - j.write_fieldname("c1"); + case types::ue_cap_enquiry_r13: + j.write_fieldname("ueCapabilityEnquiry-r13"); c.to_json(j); break; - case types::msg_class_ext: + case types::spare1: break; default: - log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c"); + log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_"); } j.end_obj(); } -SRSASN_CODE dl_ccch_msg_type_nb_c::pack(bit_ref& bref) const +SRSASN_CODE ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::c1: + case types::ue_cap_enquiry_r13: HANDLE_CODE(c.pack(bref)); break; - case types::msg_class_ext: + case types::spare1: break; default: - log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c"); + log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE dl_ccch_msg_type_nb_c::unpack(cbit_ref& bref) +SRSASN_CODE ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::c1: + case types::ue_cap_enquiry_r13: HANDLE_CODE(c.unpack(bref)); break; - case types::msg_class_ext: + case types::spare1: break; default: - log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c"); + log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -void dl_ccch_msg_type_nb_c::c1_c_::destroy_() -{ - switch (type_) { - case types::rrc_conn_reest_r13: - c.destroy(); - break; - case types::rrc_conn_reest_reject_r13: - c.destroy(); - break; - case types::rrc_conn_reject_r13: - c.destroy(); - break; - case types::rrc_conn_setup_r13: - c.destroy(); - break; - case types::rrc_early_data_complete_r15: - c.destroy(); - break; - default: - break; - } -} -void dl_ccch_msg_type_nb_c::c1_c_::set(types::options e) -{ - destroy_(); - type_ = e; - switch (type_) { - case types::rrc_conn_reest_r13: - c.init(); - break; - case types::rrc_conn_reest_reject_r13: - c.init(); - break; - case types::rrc_conn_reject_r13: - c.init(); - break; - case types::rrc_conn_setup_r13: - c.init(); - break; - case types::rrc_early_data_complete_r15: - c.init(); - break; - case types::spare3: - break; - case types::spare2: - break; - case types::spare1: - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); - } -} -dl_ccch_msg_type_nb_c::c1_c_::c1_c_(const dl_ccch_msg_type_nb_c::c1_c_& other) +const char* ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const { - type_ = other.type(); - switch (type_) { - case types::rrc_conn_reest_r13: - c.init(other.c.get()); - break; - case types::rrc_conn_reest_reject_r13: - c.init(other.c.get()); - break; - case types::rrc_conn_reject_r13: - c.init(other.c.get()); - break; - case types::rrc_conn_setup_r13: - c.init(other.c.get()); - break; - case types::rrc_early_data_complete_r15: - c.init(other.c.get()); - break; - case types::spare3: - break; - case types::spare2: - break; - case types::spare1: - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); - } + static const char* options[] = {"ueCapabilityEnquiry-r13", "spare1"}; + return convert_enum_idx(options, 2, value, "ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::types"); } -dl_ccch_msg_type_nb_c::c1_c_& dl_ccch_msg_type_nb_c::c1_c_::operator=(const dl_ccch_msg_type_nb_c::c1_c_& other) -{ - if (this == &other) { - return *this; - } - set(other.type()); - switch (type_) { - case types::rrc_conn_reest_r13: - c.set(other.c.get()); - break; - case types::rrc_conn_reest_reject_r13: - c.set(other.c.get()); - break; - case types::rrc_conn_reject_r13: - c.set(other.c.get()); - break; - case types::rrc_conn_setup_r13: - c.set(other.c.get()); - break; - case types::rrc_early_data_complete_r15: - c.set(other.c.get()); - break; - case types::spare3: - break; - case types::spare2: - break; - case types::spare1: - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); - } - return *this; -} -rrc_conn_reest_nb_s& dl_ccch_msg_type_nb_c::c1_c_::set_rrc_conn_reest_r13() -{ - set(types::rrc_conn_reest_r13); - return c.get(); -} -rrc_conn_reest_reject_s& dl_ccch_msg_type_nb_c::c1_c_::set_rrc_conn_reest_reject_r13() -{ - set(types::rrc_conn_reest_reject_r13); - return c.get(); -} -rrc_conn_reject_nb_s& dl_ccch_msg_type_nb_c::c1_c_::set_rrc_conn_reject_r13() +// UEInformationRequest-NB-r16 ::= SEQUENCE +SRSASN_CODE ue_info_request_nb_r16_s::pack(bit_ref& bref) const { - set(types::rrc_conn_reject_r13); - return c.get(); + HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); + HANDLE_CODE(crit_exts.pack(bref)); + + return SRSASN_SUCCESS; } -rrc_conn_setup_nb_s& dl_ccch_msg_type_nb_c::c1_c_::set_rrc_conn_setup_r13() +SRSASN_CODE ue_info_request_nb_r16_s::unpack(cbit_ref& bref) { - set(types::rrc_conn_setup_r13); - return c.get(); + HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); + HANDLE_CODE(crit_exts.unpack(bref)); + + return SRSASN_SUCCESS; } -rrc_early_data_complete_nb_r15_s& dl_ccch_msg_type_nb_c::c1_c_::set_rrc_early_data_complete_r15() +void ue_info_request_nb_r16_s::to_json(json_writer& j) const { - set(types::rrc_early_data_complete_r15); - return c.get(); + j.start_obj(); + j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); + j.end_obj(); } -void dl_ccch_msg_type_nb_c::c1_c_::set_spare3() + +void ue_info_request_nb_r16_s::crit_exts_c_::set(types::options e) { - set(types::spare3); + type_ = e; } -void dl_ccch_msg_type_nb_c::c1_c_::set_spare2() +ue_info_request_nb_r16_ies_s& ue_info_request_nb_r16_s::crit_exts_c_::set_ue_info_request_r16() { - set(types::spare2); + set(types::ue_info_request_r16); + return c; } -void dl_ccch_msg_type_nb_c::c1_c_::set_spare1() +void ue_info_request_nb_r16_s::crit_exts_c_::set_crit_exts_future() { - set(types::spare1); + set(types::crit_exts_future); } -void dl_ccch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const +void ue_info_request_nb_r16_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::rrc_conn_reest_r13: - j.write_fieldname("rrcConnectionReestablishment-r13"); - c.get().to_json(j); - break; - case types::rrc_conn_reest_reject_r13: - j.write_fieldname("rrcConnectionReestablishmentReject-r13"); - c.get().to_json(j); - break; - case types::rrc_conn_reject_r13: - j.write_fieldname("rrcConnectionReject-r13"); - c.get().to_json(j); - break; - case types::rrc_conn_setup_r13: - j.write_fieldname("rrcConnectionSetup-r13"); - c.get().to_json(j); - break; - case types::rrc_early_data_complete_r15: - j.write_fieldname("rrcEarlyDataComplete-r15"); - c.get().to_json(j); - break; - case types::spare3: - break; - case types::spare2: + case types::ue_info_request_r16: + j.write_fieldname("ueInformationRequest-r16"); + c.to_json(j); break; - case types::spare1: + case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); + log_invalid_choice_id(type_, "ue_info_request_nb_r16_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE dl_ccch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const +SRSASN_CODE ue_info_request_nb_r16_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::rrc_conn_reest_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::rrc_conn_reest_reject_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::rrc_conn_reject_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::rrc_conn_setup_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::rrc_early_data_complete_r15: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::spare3: - break; - case types::spare2: + case types::ue_info_request_r16: + HANDLE_CODE(c.pack(bref)); break; - case types::spare1: + case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); + log_invalid_choice_id(type_, "ue_info_request_nb_r16_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE dl_ccch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref) +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::rrc_conn_reest_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::rrc_conn_reest_reject_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::rrc_conn_reject_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::rrc_conn_setup_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::rrc_early_data_complete_r15: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::spare3: - break; - case types::spare2: + case types::ue_info_request_r16: + HANDLE_CODE(c.unpack(bref)); break; - case types::spare1: + case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "dl_ccch_msg_type_nb_c::c1_c_"); + log_invalid_choice_id(type_, "ue_info_request_nb_r16_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* dl_ccch_msg_type_nb_c::c1_c_::types_opts::to_string() const +const char* ue_info_request_nb_r16_s::crit_exts_c_::types_opts::to_string() const { - static const char* options[] = {"rrcConnectionReestablishment-r13", - "rrcConnectionReestablishmentReject-r13", - "rrcConnectionReject-r13", - "rrcConnectionSetup-r13", - "rrcEarlyDataComplete-r15", - "spare3", - "spare2", - "spare1"}; - return convert_enum_idx(options, 8, value, "dl_ccch_msg_type_nb_c::c1_c_::types"); + static const char* options[] = {"ueInformationRequest-r16", "criticalExtensionsFuture"}; + return convert_enum_idx(options, 2, value, "ue_info_request_nb_r16_s::crit_exts_c_::types"); } -const char* dl_ccch_msg_type_nb_c::types_opts::to_string() const -{ - static const char* options[] = {"c1", "messageClassExtension"}; - return convert_enum_idx(options, 2, value, "dl_ccch_msg_type_nb_c::types"); -} -uint8_t dl_ccch_msg_type_nb_c::types_opts::to_number() const +// DL-DCCH-MessageType-NB ::= CHOICE +void dl_dcch_msg_type_nb_c::set(types::options e) { - static const uint8_t options[] = {1}; - return map_enum_number(options, 1, value, "dl_ccch_msg_type_nb_c::types"); + type_ = e; } - -// DL-CCCH-Message-NB ::= SEQUENCE -SRSASN_CODE dl_ccch_msg_nb_s::pack(bit_ref& bref) const +dl_dcch_msg_type_nb_c::c1_c_& dl_dcch_msg_type_nb_c::set_c1() { - HANDLE_CODE(msg.pack(bref)); - - bref.align_bytes_zero(); - - return SRSASN_SUCCESS; + set(types::c1); + return c; } -SRSASN_CODE dl_ccch_msg_nb_s::unpack(cbit_ref& bref) +void dl_dcch_msg_type_nb_c::set_msg_class_ext() { - HANDLE_CODE(msg.unpack(bref)); - - bref.align_bytes(); - - return SRSASN_SUCCESS; + set(types::msg_class_ext); } -void dl_ccch_msg_nb_s::to_json(json_writer& j) const +void dl_dcch_msg_type_nb_c::to_json(json_writer& j) const { - j.start_array(); j.start_obj(); - j.start_obj("DL-CCCH-Message-NB"); - j.write_fieldname("message"); - msg.to_json(j); - j.end_obj(); + switch (type_) { + case types::c1: + j.write_fieldname("c1"); + c.to_json(j); + break; + case types::msg_class_ext: + break; + default: + log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c"); + } j.end_obj(); - j.end_array(); } - -// RRCConnectionRelease-NB-v15b0-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_release_nb_v15b0_ies_s::pack(bit_ref& bref) const +SRSASN_CODE dl_dcch_msg_type_nb_c::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)); - + type_.pack(bref); + switch (type_) { + case types::c1: + HANDLE_CODE(c.pack(bref)); + break; + case types::msg_class_ext: + break; + default: + log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c"); + return SRSASN_ERROR_ENCODE_FAIL; + } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_release_nb_v15b0_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE dl_dcch_msg_type_nb_c::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(no_last_cell_upd_r15_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::c1: + HANDLE_CODE(c.unpack(bref)); + break; + case types::msg_class_ext: + break; + default: + log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c"); + return SRSASN_ERROR_DECODE_FAIL; + } return SRSASN_SUCCESS; } -void rrc_conn_release_nb_v15b0_ies_s::to_json(json_writer& j) const + +void dl_dcch_msg_type_nb_c::c1_c_::destroy_() { - j.start_obj(); - if (no_last_cell_upd_r15_present) { - j.write_str("noLastCellUpdate-r15", "true"); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - j.start_obj(); - j.end_obj(); + switch (type_) { + case types::dl_info_transfer_r13: + c.destroy(); + break; + case types::rrc_conn_recfg_r13: + c.destroy(); + break; + case types::rrc_conn_release_r13: + c.destroy(); + break; + case types::security_mode_cmd_r13: + c.destroy(); + break; + case types::ue_cap_enquiry_r13: + c.destroy(); + break; + case types::rrc_conn_resume_r13: + c.destroy(); + break; + case types::ue_info_request_r16: + c.destroy(); + break; + default: + break; } - j.end_obj(); } - -// RRCConnectionRelease-NB-v1550-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_release_nb_v1550_ies_s::pack(bit_ref& bref) const +void dl_dcch_msg_type_nb_c::c1_c_::set(types::options e) { - HANDLE_CODE(bref.pack(redirected_carrier_info_v1550_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - if (redirected_carrier_info_v1550_present) { - HANDLE_CODE(redirected_carrier_info_v1550.pack(bref)); + destroy_(); + type_ = e; + switch (type_) { + case types::dl_info_transfer_r13: + c.init(); + break; + case types::rrc_conn_recfg_r13: + c.init(); + break; + case types::rrc_conn_release_r13: + c.init(); + break; + case types::security_mode_cmd_r13: + c.init(); + break; + case types::ue_cap_enquiry_r13: + c.init(); + break; + case types::rrc_conn_resume_r13: + c.init(); + break; + case types::ue_info_request_r16: + c.init(); + break; + case types::spare1: + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c::c1_c_"); } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.pack(bref)); +} +dl_dcch_msg_type_nb_c::c1_c_::c1_c_(const dl_dcch_msg_type_nb_c::c1_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::dl_info_transfer_r13: + c.init(other.c.get()); + break; + case types::rrc_conn_recfg_r13: + c.init(other.c.get()); + break; + case types::rrc_conn_release_r13: + c.init(other.c.get()); + break; + case types::security_mode_cmd_r13: + c.init(other.c.get()); + break; + case types::ue_cap_enquiry_r13: + c.init(other.c.get()); + break; + case types::rrc_conn_resume_r13: + c.init(other.c.get()); + break; + case types::ue_info_request_r16: + c.init(other.c.get()); + break; + case types::spare1: + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c::c1_c_"); } - - return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_release_nb_v1550_ies_s::unpack(cbit_ref& bref) +dl_dcch_msg_type_nb_c::c1_c_& dl_dcch_msg_type_nb_c::c1_c_::operator=(const dl_dcch_msg_type_nb_c::c1_c_& other) { - HANDLE_CODE(bref.unpack(redirected_carrier_info_v1550_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - if (redirected_carrier_info_v1550_present) { - HANDLE_CODE(redirected_carrier_info_v1550.unpack(bref)); + if (this == &other) { + return *this; } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); + set(other.type()); + switch (type_) { + case types::dl_info_transfer_r13: + c.set(other.c.get()); + break; + case types::rrc_conn_recfg_r13: + c.set(other.c.get()); + break; + case types::rrc_conn_release_r13: + c.set(other.c.get()); + break; + case types::security_mode_cmd_r13: + c.set(other.c.get()); + break; + case types::ue_cap_enquiry_r13: + c.set(other.c.get()); + break; + case types::rrc_conn_resume_r13: + c.set(other.c.get()); + break; + case types::ue_info_request_r16: + c.set(other.c.get()); + break; + case types::spare1: + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c::c1_c_"); } - return SRSASN_SUCCESS; + return *this; } -void rrc_conn_release_nb_v1550_ies_s::to_json(json_writer& j) const +dl_info_transfer_nb_s& dl_dcch_msg_type_nb_c::c1_c_::set_dl_info_transfer_r13() { - j.start_obj(); - if (redirected_carrier_info_v1550_present) { - j.write_fieldname("redirectedCarrierInfo-v1550"); - redirected_carrier_info_v1550.to_json(j); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); - } - j.end_obj(); + set(types::dl_info_transfer_r13); + return c.get(); } - -// RRCConnectionRelease-NB-v1530-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_release_nb_v1530_ies_s::pack(bit_ref& bref) const +rrc_conn_recfg_nb_s& dl_dcch_msg_type_nb_c::c1_c_::set_rrc_conn_recfg_r13() { - HANDLE_CODE(bref.pack(drb_continue_rohc_r15_present, 1)); - HANDLE_CODE(bref.pack(next_hop_chaining_count_r15_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - if (next_hop_chaining_count_r15_present) { - HANDLE_CODE(pack_integer(bref, next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.pack(bref)); - } - - return SRSASN_SUCCESS; + set(types::rrc_conn_recfg_r13); + return c.get(); } -SRSASN_CODE rrc_conn_release_nb_v1530_ies_s::unpack(cbit_ref& bref) +rrc_conn_release_nb_s& dl_dcch_msg_type_nb_c::c1_c_::set_rrc_conn_release_r13() { - HANDLE_CODE(bref.unpack(drb_continue_rohc_r15_present, 1)); - HANDLE_CODE(bref.unpack(next_hop_chaining_count_r15_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - if (next_hop_chaining_count_r15_present) { - HANDLE_CODE(unpack_integer(next_hop_chaining_count_r15, bref, (uint8_t)0u, (uint8_t)7u)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); - } - - return SRSASN_SUCCESS; + set(types::rrc_conn_release_r13); + return c.get(); } -void rrc_conn_release_nb_v1530_ies_s::to_json(json_writer& j) const +security_mode_cmd_s& dl_dcch_msg_type_nb_c::c1_c_::set_security_mode_cmd_r13() { - j.start_obj(); - if (drb_continue_rohc_r15_present) { - j.write_str("drb-ContinueROHC-r15", "true"); - } - if (next_hop_chaining_count_r15_present) { - j.write_int("nextHopChainingCount-r15", next_hop_chaining_count_r15); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); - } - j.end_obj(); + set(types::security_mode_cmd_r13); + return c.get(); } - -// RRCConnectionRelease-NB-v1430-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_release_nb_v1430_ies_s::pack(bit_ref& bref) const +ue_cap_enquiry_nb_s& dl_dcch_msg_type_nb_c::c1_c_::set_ue_cap_enquiry_r13() { - HANDLE_CODE(bref.pack(redirected_carrier_info_v1430_present, 1)); - HANDLE_CODE(bref.pack(extended_wait_time_cpdata_r14_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - if (redirected_carrier_info_v1430_present) { - HANDLE_CODE(redirected_carrier_info_v1430.pack(bref)); - } - if (extended_wait_time_cpdata_r14_present) { - HANDLE_CODE(pack_integer(bref, extended_wait_time_cpdata_r14, (uint16_t)1u, (uint16_t)1800u)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.pack(bref)); - } - - return SRSASN_SUCCESS; + set(types::ue_cap_enquiry_r13); + return c.get(); } -SRSASN_CODE rrc_conn_release_nb_v1430_ies_s::unpack(cbit_ref& bref) +rrc_conn_resume_nb_s& dl_dcch_msg_type_nb_c::c1_c_::set_rrc_conn_resume_r13() { - HANDLE_CODE(bref.unpack(redirected_carrier_info_v1430_present, 1)); - HANDLE_CODE(bref.unpack(extended_wait_time_cpdata_r14_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - if (redirected_carrier_info_v1430_present) { - HANDLE_CODE(redirected_carrier_info_v1430.unpack(bref)); - } - if (extended_wait_time_cpdata_r14_present) { - HANDLE_CODE(unpack_integer(extended_wait_time_cpdata_r14, bref, (uint16_t)1u, (uint16_t)1800u)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); - } - - return SRSASN_SUCCESS; + set(types::rrc_conn_resume_r13); + return c.get(); } -void rrc_conn_release_nb_v1430_ies_s::to_json(json_writer& j) const +ue_info_request_nb_r16_s& dl_dcch_msg_type_nb_c::c1_c_::set_ue_info_request_r16() { - j.start_obj(); - if (redirected_carrier_info_v1430_present) { - j.write_fieldname("redirectedCarrierInfo-v1430"); - redirected_carrier_info_v1430.to_json(j); - } - if (extended_wait_time_cpdata_r14_present) { - j.write_int("extendedWaitTime-CPdata-r14", extended_wait_time_cpdata_r14); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); - } - j.end_obj(); + set(types::ue_info_request_r16); + return c.get(); } - -// ReleaseCause-NB-r13 ::= ENUMERATED -const char* release_cause_nb_r13_opts::to_string() const +void dl_dcch_msg_type_nb_c::c1_c_::set_spare1() { - static const char* options[] = {"loadBalancingTAUrequired", "other", "rrc-Suspend", "spare1"}; - return convert_enum_idx(options, 4, value, "release_cause_nb_r13_e"); + set(types::spare1); } - -// DLInformationTransfer-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE dl_info_transfer_nb_r13_ies_s::pack(bit_ref& bref) const +void dl_dcch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const { - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - HANDLE_CODE(ded_info_nas_r13.pack(bref)); - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); + j.start_obj(); + switch (type_) { + case types::dl_info_transfer_r13: + j.write_fieldname("dlInformationTransfer-r13"); + c.get().to_json(j); + break; + case types::rrc_conn_recfg_r13: + j.write_fieldname("rrcConnectionReconfiguration-r13"); + c.get().to_json(j); + break; + case types::rrc_conn_release_r13: + j.write_fieldname("rrcConnectionRelease-r13"); + c.get().to_json(j); + break; + case types::security_mode_cmd_r13: + j.write_fieldname("securityModeCommand-r13"); + c.get().to_json(j); + break; + case types::ue_cap_enquiry_r13: + j.write_fieldname("ueCapabilityEnquiry-r13"); + c.get().to_json(j); + break; + case types::rrc_conn_resume_r13: + j.write_fieldname("rrcConnectionResume-r13"); + c.get().to_json(j); + break; + case types::ue_info_request_r16: + j.write_fieldname("ueInformationRequest-r16"); + c.get().to_json(j); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c::c1_c_"); } - - return SRSASN_SUCCESS; + j.end_obj(); } -SRSASN_CODE dl_info_transfer_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE dl_dcch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const { - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - HANDLE_CODE(ded_info_nas_r13.unpack(bref)); - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); + type_.pack(bref); + switch (type_) { + case types::dl_info_transfer_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::rrc_conn_recfg_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::rrc_conn_release_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::security_mode_cmd_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::ue_cap_enquiry_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::rrc_conn_resume_r13: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::ue_info_request_r16: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c::c1_c_"); + return SRSASN_ERROR_ENCODE_FAIL; } - return SRSASN_SUCCESS; } -void dl_info_transfer_nb_r13_ies_s::to_json(json_writer& j) const +SRSASN_CODE dl_dcch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref) { - j.start_obj(); - j.write_str("dedicatedInfoNAS-r13", ded_info_nas_r13.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(); + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::dl_info_transfer_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::rrc_conn_recfg_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::rrc_conn_release_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::security_mode_cmd_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::ue_cap_enquiry_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::rrc_conn_resume_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::ue_info_request_r16: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::spare1: + break; + default: + log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c::c1_c_"); + return SRSASN_ERROR_DECODE_FAIL; } - j.end_obj(); + return SRSASN_SUCCESS; } -// RRCConnectionReconfiguration-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_recfg_nb_r13_ies_s::pack(bit_ref& bref) const +const char* dl_dcch_msg_type_nb_c::c1_c_::types_opts::to_string() const { - HANDLE_CODE(bref.pack(ded_info_nas_list_r13_present, 1)); - HANDLE_CODE(bref.pack(rr_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.pack(full_cfg_r13_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - if (ded_info_nas_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, ded_info_nas_list_r13, 1, 2)); - } - if (rr_cfg_ded_r13_present) { - HANDLE_CODE(rr_cfg_ded_r13.pack(bref)); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); - } - - return SRSASN_SUCCESS; + static const char* options[] = {"dlInformationTransfer-r13", + "rrcConnectionReconfiguration-r13", + "rrcConnectionRelease-r13", + "securityModeCommand-r13", + "ueCapabilityEnquiry-r13", + "rrcConnectionResume-r13", + "ueInformationRequest-r16", + "spare1"}; + return convert_enum_idx(options, 8, value, "dl_dcch_msg_type_nb_c::c1_c_::types"); } -SRSASN_CODE rrc_conn_recfg_nb_r13_ies_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(ded_info_nas_list_r13_present, 1)); - HANDLE_CODE(bref.unpack(rr_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.unpack(full_cfg_r13_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - if (ded_info_nas_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(ded_info_nas_list_r13, bref, 1, 2)); - } - if (rr_cfg_ded_r13_present) { - HANDLE_CODE(rr_cfg_ded_r13.unpack(bref)); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); - } - return SRSASN_SUCCESS; +const char* dl_dcch_msg_type_nb_c::types_opts::to_string() const +{ + static const char* options[] = {"c1", "messageClassExtension"}; + return convert_enum_idx(options, 2, value, "dl_dcch_msg_type_nb_c::types"); } -void rrc_conn_recfg_nb_r13_ies_s::to_json(json_writer& j) const +uint8_t dl_dcch_msg_type_nb_c::types_opts::to_number() const { - j.start_obj(); - if (ded_info_nas_list_r13_present) { - j.start_array("dedicatedInfoNASList-r13"); - for (const auto& e1 : ded_info_nas_list_r13) { - j.write_str(e1.to_string()); - } - j.end_array(); - } - if (rr_cfg_ded_r13_present) { - j.write_fieldname("radioResourceConfigDedicated-r13"); - rr_cfg_ded_r13.to_json(j); - } - if (full_cfg_r13_present) { - j.write_str("fullConfig-r13", "true"); - } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - j.start_obj(); - j.end_obj(); - } - j.end_obj(); + static const uint8_t options[] = {1}; + return map_enum_number(options, 1, value, "dl_dcch_msg_type_nb_c::types"); } -// RRCConnectionRelease-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_release_nb_r13_ies_s::pack(bit_ref& bref) const +// DL-DCCH-Message-NB ::= SEQUENCE +SRSASN_CODE dl_dcch_msg_nb_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(resume_id_r13_present, 1)); - HANDLE_CODE(bref.pack(extended_wait_time_r13_present, 1)); - HANDLE_CODE(bref.pack(redirected_carrier_info_r13_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + HANDLE_CODE(msg.pack(bref)); - HANDLE_CODE(release_cause_r13.pack(bref)); - if (resume_id_r13_present) { - HANDLE_CODE(resume_id_r13.pack(bref)); - } - if (extended_wait_time_r13_present) { - HANDLE_CODE(pack_integer(bref, extended_wait_time_r13, (uint16_t)1u, (uint16_t)1800u)); - } - if (redirected_carrier_info_r13_present) { - HANDLE_CODE(redirected_carrier_info_r13.pack(bref)); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.pack(bref)); - } + bref.align_bytes_zero(); return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_release_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE dl_dcch_msg_nb_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(resume_id_r13_present, 1)); - HANDLE_CODE(bref.unpack(extended_wait_time_r13_present, 1)); - HANDLE_CODE(bref.unpack(redirected_carrier_info_r13_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + HANDLE_CODE(msg.unpack(bref)); - HANDLE_CODE(release_cause_r13.unpack(bref)); - if (resume_id_r13_present) { - HANDLE_CODE(resume_id_r13.unpack(bref)); - } - if (extended_wait_time_r13_present) { - HANDLE_CODE(unpack_integer(extended_wait_time_r13, bref, (uint16_t)1u, (uint16_t)1800u)); - } - if (redirected_carrier_info_r13_present) { - HANDLE_CODE(redirected_carrier_info_r13.unpack(bref)); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); - } + bref.align_bytes(); return SRSASN_SUCCESS; } -void rrc_conn_release_nb_r13_ies_s::to_json(json_writer& j) const +void dl_dcch_msg_nb_s::to_json(json_writer& j) const { + j.start_array(); j.start_obj(); - j.write_str("releaseCause-r13", release_cause_r13.to_string()); - if (resume_id_r13_present) { - j.write_str("resumeIdentity-r13", resume_id_r13.to_string()); - } - if (extended_wait_time_r13_present) { - j.write_int("extendedWaitTime-r13", extended_wait_time_r13); - } - if (redirected_carrier_info_r13_present) { - j.write_fieldname("redirectedCarrierInfo-r13"); - redirected_carrier_info_r13.to_json(j); - } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); - } + j.start_obj("DL-DCCH-Message-NB"); + j.write_fieldname("message"); + msg.to_json(j); j.end_obj(); + j.end_obj(); + j.end_array(); } -// RRCConnectionResume-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_resume_nb_r13_ies_s::pack(bit_ref& bref) const +// SupportedBand-NB-r13 ::= SEQUENCE +SRSASN_CODE supported_band_nb_r13_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(rr_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.pack(drb_continue_rohc_r13_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(pwr_class_nb_minus20dbm_r13_present, 1)); - if (rr_cfg_ded_r13_present) { - HANDLE_CODE(rr_cfg_ded_r13.pack(bref)); - } - HANDLE_CODE(pack_integer(bref, next_hop_chaining_count_r13, (uint8_t)0u, (uint8_t)7u)); - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); - } + HANDLE_CODE(pack_integer(bref, band_r13, (uint16_t)1u, (uint16_t)256u)); return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_resume_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE supported_band_nb_r13_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(rr_cfg_ded_r13_present, 1)); - HANDLE_CODE(bref.unpack(drb_continue_rohc_r13_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(pwr_class_nb_minus20dbm_r13_present, 1)); - if (rr_cfg_ded_r13_present) { - HANDLE_CODE(rr_cfg_ded_r13.unpack(bref)); - } - HANDLE_CODE(unpack_integer(next_hop_chaining_count_r13, bref, (uint8_t)0u, (uint8_t)7u)); - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); - } + HANDLE_CODE(unpack_integer(band_r13, bref, (uint16_t)1u, (uint16_t)256u)); return SRSASN_SUCCESS; } -void rrc_conn_resume_nb_r13_ies_s::to_json(json_writer& j) const +void supported_band_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - if (rr_cfg_ded_r13_present) { - j.write_fieldname("radioResourceConfigDedicated-r13"); - rr_cfg_ded_r13.to_json(j); - } - j.write_int("nextHopChainingCount-r13", next_hop_chaining_count_r13); - if (drb_continue_rohc_r13_present) { - j.write_str("drb-ContinueROHC-r13", "true"); - } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - j.start_obj(); - j.end_obj(); + j.write_int("band-r13", band_r13); + if (pwr_class_nb_minus20dbm_r13_present) { + j.write_str("powerClassNB-20dBm-r13", "supported"); } j.end_obj(); } -// UECapabilityEnquiry-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE ue_cap_enquiry_nb_r13_ies_s::pack(bit_ref& bref) const +// AccessStratumRelease-NB-r13 ::= ENUMERATED +const char* access_stratum_release_nb_r13_opts::to_string() const +{ + 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, 16, 17}; + return map_enum_number(options, 5, value, "access_stratum_release_nb_r13_e"); +} + +// HandoverPreparationInformation-NB-Ext-r14-IEs ::= SEQUENCE +SRSASN_CODE ho_prep_info_nb_ext_r14_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(ue_radio_access_cap_info_ext_r14_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 (ue_radio_access_cap_info_ext_r14_present) { + HANDLE_CODE(ue_radio_access_cap_info_ext_r14.pack(bref)); } return SRSASN_SUCCESS; } -SRSASN_CODE ue_cap_enquiry_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE ho_prep_info_nb_ext_r14_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(ue_radio_access_cap_info_ext_r14_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 (ue_radio_access_cap_info_ext_r14_present) { + HANDLE_CODE(ue_radio_access_cap_info_ext_r14.unpack(bref)); } return SRSASN_SUCCESS; } -void ue_cap_enquiry_nb_r13_ies_s::to_json(json_writer& j) const +void ho_prep_info_nb_ext_r14_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 (ue_radio_access_cap_info_ext_r14_present) { + j.write_str("ue-RadioAccessCapabilityInfoExt-r14", ue_radio_access_cap_info_ext_r14.to_string()); } if (non_crit_ext_present) { j.write_fieldname("nonCriticalExtension"); @@ -14096,348 +20085,375 @@ void ue_cap_enquiry_nb_r13_ies_s::to_json(json_writer& j) const j.end_obj(); } -// DLInformationTransfer-NB ::= SEQUENCE -SRSASN_CODE dl_info_transfer_nb_s::pack(bit_ref& bref) const +// PDCP-Parameters-NB-r13 ::= SEQUENCE +SRSASN_CODE pdcp_params_nb_r13_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)); + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(max_num_rohc_context_sessions_r13_present, 1)); + + HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0002, 1)); + HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0003, 1)); + HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0004, 1)); + HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0006, 1)); + HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0102, 1)); + HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0103, 1)); + HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0104, 1)); + if (max_num_rohc_context_sessions_r13_present) { + HANDLE_CODE(max_num_rohc_context_sessions_r13.pack(bref)); + } return SRSASN_SUCCESS; } -SRSASN_CODE dl_info_transfer_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE pdcp_params_nb_r13_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)); + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(max_num_rohc_context_sessions_r13_present, 1)); + + HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0002, 1)); + HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0003, 1)); + HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0004, 1)); + HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0006, 1)); + HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0102, 1)); + HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0103, 1)); + HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0104, 1)); + if (max_num_rohc_context_sessions_r13_present) { + HANDLE_CODE(max_num_rohc_context_sessions_r13.unpack(bref)); + } return SRSASN_SUCCESS; } -void dl_info_transfer_nb_s::to_json(json_writer& j) const +void pdcp_params_nb_r13_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.write_fieldname("supportedROHC-Profiles-r13"); + j.start_obj(); + j.write_bool("profile0x0002", supported_rohc_profiles_r13.profile0x0002); + j.write_bool("profile0x0003", supported_rohc_profiles_r13.profile0x0003); + j.write_bool("profile0x0004", supported_rohc_profiles_r13.profile0x0004); + j.write_bool("profile0x0006", supported_rohc_profiles_r13.profile0x0006); + j.write_bool("profile0x0102", supported_rohc_profiles_r13.profile0x0102); + j.write_bool("profile0x0103", supported_rohc_profiles_r13.profile0x0103); + j.write_bool("profile0x0104", supported_rohc_profiles_r13.profile0x0104); + j.end_obj(); + if (max_num_rohc_context_sessions_r13_present) { + j.write_str("maxNumberROHC-ContextSessions-r13", max_num_rohc_context_sessions_r13.to_string()); + } j.end_obj(); } -void dl_info_transfer_nb_s::crit_exts_c_::set(types::options e) -{ - type_ = e; -} -dl_info_transfer_nb_s::crit_exts_c_::c1_c_& dl_info_transfer_nb_s::crit_exts_c_::set_c1() +const char* pdcp_params_nb_r13_s::max_num_rohc_context_sessions_r13_opts::to_string() const { - set(types::c1); - return c; + static const char* options[] = {"cs2", "cs4", "cs8", "cs12"}; + return convert_enum_idx(options, 4, value, "pdcp_params_nb_r13_s::max_num_rohc_context_sessions_r13_e_"); } -void dl_info_transfer_nb_s::crit_exts_c_::set_crit_exts_future() +uint8_t pdcp_params_nb_r13_s::max_num_rohc_context_sessions_r13_opts::to_number() const { - set(types::crit_exts_future); + static const uint8_t options[] = {2, 4, 8, 12}; + return map_enum_number(options, 4, value, "pdcp_params_nb_r13_s::max_num_rohc_context_sessions_r13_e_"); } -void dl_info_transfer_nb_s::crit_exts_c_::to_json(json_writer& j) const + +// PhyLayerParameters-NB-r13 ::= SEQUENCE +SRSASN_CODE phy_layer_params_nb_r13_s::pack(bit_ref& bref) 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_, "dl_info_transfer_nb_s::crit_exts_c_"); - } - j.end_obj(); + HANDLE_CODE(bref.pack(multi_tone_r13_present, 1)); + HANDLE_CODE(bref.pack(multi_carrier_r13_present, 1)); + + return SRSASN_SUCCESS; } -SRSASN_CODE dl_info_transfer_nb_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE phy_layer_params_nb_r13_s::unpack(cbit_ref& bref) { - 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_, "dl_info_transfer_nb_s::crit_exts_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } + HANDLE_CODE(bref.unpack(multi_tone_r13_present, 1)); + HANDLE_CODE(bref.unpack(multi_carrier_r13_present, 1)); + return SRSASN_SUCCESS; } -SRSASN_CODE dl_info_transfer_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +void phy_layer_params_nb_r13_s::to_json(json_writer& j) const { - 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_, "dl_info_transfer_nb_s::crit_exts_c_"); - return SRSASN_ERROR_DECODE_FAIL; + j.start_obj(); + if (multi_tone_r13_present) { + j.write_str("multiTone-r13", "supported"); } - return SRSASN_SUCCESS; + if (multi_carrier_r13_present) { + j.write_str("multiCarrier-r13", "supported"); + } + j.end_obj(); } -void dl_info_transfer_nb_s::crit_exts_c_::c1_c_::set(types::options e) -{ - type_ = e; -} -dl_info_transfer_nb_r13_ies_s& dl_info_transfer_nb_s::crit_exts_c_::c1_c_::set_dl_info_transfer_r13() +// RF-Parameters-NB-r13 ::= SEQUENCE +SRSASN_CODE rf_params_nb_r13_s::pack(bit_ref& bref) const { - set(types::dl_info_transfer_r13); - return c; + HANDLE_CODE(bref.pack(multi_ns_pmax_r13_present, 1)); + + HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_list_r13, 1, 64)); + + return SRSASN_SUCCESS; } -void dl_info_transfer_nb_s::crit_exts_c_::c1_c_::set_spare1() +SRSASN_CODE rf_params_nb_r13_s::unpack(cbit_ref& bref) { - set(types::spare1); + HANDLE_CODE(bref.unpack(multi_ns_pmax_r13_present, 1)); + + HANDLE_CODE(unpack_dyn_seq_of(supported_band_list_r13, bref, 1, 64)); + + return SRSASN_SUCCESS; } -void dl_info_transfer_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +void rf_params_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::dl_info_transfer_r13: - j.write_fieldname("dlInformationTransfer-r13"); - c.to_json(j); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "dl_info_transfer_nb_s::crit_exts_c_::c1_c_"); + j.start_array("supportedBandList-r13"); + for (const auto& e1 : supported_band_list_r13) { + e1.to_json(j); + } + j.end_array(); + if (multi_ns_pmax_r13_present) { + j.write_str("multiNS-Pmax-r13", "supported"); } j.end_obj(); } -SRSASN_CODE dl_info_transfer_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const + +// HandoverPreparationInformation-NB-v1380-IEs ::= SEQUENCE +SRSASN_CODE ho_prep_info_nb_v1380_ies_s::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::dl_info_transfer_r13: - HANDLE_CODE(c.pack(bref)); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "dl_info_transfer_nb_s::crit_exts_c_::c1_c_"); - return SRSASN_ERROR_ENCODE_FAIL; + 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 dl_info_transfer_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE ho_prep_info_nb_v1380_ies_s::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::dl_info_transfer_r13: - HANDLE_CODE(c.unpack(bref)); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "dl_info_transfer_nb_s::crit_exts_c_::c1_c_"); - return SRSASN_ERROR_DECODE_FAIL; + 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 ho_prep_info_nb_v1380_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); } - return SRSASN_SUCCESS; + j.end_obj(); } -const char* dl_info_transfer_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const +// RRM-Config-NB ::= SEQUENCE +SRSASN_CODE rrm_cfg_nb_s::pack(bit_ref& bref) const { - static const char* options[] = {"dlInformationTransfer-r13", "spare1"}; - return convert_enum_idx(options, 2, value, "dl_info_transfer_nb_s::crit_exts_c_::c1_c_::types"); -} + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(ue_inactive_time_present, 1)); -// RRCConnectionReconfiguration-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_recfg_nb_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)); + if (ue_inactive_time_present) { + HANDLE_CODE(ue_inactive_time.pack(bref)); + } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_recfg_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rrm_cfg_nb_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)); + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(ue_inactive_time_present, 1)); + + if (ue_inactive_time_present) { + HANDLE_CODE(ue_inactive_time.unpack(bref)); + } return SRSASN_SUCCESS; } -void rrc_conn_recfg_nb_s::to_json(json_writer& j) const +void rrm_cfg_nb_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); + if (ue_inactive_time_present) { + j.write_str("ue-InactiveTime", ue_inactive_time.to_string()); + } j.end_obj(); } -void rrc_conn_recfg_nb_s::crit_exts_c_::set(types::options e) -{ - type_ = e; -} -rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_& rrc_conn_recfg_nb_s::crit_exts_c_::set_c1() -{ - set(types::c1); - return c; -} -void rrc_conn_recfg_nb_s::crit_exts_c_::set_crit_exts_future() -{ - set(types::crit_exts_future); -} -void rrc_conn_recfg_nb_s::crit_exts_c_::to_json(json_writer& j) const +const char* rrm_cfg_nb_s::ue_inactive_time_opts::to_string() 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_, "rrc_conn_recfg_nb_s::crit_exts_c_"); - } - j.end_obj(); + static const char* options[] = { + "s1", "s2", "s3", "s5", "s7", "s10", "s15", "s20", "s25", "s30", + "s40", "s50", "min1", "min1s20", "min1s40", "min2", "min2s30", "min3", "min3s30", "min4", + "min5", "min6", "min7", "min8", "min9", "min10", "min12", "min14", "min17", "min20", + "min24", "min28", "min33", "min38", "min44", "min50", "hr1", "hr1min30", "hr2", "hr2min30", + "hr3", "hr3min30", "hr4", "hr5", "hr6", "hr8", "hr10", "hr13", "hr16", "hr20", + "day1", "day1hr12", "day2", "day2hr12", "day3", "day4", "day5", "day7", "day10", "day14", + "day19", "day24", "day30", "dayMoreThan30"}; + return convert_enum_idx(options, 64, value, "rrm_cfg_nb_s::ue_inactive_time_e_"); } -SRSASN_CODE rrc_conn_recfg_nb_s::crit_exts_c_::pack(bit_ref& bref) const + +// UE-Capability-NB-r13 ::= SEQUENCE +SRSASN_CODE ue_cap_nb_r13_s::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_, "rrc_conn_recfg_nb_s::crit_exts_c_"); - return SRSASN_ERROR_ENCODE_FAIL; + HANDLE_CODE(bref.pack(ue_category_nb_r13_present, 1)); + HANDLE_CODE(bref.pack(multiple_drb_r13_present, 1)); + HANDLE_CODE(bref.pack(pdcp_params_r13_present, 1)); + HANDLE_CODE(bref.pack(dummy_present, 1)); + + HANDLE_CODE(access_stratum_release_r13.pack(bref)); + if (pdcp_params_r13_present) { + HANDLE_CODE(pdcp_params_r13.pack(bref)); } + HANDLE_CODE(phy_layer_params_r13.pack(bref)); + HANDLE_CODE(rf_params_r13.pack(bref)); + return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_recfg_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE ue_cap_nb_r13_s::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_, "rrc_conn_recfg_nb_s::crit_exts_c_"); - return SRSASN_ERROR_DECODE_FAIL; + HANDLE_CODE(bref.unpack(ue_category_nb_r13_present, 1)); + HANDLE_CODE(bref.unpack(multiple_drb_r13_present, 1)); + HANDLE_CODE(bref.unpack(pdcp_params_r13_present, 1)); + HANDLE_CODE(bref.unpack(dummy_present, 1)); + + HANDLE_CODE(access_stratum_release_r13.unpack(bref)); + if (pdcp_params_r13_present) { + HANDLE_CODE(pdcp_params_r13.unpack(bref)); } - return SRSASN_SUCCESS; -} + HANDLE_CODE(phy_layer_params_r13.unpack(bref)); + HANDLE_CODE(rf_params_r13.unpack(bref)); -void rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::set(types::options e) -{ - type_ = e; -} -rrc_conn_recfg_nb_r13_ies_s& rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_recfg_r13() -{ - set(types::rrc_conn_recfg_r13); - return c; -} -void rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::set_spare1() -{ - set(types::spare1); + return SRSASN_SUCCESS; } -void rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +void ue_cap_nb_r13_s::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::rrc_conn_recfg_r13: - j.write_fieldname("rrcConnectionReconfiguration-r13"); - c.to_json(j); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_"); + j.write_str("accessStratumRelease-r13", access_stratum_release_r13.to_string()); + if (ue_category_nb_r13_present) { + j.write_str("ue-Category-NB-r13", "nb1"); + } + if (multiple_drb_r13_present) { + j.write_str("multipleDRB-r13", "supported"); + } + if (pdcp_params_r13_present) { + j.write_fieldname("pdcp-Parameters-r13"); + pdcp_params_r13.to_json(j); + } + j.write_fieldname("phyLayerParameters-r13"); + phy_layer_params_r13.to_json(j); + j.write_fieldname("rf-Parameters-r13"); + rf_params_r13.to_json(j); + if (dummy_present) { + j.write_fieldname("dummy"); + j.start_obj(); + j.end_obj(); } j.end_obj(); } -SRSASN_CODE rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const + +// HandoverPreparationInformation-NB-IEs ::= SEQUENCE +SRSASN_CODE ho_prep_info_nb_ies_s::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::rrc_conn_recfg_r13: - HANDLE_CODE(c.pack(bref)); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_"); - return SRSASN_ERROR_ENCODE_FAIL; + HANDLE_CODE(bref.pack(rrm_cfg_r13_present, 1)); + HANDLE_CODE(bref.pack(as_context_r13_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + HANDLE_CODE(ue_radio_access_cap_info_r13.pack(bref)); + HANDLE_CODE(as_cfg_r13.pack(bref)); + if (rrm_cfg_r13_present) { + HANDLE_CODE(rrm_cfg_r13.pack(bref)); + } + if (as_context_r13_present) { + HANDLE_CODE(as_context_r13.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); } + return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE ho_prep_info_nb_ies_s::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::rrc_conn_recfg_r13: - HANDLE_CODE(c.unpack(bref)); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_"); - return SRSASN_ERROR_DECODE_FAIL; + HANDLE_CODE(bref.unpack(rrm_cfg_r13_present, 1)); + HANDLE_CODE(bref.unpack(as_context_r13_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + HANDLE_CODE(ue_radio_access_cap_info_r13.unpack(bref)); + HANDLE_CODE(as_cfg_r13.unpack(bref)); + if (rrm_cfg_r13_present) { + HANDLE_CODE(rrm_cfg_r13.unpack(bref)); + } + if (as_context_r13_present) { + HANDLE_CODE(as_context_r13.unpack(bref)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + return SRSASN_SUCCESS; } - -const char* rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const +void ho_prep_info_nb_ies_s::to_json(json_writer& j) const { - static const char* options[] = {"rrcConnectionReconfiguration-r13", "spare1"}; - return convert_enum_idx(options, 2, value, "rrc_conn_recfg_nb_s::crit_exts_c_::c1_c_::types"); + j.start_obj(); + j.write_fieldname("ue-RadioAccessCapabilityInfo-r13"); + ue_radio_access_cap_info_r13.to_json(j); + j.write_fieldname("as-Config-r13"); + as_cfg_r13.to_json(j); + if (rrm_cfg_r13_present) { + j.write_fieldname("rrm-Config-r13"); + rrm_cfg_r13.to_json(j); + } + if (as_context_r13_present) { + j.write_fieldname("as-Context-r13"); + as_context_r13.to_json(j); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); } -// RRCConnectionRelease-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_release_nb_s::pack(bit_ref& bref) const +// HandoverPreparationInformation-NB ::= SEQUENCE +SRSASN_CODE ho_prep_info_nb_s::pack(bit_ref& bref) const { - HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_release_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE ho_prep_info_nb_s::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void rrc_conn_release_nb_s::to_json(json_writer& j) const +void ho_prep_info_nb_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); j.write_fieldname("criticalExtensions"); crit_exts.to_json(j); j.end_obj(); } -void rrc_conn_release_nb_s::crit_exts_c_::set(types::options e) +void ho_prep_info_nb_s::crit_exts_c_::set(types::options e) { type_ = e; } -rrc_conn_release_nb_s::crit_exts_c_::c1_c_& rrc_conn_release_nb_s::crit_exts_c_::set_c1() +ho_prep_info_nb_s::crit_exts_c_::c1_c_& ho_prep_info_nb_s::crit_exts_c_::set_c1() { set(types::c1); return c; } -void rrc_conn_release_nb_s::crit_exts_c_::set_crit_exts_future() +void ho_prep_info_nb_s::crit_exts_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void rrc_conn_release_nb_s::crit_exts_c_::to_json(json_writer& j) const +void ho_prep_info_nb_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { @@ -14448,11 +20464,11 @@ void rrc_conn_release_nb_s::crit_exts_c_::to_json(json_writer& j) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_release_nb_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE ho_prep_info_nb_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { @@ -14462,12 +20478,12 @@ SRSASN_CODE rrc_conn_release_nb_s::crit_exts_c_::pack(bit_ref& bref) const case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_release_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE ho_prep_info_nb_s::crit_exts_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -14479,269 +20495,395 @@ SRSASN_CODE rrc_conn_release_nb_s::crit_exts_c_::unpack(cbit_ref& bref) case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -void rrc_conn_release_nb_s::crit_exts_c_::c1_c_::set(types::options e) +void ho_prep_info_nb_s::crit_exts_c_::c1_c_::set(types::options e) { type_ = e; } -rrc_conn_release_nb_r13_ies_s& rrc_conn_release_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_release_r13() +ho_prep_info_nb_ies_s& ho_prep_info_nb_s::crit_exts_c_::c1_c_::set_ho_prep_info_r13() { - set(types::rrc_conn_release_r13); + set(types::ho_prep_info_r13); return c; } -void rrc_conn_release_nb_s::crit_exts_c_::c1_c_::set_spare1() +void ho_prep_info_nb_s::crit_exts_c_::c1_c_::set_spare3() +{ + set(types::spare3); +} +void ho_prep_info_nb_s::crit_exts_c_::c1_c_::set_spare2() +{ + set(types::spare2); +} +void ho_prep_info_nb_s::crit_exts_c_::c1_c_::set_spare1() { set(types::spare1); } -void rrc_conn_release_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +void ho_prep_info_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::rrc_conn_release_r13: - j.write_fieldname("rrcConnectionRelease-r13"); + case types::ho_prep_info_r13: + j.write_fieldname("handoverPreparationInformation-r13"); c.to_json(j); break; + case types::spare3: + break; + case types::spare2: + break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_::c1_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_release_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +SRSASN_CODE ho_prep_info_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::rrc_conn_release_r13: + case types::ho_prep_info_r13: HANDLE_CODE(c.pack(bref)); break; + case types::spare3: + break; + case types::spare2: + break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_release_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE ho_prep_info_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::rrc_conn_release_r13: + case types::ho_prep_info_r13: HANDLE_CODE(c.unpack(bref)); break; + case types::spare3: + break; + case types::spare2: + break; case types::spare1: break; default: - log_invalid_choice_id(type_, "rrc_conn_release_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_::c1_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* rrc_conn_release_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const +const char* ho_prep_info_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const { - static const char* options[] = {"rrcConnectionRelease-r13", "spare1"}; - return convert_enum_idx(options, 2, value, "rrc_conn_release_nb_s::crit_exts_c_::c1_c_::types"); + static const char* options[] = {"handoverPreparationInformation-r13", "spare3", "spare2", "spare1"}; + return convert_enum_idx(options, 4, value, "ho_prep_info_nb_s::crit_exts_c_::c1_c_::types"); } -// RRCConnectionResume-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_resume_nb_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, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); - HANDLE_CODE(crit_exts.pack(bref)); - - return SRSASN_SUCCESS; + switch (type_) { + case types::ng_minus5_g_s_tmsi_r16: + c.destroy >(); + break; + case types::random_value: + c.destroy >(); + break; + default: + break; + } } -SRSASN_CODE rrc_conn_resume_nb_s::unpack(cbit_ref& bref) +void init_ue_id_minus5_gc_nb_r16_c::set(types::options e) { - HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); - HANDLE_CODE(crit_exts.unpack(bref)); - - return SRSASN_SUCCESS; + destroy_(); + type_ = e; + switch (type_) { + case types::ng_minus5_g_s_tmsi_r16: + c.init >(); + break; + case types::random_value: + c.init >(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c"); + } } -void rrc_conn_resume_nb_s::to_json(json_writer& j) const +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) { - j.start_obj(); - j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); - j.write_fieldname("criticalExtensions"); - crit_exts.to_json(j); - j.end_obj(); + type_ = other.type(); + switch (type_) { + case types::ng_minus5_g_s_tmsi_r16: + c.init(other.c.get >()); + break; + case types::random_value: + c.init(other.c.get >()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c"); + } } - -void rrc_conn_resume_nb_s::crit_exts_c_::set(types::options e) +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) { - type_ = e; + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::ng_minus5_g_s_tmsi_r16: + c.set(other.c.get >()); + break; + case types::random_value: + c.set(other.c.get >()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c"); + } + + return *this; } -rrc_conn_resume_nb_s::crit_exts_c_::c1_c_& rrc_conn_resume_nb_s::crit_exts_c_::set_c1() +fixed_bitstring<48>& init_ue_id_minus5_gc_nb_r16_c::set_ng_minus5_g_s_tmsi_r16() { - set(types::c1); - return c; + set(types::ng_minus5_g_s_tmsi_r16); + return c.get >(); } -void rrc_conn_resume_nb_s::crit_exts_c_::set_crit_exts_future() +fixed_bitstring<48>& init_ue_id_minus5_gc_nb_r16_c::set_random_value() { - set(types::crit_exts_future); + set(types::random_value); + return c.get >(); } -void rrc_conn_resume_nb_s::crit_exts_c_::to_json(json_writer& j) const +void init_ue_id_minus5_gc_nb_r16_c::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::c1: - j.write_fieldname("c1"); - c.to_json(j); + case types::ng_minus5_g_s_tmsi_r16: + j.write_str("ng-5G-S-TMSI-r16", c.get >().to_string()); break; - case types::crit_exts_future: + case types::random_value: + j.write_str("randomValue", c.get >().to_string()); break; default: - log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c"); } j.end_obj(); } -SRSASN_CODE rrc_conn_resume_nb_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE init_ue_id_minus5_gc_nb_r16_c::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::c1: - HANDLE_CODE(c.pack(bref)); + case types::ng_minus5_g_s_tmsi_r16: + HANDLE_CODE(c.get >().pack(bref)); break; - case types::crit_exts_future: + case types::random_value: + HANDLE_CODE(c.get >().pack(bref)); break; default: - log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_resume_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE init_ue_id_minus5_gc_nb_r16_c::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::c1: - HANDLE_CODE(c.unpack(bref)); + case types::ng_minus5_g_s_tmsi_r16: + HANDLE_CODE(c.get >().unpack(bref)); break; - case types::crit_exts_future: + case types::random_value: + HANDLE_CODE(c.get >().unpack(bref)); break; default: - log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "init_ue_id_minus5_gc_nb_r16_c"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -void rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::set(types::options e) +const char* init_ue_id_minus5_gc_nb_r16_c::types_opts::to_string() const { - type_ = e; + 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"); } -rrc_conn_resume_nb_r13_ies_s& rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::set_rrc_conn_resume_r13() +int8_t init_ue_id_minus5_gc_nb_r16_c::types_opts::to_number() const { - set(types::rrc_conn_resume_r13); - return c; + static const int8_t options[] = {-5}; + return map_enum_number(options, 1, value, "init_ue_id_minus5_gc_nb_r16_c::types"); } -void rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::set_spare1() + +// PagingRecord-NB-v1610 ::= SEQUENCE +SRSASN_CODE paging_record_nb_v1610_s::pack(bit_ref& bref) const { - set(types::spare1); + HANDLE_CODE(bref.pack(mt_edt_r16_present, 1)); + + return SRSASN_SUCCESS; } -void rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::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(); - switch (type_) { - case types::rrc_conn_resume_r13: - j.write_fieldname("rrcConnectionResume-r13"); - c.to_json(j); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_::c1_c_"); + if (mt_edt_r16_present) { + j.write_str("mt-EDT-r16", "true"); } j.end_obj(); } -SRSASN_CODE rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const + +// PagingRecord-NB-r13 ::= SEQUENCE +SRSASN_CODE paging_record_nb_r13_s::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::rrc_conn_resume_r13: - HANDLE_CODE(c.pack(bref)); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_::c1_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } + bref.pack(ext, 1); + HANDLE_CODE(ue_id_r13.pack(bref)); + return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE paging_record_nb_r13_s::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::rrc_conn_resume_r13: - HANDLE_CODE(c.unpack(bref)); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "rrc_conn_resume_nb_s::crit_exts_c_::c1_c_"); - return SRSASN_ERROR_DECODE_FAIL; + bref.unpack(ext, 1); + HANDLE_CODE(ue_id_r13.unpack(bref)); + + return SRSASN_SUCCESS; +} +void paging_record_nb_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("ue-Identity-r13"); + ue_id_r13.to_json(j); + 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)); -const char* rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const + 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 { - static const char* options[] = {"rrcConnectionResume-r13", "spare1"}; - return convert_enum_idx(options, 2, value, "rrc_conn_resume_nb_s::crit_exts_c_::c1_c_::types"); + 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(); } -// UECapabilityEnquiry-NB ::= SEQUENCE -SRSASN_CODE ue_cap_enquiry_nb_s::pack(bit_ref& bref) const +// Paging-NB ::= SEQUENCE +SRSASN_CODE paging_nb_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)); + HANDLE_CODE(bref.pack(paging_record_list_r13_present, 1)); + HANDLE_CODE(bref.pack(sys_info_mod_r13_present, 1)); + HANDLE_CODE(bref.pack(sys_info_mod_e_drx_r13_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + 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; } -SRSASN_CODE ue_cap_enquiry_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE paging_nb_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)); + HANDLE_CODE(bref.unpack(paging_record_list_r13_present, 1)); + HANDLE_CODE(bref.unpack(sys_info_mod_r13_present, 1)); + HANDLE_CODE(bref.unpack(sys_info_mod_e_drx_r13_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + 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; } -void ue_cap_enquiry_nb_s::to_json(json_writer& j) const +void paging_nb_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); + if (paging_record_list_r13_present) { + j.start_array("pagingRecordList-r13"); + for (const auto& e1 : paging_record_list_r13) { + e1.to_json(j); + } + j.end_array(); + } + if (sys_info_mod_r13_present) { + j.write_str("systemInfoModification-r13", "true"); + } + if (sys_info_mod_e_drx_r13_present) { + j.write_str("systemInfoModification-eDRX-r13", "true"); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } j.end_obj(); } -void ue_cap_enquiry_nb_s::crit_exts_c_::set(types::options e) +// PCCH-MessageType-NB ::= CHOICE +void pcch_msg_type_nb_c::set(types::options e) { type_ = e; } -ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_& ue_cap_enquiry_nb_s::crit_exts_c_::set_c1() +pcch_msg_type_nb_c::c1_c_& pcch_msg_type_nb_c::set_c1() { set(types::c1); return c; } -void ue_cap_enquiry_nb_s::crit_exts_c_::set_crit_exts_future() +void pcch_msg_type_nb_c::set_msg_class_ext() { - set(types::crit_exts_future); + set(types::msg_class_ext); } -void ue_cap_enquiry_nb_s::crit_exts_c_::to_json(json_writer& j) const +void pcch_msg_type_nb_c::to_json(json_writer& j) const { j.start_obj(); switch (type_) { @@ -14749,29 +20891,29 @@ void ue_cap_enquiry_nb_s::crit_exts_c_::to_json(json_writer& j) const j.write_fieldname("c1"); c.to_json(j); break; - case types::crit_exts_future: + case types::msg_class_ext: break; default: - log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "pcch_msg_type_nb_c"); } j.end_obj(); } -SRSASN_CODE ue_cap_enquiry_nb_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE pcch_msg_type_nb_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: + case types::msg_class_ext: break; default: - log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "pcch_msg_type_nb_c"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE ue_cap_enquiry_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE pcch_msg_type_nb_c::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -14780,533 +20922,445 @@ SRSASN_CODE ue_cap_enquiry_nb_s::crit_exts_c_::unpack(cbit_ref& bref) case types::c1: HANDLE_CODE(c.unpack(bref)); break; - case types::crit_exts_future: + case types::msg_class_ext: break; default: - log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "pcch_msg_type_nb_c"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -void ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::set(types::options e) -{ - type_ = e; -} -ue_cap_enquiry_nb_r13_ies_s& ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::set_ue_cap_enquiry_r13() -{ - set(types::ue_cap_enquiry_r13); - return c; -} -void ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::set_spare1() -{ - set(types::spare1); -} -void ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +void pcch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::ue_cap_enquiry_r13: - j.write_fieldname("ueCapabilityEnquiry-r13"); - c.to_json(j); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_"); - } + j.write_fieldname("paging-r13"); + c.to_json(j); j.end_obj(); } -SRSASN_CODE ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +SRSASN_CODE pcch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::ue_cap_enquiry_r13: - HANDLE_CODE(c.pack(bref)); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } + HANDLE_CODE(c.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE pcch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::ue_cap_enquiry_r13: - HANDLE_CODE(c.unpack(bref)); - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_"); - return SRSASN_ERROR_DECODE_FAIL; - } + HANDLE_CODE(c.unpack(bref)); return SRSASN_SUCCESS; } -const char* ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const +const char* pcch_msg_type_nb_c::c1_c_::types_opts::to_string() const { - static const char* options[] = {"ueCapabilityEnquiry-r13", "spare1"}; - return convert_enum_idx(options, 2, value, "ue_cap_enquiry_nb_s::crit_exts_c_::c1_c_::types"); + static const char* options[] = {"paging-r13"}; + return convert_enum_idx(options, 1, value, "pcch_msg_type_nb_c::c1_c_::types"); } -// DL-DCCH-MessageType-NB ::= CHOICE -void dl_dcch_msg_type_nb_c::set(types::options e) +const char* pcch_msg_type_nb_c::types_opts::to_string() const { - type_ = e; + static const char* options[] = {"c1", "messageClassExtension"}; + return convert_enum_idx(options, 2, value, "pcch_msg_type_nb_c::types"); } -dl_dcch_msg_type_nb_c::c1_c_& dl_dcch_msg_type_nb_c::set_c1() +uint8_t pcch_msg_type_nb_c::types_opts::to_number() const { - set(types::c1); - return c; + static const uint8_t options[] = {1}; + return map_enum_number(options, 1, value, "pcch_msg_type_nb_c::types"); } -void dl_dcch_msg_type_nb_c::set_msg_class_ext() + +// PCCH-Message-NB ::= SEQUENCE +SRSASN_CODE pcch_msg_nb_s::pack(bit_ref& bref) const { - set(types::msg_class_ext); + HANDLE_CODE(msg.pack(bref)); + + bref.align_bytes_zero(); + + return SRSASN_SUCCESS; } -void dl_dcch_msg_type_nb_c::to_json(json_writer& j) const +SRSASN_CODE pcch_msg_nb_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(msg.unpack(bref)); + + bref.align_bytes(); + + return SRSASN_SUCCESS; +} +void pcch_msg_nb_s::to_json(json_writer& j) const { + j.start_array(); j.start_obj(); - switch (type_) { - case types::c1: - j.write_fieldname("c1"); - c.to_json(j); - break; - case types::msg_class_ext: - break; - default: - log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c"); - } + j.start_obj("PCCH-Message-NB"); + j.write_fieldname("message"); + msg.to_json(j); j.end_obj(); + j.end_obj(); + j.end_array(); } -SRSASN_CODE dl_dcch_msg_type_nb_c::pack(bit_ref& bref) const + +// PCI-ARFCN-NB-r14 ::= SEQUENCE +SRSASN_CODE pci_arfcn_nb_r14_s::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::c1: - HANDLE_CODE(c.pack(bref)); - break; - case types::msg_class_ext: - break; - default: - log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c"); - return SRSASN_ERROR_ENCODE_FAIL; + HANDLE_CODE(bref.pack(carrier_freq_r14_present, 1)); + + HANDLE_CODE(pack_integer(bref, pci_r14, (uint16_t)0u, (uint16_t)503u)); + if (carrier_freq_r14_present) { + HANDLE_CODE(carrier_freq_r14.pack(bref)); } + return SRSASN_SUCCESS; } -SRSASN_CODE dl_dcch_msg_type_nb_c::unpack(cbit_ref& bref) +SRSASN_CODE pci_arfcn_nb_r14_s::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::c1: - HANDLE_CODE(c.unpack(bref)); - break; - case types::msg_class_ext: - break; - default: - log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c"); - return SRSASN_ERROR_DECODE_FAIL; + HANDLE_CODE(bref.unpack(carrier_freq_r14_present, 1)); + + HANDLE_CODE(unpack_integer(pci_r14, bref, (uint16_t)0u, (uint16_t)503u)); + if (carrier_freq_r14_present) { + HANDLE_CODE(carrier_freq_r14.unpack(bref)); } + return SRSASN_SUCCESS; } - -void dl_dcch_msg_type_nb_c::c1_c_::destroy_() +void pci_arfcn_nb_r14_s::to_json(json_writer& j) const { - switch (type_) { - case types::dl_info_transfer_r13: - c.destroy(); - break; - case types::rrc_conn_recfg_r13: - c.destroy(); - break; - case types::rrc_conn_release_r13: - c.destroy(); - break; - case types::security_mode_cmd_r13: - c.destroy(); - break; - case types::ue_cap_enquiry_r13: - c.destroy(); - break; - case types::rrc_conn_resume_r13: - c.destroy(); - break; - default: - break; + j.start_obj(); + j.write_int("physCellId-r14", pci_r14); + if (carrier_freq_r14_present) { + j.write_fieldname("carrierFreq-r14"); + carrier_freq_r14.to_json(j); } + 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); } -void dl_dcch_msg_type_nb_c::c1_c_::set(types::options e) +pur_cfg_request_nb_r16_c::pur_setup_request_s_& pur_cfg_request_nb_r16_c::set_pur_setup_request() { - destroy_(); - type_ = e; + 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::dl_info_transfer_r13: - c.init(); - break; - case types::rrc_conn_recfg_r13: - c.init(); - break; - case types::rrc_conn_release_r13: - c.init(); - break; - case types::security_mode_cmd_r13: - c.init(); - break; - case types::ue_cap_enquiry_r13: - c.init(); - break; - case types::rrc_conn_resume_r13: - c.init(); + case types::pur_release_request: break; - case types::spare2: - break; - case types::spare1: - break; - case types::nulltype: + 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_, "dl_dcch_msg_type_nb_c::c1_c_"); + log_invalid_choice_id(type_, "pur_cfg_request_nb_r16_c"); } + j.end_obj(); } -dl_dcch_msg_type_nb_c::c1_c_::c1_c_(const dl_dcch_msg_type_nb_c::c1_c_& other) +SRSASN_CODE pur_cfg_request_nb_r16_c::pack(bit_ref& bref) const { - type_ = other.type(); + type_.pack(bref); switch (type_) { - case types::dl_info_transfer_r13: - c.init(other.c.get()); - break; - case types::rrc_conn_recfg_r13: - c.init(other.c.get()); - break; - case types::rrc_conn_release_r13: - c.init(other.c.get()); - break; - case types::security_mode_cmd_r13: - c.init(other.c.get()); + case types::pur_release_request: break; - case types::ue_cap_enquiry_r13: - c.init(other.c.get()); - break; - case types::rrc_conn_resume_r13: - c.init(other.c.get()); - break; - case types::spare2: - break; - case types::spare1: - break; - case types::nulltype: + 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_, "dl_dcch_msg_type_nb_c::c1_c_"); + log_invalid_choice_id(type_, "pur_cfg_request_nb_r16_c"); + return SRSASN_ERROR_ENCODE_FAIL; } + return SRSASN_SUCCESS; } -dl_dcch_msg_type_nb_c::c1_c_& dl_dcch_msg_type_nb_c::c1_c_::operator=(const dl_dcch_msg_type_nb_c::c1_c_& other) +SRSASN_CODE pur_cfg_request_nb_r16_c::unpack(cbit_ref& bref) { - if (this == &other) { - return *this; - } - set(other.type()); + types e; + e.unpack(bref); + set(e); switch (type_) { - case types::dl_info_transfer_r13: - c.set(other.c.get()); - break; - case types::rrc_conn_recfg_r13: - c.set(other.c.get()); - break; - case types::rrc_conn_release_r13: - c.set(other.c.get()); - break; - case types::security_mode_cmd_r13: - c.set(other.c.get()); - break; - case types::ue_cap_enquiry_r13: - c.set(other.c.get()); - break; - case types::rrc_conn_resume_r13: - c.set(other.c.get()); - break; - case types::spare2: - break; - case types::spare1: + case types::pur_release_request: break; - case types::nulltype: + 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_, "dl_dcch_msg_type_nb_c::c1_c_"); + log_invalid_choice_id(type_, "pur_cfg_request_nb_r16_c"); + return SRSASN_ERROR_DECODE_FAIL; } + return SRSASN_SUCCESS; +} - return *this; +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_"); } -dl_info_transfer_nb_s& dl_dcch_msg_type_nb_c::c1_c_::set_dl_info_transfer_r13() +uint8_t pur_cfg_request_nb_r16_c::pur_setup_request_s_::requested_num_occasions_r16_opts::to_number() const { - set(types::dl_info_transfer_r13); - return c.get(); + 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_"); } -rrc_conn_recfg_nb_s& dl_dcch_msg_type_nb_c::c1_c_::set_rrc_conn_recfg_r13() + +const char* pur_cfg_request_nb_r16_c::pur_setup_request_s_::requested_tbs_r16_opts::to_string() const { - set(types::rrc_conn_recfg_r13); - return c.get(); + 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_"); } -rrc_conn_release_nb_s& dl_dcch_msg_type_nb_c::c1_c_::set_rrc_conn_release_r13() +uint16_t pur_cfg_request_nb_r16_c::pur_setup_request_s_::requested_tbs_r16_opts::to_number() const { - set(types::rrc_conn_release_r13); - return c.get(); + 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_"); } -security_mode_cmd_s& dl_dcch_msg_type_nb_c::c1_c_::set_security_mode_cmd_r13() + +const char* pur_cfg_request_nb_r16_c::types_opts::to_string() const { - set(types::security_mode_cmd_r13); - return c.get(); + static const char* options[] = {"pur-ReleaseRequest", "pur-SetupRequest"}; + return convert_enum_idx(options, 2, value, "pur_cfg_request_nb_r16_c::types"); } -ue_cap_enquiry_nb_s& dl_dcch_msg_type_nb_c::c1_c_::set_ue_cap_enquiry_r13() + +// PURConfigurationRequest-NB-r16-IEs ::= SEQUENCE +SRSASN_CODE pur_cfg_request_nb_r16_ies_s::pack(bit_ref& bref) const { - set(types::ue_cap_enquiry_r13); - return c.get(); + 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; } -rrc_conn_resume_nb_s& dl_dcch_msg_type_nb_c::c1_c_::set_rrc_conn_resume_r13() +SRSASN_CODE pur_cfg_request_nb_r16_ies_s::unpack(cbit_ref& bref) { - set(types::rrc_conn_resume_r13); - return c.get(); + 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 dl_dcch_msg_type_nb_c::c1_c_::set_spare2() +void pur_cfg_request_nb_r16_ies_s::to_json(json_writer& j) const { - set(types::spare2); + 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 dl_dcch_msg_type_nb_c::c1_c_::set_spare1() + +// PURConfigurationRequest-NB-r16 ::= SEQUENCE +SRSASN_CODE pur_cfg_request_nb_r16_s::pack(bit_ref& bref) const { - set(types::spare1); + HANDLE_CODE(crit_exts.pack(bref)); + + return SRSASN_SUCCESS; } -void dl_dcch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const +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(); - switch (type_) { - case types::dl_info_transfer_r13: - j.write_fieldname("dlInformationTransfer-r13"); - c.get().to_json(j); - break; - case types::rrc_conn_recfg_r13: - j.write_fieldname("rrcConnectionReconfiguration-r13"); - c.get().to_json(j); - break; - case types::rrc_conn_release_r13: - j.write_fieldname("rrcConnectionRelease-r13"); - c.get().to_json(j); - break; - case types::security_mode_cmd_r13: - j.write_fieldname("securityModeCommand-r13"); - c.get().to_json(j); - break; - case types::ue_cap_enquiry_r13: - j.write_fieldname("ueCapabilityEnquiry-r13"); - c.get().to_json(j); - break; - case types::rrc_conn_resume_r13: - j.write_fieldname("rrcConnectionResume-r13"); - c.get().to_json(j); - break; - case types::spare2: - break; - case types::spare1: - break; - default: - log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c::c1_c_"); - } + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); j.end_obj(); } -SRSASN_CODE dl_dcch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const + +void pur_cfg_request_nb_r16_s::crit_exts_c_::set(types::options e) { - type_.pack(bref); + 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::dl_info_transfer_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::rrc_conn_recfg_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::rrc_conn_release_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::security_mode_cmd_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::ue_cap_enquiry_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::rrc_conn_resume_r13: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::spare2: + case types::pur_cfg_request_r16: + j.write_fieldname("purConfigurationRequest-r16"); + c.to_json(j); break; - case types::spare1: + case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c::c1_c_"); - return SRSASN_ERROR_ENCODE_FAIL; + log_invalid_choice_id(type_, "pur_cfg_request_nb_r16_s::crit_exts_c_"); } - return SRSASN_SUCCESS; + j.end_obj(); } -SRSASN_CODE dl_dcch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE pur_cfg_request_nb_r16_s::crit_exts_c_::pack(bit_ref& bref) const { - types e; - e.unpack(bref); - set(e); + type_.pack(bref); switch (type_) { - case types::dl_info_transfer_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::rrc_conn_recfg_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::rrc_conn_release_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::security_mode_cmd_r13: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::ue_cap_enquiry_r13: - HANDLE_CODE(c.get().unpack(bref)); + case types::pur_cfg_request_r16: + HANDLE_CODE(c.pack(bref)); break; - case types::rrc_conn_resume_r13: - HANDLE_CODE(c.get().unpack(bref)); + case types::crit_exts_future: break; - case types::spare2: + 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::spare1: + case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "dl_dcch_msg_type_nb_c::c1_c_"); + log_invalid_choice_id(type_, "pur_cfg_request_nb_r16_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* dl_dcch_msg_type_nb_c::c1_c_::types_opts::to_string() const -{ - static const char* options[] = {"dlInformationTransfer-r13", - "rrcConnectionReconfiguration-r13", - "rrcConnectionRelease-r13", - "securityModeCommand-r13", - "ueCapabilityEnquiry-r13", - "rrcConnectionResume-r13", - "spare2", - "spare1"}; - return convert_enum_idx(options, 8, value, "dl_dcch_msg_type_nb_c::c1_c_::types"); -} - -const char* dl_dcch_msg_type_nb_c::types_opts::to_string() const -{ - static const char* options[] = {"c1", "messageClassExtension"}; - return convert_enum_idx(options, 2, value, "dl_dcch_msg_type_nb_c::types"); -} -uint8_t dl_dcch_msg_type_nb_c::types_opts::to_number() const +const char* pur_cfg_request_nb_r16_s::crit_exts_c_::types_opts::to_string() const { - static const uint8_t options[] = {1}; - return map_enum_number(options, 1, value, "dl_dcch_msg_type_nb_c::types"); + static const char* options[] = {"purConfigurationRequest-r16", "criticalExtensionsFuture"}; + return convert_enum_idx(options, 2, value, "pur_cfg_request_nb_r16_s::crit_exts_c_::types"); } -// DL-DCCH-Message-NB ::= SEQUENCE -SRSASN_CODE dl_dcch_msg_nb_s::pack(bit_ref& bref) const +// SupportedBand-NB-v1710 ::= SEQUENCE +SRSASN_CODE supported_band_nb_v1710_s::pack(bit_ref& bref) const { - HANDLE_CODE(msg.pack(bref)); - - bref.align_bytes_zero(); + HANDLE_CODE(bref.pack(npusch_minus16_qam_r17_present, 1)); return SRSASN_SUCCESS; } -SRSASN_CODE dl_dcch_msg_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE supported_band_nb_v1710_s::unpack(cbit_ref& bref) { - HANDLE_CODE(msg.unpack(bref)); - - bref.align_bytes(); + HANDLE_CODE(bref.unpack(npusch_minus16_qam_r17_present, 1)); return SRSASN_SUCCESS; } -void dl_dcch_msg_nb_s::to_json(json_writer& j) const +void supported_band_nb_v1710_s::to_json(json_writer& j) const { - j.start_array(); j.start_obj(); - j.start_obj("DL-DCCH-Message-NB"); - j.write_fieldname("message"); - msg.to_json(j); - j.end_obj(); + if (npusch_minus16_qam_r17_present) { + j.write_str("npusch-16QAM-r17", "supported"); + } j.end_obj(); - j.end_array(); } -// SupportedBand-NB-r13 ::= SEQUENCE -SRSASN_CODE supported_band_nb_r13_s::pack(bit_ref& bref) const +// RF-Parameters-NB-v1710 ::= SEQUENCE +SRSASN_CODE rf_params_nb_v1710_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(pwr_class_nb_minus20dbm_r13_present, 1)); + HANDLE_CODE(bref.pack(supported_band_list_v1710_present, 1)); - HANDLE_CODE(pack_integer(bref, band_r13, (uint16_t)1u, (uint16_t)256u)); + if (supported_band_list_v1710_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_list_v1710, 1, 64)); + } return SRSASN_SUCCESS; } -SRSASN_CODE supported_band_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE rf_params_nb_v1710_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(pwr_class_nb_minus20dbm_r13_present, 1)); + HANDLE_CODE(bref.unpack(supported_band_list_v1710_present, 1)); - HANDLE_CODE(unpack_integer(band_r13, bref, (uint16_t)1u, (uint16_t)256u)); + if (supported_band_list_v1710_present) { + HANDLE_CODE(unpack_dyn_seq_of(supported_band_list_v1710, bref, 1, 64)); + } return SRSASN_SUCCESS; } -void supported_band_nb_r13_s::to_json(json_writer& j) const +void rf_params_nb_v1710_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("band-r13", band_r13); - if (pwr_class_nb_minus20dbm_r13_present) { - j.write_str("powerClassNB-20dBm-r13", "supported"); + 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(); } -// 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"}; - 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"); -} - -// HandoverPreparationInformation-NB-Ext-r14-IEs ::= SEQUENCE -SRSASN_CODE ho_prep_info_nb_ext_r14_ies_s::pack(bit_ref& bref) const +// RRCConnectionReconfigurationComplete-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_recfg_complete_nb_r13_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(ue_radio_access_cap_info_ext_r14_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - if (ue_radio_access_cap_info_ext_r14_present) { - HANDLE_CODE(ue_radio_access_cap_info_ext_r14.pack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); } return SRSASN_SUCCESS; } -SRSASN_CODE ho_prep_info_nb_ext_r14_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_recfg_complete_nb_r13_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(ue_radio_access_cap_info_ext_r14_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - if (ue_radio_access_cap_info_ext_r14_present) { - HANDLE_CODE(ue_radio_access_cap_info_ext_r14.unpack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); } return SRSASN_SUCCESS; } -void ho_prep_info_nb_ext_r14_ies_s::to_json(json_writer& j) const +void rrc_conn_recfg_complete_nb_r13_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (ue_radio_access_cap_info_ext_r14_present) { - j.write_str("ue-RadioAccessCapabilityInfoExt-r14", ue_radio_access_cap_info_ext_r14.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"); @@ -15316,133 +21370,220 @@ void ho_prep_info_nb_ext_r14_ies_s::to_json(json_writer& j) const j.end_obj(); } -// PDCP-Parameters-NB-r13 ::= SEQUENCE -SRSASN_CODE pdcp_params_nb_r13_s::pack(bit_ref& bref) const +// RRCConnectionReconfigurationComplete-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_recfg_complete_nb_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(max_num_rohc_context_sessions_r13_present, 1)); - - HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0002, 1)); - HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0003, 1)); - HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0004, 1)); - HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0006, 1)); - HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0102, 1)); - HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0103, 1)); - HANDLE_CODE(bref.pack(supported_rohc_profiles_r13.profile0x0104, 1)); - if (max_num_rohc_context_sessions_r13_present) { - HANDLE_CODE(max_num_rohc_context_sessions_r13.pack(bref)); - } + 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 pdcp_params_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_recfg_complete_nb_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(max_num_rohc_context_sessions_r13_present, 1)); - - HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0002, 1)); - HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0003, 1)); - HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0004, 1)); - HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0006, 1)); - HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0102, 1)); - HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0103, 1)); - HANDLE_CODE(bref.unpack(supported_rohc_profiles_r13.profile0x0104, 1)); - if (max_num_rohc_context_sessions_r13_present) { - HANDLE_CODE(max_num_rohc_context_sessions_r13.unpack(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 pdcp_params_nb_r13_s::to_json(json_writer& j) const +void rrc_conn_recfg_complete_nb_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("supportedROHC-Profiles-r13"); - j.start_obj(); - j.write_bool("profile0x0002", supported_rohc_profiles_r13.profile0x0002); - j.write_bool("profile0x0003", supported_rohc_profiles_r13.profile0x0003); - j.write_bool("profile0x0004", supported_rohc_profiles_r13.profile0x0004); - j.write_bool("profile0x0006", supported_rohc_profiles_r13.profile0x0006); - j.write_bool("profile0x0102", supported_rohc_profiles_r13.profile0x0102); - j.write_bool("profile0x0103", supported_rohc_profiles_r13.profile0x0103); - j.write_bool("profile0x0104", supported_rohc_profiles_r13.profile0x0104); + j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); j.end_obj(); - if (max_num_rohc_context_sessions_r13_present) { - j.write_str("maxNumberROHC-ContextSessions-r13", max_num_rohc_context_sessions_r13.to_string()); +} + +void rrc_conn_recfg_complete_nb_s::crit_exts_c_::set(types::options e) +{ + type_ = e; +} +rrc_conn_recfg_complete_nb_r13_ies_s& rrc_conn_recfg_complete_nb_s::crit_exts_c_::set_rrc_conn_recfg_complete_r13() +{ + set(types::rrc_conn_recfg_complete_r13); + return c; +} +void rrc_conn_recfg_complete_nb_s::crit_exts_c_::set_crit_exts_future() +{ + set(types::crit_exts_future); +} +void rrc_conn_recfg_complete_nb_s::crit_exts_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::rrc_conn_recfg_complete_r13: + j.write_fieldname("rrcConnectionReconfigurationComplete-r13"); + c.to_json(j); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_recfg_complete_nb_s::crit_exts_c_"); } j.end_obj(); } +SRSASN_CODE rrc_conn_recfg_complete_nb_s::crit_exts_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::rrc_conn_recfg_complete_r13: + HANDLE_CODE(c.pack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_recfg_complete_nb_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_recfg_complete_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::rrc_conn_recfg_complete_r13: + HANDLE_CODE(c.unpack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_recfg_complete_nb_s::crit_exts_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} -const char* pdcp_params_nb_r13_s::max_num_rohc_context_sessions_r13_opts::to_string() const +const char* rrc_conn_recfg_complete_nb_s::crit_exts_c_::types_opts::to_string() const { - static const char* options[] = {"cs2", "cs4", "cs8", "cs12"}; - return convert_enum_idx(options, 4, value, "pdcp_params_nb_r13_s::max_num_rohc_context_sessions_r13_e_"); + static const char* options[] = {"rrcConnectionReconfigurationComplete-r13", "criticalExtensionsFuture"}; + return convert_enum_idx(options, 2, value, "rrc_conn_recfg_complete_nb_s::crit_exts_c_::types"); } -uint8_t pdcp_params_nb_r13_s::max_num_rohc_context_sessions_r13_opts::to_number() const + +// RRCConnectionReestablishmentComplete-NB-v1710-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_reest_complete_nb_v1710_ies_s::pack(bit_ref& bref) const { - static const uint8_t options[] = {2, 4, 8, 12}; - return map_enum_number(options, 4, value, "pdcp_params_nb_r13_s::max_num_rohc_context_sessions_r13_e_"); + 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)); -// PhyLayerParameters-NB-r13 ::= SEQUENCE -SRSASN_CODE phy_layer_params_nb_r13_s::pack(bit_ref& bref) const + 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 { - HANDLE_CODE(bref.pack(multi_tone_r13_present, 1)); - HANDLE_CODE(bref.pack(multi_carrier_r13_present, 1)); + 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 phy_layer_params_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_reest_complete_nb_v1610_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(multi_tone_r13_present, 1)); - HANDLE_CODE(bref.unpack(multi_carrier_r13_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(non_crit_ext_present, 1)); + + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } return SRSASN_SUCCESS; } -void phy_layer_params_nb_r13_s::to_json(json_writer& j) const +void rrc_conn_reest_complete_nb_v1610_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (multi_tone_r13_present) { - j.write_str("multiTone-r13", "supported"); + if (rlf_info_available_r16_present) { + j.write_str("rlf-InfoAvailable-r16", "true"); } - if (multi_carrier_r13_present) { - j.write_str("multiCarrier-r13", "supported"); + 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(); } -// RF-Parameters-NB-r13 ::= SEQUENCE -SRSASN_CODE rf_params_nb_r13_s::pack(bit_ref& bref) const +// RRCConnectionReestablishmentComplete-NB-v1470-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_reest_complete_nb_v1470_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(multi_ns_pmax_r13_present, 1)); + HANDLE_CODE(bref.pack(meas_result_serv_cell_r14_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_list_r13, 1, 64)); + 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; } -SRSASN_CODE rf_params_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_reest_complete_nb_v1470_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(multi_ns_pmax_r13_present, 1)); + HANDLE_CODE(bref.unpack(meas_result_serv_cell_r14_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - HANDLE_CODE(unpack_dyn_seq_of(supported_band_list_r13, bref, 1, 64)); + 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; } -void rf_params_nb_r13_s::to_json(json_writer& j) const +void rrc_conn_reest_complete_nb_v1470_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.start_array("supportedBandList-r13"); - for (const auto& e1 : supported_band_list_r13) { - e1.to_json(j); + if (meas_result_serv_cell_r14_present) { + j.write_fieldname("measResultServCell-r14"); + meas_result_serv_cell_r14.to_json(j); } - j.end_array(); - if (multi_ns_pmax_r13_present) { - j.write_str("multiNS-Pmax-r13", "supported"); + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); } j.end_obj(); } -// HandoverPreparationInformation-NB-v1380-IEs ::= SEQUENCE -SRSASN_CODE ho_prep_info_nb_v1380_ies_s::pack(bit_ref& bref) const +// RRCConnectionReestablishmentComplete-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_reest_complete_nb_r13_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)); @@ -15456,7 +21597,7 @@ SRSASN_CODE ho_prep_info_nb_v1380_ies_s::pack(bit_ref& bref) const return SRSASN_SUCCESS; } -SRSASN_CODE ho_prep_info_nb_v1380_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_reest_complete_nb_r13_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)); @@ -15470,7 +21611,7 @@ SRSASN_CODE ho_prep_info_nb_v1380_ies_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void ho_prep_info_nb_v1380_ies_s::to_json(json_writer& j) const +void rrc_conn_reest_complete_nb_r13_ies_s::to_json(json_writer& j) const { j.start_obj(); if (late_non_crit_ext_present) { @@ -15483,187 +21624,307 @@ void ho_prep_info_nb_v1380_ies_s::to_json(json_writer& j) const j.end_obj(); } -// RRM-Config-NB ::= SEQUENCE -SRSASN_CODE rrm_cfg_nb_s::pack(bit_ref& bref) const +// RRCConnectionReestablishmentComplete-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_reest_complete_nb_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(ue_inactive_time_present, 1)); + HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); + HANDLE_CODE(crit_exts.pack(bref)); - if (ue_inactive_time_present) { - HANDLE_CODE(ue_inactive_time.pack(bref)); - } + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_reest_complete_nb_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; } -SRSASN_CODE rrm_cfg_nb_s::unpack(cbit_ref& bref) +void rrc_conn_reest_complete_nb_s::to_json(json_writer& j) const { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(ue_inactive_time_present, 1)); + j.start_obj(); + j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); + j.end_obj(); +} - if (ue_inactive_time_present) { - HANDLE_CODE(ue_inactive_time.unpack(bref)); +void rrc_conn_reest_complete_nb_s::crit_exts_c_::set(types::options e) +{ + type_ = e; +} +rrc_conn_reest_complete_nb_r13_ies_s& rrc_conn_reest_complete_nb_s::crit_exts_c_::set_rrc_conn_reest_complete_r13() +{ + set(types::rrc_conn_reest_complete_r13); + return c; +} +void rrc_conn_reest_complete_nb_s::crit_exts_c_::set_crit_exts_future() +{ + set(types::crit_exts_future); +} +void rrc_conn_reest_complete_nb_s::crit_exts_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::rrc_conn_reest_complete_r13: + j.write_fieldname("rrcConnectionReestablishmentComplete-r13"); + c.to_json(j); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reest_complete_nb_s::crit_exts_c_"); + } + j.end_obj(); +} +SRSASN_CODE rrc_conn_reest_complete_nb_s::crit_exts_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::rrc_conn_reest_complete_r13: + HANDLE_CODE(c.pack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reest_complete_nb_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_reest_complete_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::rrc_conn_reest_complete_r13: + HANDLE_CODE(c.unpack(bref)); + break; + case types::crit_exts_future: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reest_complete_nb_s::crit_exts_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +const char* rrc_conn_reest_complete_nb_s::crit_exts_c_::types_opts::to_string() const +{ + static const char* options[] = {"rrcConnectionReestablishmentComplete-r13", "criticalExtensionsFuture"}; + return convert_enum_idx(options, 2, value, "rrc_conn_reest_complete_nb_s::crit_exts_c_::types"); +} + +// CQI-NPDCCH-Short-NB-r14 ::= ENUMERATED +const char* cqi_npdcch_short_nb_r14_opts::to_string() const +{ + static const char* options[] = {"noMeasurements", "candidateRep-1", "candidateRep-2", "candidateRep-3"}; + return convert_enum_idx(options, 4, value, "cqi_npdcch_short_nb_r14_e"); +} +int8_t cqi_npdcch_short_nb_r14_opts::to_number() const +{ + switch (value) { + case candidate_rep_minus1: + return -1; + case candidate_rep_minus2: + return -2; + case candidate_rep_minus3: + return -3; + default: + invalid_enum_number(value, "cqi_npdcch_short_nb_r14_e"); } + 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; } -void rrm_cfg_nb_s::to_json(json_writer& j) const +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(); - if (ue_inactive_time_present) { - j.write_str("ue-InactiveTime", ue_inactive_time.to_string()); - } + 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(); } -const char* rrm_cfg_nb_s::ue_inactive_time_opts::to_string() const +// ReestablishmentCause-NB-r13 ::= ENUMERATED +const char* reest_cause_nb_r13_opts::to_string() const { - static const char* options[] = { - "s1", "s2", "s3", "s5", "s7", "s10", "s15", "s20", "s25", "s30", - "s40", "s50", "min1", "min1s20", "min1s40", "min2", "min2s30", "min3", "min3s30", "min4", - "min5", "min6", "min7", "min8", "min9", "min10", "min12", "min14", "min17", "min20", - "min24", "min28", "min33", "min38", "min44", "min50", "hr1", "hr1min30", "hr2", "hr2min30", - "hr3", "hr3min30", "hr4", "hr5", "hr6", "hr8", "hr10", "hr13", "hr16", "hr20", - "day1", "day1hr12", "day2", "day2hr12", "day3", "day4", "day5", "day7", "day10", "day14", - "day19", "day24", "day30", "dayMoreThan30"}; - return convert_enum_idx(options, 64, value, "rrm_cfg_nb_s::ue_inactive_time_e_"); + 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 +{ + HANDLE_CODE(s_tmsi_r14.pack(bref)); + HANDLE_CODE(ul_nas_mac_r14.pack(bref)); + HANDLE_CODE(ul_nas_count_r14.pack(bref)); + + return SRSASN_SUCCESS; } +SRSASN_CODE reestab_ue_id_cp_nb_r14_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(s_tmsi_r14.unpack(bref)); + HANDLE_CODE(ul_nas_mac_r14.unpack(bref)); + HANDLE_CODE(ul_nas_count_r14.unpack(bref)); -// UE-Capability-NB-r13 ::= SEQUENCE -SRSASN_CODE ue_cap_nb_r13_s::pack(bit_ref& bref) const + return SRSASN_SUCCESS; +} +void reestab_ue_id_cp_nb_r14_s::to_json(json_writer& j) const { - HANDLE_CODE(bref.pack(ue_category_nb_r13_present, 1)); - HANDLE_CODE(bref.pack(multiple_drb_r13_present, 1)); - HANDLE_CODE(bref.pack(pdcp_params_r13_present, 1)); - HANDLE_CODE(bref.pack(dummy_present, 1)); + j.start_obj(); + j.write_fieldname("s-TMSI-r14"); + s_tmsi_r14.to_json(j); + j.write_str("ul-NAS-MAC-r14", ul_nas_mac_r14.to_string()); + j.write_str("ul-NAS-Count-r14", ul_nas_count_r14.to_string()); + j.end_obj(); +} - HANDLE_CODE(access_stratum_release_r13.pack(bref)); - if (pdcp_params_r13_present) { - HANDLE_CODE(pdcp_params_r13.pack(bref)); - } - HANDLE_CODE(phy_layer_params_r13.pack(bref)); - HANDLE_CODE(rf_params_r13.pack(bref)); +// RRCConnectionReestablishmentRequest-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_reest_request_nb_r13_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(ue_id_r13.pack(bref)); + HANDLE_CODE(reest_cause_r13.pack(bref)); + HANDLE_CODE(cqi_npdcch_r14.pack(bref)); + HANDLE_CODE(bref.pack(early_contention_resolution_r14, 1)); + HANDLE_CODE(spare.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE ue_cap_nb_r13_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_reest_request_nb_r13_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(ue_category_nb_r13_present, 1)); - HANDLE_CODE(bref.unpack(multiple_drb_r13_present, 1)); - HANDLE_CODE(bref.unpack(pdcp_params_r13_present, 1)); - HANDLE_CODE(bref.unpack(dummy_present, 1)); - - HANDLE_CODE(access_stratum_release_r13.unpack(bref)); - if (pdcp_params_r13_present) { - HANDLE_CODE(pdcp_params_r13.unpack(bref)); - } - HANDLE_CODE(phy_layer_params_r13.unpack(bref)); - HANDLE_CODE(rf_params_r13.unpack(bref)); + HANDLE_CODE(ue_id_r13.unpack(bref)); + HANDLE_CODE(reest_cause_r13.unpack(bref)); + HANDLE_CODE(cqi_npdcch_r14.unpack(bref)); + HANDLE_CODE(bref.unpack(early_contention_resolution_r14, 1)); + HANDLE_CODE(spare.unpack(bref)); return SRSASN_SUCCESS; } -void ue_cap_nb_r13_s::to_json(json_writer& j) const +void rrc_conn_reest_request_nb_r13_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("accessStratumRelease-r13", access_stratum_release_r13.to_string()); - if (ue_category_nb_r13_present) { - j.write_str("ue-Category-NB-r13", "nb1"); - } - if (multiple_drb_r13_present) { - j.write_str("multipleDRB-r13", "supported"); - } - if (pdcp_params_r13_present) { - j.write_fieldname("pdcp-Parameters-r13"); - pdcp_params_r13.to_json(j); - } - j.write_fieldname("phyLayerParameters-r13"); - phy_layer_params_r13.to_json(j); - j.write_fieldname("rf-Parameters-r13"); - rf_params_r13.to_json(j); - if (dummy_present) { - j.write_fieldname("dummy"); - j.start_obj(); - j.end_obj(); - } + j.write_fieldname("ue-Identity-r13"); + ue_id_r13.to_json(j); + j.write_str("reestablishmentCause-r13", reest_cause_r13.to_string()); + j.write_str("cqi-NPDCCH-r14", cqi_npdcch_r14.to_string()); + j.write_bool("earlyContentionResolution-r14", early_contention_resolution_r14); + j.write_str("spare", spare.to_string()); j.end_obj(); } -// HandoverPreparationInformation-NB-IEs ::= SEQUENCE -SRSASN_CODE ho_prep_info_nb_ies_s::pack(bit_ref& bref) const +// RRCConnectionReestablishmentRequest-NB-r14-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_reest_request_nb_r14_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(rrm_cfg_r13_present, 1)); - HANDLE_CODE(bref.pack(as_context_r13_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - HANDLE_CODE(ue_radio_access_cap_info_r13.pack(bref)); - HANDLE_CODE(as_cfg_r13.pack(bref)); - if (rrm_cfg_r13_present) { - HANDLE_CODE(rrm_cfg_r13.pack(bref)); - } - if (as_context_r13_present) { - HANDLE_CODE(as_context_r13.pack(bref)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.pack(bref)); - } + HANDLE_CODE(ue_id_r14.pack(bref)); + HANDLE_CODE(reest_cause_r14.pack(bref)); + HANDLE_CODE(cqi_npdcch_r14.pack(bref)); + HANDLE_CODE(bref.pack(early_contention_resolution_r14, 1)); + HANDLE_CODE(spare.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE ho_prep_info_nb_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_reest_request_nb_r14_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(rrm_cfg_r13_present, 1)); - HANDLE_CODE(bref.unpack(as_context_r13_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - HANDLE_CODE(ue_radio_access_cap_info_r13.unpack(bref)); - HANDLE_CODE(as_cfg_r13.unpack(bref)); - if (rrm_cfg_r13_present) { - HANDLE_CODE(rrm_cfg_r13.unpack(bref)); - } - if (as_context_r13_present) { - HANDLE_CODE(as_context_r13.unpack(bref)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); - } + HANDLE_CODE(ue_id_r14.unpack(bref)); + HANDLE_CODE(reest_cause_r14.unpack(bref)); + HANDLE_CODE(cqi_npdcch_r14.unpack(bref)); + HANDLE_CODE(bref.unpack(early_contention_resolution_r14, 1)); + HANDLE_CODE(spare.unpack(bref)); return SRSASN_SUCCESS; } -void ho_prep_info_nb_ies_s::to_json(json_writer& j) const +void rrc_conn_reest_request_nb_r14_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("ue-RadioAccessCapabilityInfo-r13"); - ue_radio_access_cap_info_r13.to_json(j); - j.write_fieldname("as-Config-r13"); - as_cfg_r13.to_json(j); - if (rrm_cfg_r13_present) { - j.write_fieldname("rrm-Config-r13"); - rrm_cfg_r13.to_json(j); - } - if (as_context_r13_present) { - j.write_fieldname("as-Context-r13"); - as_context_r13.to_json(j); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); - } + j.write_fieldname("ue-Identity-r14"); + ue_id_r14.to_json(j); + j.write_str("reestablishmentCause-r14", reest_cause_r14.to_string()); + j.write_str("cqi-NPDCCH-r14", cqi_npdcch_r14.to_string()); + j.write_bool("earlyContentionResolution-r14", early_contention_resolution_r14); + j.write_str("spare", spare.to_string()); j.end_obj(); } -// HandoverPreparationInformation-NB ::= SEQUENCE -SRSASN_CODE ho_prep_info_nb_s::pack(bit_ref& bref) const +// RRCConnectionReestablishmentRequest-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_reest_request_nb_s::pack(bit_ref& bref) const { HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE ho_prep_info_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_reest_request_nb_s::unpack(cbit_ref& bref) { HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void ho_prep_info_nb_s::to_json(json_writer& j) const +void rrc_conn_reest_request_nb_s::to_json(json_writer& j) const { j.start_obj(); j.write_fieldname("criticalExtensions"); @@ -15671,541 +21932,749 @@ void ho_prep_info_nb_s::to_json(json_writer& j) const j.end_obj(); } -void ho_prep_info_nb_s::crit_exts_c_::set(types::options e) +void rrc_conn_reest_request_nb_s::crit_exts_c_::destroy_() +{ + switch (type_) { + case types::rrc_conn_reest_request_r13: + c.destroy(); + break; + case types::later: + c.destroy(); + break; + default: + break; + } +} +void rrc_conn_reest_request_nb_s::crit_exts_c_::set(types::options e) { + destroy_(); type_ = e; + switch (type_) { + case types::rrc_conn_reest_request_r13: + c.init(); + break; + case types::later: + c.init(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); + } } -ho_prep_info_nb_s::crit_exts_c_::c1_c_& ho_prep_info_nb_s::crit_exts_c_::set_c1() +rrc_conn_reest_request_nb_s::crit_exts_c_::crit_exts_c_(const rrc_conn_reest_request_nb_s::crit_exts_c_& other) { - set(types::c1); - return c; + type_ = other.type(); + switch (type_) { + case types::rrc_conn_reest_request_r13: + c.init(other.c.get()); + break; + case types::later: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); + } } -void ho_prep_info_nb_s::crit_exts_c_::set_crit_exts_future() +rrc_conn_reest_request_nb_s::crit_exts_c_& +rrc_conn_reest_request_nb_s::crit_exts_c_::operator=(const rrc_conn_reest_request_nb_s::crit_exts_c_& other) { - set(types::crit_exts_future); + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::rrc_conn_reest_request_r13: + c.set(other.c.get()); + break; + case types::later: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); + } + + return *this; } -void ho_prep_info_nb_s::crit_exts_c_::to_json(json_writer& j) const +rrc_conn_reest_request_nb_r13_ies_s& rrc_conn_reest_request_nb_s::crit_exts_c_::set_rrc_conn_reest_request_r13() +{ + set(types::rrc_conn_reest_request_r13); + return c.get(); +} +rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_& rrc_conn_reest_request_nb_s::crit_exts_c_::set_later() +{ + set(types::later); + return c.get(); +} +void rrc_conn_reest_request_nb_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); + case types::rrc_conn_reest_request_r13: + j.write_fieldname("rrcConnectionReestablishmentRequest-r13"); + c.get().to_json(j); break; - case types::crit_exts_future: + case types::later: + j.write_fieldname("later"); + c.get().to_json(j); break; default: - log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE ho_prep_info_nb_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE rrc_conn_reest_request_nb_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::c1: - HANDLE_CODE(c.pack(bref)); + case types::rrc_conn_reest_request_r13: + HANDLE_CODE(c.get().pack(bref)); break; - case types::crit_exts_future: + case types::later: + HANDLE_CODE(c.get().pack(bref)); break; default: - log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE ho_prep_info_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_reest_request_nb_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)); + case types::rrc_conn_reest_request_r13: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::crit_exts_future: + case types::later: + HANDLE_CODE(c.get().unpack(bref)); break; default: - log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -void ho_prep_info_nb_s::crit_exts_c_::c1_c_::set(types::options e) -{ - type_ = e; -} -ho_prep_info_nb_ies_s& ho_prep_info_nb_s::crit_exts_c_::c1_c_::set_ho_prep_info_r13() +void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::destroy_() { - set(types::ho_prep_info_r13); - return c; -} -void ho_prep_info_nb_s::crit_exts_c_::c1_c_::set_spare3() -{ - set(types::spare3); -} -void ho_prep_info_nb_s::crit_exts_c_::c1_c_::set_spare2() -{ - set(types::spare2); -} -void ho_prep_info_nb_s::crit_exts_c_::c1_c_::set_spare1() -{ - set(types::spare1); + switch (type_) { + case types::rrc_conn_reest_request_r14: + c.destroy(); + break; + case types::later: + c.destroy(); + break; + default: + break; + } } -void ho_prep_info_nb_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const +void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::set(types::options e) { - j.start_obj(); + destroy_(); + type_ = e; switch (type_) { - case types::ho_prep_info_r13: - j.write_fieldname("handoverPreparationInformation-r13"); - c.to_json(j); - break; - case types::spare3: + case types::rrc_conn_reest_request_r14: + c.init(); break; - case types::spare2: + case types::later: + c.init(); break; - case types::spare1: + case types::nulltype: break; default: - log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_::c1_c_"); + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_"); } - j.end_obj(); } -SRSASN_CODE ho_prep_info_nb_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const +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_.pack(bref); + type_ = other.type(); switch (type_) { - case types::ho_prep_info_r13: - HANDLE_CODE(c.pack(bref)); - break; - case types::spare3: + case types::rrc_conn_reest_request_r14: + c.init(other.c.get()); break; - case types::spare2: + case types::later: + c.init(other.c.get()); break; - case types::spare1: + case types::nulltype: break; default: - log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_::c1_c_"); - return SRSASN_ERROR_ENCODE_FAIL; + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_"); } - return SRSASN_SUCCESS; } -SRSASN_CODE ho_prep_info_nb_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref) +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) { - types e; - e.unpack(bref); - set(e); + if (this == &other) { + return *this; + } + set(other.type()); switch (type_) { - case types::ho_prep_info_r13: - HANDLE_CODE(c.unpack(bref)); - break; - case types::spare3: + case types::rrc_conn_reest_request_r14: + c.set(other.c.get()); break; - case types::spare2: + case types::later: + c.set(other.c.get()); break; - case types::spare1: + case types::nulltype: break; default: - log_invalid_choice_id(type_, "ho_prep_info_nb_s::crit_exts_c_::c1_c_"); - return SRSASN_ERROR_DECODE_FAIL; + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_"); } - return SRSASN_SUCCESS; -} - -const char* ho_prep_info_nb_s::crit_exts_c_::c1_c_::types_opts::to_string() const -{ - static const char* options[] = {"handoverPreparationInformation-r13", "spare3", "spare2", "spare1"}; - 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 -{ - 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(); + return *this; } - -// PagingRecord-NB-r13 ::= SEQUENCE -SRSASN_CODE paging_record_nb_r13_s::pack(bit_ref& bref) const +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() { - bref.pack(ext, 1); - HANDLE_CODE(ue_id_r13.pack(bref)); - - return SRSASN_SUCCESS; + set(types::rrc_conn_reest_request_r14); + return c.get(); } -SRSASN_CODE paging_record_nb_r13_s::unpack(cbit_ref& bref) +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() { - bref.unpack(ext, 1); - HANDLE_CODE(ue_id_r13.unpack(bref)); - - return SRSASN_SUCCESS; + set(types::later); + return c.get(); } -void paging_record_nb_r13_s::to_json(json_writer& j) const +void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("ue-Identity-r13"); - ue_id_r13.to_json(j); + switch (type_) { + case types::rrc_conn_reest_request_r14: + j.write_fieldname("rrcConnectionReestablishmentRequest-r14"); + c.get().to_json(j); + break; + case types::later: + j.write_fieldname("later"); + c.get().to_json(j); + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_"); + } j.end_obj(); } - -// Paging-NB ::= SEQUENCE -SRSASN_CODE paging_nb_s::pack(bit_ref& bref) const +SRSASN_CODE rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(paging_record_list_r13_present, 1)); - HANDLE_CODE(bref.pack(sys_info_mod_r13_present, 1)); - HANDLE_CODE(bref.pack(sys_info_mod_e_drx_r13_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - if (paging_record_list_r13_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, paging_record_list_r13, 1, 16)); + type_.pack(bref); + switch (type_) { + case types::rrc_conn_reest_request_r14: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::later: + HANDLE_CODE(c.get().pack(bref)); + break; + default: + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_"); + return SRSASN_ERROR_ENCODE_FAIL; } - return SRSASN_SUCCESS; } -SRSASN_CODE paging_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(paging_record_list_r13_present, 1)); - HANDLE_CODE(bref.unpack(sys_info_mod_r13_present, 1)); - HANDLE_CODE(bref.unpack(sys_info_mod_e_drx_r13_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - if (paging_record_list_r13_present) { - HANDLE_CODE(unpack_dyn_seq_of(paging_record_list_r13, bref, 1, 16)); + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::rrc_conn_reest_request_r14: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::later: + HANDLE_CODE(c.get().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 paging_nb_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (paging_record_list_r13_present) { - j.start_array("pagingRecordList-r13"); - for (const auto& e1 : paging_record_list_r13) { - e1.to_json(j); - } - j.end_array(); - } - if (sys_info_mod_r13_present) { - j.write_str("systemInfoModification-r13", "true"); - } - if (sys_info_mod_e_drx_r13_present) { - j.write_str("systemInfoModification-eDRX-r13", "true"); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - j.start_obj(); - j.end_obj(); - } - j.end_obj(); -} -// PCCH-MessageType-NB ::= CHOICE -void pcch_msg_type_nb_c::set(types::options e) +void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__::set(types::options e) { type_ = e; } -pcch_msg_type_nb_c::c1_c_& pcch_msg_type_nb_c::set_c1() +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::c1); + set(types::rrc_conn_reest_request_r16); return c; } -void pcch_msg_type_nb_c::set_msg_class_ext() +void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__::set_crit_exts_future() { - set(types::msg_class_ext); + set(types::crit_exts_future); } -void pcch_msg_type_nb_c::to_json(json_writer& j) const +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::c1: - j.write_fieldname("c1"); + case types::rrc_conn_reest_request_r16: + j.write_fieldname("rrcConnectionReestablishmentRequest-r16"); c.to_json(j); break; - case types::msg_class_ext: + case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "pcch_msg_type_nb_c"); + log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__"); } j.end_obj(); } -SRSASN_CODE pcch_msg_type_nb_c::pack(bit_ref& bref) const +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::c1: + case types::rrc_conn_reest_request_r16: HANDLE_CODE(c.pack(bref)); break; - case types::msg_class_ext: + case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "pcch_msg_type_nb_c"); + 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 pcch_msg_type_nb_c::unpack(cbit_ref& bref) +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::c1: + case types::rrc_conn_reest_request_r16: HANDLE_CODE(c.unpack(bref)); break; - case types::msg_class_ext: + case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "pcch_msg_type_nb_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; } -void pcch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const +const char* rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::later_c__::types_opts::to_string() const { - j.start_obj(); - j.write_fieldname("paging-r13"); - c.to_json(j); - j.end_obj(); + 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", "later"}; + return convert_enum_idx(options, 2, value, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::types"); +} + +const char* rrc_conn_reest_request_nb_s::crit_exts_c_::types_opts::to_string() const +{ + static const char* options[] = {"rrcConnectionReestablishmentRequest-r13", "later"}; + return convert_enum_idx(options, 2, value, "rrc_conn_reest_request_nb_s::crit_exts_c_::types"); } -SRSASN_CODE pcch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const + +// RRCConnectionRequest-5GC-NB-r16-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_request_minus5_gc_nb_r16_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(c.pack(bref)); + 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 pcch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_request_minus5_gc_nb_r16_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(c.unpack(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; } - -const char* pcch_msg_type_nb_c::c1_c_::types_opts::to_string() const +void rrc_conn_request_minus5_gc_nb_r16_ies_s::to_json(json_writer& j) const { - static const char* options[] = {"paging-r13"}; - return convert_enum_idx(options, 1, value, "pcch_msg_type_nb_c::c1_c_::types"); + 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* pcch_msg_type_nb_c::types_opts::to_string() const +const char* rrc_conn_request_minus5_gc_nb_r16_ies_s::establishment_cause_r16_opts::to_string() const { - static const char* options[] = {"c1", "messageClassExtension"}; - return convert_enum_idx(options, 2, value, "pcch_msg_type_nb_c::types"); + 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_"); } -uint8_t pcch_msg_type_nb_c::types_opts::to_number() const + +// EstablishmentCause-NB-r13 ::= ENUMERATED +const char* establishment_cause_nb_r13_opts::to_string() const { - static const uint8_t options[] = {1}; - return map_enum_number(options, 1, value, "pcch_msg_type_nb_c::types"); + static const char* options[] = {"mt-Access", + "mo-Signalling", + "mo-Data", + "mo-ExceptionData", + "delayTolerantAccess-v1330", + "mt-EDT-v1610", + "spare2", + "spare1"}; + return convert_enum_idx(options, 8, value, "establishment_cause_nb_r13_e"); } -// PCCH-Message-NB ::= SEQUENCE -SRSASN_CODE pcch_msg_nb_s::pack(bit_ref& bref) const +// RRCConnectionRequest-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_request_nb_r13_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(msg.pack(bref)); + HANDLE_CODE(bref.pack(multi_tone_support_r13_present, 1)); + HANDLE_CODE(bref.pack(multi_carrier_support_r13_present, 1)); - bref.align_bytes_zero(); + HANDLE_CODE(ue_id_r13.pack(bref)); + HANDLE_CODE(establishment_cause_r13.pack(bref)); + HANDLE_CODE(bref.pack(early_contention_resolution_r14, 1)); + HANDLE_CODE(cqi_npdcch_r14.pack(bref)); + HANDLE_CODE(spare.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE pcch_msg_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_request_nb_r13_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(msg.unpack(bref)); + HANDLE_CODE(bref.unpack(multi_tone_support_r13_present, 1)); + HANDLE_CODE(bref.unpack(multi_carrier_support_r13_present, 1)); - bref.align_bytes(); + HANDLE_CODE(ue_id_r13.unpack(bref)); + HANDLE_CODE(establishment_cause_r13.unpack(bref)); + HANDLE_CODE(bref.unpack(early_contention_resolution_r14, 1)); + HANDLE_CODE(cqi_npdcch_r14.unpack(bref)); + HANDLE_CODE(spare.unpack(bref)); return SRSASN_SUCCESS; } -void pcch_msg_nb_s::to_json(json_writer& j) const +void rrc_conn_request_nb_r13_ies_s::to_json(json_writer& j) const { - j.start_array(); j.start_obj(); - j.start_obj("PCCH-Message-NB"); - j.write_fieldname("message"); - msg.to_json(j); - j.end_obj(); + j.write_fieldname("ue-Identity-r13"); + ue_id_r13.to_json(j); + j.write_str("establishmentCause-r13", establishment_cause_r13.to_string()); + if (multi_tone_support_r13_present) { + j.write_str("multiToneSupport-r13", "true"); + } + if (multi_carrier_support_r13_present) { + j.write_str("multiCarrierSupport-r13", "true"); + } + j.write_bool("earlyContentionResolution-r14", early_contention_resolution_r14); + j.write_str("cqi-NPDCCH-r14", cqi_npdcch_r14.to_string()); + j.write_str("spare", spare.to_string()); j.end_obj(); - j.end_array(); } -// PCI-ARFCN-NB-r14 ::= SEQUENCE -SRSASN_CODE pci_arfcn_nb_r14_s::pack(bit_ref& bref) const +// RRCConnectionRequest-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_request_nb_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(carrier_freq_r14_present, 1)); - - HANDLE_CODE(pack_integer(bref, pci_r14, (uint16_t)0u, (uint16_t)503u)); - if (carrier_freq_r14_present) { - HANDLE_CODE(carrier_freq_r14.pack(bref)); - } + HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE pci_arfcn_nb_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_request_nb_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(carrier_freq_r14_present, 1)); - - HANDLE_CODE(unpack_integer(pci_r14, bref, (uint16_t)0u, (uint16_t)503u)); - if (carrier_freq_r14_present) { - HANDLE_CODE(carrier_freq_r14.unpack(bref)); - } + HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void pci_arfcn_nb_r14_s::to_json(json_writer& j) const +void rrc_conn_request_nb_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("physCellId-r14", pci_r14); - if (carrier_freq_r14_present) { - j.write_fieldname("carrierFreq-r14"); - carrier_freq_r14.to_json(j); - } + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); j.end_obj(); } -// RRCConnectionReconfigurationComplete-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_recfg_complete_nb_r13_ies_s::pack(bit_ref& bref) const +void rrc_conn_request_nb_s::crit_exts_c_::destroy_() { - 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)); + switch (type_) { + case types::rrc_conn_request_r13: + c.destroy(); + break; + case types::later: + c.destroy(); + break; + default: + break; } - - return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_recfg_complete_nb_r13_ies_s::unpack(cbit_ref& bref) +void rrc_conn_request_nb_s::crit_exts_c_::set(types::options e) { - 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)); + destroy_(); + type_ = e; + switch (type_) { + case types::rrc_conn_request_r13: + c.init(); + break; + case types::later: + c.init(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_"); } - - return SRSASN_SUCCESS; } -void rrc_conn_recfg_complete_nb_r13_ies_s::to_json(json_writer& j) const +rrc_conn_request_nb_s::crit_exts_c_::crit_exts_c_(const rrc_conn_request_nb_s::crit_exts_c_& other) { - j.start_obj(); - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - j.start_obj(); - j.end_obj(); + type_ = other.type(); + switch (type_) { + case types::rrc_conn_request_r13: + c.init(other.c.get()); + break; + case types::later: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_"); } - j.end_obj(); } - -// RRCConnectionReconfigurationComplete-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_recfg_complete_nb_s::pack(bit_ref& bref) const +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) { - HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); - HANDLE_CODE(crit_exts.pack(bref)); + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::rrc_conn_request_r13: + c.set(other.c.get()); + break; + case types::later: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_"); + } - return SRSASN_SUCCESS; + return *this; } -SRSASN_CODE rrc_conn_recfg_complete_nb_s::unpack(cbit_ref& bref) +rrc_conn_request_nb_r13_ies_s& rrc_conn_request_nb_s::crit_exts_c_::set_rrc_conn_request_r13() { - HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); - HANDLE_CODE(crit_exts.unpack(bref)); - - return SRSASN_SUCCESS; + set(types::rrc_conn_request_r13); + return c.get(); } -void rrc_conn_recfg_complete_nb_s::to_json(json_writer& j) const +rrc_conn_request_nb_s::crit_exts_c_::later_c_& rrc_conn_request_nb_s::crit_exts_c_::set_later() +{ + set(types::later); + return c.get(); +} +void rrc_conn_request_nb_s::crit_exts_c_::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); + switch (type_) { + case types::rrc_conn_request_r13: + j.write_fieldname("rrcConnectionRequest-r13"); + c.get().to_json(j); + break; + case types::later: + j.write_fieldname("later"); + c.get().to_json(j); + break; + default: + log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_"); + } j.end_obj(); } +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.get().pack(bref)); + break; + case types::later: + HANDLE_CODE(c.get().pack(bref)); + break; + default: + log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_request_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::rrc_conn_request_r13: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::later: + HANDLE_CODE(c.get().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_recfg_complete_nb_s::crit_exts_c_::set(types::options e) +void rrc_conn_request_nb_s::crit_exts_c_::later_c_::set(types::options e) { type_ = e; } -rrc_conn_recfg_complete_nb_r13_ies_s& rrc_conn_recfg_complete_nb_s::crit_exts_c_::set_rrc_conn_recfg_complete_r13() +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_recfg_complete_r13); + set(types::rrc_conn_request_r16); return c; } -void rrc_conn_recfg_complete_nb_s::crit_exts_c_::set_crit_exts_future() +void rrc_conn_request_nb_s::crit_exts_c_::later_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void rrc_conn_recfg_complete_nb_s::crit_exts_c_::to_json(json_writer& j) const +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_recfg_complete_r13: - j.write_fieldname("rrcConnectionReconfigurationComplete-r13"); + 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_recfg_complete_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_::later_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_recfg_complete_nb_s::crit_exts_c_::pack(bit_ref& bref) const +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_recfg_complete_r13: + 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_recfg_complete_nb_s::crit_exts_c_"); + 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_recfg_complete_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +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_recfg_complete_r13: + 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_recfg_complete_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_recfg_complete_nb_s::crit_exts_c_::types_opts::to_string() const +const char* rrc_conn_request_nb_s::crit_exts_c_::later_c_::types_opts::to_string() const { - static const char* options[] = {"rrcConnectionReconfigurationComplete-r13", "criticalExtensionsFuture"}; - return convert_enum_idx(options, 2, value, "rrc_conn_recfg_complete_nb_s::crit_exts_c_::types"); + 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"); } -// RRCConnectionReestablishmentComplete-NB-v1470-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_reest_complete_nb_v1470_ies_s::pack(bit_ref& bref) const +const char* rrc_conn_request_nb_s::crit_exts_c_::types_opts::to_string() const +{ + 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 { HANDLE_CODE(bref.pack(meas_result_serv_cell_r14_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); @@ -16213,10 +22682,13 @@ 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; } -SRSASN_CODE rrc_conn_reest_complete_nb_v1470_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_complete_nb_v1470_ies_s::unpack(cbit_ref& bref) { HANDLE_CODE(bref.unpack(meas_result_serv_cell_r14_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); @@ -16224,10 +22696,13 @@ 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; } -void rrc_conn_reest_complete_nb_v1470_ies_s::to_json(json_writer& j) const +void rrc_conn_resume_complete_nb_v1470_ies_s::to_json(json_writer& j) const { j.start_obj(); if (meas_result_serv_cell_r14_present) { @@ -16236,18 +22711,25 @@ 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(); } -// RRCConnectionReestablishmentComplete-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_reest_complete_nb_r13_ies_s::pack(bit_ref& bref) const +// RRCConnectionResumeComplete-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_resume_complete_nb_r13_ies_s::pack(bit_ref& bref) const { + HANDLE_CODE(bref.pack(sel_plmn_id_r13_present, 1)); + HANDLE_CODE(bref.pack(ded_info_nas_r13_present, 1)); HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + if (sel_plmn_id_r13_present) { + HANDLE_CODE(pack_integer(bref, sel_plmn_id_r13, (uint8_t)1u, (uint8_t)6u)); + } + if (ded_info_nas_r13_present) { + HANDLE_CODE(ded_info_nas_r13.pack(bref)); + } if (late_non_crit_ext_present) { HANDLE_CODE(late_non_crit_ext.pack(bref)); } @@ -16257,11 +22739,19 @@ SRSASN_CODE rrc_conn_reest_complete_nb_r13_ies_s::pack(bit_ref& bref) const return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reest_complete_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_complete_nb_r13_ies_s::unpack(cbit_ref& bref) { + HANDLE_CODE(bref.unpack(sel_plmn_id_r13_present, 1)); + HANDLE_CODE(bref.unpack(ded_info_nas_r13_present, 1)); HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + if (sel_plmn_id_r13_present) { + HANDLE_CODE(unpack_integer(sel_plmn_id_r13, bref, (uint8_t)1u, (uint8_t)6u)); + } + if (ded_info_nas_r13_present) { + HANDLE_CODE(ded_info_nas_r13.unpack(bref)); + } if (late_non_crit_ext_present) { HANDLE_CODE(late_non_crit_ext.unpack(bref)); } @@ -16271,9 +22761,15 @@ SRSASN_CODE rrc_conn_reest_complete_nb_r13_ies_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void rrc_conn_reest_complete_nb_r13_ies_s::to_json(json_writer& j) const +void rrc_conn_resume_complete_nb_r13_ies_s::to_json(json_writer& j) const { j.start_obj(); + if (sel_plmn_id_r13_present) { + j.write_int("selectedPLMN-Identity-r13", sel_plmn_id_r13); + } + if (ded_info_nas_r13_present) { + j.write_str("dedicatedInfoNAS-r13", ded_info_nas_r13.to_string()); + } if (late_non_crit_ext_present) { j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); } @@ -16284,22 +22780,22 @@ void rrc_conn_reest_complete_nb_r13_ies_s::to_json(json_writer& j) const j.end_obj(); } -// RRCConnectionReestablishmentComplete-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_reest_complete_nb_s::pack(bit_ref& bref) const +// RRCConnectionResumeComplete-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_resume_complete_nb_s::pack(bit_ref& bref) const { HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reest_complete_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_complete_nb_s::unpack(cbit_ref& bref) { HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void rrc_conn_reest_complete_nb_s::to_json(json_writer& j) const +void rrc_conn_resume_complete_nb_s::to_json(json_writer& j) const { j.start_obj(); j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); @@ -16308,227 +22804,157 @@ void rrc_conn_reest_complete_nb_s::to_json(json_writer& j) const j.end_obj(); } -void rrc_conn_reest_complete_nb_s::crit_exts_c_::set(types::options e) +void rrc_conn_resume_complete_nb_s::crit_exts_c_::set(types::options e) { type_ = e; } -rrc_conn_reest_complete_nb_r13_ies_s& rrc_conn_reest_complete_nb_s::crit_exts_c_::set_rrc_conn_reest_complete_r13() +rrc_conn_resume_complete_nb_r13_ies_s& rrc_conn_resume_complete_nb_s::crit_exts_c_::set_rrc_conn_resume_complete_r13() { - set(types::rrc_conn_reest_complete_r13); + set(types::rrc_conn_resume_complete_r13); return c; } -void rrc_conn_reest_complete_nb_s::crit_exts_c_::set_crit_exts_future() +void rrc_conn_resume_complete_nb_s::crit_exts_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void rrc_conn_reest_complete_nb_s::crit_exts_c_::to_json(json_writer& j) const +void rrc_conn_resume_complete_nb_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::rrc_conn_reest_complete_r13: - j.write_fieldname("rrcConnectionReestablishmentComplete-r13"); + case types::rrc_conn_resume_complete_r13: + j.write_fieldname("rrcConnectionResumeComplete-r13"); c.to_json(j); break; case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_complete_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_complete_nb_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_reest_complete_nb_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE rrc_conn_resume_complete_nb_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::rrc_conn_reest_complete_r13: + case types::rrc_conn_resume_complete_r13: HANDLE_CODE(c.pack(bref)); break; case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_complete_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_complete_nb_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reest_complete_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_complete_nb_s::crit_exts_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::rrc_conn_reest_complete_r13: + case types::rrc_conn_resume_complete_r13: HANDLE_CODE(c.unpack(bref)); break; case types::crit_exts_future: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_complete_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_complete_nb_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* rrc_conn_reest_complete_nb_s::crit_exts_c_::types_opts::to_string() const -{ - static const char* options[] = {"rrcConnectionReestablishmentComplete-r13", "criticalExtensionsFuture"}; - 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 -{ - static const char* options[] = {"noMeasurements", "candidateRep-1", "candidateRep-2", "candidateRep-3"}; - return convert_enum_idx(options, 4, value, "cqi_npdcch_short_nb_r14_e"); -} -int8_t cqi_npdcch_short_nb_r14_opts::to_number() const -{ - switch (value) { - case candidate_rep_minus1: - return -1; - case candidate_rep_minus2: - return -2; - case candidate_rep_minus3: - return -3; - default: - invalid_enum_number(value, "cqi_npdcch_short_nb_r14_e"); - } - return 0; -} - -// ReestabUE-Identity-CP-NB-r14 ::= SEQUENCE -SRSASN_CODE reestab_ue_id_cp_nb_r14_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(s_tmsi_r14.pack(bref)); - HANDLE_CODE(ul_nas_mac_r14.pack(bref)); - HANDLE_CODE(ul_nas_count_r14.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE reestab_ue_id_cp_nb_r14_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(s_tmsi_r14.unpack(bref)); - HANDLE_CODE(ul_nas_mac_r14.unpack(bref)); - HANDLE_CODE(ul_nas_count_r14.unpack(bref)); - - return SRSASN_SUCCESS; -} -void reestab_ue_id_cp_nb_r14_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_fieldname("s-TMSI-r14"); - s_tmsi_r14.to_json(j); - j.write_str("ul-NAS-MAC-r14", ul_nas_mac_r14.to_string()); - j.write_str("ul-NAS-Count-r14", ul_nas_count_r14.to_string()); - j.end_obj(); -} - -// ReestablishmentCause-NB-r13 ::= ENUMERATED -const char* reest_cause_nb_r13_opts::to_string() const +const char* rrc_conn_resume_complete_nb_s::crit_exts_c_::types_opts::to_string() const { - static const char* options[] = {"reconfigurationFailure", "otherFailure", "spare2", "spare1"}; - return convert_enum_idx(options, 4, value, "reest_cause_nb_r13_e"); + static const char* options[] = {"rrcConnectionResumeComplete-r13", "criticalExtensionsFuture"}; + return convert_enum_idx(options, 2, value, "rrc_conn_resume_complete_nb_s::crit_exts_c_::types"); } -// RRCConnectionReestablishmentRequest-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_reest_request_nb_r13_ies_s::pack(bit_ref& bref) const +// 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(ue_id_r13.pack(bref)); - HANDLE_CODE(reest_cause_r13.pack(bref)); - HANDLE_CODE(cqi_npdcch_r14.pack(bref)); - HANDLE_CODE(bref.pack(early_contention_resolution_r14, 1)); + 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_reest_request_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_request_minus5_gc_nb_r16_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(ue_id_r13.unpack(bref)); - HANDLE_CODE(reest_cause_r13.unpack(bref)); - HANDLE_CODE(cqi_npdcch_r14.unpack(bref)); - HANDLE_CODE(bref.unpack(early_contention_resolution_r14, 1)); + 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_reest_request_nb_r13_ies_s::to_json(json_writer& j) const +void rrc_conn_resume_request_minus5_gc_nb_r16_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("ue-Identity-r13"); - ue_id_r13.to_json(j); - j.write_str("reestablishmentCause-r13", reest_cause_r13.to_string()); - j.write_str("cqi-NPDCCH-r14", cqi_npdcch_r14.to_string()); - j.write_bool("earlyContentionResolution-r14", early_contention_resolution_r14); + 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(); } -// RRCConnectionReestablishmentRequest-NB-r14-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_reest_request_nb_r14_ies_s::pack(bit_ref& bref) const +// RRCConnectionResumeRequest-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_resume_request_nb_r13_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(ue_id_r14.pack(bref)); - HANDLE_CODE(reest_cause_r14.pack(bref)); - HANDLE_CODE(cqi_npdcch_r14.pack(bref)); + HANDLE_CODE(resume_id_r13.pack(bref)); + HANDLE_CODE(short_resume_mac_i_r13.pack(bref)); + 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; } -SRSASN_CODE rrc_conn_reest_request_nb_r14_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_request_nb_r13_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(ue_id_r14.unpack(bref)); - HANDLE_CODE(reest_cause_r14.unpack(bref)); - HANDLE_CODE(cqi_npdcch_r14.unpack(bref)); + HANDLE_CODE(resume_id_r13.unpack(bref)); + HANDLE_CODE(short_resume_mac_i_r13.unpack(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; } -void rrc_conn_reest_request_nb_r14_ies_s::to_json(json_writer& j) const +void rrc_conn_resume_request_nb_r13_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("ue-Identity-r14"); - ue_id_r14.to_json(j); - j.write_str("reestablishmentCause-r14", reest_cause_r14.to_string()); - j.write_str("cqi-NPDCCH-r14", cqi_npdcch_r14.to_string()); + j.write_str("resumeID-r13", resume_id_r13.to_string()); + j.write_str("shortResumeMAC-I-r13", short_resume_mac_i_r13.to_string()); + 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(); } -// RRCConnectionReestablishmentRequest-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_reest_request_nb_s::pack(bit_ref& bref) const +// RRCConnectionResumeRequest-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_resume_request_nb_s::pack(bit_ref& bref) const { HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reest_request_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_request_nb_s::unpack(cbit_ref& bref) { HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void rrc_conn_reest_request_nb_s::to_json(json_writer& j) const +void rrc_conn_resume_request_nb_s::to_json(json_writer& j) const { j.start_obj(); j.write_fieldname("criticalExtensions"); @@ -16536,11 +22962,11 @@ void rrc_conn_reest_request_nb_s::to_json(json_writer& j) const j.end_obj(); } -void rrc_conn_reest_request_nb_s::crit_exts_c_::destroy_() +void rrc_conn_resume_request_nb_s::crit_exts_c_::destroy_() { switch (type_) { - case types::rrc_conn_reest_request_r13: - c.destroy(); + case types::rrc_conn_resume_request_r13: + c.destroy(); break; case types::later: c.destroy(); @@ -16549,13 +22975,13 @@ void rrc_conn_reest_request_nb_s::crit_exts_c_::destroy_() break; } } -void rrc_conn_reest_request_nb_s::crit_exts_c_::set(types::options e) +void rrc_conn_resume_request_nb_s::crit_exts_c_::set(types::options e) { destroy_(); type_ = e; switch (type_) { - case types::rrc_conn_reest_request_r13: - c.init(); + case types::rrc_conn_resume_request_r13: + c.init(); break; case types::later: c.init(); @@ -16563,15 +22989,15 @@ void rrc_conn_reest_request_nb_s::crit_exts_c_::set(types::options e) case types::nulltype: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_"); } } -rrc_conn_reest_request_nb_s::crit_exts_c_::crit_exts_c_(const rrc_conn_reest_request_nb_s::crit_exts_c_& other) +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_reest_request_r13: - c.init(other.c.get()); + case types::rrc_conn_resume_request_r13: + c.init(other.c.get()); break; case types::later: c.init(other.c.get()); @@ -16579,19 +23005,19 @@ rrc_conn_reest_request_nb_s::crit_exts_c_::crit_exts_c_(const rrc_conn_reest_req case types::nulltype: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_"); } } -rrc_conn_reest_request_nb_s::crit_exts_c_& -rrc_conn_reest_request_nb_s::crit_exts_c_::operator=(const rrc_conn_reest_request_nb_s::crit_exts_c_& other) +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_reest_request_r13: - c.set(other.c.get()); + case types::rrc_conn_resume_request_r13: + c.set(other.c.get()); break; case types::later: c.set(other.c.get()); @@ -16599,296 +23025,308 @@ rrc_conn_reest_request_nb_s::crit_exts_c_::operator=(const rrc_conn_reest_reques case types::nulltype: break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_"); } return *this; } -rrc_conn_reest_request_nb_r13_ies_s& rrc_conn_reest_request_nb_s::crit_exts_c_::set_rrc_conn_reest_request_r13() +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_reest_request_r13); - return c.get(); + set(types::rrc_conn_resume_request_r13); + return c.get(); } -rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_& rrc_conn_reest_request_nb_s::crit_exts_c_::set_later() +rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_& rrc_conn_resume_request_nb_s::crit_exts_c_::set_later() { set(types::later); return c.get(); } -void rrc_conn_reest_request_nb_s::crit_exts_c_::to_json(json_writer& j) const +void rrc_conn_resume_request_nb_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::rrc_conn_reest_request_r13: - j.write_fieldname("rrcConnectionReestablishmentRequest-r13"); - c.get().to_json(j); + case types::rrc_conn_resume_request_r13: + j.write_fieldname("rrcConnectionResumeRequest-r13"); + c.get().to_json(j); break; case types::later: j.write_fieldname("later"); c.get().to_json(j); break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_reest_request_nb_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE rrc_conn_resume_request_nb_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::rrc_conn_reest_request_r13: - HANDLE_CODE(c.get().pack(bref)); + case types::rrc_conn_resume_request_r13: + HANDLE_CODE(c.get().pack(bref)); break; case types::later: HANDLE_CODE(c.get().pack(bref)); break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_reest_request_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_resume_request_nb_s::crit_exts_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::rrc_conn_reest_request_r13: - HANDLE_CODE(c.get().unpack(bref)); + case types::rrc_conn_resume_request_r13: + HANDLE_CODE(c.get().unpack(bref)); break; case types::later: HANDLE_CODE(c.get().unpack(bref)); break; default: - log_invalid_choice_id(type_, "rrc_conn_reest_request_nb_s::crit_exts_c_"); + 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_reest_request_nb_s::crit_exts_c_::later_c_::set(types::options e) +void rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_::set(types::options e) { type_ = e; } -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() +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_reest_request_r14); + set(types::rrc_conn_resume_request_r16); return c; } -void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::set_crit_exts_future() +void rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::to_json(json_writer& j) const +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_reest_request_r14: - j.write_fieldname("rrcConnectionReestablishmentRequest-r14"); + 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_reest_request_nb_s::crit_exts_c_::later_c_"); + log_invalid_choice_id(type_, "rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::pack(bit_ref& bref) const +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_reest_request_r14: + 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_reest_request_nb_s::crit_exts_c_::later_c_"); + 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_reest_request_nb_s::crit_exts_c_::later_c_::unpack(cbit_ref& bref) +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_reest_request_r14: + 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_reest_request_nb_s::crit_exts_c_::later_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_reest_request_nb_s::crit_exts_c_::later_c_::types_opts::to_string() const -{ - static const char* options[] = {"rrcConnectionReestablishmentRequest-r14", "criticalExtensionsFuture"}; - return convert_enum_idx(options, 2, value, "rrc_conn_reest_request_nb_s::crit_exts_c_::later_c_::types"); -} - -const char* rrc_conn_reest_request_nb_s::crit_exts_c_::types_opts::to_string() const +const char* rrc_conn_resume_request_nb_s::crit_exts_c_::later_c_::types_opts::to_string() const { - static const char* options[] = {"rrcConnectionReestablishmentRequest-r13", "later"}; - return convert_enum_idx(options, 2, value, "rrc_conn_reest_request_nb_s::crit_exts_c_::types"); + 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"); } -// EstablishmentCause-NB-r13 ::= ENUMERATED -const char* establishment_cause_nb_r13_opts::to_string() const +const char* rrc_conn_resume_request_nb_s::crit_exts_c_::types_opts::to_string() const { - static const char* options[] = {"mt-Access", - "mo-Signalling", - "mo-Data", - "mo-ExceptionData", - "delayTolerantAccess-v1330", - "spare3", - "spare2", - "spare1"}; - return convert_enum_idx(options, 8, value, "establishment_cause_nb_r13_e"); + static const char* options[] = {"rrcConnectionResumeRequest-r13", "later"}; + return convert_enum_idx(options, 2, value, "rrc_conn_resume_request_nb_s::crit_exts_c_::types"); } -// RRCConnectionRequest-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_request_nb_r13_ies_s::pack(bit_ref& bref) const +// RRCConnectionSetupComplete-NB-v1710-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_setup_complete_nb_v1710_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(multi_tone_support_r13_present, 1)); - HANDLE_CODE(bref.pack(multi_carrier_support_r13_present, 1)); + HANDLE_CODE(bref.pack(gnss_validity_dur_r17_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - HANDLE_CODE(ue_id_r13.pack(bref)); - HANDLE_CODE(establishment_cause_r13.pack(bref)); - HANDLE_CODE(bref.pack(early_contention_resolution_r14, 1)); - HANDLE_CODE(cqi_npdcch_r14.pack(bref)); - HANDLE_CODE(spare.pack(bref)); + if (gnss_validity_dur_r17_present) { + HANDLE_CODE(gnss_validity_dur_r17.pack(bref)); + } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_request_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_setup_complete_nb_v1710_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(multi_tone_support_r13_present, 1)); - HANDLE_CODE(bref.unpack(multi_carrier_support_r13_present, 1)); + HANDLE_CODE(bref.unpack(gnss_validity_dur_r17_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - HANDLE_CODE(ue_id_r13.unpack(bref)); - HANDLE_CODE(establishment_cause_r13.unpack(bref)); - HANDLE_CODE(bref.unpack(early_contention_resolution_r14, 1)); - HANDLE_CODE(cqi_npdcch_r14.unpack(bref)); - HANDLE_CODE(spare.unpack(bref)); + if (gnss_validity_dur_r17_present) { + HANDLE_CODE(gnss_validity_dur_r17.unpack(bref)); + } return SRSASN_SUCCESS; } -void rrc_conn_request_nb_r13_ies_s::to_json(json_writer& j) const +void rrc_conn_setup_complete_nb_v1710_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("ue-Identity-r13"); - ue_id_r13.to_json(j); - j.write_str("establishmentCause-r13", establishment_cause_r13.to_string()); - if (multi_tone_support_r13_present) { - j.write_str("multiToneSupport-r13", "true"); + if (gnss_validity_dur_r17_present) { + j.write_str("gnss-ValidityDuration-r17", gnss_validity_dur_r17.to_string()); } - if (multi_carrier_support_r13_present) { - j.write_str("multiCarrierSupport-r13", "true"); + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); } - j.write_bool("earlyContentionResolution-r14", early_contention_resolution_r14); - j.write_str("cqi-NPDCCH-r14", cqi_npdcch_r14.to_string()); - j.write_str("spare", spare.to_string()); j.end_obj(); } -// RRCConnectionRequest-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_request_nb_s::pack(bit_ref& bref) const +// RRCConnectionSetupComplete-NB-v1610-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_setup_complete_nb_v1610_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(crit_exts.pack(bref)); + 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)); - return SRSASN_SUCCESS; -} -SRSASN_CODE rrc_conn_request_nb_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(crit_exts.unpack(bref)); + 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; } -void rrc_conn_request_nb_s::to_json(json_writer& j) const +SRSASN_CODE rrc_conn_setup_complete_nb_v1610_ies_s::unpack(cbit_ref& bref) { - j.start_obj(); - j.write_fieldname("criticalExtensions"); - crit_exts.to_json(j); - j.end_obj(); -} + 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)); -void rrc_conn_request_nb_s::crit_exts_c_::set(types::options e) -{ - type_ = e; -} -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; -} -void rrc_conn_request_nb_s::crit_exts_c_::set_crit_exts_future() -{ - set(types::crit_exts_future); -} -void rrc_conn_request_nb_s::crit_exts_c_::to_json(json_writer& j) const -{ - j.start_obj(); - switch (type_) { - case types::rrc_conn_request_r13: - j.write_fieldname("rrcConnectionRequest-r13"); - 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_"); + if (ng_minus5_g_s_tmsi_r16_present) { + HANDLE_CODE(ng_minus5_g_s_tmsi_r16.unpack(bref)); } - j.end_obj(); -} -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)); - break; - case types::crit_exts_future: - break; - default: - log_invalid_choice_id(type_, "rrc_conn_request_nb_s::crit_exts_c_"); - return SRSASN_ERROR_ENCODE_FAIL; + 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; } -SRSASN_CODE rrc_conn_request_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +void rrc_conn_setup_complete_nb_v1610_ies_s::to_json(json_writer& j) const { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::rrc_conn_request_r13: - 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_"); - return SRSASN_ERROR_DECODE_FAIL; + 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()); } - return SRSASN_SUCCESS; + 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_request_nb_s::crit_exts_c_::types_opts::to_string() const +const char* rrc_conn_setup_complete_nb_v1610_ies_s::guami_type_r16_opts::to_string() const { - static const char* options[] = {"rrcConnectionRequest-r13", "criticalExtensionsFuture"}; - return convert_enum_idx(options, 2, value, "rrc_conn_request_nb_s::crit_exts_c_::types"); + 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_"); } -// RRCConnectionResumeComplete-NB-v1470-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_resume_complete_nb_v1470_ies_s::pack(bit_ref& bref) const +// RRCConnectionSetupComplete-NB-v1470-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_setup_complete_nb_v1470_ies_s::pack(bit_ref& bref) const { HANDLE_CODE(bref.pack(meas_result_serv_cell_r14_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); @@ -16896,10 +23334,13 @@ 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; } -SRSASN_CODE rrc_conn_resume_complete_nb_v1470_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_setup_complete_nb_v1470_ies_s::unpack(cbit_ref& bref) { HANDLE_CODE(bref.unpack(meas_result_serv_cell_r14_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); @@ -16907,10 +23348,13 @@ 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; } -void rrc_conn_resume_complete_nb_v1470_ies_s::to_json(json_writer& j) const +void rrc_conn_setup_complete_nb_v1470_ies_s::to_json(json_writer& j) const { j.start_obj(); if (meas_result_serv_cell_r14_present) { @@ -16919,28 +23363,20 @@ 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(); } -// RRCConnectionResumeComplete-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_resume_complete_nb_r13_ies_s::pack(bit_ref& bref) const +// RRCConnectionSetupComplete-NB-v1430-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_setup_complete_nb_v1430_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(sel_plmn_id_r13_present, 1)); - HANDLE_CODE(bref.pack(ded_info_nas_r13_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(gummei_type_r14_present, 1)); + HANDLE_CODE(bref.pack(dcn_id_r14_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - if (sel_plmn_id_r13_present) { - HANDLE_CODE(pack_integer(bref, sel_plmn_id_r13, (uint8_t)1u, (uint8_t)6u)); - } - if (ded_info_nas_r13_present) { - HANDLE_CODE(ded_info_nas_r13.pack(bref)); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); + if (dcn_id_r14_present) { + HANDLE_CODE(pack_integer(bref, dcn_id_r14, (uint32_t)0u, (uint32_t)65535u)); } if (non_crit_ext_present) { HANDLE_CODE(non_crit_ext.pack(bref)); @@ -16948,21 +23384,14 @@ SRSASN_CODE rrc_conn_resume_complete_nb_r13_ies_s::pack(bit_ref& bref) const return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_resume_complete_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_setup_complete_nb_v1430_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(sel_plmn_id_r13_present, 1)); - HANDLE_CODE(bref.unpack(ded_info_nas_r13_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(gummei_type_r14_present, 1)); + HANDLE_CODE(bref.unpack(dcn_id_r14_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - if (sel_plmn_id_r13_present) { - HANDLE_CODE(unpack_integer(sel_plmn_id_r13, bref, (uint8_t)1u, (uint8_t)6u)); - } - if (ded_info_nas_r13_present) { - HANDLE_CODE(ded_info_nas_r13.unpack(bref)); - } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); + if (dcn_id_r14_present) { + HANDLE_CODE(unpack_integer(dcn_id_r14, bref, (uint32_t)0u, (uint32_t)65535u)); } if (non_crit_ext_present) { HANDLE_CODE(non_crit_ext.unpack(bref)); @@ -16970,17 +23399,14 @@ SRSASN_CODE rrc_conn_resume_complete_nb_r13_ies_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void rrc_conn_resume_complete_nb_r13_ies_s::to_json(json_writer& j) const +void rrc_conn_setup_complete_nb_v1430_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (sel_plmn_id_r13_present) { - j.write_int("selectedPLMN-Identity-r13", sel_plmn_id_r13); - } - if (ded_info_nas_r13_present) { - j.write_str("dedicatedInfoNAS-r13", ded_info_nas_r13.to_string()); + if (gummei_type_r14_present) { + j.write_str("gummei-Type-r14", "mapped"); } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + if (dcn_id_r14_present) { + j.write_int("dcn-ID-r14", dcn_id_r14); } if (non_crit_ext_present) { j.write_fieldname("nonCriticalExtension"); @@ -16989,249 +23415,227 @@ void rrc_conn_resume_complete_nb_r13_ies_s::to_json(json_writer& j) const j.end_obj(); } -// RRCConnectionResumeComplete-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_resume_complete_nb_s::pack(bit_ref& bref) const +// RRCConnectionSetupComplete-NB-r13-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_setup_complete_nb_r13_ies_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)); + HANDLE_CODE(bref.pack(s_tmsi_r13_present, 1)); + HANDLE_CODE(bref.pack(registered_mme_r13_present, 1)); + HANDLE_CODE(bref.pack(attach_without_pdn_connect_r13_present, 1)); + HANDLE_CODE(bref.pack(up_cio_t_eps_optim_r13_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - return SRSASN_SUCCESS; -} -SRSASN_CODE rrc_conn_resume_complete_nb_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)); + HANDLE_CODE(pack_integer(bref, sel_plmn_id_r13, (uint8_t)1u, (uint8_t)6u)); + if (s_tmsi_r13_present) { + HANDLE_CODE(s_tmsi_r13.pack(bref)); + } + if (registered_mme_r13_present) { + HANDLE_CODE(registered_mme_r13.pack(bref)); + } + HANDLE_CODE(ded_info_nas_r13.pack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } return SRSASN_SUCCESS; } -void rrc_conn_resume_complete_nb_s::to_json(json_writer& j) const +SRSASN_CODE rrc_conn_setup_complete_nb_r13_ies_s::unpack(cbit_ref& bref) { - j.start_obj(); - j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); - j.write_fieldname("criticalExtensions"); - crit_exts.to_json(j); - j.end_obj(); -} + HANDLE_CODE(bref.unpack(s_tmsi_r13_present, 1)); + HANDLE_CODE(bref.unpack(registered_mme_r13_present, 1)); + HANDLE_CODE(bref.unpack(attach_without_pdn_connect_r13_present, 1)); + HANDLE_CODE(bref.unpack(up_cio_t_eps_optim_r13_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); -void rrc_conn_resume_complete_nb_s::crit_exts_c_::set(types::options e) -{ - type_ = e; -} -rrc_conn_resume_complete_nb_r13_ies_s& rrc_conn_resume_complete_nb_s::crit_exts_c_::set_rrc_conn_resume_complete_r13() -{ - set(types::rrc_conn_resume_complete_r13); - return c; -} -void rrc_conn_resume_complete_nb_s::crit_exts_c_::set_crit_exts_future() -{ - set(types::crit_exts_future); -} -void rrc_conn_resume_complete_nb_s::crit_exts_c_::to_json(json_writer& j) const -{ - j.start_obj(); - switch (type_) { - case types::rrc_conn_resume_complete_r13: - j.write_fieldname("rrcConnectionResumeComplete-r13"); - c.to_json(j); - break; - case types::crit_exts_future: - break; - default: - log_invalid_choice_id(type_, "rrc_conn_resume_complete_nb_s::crit_exts_c_"); + HANDLE_CODE(unpack_integer(sel_plmn_id_r13, bref, (uint8_t)1u, (uint8_t)6u)); + if (s_tmsi_r13_present) { + HANDLE_CODE(s_tmsi_r13.unpack(bref)); } - j.end_obj(); -} -SRSASN_CODE rrc_conn_resume_complete_nb_s::crit_exts_c_::pack(bit_ref& bref) const -{ - type_.pack(bref); - switch (type_) { - case types::rrc_conn_resume_complete_r13: - HANDLE_CODE(c.pack(bref)); - break; - case types::crit_exts_future: - break; - default: - log_invalid_choice_id(type_, "rrc_conn_resume_complete_nb_s::crit_exts_c_"); - return SRSASN_ERROR_ENCODE_FAIL; + if (registered_mme_r13_present) { + HANDLE_CODE(registered_mme_r13.unpack(bref)); } - return SRSASN_SUCCESS; -} -SRSASN_CODE rrc_conn_resume_complete_nb_s::crit_exts_c_::unpack(cbit_ref& bref) -{ - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::rrc_conn_resume_complete_r13: - HANDLE_CODE(c.unpack(bref)); - break; - case types::crit_exts_future: - break; - default: - log_invalid_choice_id(type_, "rrc_conn_resume_complete_nb_s::crit_exts_c_"); - return SRSASN_ERROR_DECODE_FAIL; + HANDLE_CODE(ded_info_nas_r13.unpack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); } - return SRSASN_SUCCESS; -} - -const char* rrc_conn_resume_complete_nb_s::crit_exts_c_::types_opts::to_string() const -{ - static const char* options[] = {"rrcConnectionResumeComplete-r13", "criticalExtensionsFuture"}; - return convert_enum_idx(options, 2, value, "rrc_conn_resume_complete_nb_s::crit_exts_c_::types"); -} - -// RRCConnectionResumeRequest-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_resume_request_nb_r13_ies_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(resume_id_r13.pack(bref)); - HANDLE_CODE(short_resume_mac_i_r13.pack(bref)); - 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(spare.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE rrc_conn_resume_request_nb_r13_ies_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(resume_id_r13.unpack(bref)); - HANDLE_CODE(short_resume_mac_i_r13.unpack(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(spare.unpack(bref)); return SRSASN_SUCCESS; } -void rrc_conn_resume_request_nb_r13_ies_s::to_json(json_writer& j) const +void rrc_conn_setup_complete_nb_r13_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("resumeID-r13", resume_id_r13.to_string()); - j.write_str("shortResumeMAC-I-r13", short_resume_mac_i_r13.to_string()); - 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_str("spare", spare.to_string()); + j.write_int("selectedPLMN-Identity-r13", sel_plmn_id_r13); + if (s_tmsi_r13_present) { + j.write_fieldname("s-TMSI-r13"); + s_tmsi_r13.to_json(j); + } + if (registered_mme_r13_present) { + j.write_fieldname("registeredMME-r13"); + registered_mme_r13.to_json(j); + } + j.write_str("dedicatedInfoNAS-r13", ded_info_nas_r13.to_string()); + if (attach_without_pdn_connect_r13_present) { + j.write_str("attachWithoutPDN-Connectivity-r13", "true"); + } + if (up_cio_t_eps_optim_r13_present) { + j.write_str("up-CIoT-EPS-Optimisation-r13", "true"); + } + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } j.end_obj(); } -// RRCConnectionResumeRequest-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_resume_request_nb_s::pack(bit_ref& bref) const +// RRCConnectionSetupComplete-NB ::= SEQUENCE +SRSASN_CODE rrc_conn_setup_complete_nb_s::pack(bit_ref& bref) const { + HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_resume_request_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_setup_complete_nb_s::unpack(cbit_ref& bref) { + HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); HANDLE_CODE(crit_exts.unpack(bref)); return SRSASN_SUCCESS; } -void rrc_conn_resume_request_nb_s::to_json(json_writer& j) const +void rrc_conn_setup_complete_nb_s::to_json(json_writer& j) const { j.start_obj(); + j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); j.write_fieldname("criticalExtensions"); crit_exts.to_json(j); j.end_obj(); } -void rrc_conn_resume_request_nb_s::crit_exts_c_::set(types::options e) +void rrc_conn_setup_complete_nb_s::crit_exts_c_::set(types::options e) { type_ = e; } -rrc_conn_resume_request_nb_r13_ies_s& rrc_conn_resume_request_nb_s::crit_exts_c_::set_rrc_conn_resume_request_r13() +rrc_conn_setup_complete_nb_r13_ies_s& rrc_conn_setup_complete_nb_s::crit_exts_c_::set_rrc_conn_setup_complete_r13() { - set(types::rrc_conn_resume_request_r13); + set(types::rrc_conn_setup_complete_r13); return c; } -void rrc_conn_resume_request_nb_s::crit_exts_c_::set_crit_exts_future() +void rrc_conn_setup_complete_nb_s::crit_exts_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void rrc_conn_resume_request_nb_s::crit_exts_c_::to_json(json_writer& j) const +void rrc_conn_setup_complete_nb_s::crit_exts_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::rrc_conn_resume_request_r13: - j.write_fieldname("rrcConnectionResumeRequest-r13"); + case types::rrc_conn_setup_complete_r13: + j.write_fieldname("rrcConnectionSetupComplete-r13"); 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_"); + log_invalid_choice_id(type_, "rrc_conn_setup_complete_nb_s::crit_exts_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_resume_request_nb_s::crit_exts_c_::pack(bit_ref& bref) const +SRSASN_CODE rrc_conn_setup_complete_nb_s::crit_exts_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::rrc_conn_resume_request_r13: + case types::rrc_conn_setup_complete_r13: 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_"); + log_invalid_choice_id(type_, "rrc_conn_setup_complete_nb_s::crit_exts_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_resume_request_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE rrc_conn_setup_complete_nb_s::crit_exts_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::rrc_conn_resume_request_r13: + case types::rrc_conn_setup_complete_r13: 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_setup_complete_nb_s::crit_exts_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* rrc_conn_resume_request_nb_s::crit_exts_c_::types_opts::to_string() const +const char* rrc_conn_setup_complete_nb_s::crit_exts_c_::types_opts::to_string() const { - static const char* options[] = {"rrcConnectionResumeRequest-r13", "criticalExtensionsFuture"}; - return convert_enum_idx(options, 2, value, "rrc_conn_resume_request_nb_s::crit_exts_c_::types"); + static const char* options[] = {"rrcConnectionSetupComplete-r13", "criticalExtensionsFuture"}; + return convert_enum_idx(options, 2, value, "rrc_conn_setup_complete_nb_s::crit_exts_c_::types"); } -// RRCConnectionSetupComplete-NB-v1470-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_setup_complete_nb_v1470_ies_s::pack(bit_ref& bref) const +// 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(meas_result_serv_cell_r14_present, 1)); + 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)); - if (meas_result_serv_cell_r14_present) { - HANDLE_CODE(meas_result_serv_cell_r14.pack(bref)); + 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_conn_setup_complete_nb_v1470_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_early_data_request_minus5_gc_nb_r16_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(meas_result_serv_cell_r14_present, 1)); + 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)); - if (meas_result_serv_cell_r14_present) { - HANDLE_CODE(meas_result_serv_cell_r14.unpack(bref)); + 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_conn_setup_complete_nb_v1470_ies_s::to_json(json_writer& j) const +void rrc_early_data_request_minus5_gc_nb_r16_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (meas_result_serv_cell_r14_present) { - j.write_fieldname("measResultServCell-r14"); - meas_result_serv_cell_r14.to_json(j); + 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"); @@ -17241,1460 +23645,2105 @@ void rrc_conn_setup_complete_nb_v1470_ies_s::to_json(json_writer& j) const j.end_obj(); } -// RRCConnectionSetupComplete-NB-v1430-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_setup_complete_nb_v1430_ies_s::pack(bit_ref& bref) const +const char* rrc_early_data_request_minus5_gc_nb_r16_ies_s::establishment_cause_r16_opts::to_string() const { - HANDLE_CODE(bref.pack(gummei_type_r14_present, 1)); - HANDLE_CODE(bref.pack(dcn_id_r14_present, 1)); + 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 +{ + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - if (dcn_id_r14_present) { - HANDLE_CODE(pack_integer(bref, dcn_id_r14, (uint32_t)0u, (uint32_t)65535u)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.pack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_setup_complete_nb_v1430_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_early_data_request_nb_v1590_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(gummei_type_r14_present, 1)); - HANDLE_CODE(bref.unpack(dcn_id_r14_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - if (dcn_id_r14_present) { - HANDLE_CODE(unpack_integer(dcn_id_r14, bref, (uint32_t)0u, (uint32_t)65535u)); - } - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); } return SRSASN_SUCCESS; } -void rrc_conn_setup_complete_nb_v1430_ies_s::to_json(json_writer& j) const +void rrc_early_data_request_nb_v1590_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (gummei_type_r14_present) { - j.write_str("gummei-Type-r14", "mapped"); - } - if (dcn_id_r14_present) { - j.write_int("dcn-ID-r14", dcn_id_r14); + 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.start_obj(); + j.end_obj(); } j.end_obj(); } -// RRCConnectionSetupComplete-NB-r13-IEs ::= SEQUENCE -SRSASN_CODE rrc_conn_setup_complete_nb_r13_ies_s::pack(bit_ref& bref) const +// RRCEarlyDataRequest-NB-r15-IEs ::= SEQUENCE +SRSASN_CODE rrc_early_data_request_nb_r15_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(s_tmsi_r13_present, 1)); - HANDLE_CODE(bref.pack(registered_mme_r13_present, 1)); - HANDLE_CODE(bref.pack(attach_without_pdn_connect_r13_present, 1)); - HANDLE_CODE(bref.pack(up_cio_t_eps_optim_r13_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(cqi_npdcch_r15_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - HANDLE_CODE(pack_integer(bref, sel_plmn_id_r13, (uint8_t)1u, (uint8_t)6u)); - if (s_tmsi_r13_present) { - HANDLE_CODE(s_tmsi_r13.pack(bref)); - } - if (registered_mme_r13_present) { - HANDLE_CODE(registered_mme_r13.pack(bref)); - } - HANDLE_CODE(ded_info_nas_r13.pack(bref)); - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); + HANDLE_CODE(s_tmsi_r15.pack(bref)); + HANDLE_CODE(establishment_cause_r15.pack(bref)); + if (cqi_npdcch_r15_present) { + HANDLE_CODE(cqi_npdcch_r15.pack(bref)); } + HANDLE_CODE(ded_info_nas_r15.pack(bref)); if (non_crit_ext_present) { HANDLE_CODE(non_crit_ext.pack(bref)); } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_setup_complete_nb_r13_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_early_data_request_nb_r15_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(s_tmsi_r13_present, 1)); - HANDLE_CODE(bref.unpack(registered_mme_r13_present, 1)); - HANDLE_CODE(bref.unpack(attach_without_pdn_connect_r13_present, 1)); - HANDLE_CODE(bref.unpack(up_cio_t_eps_optim_r13_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(cqi_npdcch_r15_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - HANDLE_CODE(unpack_integer(sel_plmn_id_r13, bref, (uint8_t)1u, (uint8_t)6u)); - if (s_tmsi_r13_present) { - HANDLE_CODE(s_tmsi_r13.unpack(bref)); + HANDLE_CODE(s_tmsi_r15.unpack(bref)); + HANDLE_CODE(establishment_cause_r15.unpack(bref)); + if (cqi_npdcch_r15_present) { + HANDLE_CODE(cqi_npdcch_r15.unpack(bref)); } - if (registered_mme_r13_present) { - HANDLE_CODE(registered_mme_r13.unpack(bref)); + HANDLE_CODE(ded_info_nas_r15.unpack(bref)); + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); } - HANDLE_CODE(ded_info_nas_r13.unpack(bref)); - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); + + return SRSASN_SUCCESS; +} +void rrc_early_data_request_nb_r15_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("s-TMSI-r15"); + s_tmsi_r15.to_json(j); + j.write_str("establishmentCause-r15", establishment_cause_r15.to_string()); + if (cqi_npdcch_r15_present) { + j.write_str("cqi-NPDCCH-r15", cqi_npdcch_r15.to_string()); } + j.write_str("dedicatedInfoNAS-r15", ded_info_nas_r15.to_string()); if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); } + j.end_obj(); +} + +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", "mt-Access-v1610"}; + return convert_enum_idx(options, 4, value, "rrc_early_data_request_nb_r15_ies_s::establishment_cause_r15_e_"); +} + +// RRCEarlyDataRequest-NB-r15 ::= SEQUENCE +SRSASN_CODE rrc_early_data_request_nb_r15_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(crit_exts.pack(bref)); return SRSASN_SUCCESS; } -void rrc_conn_setup_complete_nb_r13_ies_s::to_json(json_writer& j) const +SRSASN_CODE rrc_early_data_request_nb_r15_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(crit_exts.unpack(bref)); + + return SRSASN_SUCCESS; +} +void rrc_early_data_request_nb_r15_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("selectedPLMN-Identity-r13", sel_plmn_id_r13); - if (s_tmsi_r13_present) { - j.write_fieldname("s-TMSI-r13"); - s_tmsi_r13.to_json(j); + j.write_fieldname("criticalExtensions"); + crit_exts.to_json(j); + 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(); + break; + case types::later: + c.destroy(); + break; + default: + break; } - if (registered_mme_r13_present) { - j.write_fieldname("registeredMME-r13"); - registered_mme_r13.to_json(j); +} +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(); + break; + case types::later: + c.init(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_"); } - j.write_str("dedicatedInfoNAS-r13", ded_info_nas_r13.to_string()); - if (attach_without_pdn_connect_r13_present) { - j.write_str("attachWithoutPDN-Connectivity-r13", "true"); +} +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()); + break; + case types::later: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_"); } - if (up_cio_t_eps_optim_r13_present) { - j.write_str("up-CIoT-EPS-Optimisation-r13", "true"); +} +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; } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + set(other.type()); + switch (type_) { + case types::rrc_early_data_request_r15: + c.set(other.c.get()); + break; + case types::later: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_"); } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); + + 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.get(); +} +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::later); + return c.get(); +} +void rrc_early_data_request_nb_r15_s::crit_exts_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::rrc_early_data_request_r15: + j.write_fieldname("rrcEarlyDataRequest-r15"); + c.get().to_json(j); + break; + case types::later: + j.write_fieldname("later"); + c.get().to_json(j); + break; + default: + log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_"); } j.end_obj(); } - -// RRCConnectionSetupComplete-NB ::= SEQUENCE -SRSASN_CODE rrc_conn_setup_complete_nb_s::pack(bit_ref& bref) const +SRSASN_CODE rrc_early_data_request_nb_r15_s::crit_exts_c_::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)); - + type_.pack(bref); + switch (type_) { + case types::rrc_early_data_request_r15: + HANDLE_CODE(c.get().pack(bref)); + break; + case types::later: + HANDLE_CODE(c.get().pack(bref)); + break; + default: + log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_conn_setup_complete_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE rrc_early_data_request_nb_r15_s::crit_exts_c_::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u)); - HANDLE_CODE(crit_exts.unpack(bref)); - + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::rrc_early_data_request_r15: + HANDLE_CODE(c.get().unpack(bref)); + break; + case types::later: + HANDLE_CODE(c.get().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_conn_setup_complete_nb_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_int("rrc-TransactionIdentifier", rrc_transaction_id); - j.write_fieldname("criticalExtensions"); - crit_exts.to_json(j); - j.end_obj(); -} -void rrc_conn_setup_complete_nb_s::crit_exts_c_::set(types::options e) +void rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_::set(types::options e) { type_ = e; } -rrc_conn_setup_complete_nb_r13_ies_s& rrc_conn_setup_complete_nb_s::crit_exts_c_::set_rrc_conn_setup_complete_r13() +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_conn_setup_complete_r13); + set(types::rrc_early_data_request_r16); return c; } -void rrc_conn_setup_complete_nb_s::crit_exts_c_::set_crit_exts_future() +void rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_::set_crit_exts_future() { set(types::crit_exts_future); } -void rrc_conn_setup_complete_nb_s::crit_exts_c_::to_json(json_writer& j) const +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_conn_setup_complete_r13: - j.write_fieldname("rrcConnectionSetupComplete-r13"); + 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_conn_setup_complete_nb_s::crit_exts_c_"); + log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_::later_c_"); } j.end_obj(); } -SRSASN_CODE rrc_conn_setup_complete_nb_s::crit_exts_c_::pack(bit_ref& bref) const +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_conn_setup_complete_r13: + 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_conn_setup_complete_nb_s::crit_exts_c_"); + 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_conn_setup_complete_nb_s::crit_exts_c_::unpack(cbit_ref& bref) +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_conn_setup_complete_r13: + case types::rrc_early_data_request_r16: HANDLE_CODE(c.unpack(bref)); break; - case types::crit_exts_future: + 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_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", "later"}; + return convert_enum_idx(options, 2, value, "rrc_early_data_request_nb_r15_s::crit_exts_c_::types"); +} + +// SC-MTCH-SchedulingInfo-NB-r14 ::= SEQUENCE +SRSASN_CODE sc_mtch_sched_info_nb_r14_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(on_dur_timer_scptm_r14.pack(bref)); + HANDLE_CODE(drx_inactivity_timer_scptm_r14.pack(bref)); + HANDLE_CODE(sched_period_start_offset_scptm_r14.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE sc_mtch_sched_info_nb_r14_s::unpack(cbit_ref& bref) +{ + bref.unpack(ext, 1); + HANDLE_CODE(on_dur_timer_scptm_r14.unpack(bref)); + HANDLE_CODE(drx_inactivity_timer_scptm_r14.unpack(bref)); + HANDLE_CODE(sched_period_start_offset_scptm_r14.unpack(bref)); + + return SRSASN_SUCCESS; +} +void sc_mtch_sched_info_nb_r14_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("onDurationTimerSCPTM-r14", on_dur_timer_scptm_r14.to_string()); + j.write_str("drx-InactivityTimerSCPTM-r14", drx_inactivity_timer_scptm_r14.to_string()); + j.write_fieldname("schedulingPeriodStartOffsetSCPTM-r14"); + sched_period_start_offset_scptm_r14.to_json(j); + j.end_obj(); +} + +const char* sc_mtch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_opts::to_string() const +{ + static const char* options[] = {"pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32", "spare"}; + return convert_enum_idx(options, 8, value, "sc_mtch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_e_"); +} +uint8_t sc_mtch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_opts::to_number() const +{ + static const uint8_t options[] = {1, 2, 3, 4, 8, 16, 32}; + return map_enum_number(options, 7, value, "sc_mtch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_e_"); +} + +const char* sc_mtch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_opts::to_string() const +{ + static const char* options[] = {"pp0", "pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32"}; + return convert_enum_idx(options, 8, value, "sc_mtch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_e_"); +} +uint8_t sc_mtch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_opts::to_number() const +{ + static const uint8_t options[] = {0, 1, 2, 3, 4, 8, 16, 32}; + return map_enum_number(options, 8, value, "sc_mtch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_e_"); +} + +void sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::destroy_() {} +void sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set(types::options e) +{ + destroy_(); + type_ = e; +} +sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::sched_period_start_offset_scptm_r14_c_( + const sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::sf10: + c.init(other.c.get()); + break; + case types::sf20: + c.init(other.c.get()); + break; + case types::sf32: + c.init(other.c.get()); + break; + case types::sf40: + c.init(other.c.get()); + break; + case types::sf64: + c.init(other.c.get()); + break; + case types::sf80: + c.init(other.c.get()); + break; + case types::sf128: + c.init(other.c.get()); + break; + case types::sf160: + c.init(other.c.get()); + break; + case types::sf256: + c.init(other.c.get()); + break; + case types::sf320: + c.init(other.c.get()); + break; + case types::sf512: + c.init(other.c.get()); + break; + case types::sf640: + c.init(other.c.get()); + break; + case types::sf1024: + c.init(other.c.get()); + break; + case types::sf2048: + c.init(other.c.get()); + break; + case types::sf4096: + c.init(other.c.get()); + break; + case types::sf8192: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + } +} +sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& +sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::operator=( + const sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& other) +{ + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::sf10: + c.set(other.c.get()); + break; + case types::sf20: + c.set(other.c.get()); + break; + case types::sf32: + c.set(other.c.get()); + break; + case types::sf40: + c.set(other.c.get()); + break; + case types::sf64: + c.set(other.c.get()); + break; + case types::sf80: + c.set(other.c.get()); + break; + case types::sf128: + c.set(other.c.get()); + break; + case types::sf160: + c.set(other.c.get()); + break; + case types::sf256: + c.set(other.c.get()); + break; + case types::sf320: + c.set(other.c.get()); + break; + case types::sf512: + c.set(other.c.get()); + break; + case types::sf640: + c.set(other.c.get()); + break; + case types::sf1024: + c.set(other.c.get()); + break; + case types::sf2048: + c.set(other.c.get()); + break; + case types::sf4096: + c.set(other.c.get()); + break; + case types::sf8192: + c.set(other.c.get()); + break; + case types::nulltype: break; default: - log_invalid_choice_id(type_, "rrc_conn_setup_complete_nb_s::crit_exts_c_"); - return SRSASN_ERROR_DECODE_FAIL; + log_invalid_choice_id(type_, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); } - return SRSASN_SUCCESS; -} -const char* rrc_conn_setup_complete_nb_s::crit_exts_c_::types_opts::to_string() const + return *this; +} +uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf10() { - static const char* options[] = {"rrcConnectionSetupComplete-r13", "criticalExtensionsFuture"}; - return convert_enum_idx(options, 2, value, "rrc_conn_setup_complete_nb_s::crit_exts_c_::types"); + set(types::sf10); + return c.get(); } - -// RRCEarlyDataRequest-NB-v1590-IEs ::= SEQUENCE -SRSASN_CODE rrc_early_data_request_nb_v1590_ies_s::pack(bit_ref& bref) const +uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf20() { - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.pack(bref)); - } - - return SRSASN_SUCCESS; + set(types::sf20); + return c.get(); } -SRSASN_CODE rrc_early_data_request_nb_v1590_ies_s::unpack(cbit_ref& bref) +uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf32() { - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.unpack(bref)); - } - - return SRSASN_SUCCESS; + set(types::sf32); + return c.get(); } -void rrc_early_data_request_nb_v1590_ies_s::to_json(json_writer& j) const +uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf40() { - j.start_obj(); - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - j.start_obj(); - j.end_obj(); - } - j.end_obj(); + set(types::sf40); + return c.get(); } - -// RRCEarlyDataRequest-NB-r15-IEs ::= SEQUENCE -SRSASN_CODE rrc_early_data_request_nb_r15_ies_s::pack(bit_ref& bref) const +uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf64() { - HANDLE_CODE(bref.pack(cqi_npdcch_r15_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - HANDLE_CODE(s_tmsi_r15.pack(bref)); - HANDLE_CODE(establishment_cause_r15.pack(bref)); - if (cqi_npdcch_r15_present) { - HANDLE_CODE(cqi_npdcch_r15.pack(bref)); - } - HANDLE_CODE(ded_info_nas_r15.pack(bref)); - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.pack(bref)); - } - - return SRSASN_SUCCESS; + set(types::sf64); + return c.get(); } -SRSASN_CODE rrc_early_data_request_nb_r15_ies_s::unpack(cbit_ref& bref) +uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf80() { - HANDLE_CODE(bref.unpack(cqi_npdcch_r15_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - HANDLE_CODE(s_tmsi_r15.unpack(bref)); - HANDLE_CODE(establishment_cause_r15.unpack(bref)); - if (cqi_npdcch_r15_present) { - HANDLE_CODE(cqi_npdcch_r15.unpack(bref)); - } - HANDLE_CODE(ded_info_nas_r15.unpack(bref)); - if (non_crit_ext_present) { - HANDLE_CODE(non_crit_ext.unpack(bref)); - } - - return SRSASN_SUCCESS; + set(types::sf80); + return c.get(); } -void rrc_early_data_request_nb_r15_ies_s::to_json(json_writer& j) const +uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf128() { - j.start_obj(); - j.write_fieldname("s-TMSI-r15"); - s_tmsi_r15.to_json(j); - j.write_str("establishmentCause-r15", establishment_cause_r15.to_string()); - if (cqi_npdcch_r15_present) { - j.write_str("cqi-NPDCCH-r15", cqi_npdcch_r15.to_string()); - } - j.write_str("dedicatedInfoNAS-r15", ded_info_nas_r15.to_string()); - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - non_crit_ext.to_json(j); - } - j.end_obj(); + set(types::sf128); + return c.get(); } - -const char* rrc_early_data_request_nb_r15_ies_s::establishment_cause_r15_opts::to_string() const +uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf160() { - static const char* options[] = {"mo-Data", "mo-ExceptionData", "delayTolerantAccess", "spare1"}; - return convert_enum_idx(options, 4, value, "rrc_early_data_request_nb_r15_ies_s::establishment_cause_r15_e_"); + set(types::sf160); + return c.get(); } - -// RRCEarlyDataRequest-NB-r15 ::= SEQUENCE -SRSASN_CODE rrc_early_data_request_nb_r15_s::pack(bit_ref& bref) const +uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf256() { - HANDLE_CODE(crit_exts.pack(bref)); - - return SRSASN_SUCCESS; + set(types::sf256); + return c.get(); } -SRSASN_CODE rrc_early_data_request_nb_r15_s::unpack(cbit_ref& bref) +uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf320() { - HANDLE_CODE(crit_exts.unpack(bref)); - - return SRSASN_SUCCESS; + set(types::sf320); + return c.get(); } -void rrc_early_data_request_nb_r15_s::to_json(json_writer& j) const +uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf512() { - j.start_obj(); - j.write_fieldname("criticalExtensions"); - crit_exts.to_json(j); - j.end_obj(); + set(types::sf512); + return c.get(); } - -void rrc_early_data_request_nb_r15_s::crit_exts_c_::set(types::options e) +uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf640() { - type_ = e; + set(types::sf640); + return c.get(); } -rrc_early_data_request_nb_r15_ies_s& rrc_early_data_request_nb_r15_s::crit_exts_c_::set_rrc_early_data_request_r15() +uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf1024() { - set(types::rrc_early_data_request_r15); - return c; + set(types::sf1024); + return c.get(); } -void rrc_early_data_request_nb_r15_s::crit_exts_c_::set_crit_exts_future() +uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf2048() { - set(types::crit_exts_future); + set(types::sf2048); + return c.get(); } -void rrc_early_data_request_nb_r15_s::crit_exts_c_::to_json(json_writer& j) const +uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf4096() +{ + set(types::sf4096); + return c.get(); +} +uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf8192() +{ + set(types::sf8192); + return c.get(); +} +void sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::rrc_early_data_request_r15: - j.write_fieldname("rrcEarlyDataRequest-r15"); - c.to_json(j); + case types::sf10: + j.write_int("sf10", c.get()); + break; + case types::sf20: + j.write_int("sf20", c.get()); + break; + case types::sf32: + j.write_int("sf32", c.get()); + break; + case types::sf40: + j.write_int("sf40", c.get()); + break; + case types::sf64: + j.write_int("sf64", c.get()); + break; + case types::sf80: + j.write_int("sf80", c.get()); + break; + case types::sf128: + j.write_int("sf128", c.get()); + break; + case types::sf160: + j.write_int("sf160", c.get()); + break; + case types::sf256: + j.write_int("sf256", c.get()); + break; + case types::sf320: + j.write_int("sf320", c.get()); + break; + case types::sf512: + j.write_int("sf512", c.get()); + break; + case types::sf640: + j.write_int("sf640", c.get()); + break; + case types::sf1024: + j.write_int("sf1024", c.get()); + break; + case types::sf2048: + j.write_int("sf2048", c.get()); + break; + case types::sf4096: + j.write_int("sf4096", c.get()); + break; + case types::sf8192: + j.write_int("sf8192", c.get()); + break; + default: + log_invalid_choice_id(type_, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + } + j.end_obj(); +} +SRSASN_CODE sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::sf10: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)9u)); + break; + case types::sf20: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)19u)); + break; + case types::sf32: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)31u)); + break; + case types::sf40: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)39u)); + break; + case types::sf64: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)63u)); + break; + case types::sf80: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)79u)); + break; + case types::sf128: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); + break; + case types::sf160: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)159u)); break; - case types::crit_exts_future: + case types::sf256: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)255u)); break; - default: - log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_"); - } - j.end_obj(); -} -SRSASN_CODE rrc_early_data_request_nb_r15_s::crit_exts_c_::pack(bit_ref& bref) const -{ - type_.pack(bref); - switch (type_) { - case types::rrc_early_data_request_r15: - HANDLE_CODE(c.pack(bref)); + case types::sf320: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)319u)); break; - case types::crit_exts_future: + case types::sf512: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)511u)); + break; + case types::sf640: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)639u)); + break; + case types::sf1024: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)1023u)); + break; + case types::sf2048: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)2047u)); + break; + case types::sf4096: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)4095u)); + break; + case types::sf8192: + HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)8191u)); break; default: - log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_"); + log_invalid_choice_id(type_, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE rrc_early_data_request_nb_r15_s::crit_exts_c_::unpack(cbit_ref& bref) +SRSASN_CODE sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::rrc_early_data_request_r15: - HANDLE_CODE(c.unpack(bref)); + case types::sf10: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)9u)); break; - case types::crit_exts_future: + case types::sf20: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)19u)); + break; + case types::sf32: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)31u)); + break; + case types::sf40: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)39u)); + break; + case types::sf64: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)63u)); + break; + case types::sf80: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)79u)); + break; + case types::sf128: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); + break; + case types::sf160: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)159u)); + break; + case types::sf256: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)255u)); + break; + case types::sf320: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)319u)); + break; + case types::sf512: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)511u)); + break; + case types::sf640: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)639u)); + break; + case types::sf1024: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)1023u)); + break; + case types::sf2048: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)2047u)); + break; + case types::sf4096: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)4095u)); + break; + case types::sf8192: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)8191u)); break; default: - log_invalid_choice_id(type_, "rrc_early_data_request_nb_r15_s::crit_exts_c_"); + log_invalid_choice_id(type_, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* rrc_early_data_request_nb_r15_s::crit_exts_c_::types_opts::to_string() const +const char* sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types_opts::to_string() const { - static const char* options[] = {"rrcEarlyDataRequest-r15", "criticalExtensionsFuture"}; - return convert_enum_idx(options, 2, value, "rrc_early_data_request_nb_r15_s::crit_exts_c_::types"); + static const char* options[] = {"sf10", + "sf20", + "sf32", + "sf40", + "sf64", + "sf80", + "sf128", + "sf160", + "sf256", + "sf320", + "sf512", + "sf640", + "sf1024", + "sf2048", + "sf4096", + "sf8192"}; + return convert_enum_idx( + options, 16, value, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types"); +} +uint16_t sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types_opts::to_number() const +{ + static const uint16_t options[] = {10, 20, 32, 40, 64, 80, 128, 160, 256, 320, 512, 640, 1024, 2048, 4096, 8192}; + return map_enum_number( + options, 16, value, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types"); } -// SC-MTCH-SchedulingInfo-NB-r14 ::= SEQUENCE -SRSASN_CODE sc_mtch_sched_info_nb_r14_s::pack(bit_ref& bref) const +// SC-MTCH-Info-NB-r14 ::= SEQUENCE +SRSASN_CODE sc_mtch_info_nb_r14_s::pack(bit_ref& bref) const { bref.pack(ext, 1); - HANDLE_CODE(on_dur_timer_scptm_r14.pack(bref)); - HANDLE_CODE(drx_inactivity_timer_scptm_r14.pack(bref)); - HANDLE_CODE(sched_period_start_offset_scptm_r14.pack(bref)); + HANDLE_CODE(bref.pack(sc_mtch_sched_info_r14_present, 1)); + HANDLE_CODE(bref.pack(sc_mtch_neighbour_cell_r14_present, 1)); + + HANDLE_CODE(sc_mtch_carrier_cfg_r14.pack(bref)); + 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(npdcch_npdsch_max_tbs_sc_mtch_r14.pack(bref)); + HANDLE_CODE(npdcch_num_repeats_sc_mtch_r14.pack(bref)); + HANDLE_CODE(npdcch_start_sf_sc_mtch_r14.pack(bref)); + HANDLE_CODE(npdcch_offset_sc_mtch_r14.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE sc_mtch_sched_info_nb_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE sc_mtch_info_nb_r14_s::unpack(cbit_ref& bref) { bref.unpack(ext, 1); - HANDLE_CODE(on_dur_timer_scptm_r14.unpack(bref)); - HANDLE_CODE(drx_inactivity_timer_scptm_r14.unpack(bref)); - HANDLE_CODE(sched_period_start_offset_scptm_r14.unpack(bref)); + HANDLE_CODE(bref.unpack(sc_mtch_sched_info_r14_present, 1)); + HANDLE_CODE(bref.unpack(sc_mtch_neighbour_cell_r14_present, 1)); + + HANDLE_CODE(sc_mtch_carrier_cfg_r14.unpack(bref)); + 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(npdcch_npdsch_max_tbs_sc_mtch_r14.unpack(bref)); + HANDLE_CODE(npdcch_num_repeats_sc_mtch_r14.unpack(bref)); + HANDLE_CODE(npdcch_start_sf_sc_mtch_r14.unpack(bref)); + HANDLE_CODE(npdcch_offset_sc_mtch_r14.unpack(bref)); return SRSASN_SUCCESS; } -void sc_mtch_sched_info_nb_r14_s::to_json(json_writer& j) const +void sc_mtch_info_nb_r14_s::to_json(json_writer& j) const { j.start_obj(); - j.write_str("onDurationTimerSCPTM-r14", on_dur_timer_scptm_r14.to_string()); - j.write_str("drx-InactivityTimerSCPTM-r14", drx_inactivity_timer_scptm_r14.to_string()); - j.write_fieldname("schedulingPeriodStartOffsetSCPTM-r14"); - sched_period_start_offset_scptm_r14.to_json(j); + j.write_fieldname("sc-mtch-CarrierConfig-r14"); + sc_mtch_carrier_cfg_r14.to_json(j); + 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_str("npdcch-NPDSCH-MaxTBS-SC-MTCH-r14", npdcch_npdsch_max_tbs_sc_mtch_r14.to_string()); + j.write_str("npdcch-NumRepetitions-SC-MTCH-r14", npdcch_num_repeats_sc_mtch_r14.to_string()); + j.write_str("npdcch-StartSF-SC-MTCH-r14", npdcch_start_sf_sc_mtch_r14.to_string()); + j.write_str("npdcch-Offset-SC-MTCH-r14", npdcch_offset_sc_mtch_r14.to_string()); j.end_obj(); } -const char* sc_mtch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_opts::to_string() const -{ - static const char* options[] = {"pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32", "spare"}; - return convert_enum_idx(options, 8, value, "sc_mtch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_e_"); -} -uint8_t sc_mtch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_opts::to_number() const -{ - static const uint8_t options[] = {1, 2, 3, 4, 8, 16, 32}; - return map_enum_number(options, 7, value, "sc_mtch_sched_info_nb_r14_s::on_dur_timer_scptm_r14_e_"); -} - -const char* sc_mtch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_opts::to_string() const -{ - static const char* options[] = {"pp0", "pp1", "pp2", "pp3", "pp4", "pp8", "pp16", "pp32"}; - return convert_enum_idx(options, 8, value, "sc_mtch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_e_"); -} -uint8_t sc_mtch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_opts::to_number() const -{ - static const uint8_t options[] = {0, 1, 2, 3, 4, 8, 16, 32}; - return map_enum_number(options, 8, value, "sc_mtch_sched_info_nb_r14_s::drx_inactivity_timer_scptm_r14_e_"); -} - -void sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::destroy_() {} -void sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set(types::options e) -{ - destroy_(); - type_ = e; -} -sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::sched_period_start_offset_scptm_r14_c_( - const sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& other) +void sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::destroy_() { - type_ = other.type(); switch (type_) { - case types::sf10: - c.init(other.c.get()); - break; - case types::sf20: - c.init(other.c.get()); - break; - case types::sf32: - c.init(other.c.get()); - break; - case types::sf40: - c.init(other.c.get()); - break; - case types::sf64: - c.init(other.c.get()); - break; - case types::sf80: - c.init(other.c.get()); - break; - case types::sf128: - c.init(other.c.get()); - break; - case types::sf160: - c.init(other.c.get()); - break; - case types::sf256: - c.init(other.c.get()); - break; - case types::sf320: - c.init(other.c.get()); + case types::dl_carrier_cfg_r14: + c.destroy(); break; - case types::sf512: - c.init(other.c.get()); + default: break; - case types::sf640: - c.init(other.c.get()); + } +} +void sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::set(types::options e) +{ + destroy_(); + type_ = e; + switch (type_) { + case types::dl_carrier_cfg_r14: + c.init(); break; - case types::sf1024: - c.init(other.c.get()); + case types::dl_carrier_idx_r14: break; - case types::sf2048: - c.init(other.c.get()); + case types::nulltype: break; - case types::sf4096: - c.init(other.c.get()); + default: + log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); + } +} +sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::sc_mtch_carrier_cfg_r14_c_( + const sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::dl_carrier_cfg_r14: + c.init(other.c.get()); break; - case types::sf8192: - c.init(other.c.get()); + case types::dl_carrier_idx_r14: + c.init(other.c.get()); break; case types::nulltype: break; default: - log_invalid_choice_id(type_, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); } } -sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& -sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::operator=( - const sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_& other) +sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_& sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::operator=( + const sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_& other) { if (this == &other) { return *this; } set(other.type()); switch (type_) { - case types::sf10: - c.set(other.c.get()); - break; - case types::sf20: - c.set(other.c.get()); - break; - case types::sf32: - c.set(other.c.get()); - break; - case types::sf40: - c.set(other.c.get()); - break; - case types::sf64: - c.set(other.c.get()); - break; - case types::sf80: - c.set(other.c.get()); - break; - case types::sf128: - c.set(other.c.get()); + case types::dl_carrier_cfg_r14: + c.set(other.c.get()); break; - case types::sf160: + case types::dl_carrier_idx_r14: c.set(other.c.get()); break; - case types::sf256: - c.set(other.c.get()); - break; - case types::sf320: - c.set(other.c.get()); - break; - case types::sf512: - c.set(other.c.get()); + case types::nulltype: break; - case types::sf640: - c.set(other.c.get()); + default: + log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); + } + + return *this; +} +dl_carrier_cfg_common_nb_r14_s& sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::set_dl_carrier_cfg_r14() +{ + set(types::dl_carrier_cfg_r14); + return c.get(); +} +uint8_t& sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::set_dl_carrier_idx_r14() +{ + set(types::dl_carrier_idx_r14); + return c.get(); +} +void sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::dl_carrier_cfg_r14: + j.write_fieldname("dl-CarrierConfig-r14"); + c.get().to_json(j); break; - case types::sf1024: - c.set(other.c.get()); + case types::dl_carrier_idx_r14: + j.write_int("dl-CarrierIndex-r14", c.get()); break; - case types::sf2048: - c.set(other.c.get()); + default: + log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); + } + j.end_obj(); +} +SRSASN_CODE sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::dl_carrier_cfg_r14: + HANDLE_CODE(c.get().pack(bref)); break; - case types::sf4096: - c.set(other.c.get()); + case types::dl_carrier_idx_r14: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)15u)); break; - case types::sf8192: - c.set(other.c.get()); + default: + log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::dl_carrier_cfg_r14: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::nulltype: + case types::dl_carrier_idx_r14: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)15u)); break; default: - log_invalid_choice_id(type_, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); + return SRSASN_ERROR_DECODE_FAIL; } + return SRSASN_SUCCESS; +} - return *this; +const char* sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::types_opts::to_string() const +{ + static const char* options[] = {"dl-CarrierConfig-r14", "dl-CarrierIndex-r14"}; + return convert_enum_idx(options, 2, value, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::types"); } -uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf10() + +const char* sc_mtch_info_nb_r14_s::npdcch_npdsch_max_tbs_sc_mtch_r14_opts::to_string() const { - set(types::sf10); - return c.get(); + static const char* options[] = {"n680", "n2536"}; + return convert_enum_idx(options, 2, value, "sc_mtch_info_nb_r14_s::npdcch_npdsch_max_tbs_sc_mtch_r14_e_"); } -uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf20() +uint16_t sc_mtch_info_nb_r14_s::npdcch_npdsch_max_tbs_sc_mtch_r14_opts::to_number() const { - set(types::sf20); - return c.get(); + static const uint16_t options[] = {680, 2536}; + return map_enum_number(options, 2, value, "sc_mtch_info_nb_r14_s::npdcch_npdsch_max_tbs_sc_mtch_r14_e_"); } -uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf32() + +const char* sc_mtch_info_nb_r14_s::npdcch_num_repeats_sc_mtch_r14_opts::to_string() const { - set(types::sf32); - return c.get(); + static const char* options[] = {"r1", + "r2", + "r4", + "r8", + "r16", + "r32", + "r64", + "r128", + "r256", + "r512", + "r1024", + "r2048", + "spare4", + "spare3", + "spare2", + "spare1"}; + return convert_enum_idx(options, 16, value, "sc_mtch_info_nb_r14_s::npdcch_num_repeats_sc_mtch_r14_e_"); } -uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf40() +uint16_t sc_mtch_info_nb_r14_s::npdcch_num_repeats_sc_mtch_r14_opts::to_number() const { - set(types::sf40); - return c.get(); + static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; + return map_enum_number(options, 12, value, "sc_mtch_info_nb_r14_s::npdcch_num_repeats_sc_mtch_r14_e_"); } -uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf64() + +const char* sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_opts::to_string() const { - set(types::sf64); - return c.get(); + static const char* options[] = {"v1dot5", "v2", "v4", "v8", "v16", "v32", "v48", "v64"}; + return convert_enum_idx(options, 8, value, "sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_e_"); } -uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf80() +float sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_opts::to_number() const { - set(types::sf80); - return c.get(); + static const float options[] = {1.5, 2.0, 4.0, 8.0, 16.0, 32.0, 48.0, 64.0}; + return map_enum_number(options, 8, value, "sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_e_"); } -uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf128() +const char* sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_opts::to_number_string() const { - set(types::sf128); - return c.get(); + static const char* options[] = {"1.5", "2", "4", "8", "16", "32", "48", "64"}; + return convert_enum_idx(options, 8, value, "sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_e_"); } -uint8_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf160() + +const char* sc_mtch_info_nb_r14_s::npdcch_offset_sc_mtch_r14_opts::to_string() const { - set(types::sf160); - return c.get(); + static const char* options[] = { + "zero", "oneEighth", "oneQuarter", "threeEighth", "oneHalf", "fiveEighth", "threeQuarter", "sevenEighth"}; + return convert_enum_idx(options, 8, value, "sc_mtch_info_nb_r14_s::npdcch_offset_sc_mtch_r14_e_"); } -uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf256() +float sc_mtch_info_nb_r14_s::npdcch_offset_sc_mtch_r14_opts::to_number() const { - set(types::sf256); - return c.get(); + 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_nb_r14_s::npdcch_offset_sc_mtch_r14_e_"); } -uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf320() +const char* sc_mtch_info_nb_r14_s::npdcch_offset_sc_mtch_r14_opts::to_number_string() const { - set(types::sf320); - return c.get(); + 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_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_"); } -uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf512() + +// SCPTMConfiguration-NB-r14 ::= SEQUENCE +SRSASN_CODE scptm_cfg_nb_r14_s::pack(bit_ref& bref) const { - set(types::sf512); - return c.get(); + HANDLE_CODE(bref.pack(scptm_neighbour_cell_list_r14_present, 1)); + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + HANDLE_CODE(pack_dyn_seq_of(bref, sc_mtch_info_list_r14, 0, 64)); + if (scptm_neighbour_cell_list_r14_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, scptm_neighbour_cell_list_r14, 1, 8)); + } + 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; } -uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf640() +SRSASN_CODE scptm_cfg_nb_r14_s::unpack(cbit_ref& bref) { - set(types::sf640); - return c.get(); + HANDLE_CODE(bref.unpack(scptm_neighbour_cell_list_r14_present, 1)); + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + HANDLE_CODE(unpack_dyn_seq_of(sc_mtch_info_list_r14, bref, 0, 64)); + if (scptm_neighbour_cell_list_r14_present) { + HANDLE_CODE(unpack_dyn_seq_of(scptm_neighbour_cell_list_r14, bref, 1, 8)); + } + 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; } -uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf1024() +void scptm_cfg_nb_r14_s::to_json(json_writer& j) const { - set(types::sf1024); - return c.get(); + j.start_obj(); + j.start_array("sc-mtch-InfoList-r14"); + for (const auto& e1 : sc_mtch_info_list_r14) { + e1.to_json(j); + } + j.end_array(); + if (scptm_neighbour_cell_list_r14_present) { + j.start_array("scptm-NeighbourCellList-r14"); + for (const auto& e1 : scptm_neighbour_cell_list_r14) { + e1.to_json(j); + } + j.end_array(); + } + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); } -uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf2048() + +// SC-MCCH-MessageType-NB ::= CHOICE +void sc_mcch_msg_type_nb_c::set(types::options e) { - set(types::sf2048); - return c.get(); + type_ = e; } -uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf4096() +sc_mcch_msg_type_nb_c::c1_c_& sc_mcch_msg_type_nb_c::set_c1() { - set(types::sf4096); - return c.get(); + set(types::c1); + return c; } -uint16_t& sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf8192() +void sc_mcch_msg_type_nb_c::set_msg_class_ext() { - set(types::sf8192); - return c.get(); + set(types::msg_class_ext); } -void sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::to_json(json_writer& j) const +void sc_mcch_msg_type_nb_c::to_json(json_writer& j) const { j.start_obj(); switch (type_) { - case types::sf10: - j.write_int("sf10", c.get()); - break; - case types::sf20: - j.write_int("sf20", c.get()); - break; - case types::sf32: - j.write_int("sf32", c.get()); - break; - case types::sf40: - j.write_int("sf40", c.get()); - break; - case types::sf64: - j.write_int("sf64", c.get()); - break; - case types::sf80: - j.write_int("sf80", c.get()); - break; - case types::sf128: - j.write_int("sf128", c.get()); - break; - case types::sf160: - j.write_int("sf160", c.get()); - break; - case types::sf256: - j.write_int("sf256", c.get()); - break; - case types::sf320: - j.write_int("sf320", c.get()); - break; - case types::sf512: - j.write_int("sf512", c.get()); - break; - case types::sf640: - j.write_int("sf640", c.get()); - break; - case types::sf1024: - j.write_int("sf1024", c.get()); - break; - case types::sf2048: - j.write_int("sf2048", c.get()); - break; - case types::sf4096: - j.write_int("sf4096", c.get()); + case types::c1: + j.write_fieldname("c1"); + c.to_json(j); break; - case types::sf8192: - j.write_int("sf8192", c.get()); + case types::msg_class_ext: break; default: - log_invalid_choice_id(type_, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + log_invalid_choice_id(type_, "sc_mcch_msg_type_nb_c"); } j.end_obj(); } -SRSASN_CODE sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::pack(bit_ref& bref) const +SRSASN_CODE sc_mcch_msg_type_nb_c::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { - case types::sf10: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)9u)); - break; - case types::sf20: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)19u)); - break; - case types::sf32: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)31u)); - break; - case types::sf40: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)39u)); - break; - case types::sf64: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)63u)); - break; - case types::sf80: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)79u)); - break; - case types::sf128: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)127u)); - break; - case types::sf160: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)159u)); - break; - case types::sf256: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)255u)); - break; - case types::sf320: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)319u)); - break; - case types::sf512: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)511u)); - break; - case types::sf640: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)639u)); - break; - case types::sf1024: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)1023u)); - break; - case types::sf2048: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)2047u)); - break; - case types::sf4096: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)4095u)); + case types::c1: + HANDLE_CODE(c.pack(bref)); break; - case types::sf8192: - HANDLE_CODE(pack_integer(bref, c.get(), (uint16_t)0u, (uint16_t)8191u)); + case types::msg_class_ext: break; default: - log_invalid_choice_id(type_, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + log_invalid_choice_id(type_, "sc_mcch_msg_type_nb_c"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::unpack(cbit_ref& bref) +SRSASN_CODE sc_mcch_msg_type_nb_c::unpack(cbit_ref& bref) { types e; e.unpack(bref); set(e); switch (type_) { - case types::sf10: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)9u)); - break; - case types::sf20: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)19u)); - break; - case types::sf32: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)31u)); - break; - case types::sf40: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)39u)); - break; - case types::sf64: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)63u)); - break; - case types::sf80: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)79u)); - break; - case types::sf128: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)127u)); - break; - case types::sf160: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)159u)); - break; - case types::sf256: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)255u)); - break; - case types::sf320: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)319u)); - break; - case types::sf512: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)511u)); - break; - case types::sf640: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)639u)); - break; - case types::sf1024: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)1023u)); - break; - case types::sf2048: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)2047u)); - break; - case types::sf4096: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)4095u)); + case types::c1: + HANDLE_CODE(c.unpack(bref)); break; - case types::sf8192: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint16_t)0u, (uint16_t)8191u)); + case types::msg_class_ext: break; default: - log_invalid_choice_id(type_, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_"); + log_invalid_choice_id(type_, "sc_mcch_msg_type_nb_c"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -const char* sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types_opts::to_string() const +void sc_mcch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("scptmConfiguration-r14"); + c.to_json(j); + j.end_obj(); +} +SRSASN_CODE sc_mcch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const +{ + HANDLE_CODE(c.pack(bref)); + return SRSASN_SUCCESS; +} +SRSASN_CODE sc_mcch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref) +{ + HANDLE_CODE(c.unpack(bref)); + return SRSASN_SUCCESS; +} + +const char* sc_mcch_msg_type_nb_c::c1_c_::types_opts::to_string() const { - static const char* options[] = {"sf10", - "sf20", - "sf32", - "sf40", - "sf64", - "sf80", - "sf128", - "sf160", - "sf256", - "sf320", - "sf512", - "sf640", - "sf1024", - "sf2048", - "sf4096", - "sf8192"}; - return convert_enum_idx( - options, 16, value, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types"); + static const char* options[] = {"scptmConfiguration-r14"}; + return convert_enum_idx(options, 1, value, "sc_mcch_msg_type_nb_c::c1_c_::types"); } -uint16_t sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types_opts::to_number() const + +const char* sc_mcch_msg_type_nb_c::types_opts::to_string() const { - static const uint16_t options[] = {10, 20, 32, 40, 64, 80, 128, 160, 256, 320, 512, 640, 1024, 2048, 4096, 8192}; - return map_enum_number( - options, 16, value, "sc_mtch_sched_info_nb_r14_s::sched_period_start_offset_scptm_r14_c_::types"); + static const char* options[] = {"c1", "messageClassExtension"}; + return convert_enum_idx(options, 2, value, "sc_mcch_msg_type_nb_c::types"); +} +uint8_t sc_mcch_msg_type_nb_c::types_opts::to_number() const +{ + static const uint8_t options[] = {1}; + return map_enum_number(options, 1, value, "sc_mcch_msg_type_nb_c::types"); } -// SC-MTCH-Info-NB-r14 ::= SEQUENCE -SRSASN_CODE sc_mtch_info_nb_r14_s::pack(bit_ref& bref) const +// SC-MCCH-Message-NB ::= SEQUENCE +SRSASN_CODE sc_mcch_msg_nb_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(msg.pack(bref)); - HANDLE_CODE(sc_mtch_carrier_cfg_r14.pack(bref)); - 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(npdcch_npdsch_max_tbs_sc_mtch_r14.pack(bref)); - HANDLE_CODE(npdcch_num_repeats_sc_mtch_r14.pack(bref)); - HANDLE_CODE(npdcch_start_sf_sc_mtch_r14.pack(bref)); - HANDLE_CODE(npdcch_offset_sc_mtch_r14.pack(bref)); + bref.align_bytes_zero(); return SRSASN_SUCCESS; } -SRSASN_CODE sc_mtch_info_nb_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE sc_mcch_msg_nb_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(msg.unpack(bref)); - HANDLE_CODE(sc_mtch_carrier_cfg_r14.unpack(bref)); - 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(npdcch_npdsch_max_tbs_sc_mtch_r14.unpack(bref)); - HANDLE_CODE(npdcch_num_repeats_sc_mtch_r14.unpack(bref)); - HANDLE_CODE(npdcch_start_sf_sc_mtch_r14.unpack(bref)); - HANDLE_CODE(npdcch_offset_sc_mtch_r14.unpack(bref)); + bref.align_bytes(); return SRSASN_SUCCESS; } -void sc_mtch_info_nb_r14_s::to_json(json_writer& j) const +void sc_mcch_msg_nb_s::to_json(json_writer& j) const { + j.start_array(); j.start_obj(); - j.write_fieldname("sc-mtch-CarrierConfig-r14"); - sc_mtch_carrier_cfg_r14.to_json(j); - 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); + j.start_obj("SC-MCCH-Message-NB"); + j.write_fieldname("message"); + msg.to_json(j); + j.end_obj(); + j.end_obj(); + j.end_array(); +} + +// PhyLayerParameters-NB-v1430 ::= SEQUENCE +SRSASN_CODE phy_layer_params_nb_v1430_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(multi_carrier_nprach_r14_present, 1)); + HANDLE_CODE(bref.pack(two_harq_processes_r14_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE phy_layer_params_nb_v1430_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(multi_carrier_nprach_r14_present, 1)); + HANDLE_CODE(bref.unpack(two_harq_processes_r14_present, 1)); + + return SRSASN_SUCCESS; +} +void phy_layer_params_nb_v1430_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (multi_carrier_nprach_r14_present) { + j.write_str("multiCarrier-NPRACH-r14", "supported"); } - if (sc_mtch_neighbour_cell_r14_present) { - j.write_str("sc-mtch-NeighbourCell-r14", sc_mtch_neighbour_cell_r14.to_string()); + if (two_harq_processes_r14_present) { + j.write_str("twoHARQ-Processes-r14", "supported"); } - j.write_str("npdcch-NPDSCH-MaxTBS-SC-MTCH-r14", npdcch_npdsch_max_tbs_sc_mtch_r14.to_string()); - j.write_str("npdcch-NumRepetitions-SC-MTCH-r14", npdcch_num_repeats_sc_mtch_r14.to_string()); - j.write_str("npdcch-StartSF-SC-MTCH-r14", npdcch_start_sf_sc_mtch_r14.to_string()); - j.write_str("npdcch-Offset-SC-MTCH-r14", npdcch_offset_sc_mtch_r14.to_string()); j.end_obj(); } -void sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::destroy_() +// PhyLayerParameters-NB-v1530 ::= SEQUENCE +SRSASN_CODE phy_layer_params_nb_v1530_s::pack(bit_ref& bref) const { - switch (type_) { - case types::dl_carrier_cfg_r14: - c.destroy(); - break; - default: - break; - } + HANDLE_CODE(bref.pack(mixed_operation_mode_r15_present, 1)); + HANDLE_CODE(bref.pack(sr_with_harq_ack_r15_present, 1)); + HANDLE_CODE(bref.pack(sr_without_harq_ack_r15_present, 1)); + HANDLE_CODE(bref.pack(nprach_format2_r15_present, 1)); + HANDLE_CODE(bref.pack(add_tx_sib1_r15_present, 1)); + HANDLE_CODE(bref.pack(npusch_minus3dot75k_hz_scs_tdd_r15_present, 1)); + + return SRSASN_SUCCESS; } -void sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::set(types::options e) +SRSASN_CODE phy_layer_params_nb_v1530_s::unpack(cbit_ref& bref) { - destroy_(); - type_ = e; - switch (type_) { - case types::dl_carrier_cfg_r14: - c.init(); - break; - case types::dl_carrier_idx_r14: - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); + HANDLE_CODE(bref.unpack(mixed_operation_mode_r15_present, 1)); + HANDLE_CODE(bref.unpack(sr_with_harq_ack_r15_present, 1)); + HANDLE_CODE(bref.unpack(sr_without_harq_ack_r15_present, 1)); + HANDLE_CODE(bref.unpack(nprach_format2_r15_present, 1)); + HANDLE_CODE(bref.unpack(add_tx_sib1_r15_present, 1)); + HANDLE_CODE(bref.unpack(npusch_minus3dot75k_hz_scs_tdd_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void phy_layer_params_nb_v1530_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (mixed_operation_mode_r15_present) { + j.write_str("mixedOperationMode-r15", "supported"); + } + if (sr_with_harq_ack_r15_present) { + j.write_str("sr-WithHARQ-ACK-r15", "supported"); + } + if (sr_without_harq_ack_r15_present) { + j.write_str("sr-WithoutHARQ-ACK-r15", "supported"); + } + if (nprach_format2_r15_present) { + j.write_str("nprach-Format2-r15", "supported"); + } + if (add_tx_sib1_r15_present) { + j.write_str("additionalTransmissionSIB1-r15", "supported"); + } + if (npusch_minus3dot75k_hz_scs_tdd_r15_present) { + j.write_str("npusch-3dot75kHz-SCS-TDD-r15", "supported"); } + j.end_obj(); } -sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::sc_mtch_carrier_cfg_r14_c_( - const sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_& other) + +// TDD-UE-Capability-NB-r15 ::= SEQUENCE +SRSASN_CODE tdd_ue_cap_nb_r15_s::pack(bit_ref& bref) const { - type_ = other.type(); - switch (type_) { - case types::dl_carrier_cfg_r14: - c.init(other.c.get()); - break; - case types::dl_carrier_idx_r14: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(ue_category_nb_r15_present, 1)); + HANDLE_CODE(bref.pack(phy_layer_params_rel13_r15_present, 1)); + HANDLE_CODE(bref.pack(phy_layer_params_rel14_r15_present, 1)); + HANDLE_CODE(bref.pack(phy_layer_params_v1530_present, 1)); + + if (phy_layer_params_rel13_r15_present) { + HANDLE_CODE(phy_layer_params_rel13_r15.pack(bref)); + } + if (phy_layer_params_rel14_r15_present) { + HANDLE_CODE(phy_layer_params_rel14_r15.pack(bref)); + } + if (phy_layer_params_v1530_present) { + HANDLE_CODE(phy_layer_params_v1530.pack(bref)); } + + return SRSASN_SUCCESS; } -sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_& sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::operator=( - const sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_& other) +SRSASN_CODE tdd_ue_cap_nb_r15_s::unpack(cbit_ref& bref) { - if (this == &other) { - return *this; + bref.unpack(ext, 1); + HANDLE_CODE(bref.unpack(ue_category_nb_r15_present, 1)); + HANDLE_CODE(bref.unpack(phy_layer_params_rel13_r15_present, 1)); + HANDLE_CODE(bref.unpack(phy_layer_params_rel14_r15_present, 1)); + HANDLE_CODE(bref.unpack(phy_layer_params_v1530_present, 1)); + + if (phy_layer_params_rel13_r15_present) { + HANDLE_CODE(phy_layer_params_rel13_r15.unpack(bref)); } - set(other.type()); - switch (type_) { - case types::dl_carrier_cfg_r14: - c.set(other.c.get()); - break; - case types::dl_carrier_idx_r14: - c.set(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); + if (phy_layer_params_rel14_r15_present) { + HANDLE_CODE(phy_layer_params_rel14_r15.unpack(bref)); + } + if (phy_layer_params_v1530_present) { + HANDLE_CODE(phy_layer_params_v1530.unpack(bref)); } - return *this; + return SRSASN_SUCCESS; } -dl_carrier_cfg_common_nb_r14_s& sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::set_dl_carrier_cfg_r14() +void tdd_ue_cap_nb_r15_s::to_json(json_writer& j) const { - set(types::dl_carrier_cfg_r14); - return c.get(); + j.start_obj(); + if (ue_category_nb_r15_present) { + j.write_str("ue-Category-NB-r15", "nb2"); + } + if (phy_layer_params_rel13_r15_present) { + j.write_fieldname("phyLayerParametersRel13-r15"); + phy_layer_params_rel13_r15.to_json(j); + } + if (phy_layer_params_rel14_r15_present) { + j.write_fieldname("phyLayerParametersRel14-r15"); + phy_layer_params_rel14_r15.to_json(j); + } + if (phy_layer_params_v1530_present) { + j.write_fieldname("phyLayerParameters-v1530"); + phy_layer_params_v1530.to_json(j); + } + j.end_obj(); } -uint8_t& sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::set_dl_carrier_idx_r14() + +// PhyLayerParameters-NB-v1700 ::= SEQUENCE +SRSASN_CODE phy_layer_params_nb_v1700_s::pack(bit_ref& bref) const { - set(types::dl_carrier_idx_r14); - return c.get(); + HANDLE_CODE(bref.pack(npdsch_minus16_qam_r17_present, 1)); + + return SRSASN_SUCCESS; } -void sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::to_json(json_writer& j) const +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(); - switch (type_) { - case types::dl_carrier_cfg_r14: - j.write_fieldname("dl-CarrierConfig-r14"); - c.get().to_json(j); - break; - case types::dl_carrier_idx_r14: - j.write_int("dl-CarrierIndex-r14", c.get()); - break; - default: - log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); + if (npdsch_minus16_qam_r17_present) { + j.write_str("npdsch-16QAM-r17", "supported"); } j.end_obj(); } -SRSASN_CODE sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::pack(bit_ref& bref) const + +// TDD-UE-Capability-NB-v1710 ::= SEQUENCE +SRSASN_CODE tdd_ue_cap_nb_v1710_s::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::dl_carrier_cfg_r14: - HANDLE_CODE(c.get().pack(bref)); - break; - case types::dl_carrier_idx_r14: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)0u, (uint8_t)15u)); - break; - default: - log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); - return SRSASN_ERROR_ENCODE_FAIL; + 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 sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::unpack(cbit_ref& bref) +SRSASN_CODE tdd_ue_cap_nb_v1710_s::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::dl_carrier_cfg_r14: - HANDLE_CODE(c.get().unpack(bref)); - break; - case types::dl_carrier_idx_r14: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)0u, (uint8_t)15u)); - break; - default: - log_invalid_choice_id(type_, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_"); - return SRSASN_ERROR_DECODE_FAIL; + 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(); +} -const char* sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::types_opts::to_string() const +// NTN-Parameters-NB-v1720 ::= SEQUENCE +SRSASN_CODE ntn_params_nb_v1720_s::pack(bit_ref& bref) const { - static const char* options[] = {"dl-CarrierConfig-r14", "dl-CarrierIndex-r14"}; - return convert_enum_idx(options, 2, value, "sc_mtch_info_nb_r14_s::sc_mtch_carrier_cfg_r14_c_::types"); + 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)); -const char* sc_mtch_info_nb_r14_s::npdcch_npdsch_max_tbs_sc_mtch_r14_opts::to_string() const + 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 { - static const char* options[] = {"n680", "n2536"}; - return convert_enum_idx(options, 2, value, "sc_mtch_info_nb_r14_s::npdcch_npdsch_max_tbs_sc_mtch_r14_e_"); + 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(); } -uint16_t sc_mtch_info_nb_r14_s::npdcch_npdsch_max_tbs_sc_mtch_r14_opts::to_number() const + +const char* ntn_params_nb_v1720_s::ntn_segmented_precompensation_gaps_r17_opts::to_string() const { - static const uint16_t options[] = {680, 2536}; - return map_enum_number(options, 2, value, "sc_mtch_info_nb_r14_s::npdcch_npdsch_max_tbs_sc_mtch_r14_e_"); + 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_"); } -const char* sc_mtch_info_nb_r14_s::npdcch_num_repeats_sc_mtch_r14_opts::to_string() const +// MeasParameters-NB-v1710 ::= SEQUENCE +SRSASN_CODE meas_params_nb_v1710_s::pack(bit_ref& bref) const { - static const char* options[] = {"r1", - "r2", - "r4", - "r8", - "r16", - "r32", - "r64", - "r128", - "r256", - "r512", - "r1024", - "r2048", - "spare4", - "spare3", - "spare2", - "spare1"}; - return convert_enum_idx(options, 16, value, "sc_mtch_info_nb_r14_s::npdcch_num_repeats_sc_mtch_r14_e_"); + 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; } -uint16_t sc_mtch_info_nb_r14_s::npdcch_num_repeats_sc_mtch_r14_opts::to_number() const +SRSASN_CODE meas_params_nb_v1710_s::unpack(cbit_ref& bref) { - static const uint16_t options[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; - return map_enum_number(options, 12, value, "sc_mtch_info_nb_r14_s::npdcch_num_repeats_sc_mtch_r14_e_"); + 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(); } -const char* sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_opts::to_string() const +// UE-Capability-NB-v1720-IEs ::= SEQUENCE +SRSASN_CODE ue_cap_nb_v1720_ies_s::pack(bit_ref& bref) const { - static const char* options[] = {"v1dot5", "v2", "v4", "v8", "v16", "v32", "v48", "v64"}; - return convert_enum_idx(options, 8, value, "sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_e_"); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + HANDLE_CODE(ntn_params_v1720.pack(bref)); + + return SRSASN_SUCCESS; } -float sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_opts::to_number() const +SRSASN_CODE ue_cap_nb_v1720_ies_s::unpack(cbit_ref& bref) { - static const float options[] = {1.5, 2.0, 4.0, 8.0, 16.0, 32.0, 48.0, 64.0}; - return map_enum_number(options, 8, value, "sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_e_"); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + HANDLE_CODE(ntn_params_v1720.unpack(bref)); + + return SRSASN_SUCCESS; } -const char* sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_opts::to_number_string() const +void ue_cap_nb_v1720_ies_s::to_json(json_writer& j) const { - static const char* options[] = {"1.5", "2", "4", "8", "16", "32", "48", "64"}; - return convert_enum_idx(options, 8, value, "sc_mtch_info_nb_r14_s::npdcch_start_sf_sc_mtch_r14_e_"); + 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(); } -const char* sc_mtch_info_nb_r14_s::npdcch_offset_sc_mtch_r14_opts::to_string() const +// NTN-Parameters-NB-r17 ::= SEQUENCE +SRSASN_CODE ntn_params_nb_r17_s::pack(bit_ref& bref) const { - static const char* options[] = { - "zero", "oneEighth", "oneQuarter", "threeEighth", "oneHalf", "fiveEighth", "threeQuarter", "sevenEighth"}; - return convert_enum_idx(options, 8, value, "sc_mtch_info_nb_r14_s::npdcch_offset_sc_mtch_r14_e_"); + 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; } -float sc_mtch_info_nb_r14_s::npdcch_offset_sc_mtch_r14_opts::to_number() const +SRSASN_CODE ntn_params_nb_r17_s::unpack(cbit_ref& bref) { - 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_nb_r14_s::npdcch_offset_sc_mtch_r14_e_"); + 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; } -const char* sc_mtch_info_nb_r14_s::npdcch_offset_sc_mtch_r14_opts::to_number_string() const +void ntn_params_nb_r17_s::to_json(json_writer& j) 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_nb_r14_s::npdcch_offset_sc_mtch_r14_e_"); + 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(); } -// SCPTMConfiguration-NB-r14 ::= SEQUENCE -SRSASN_CODE scptm_cfg_nb_r14_s::pack(bit_ref& bref) const +const char* ntn_params_nb_r17_s::ntn_scenario_support_r17_opts::to_string() const { - HANDLE_CODE(bref.pack(scptm_neighbour_cell_list_r14_present, 1)); - HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + 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)); - HANDLE_CODE(pack_dyn_seq_of(bref, sc_mtch_info_list_r14, 0, 64)); - if (scptm_neighbour_cell_list_r14_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, scptm_neighbour_cell_list_r14, 1, 8)); + if (meas_params_v1710_present) { + HANDLE_CODE(meas_params_v1710.pack(bref)); } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.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 scptm_cfg_nb_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE ue_cap_nb_v1710_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(scptm_neighbour_cell_list_r14_present, 1)); - HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(meas_params_v1710_present, 1)); HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - HANDLE_CODE(unpack_dyn_seq_of(sc_mtch_info_list_r14, bref, 0, 64)); - if (scptm_neighbour_cell_list_r14_present) { - HANDLE_CODE(unpack_dyn_seq_of(scptm_neighbour_cell_list_r14, bref, 1, 8)); + if (meas_params_v1710_present) { + HANDLE_CODE(meas_params_v1710.unpack(bref)); } - if (late_non_crit_ext_present) { - HANDLE_CODE(late_non_crit_ext.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 scptm_cfg_nb_r14_s::to_json(json_writer& j) const +void ue_cap_nb_v1710_ies_s::to_json(json_writer& j) const { j.start_obj(); - j.start_array("sc-mtch-InfoList-r14"); - for (const auto& e1 : sc_mtch_info_list_r14) { - e1.to_json(j); - } - j.end_array(); - if (scptm_neighbour_cell_list_r14_present) { - j.start_array("scptm-NeighbourCellList-r14"); - for (const auto& e1 : scptm_neighbour_cell_list_r14) { - e1.to_json(j); - } - j.end_array(); - } - if (late_non_crit_ext_present) { - j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + 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"); - j.start_obj(); - j.end_obj(); + non_crit_ext.to_json(j); } j.end_obj(); } -// SC-MCCH-MessageType-NB ::= CHOICE -void sc_mcch_msg_type_nb_c::set(types::options e) +// UE-Capability-NB-v1700-IEs ::= SEQUENCE +SRSASN_CODE ue_cap_nb_v1700_ies_s::pack(bit_ref& bref) const { - type_ = e; + 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; } -sc_mcch_msg_type_nb_c::c1_c_& sc_mcch_msg_type_nb_c::set_c1() +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 { - set(types::c1); - return c; + HANDLE_CODE(bref.pack(rai_support_enh_r16_present, 1)); + + return SRSASN_SUCCESS; } -void sc_mcch_msg_type_nb_c::set_msg_class_ext() +SRSASN_CODE mac_params_nb_v1610_s::unpack(cbit_ref& bref) { - set(types::msg_class_ext); + HANDLE_CODE(bref.unpack(rai_support_enh_r16_present, 1)); + + return SRSASN_SUCCESS; } -void sc_mcch_msg_type_nb_c::to_json(json_writer& j) const +void mac_params_nb_v1610_s::to_json(json_writer& j) const { j.start_obj(); - switch (type_) { - case types::c1: - j.write_fieldname("c1"); - c.to_json(j); - break; - case types::msg_class_ext: - break; - default: - log_invalid_choice_id(type_, "sc_mcch_msg_type_nb_c"); + if (rai_support_enh_r16_present) { + j.write_str("rai-SupportEnh-r16", "supported"); } j.end_obj(); } -SRSASN_CODE sc_mcch_msg_type_nb_c::pack(bit_ref& bref) const + +// MeasParameters-NB-r16 ::= SEQUENCE +SRSASN_CODE meas_params_nb_r16_s::pack(bit_ref& bref) const { - type_.pack(bref); - switch (type_) { - case types::c1: - HANDLE_CODE(c.pack(bref)); - break; - case types::msg_class_ext: - break; - default: - log_invalid_choice_id(type_, "sc_mcch_msg_type_nb_c"); - return SRSASN_ERROR_ENCODE_FAIL; - } + HANDLE_CODE(bref.pack(dl_ch_quality_report_r16_present, 1)); + return SRSASN_SUCCESS; } -SRSASN_CODE sc_mcch_msg_type_nb_c::unpack(cbit_ref& bref) +SRSASN_CODE meas_params_nb_r16_s::unpack(cbit_ref& bref) { - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::c1: - HANDLE_CODE(c.unpack(bref)); - break; - case types::msg_class_ext: - break; - default: - log_invalid_choice_id(type_, "sc_mcch_msg_type_nb_c"); - return SRSASN_ERROR_DECODE_FAIL; - } + HANDLE_CODE(bref.unpack(dl_ch_quality_report_r16_present, 1)); + return SRSASN_SUCCESS; } - -void sc_mcch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const +void meas_params_nb_r16_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("scptmConfiguration-r14"); - c.to_json(j); + if (dl_ch_quality_report_r16_present) { + j.write_str("dl-ChannelQualityReporting-r16", "supported"); + } j.end_obj(); } -SRSASN_CODE sc_mcch_msg_type_nb_c::c1_c_::pack(bit_ref& bref) const + +// PUR-Parameters-NB-r16 ::= SEQUENCE +SRSASN_CODE pur_params_nb_r16_s::pack(bit_ref& bref) const { - HANDLE_CODE(c.pack(bref)); + 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 sc_mcch_msg_type_nb_c::c1_c_::unpack(cbit_ref& bref) +SRSASN_CODE pur_params_nb_r16_s::unpack(cbit_ref& bref) { - HANDLE_CODE(c.unpack(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; } - -const char* sc_mcch_msg_type_nb_c::c1_c_::types_opts::to_string() const +void pur_params_nb_r16_s::to_json(json_writer& j) const { - static const char* options[] = {"scptmConfiguration-r14"}; - return convert_enum_idx(options, 1, value, "sc_mcch_msg_type_nb_c::c1_c_::types"); + 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(); } -const char* sc_mcch_msg_type_nb_c::types_opts::to_string() const +// PhyLayerParameters-NB-v1610 ::= SEQUENCE +SRSASN_CODE phy_layer_params_nb_v1610_s::pack(bit_ref& bref) const { - static const char* options[] = {"c1", "messageClassExtension"}; - return convert_enum_idx(options, 2, value, "sc_mcch_msg_type_nb_c::types"); + 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; } -uint8_t sc_mcch_msg_type_nb_c::types_opts::to_number() const +SRSASN_CODE phy_layer_params_nb_v1610_s::unpack(cbit_ref& bref) { - static const uint8_t options[] = {1}; - return map_enum_number(options, 1, value, "sc_mcch_msg_type_nb_c::types"); -} + 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)); -// SC-MCCH-Message-NB ::= SEQUENCE -SRSASN_CODE sc_mcch_msg_nb_s::pack(bit_ref& bref) const + return SRSASN_SUCCESS; +} +void phy_layer_params_nb_v1610_s::to_json(json_writer& j) const { - HANDLE_CODE(msg.pack(bref)); + 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(); +} - bref.align_bytes_zero(); +// 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 sc_mcch_msg_nb_s::unpack(cbit_ref& bref) +SRSASN_CODE son_params_nb_r16_s::unpack(cbit_ref& bref) { - HANDLE_CODE(msg.unpack(bref)); - - bref.align_bytes(); + HANDLE_CODE(bref.unpack(anr_report_r16_present, 1)); + HANDLE_CODE(bref.unpack(rach_report_r16_present, 1)); return SRSASN_SUCCESS; } -void sc_mcch_msg_nb_s::to_json(json_writer& j) const +void son_params_nb_r16_s::to_json(json_writer& j) const { - j.start_array(); j.start_obj(); - j.start_obj("SC-MCCH-Message-NB"); - j.write_fieldname("message"); - msg.to_json(j); - j.end_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(); - j.end_array(); } -// PhyLayerParameters-NB-v1430 ::= SEQUENCE -SRSASN_CODE phy_layer_params_nb_v1430_s::pack(bit_ref& bref) const +// TDD-UE-Capability-NB-v1610 ::= SEQUENCE +SRSASN_CODE tdd_ue_cap_nb_v1610_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(multi_carrier_nprach_r14_present, 1)); - HANDLE_CODE(bref.pack(two_harq_processes_r14_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_v1430_s::unpack(cbit_ref& bref) +SRSASN_CODE tdd_ue_cap_nb_v1610_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(multi_carrier_nprach_r14_present, 1)); - HANDLE_CODE(bref.unpack(two_harq_processes_r14_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_v1430_s::to_json(json_writer& j) const +void tdd_ue_cap_nb_v1610_s::to_json(json_writer& j) const { j.start_obj(); - if (multi_carrier_nprach_r14_present) { - j.write_str("multiCarrier-NPRACH-r14", "supported"); + if (slot_symbol_res_resv_dl_r16_present) { + j.write_str("slotSymbolResourceResvDL-r16", "supported"); } - if (two_harq_processes_r14_present) { - j.write_str("twoHARQ-Processes-r14", "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(); } -// PhyLayerParameters-NB-v1530 ::= SEQUENCE -SRSASN_CODE phy_layer_params_nb_v1530_s::pack(bit_ref& bref) const +// UE-Capability-NB-v16x0-IEs ::= SEQUENCE +SRSASN_CODE ue_cap_nb_v16x0_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(mixed_operation_mode_r15_present, 1)); - HANDLE_CODE(bref.pack(sr_with_harq_ack_r15_present, 1)); - HANDLE_CODE(bref.pack(sr_without_harq_ack_r15_present, 1)); - HANDLE_CODE(bref.pack(nprach_format2_r15_present, 1)); - HANDLE_CODE(bref.pack(add_tx_sib1_r15_present, 1)); - HANDLE_CODE(bref.pack(npusch_minus3dot75k_hz_scs_tdd_r15_present, 1)); + 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 phy_layer_params_nb_v1530_s::unpack(cbit_ref& bref) +SRSASN_CODE ue_cap_nb_v16x0_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(mixed_operation_mode_r15_present, 1)); - HANDLE_CODE(bref.unpack(sr_with_harq_ack_r15_present, 1)); - HANDLE_CODE(bref.unpack(sr_without_harq_ack_r15_present, 1)); - HANDLE_CODE(bref.unpack(nprach_format2_r15_present, 1)); - HANDLE_CODE(bref.unpack(add_tx_sib1_r15_present, 1)); - HANDLE_CODE(bref.unpack(npusch_minus3dot75k_hz_scs_tdd_r15_present, 1)); + 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 phy_layer_params_nb_v1530_s::to_json(json_writer& j) const +void ue_cap_nb_v16x0_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (mixed_operation_mode_r15_present) { - j.write_str("mixedOperationMode-r15", "supported"); - } - if (sr_with_harq_ack_r15_present) { - j.write_str("sr-WithHARQ-ACK-r15", "supported"); - } - if (sr_without_harq_ack_r15_present) { - j.write_str("sr-WithoutHARQ-ACK-r15", "supported"); - } - if (nprach_format2_r15_present) { - j.write_str("nprach-Format2-r15", "supported"); - } - if (add_tx_sib1_r15_present) { - j.write_str("additionalTransmissionSIB1-r15", "supported"); + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); } - if (npusch_minus3dot75k_hz_scs_tdd_r15_present) { - j.write_str("npusch-3dot75kHz-SCS-TDD-r15", "supported"); + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); } j.end_obj(); } -// TDD-UE-Capability-NB-r15 ::= SEQUENCE -SRSASN_CODE tdd_ue_cap_nb_r15_s::pack(bit_ref& bref) const +// UE-Capability-NB-v1610-IEs ::= SEQUENCE +SRSASN_CODE ue_cap_nb_v1610_ies_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(ue_category_nb_r15_present, 1)); - HANDLE_CODE(bref.pack(phy_layer_params_rel13_r15_present, 1)); - HANDLE_CODE(bref.pack(phy_layer_params_rel14_r15_present, 1)); - HANDLE_CODE(bref.pack(phy_layer_params_v1530_present, 1)); + 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 (phy_layer_params_rel13_r15_present) { - HANDLE_CODE(phy_layer_params_rel13_r15.pack(bref)); + if (pur_params_r16_present) { + HANDLE_CODE(pur_params_r16.pack(bref)); } - if (phy_layer_params_rel14_r15_present) { - HANDLE_CODE(phy_layer_params_rel14_r15.pack(bref)); + HANDLE_CODE(mac_params_v1610.pack(bref)); + if (phy_layer_params_v1610_present) { + HANDLE_CODE(phy_layer_params_v1610.pack(bref)); } - if (phy_layer_params_v1530_present) { - HANDLE_CODE(phy_layer_params_v1530.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 tdd_ue_cap_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE ue_cap_nb_v1610_ies_s::unpack(cbit_ref& bref) { - bref.unpack(ext, 1); - HANDLE_CODE(bref.unpack(ue_category_nb_r15_present, 1)); - HANDLE_CODE(bref.unpack(phy_layer_params_rel13_r15_present, 1)); - HANDLE_CODE(bref.unpack(phy_layer_params_rel14_r15_present, 1)); - HANDLE_CODE(bref.unpack(phy_layer_params_v1530_present, 1)); + 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 (phy_layer_params_rel13_r15_present) { - HANDLE_CODE(phy_layer_params_rel13_r15.unpack(bref)); + if (pur_params_r16_present) { + HANDLE_CODE(pur_params_r16.unpack(bref)); } - if (phy_layer_params_rel14_r15_present) { - HANDLE_CODE(phy_layer_params_rel14_r15.unpack(bref)); + HANDLE_CODE(mac_params_v1610.unpack(bref)); + if (phy_layer_params_v1610_present) { + HANDLE_CODE(phy_layer_params_v1610.unpack(bref)); } - if (phy_layer_params_v1530_present) { - HANDLE_CODE(phy_layer_params_v1530.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 tdd_ue_cap_nb_r15_s::to_json(json_writer& j) const +void ue_cap_nb_v1610_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (ue_category_nb_r15_present) { - j.write_str("ue-Category-NB-r15", "nb2"); + if (early_security_reactivation_r16_present) { + j.write_str("earlySecurityReactivation-r16", "supported"); } - if (phy_layer_params_rel13_r15_present) { - j.write_fieldname("phyLayerParametersRel13-r15"); - phy_layer_params_rel13_r15.to_json(j); + if (early_data_up_minus5_gc_r16_present) { + j.write_str("earlyData-UP-5GC-r16", "supported"); } - if (phy_layer_params_rel14_r15_present) { - j.write_fieldname("phyLayerParametersRel14-r15"); - phy_layer_params_rel14_r15.to_json(j); + if (pur_params_r16_present) { + j.write_fieldname("pur-Parameters-r16"); + pur_params_r16.to_json(j); } - if (phy_layer_params_v1530_present) { - j.write_fieldname("phyLayerParameters-v1530"); - phy_layer_params_v1530.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(); } @@ -18715,30 +25764,72 @@ SRSASN_CODE mac_params_nb_v1530_s::unpack(cbit_ref& bref) void mac_params_nb_v1530_s::to_json(json_writer& j) const { j.start_obj(); - if (sr_sps_bsr_r15_present) { - j.write_str("sr-SPS-BSR-r15", "supported"); + if (sr_sps_bsr_r15_present) { + j.write_str("sr-SPS-BSR-r15", "supported"); + } + j.end_obj(); +} + +// RLC-Parameters-NB-r15 ::= SEQUENCE +SRSASN_CODE rlc_params_nb_r15_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(rlc_um_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE rlc_params_nb_r15_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(rlc_um_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void rlc_params_nb_r15_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (rlc_um_r15_present) { + j.write_str("rlc-UM-r15", "supported"); } j.end_obj(); } -// RLC-Parameters-NB-r15 ::= SEQUENCE -SRSASN_CODE rlc_params_nb_r15_s::pack(bit_ref& bref) const +// UE-Capability-NB-v15x0-IEs ::= SEQUENCE +SRSASN_CODE ue_cap_nb_v15x0_ies_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(rlc_um_r15_present, 1)); + 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 rlc_params_nb_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE ue_cap_nb_v15x0_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(rlc_um_r15_present, 1)); + 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 rlc_params_nb_r15_s::to_json(json_writer& j) const +void ue_cap_nb_v15x0_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (rlc_um_r15_present) { - j.write_str("rlc-UM-r15", "supported"); + 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(); } @@ -18759,6 +25850,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; } @@ -18777,6 +25871,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; } @@ -18800,8 +25897,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(); } @@ -19039,6 +26135,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]) { @@ -19057,6 +26156,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; } @@ -19066,7 +26172,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]) { @@ -19085,6 +26191,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; } @@ -19110,6 +26223,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(); } @@ -19295,6 +26417,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 { @@ -19304,6 +26656,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; } @@ -19315,6 +26670,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; } @@ -19326,8 +26684,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(); } @@ -20493,6 +27850,12 @@ void ul_dcch_msg_type_nb_c::c1_c_::destroy_() case types::rrc_conn_resume_complete_r13: c.destroy(); break; + case types::ue_info_resp_r16: + c.destroy(); + break; + case types::pur_cfg_request_r16: + c.destroy(); + break; default: break; } @@ -20526,9 +27889,11 @@ void ul_dcch_msg_type_nb_c::c1_c_::set(types::options e) case types::rrc_conn_resume_complete_r13: c.init(); break; - case types::spare8: + case types::ue_info_resp_r16: + c.init(); break; - case types::spare7: + case types::pur_cfg_request_r16: + c.init(); break; case types::spare6: break; @@ -20576,9 +27941,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()); break; - case types::spare8: + case types::ue_info_resp_r16: + c.init(other.c.get()); break; - case types::spare7: + case types::pur_cfg_request_r16: + c.init(other.c.get()); break; case types::spare6: break; @@ -20629,9 +27996,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()); break; - case types::spare8: + case types::ue_info_resp_r16: + c.set(other.c.get()); break; - case types::spare7: + case types::pur_cfg_request_r16: + c.set(other.c.get()); break; case types::spare6: break; @@ -20693,13 +28062,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(); } -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(); } -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(); } void ul_dcch_msg_type_nb_c::c1_c_::set_spare6() { @@ -20761,9 +28132,13 @@ void ul_dcch_msg_type_nb_c::c1_c_::to_json(json_writer& j) const j.write_fieldname("rrcConnectionResumeComplete-r13"); c.get().to_json(j); break; - case types::spare8: + case types::ue_info_resp_r16: + j.write_fieldname("ueInformationResponse-r16"); + c.get().to_json(j); break; - case types::spare7: + case types::pur_cfg_request_r16: + j.write_fieldname("purConfigurationRequest-r16"); + c.get().to_json(j); break; case types::spare6: break; @@ -20810,9 +28185,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().pack(bref)); break; - case types::spare8: + case types::ue_info_resp_r16: + HANDLE_CODE(c.get().pack(bref)); break; - case types::spare7: + case types::pur_cfg_request_r16: + HANDLE_CODE(c.get().pack(bref)); break; case types::spare6: break; @@ -20862,9 +28239,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().unpack(bref)); break; - case types::spare8: + case types::ue_info_resp_r16: + HANDLE_CODE(c.get().unpack(bref)); break; - case types::spare7: + case types::pur_cfg_request_r16: + HANDLE_CODE(c.get().unpack(bref)); break; case types::spare6: break; @@ -20895,8 +28274,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", @@ -20945,3 +28324,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 d3ee8c55b9..1c7d390ad5 100644 --- a/lib/src/asn1/rrc_utils.cc +++ b/lib/src/asn1/rrc_utils.cc @@ -1214,7 +1214,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/lib/test/adt/circular_buffer_test.cc b/lib/test/adt/circular_buffer_test.cc index c64976812b..089e946304 100644 --- a/lib/test/adt/circular_buffer_test.cc +++ b/lib/test/adt/circular_buffer_test.cc @@ -27,7 +27,7 @@ namespace srsran { struct C { C() : val_ptr(new int(5)) { count++; } ~C() { count--; } - C(C&& other) : val_ptr(move(other.val_ptr)) { count++; } + C(C&& other) : val_ptr(std::move(other.val_ptr)) { count++; } C& operator=(C&&) = default; std::unique_ptr val_ptr; @@ -275,4 +275,4 @@ int main(int argc, char** argv) srsran::test_queue_block_api_2(); srsran::console("Success\n"); return SRSRAN_SUCCESS; -} \ No newline at end of file +} diff --git a/lib/test/asn1/rrc_test.cc b/lib/test/asn1/rrc_test.cc index 96571311e6..f68e92822b 100644 --- a/lib/test/asn1/rrc_test.cc +++ b/lib/test/asn1/rrc_test.cc @@ -143,7 +143,8 @@ int test_mib_msg() TESTASSERT(bcch_msg.sys_frame_num == "00011001"); TESTASSERT(bcch_msg.sched_info_sib1_br_r13 == 6); TESTASSERT(not bcch_msg.sys_info_unchanged_br_r15); - TESTASSERT(bcch_msg.spare == "0000"); + TESTASSERT(bcch_msg.part_earfcn_minus17.type().value == asn1::rrc::mib_s::part_earfcn_minus17_c_::types_opts::spare); + TESTASSERT(bcch_msg.spare == "0"); TESTASSERT((uint32_t)bref.distance(bref0) / 8 == rrc_msg_len); @@ -167,7 +168,7 @@ int test_bcch_dl_sch_msg() { // 000149001250400800094000A03F01000A7FC9800104286C000C uint8_t rrc_msg[] = {0x00, 0x01, 0x49, 0x00, 0x12, 0x50, 0x40, 0x08, 0x00, 0x09, 0x40, 0x00, 0xA0, - 0x3F, 0x01, 0x00, 0x0A, 0x7F, 0xC9, 0x80, 0x01, 0x04, 0x28, 0x6C, 0x00, 0x0C}; + 0x3F, 0x01, 0x00, 0x0A, 0x7F, 0xC9, 0x80, 0x01, 0x04, 0x28, 0x6C, 0x00, 0x0C}; uint32_t rrc_msg_len = sizeof(rrc_msg); cbit_ref bref(&rrc_msg[0], sizeof(rrc_msg)); cbit_ref bref0(&rrc_msg[0], sizeof(rrc_msg)); @@ -279,8 +280,8 @@ int test_bcch_dl_sch_msg3() { // 00830992B7EC9300A3424B000C000500205D6AAAF04200C01DDC801C4880030010A713228500 uint8_t rrc_msg[] = {0x00, 0x83, 0x09, 0x92, 0xB7, 0xEC, 0x93, 0x00, 0xA3, 0x42, 0x4B, 0x00, 0x0C, - 0x00, 0x05, 0x00, 0x20, 0x5D, 0x6A, 0xAA, 0xF0, 0x42, 0x00, 0xC0, 0x1D, 0xDC, - 0x80, 0x1C, 0x48, 0x80, 0x03, 0x00, 0x10, 0xA7, 0x13, 0x22, 0x85, 0x00}; + 0x00, 0x05, 0x00, 0x20, 0x5D, 0x6A, 0xAA, 0xF0, 0x42, 0x00, 0xC0, 0x1D, 0xDC, + 0x80, 0x1C, 0x48, 0x80, 0x03, 0x00, 0x10, 0xA7, 0x13, 0x22, 0x85, 0x00}; uint32_t rrc_msg_len = sizeof(rrc_msg); cbit_ref bref(&rrc_msg[0], sizeof(rrc_msg)); diff --git a/lib/test/asn1/srsran_asn1_rrc_ul_dcch_test.cc b/lib/test/asn1/srsran_asn1_rrc_ul_dcch_test.cc index c5d7407925..1f06e45a57 100644 --- a/lib/test/asn1/srsran_asn1_rrc_ul_dcch_test.cc +++ b/lib/test/asn1/srsran_asn1_rrc_ul_dcch_test.cc @@ -28,6 +28,7 @@ using namespace asn1; using namespace asn1::rrc; #define PCAP 0 +#define JSON_OUTPUT 1 #define TESTASSERT(cond) \ { \ @@ -641,12 +642,12 @@ int rrc_ue_cap_information_test() 0x40, 0x80, 0x82, 0x40, 0x50, 0x20, 0x20, 0x90, 0x14, 0x08, 0x02, 0x40, 0xc0, 0x10, 0x20, 0x04, 0x0c, 0x43, 0x2a, 0x78, 0x18, 0x00, 0x00, 0x40, 0x20, 0x0c, 0x03, 0x82, 0x60, 0xd8, 0x4a, 0x13, 0x85, 0x02, 0x08, 0x98, 0x26, 0x88, 0x00, 0x44, 0x02, 0x0a, 0x18, 0x32, 0xc0, 0x80, 0x00, 0x02, 0x01, 0x80, 0x70, 0x4c, 0x1b, 0x09, 0x42, 0x71, 0x36, - 0x90}; + 0x90, 0x00}; cbit_ref bref(rrc_msg, sizeof(rrc_msg)); ul_dcch_msg_s ul_dcch_msg; - ul_dcch_msg.unpack(bref); + TESTASSERT(ul_dcch_msg.unpack(bref) == SRSASN_SUCCESS); TESTASSERT(ul_dcch_msg.msg.type() == ul_dcch_msg_type_c::types::c1); TESTASSERT(ul_dcch_msg.msg.c1().type() == ul_dcch_msg_type_c::c1_c_::types::ue_cap_info); @@ -660,6 +661,19 @@ int rrc_ue_cap_information_test() TESTASSERT(ue_cap.crit_exts.c1().ue_cap_info_r8().ue_cap_rat_container_list[0].rat_type == asn1::rrc::rat_type_e::eutra); + asn1::rrc::ue_eutra_cap_s eutra_capabilities; + asn1::cbit_ref bref2(ue_cap.crit_exts.c1().ue_cap_info_r8().ue_cap_rat_container_list[0].ue_cap_rat_container.data(), + ue_cap.crit_exts.c1().ue_cap_info_r8().ue_cap_rat_container_list[0].ue_cap_rat_container.size()); + TESTASSERT(eutra_capabilities.unpack(bref2) == asn1::SRSASN_SUCCESS); + +#if JSON_OUTPUT + int unpacked_len = bref2.distance_bytes(); + asn1::json_writer json_writer1; + eutra_capabilities.to_json(json_writer1); + srslog::fetch_basic_logger("ASN1").info( + rrc_msg, sizeof(rrc_msg), "UE cap info unpacked (%d B): \n %s", unpacked_len, json_writer1.to_string().c_str()); +#endif + return 0; } diff --git a/srsenb/src/enb_cfg_parser.cc b/srsenb/src/enb_cfg_parser.cc index de6e7be54c..82bd3bd407 100644 --- a/srsenb/src/enb_cfg_parser.cc +++ b/srsenb/src/enb_cfg_parser.cc @@ -165,21 +165,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; } @@ -297,7 +297,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; @@ -315,21 +315,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/srsenb/src/stack/rrc/rrc_cell_cfg.cc b/srsenb/src/stack/rrc/rrc_cell_cfg.cc index b3ed06ddd7..fdbc02145e 100644 --- a/srsenb/src/stack/rrc/rrc_cell_cfg.cc +++ b/srsenb/src/stack/rrc/rrc_cell_cfg.cc @@ -43,6 +43,7 @@ enb_cell_common_list::enb_cell_common_list(const rrc_cfg_t& cfg_) : cfg(cfg_) asn1::number_to_enum(new_cell->mib.dl_bw, cfg.cell.nof_prb); new_cell->mib.phich_cfg.phich_res.value = (phich_cfg_s::phich_res_opts::options)cfg.cell.phich_resources; new_cell->mib.phich_cfg.phich_dur.value = (phich_cfg_s::phich_dur_opts::options)cfg.cell.phich_length; + new_cell->mib.part_earfcn_minus17.set_spare().from_number(0); // Set Cell SIB1 new_cell->sib1 = cfg.sib1; diff --git a/srsenb/src/stack/rrc/rrc_mobility.cc b/srsenb/src/stack/rrc/rrc_mobility.cc index 62a6cfda01..017f2c295f 100644 --- a/srsenb/src/stack/rrc/rrc_mobility.cc +++ b/srsenb/src/stack/rrc/rrc_mobility.cc @@ -382,6 +382,7 @@ bool rrc::ue::rrc_mobility::start_ho_preparation(uint32_t target_eci, hoprep_r8.as_cfg.source_mib.phich_cfg.phich_res.value = (asn1::rrc::phich_cfg_s::phich_res_e_::options)rrc_enb->cfg.cell.phich_resources; hoprep_r8.as_cfg.source_mib.sys_frame_num.from_number(0); // NOTE: The TS says this can go empty + hoprep_r8.as_cfg.source_mib.part_earfcn_minus17.set_spare().from_number(0); hoprep_r8.as_cfg.source_sib_type1 = src_cell_cfg->sib1; hoprep_r8.as_cfg.source_sib_type2 = src_cell_cfg->sib2; asn1::number_to_enum(hoprep_r8.as_cfg.ant_info_common.ant_ports_count, rrc_enb->cfg.cell.nof_ports); diff --git a/srsue/hdr/stack/rrc/rrc_cell.h b/srsue/hdr/stack/rrc/rrc_cell.h index 3621104a01..1aceac5592 100644 --- a/srsue/hdr/stack/rrc/rrc_cell.h +++ b/srsue/hdr/stack/rrc/rrc_cell.h @@ -40,6 +40,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: @@ -138,7 +141,7 @@ class meas_cell_nr : public meas_cell std::string to_string() const; - asn1::rrc_nr::sib1_s sib1 = {}; + asn1::rrc_nr::sib1_s sib1 = {}; }; class meas_cell_eutra : public meas_cell @@ -147,9 +150,9 @@ class meas_cell_eutra : public meas_cell 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; } @@ -164,7 +167,7 @@ class meas_cell_eutra : public meas_cell 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 20e718b128..5d5ab8d6e1 100644 --- a/srsue/src/stack/rrc/rrc.cc +++ b/srsue/src/stack/rrc/rrc.cc @@ -1370,6 +1370,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 @@ -1395,7 +1410,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()) { @@ -1419,7 +1434,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())); } } } @@ -1438,7 +1453,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 6afe26b196..9abc2d68e3 100644 --- a/srsue/src/stack/rrc/rrc_cell.cc +++ b/srsue/src/stack/rrc/rrc_cell.cc @@ -23,6 +23,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); @@ -59,7 +73,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 46c89c14ca..51103dba30 100644 --- a/srsue/src/stack/rrc/rrc_meas.cc +++ b/srsue/src/stack/rrc/rrc_meas.cc @@ -1228,17 +1228,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); } } @@ -1250,19 +1250,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); } } } @@ -1284,17 +1284,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 @@ -1305,14 +1305,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 5baf58471a..6b2de8e2bc 100644 --- a/srsue/src/stack/rrc/rrc_procedures.cc +++ b/srsue/src/stack/rrc/rrc_procedures.cc @@ -200,7 +200,7 @@ std::pair 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}; } }