From e27c0869e5d64a93f7b5470682e3135541d82abe Mon Sep 17 00:00:00 2001 From: Francisco Paisana Date: Thu, 17 Dec 2020 10:56:24 +0000 Subject: [PATCH] update RRC ASN1 to 2020-09 v15.11 --- lib/include/srslte/asn1/rrc.h | 142 ++ lib/include/srslte/asn1/rrc/bcch_msg.h | 134 +- lib/include/srslte/asn1/rrc/common.h | 1 + lib/include/srslte/asn1/rrc/dl_ccch_msg.h | 35 +- lib/include/srslte/asn1/rrc/dl_dcch_msg.h | 120 +- lib/include/srslte/asn1/rrc/ho_cmd.h | 37 +- lib/include/srslte/asn1/rrc/meascfg.h | 640 ++++---- lib/include/srslte/asn1/rrc/phy_ded.h | 58 +- lib/include/srslte/asn1/rrc/rr_common.h | 23 + lib/include/srslte/asn1/rrc/rr_ded.h | 70 +- lib/include/srslte/asn1/rrc/si.h | 48 +- lib/include/srslte/asn1/rrc/uecap.h | 395 ++++- lib/include/srslte/asn1/rrc/ul_ccch_msg.h | 23 +- lib/include/srslte/asn1/rrc/ul_dcch_msg.h | 81 +- lib/include/srslte/asn1/rrc_nbiot.h | 182 ++- lib/src/asn1/rrc.cc | 584 +++++-- lib/src/asn1/rrc/bcch_msg.cc | 389 ++++- lib/src/asn1/rrc/dl_ccch_msg.cc | 46 +- lib/src/asn1/rrc/dl_dcch_msg.cc | 246 ++- lib/src/asn1/rrc/ho_cmd.cc | 119 +- lib/src/asn1/rrc/meascfg.cc | 1691 ++++++++++++--------- lib/src/asn1/rrc/phy_ded.cc | 113 +- lib/src/asn1/rrc/rr_common.cc | 61 +- lib/src/asn1/rrc/rr_ded.cc | 348 +++-- lib/src/asn1/rrc/si.cc | 45 +- lib/src/asn1/rrc/uecap.cc | 1212 +++++++++++++-- lib/src/asn1/rrc/ul_ccch_msg.cc | 48 +- lib/src/asn1/rrc/ul_dcch_msg.cc | 197 +-- lib/src/asn1/rrc_nbiot.cc | 434 +++++- lib/test/asn1/rrc_test.cc | 2 +- srsue/src/stack/rrc/rrc.cc | 16 +- 31 files changed, 5664 insertions(+), 1876 deletions(-) diff --git a/lib/include/srslte/asn1/rrc.h b/lib/include/srslte/asn1/rrc.h index 954411faf..b523157c9 100644 --- a/lib/include/srslte/asn1/rrc.h +++ b/lib/include/srslte/asn1/rrc.h @@ -1724,6 +1724,148 @@ struct sc_mcch_msg_r13_s { void to_json(json_writer& j) const; }; +// FailureReportSCG-v12d0 ::= SEQUENCE +struct fail_report_scg_v12d0_s { + bool meas_result_neigh_cells_v12d0_present = false; + meas_result_list2_eutra_v9e0_l meas_result_neigh_cells_v12d0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// SCGFailureInformation-v12d0b-IEs ::= SEQUENCE +struct scg_fail_info_v12d0b_ies_s { + bool fail_report_scg_v12d0_present = false; + bool non_crit_ext_present = false; + fail_report_scg_v12d0_s fail_report_scg_v12d0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// MIMO-WeightedLayersCapabilities-r13 ::= SEQUENCE +struct mimo_weighted_layers_cap_r13_s { + struct rel_weight_two_layers_r13_opts { + enum options { v1, v1dot25, v1dot5, v1dot75, v2, v2dot5, v3, v4, nulltype } value; + typedef float number_type; + + std::string to_string() const; + float to_number() const; + std::string to_number_string() const; + }; + typedef enumerated rel_weight_two_layers_r13_e_; + struct rel_weight_four_layers_r13_opts { + enum options { v1, v1dot25, v1dot5, v1dot75, v2, v2dot5, v3, v4, nulltype } value; + typedef float number_type; + + std::string to_string() const; + float to_number() const; + std::string to_number_string() const; + }; + typedef enumerated rel_weight_four_layers_r13_e_; + struct rel_weight_eight_layers_r13_opts { + enum options { v1, v1dot25, v1dot5, v1dot75, v2, v2dot5, v3, v4, nulltype } value; + typedef float number_type; + + std::string to_string() const; + float to_number() const; + std::string to_number_string() const; + }; + typedef enumerated rel_weight_eight_layers_r13_e_; + + // member variables + bool rel_weight_four_layers_r13_present = false; + bool rel_weight_eight_layers_r13_present = false; + rel_weight_two_layers_r13_e_ rel_weight_two_layers_r13; + rel_weight_four_layers_r13_e_ rel_weight_four_layers_r13; + rel_weight_eight_layers_r13_e_ rel_weight_eight_layers_r13; + uint8_t total_weighted_layers_r13 = 2; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// MIMO-UE-Parameters-v13e0 ::= SEQUENCE +struct mimo_ue_params_v13e0_s { + bool mimo_weighted_layers_cap_r13_present = false; + mimo_weighted_layers_cap_r13_s mimo_weighted_layers_cap_r13; + + // 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 + 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; + // ... + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// PhyLayerParameters-v13e0 ::= SEQUENCE +struct phy_layer_params_v13e0_s { + mimo_ue_params_v13e0_s mimo_ue_params_v13e0; + + // 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-v13e0b-IEs ::= SEQUENCE +struct ue_eutra_cap_v13e0b_ies_s { + bool non_crit_ext_present = false; + phy_layer_params_v13e0_s phy_layer_params_v13e0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// SCG-Config-v12i0b-IEs ::= SEQUENCE +struct scg_cfg_v12i0b_ies_s { + bool scg_radio_cfg_v12i0_present = false; + bool non_crit_ext_present = false; + scg_cfg_part_scg_v12f0_s scg_radio_cfg_v12i0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // CSI-RS-TriggeredList-r12 ::= SEQUENCE (SIZE (1..96)) OF INTEGER (1..96) using csi_rs_triggered_list_r12_l = dyn_array; diff --git a/lib/include/srslte/asn1/rrc/bcch_msg.h b/lib/include/srslte/asn1/rrc/bcch_msg.h index d10a35dc2..3729a522b 100644 --- a/lib/include/srslte/asn1/rrc/bcch_msg.h +++ b/lib/include/srslte/asn1/rrc/bcch_msg.h @@ -42,6 +42,35 @@ struct bcch_bch_msg_s { void to_json(json_writer& j) const; }; +// SIB-Type-v12j0 ::= ENUMERATED +struct sib_type_v12j0_opts { + enum options { + sib_type19_v1250, + sib_type20_v1310, + sib_type21_v1430, + sib_type24_v1530, + sib_type25_v1530, + sib_type26_v1530, + spare10, + spare9, + spare8, + spare7, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1, + // ... + nulltype + } value; + typedef uint8_t number_type; + + std::string to_string() const; + uint8_t to_number() const; +}; +typedef enumerated sib_type_v12j0_e; + // NS-PmaxValue-v10l0 ::= SEQUENCE struct ns_pmax_value_v10l0_s { bool add_spec_emission_v10l0_present = false; @@ -53,6 +82,9 @@ struct ns_pmax_value_v10l0_s { void to_json(json_writer& j) const; }; +// SIB-MappingInfo-v12j0 ::= SEQUENCE (SIZE (1..31)) OF SIB-Type-v12j0 +using sib_map_info_v12j0_l = bounded_array; + // InterFreqCarrierFreqInfo-v1360 ::= SEQUENCE struct inter_freq_carrier_freq_info_v1360_s { bool cell_sel_info_ce1_v1360_present = false; @@ -79,6 +111,28 @@ struct ns_pmax_value_r10_s { void to_json(json_writer& j) const; }; +// SchedulingInfo-v12j0 ::= SEQUENCE +struct sched_info_v12j0_s { + bool sib_map_info_v12j0_present = false; + sib_map_info_v12j0_l sib_map_info_v12j0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// SchedulingInfoExt-r12 ::= SEQUENCE +struct sched_info_ext_r12_s { + si_periodicity_r12_e si_periodicity_r12; + sib_map_info_v12j0_l sib_map_info_r12; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // BandClassInfoCDMA2000 ::= SEQUENCE struct band_class_info_cdma2000_s { bool ext = false; @@ -124,6 +178,12 @@ using pci_list_cdma2000_l = bounded_array; // PhysCellIdListCDMA2000-v920 ::= SEQUENCE (SIZE (0..24)) OF INTEGER (0..511) using pci_list_cdma2000_v920_l = bounded_array; +// SchedulingInfoList-v12j0 ::= SEQUENCE (SIZE (1..32)) OF SchedulingInfo-v12j0 +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; + // SystemInformationBlockType2-v13c0-IEs ::= SEQUENCE struct sib_type2_v13c0_ies_s { bool ul_pwr_ctrl_common_v13c0_present = false; @@ -166,6 +226,18 @@ struct multi_band_info_v9e0_s { // MultiBandInfoList-v10j0 ::= SEQUENCE (SIZE (1..8)) OF NS-PmaxList-r10 using multi_band_info_list_v10j0_l = dyn_array; +// NS-PmaxValueNR-r15 ::= SEQUENCE +struct ns_pmax_value_nr_r15_s { + bool add_pmax_nr_r15_present = false; + int8_t add_pmax_nr_r15 = -30; + uint8_t add_spec_emission_nr_r15 = 0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // NeighCellCDMA2000-r11 ::= SEQUENCE struct neigh_cell_cdma2000_r11_s { using neigh_freq_info_list_r11_l_ = dyn_array; @@ -212,6 +284,20 @@ struct redist_neigh_cell_r13_s { void to_json(json_writer& j) const; }; +// SystemInformationBlockType1-v12j0-IEs ::= SEQUENCE +struct sib_type1_v12j0_ies_s { + bool sched_info_list_v12j0_present = false; + bool sched_info_list_ext_r12_present = false; + 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; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // SystemInformationBlockType2-v10n0-IEs ::= SEQUENCE struct sib_type2_v10n0_ies_s { bool late_non_crit_ext_present = false; @@ -332,17 +418,8 @@ struct inter_freq_neigh_cell_info_s { // MultiBandInfoList-v9e0 ::= SEQUENCE (SIZE (1..8)) OF MultiBandInfo-v9e0 using multi_band_info_list_v9e0_l = dyn_array; -// NS-PmaxValueNR-r15 ::= SEQUENCE -struct ns_pmax_value_nr_r15_s { - bool add_pmax_nr_r15_present = false; - int8_t add_pmax_nr_r15 = -30; - uint8_t add_spec_emission_nr_r15 = 0; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; +// NS-PmaxListNR-r15 ::= SEQUENCE (SIZE (1..8)) OF NS-PmaxValueNR-r15 +using ns_pmax_list_nr_r15_l = dyn_array; // NeighCellsPerBandclassListCDMA2000 ::= SEQUENCE (SIZE (1..16)) OF NeighCellsPerBandclassCDMA2000 using neigh_cells_per_bandclass_list_cdma2000_l = dyn_array; @@ -414,6 +491,19 @@ using redist_neigh_cell_list_r13_l = dyn_array; // SL-SyncConfigListNFreq-r13 ::= SEQUENCE (SIZE (1..16)) OF SL-SyncConfigNFreq-r13 using sl_sync_cfg_list_nfreq_r13_l = dyn_array; +// SystemInformationBlockType1-v10x0-IEs ::= SEQUENCE +struct sib_type1_v10x0_ies_s { + bool late_non_crit_ext_present = false; + bool non_crit_ext_present = false; + dyn_octstring late_non_crit_ext; + sib_type1_v12j0_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; +}; + // SystemInformationBlockType2-v10m0-IEs ::= SEQUENCE struct sib_type2_v10m0_ies_s { struct freq_info_v10l0_s_ { @@ -559,8 +649,11 @@ using mbms_sai_list_r11_l = dyn_array; // MultiBandInfoList ::= SEQUENCE (SIZE (1..8)) OF INTEGER (1..64) using multi_band_info_list_l = bounded_array; -// NS-PmaxListNR-r15 ::= SEQUENCE (SIZE (1..8)) OF NS-PmaxValueNR-r15 -using ns_pmax_list_nr_r15_l = dyn_array; +// MultiBandNsPmaxListNR-1-v1550 ::= SEQUENCE (SIZE (1..31)) OF NS-PmaxListNR-r15 +using multi_band_ns_pmax_list_nr_minus1_v1550_l = dyn_array; + +// MultiBandNsPmaxListNR-v1550 ::= SEQUENCE (SIZE (1..32)) OF NS-PmaxListNR-r15 +using multi_band_ns_pmax_list_nr_v1550_l = dyn_array; // NeighCellCDMA2000 ::= SEQUENCE struct neigh_cell_cdma2000_s { @@ -698,6 +791,7 @@ struct sib_type1_v10l0_ies_s { bool non_crit_ext_present = false; ns_pmax_list_v10l0_l freq_band_info_v10l0; multi_band_info_list_v10l0_l multi_band_info_list_v10l0; + sib_type1_v10x0_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -794,11 +888,15 @@ struct carrier_freq_nr_r15_s { int8_t q_rx_lev_min_sul_r15 = -70; int8_t p_max_nr_r15 = -30; ns_pmax_list_nr_r15_l ns_pmax_list_nr_r15; - int8_t q_qual_min_r15 = -34; + int8_t q_qual_min_r15 = -43; bool derive_ssb_idx_from_cell_r15 = false; uint8_t max_rs_idx_cell_qual_r15 = 1; thres_list_nr_r15_s thresh_rs_idx_r15; // ... + // group 0 + copy_ptr multi_band_ns_pmax_list_nr_v1550; + copy_ptr multi_band_ns_pmax_list_nr_sul_v1550; + copy_ptr ssb_to_measure_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1225,7 +1323,7 @@ struct mbsfn_area_info_r9_s { mcch_mod_period_v1430_e_ mcch_mod_period_v1430; }; struct subcarrier_spacing_mbms_r14_opts { - enum options { khz_minus7dot5, khz_minus1dot25, nulltype } value; + enum options { khz7dot5, khz1dot25, nulltype } value; typedef float number_type; std::string to_string() const; @@ -2967,14 +3065,16 @@ struct sib_type26_r15_s { bool sync_freq_list_r15_present = false; bool slss_tx_multi_freq_r15_present = false; bool v2x_freq_sel_cfg_list_r15_present = false; - bool thresh_s_rssi_cbr_r14_present = false; + bool thresh_s_rssi_cbr_r15_present = false; sl_inter_freq_info_list_v2x_r14_l v2x_inter_freq_info_list_r15; sl_cbr_pppp_tx_cfg_list_r15_l cbr_pssch_tx_cfg_list_r15; sl_v2x_packet_dupl_cfg_r15_s v2x_packet_dupl_cfg_r15; sl_v2x_sync_freq_list_r15_l sync_freq_list_r15; sl_v2x_freq_sel_cfg_list_r15_l v2x_freq_sel_cfg_list_r15; - uint8_t thresh_s_rssi_cbr_r14 = 0; + uint8_t thresh_s_rssi_cbr_r15 = 0; // ... + bool late_non_crit_ext_present = false; + dyn_octstring late_non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; diff --git a/lib/include/srslte/asn1/rrc/common.h b/lib/include/srslte/asn1/rrc/common.h index fb9f90b56..41511dec6 100644 --- a/lib/include/srslte/asn1/rrc/common.h +++ b/lib/include/srslte/asn1/rrc/common.h @@ -112,6 +112,7 @@ namespace rrc { #define ASN1_RRC_MAX_MEAS_ID_R12 64 #define ASN1_RRC_MAX_MULTI_BANDS 8 #define ASN1_RRC_MAX_MULTI_BANDS_NR_R15 32 +#define ASN1_RRC_MAX_MULTI_BANDS_NR_MINUS1_R15 31 #define ASN1_RRC_MAX_NS_PMAX_R10 8 #define ASN1_RRC_MAX_NAICS_ENTRIES_R12 8 #define ASN1_RRC_MAX_NEIGH_CELL_R12 8 diff --git a/lib/include/srslte/asn1/rrc/dl_ccch_msg.h b/lib/include/srslte/asn1/rrc/dl_ccch_msg.h index 72103ad22..6bf7548ca 100644 --- a/lib/include/srslte/asn1/rrc/dl_ccch_msg.h +++ b/lib/include/srslte/asn1/rrc/dl_ccch_msg.h @@ -337,6 +337,18 @@ struct rrc_conn_setup_v8a0_ies_s { void to_json(json_writer& j) const; }; +// RRCEarlyDataComplete-v1590-IEs ::= SEQUENCE +struct rrc_early_data_complete_v1590_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; +}; + // RedirectedCarrierInfo-r15-IEs ::= CHOICE struct redirected_carrier_info_r15_ies_c { struct types_opts { @@ -513,17 +525,18 @@ struct rrc_conn_setup_r8_ies_s { // RRCEarlyDataComplete-r15-IEs ::= SEQUENCE struct rrc_early_data_complete_r15_ies_s { - bool ded_info_nas_r15_present = false; - bool extended_wait_time_r15_present = false; - bool idle_mode_mob_ctrl_info_r15_present = false; - bool idle_mode_mob_ctrl_info_ext_r15_present = false; - bool redirected_carrier_info_r15_present = false; - bool non_crit_ext_present = false; - dyn_octstring ded_info_nas_r15; - uint16_t extended_wait_time_r15 = 1; - idle_mode_mob_ctrl_info_s idle_mode_mob_ctrl_info_r15; - idle_mode_mob_ctrl_info_v9e0_s idle_mode_mob_ctrl_info_ext_r15; - redirected_carrier_info_r15_ies_c redirected_carrier_info_r15; + bool ded_info_nas_r15_present = false; + bool extended_wait_time_r15_present = false; + bool idle_mode_mob_ctrl_info_r15_present = false; + bool idle_mode_mob_ctrl_info_ext_r15_present = false; + bool redirected_carrier_info_r15_present = false; + bool non_crit_ext_present = false; + dyn_octstring ded_info_nas_r15; + uint16_t extended_wait_time_r15 = 1; + idle_mode_mob_ctrl_info_s idle_mode_mob_ctrl_info_r15; + idle_mode_mob_ctrl_info_v9e0_s idle_mode_mob_ctrl_info_ext_r15; + redirected_carrier_info_r15_ies_c redirected_carrier_info_r15; + rrc_early_data_complete_v1590_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; diff --git a/lib/include/srslte/asn1/rrc/dl_dcch_msg.h b/lib/include/srslte/asn1/rrc/dl_dcch_msg.h index e4a798719..1b406feb0 100644 --- a/lib/include/srslte/asn1/rrc/dl_dcch_msg.h +++ b/lib/include/srslte/asn1/rrc/dl_dcch_msg.h @@ -283,6 +283,16 @@ 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; + + std::string 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 { @@ -644,15 +654,42 @@ using sl_tx_pool_to_add_mod_list_v2x_r14_l = dyn_array; -// SubframeAssignment-r15 ::= ENUMERATED -struct sf_assign_r15_opts { - enum options { sa0, sa1, sa2, sa3, sa4, sa5, sa6, nulltype } value; - typedef uint8_t number_type; +// 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; + }; + typedef setup_e types; - std::string to_string() const; - uint8_t to_number() const; + // 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("setup", type_.to_string(), "TDM-PatternConfig-r15"); + return c; + } + const setup_s_& setup() const + { + assert_choice_type("setup", type_.to_string(), "TDM-PatternConfig-r15"); + return c; + } + setup_s_& set_setup() + { + set(types::setup); + return c; + } + +private: + types type_; + setup_s_ c; }; -typedef enumerated sf_assign_r15_e; // TunnelConfigLWIP-r13 ::= SEQUENCE struct tunnel_cfg_lwip_r13_s { @@ -914,41 +951,6 @@ struct rrc_conn_recfg_v1510_ies_s { return c; } - private: - types type_; - setup_s_ c; - }; - struct tdm_pattern_cfg_r15_c_ { - struct setup_s_ { - sf_assign_r15_e sf_assign_r15; - uint8_t harq_offset_r15 = 0; - }; - typedef setup_e types; - - // 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("setup", type_.to_string(), "tdm-PatternConfig-r15"); - return c; - } - const setup_s_& setup() const - { - assert_choice_type("setup", type_.to_string(), "tdm-PatternConfig-r15"); - return c; - } - setup_s_& set_setup() - { - set(types::setup); - return c; - } - private: types type_; setup_s_ c; @@ -965,7 +967,7 @@ struct rrc_conn_recfg_v1510_ies_s { uint32_t sk_counter_r15 = 0; dyn_octstring nr_radio_bearer_cfg1_r15; dyn_octstring nr_radio_bearer_cfg2_r15; - tdm_pattern_cfg_r15_c_ tdm_pattern_cfg_r15; + tdm_pattern_cfg_r15_c tdm_pattern_cfg_r15; rrc_conn_recfg_v1530_ies_s non_crit_ext; // sequence methods @@ -1519,6 +1521,17 @@ struct rrc_conn_recfg_v1430_ies_s { void to_json(json_writer& j) const; }; +// 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; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // RadioResourceConfigDedicated-v1370 ::= SEQUENCE struct rr_cfg_ded_v1370_s { bool phys_cfg_ded_v1370_present = false; @@ -1554,6 +1567,12 @@ struct scg_cfg_part_scg_r12_s { // group 3 copy_ptr scell_group_to_release_list_scg_r15; copy_ptr scell_group_to_add_mod_list_scg_r15; + // group 4 + copy_ptr meas_cfg_sn_r15; + copy_ptr tdm_pattern_cfg_ne_dc_r15; + // group 5 + bool p_max_eutra_r15_present = false; + int8_t p_max_eutra_r15 = -30; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1677,7 +1696,7 @@ struct rrc_inactive_cfg_r15_s { bool ran_notif_area_info_r15_present = false; bool periodic_rnau_timer_r15_present = false; bool next_hop_chaining_count_r15_present = false; - bool non_crit_ext_present = false; + bool dummy_present = false; fixed_bitstring<40> full_i_rnti_r15; fixed_bitstring<24> short_i_rnti_r15; ran_paging_cycle_r15_e_ ran_paging_cycle_r15; @@ -1729,9 +1748,10 @@ struct rrc_conn_recfg_v1370_ies_s { // RRCConnectionRelease-v1540-IEs ::= SEQUENCE struct rrc_conn_release_v1540_ies_s { - bool wait_time_present = false; - bool non_crit_ext_present = false; - uint8_t wait_time = 1; + bool wait_time_present = false; + bool non_crit_ext_present = false; + uint8_t wait_time = 1; + rrc_conn_release_v15b0_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3161,16 +3181,16 @@ struct other_cfg_r9_s { }; struct meas_cfg_app_layer_r15_c_ { struct setup_s_ { - struct service_type_opts { + struct service_type_r15_opts { enum options { qoe, qoemtsi, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value; std::string to_string() const; }; - typedef enumerated service_type_e_; + typedef enumerated service_type_r15_e_; // member variables bounded_octstring<1, 1000> meas_cfg_app_layer_container_r15; - service_type_e_ service_type; + service_type_r15_e_ service_type_r15; }; typedef setup_e types; diff --git a/lib/include/srslte/asn1/rrc/ho_cmd.h b/lib/include/srslte/asn1/rrc/ho_cmd.h index 959de5c0f..58035ef8d 100644 --- a/lib/include/srslte/asn1/rrc/ho_cmd.h +++ b/lib/include/srslte/asn1/rrc/ho_cmd.h @@ -40,8 +40,8 @@ struct scg_cfg_v13c0_ies_s { void to_json(json_writer& j) const; }; -// SCG-Config-v12x0-IEs ::= SEQUENCE -struct scg_cfg_v12x0_ies_s { +// SCG-Config-v12i0a-IEs ::= SEQUENCE +struct scg_cfg_v12i0a_ies_s { bool late_non_crit_ext_present = false; bool non_crit_ext_present = false; dyn_octstring late_non_crit_ext; @@ -58,7 +58,26 @@ struct scg_cfg_r12_ies_s { bool scg_radio_cfg_r12_present = false; bool non_crit_ext_present = false; scg_cfg_part_scg_r12_s scg_radio_cfg_r12; - scg_cfg_v12x0_ies_s non_crit_ext; + scg_cfg_v12i0a_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; +}; + +// AS-Config-v1550 ::= SEQUENCE +struct as_cfg_v1550_s { + struct tdm_pattern_cfg_r15_s_ { + sf_assign_r15_e sf_assign_r15; + uint8_t harq_offset_r15 = 0; + }; + + // member variables + bool tdm_pattern_cfg_r15_present = false; + bool p_max_eutra_r15_present = false; + tdm_pattern_cfg_r15_s_ tdm_pattern_cfg_r15; + int8_t p_max_eutra_r15 = -30; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -81,6 +100,14 @@ struct as_cfg_nr_r15_s { void to_json(json_writer& j) const; }; +// AS-ConfigNR-v1570 ::= SEQUENCE +struct as_cfg_nr_v1570_s { + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // SCG-Config-r12 ::= SEQUENCE struct scg_cfg_r12_s { struct crit_exts_c_ { @@ -188,6 +215,10 @@ struct as_cfg_s { copy_ptr source_cfg_scg_r12; // group 3 copy_ptr as_cfg_nr_r15; + // group 4 + copy_ptr as_cfg_v1550; + // group 5 + copy_ptr as_cfg_nr_v1570; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; diff --git a/lib/include/srslte/asn1/rrc/meascfg.h b/lib/include/srslte/asn1/rrc/meascfg.h index c66b4e6b0..3eb40290f 100644 --- a/lib/include/srslte/asn1/rrc/meascfg.h +++ b/lib/include/srslte/asn1/rrc/meascfg.h @@ -399,6 +399,81 @@ struct ss_rssi_meas_r15_s { bool operator!=(const ss_rssi_meas_r15_s& other) const { return not(*this == other); } }; +// SSB-ToMeasure-r15 ::= CHOICE +struct ssb_to_measure_r15_c { + struct types_opts { + enum options { short_bitmap_r15, medium_bitmap_r15, long_bitmap_r15, nulltype } value; + + std::string to_string() const; + }; + typedef enumerated types; + + // choice methods + ssb_to_measure_r15_c() = default; + ssb_to_measure_r15_c(const ssb_to_measure_r15_c& other); + ssb_to_measure_r15_c& operator=(const ssb_to_measure_r15_c& other); + ~ssb_to_measure_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 ssb_to_measure_r15_c& other) const; + bool operator!=(const ssb_to_measure_r15_c& other) const { return not(*this == other); } + // getters + fixed_bitstring<4>& short_bitmap_r15() + { + assert_choice_type("shortBitmap-r15", type_.to_string(), "SSB-ToMeasure-r15"); + return c.get >(); + } + fixed_bitstring<8>& medium_bitmap_r15() + { + assert_choice_type("mediumBitmap-r15", type_.to_string(), "SSB-ToMeasure-r15"); + return c.get >(); + } + fixed_bitstring<64>& long_bitmap_r15() + { + assert_choice_type("longBitmap-r15", type_.to_string(), "SSB-ToMeasure-r15"); + return c.get >(); + } + const fixed_bitstring<4>& short_bitmap_r15() const + { + assert_choice_type("shortBitmap-r15", type_.to_string(), "SSB-ToMeasure-r15"); + return c.get >(); + } + const fixed_bitstring<8>& medium_bitmap_r15() const + { + assert_choice_type("mediumBitmap-r15", type_.to_string(), "SSB-ToMeasure-r15"); + return c.get >(); + } + const fixed_bitstring<64>& long_bitmap_r15() const + { + assert_choice_type("longBitmap-r15", type_.to_string(), "SSB-ToMeasure-r15"); + return c.get >(); + } + fixed_bitstring<4>& set_short_bitmap_r15() + { + set(types::short_bitmap_r15); + return c.get >(); + } + fixed_bitstring<8>& set_medium_bitmap_r15() + { + set(types::medium_bitmap_r15); + return c.get >(); + } + fixed_bitstring<64>& set_long_bitmap_r15() + { + set(types::long_bitmap_r15); + return c.get >(); + } + +private: + types type_; + choice_buffer_t > c; + + void destroy_(); +}; + // ThresholdListNR-r15 ::= SEQUENCE struct thres_list_nr_r15_s { bool nr_rsrp_r15_present = false; @@ -460,108 +535,6 @@ struct carrier_freq_cdma2000_s { bool operator!=(const carrier_freq_cdma2000_s& other) const { return not(*this == other); } }; -// WLAN-Id-List-r13 ::= SEQUENCE (SIZE (1..32)) OF WLAN-Identifiers-r12 -using wlan_id_list_r13_l = dyn_array; - -// RACH-ConfigDedicated ::= SEQUENCE -struct rach_cfg_ded_s { - uint8_t ra_preamb_idx = 0; - uint8_t ra_prach_mask_idx = 0; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - -// RACH-Skip-r14 ::= SEQUENCE -struct rach_skip_r14_s { - struct target_ta_r14_c_ { - struct types_opts { - enum options { ta0_r14, mcg_ptag_r14, scg_ptag_r14, mcg_stag_r14, scg_stag_r14, nulltype } value; - typedef uint8_t number_type; - - std::string to_string() const; - uint8_t to_number() const; - }; - typedef enumerated types; - - // choice methods - target_ta_r14_c_() = default; - target_ta_r14_c_(const target_ta_r14_c_& other); - target_ta_r14_c_& operator=(const target_ta_r14_c_& other); - ~target_ta_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 - uint8_t& mcg_stag_r14() - { - assert_choice_type("mcg-STAG-r14", type_.to_string(), "targetTA-r14"); - return c.get(); - } - uint8_t& scg_stag_r14() - { - assert_choice_type("scg-STAG-r14", type_.to_string(), "targetTA-r14"); - return c.get(); - } - const uint8_t& mcg_stag_r14() const - { - assert_choice_type("mcg-STAG-r14", type_.to_string(), "targetTA-r14"); - return c.get(); - } - const uint8_t& scg_stag_r14() const - { - assert_choice_type("scg-STAG-r14", type_.to_string(), "targetTA-r14"); - return c.get(); - } - uint8_t& set_mcg_stag_r14() - { - set(types::mcg_stag_r14); - return c.get(); - } - uint8_t& set_scg_stag_r14() - { - set(types::scg_stag_r14); - return c.get(); - } - - private: - types type_; - pod_choice_buffer_t c; - - void destroy_(); - }; - struct ul_cfg_info_r14_s_ { - struct ul_sched_interv_r14_opts { - enum options { sf2, sf5, sf10, nulltype } value; - typedef uint8_t number_type; - - std::string to_string() const; - uint8_t to_number() const; - }; - typedef enumerated ul_sched_interv_r14_e_; - - // member variables - uint8_t nof_conf_ul_processes_r14 = 1; - ul_sched_interv_r14_e_ ul_sched_interv_r14; - uint8_t ul_start_sf_r14 = 0; - fixed_bitstring<16> ul_grant_r14; - }; - - // member variables - bool ul_cfg_info_r14_present = false; - target_ta_r14_c_ target_ta_r14; - ul_cfg_info_r14_s_ ul_cfg_info_r14; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - // MeasCSI-RS-Config-r12 ::= SEQUENCE struct meas_csi_rs_cfg_r12_s { bool ext = false; @@ -785,17 +758,6 @@ struct csg_allowed_report_cells_r9_s { bool operator!=(const csg_allowed_report_cells_r9_s& other) const { return not(*this == other); } }; -// 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; -}; - // CellIndexList ::= SEQUENCE (SIZE (1..32)) OF INTEGER (1..32) using cell_idx_list_l = bounded_array; @@ -1469,17 +1431,6 @@ private: setup_s_ c; }; -// MobilityControlInfo-v10l0 ::= SEQUENCE -struct mob_ctrl_info_v10l0_s { - bool add_spec_emission_v10l0_present = false; - uint16_t add_spec_emission_v10l0 = 33; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - // PhysCellIdGERAN ::= SEQUENCE struct pci_geran_s { fixed_bitstring<3> network_colour_code; @@ -1581,12 +1532,47 @@ struct rs_cfg_ssb_nr_r15_s { uint8_t to_number() const; }; typedef enumerated subcarrier_spacing_ssb_r15_e_; + struct ssb_to_measure_r15_c_ { + typedef setup_e types; + + // choice methods + ssb_to_measure_r15_c_() = default; + void set(types::options e = types::nulltype); + types type() const { return type_; } + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; + bool operator==(const ssb_to_measure_r15_c_& other) const; + bool operator!=(const ssb_to_measure_r15_c_& other) const { return not(*this == other); } + // getters + ssb_to_measure_r15_c& setup() + { + assert_choice_type("setup", type_.to_string(), "ssb-ToMeasure-r15"); + return c; + } + const ssb_to_measure_r15_c& setup() const + { + assert_choice_type("setup", type_.to_string(), "ssb-ToMeasure-r15"); + return c; + } + ssb_to_measure_r15_c& set_setup() + { + set(types::setup); + return c; + } + + private: + types type_; + ssb_to_measure_r15_c c; + }; // member variables bool ext = false; mtc_ssb_nr_r15_s meas_timing_cfg_r15; subcarrier_spacing_ssb_r15_e_ subcarrier_spacing_ssb_r15; // ... + // group 0 + copy_ptr ssb_to_measure_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2014,6 +2000,9 @@ struct wlan_carrier_info_r13_s { bool operator!=(const wlan_carrier_info_r13_s& other) const { return not(*this == other); } }; +// WLAN-Id-List-r13 ::= SEQUENCE (SIZE (1..32)) OF WLAN-Identifiers-r12 +using wlan_id_list_r13_l = dyn_array; + // WLAN-NameListConfig-r15 ::= CHOICE struct wlan_name_list_cfg_r15_c { typedef setup_e types; @@ -2052,20 +2041,6 @@ private: // WhiteCellsToAddModList-r13 ::= SEQUENCE (SIZE (1..32)) OF WhiteCellsToAddMod-r13 using white_cells_to_add_mod_list_r13_l = dyn_array; -// 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; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - // MeasGapConfigPerCC-r14 ::= SEQUENCE struct meas_gap_cfg_per_cc_r14_s { uint8_t serv_cell_id_r14 = 0; @@ -2581,12 +2556,12 @@ struct eutra_event_s { uint8_t v2_thres_r14 = 0; }; struct event_h1_r15_s_ { - uint16_t h1_thres_offset_r15 = 0; - uint8_t h1_hysteresis_minus15 = 1; + uint16_t h1_thres_offset_r15 = 0; + uint8_t h1_hysteresis_r15 = 1; }; struct event_h2_r15_s_ { - uint16_t h2_thres_offset_r15 = 0; - uint8_t h2_hysteresis_minus15 = 1; + uint16_t h2_thres_offset_r15 = 0; + uint8_t h2_hysteresis_r15 = 1; }; struct types_opts { enum options { @@ -3572,17 +3547,6 @@ struct report_cfg_inter_rat_s { bool operator!=(const report_cfg_inter_rat_s& other) const { return not(*this == other); } }; -// CellGlobalIdEUTRA ::= SEQUENCE -struct cell_global_id_eutra_s { - plmn_id_s plmn_id; - fixed_bitstring<28> cell_id; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - // MeasGapConfigToAddModList-r14 ::= SEQUENCE (SIZE (1..32)) OF MeasGapConfigPerCC-r14 using meas_gap_cfg_to_add_mod_list_r14_l = dyn_array; @@ -4133,96 +4097,6 @@ struct report_cfg_to_add_mod_s { bool operator!=(const report_cfg_to_add_mod_s& other) const { return not(*this == other); } }; -// CarrierBandwidthEUTRA ::= SEQUENCE -struct carrier_bw_eutra_s { - struct dl_bw_opts { - enum options { - n6, - n15, - n25, - n50, - n75, - n100, - spare10, - spare9, - spare8, - spare7, - spare6, - spare5, - spare4, - spare3, - spare2, - spare1, - nulltype - } value; - typedef uint8_t number_type; - - std::string to_string() const; - uint8_t to_number() const; - }; - typedef enumerated dl_bw_e_; - struct ul_bw_opts { - enum options { - n6, - n15, - n25, - n50, - n75, - n100, - spare10, - spare9, - spare8, - spare7, - spare6, - spare5, - spare4, - spare3, - spare2, - spare1, - nulltype - } value; - typedef uint8_t number_type; - - std::string to_string() const; - uint8_t to_number() const; - }; - typedef enumerated ul_bw_e_; - - // member variables - bool ul_bw_present = false; - dl_bw_e_ dl_bw; - ul_bw_e_ ul_bw; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - -// CarrierFreqEUTRA ::= SEQUENCE -struct carrier_freq_eutra_s { - bool ul_carrier_freq_present = false; - uint32_t dl_carrier_freq = 0; - uint32_t ul_carrier_freq = 0; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - -// CarrierFreqEUTRA-v9e0 ::= SEQUENCE -struct carrier_freq_eutra_v9e0_s { - bool ul_carrier_freq_v9e0_present = false; - uint32_t dl_carrier_freq_v9e0 = 0; - uint32_t ul_carrier_freq_v9e0 = 0; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - // MeasGapConfigDensePRS-r15 ::= CHOICE struct meas_gap_cfg_dense_prs_r15_c { struct setup_s_ { @@ -4757,23 +4631,6 @@ struct meas_scale_factor_r12_opts { }; typedef enumerated meas_scale_factor_r12_e; -// MobilityControlInfoV2X-r14 ::= SEQUENCE -struct mob_ctrl_info_v2x_r14_s { - bool v2x_comm_tx_pool_exceptional_r14_present = false; - bool v2x_comm_rx_pool_r14_present = false; - bool v2x_comm_sync_cfg_r14_present = false; - bool cbr_mob_tx_cfg_list_r14_present = false; - sl_comm_res_pool_v2x_r14_s v2x_comm_tx_pool_exceptional_r14; - sl_comm_rx_pool_list_v2x_r14_l v2x_comm_rx_pool_r14; - sl_sync_cfg_list_v2x_r14_l v2x_comm_sync_cfg_r14; - sl_cbr_common_tx_cfg_list_r14_s cbr_mob_tx_cfg_list_r14; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - // QuantityConfig ::= SEQUENCE struct quant_cfg_s { bool ext = false; @@ -4804,6 +4661,105 @@ struct quant_cfg_s { bool operator!=(const quant_cfg_s& other) const { return not(*this == other); } }; +// RACH-ConfigDedicated ::= SEQUENCE +struct rach_cfg_ded_s { + uint8_t ra_preamb_idx = 0; + uint8_t ra_prach_mask_idx = 0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// RACH-Skip-r14 ::= SEQUENCE +struct rach_skip_r14_s { + struct target_ta_r14_c_ { + struct types_opts { + enum options { ta0_r14, mcg_ptag_r14, scg_ptag_r14, mcg_stag_r14, scg_stag_r14, nulltype } value; + typedef uint8_t number_type; + + std::string to_string() const; + uint8_t to_number() const; + }; + typedef enumerated types; + + // choice methods + target_ta_r14_c_() = default; + target_ta_r14_c_(const target_ta_r14_c_& other); + target_ta_r14_c_& operator=(const target_ta_r14_c_& other); + ~target_ta_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 + uint8_t& mcg_stag_r14() + { + assert_choice_type("mcg-STAG-r14", type_.to_string(), "targetTA-r14"); + return c.get(); + } + uint8_t& scg_stag_r14() + { + assert_choice_type("scg-STAG-r14", type_.to_string(), "targetTA-r14"); + return c.get(); + } + const uint8_t& mcg_stag_r14() const + { + assert_choice_type("mcg-STAG-r14", type_.to_string(), "targetTA-r14"); + return c.get(); + } + const uint8_t& scg_stag_r14() const + { + assert_choice_type("scg-STAG-r14", type_.to_string(), "targetTA-r14"); + return c.get(); + } + uint8_t& set_mcg_stag_r14() + { + set(types::mcg_stag_r14); + return c.get(); + } + uint8_t& set_scg_stag_r14() + { + set(types::scg_stag_r14); + return c.get(); + } + + private: + types type_; + pod_choice_buffer_t c; + + void destroy_(); + }; + struct ul_cfg_info_r14_s_ { + struct ul_sched_interv_r14_opts { + enum options { sf2, sf5, sf10, nulltype } value; + typedef uint8_t number_type; + + std::string to_string() const; + uint8_t to_number() const; + }; + typedef enumerated ul_sched_interv_r14_e_; + + // member variables + uint8_t nof_conf_ul_processes_r14 = 1; + ul_sched_interv_r14_e_ ul_sched_interv_r14; + uint8_t ul_start_sf_r14 = 0; + fixed_bitstring<16> ul_grant_r14; + }; + + // member variables + bool ul_cfg_info_r14_present = false; + target_ta_r14_c_ target_ta_r14; + ul_cfg_info_r14_s_ ul_cfg_info_r14; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // ReportConfigToAddModList ::= SEQUENCE (SIZE (1..32)) OF ReportConfigToAddMod using report_cfg_to_add_mod_list_l = dyn_array; @@ -4969,6 +4925,160 @@ 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; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// MobilityControlInfo-v10l0 ::= SEQUENCE +struct mob_ctrl_info_v10l0_s { + bool add_spec_emission_v10l0_present = false; + uint16_t add_spec_emission_v10l0 = 33; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// LoggedMeasurementConfiguration-v1530-IEs ::= SEQUENCE +struct logged_meas_cfg_v1530_ies_s { + bool bt_name_list_r15_present = false; + bool wlan_name_list_r15_present = false; + bool non_crit_ext_present = false; + bt_name_list_r15_l bt_name_list_r15; + wlan_name_list_r15_l wlan_name_list_r15; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// CellGlobalIdEUTRA ::= SEQUENCE +struct cell_global_id_eutra_s { + plmn_id_s plmn_id; + fixed_bitstring<28> cell_id; + + // 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 { + enum options { + n6, + n15, + n25, + n50, + n75, + n100, + spare10, + spare9, + spare8, + spare7, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1, + nulltype + } value; + typedef uint8_t number_type; + + std::string to_string() const; + uint8_t to_number() const; + }; + typedef enumerated dl_bw_e_; + struct ul_bw_opts { + enum options { + n6, + n15, + n25, + n50, + n75, + n100, + spare10, + spare9, + spare8, + spare7, + spare6, + spare5, + spare4, + spare3, + spare2, + spare1, + nulltype + } value; + typedef uint8_t number_type; + + std::string to_string() const; + uint8_t to_number() const; + }; + typedef enumerated ul_bw_e_; + + // member variables + bool ul_bw_present = false; + dl_bw_e_ dl_bw; + ul_bw_e_ ul_bw; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// CarrierFreqEUTRA ::= SEQUENCE +struct carrier_freq_eutra_s { + bool ul_carrier_freq_present = false; + uint32_t dl_carrier_freq = 0; + uint32_t ul_carrier_freq = 0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// CarrierFreqEUTRA-v9e0 ::= SEQUENCE +struct carrier_freq_eutra_v9e0_s { + bool ul_carrier_freq_v9e0_present = false; + uint32_t dl_carrier_freq_v9e0 = 0; + uint32_t ul_carrier_freq_v9e0 = 0; + + // 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; + bool v2x_comm_rx_pool_r14_present = false; + bool v2x_comm_sync_cfg_r14_present = false; + bool cbr_mob_tx_cfg_list_r14_present = false; + sl_comm_res_pool_v2x_r14_s v2x_comm_tx_pool_exceptional_r14; + sl_comm_rx_pool_list_v2x_r14_l v2x_comm_rx_pool_r14; + sl_sync_cfg_list_v2x_r14_l v2x_comm_sync_cfg_r14; + sl_cbr_common_tx_cfg_list_r14_s cbr_mob_tx_cfg_list_r14; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // MobilityControlInfo ::= SEQUENCE struct mob_ctrl_info_s { struct t304_opts { @@ -5820,12 +5930,12 @@ struct cgi_info_nr_r15_s { }; // member variables - bool ext = false; - bool plmn_id_info_list_r15_present = false; - bool freq_band_list_minus15_present = false; - bool no_sib1_r15_present = false; + 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_minus15; + multi_freq_band_list_nr_r15_l freq_band_list_r15; no_sib1_r15_s_ no_sib1_r15; // ... diff --git a/lib/include/srslte/asn1/rrc/phy_ded.h b/lib/include/srslte/asn1/rrc/phy_ded.h index 5d781a2d3..f1c6fce41 100644 --- a/lib/include/srslte/asn1/rrc/phy_ded.h +++ b/lib/include/srslte/asn1/rrc/phy_ded.h @@ -4419,7 +4419,7 @@ private: // SPUCCH-Config-r15 ::= CHOICE struct spucch_cfg_r15_c { struct setup_s_ { - struct two_ant_port_activ_spucch_format3_r15_s_ { + struct dummy_s_ { using n3_spucch_an_list_r15_l_ = bounded_array; // member variables @@ -4427,10 +4427,10 @@ struct spucch_cfg_r15_c { }; // member variables - bool spucch_set_r15_present = false; - bool two_ant_port_activ_spucch_format1a1b_r15_present = false; - spucch_set_r15_l spucch_set_r15; - two_ant_port_activ_spucch_format3_r15_s_ two_ant_port_activ_spucch_format3_r15; + bool spucch_set_r15_present = false; + bool two_ant_port_activ_spucch_format1a1b_r15_present = false; + spucch_set_r15_l spucch_set_r15; + dummy_s_ dummy; }; typedef setup_e types; @@ -7170,6 +7170,52 @@ private: setup_s_ c; }; +// SPUCCH-Config-v1550 ::= CHOICE +struct spucch_cfg_v1550_c { + struct setup_s_ { + struct two_ant_port_activ_spucch_format3_v1550_s_ { + using n3_spucch_an_list_v1550_l_ = bounded_array; + + // member variables + n3_spucch_an_list_v1550_l_ n3_spucch_an_list_v1550; + }; + + // member variables + two_ant_port_activ_spucch_format3_v1550_s_ two_ant_port_activ_spucch_format3_v1550; + }; + typedef setup_e types; + + // choice methods + spucch_cfg_v1550_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 spucch_cfg_v1550_c& other) const; + bool operator!=(const spucch_cfg_v1550_c& other) const { return not(*this == other); } + // getters + setup_s_& setup() + { + assert_choice_type("setup", type_.to_string(), "SPUCCH-Config-v1550"); + return c; + } + const setup_s_& setup() const + { + assert_choice_type("setup", type_.to_string(), "SPUCCH-Config-v1550"); + return c; + } + setup_s_& set_setup() + { + set(types::setup); + return c; + } + +private: + types type_; + setup_s_ c; +}; + // SRS-TPC-PDCCH-Config-r14 ::= CHOICE struct srs_tpc_pdcch_cfg_r14_c { struct setup_s_ { @@ -8423,6 +8469,8 @@ struct phys_cfg_ded_s { copy_ptr ul_pwr_ctrl_ded_v1530; copy_ptr semi_static_cfi_cfg_r15; copy_ptr blind_pdsch_repeat_cfg_r15; + // group 11 + copy_ptr spucch_cfg_v1550; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; diff --git a/lib/include/srslte/asn1/rrc/rr_common.h b/lib/include/srslte/asn1/rrc/rr_common.h index 24875578d..97367b293 100644 --- a/lib/include/srslte/asn1/rrc/rr_common.h +++ b/lib/include/srslte/asn1/rrc/rr_common.h @@ -2027,6 +2027,27 @@ struct wus_cfg_r15_s { void to_json(json_writer& j) const; }; +// WUS-Config-v1560 ::= SEQUENCE +struct wus_cfg_v1560_s { + struct pwr_boost_r15_opts { + enum options { db0, db1dot8, db3, db4dot8, nulltype } value; + typedef float number_type; + + std::string to_string() const; + float to_number() const; + std::string to_number_string() const; + }; + typedef enumerated pwr_boost_r15_e_; + + // member variables + pwr_boost_r15_e_ pwr_boost_r15; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // RadioResourceConfigCommonSIB ::= SEQUENCE struct rr_cfg_common_sib_s { bool ext = false; @@ -2066,6 +2087,8 @@ struct rr_cfg_common_sib_s { copy_ptr high_speed_cfg_v1530; // group 6 copy_ptr ul_pwr_ctrl_common_v1540; + // group 7 + copy_ptr wus_cfg_v1560; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; diff --git a/lib/include/srslte/asn1/rrc/rr_ded.h b/lib/include/srslte/asn1/rrc/rr_ded.h index 23b98b339..0b0866bf0 100644 --- a/lib/include/srslte/asn1/rrc/rr_ded.h +++ b/lib/include/srslte/asn1/rrc/rr_ded.h @@ -576,27 +576,27 @@ struct lc_ch_cfg_s { types type_; setup_e_ c; }; - struct chl_access_prio_r15_c_ { + struct ch_access_prio_r15_c_ { typedef setup_e types; // choice methods - chl_access_prio_r15_c_() = default; + ch_access_prio_r15_c_() = default; void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; - bool operator==(const chl_access_prio_r15_c_& other) const; - bool operator!=(const chl_access_prio_r15_c_& other) const { return not(*this == other); } + bool operator==(const ch_access_prio_r15_c_& other) const; + bool operator!=(const ch_access_prio_r15_c_& other) const { return not(*this == other); } // getters uint8_t& setup() { - assert_choice_type("setup", type_.to_string(), "channellAccessPriority-r15"); + assert_choice_type("setup", type_.to_string(), "channelAccessPriority-r15"); return c; } const uint8_t& setup() const { - assert_choice_type("setup", type_.to_string(), "channellAccessPriority-r15"); + assert_choice_type("setup", type_.to_string(), "channelAccessPriority-r15"); return c; } uint8_t& set_setup() @@ -629,7 +629,7 @@ struct lc_ch_cfg_s { bool lch_cell_restrict_r15_present = false; copy_ptr allowed_tti_lens_r15; copy_ptr lc_ch_sr_restrict_r15; - copy_ptr chl_access_prio_r15; + copy_ptr ch_access_prio_r15; fixed_bitstring<32> lch_cell_restrict_r15; // sequence methods @@ -863,8 +863,8 @@ struct crs_assist_info_r13_s { // CRS-AssistanceInfo-r15 ::= SEQUENCE struct crs_assist_info_r15_s { - bool crs_intf_mitig_enabled_minus15_present = false; - uint16_t pci_r15 = 0; + bool crs_intf_mitig_enabled_r15_present = false; + uint16_t pci_r15 = 0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2247,7 +2247,7 @@ struct drb_to_add_mod_s { // group 4 bool lc_ch_id_r15_present = false; copy_ptr rlc_cfg_v1530; - copy_ptr rlc_bearer_cfg_dupl_r15; + copy_ptr rlc_bearer_cfg_secondary_r15; uint8_t lc_ch_id_r15 = 32; // sequence methods @@ -3284,8 +3284,10 @@ struct srb_to_add_mod_s { bool pdcp_ver_change_r15_present = false; bool srb_id_v1530_present = false; copy_ptr rlc_cfg_v1530; - copy_ptr rlc_bearer_cfg_dupl_r15; + copy_ptr rlc_bearer_cfg_secondary_r15; uint8_t srb_id_v1530 = 4; + // group 1 + copy_ptr rlc_cfg_v1560; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -4280,12 +4282,12 @@ struct sps_cfg_v1540_s { void to_json(json_writer& j) const; }; -// SRB-ToAddModExtList-r15 ::= SEQUENCE (SIZE (1)) OF SRB-ToAddMod -using srb_to_add_mod_ext_list_r15_l = std::array; - // SRB-ToAddModList ::= SEQUENCE (SIZE (1..2)) OF SRB-ToAddMod using srb_to_add_mod_list_l = dyn_array; +// SRB-ToAddModListExt-r15 ::= SEQUENCE (SIZE (1)) OF SRB-ToAddMod +using srb_to_add_mod_list_ext_r15_l = std::array; + // RadioResourceConfigDedicated ::= SEQUENCE struct rr_cfg_ded_s { struct mac_main_cfg_c_ { @@ -4326,20 +4328,18 @@ struct rr_cfg_ded_s { }; struct crs_intf_mitig_cfg_r15_c_ { struct setup_c_ { - struct crs_intf_mitig_num_prbs_r15_opts { + struct crs_intf_mitig_num_prbs_opts { enum options { n6, n24, nulltype } value; typedef uint8_t number_type; std::string to_string() const; uint8_t to_number() const; }; - typedef enumerated crs_intf_mitig_num_prbs_r15_e_; + typedef enumerated crs_intf_mitig_num_prbs_e_; struct types_opts { - enum options { crs_intf_mitig_enabled_minus15, crs_intf_mitig_num_prbs_r15, nulltype } value; - typedef int8_t number_type; + enum options { crs_intf_mitig_enabled, crs_intf_mitig_num_prbs, nulltype } value; std::string to_string() const; - int8_t to_number() const; }; typedef enumerated types; @@ -4351,25 +4351,25 @@ struct rr_cfg_ded_s { SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters - crs_intf_mitig_num_prbs_r15_e_& crs_intf_mitig_num_prbs_r15() + crs_intf_mitig_num_prbs_e_& crs_intf_mitig_num_prbs() { - assert_choice_type("crs-IntfMitigNumPRBs-r15", type_.to_string(), "setup"); + assert_choice_type("crs-IntfMitigNumPRBs", type_.to_string(), "setup"); return c; } - const crs_intf_mitig_num_prbs_r15_e_& crs_intf_mitig_num_prbs_r15() const + const crs_intf_mitig_num_prbs_e_& crs_intf_mitig_num_prbs() const { - assert_choice_type("crs-IntfMitigNumPRBs-r15", type_.to_string(), "setup"); + assert_choice_type("crs-IntfMitigNumPRBs", type_.to_string(), "setup"); return c; } - crs_intf_mitig_num_prbs_r15_e_& set_crs_intf_mitig_num_prbs_r15() + crs_intf_mitig_num_prbs_e_& set_crs_intf_mitig_num_prbs() { - set(types::crs_intf_mitig_num_prbs_r15); + set(types::crs_intf_mitig_num_prbs); return c; } private: - types type_; - crs_intf_mitig_num_prbs_r15_e_ c; + types type_; + crs_intf_mitig_num_prbs_e_ c; }; typedef setup_e types; @@ -4432,9 +4432,9 @@ struct rr_cfg_ded_s { // group 5 copy_ptr sps_cfg_v1430; // group 6 - bool srb_to_release_ext_list_r15_present = false; - copy_ptr srb_to_add_mod_ext_list_r15; - uint8_t srb_to_release_ext_list_r15 = 4; + bool srb_to_release_list_ext_r15_present = false; + copy_ptr srb_to_add_mod_list_ext_r15; + uint8_t srb_to_release_list_ext_r15 = 4; copy_ptr sps_cfg_v1530; copy_ptr crs_intf_mitig_cfg_r15; copy_ptr neigh_cells_crs_info_r15; @@ -6123,7 +6123,7 @@ struct phys_cfg_ded_scell_r10_s { // group 7 copy_ptr phys_cfg_ded_stti_r15; copy_ptr pdsch_cfg_ded_v1530; - copy_ptr cqi_report_cfg_v1530; + copy_ptr dummy; copy_ptr cqi_report_cfg_scell_r15; copy_ptr cqi_short_cfg_scell_r15; copy_ptr csi_rs_cfg_v1530; @@ -6132,6 +6132,8 @@ struct phys_cfg_ded_scell_r10_s { copy_ptr pusch_cfg_ded_v1530; copy_ptr semi_static_cfi_cfg_r15; copy_ptr blind_pdsch_repeat_cfg_r15; + // group 8 + copy_ptr spucch_cfg_v1550; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -6456,7 +6458,9 @@ struct drb_to_add_mod_scg_r12_s { bool lc_ch_id_scg_r15_present = false; uint8_t lc_ch_id_scg_r15 = 32; copy_ptr rlc_cfg_v1530; - copy_ptr rlc_bearer_cfg_dupl_r15; + copy_ptr rlc_bearer_cfg_secondary_r15; + // group 2 + copy_ptr rlc_cfg_v1560; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -6684,6 +6688,8 @@ struct rr_cfg_ded_scg_r12_s { // group 1 copy_ptr srb_to_add_mod_list_scg_r15; copy_ptr srb_to_release_list_scg_r15; + // group 2 + copy_ptr drb_to_release_list_scg_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; diff --git a/lib/include/srslte/asn1/rrc/si.h b/lib/include/srslte/asn1/rrc/si.h index 3e7b0a3e9..93e4b2823 100644 --- a/lib/include/srslte/asn1/rrc/si.h +++ b/lib/include/srslte/asn1/rrc/si.h @@ -230,20 +230,18 @@ struct sib_type1_v1540_ies_s { // SystemInformationBlockType1-v1530-IEs ::= SEQUENCE struct sib_type1_v1530_ies_s { struct crs_intf_mitig_cfg_r15_c_ { - struct crs_intf_mitig_num_prbs_r15_opts { + struct crs_intf_mitig_num_prbs_opts { enum options { n6, n24, nulltype } value; typedef uint8_t number_type; std::string to_string() const; uint8_t to_number() const; }; - typedef enumerated crs_intf_mitig_num_prbs_r15_e_; + typedef enumerated crs_intf_mitig_num_prbs_e_; struct types_opts { - enum options { crs_intf_mitig_enabled_minus15, crs_intf_mitig_num_prbs_r15, nulltype } value; - typedef int8_t number_type; + enum options { crs_intf_mitig_enabled, crs_intf_mitig_num_prbs, nulltype } value; std::string to_string() const; - int8_t to_number() const; }; typedef enumerated types; @@ -255,25 +253,25 @@ struct sib_type1_v1530_ies_s { SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters - crs_intf_mitig_num_prbs_r15_e_& crs_intf_mitig_num_prbs_r15() + crs_intf_mitig_num_prbs_e_& crs_intf_mitig_num_prbs() { - assert_choice_type("crs-IntfMitigNumPRBs-r15", type_.to_string(), "crs-IntfMitigConfig-r15"); + assert_choice_type("crs-IntfMitigNumPRBs", type_.to_string(), "crs-IntfMitigConfig-r15"); return c; } - const crs_intf_mitig_num_prbs_r15_e_& crs_intf_mitig_num_prbs_r15() const + const crs_intf_mitig_num_prbs_e_& crs_intf_mitig_num_prbs() const { - assert_choice_type("crs-IntfMitigNumPRBs-r15", type_.to_string(), "crs-IntfMitigConfig-r15"); + assert_choice_type("crs-IntfMitigNumPRBs", type_.to_string(), "crs-IntfMitigConfig-r15"); return c; } - crs_intf_mitig_num_prbs_r15_e_& set_crs_intf_mitig_num_prbs_r15() + crs_intf_mitig_num_prbs_e_& set_crs_intf_mitig_num_prbs() { - set(types::crs_intf_mitig_num_prbs_r15); + set(types::crs_intf_mitig_num_prbs); return c; } private: - types type_; - crs_intf_mitig_num_prbs_r15_e_ c; + types type_; + crs_intf_mitig_num_prbs_e_ c; }; struct cell_barred_crs_r15_opts { enum options { barred, not_barred, nulltype } value; @@ -348,6 +346,16 @@ struct cell_sel_info_ce1_v1360_s { void to_json(json_writer& j) const; }; +// SI-Periodicity-r12 ::= ENUMERATED +struct si_periodicity_r12_opts { + enum options { rf8, rf16, rf32, rf64, rf128, rf256, rf512, nulltype } value; + typedef uint16_t number_type; + + std::string to_string() const; + uint16_t to_number() const; +}; +typedef enumerated si_periodicity_r12_e; + // SystemInformationBlockType1-v1450-IEs ::= SEQUENCE struct sib_type1_v1450_ies_s { bool tdd_cfg_v1450_present = false; @@ -1165,18 +1173,8 @@ struct ue_timers_and_consts_s { // SchedulingInfo ::= SEQUENCE struct sched_info_s { - struct si_periodicity_opts { - enum options { rf8, rf16, rf32, rf64, rf128, rf256, rf512, nulltype } value; - typedef uint16_t number_type; - - std::string to_string() const; - uint16_t to_number() const; - }; - typedef enumerated si_periodicity_e_; - - // member variables - si_periodicity_e_ si_periodicity; - sib_map_info_l sib_map_info; + si_periodicity_r12_e si_periodicity; + sib_map_info_l sib_map_info; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; diff --git a/lib/include/srslte/asn1/rrc/uecap.h b/lib/include/srslte/asn1/rrc/uecap.h index 1697f3db9..4d05fd6d9 100644 --- a/lib/include/srslte/asn1/rrc/uecap.h +++ b/lib/include/srslte/asn1/rrc/uecap.h @@ -36,6 +36,18 @@ struct ca_bw_class_r10_opts { }; 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; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // BandIndication-r14 ::= SEQUENCE struct band_ind_r14_s { bool ca_bw_class_ul_r14_present = false; @@ -49,14 +61,28 @@ struct band_ind_r14_s { void to_json(json_writer& j) const; }; +// UECapabilityEnquiry-v1550-IEs ::= SEQUENCE +struct ue_cap_enquiry_v1550_ies_s { + bool requested_cap_nr_r15_present = false; + bool non_crit_ext_present = false; + dyn_octstring requested_cap_nr_r15; + ue_cap_enquiry_v1560_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; +}; + // BandCombination-r14 ::= SEQUENCE (SIZE (1..64)) OF BandIndication-r14 using band_combination_r14_l = dyn_array; // UECapabilityEnquiry-v1530-IEs ::= SEQUENCE struct ue_cap_enquiry_v1530_ies_s { - bool request_stti_spt_cap_r15_present = false; - bool eutra_nr_only_r15_present = false; - bool non_crit_ext_present = false; + bool request_stti_spt_cap_r15_present = false; + bool eutra_nr_only_r15_present = false; + bool non_crit_ext_present = false; + ue_cap_enquiry_v1550_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1121,8 +1147,8 @@ struct mimo_ca_params_per_bo_bc_v1430_s { void to_json(json_writer& j) const; }; -// RetuningTimeInfo-r14 ::= SEQUENCE -struct retuning_time_info_r14_s { +// SRS-CapabilityPerBandPair-r14 ::= SEQUENCE +struct srs_cap_per_band_pair_r14_s { struct retuning_info_s_ { struct rf_retuning_time_dl_r14_opts { enum options { @@ -1208,16 +1234,16 @@ struct ul_minus256_qam_per_cc_info_r14_s { // BandParameters-v1430 ::= SEQUENCE struct band_params_v1430_s { using ul_minus256_qam_per_cc_info_list_r14_l_ = dyn_array; - using retuning_time_info_band_list_r14_l_ = dyn_array; + using srs_cap_per_band_pair_list_r14_l_ = dyn_array; // member variables bool band_params_dl_v1430_present = false; bool ul_minus256_qam_r14_present = false; bool ul_minus256_qam_per_cc_info_list_r14_present = false; - bool retuning_time_info_band_list_r14_present = false; + bool srs_cap_per_band_pair_list_r14_present = false; mimo_ca_params_per_bo_bc_v1430_s band_params_dl_v1430; ul_minus256_qam_per_cc_info_list_r14_l_ ul_minus256_qam_per_cc_info_list_r14; - retuning_time_info_band_list_r14_l_ retuning_time_info_band_list_r14; + srs_cap_per_band_pair_list_r14_l_ srs_cap_per_band_pair_list_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1341,6 +1367,45 @@ struct band_combination_params_v1470_s { void to_json(json_writer& j) const; }; +// SRS-CapabilityPerBandPair-v14b0 ::= SEQUENCE +struct srs_cap_per_band_pair_v14b0_s { + bool srs_flex_timing_r14_present = false; + bool srs_harq_ref_cfg_r14_present = false; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// BandParameters-v14b0 ::= SEQUENCE +struct band_params_v14b0_s { + using srs_cap_per_band_pair_list_v14b0_l_ = dyn_array; + + // member variables + bool srs_cap_per_band_pair_list_v14b0_present = false; + srs_cap_per_band_pair_list_v14b0_l_ srs_cap_per_band_pair_list_v14b0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// BandCombinationParameters-v14b0 ::= SEQUENCE +struct band_combination_params_v14b0_s { + using band_param_list_v14b0_l_ = dyn_array; + + // member variables + bool band_param_list_v14b0_present = false; + band_param_list_v14b0_l_ band_param_list_v14b0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // DL-UL-CCs-r15 ::= SEQUENCE struct dl_ul_ccs_r15_s { bool max_num_dl_ccs_r15_present = false; @@ -1636,12 +1701,23 @@ struct feature_set_ul_r15_s { void to_json(json_writer& j) const; }; +// FeatureSetDL-v1550 ::= SEQUENCE +struct feature_set_dl_v1550_s { + bool dl_minus1024_qam_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; +}; + // FeatureSetsEUTRA-r15 ::= SEQUENCE struct feature_sets_eutra_r15_s { using feature_sets_dl_r15_l_ = dyn_array; using feature_sets_dl_per_cc_r15_l_ = dyn_array; using feature_sets_ul_r15_l_ = dyn_array; using feature_sets_ul_per_cc_r15_l_ = dyn_array; + using feature_sets_dl_v1550_l_ = dyn_array; // member variables bool ext = false; @@ -1654,6 +1730,8 @@ struct feature_sets_eutra_r15_s { feature_sets_ul_r15_l_ feature_sets_ul_r15; feature_sets_ul_per_cc_r15_l_ feature_sets_ul_per_cc_r15; // ... + // group 0 + copy_ptr feature_sets_dl_v1550; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3024,6 +3102,30 @@ struct rf_params_v1470_s { void to_json(json_writer& j) const; }; +// SupportedBandCombination-v14b0 ::= SEQUENCE (SIZE (1..128)) OF BandCombinationParameters-v14b0 +using supported_band_combination_v14b0_l = dyn_array; + +// SupportedBandCombinationAdd-v14b0 ::= SEQUENCE (SIZE (1..256)) OF BandCombinationParameters-v14b0 +using supported_band_combination_add_v14b0_l = dyn_array; + +// SupportedBandCombinationReduced-v14b0 ::= SEQUENCE (SIZE (1..384)) OF BandCombinationParameters-v14b0 +using supported_band_combination_reduced_v14b0_l = dyn_array; + +// RF-Parameters-v14b0 ::= SEQUENCE +struct rf_params_v14b0_s { + bool supported_band_combination_v14b0_present = false; + bool supported_band_combination_add_v14b0_present = false; + bool supported_band_combination_reduced_v14b0_present = false; + supported_band_combination_v14b0_l supported_band_combination_v14b0; + supported_band_combination_add_v14b0_l supported_band_combination_add_v14b0; + supported_band_combination_reduced_v14b0_l supported_band_combination_reduced_v14b0; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // SupportedBandCombination-v1530 ::= SEQUENCE (SIZE (1..128)) OF BandCombinationParameters-v1530 using supported_band_combination_v1530_l = dyn_array; @@ -3209,6 +3311,42 @@ 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; + + // 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; + stti_spt_cap_v1540_s_ stti_spt_cap_v1540; + + // 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; +}; + // EUTRA-5GC-Parameters-r15 ::= SEQUENCE struct eutra_minus5_gc_params_r15_s { bool eutra_minus5_gc_r15_present = false; @@ -3225,10 +3363,15 @@ struct eutra_minus5_gc_params_r15_s { void to_json(json_writer& j) const; }; -// NeighCellSI-AcquisitionParameters-v1530 ::= SEQUENCE -struct neigh_cell_si_acquisition_params_v1530_s { - bool report_cgi_nr_en_dc_r15_present = false; - bool report_cgi_nr_no_en_dc_r15_present = false; +// 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; @@ -3236,9 +3379,10 @@ struct neigh_cell_si_acquisition_params_v1530_s { void to_json(json_writer& j) const; }; -// Other-Parameters-v1540 ::= SEQUENCE -struct other_params_v1540_s { - bool in_dev_coex_ind_endc_r15_present = false; +// 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; @@ -3246,15 +3390,153 @@ struct other_params_v1540_s { void to_json(json_writer& j) const; }; -// PhyLayerParameters-v1540 ::= SEQUENCE -struct phy_layer_params_v1540_s { - struct stti_spt_cap_v1540_s_ {}; +// 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; + + std::string to_string() const; + float to_number() const; + std::string to_number_string() const; + }; + typedef enumerated dl_minus1024_qam_scaling_factor_r15_e_; // 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; - stti_spt_cap_v1540_s_ stti_spt_cap_v1540; + dl_minus1024_qam_scaling_factor_r15_e_ dl_minus1024_qam_scaling_factor_r15; + uint8_t dl_minus1024_qam_total_weighted_layers_r15 = 0; + + // 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-v15a0-IEs ::= SEQUENCE +struct ue_eutra_cap_v15a0_ies_s { + bool eutra_minus5_gc_params_r15_present = false; + bool fdd_add_ue_eutra_cap_v15a0_present = false; + bool tdd_add_ue_eutra_cap_v15a0_present = false; + bool non_crit_ext_present = false; + neigh_cell_si_acquisition_params_v15a0_s neigh_cell_si_acquisition_params_v15a0; + 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; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// IRAT-ParametersNR-v1560 ::= SEQUENCE +struct irat_params_nr_v1560_s { + bool ng_en_dc_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; +}; + +// NeighCellSI-AcquisitionParameters-v1550 ::= SEQUENCE +struct neigh_cell_si_acquisition_params_v1550_s { + bool eutra_cgi_report_endc_r15_present = false; + bool utra_geran_cgi_report_endc_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-v1570-IEs ::= SEQUENCE +struct ue_eutra_cap_v1570_ies_s { + bool rf_params_v1570_present = false; + bool irat_params_nr_v1570_present = false; + bool non_crit_ext_present = false; + rf_params_v1570_s rf_params_v1570; + irat_params_nr_v1570_s irat_params_nr_v1570; + ue_eutra_cap_v15a0_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-v1560 ::= SEQUENCE +struct ue_eutra_cap_add_xdd_mode_v1560_s { + pdcp_params_nr_v1560_s pdcp_params_nr_v1560; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// MAC-Parameters-v1550 ::= SEQUENCE +struct mac_params_v1550_s { + bool elcid_support_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-v1560-IEs ::= SEQUENCE +struct ue_eutra_cap_v1560_ies_s { + bool applied_cap_filt_common_r15_present = false; + bool non_crit_ext_present = false; + pdcp_params_nr_v1560_s pdcp_params_nr_v1560; + irat_params_nr_v1560_s irat_params_nr_v1560; + dyn_octstring applied_cap_filt_common_r15; + ue_eutra_cap_add_xdd_mode_v1560_s fdd_add_ue_eutra_cap_v1560; + ue_eutra_cap_add_xdd_mode_v1560_s tdd_add_ue_eutra_cap_v1560; + ue_eutra_cap_v1570_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-v1550 ::= SEQUENCE +struct ue_eutra_cap_add_xdd_mode_v1550_s { + bool neigh_cell_si_acquisition_params_v1550_present = false; + neigh_cell_si_acquisition_params_v1550_s neigh_cell_si_acquisition_params_v1550; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + +// NeighCellSI-AcquisitionParameters-v1530 ::= SEQUENCE +struct neigh_cell_si_acquisition_params_v1530_s { + bool report_cgi_nr_en_dc_r15_present = false; + bool report_cgi_nr_no_en_dc_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-v1540 ::= SEQUENCE +struct other_params_v1540_s { + bool in_dev_coex_ind_endc_r15_present = false; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3275,6 +3557,23 @@ struct sl_params_v1540_s { void to_json(json_writer& j) const; }; +// UE-EUTRA-Capability-v1550-IEs ::= SEQUENCE +struct ue_eutra_cap_v1550_ies_s { + bool neigh_cell_si_acquisition_params_v1550_present = false; + bool non_crit_ext_present = false; + neigh_cell_si_acquisition_params_v1550_s neigh_cell_si_acquisition_params_v1550; + phy_layer_params_v1550_s phy_layer_params_v1550; + mac_params_v1550_s mac_params_v1550; + ue_eutra_cap_add_xdd_mode_v1550_s fdd_add_ue_eutra_cap_v1550; + ue_eutra_cap_add_xdd_mode_v1550_s tdd_add_ue_eutra_cap_v1550; + ue_eutra_cap_v1560_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-v1540 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1540_s { bool eutra_minus5_gc_params_r15_present = false; @@ -3367,6 +3666,7 @@ struct ue_eutra_cap_v1540_ies_s { ue_eutra_cap_add_xdd_mode_v1540_s tdd_add_ue_eutra_cap_v1540; sl_params_v1540_s sl_params_v1540; irat_params_nr_v1540_s irat_params_nr_v1540; + ue_eutra_cap_v1550_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3388,8 +3688,8 @@ struct ue_eutra_cap_add_xdd_mode_v1530_s { // MeasParameters-v1520 ::= SEQUENCE struct meas_params_v1520_s { - bool meas_gap_patterns_v1520_present = false; - fixed_bitstring<8> meas_gap_patterns_v1520; + bool meas_gap_patterns_r15_present = false; + fixed_bitstring<8> meas_gap_patterns_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3761,6 +4061,16 @@ struct pdcp_params_v1430_s { void to_json(json_writer& j) const; }; +// PhyLayerParameters-v14a0 ::= SEQUENCE +struct phy_layer_params_v14a0_s { + bool ssp10_tdd_only_r14_present = false; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // RLC-Parameters-v1430 ::= SEQUENCE struct rlc_params_v1430_s { bool extended_poll_byte_r14_present = false; @@ -3794,6 +4104,18 @@ struct ue_eutra_cap_v1440_ies_s { void to_json(json_writer& j) const; }; +// 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; + + // 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-v1430 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1430_s { bool phy_layer_params_v1430_present = false; @@ -3944,6 +4266,18 @@ struct ue_eutra_cap_v1430_ies_s { void to_json(json_writer& j) const; }; +// UE-EUTRA-Capability-v14a0-IEs ::= SEQUENCE +struct ue_eutra_cap_v14a0_ies_s { + bool non_crit_ext_present = false; + phy_layer_params_v14a0_s phy_layer_params_v14a0; + ue_eutra_cap_v14b0_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; +}; + // CE-Parameters-v1350 ::= SEQUENCE struct ce_params_v1350_s { bool unicast_freq_hop_r13_present = false; @@ -3976,6 +4310,7 @@ struct ue_eutra_cap_v1470_ies_s { mbms_params_v1470_s mbms_params_v1470; phy_layer_params_v1470_s phy_layer_params_v1470; rf_params_v1470_s rf_params_v1470; + ue_eutra_cap_v14a0_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -4007,8 +4342,8 @@ struct ue_eutra_cap_v1350_ies_s { void to_json(json_writer& j) const; }; -// UE-EUTRA-Capability-v13x0-IEs ::= SEQUENCE -struct ue_eutra_cap_v13x0_ies_s { +// UE-EUTRA-Capability-v13e0a-IEs ::= SEQUENCE +struct ue_eutra_cap_v13e0a_ies_s { bool late_non_crit_ext_present = false; bool non_crit_ext_present = false; dyn_octstring late_non_crit_ext; @@ -4059,10 +4394,10 @@ struct ue_eutra_cap_v1340_ies_s { // UE-EUTRA-Capability-v1390-IEs ::= SEQUENCE struct ue_eutra_cap_v1390_ies_s { - bool rf_params_v1390_present = false; - bool non_crit_ext_present = false; - rf_params_v1390_s rf_params_v1390; - ue_eutra_cap_v13x0_ies_s non_crit_ext; + bool rf_params_v1390_present = false; + bool non_crit_ext_present = false; + rf_params_v1390_s rf_params_v1390; + ue_eutra_cap_v13e0a_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; diff --git a/lib/include/srslte/asn1/rrc/ul_ccch_msg.h b/lib/include/srslte/asn1/rrc/ul_ccch_msg.h index 37f23c641..5d7b0f13f 100644 --- a/lib/include/srslte/asn1/rrc/ul_ccch_msg.h +++ b/lib/include/srslte/asn1/rrc/ul_ccch_msg.h @@ -182,6 +182,18 @@ private: void destroy_(); }; +// 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; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // ReestabUE-Identity ::= SEQUENCE struct reestab_ue_id_s { fixed_bitstring<16> c_rnti; @@ -419,17 +431,18 @@ struct rrc_conn_resume_request_r13_ies_s { // RRCEarlyDataRequest-r15-IEs ::= SEQUENCE struct rrc_early_data_request_r15_ies_s { struct establishment_cause_r15_opts { - enum options { mo_data_r15, delay_tolerant_access_r15, nulltype } value; + enum options { mo_data, delay_tolerant_access, nulltype } value; std::string to_string() const; }; typedef enumerated establishment_cause_r15_e_; // member variables - bool non_crit_ext_present = false; - s_tmsi_s s_tmsi_r15; - establishment_cause_r15_e_ establishment_cause_r15; - dyn_octstring ded_info_nas_r15; + bool non_crit_ext_present = false; + s_tmsi_s s_tmsi_r15; + establishment_cause_r15_e_ establishment_cause_r15; + dyn_octstring ded_info_nas_r15; + rrc_early_data_request_v1590_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; diff --git a/lib/include/srslte/asn1/rrc/ul_dcch_msg.h b/lib/include/srslte/asn1/rrc/ul_dcch_msg.h index 7fd47dd04..5e76b092b 100644 --- a/lib/include/srslte/asn1/rrc/ul_dcch_msg.h +++ b/lib/include/srslte/asn1/rrc/ul_dcch_msg.h @@ -847,17 +847,6 @@ using affected_carrier_freq_list_v1310_l = dyn_array; -// FailureReportSCG-v12d0 ::= SEQUENCE -struct fail_report_scg_v12d0_s { - bool meas_result_neigh_cells_v12d0_present = false; - meas_result_list2_eutra_v9e0_l meas_result_neigh_cells_v12d0; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - // IDC-SubframePattern-r11 ::= CHOICE struct idc_sf_pattern_r11_c { struct sf_pattern_tdd_r11_c_ { @@ -1998,18 +1987,6 @@ struct rstd_inter_freq_info_r10_s { void to_json(json_writer& j) const; }; -// SCGFailureInformation-v12d0-IEs ::= SEQUENCE -struct scg_fail_info_v12d0_ies_s { - bool fail_report_scg_v12d0_present = false; - bool non_crit_ext_present = false; - fail_report_scg_v12d0_s fail_report_scg_v12d0; - - // sequence methods - SRSASN_CODE pack(bit_ref& bref) const; - SRSASN_CODE unpack(cbit_ref& bref); - void to_json(json_writer& j) const; -}; - // SL-CommTxResourceReq-r12 ::= SEQUENCE struct sl_comm_tx_res_req_r12_s { bool carrier_freq_r12_present = false; @@ -2230,6 +2207,18 @@ struct mbms_interest_ind_v1310_ies_s { void to_json(json_writer& j) const; }; +// MeasReportAppLayer-v1590-IEs ::= SEQUENCE +struct meas_report_app_layer_v1590_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; +}; + // ProximityIndication-v930-IEs ::= SEQUENCE struct proximity_ind_v930_ies_s { bool late_non_crit_ext_present = false; @@ -2583,8 +2572,20 @@ struct registered_mme_s { void to_json(json_writer& j) const; }; -// SCGFailureInformation-v1310-IEs ::= SEQUENCE -struct scg_fail_info_v1310_ies_s { +// SCGFailureInformation-v12d0a-IEs ::= SEQUENCE +struct scg_fail_info_v12d0a_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; +}; + +// SCGFailureInformationNR-v1590-IEs ::= SEQUENCE +struct scg_fail_info_nr_v1590_ies_s { bool late_non_crit_ext_present = false; bool non_crit_ext_present = false; dyn_octstring late_non_crit_ext; @@ -2991,19 +2992,20 @@ struct mbms_interest_ind_r11_ies_s { // MeasReportAppLayer-r15-IEs ::= SEQUENCE struct meas_report_app_layer_r15_ies_s { - struct service_type_opts { + struct service_type_r15_opts { enum options { qoe, qoemtsi, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value; std::string to_string() const; }; - typedef enumerated service_type_e_; + typedef enumerated service_type_r15_e_; // member variables - bool meas_report_app_layer_container_r15_present = false; - bool service_type_present = false; - bool non_crit_ext_present = false; - bounded_octstring<1, 8000> meas_report_app_layer_container_r15; - service_type_e_ service_type; + bool meas_report_app_layer_container_r15_present = false; + bool service_type_r15_present = false; + bool non_crit_ext_present = false; + bounded_octstring<1, 8000> meas_report_app_layer_container_r15; + service_type_r15_e_ service_type_r15; + meas_report_app_layer_v1590_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3188,10 +3190,10 @@ struct rrc_conn_setup_complete_r8_ies_s { // SCGFailureInformation-r12-IEs ::= SEQUENCE struct scg_fail_info_r12_ies_s { - bool fail_report_scg_r12_present = false; - bool non_crit_ext_present = false; - fail_report_scg_r12_s fail_report_scg_r12; - scg_fail_info_v1310_ies_s non_crit_ext; + bool fail_report_scg_r12_present = false; + bool non_crit_ext_present = false; + fail_report_scg_r12_s fail_report_scg_r12; + scg_fail_info_v12d0a_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3201,9 +3203,10 @@ struct scg_fail_info_r12_ies_s { // SCGFailureInformationNR-r15-IEs ::= SEQUENCE struct scg_fail_info_nr_r15_ies_s { - bool fail_report_scg_nr_r15_present = false; - bool non_crit_ext_present = false; - fail_report_scg_nr_r15_s fail_report_scg_nr_r15; + bool fail_report_scg_nr_r15_present = false; + bool non_crit_ext_present = false; + fail_report_scg_nr_r15_s fail_report_scg_nr_r15; + scg_fail_info_nr_v1590_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; diff --git a/lib/include/srslte/asn1/rrc_nbiot.h b/lib/include/srslte/asn1/rrc_nbiot.h index ec71814dd..3ea7b1cd8 100644 --- a/lib/include/srslte/asn1/rrc_nbiot.h +++ b/lib/include/srslte/asn1/rrc_nbiot.h @@ -134,6 +134,27 @@ struct carrier_freq_nb_r13_s { void to_json(json_writer& j) const; }; +// CarrierFreq-NB-v1550 ::= SEQUENCE +struct carrier_freq_nb_v1550_s { + struct carrier_freq_offset_v1550_opts { + enum options { v_minus8dot5, v_minus4dot5, v3dot5, v7dot5, nulltype } value; + typedef float number_type; + + std::string to_string() const; + float to_number() const; + std::string to_number_string() const; + }; + typedef enumerated carrier_freq_offset_v1550_e_; + + // member variables + carrier_freq_offset_v1550_e_ carrier_freq_offset_v1550; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // DL-AM-RLC-NB-r13 ::= SEQUENCE struct dl_am_rlc_nb_r13_s { bool enable_status_report_sn_gap_r13_present = false; @@ -478,6 +499,8 @@ struct dl_carrier_cfg_ded_nb_r13_s { nrs_pwr_offset_non_anchor_v1330_e_ nrs_pwr_offset_non_anchor_v1330; // group 1 copy_ptr dl_gap_non_anchor_v1530; + // group 2 + copy_ptr dl_carrier_freq_v1550; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -1565,6 +1588,8 @@ struct as_cfg_nb_s { fixed_bitstring<16> source_ue_id_r13; carrier_freq_nb_r13_s source_dl_carrier_freq_r13; // ... + // group 0 + copy_ptr source_dl_carrier_freq_v1550; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -2834,6 +2859,35 @@ struct nprach_params_tdd_nb_r15_s { void to_json(json_writer& j) const; }; +// NPRACH-ParametersTDD-NB-v1550 ::= SEQUENCE +struct nprach_params_tdd_nb_v1550_s { + struct max_num_preamb_attempt_ce_v1550_opts { + enum options { n3, n4, n5, n6, n7, n8, n10, spare1, nulltype } value; + typedef uint8_t number_type; + + std::string to_string() const; + uint8_t to_number() const; + }; + typedef enumerated max_num_preamb_attempt_ce_v1550_e_; + struct num_repeats_per_preamb_attempt_v1550_opts { + enum options { n1, n2, n4, n8, n16, n32, n64, n128, n256, n512, n1024, nulltype } value; + typedef uint16_t number_type; + + std::string to_string() const; + uint16_t to_number() const; + }; + typedef enumerated num_repeats_per_preamb_attempt_v1550_e_; + + // member variables + max_num_preamb_attempt_ce_v1550_e_ max_num_preamb_attempt_ce_v1550; + num_repeats_per_preamb_attempt_v1550_e_ num_repeats_per_preamb_attempt_v1550; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // 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; @@ -3097,6 +3151,8 @@ struct dl_carrier_cfg_common_nb_r14_s { // ... // group 0 copy_ptr dl_gap_non_anchor_v1530; + // group 1 + copy_ptr dl_carrier_freq_v1550; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3134,6 +3190,9 @@ using nprach_params_list_fmt2_nb_r15_l = dyn_array; // NPRACH-ParametersListTDD-NB-r15 ::= SEQUENCE (SIZE (1..3)) OF NPRACH-ParametersTDD-NB-r15 using nprach_params_list_tdd_nb_r15_l = dyn_array; +// NPRACH-ParametersListTDD-NB-v1550 ::= SEQUENCE (SIZE (1..3)) OF NPRACH-ParametersTDD-NB-v1550 +using nprach_params_list_tdd_nb_v1550_l = dyn_array; + // PCCH-Config-NB-r14 ::= SEQUENCE struct pcch_cfg_nb_r14_s { struct npdcch_num_repeat_paging_r14_opts { @@ -3419,6 +3478,8 @@ struct inter_freq_carrier_freq_info_nb_r13_s { // group 2 copy_ptr nsss_rrm_cfg_r15; copy_ptr inter_freq_neigh_cell_list_v1530; + // group 3 + copy_ptr dl_carrier_freq_v1550; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -3523,19 +3584,19 @@ struct nprach_cfg_sib_nb_v1530_s { std::string to_string() const; }; typedef enumerated nprach_preamb_format_r15_e_; - struct num_repeats_per_preamb_attempt_r15_opts { + struct dummy_opts { enum options { n1, n2, n4, n8, n16, n32, n64, n128, n256, n512, n1024, nulltype } value; typedef uint16_t number_type; std::string to_string() const; uint16_t to_number() const; }; - typedef enumerated num_repeats_per_preamb_attempt_r15_e_; + typedef enumerated dummy_e_; // member variables - nprach_preamb_format_r15_e_ nprach_preamb_format_r15; - num_repeats_per_preamb_attempt_r15_e_ num_repeats_per_preamb_attempt_r15; - nprach_params_list_tdd_nb_r15_l nprach_params_list_tdd_r15; + nprach_preamb_format_r15_e_ nprach_preamb_format_r15; + dummy_e_ dummy; + nprach_params_list_tdd_nb_r15_l nprach_params_list_tdd_r15; }; struct fmt2_params_r15_s_ { bool nprach_params_list_fmt2_r15_present = false; @@ -3564,6 +3625,21 @@ struct nprach_cfg_sib_nb_v1530_s { void to_json(json_writer& j) const; }; +// NPRACH-ConfigSIB-NB-v1550 ::= SEQUENCE +struct nprach_cfg_sib_nb_v1550_s { + struct tdd_params_v1550_s_ { + nprach_params_list_tdd_nb_v1550_l nprach_params_list_tdd_v1550; + }; + + // member variables + tdd_params_v1550_s_ tdd_params_v1550; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // NPRACH-ProbabilityAnchor-NB-r14 ::= SEQUENCE struct nprach_probability_anchor_nb_r14_s { struct nprach_probability_anchor_r14_opts { @@ -4120,6 +4196,8 @@ struct rr_cfg_common_sib_nb_r13_s { copy_ptr nprach_cfg_v1530; copy_ptr dl_gap_v1530; copy_ptr wus_cfg_r15; + // group 3 + copy_ptr nprach_cfg_v1550; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -5652,6 +5730,18 @@ struct rrc_conn_reest_nb_v1430_ies_s { 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; + + // sequence methods + SRSASN_CODE pack(bit_ref& bref) const; + SRSASN_CODE unpack(cbit_ref& bref); + void to_json(json_writer& j) const; +}; + // RedirectedCarrierInfo-NB-r13 ::= CarrierFreq-NB-r13 typedef carrier_freq_nb_r13_s redirected_carrier_info_nb_r13_s; @@ -5746,15 +5836,16 @@ struct rrc_conn_setup_nb_r13_ies_s { // RRCEarlyDataComplete-NB-r15-IEs ::= SEQUENCE struct rrc_early_data_complete_nb_r15_ies_s { - bool ded_info_nas_r15_present = false; - bool extended_wait_time_r15_present = false; - bool redirected_carrier_info_r15_present = false; - bool redirected_carrier_info_ext_r15_present = false; - bool non_crit_ext_present = false; - dyn_octstring ded_info_nas_r15; - uint16_t extended_wait_time_r15 = 1; - redirected_carrier_info_nb_r13_s redirected_carrier_info_r15; - redirected_carrier_info_nb_v1430_s redirected_carrier_info_ext_r15; + bool ded_info_nas_r15_present = false; + bool extended_wait_time_r15_present = false; + bool redirected_carrier_info_r15_present = false; + bool redirected_carrier_info_ext_r15_present = false; + bool non_crit_ext_present = false; + dyn_octstring ded_info_nas_r15; + uint16_t extended_wait_time_r15 = 1; + redirected_carrier_info_nb_r13_s redirected_carrier_info_r15; + redirected_carrier_info_nb_v1430_s redirected_carrier_info_ext_r15; + rrc_early_data_complete_nb_v1590_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; @@ -6240,12 +6331,40 @@ 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 +typedef carrier_freq_nb_v1550_s redirected_carrier_info_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; + 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; @@ -8234,22 +8353,35 @@ struct rrc_conn_setup_complete_nb_s { 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; + 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; +}; + // RRCEarlyDataRequest-NB-r15-IEs ::= SEQUENCE struct rrc_early_data_request_nb_r15_ies_s { struct establishment_cause_r15_opts { - enum options { mo_data_r15, mo_exception_data_r15, delay_tolerant_access_r15, spare1, nulltype } value; + enum options { mo_data, mo_exception_data, delay_tolerant_access, spare1, nulltype } value; std::string to_string() const; }; typedef enumerated establishment_cause_r15_e_; // member variables - bool cqi_npdcch_r15_present = false; - bool non_crit_ext_present = false; - s_tmsi_s s_tmsi_r15; - establishment_cause_r15_e_ establishment_cause_r15; - cqi_npdcch_nb_r14_e cqi_npdcch_r15; - dyn_octstring ded_info_nas_r15; + bool cqi_npdcch_r15_present = false; + bool non_crit_ext_present = false; + s_tmsi_s s_tmsi_r15; + establishment_cause_r15_e_ establishment_cause_r15; + cqi_npdcch_nb_r14_e cqi_npdcch_r15; + dyn_octstring ded_info_nas_r15; + rrc_early_data_request_nb_v1590_ies_s non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; diff --git a/lib/src/asn1/rrc.cc b/lib/src/asn1/rrc.cc index 5a7385c22..bafe046f1 100644 --- a/lib/src/asn1/rrc.cc +++ b/lib/src/asn1/rrc.cc @@ -114,14 +114,9 @@ int8_t sl_tx_pwr_r14_c::types_opts::to_number() const std::string sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::types_opts::to_string() const { - static const char* options[] = {"crs-IntfMitigEnabled-15", "crs-IntfMitigNumPRBs-r15"}; + static const char* options[] = {"crs-IntfMitigEnabled", "crs-IntfMitigNumPRBs"}; return convert_enum_idx(options, 2, value, "sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::types"); } -int8_t sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::types_opts::to_number() const -{ - static const int8_t options[] = {-15}; - return map_enum_number(options, 1, value, "sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::types"); -} std::string sl_offset_ind_r12_c::types_opts::to_string() const { @@ -236,6 +231,12 @@ std::string 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"); } +std::string 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"); +} + std::string 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 @@ -1063,14 +1064,9 @@ std::string rr_cfg_ded_s::mac_main_cfg_c_::types_opts::to_string() const std::string rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::types_opts::to_string() const { - static const char* options[] = {"crs-IntfMitigEnabled-15", "crs-IntfMitigNumPRBs-r15"}; + static const char* options[] = {"crs-IntfMitigEnabled", "crs-IntfMitigNumPRBs"}; return convert_enum_idx(options, 2, value, "rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::types"); } -int8_t rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::types_opts::to_number() const -{ - static const int8_t options[] = {-15}; - return map_enum_number(options, 1, value, "rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::types"); -} std::string redirected_carrier_info_r15_ies_c::types_opts::to_string() const { @@ -1196,100 +1192,6 @@ std::string 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"); } -std::string drb_to_add_mod_scg_r12_s::drb_type_r12_c_::types_opts::to_string() const -{ - static const char* options[] = {"split-r12", "scg-r12"}; - return convert_enum_idx(options, 2, value, "drb_to_add_mod_scg_r12_s::drb_type_r12_c_::types"); -} - -std::string ip_address_r13_c::types_opts::to_string() const -{ - static const char* options[] = {"ipv4-r13", "ipv6-r13"}; - return convert_enum_idx(options, 2, value, "ip_address_r13_c::types"); -} -uint8_t ip_address_r13_c::types_opts::to_number() const -{ - static const uint8_t options[] = {4, 6}; - return map_enum_number(options, 2, value, "ip_address_r13_c::types"); -} - -std::string 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"}; - return convert_enum_idx(options, 3, value, "security_cfg_ho_v1530_s::handov_type_v1530_c_::types"); -} - -std::string rach_skip_r14_s::target_ta_r14_c_::types_opts::to_string() const -{ - static const char* options[] = {"ta0-r14", "mcg-PTAG-r14", "scg-PTAG-r14", "mcg-STAG-r14", "scg-STAG-r14"}; - return convert_enum_idx(options, 5, value, "rach_skip_r14_s::target_ta_r14_c_::types"); -} -uint8_t rach_skip_r14_s::target_ta_r14_c_::types_opts::to_number() const -{ - static const uint8_t options[] = {0}; - return map_enum_number(options, 1, value, "rach_skip_r14_s::target_ta_r14_c_::types"); -} - -std::string sl_disc_tx_ref_carrier_ded_r13_c::types_opts::to_string() const -{ - static const char* options[] = {"pCell", "sCell"}; - return convert_enum_idx(options, 2, value, "sl_disc_tx_ref_carrier_ded_r13_c::types"); -} - -std::string sl_disc_tx_res_r13_c::setup_c_::types_opts::to_string() const -{ - static const char* options[] = {"scheduled-r13", "ue-Selected-r13"}; - return convert_enum_idx(options, 2, value, "sl_disc_tx_res_r13_c::setup_c_::types"); -} - -std::string rclwi_cfg_r13_s::cmd_c_::types_opts::to_string() const -{ - static const char* options[] = {"steerToWLAN-r13", "steerToLTE-r13"}; - return convert_enum_idx(options, 2, value, "rclwi_cfg_r13_s::cmd_c_::types"); -} - -std::string sl_v2x_cfg_ded_r14_s::comm_tx_res_r14_c_::setup_c_::types_opts::to_string() const -{ - static const char* options[] = {"scheduled-r14", "ue-Selected-r14"}; - return convert_enum_idx(options, 2, value, "sl_v2x_cfg_ded_r14_s::comm_tx_res_r14_c_::setup_c_::types"); -} - -std::string sl_v2x_cfg_ded_r14_s::comm_tx_res_v1530_c_::setup_c_::types_opts::to_string() const -{ - static const char* options[] = {"scheduled-v1530", "ue-Selected-v1530"}; - return convert_enum_idx(options, 2, value, "sl_v2x_cfg_ded_r14_s::comm_tx_res_v1530_c_::setup_c_::types"); -} - -std::string ran_notif_area_info_r15_c::types_opts::to_string() const -{ - static const char* options[] = {"cellList-r15", "ran-AreaConfigList-r15"}; - return convert_enum_idx(options, 2, value, "ran_notif_area_info_r15_c::types"); -} - -std::string sl_comm_cfg_r12_s::comm_tx_res_r12_c_::setup_c_::types_opts::to_string() const -{ - static const char* options[] = {"scheduled-r12", "ue-Selected-r12"}; - return convert_enum_idx(options, 2, value, "sl_comm_cfg_r12_s::comm_tx_res_r12_c_::setup_c_::types"); -} - -std::string sl_comm_cfg_r12_s::comm_tx_res_v1310_c_::setup_c_::types_opts::to_string() const -{ - static const char* options[] = {"scheduled-v1310", "ue-Selected-v1310"}; - return convert_enum_idx(options, 2, value, "sl_comm_cfg_r12_s::comm_tx_res_v1310_c_::setup_c_::types"); -} - -std::string sl_disc_cfg_r12_s::disc_tx_res_r12_c_::setup_c_::types_opts::to_string() const -{ - static const char* options[] = {"scheduled-r12", "ue-Selected-r12"}; - return convert_enum_idx(options, 2, value, "sl_disc_cfg_r12_s::disc_tx_res_r12_c_::setup_c_::types"); -} - -std::string sl_disc_cfg_r12_s::disc_tx_res_ps_r13_c_::setup_c_::types_opts::to_string() const -{ - static const char* options[] = {"scheduled-r13", "ue-Selected-r13"}; - return convert_enum_idx(options, 2, value, "sl_disc_cfg_r12_s::disc_tx_res_ps_r13_c_::setup_c_::types"); -} - std::string 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"}; @@ -1434,6 +1336,23 @@ std::string report_cfg_inter_rat_s::trigger_type_c_::types_opts::to_string() con return convert_enum_idx(options, 2, value, "report_cfg_inter_rat_s::trigger_type_c_::types"); } +std::string drb_to_add_mod_scg_r12_s::drb_type_r12_c_::types_opts::to_string() const +{ + static const char* options[] = {"split-r12", "scg-r12"}; + return convert_enum_idx(options, 2, value, "drb_to_add_mod_scg_r12_s::drb_type_r12_c_::types"); +} + +std::string ip_address_r13_c::types_opts::to_string() const +{ + static const char* options[] = {"ipv4-r13", "ipv6-r13"}; + return convert_enum_idx(options, 2, value, "ip_address_r13_c::types"); +} +uint8_t ip_address_r13_c::types_opts::to_number() const +{ + static const uint8_t options[] = {4, 6}; + return map_enum_number(options, 2, value, "ip_address_r13_c::types"); +} + std::string meas_obj_to_add_mod_s::meas_obj_c_::types_opts::to_string() const { static const char* options[] = {"measObjectEUTRA", @@ -1472,18 +1391,18 @@ uint16_t meas_obj_to_add_mod_ext_r13_s::meas_obj_r13_c_::types_opts::to_number() return 0; } -std::string prach_cfg_v1310_s::mpdcch_start_sf_css_ra_r13_c_::types_opts::to_string() const -{ - static const char* options[] = {"fdd-r13", "tdd-r13"}; - return convert_enum_idx(options, 2, value, "prach_cfg_v1310_s::mpdcch_start_sf_css_ra_r13_c_::types"); -} - std::string report_cfg_to_add_mod_s::report_cfg_c_::types_opts::to_string() const { static const char* options[] = {"reportConfigEUTRA", "reportConfigInterRAT"}; return convert_enum_idx(options, 2, value, "report_cfg_to_add_mod_s::report_cfg_c_::types"); } +std::string 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"}; + return convert_enum_idx(options, 3, value, "security_cfg_ho_v1530_s::handov_type_v1530_c_::types"); +} + std::string meas_gap_cfg_dense_prs_r15_c::setup_s_::gap_offset_dense_prs_r15_c_::types_opts::to_string() const { static const char* options[] = {"rstd0-r15", "rstd1-r15", "rstd2-r15", "rstd3-r15", "rstd4-r15", "rstd5-r15", @@ -1500,6 +1419,83 @@ uint8_t meas_gap_cfg_dense_prs_r15_c::setup_s_::gap_offset_dense_prs_r15_c_::typ options, 21, value, "meas_gap_cfg_dense_prs_r15_c::setup_s_::gap_offset_dense_prs_r15_c_::types"); } +std::string rach_skip_r14_s::target_ta_r14_c_::types_opts::to_string() const +{ + static const char* options[] = {"ta0-r14", "mcg-PTAG-r14", "scg-PTAG-r14", "mcg-STAG-r14", "scg-STAG-r14"}; + return convert_enum_idx(options, 5, value, "rach_skip_r14_s::target_ta_r14_c_::types"); +} +uint8_t rach_skip_r14_s::target_ta_r14_c_::types_opts::to_number() const +{ + static const uint8_t options[] = {0}; + return map_enum_number(options, 1, value, "rach_skip_r14_s::target_ta_r14_c_::types"); +} + +std::string sl_disc_tx_ref_carrier_ded_r13_c::types_opts::to_string() const +{ + static const char* options[] = {"pCell", "sCell"}; + return convert_enum_idx(options, 2, value, "sl_disc_tx_ref_carrier_ded_r13_c::types"); +} + +std::string sl_disc_tx_res_r13_c::setup_c_::types_opts::to_string() const +{ + static const char* options[] = {"scheduled-r13", "ue-Selected-r13"}; + return convert_enum_idx(options, 2, value, "sl_disc_tx_res_r13_c::setup_c_::types"); +} + +std::string rclwi_cfg_r13_s::cmd_c_::types_opts::to_string() const +{ + static const char* options[] = {"steerToWLAN-r13", "steerToLTE-r13"}; + return convert_enum_idx(options, 2, value, "rclwi_cfg_r13_s::cmd_c_::types"); +} + +std::string sl_v2x_cfg_ded_r14_s::comm_tx_res_r14_c_::setup_c_::types_opts::to_string() const +{ + static const char* options[] = {"scheduled-r14", "ue-Selected-r14"}; + return convert_enum_idx(options, 2, value, "sl_v2x_cfg_ded_r14_s::comm_tx_res_r14_c_::setup_c_::types"); +} + +std::string sl_v2x_cfg_ded_r14_s::comm_tx_res_v1530_c_::setup_c_::types_opts::to_string() const +{ + static const char* options[] = {"scheduled-v1530", "ue-Selected-v1530"}; + return convert_enum_idx(options, 2, value, "sl_v2x_cfg_ded_r14_s::comm_tx_res_v1530_c_::setup_c_::types"); +} + +std::string ran_notif_area_info_r15_c::types_opts::to_string() const +{ + static const char* options[] = {"cellList-r15", "ran-AreaConfigList-r15"}; + return convert_enum_idx(options, 2, value, "ran_notif_area_info_r15_c::types"); +} + +std::string sl_comm_cfg_r12_s::comm_tx_res_r12_c_::setup_c_::types_opts::to_string() const +{ + static const char* options[] = {"scheduled-r12", "ue-Selected-r12"}; + return convert_enum_idx(options, 2, value, "sl_comm_cfg_r12_s::comm_tx_res_r12_c_::setup_c_::types"); +} + +std::string sl_comm_cfg_r12_s::comm_tx_res_v1310_c_::setup_c_::types_opts::to_string() const +{ + static const char* options[] = {"scheduled-v1310", "ue-Selected-v1310"}; + return convert_enum_idx(options, 2, value, "sl_comm_cfg_r12_s::comm_tx_res_v1310_c_::setup_c_::types"); +} + +std::string sl_disc_cfg_r12_s::disc_tx_res_r12_c_::setup_c_::types_opts::to_string() const +{ + static const char* options[] = {"scheduled-r12", "ue-Selected-r12"}; + return convert_enum_idx(options, 2, value, "sl_disc_cfg_r12_s::disc_tx_res_r12_c_::setup_c_::types"); +} + +std::string sl_disc_cfg_r12_s::disc_tx_res_ps_r13_c_::setup_c_::types_opts::to_string() const +{ + static const char* options[] = {"scheduled-r13", "ue-Selected-r13"}; + return convert_enum_idx(options, 2, value, "sl_disc_cfg_r12_s::disc_tx_res_ps_r13_c_::setup_c_::types"); +} + +std::string prach_cfg_v1310_s::mpdcch_start_sf_css_ra_r13_c_::types_opts::to_string() const +{ + static const char* options[] = {"fdd-r13", "tdd-r13"}; + return convert_enum_idx(options, 2, value, "prach_cfg_v1310_s::mpdcch_start_sf_css_ra_r13_c_::types"); +} + std::string rrc_conn_release_v920_ies_s::cell_info_list_r9_c_::types_opts::to_string() const { static const char* options[] = {"geran-r9", "utra-FDD-r9", "utra-TDD-r9", "utra-TDD-r10"}; @@ -4657,6 +4653,40 @@ std::string visited_cell_info_r12_s::visited_cell_id_r12_c_::types_opts::to_stri return convert_enum_idx(options, 2, value, "visited_cell_info_r12_s::visited_cell_id_r12_c_::types"); } +// FailureReportSCG-v12d0 ::= SEQUENCE +SRSASN_CODE fail_report_scg_v12d0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(meas_result_neigh_cells_v12d0_present, 1)); + + if (meas_result_neigh_cells_v12d0_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_neigh_cells_v12d0, 1, 8)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE fail_report_scg_v12d0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(meas_result_neigh_cells_v12d0_present, 1)); + + if (meas_result_neigh_cells_v12d0_present) { + HANDLE_CODE(unpack_dyn_seq_of(meas_result_neigh_cells_v12d0, bref, 1, 8)); + } + + return SRSASN_SUCCESS; +} +void fail_report_scg_v12d0_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (meas_result_neigh_cells_v12d0_present) { + j.start_array("measResultNeighCells-v12d0"); + for (const auto& e1 : meas_result_neigh_cells_v12d0) { + e1.to_json(j); + } + j.end_array(); + } + j.end_obj(); +} + std::string idc_sf_pattern_r11_c::sf_pattern_tdd_r11_c_::types_opts::to_string() const { static const char* options[] = {"subframeConfig0-r11", "subframeConfig1-5-r11", "subframeConfig6-r11"}; @@ -4699,6 +4729,44 @@ uint8_t rstd_inter_freq_info_r10_s::meas_prs_offset_r15_c_::types_opts::to_numbe return map_enum_number(options, 21, value, "rstd_inter_freq_info_r10_s::meas_prs_offset_r15_c_::types"); } +// SCGFailureInformation-v12d0b-IEs ::= SEQUENCE +SRSASN_CODE scg_fail_info_v12d0b_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(fail_report_scg_v12d0_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (fail_report_scg_v12d0_present) { + HANDLE_CODE(fail_report_scg_v12d0.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE scg_fail_info_v12d0b_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(fail_report_scg_v12d0_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (fail_report_scg_v12d0_present) { + HANDLE_CODE(fail_report_scg_v12d0.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void scg_fail_info_v12d0b_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (fail_report_scg_v12d0_present) { + j.write_fieldname("failureReportSCG-v12d0"); + fail_report_scg_v12d0.to_json(j); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + std::string meas_results_s::meas_result_neigh_cells_c_::types_opts::to_string() const { static const char* options[] = {"measResultListEUTRA", @@ -5028,12 +5096,304 @@ band_combination_params_v1250_s::dc_support_r12_s_::supported_cell_grouping_r12_ options, 3, value, "band_combination_params_v1250_s::dc_support_r12_s_::supported_cell_grouping_r12_c_::types"); } +// MIMO-WeightedLayersCapabilities-r13 ::= SEQUENCE +SRSASN_CODE mimo_weighted_layers_cap_r13_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(rel_weight_four_layers_r13_present, 1)); + HANDLE_CODE(bref.pack(rel_weight_eight_layers_r13_present, 1)); + + HANDLE_CODE(rel_weight_two_layers_r13.pack(bref)); + if (rel_weight_four_layers_r13_present) { + HANDLE_CODE(rel_weight_four_layers_r13.pack(bref)); + } + if (rel_weight_eight_layers_r13_present) { + HANDLE_CODE(rel_weight_eight_layers_r13.pack(bref)); + } + HANDLE_CODE(pack_integer(bref, total_weighted_layers_r13, (uint8_t)2u, (uint8_t)128u)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE mimo_weighted_layers_cap_r13_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(rel_weight_four_layers_r13_present, 1)); + HANDLE_CODE(bref.unpack(rel_weight_eight_layers_r13_present, 1)); + + HANDLE_CODE(rel_weight_two_layers_r13.unpack(bref)); + if (rel_weight_four_layers_r13_present) { + HANDLE_CODE(rel_weight_four_layers_r13.unpack(bref)); + } + if (rel_weight_eight_layers_r13_present) { + HANDLE_CODE(rel_weight_eight_layers_r13.unpack(bref)); + } + HANDLE_CODE(unpack_integer(total_weighted_layers_r13, bref, (uint8_t)2u, (uint8_t)128u)); + + return SRSASN_SUCCESS; +} +void mimo_weighted_layers_cap_r13_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("relWeightTwoLayers-r13", rel_weight_two_layers_r13.to_string()); + if (rel_weight_four_layers_r13_present) { + j.write_str("relWeightFourLayers-r13", rel_weight_four_layers_r13.to_string()); + } + if (rel_weight_eight_layers_r13_present) { + j.write_str("relWeightEightLayers-r13", rel_weight_eight_layers_r13.to_string()); + } + j.write_int("totalWeightedLayers-r13", total_weighted_layers_r13); + j.end_obj(); +} + +std::string mimo_weighted_layers_cap_r13_s::rel_weight_two_layers_r13_opts::to_string() const +{ + static const char* options[] = {"v1", "v1dot25", "v1dot5", "v1dot75", "v2", "v2dot5", "v3", "v4"}; + return convert_enum_idx(options, 8, value, "mimo_weighted_layers_cap_r13_s::rel_weight_two_layers_r13_e_"); +} +float mimo_weighted_layers_cap_r13_s::rel_weight_two_layers_r13_opts::to_number() const +{ + static const float options[] = {1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 4.0}; + return map_enum_number(options, 8, value, "mimo_weighted_layers_cap_r13_s::rel_weight_two_layers_r13_e_"); +} +std::string mimo_weighted_layers_cap_r13_s::rel_weight_two_layers_r13_opts::to_number_string() const +{ + static const char* options[] = {"1", "1.25", "1.5", "1.75", "2", "2.5", "3", "4"}; + return convert_enum_idx(options, 8, value, "mimo_weighted_layers_cap_r13_s::rel_weight_two_layers_r13_e_"); +} + +std::string mimo_weighted_layers_cap_r13_s::rel_weight_four_layers_r13_opts::to_string() const +{ + static const char* options[] = {"v1", "v1dot25", "v1dot5", "v1dot75", "v2", "v2dot5", "v3", "v4"}; + return convert_enum_idx(options, 8, value, "mimo_weighted_layers_cap_r13_s::rel_weight_four_layers_r13_e_"); +} +float mimo_weighted_layers_cap_r13_s::rel_weight_four_layers_r13_opts::to_number() const +{ + static const float options[] = {1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 4.0}; + return map_enum_number(options, 8, value, "mimo_weighted_layers_cap_r13_s::rel_weight_four_layers_r13_e_"); +} +std::string mimo_weighted_layers_cap_r13_s::rel_weight_four_layers_r13_opts::to_number_string() const +{ + static const char* options[] = {"1", "1.25", "1.5", "1.75", "2", "2.5", "3", "4"}; + return convert_enum_idx(options, 8, value, "mimo_weighted_layers_cap_r13_s::rel_weight_four_layers_r13_e_"); +} + +std::string mimo_weighted_layers_cap_r13_s::rel_weight_eight_layers_r13_opts::to_string() const +{ + static const char* options[] = {"v1", "v1dot25", "v1dot5", "v1dot75", "v2", "v2dot5", "v3", "v4"}; + return convert_enum_idx(options, 8, value, "mimo_weighted_layers_cap_r13_s::rel_weight_eight_layers_r13_e_"); +} +float mimo_weighted_layers_cap_r13_s::rel_weight_eight_layers_r13_opts::to_number() const +{ + static const float options[] = {1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 4.0}; + return map_enum_number(options, 8, value, "mimo_weighted_layers_cap_r13_s::rel_weight_eight_layers_r13_e_"); +} +std::string mimo_weighted_layers_cap_r13_s::rel_weight_eight_layers_r13_opts::to_number_string() const +{ + static const char* options[] = {"1", "1.25", "1.5", "1.75", "2", "2.5", "3", "4"}; + return convert_enum_idx(options, 8, value, "mimo_weighted_layers_cap_r13_s::rel_weight_eight_layers_r13_e_"); +} + +// MIMO-UE-Parameters-v13e0 ::= SEQUENCE +SRSASN_CODE mimo_ue_params_v13e0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(mimo_weighted_layers_cap_r13_present, 1)); + + if (mimo_weighted_layers_cap_r13_present) { + HANDLE_CODE(mimo_weighted_layers_cap_r13.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE mimo_ue_params_v13e0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(mimo_weighted_layers_cap_r13_present, 1)); + + if (mimo_weighted_layers_cap_r13_present) { + HANDLE_CODE(mimo_weighted_layers_cap_r13.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void mimo_ue_params_v13e0_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (mimo_weighted_layers_cap_r13_present) { + j.write_fieldname("mimo-WeightedLayersCapabilities-r13"); + mimo_weighted_layers_cap_r13.to_json(j); + } + 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_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)); + } + + 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)); + + 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_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); + } + 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) +{ + bref.unpack(ext, 1); + HANDLE_CODE(unpack_dyn_seq_of(meas_result_freq_list_eutra_r15, bref, 1, 8)); + + return SRSASN_SUCCESS; +} +void meas_result_scg_fail_mrdc_r15_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.start_array("measResultFreqListEUTRA-r15"); + for (const auto& e1 : meas_result_freq_list_eutra_r15) { + e1.to_json(j); + } + j.end_array(); + j.end_obj(); +} + +// PhyLayerParameters-v13e0 ::= SEQUENCE +SRSASN_CODE phy_layer_params_v13e0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(mimo_ue_params_v13e0.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE phy_layer_params_v13e0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(mimo_ue_params_v13e0.unpack(bref)); + + return SRSASN_SUCCESS; +} +void phy_layer_params_v13e0_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("mimo-UE-Parameters-v13e0"); + mimo_ue_params_v13e0.to_json(j); + j.end_obj(); +} + std::string mbms_params_v1470_s::mbms_max_bw_r14_c_::types_opts::to_string() const { static const char* options[] = {"implicitValue", "explicitValue"}; return convert_enum_idx(options, 2, value, "mbms_params_v1470_s::mbms_max_bw_r14_c_::types"); } +// UE-EUTRA-Capability-v13e0b-IEs ::= SEQUENCE +SRSASN_CODE ue_eutra_cap_v13e0b_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + HANDLE_CODE(phy_layer_params_v13e0.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_eutra_cap_v13e0b_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + HANDLE_CODE(phy_layer_params_v13e0.unpack(bref)); + + return SRSASN_SUCCESS; +} +void ue_eutra_cap_v13e0b_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("phyLayerParameters-v13e0"); + phy_layer_params_v13e0.to_json(j); + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + +// SCG-Config-v12i0b-IEs ::= SEQUENCE +SRSASN_CODE scg_cfg_v12i0b_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(scg_radio_cfg_v12i0_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (scg_radio_cfg_v12i0_present) { + HANDLE_CODE(scg_radio_cfg_v12i0.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE scg_cfg_v12i0b_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(scg_radio_cfg_v12i0_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (scg_radio_cfg_v12i0_present) { + HANDLE_CODE(scg_radio_cfg_v12i0.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void scg_cfg_v12i0b_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (scg_radio_cfg_v12i0_present) { + j.write_fieldname("scg-RadioConfig-v12i0"); + scg_radio_cfg_v12i0.to_json(j); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + std::string scg_cfg_r12_s::crit_exts_c_::c1_c_::types_opts::to_string() const { static const char* options[] = { diff --git a/lib/src/asn1/rrc/bcch_msg.cc b/lib/src/asn1/rrc/bcch_msg.cc index e9309ca57..be646a9b9 100644 --- a/lib/src/asn1/rrc/bcch_msg.cc +++ b/lib/src/asn1/rrc/bcch_msg.cc @@ -49,6 +49,33 @@ void bcch_bch_msg_s::to_json(json_writer& j) const j.end_array(); } +// SIB-Type-v12j0 ::= ENUMERATED +std::string sib_type_v12j0_opts::to_string() const +{ + static const char* options[] = {"sibType19-v1250", + "sibType20-v1310", + "sibType21-v1430", + "sibType24-v1530", + "sibType25-v1530", + "sibType26-v1530", + "spare10", + "spare9", + "spare8", + "spare7", + "spare6", + "spare5", + "spare4", + "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"); +} + // NS-PmaxValue-v10l0 ::= SEQUENCE SRSASN_CODE ns_pmax_value_v10l0_s::pack(bit_ref& bref) const { @@ -143,6 +170,67 @@ void ns_pmax_value_r10_s::to_json(json_writer& j) const j.end_obj(); } +// SchedulingInfo-v12j0 ::= SEQUENCE +SRSASN_CODE sched_info_v12j0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(sib_map_info_v12j0_present, 1)); + + if (sib_map_info_v12j0_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, sib_map_info_v12j0, 1, 31)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE sched_info_v12j0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(sib_map_info_v12j0_present, 1)); + + if (sib_map_info_v12j0_present) { + HANDLE_CODE(unpack_dyn_seq_of(sib_map_info_v12j0, bref, 1, 31)); + } + + return SRSASN_SUCCESS; +} +void sched_info_v12j0_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (sib_map_info_v12j0_present) { + j.start_array("sib-MappingInfo-v12j0"); + for (const auto& e1 : sib_map_info_v12j0) { + j.write_str(e1.to_string()); + } + j.end_array(); + } + j.end_obj(); +} + +// SchedulingInfoExt-r12 ::= SEQUENCE +SRSASN_CODE sched_info_ext_r12_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(si_periodicity_r12.pack(bref)); + HANDLE_CODE(pack_dyn_seq_of(bref, sib_map_info_r12, 1, 31)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE sched_info_ext_r12_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(si_periodicity_r12.unpack(bref)); + HANDLE_CODE(unpack_dyn_seq_of(sib_map_info_r12, bref, 1, 31)); + + return SRSASN_SUCCESS; +} +void sched_info_ext_r12_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("si-Periodicity-r12", si_periodicity_r12.to_string()); + j.start_array("sib-MappingInfo-r12"); + for (const auto& e1 : sib_map_info_r12) { + j.write_str(e1.to_string()); + } + j.end_array(); + j.end_obj(); +} + // BandClassInfoCDMA2000 ::= SEQUENCE SRSASN_CODE band_class_info_cdma2000_s::pack(bit_ref& bref) const { @@ -332,6 +420,39 @@ void multi_band_info_v9e0_s::to_json(json_writer& j) const j.end_obj(); } +// NS-PmaxValueNR-r15 ::= SEQUENCE +SRSASN_CODE ns_pmax_value_nr_r15_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(add_pmax_nr_r15_present, 1)); + + if (add_pmax_nr_r15_present) { + HANDLE_CODE(pack_integer(bref, add_pmax_nr_r15, (int8_t)-30, (int8_t)33)); + } + HANDLE_CODE(pack_integer(bref, add_spec_emission_nr_r15, (uint8_t)0u, (uint8_t)7u)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE ns_pmax_value_nr_r15_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(add_pmax_nr_r15_present, 1)); + + if (add_pmax_nr_r15_present) { + HANDLE_CODE(unpack_integer(add_pmax_nr_r15, bref, (int8_t)-30, (int8_t)33)); + } + HANDLE_CODE(unpack_integer(add_spec_emission_nr_r15, bref, (uint8_t)0u, (uint8_t)7u)); + + return SRSASN_SUCCESS; +} +void ns_pmax_value_nr_r15_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (add_pmax_nr_r15_present) { + j.write_int("additionalPmaxNR-r15", add_pmax_nr_r15); + } + j.write_int("additionalSpectrumEmissionNR-r15", add_spec_emission_nr_r15); + j.end_obj(); +} + // NeighCellCDMA2000-r11 ::= SEQUENCE SRSASN_CODE neigh_cell_cdma2000_r11_s::pack(bit_ref& bref) const { @@ -433,6 +554,62 @@ void redist_neigh_cell_r13_s::to_json(json_writer& j) const j.end_obj(); } +// SystemInformationBlockType1-v12j0-IEs ::= SEQUENCE +SRSASN_CODE sib_type1_v12j0_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(sched_info_list_v12j0_present, 1)); + HANDLE_CODE(bref.pack(sched_info_list_ext_r12_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (sched_info_list_v12j0_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, sched_info_list_v12j0, 1, 32)); + } + if (sched_info_list_ext_r12_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, sched_info_list_ext_r12, 1, 32)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE sib_type1_v12j0_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(sched_info_list_v12j0_present, 1)); + HANDLE_CODE(bref.unpack(sched_info_list_ext_r12_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (sched_info_list_v12j0_present) { + HANDLE_CODE(unpack_dyn_seq_of(sched_info_list_v12j0, bref, 1, 32)); + } + if (sched_info_list_ext_r12_present) { + HANDLE_CODE(unpack_dyn_seq_of(sched_info_list_ext_r12, bref, 1, 32)); + } + + return SRSASN_SUCCESS; +} +void sib_type1_v12j0_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (sched_info_list_v12j0_present) { + j.start_array("schedulingInfoList-v12j0"); + for (const auto& e1 : sched_info_list_v12j0) { + e1.to_json(j); + } + j.end_array(); + } + if (sched_info_list_ext_r12_present) { + j.start_array("schedulingInfoListExt-r12"); + for (const auto& e1 : sched_info_list_ext_r12) { + 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(); +} + // SystemInformationBlockType2-v10n0-IEs ::= SEQUENCE SRSASN_CODE sib_type2_v10n0_ies_s::pack(bit_ref& bref) const { @@ -770,39 +947,6 @@ void inter_freq_neigh_cell_info_s::to_json(json_writer& j) const j.end_obj(); } -// NS-PmaxValueNR-r15 ::= SEQUENCE -SRSASN_CODE ns_pmax_value_nr_r15_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(add_pmax_nr_r15_present, 1)); - - if (add_pmax_nr_r15_present) { - HANDLE_CODE(pack_integer(bref, add_pmax_nr_r15, (int8_t)-30, (int8_t)33)); - } - HANDLE_CODE(pack_integer(bref, add_spec_emission_nr_r15, (uint8_t)0u, (uint8_t)7u)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE ns_pmax_value_nr_r15_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(add_pmax_nr_r15_present, 1)); - - if (add_pmax_nr_r15_present) { - HANDLE_CODE(unpack_integer(add_pmax_nr_r15, bref, (int8_t)-30, (int8_t)33)); - } - HANDLE_CODE(unpack_integer(add_spec_emission_nr_r15, bref, (uint8_t)0u, (uint8_t)7u)); - - return SRSASN_SUCCESS; -} -void ns_pmax_value_nr_r15_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (add_pmax_nr_r15_present) { - j.write_int("additionalPmaxNR-r15", add_pmax_nr_r15); - } - j.write_int("additionalSpectrumEmissionNR-r15", add_spec_emission_nr_r15); - j.end_obj(); -} - // PLMN-IdentityInfo2-r12 ::= CHOICE void plmn_id_info2_r12_c::destroy_() { @@ -918,6 +1062,48 @@ SRSASN_CODE plmn_id_info2_r12_c::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } +// SystemInformationBlockType1-v10x0-IEs ::= SEQUENCE +SRSASN_CODE sib_type1_v10x0_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 sib_type1_v10x0_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 sib_type1_v10x0_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(); +} + // SystemInformationBlockType2-v10m0-IEs ::= SEQUENCE SRSASN_CODE sib_type2_v10m0_ies_s::pack(bit_ref& bref) const { @@ -1610,6 +1796,9 @@ SRSASN_CODE sib_type1_v10l0_ies_s::pack(bit_ref& bref) const if (multi_band_info_list_v10l0_present) { HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list_v10l0, 1, 8, SeqOfPacker(1, 8, Packer()))); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } return SRSASN_SUCCESS; } @@ -1625,6 +1814,9 @@ SRSASN_CODE sib_type1_v10l0_ies_s::unpack(cbit_ref& bref) if (multi_band_info_list_v10l0_present) { HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list_v10l0, bref, 1, 8, SeqOfPacker(1, 8, Packer()))); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } return SRSASN_SUCCESS; } @@ -1651,8 +1843,7 @@ void sib_type1_v10l0_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(); } @@ -1826,7 +2017,7 @@ SRSASN_CODE carrier_freq_nr_r15_s::pack(bit_ref& bref) const HANDLE_CODE(pack_dyn_seq_of(bref, ns_pmax_list_nr_r15, 1, 8)); } if (q_qual_min_r15_present) { - HANDLE_CODE(pack_integer(bref, q_qual_min_r15, (int8_t)-34, (int8_t)-3)); + HANDLE_CODE(pack_integer(bref, q_qual_min_r15, (int8_t)-43, (int8_t)-12)); } HANDLE_CODE(bref.pack(derive_ssb_idx_from_cell_r15, 1)); if (max_rs_idx_cell_qual_r15_present) { @@ -1836,6 +2027,32 @@ SRSASN_CODE carrier_freq_nr_r15_s::pack(bit_ref& bref) const HANDLE_CODE(thresh_rs_idx_r15.pack(bref)); } + if (ext) { + ext_groups_packer_guard group_flags; + group_flags[0] |= multi_band_ns_pmax_list_nr_v1550.is_present(); + group_flags[0] |= multi_band_ns_pmax_list_nr_sul_v1550.is_present(); + 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(bref.pack(multi_band_ns_pmax_list_nr_v1550.is_present(), 1)); + HANDLE_CODE(bref.pack(multi_band_ns_pmax_list_nr_sul_v1550.is_present(), 1)); + HANDLE_CODE(bref.pack(ssb_to_measure_r15.is_present(), 1)); + if (multi_band_ns_pmax_list_nr_v1550.is_present()) { + HANDLE_CODE( + pack_dyn_seq_of(bref, *multi_band_ns_pmax_list_nr_v1550, 1, 31, SeqOfPacker(1, 8, Packer()))); + } + if (multi_band_ns_pmax_list_nr_sul_v1550.is_present()) { + HANDLE_CODE( + pack_dyn_seq_of(bref, *multi_band_ns_pmax_list_nr_sul_v1550, 1, 32, SeqOfPacker(1, 8, Packer()))); + } + if (ssb_to_measure_r15.is_present()) { + HANDLE_CODE(ssb_to_measure_r15->pack(bref)); + } + } + } return SRSASN_SUCCESS; } SRSASN_CODE carrier_freq_nr_r15_s::unpack(cbit_ref& bref) @@ -1889,7 +2106,7 @@ SRSASN_CODE carrier_freq_nr_r15_s::unpack(cbit_ref& bref) HANDLE_CODE(unpack_dyn_seq_of(ns_pmax_list_nr_r15, bref, 1, 8)); } if (q_qual_min_r15_present) { - HANDLE_CODE(unpack_integer(q_qual_min_r15, bref, (int8_t)-34, (int8_t)-3)); + HANDLE_CODE(unpack_integer(q_qual_min_r15, bref, (int8_t)-43, (int8_t)-12)); } HANDLE_CODE(bref.unpack(derive_ssb_idx_from_cell_r15, 1)); if (max_rs_idx_cell_qual_r15_present) { @@ -1899,6 +2116,35 @@ SRSASN_CODE carrier_freq_nr_r15_s::unpack(cbit_ref& bref) HANDLE_CODE(thresh_rs_idx_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 multi_band_ns_pmax_list_nr_v1550_present; + HANDLE_CODE(bref.unpack(multi_band_ns_pmax_list_nr_v1550_present, 1)); + multi_band_ns_pmax_list_nr_v1550.set_present(multi_band_ns_pmax_list_nr_v1550_present); + bool multi_band_ns_pmax_list_nr_sul_v1550_present; + HANDLE_CODE(bref.unpack(multi_band_ns_pmax_list_nr_sul_v1550_present, 1)); + multi_band_ns_pmax_list_nr_sul_v1550.set_present(multi_band_ns_pmax_list_nr_sul_v1550_present); + 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 (multi_band_ns_pmax_list_nr_v1550.is_present()) { + HANDLE_CODE( + unpack_dyn_seq_of(*multi_band_ns_pmax_list_nr_v1550, bref, 1, 31, SeqOfPacker(1, 8, Packer()))); + } + if (multi_band_ns_pmax_list_nr_sul_v1550.is_present()) { + HANDLE_CODE( + unpack_dyn_seq_of(*multi_band_ns_pmax_list_nr_sul_v1550, bref, 1, 32, SeqOfPacker(1, 8, Packer()))); + } + if (ssb_to_measure_r15.is_present()) { + HANDLE_CODE(ssb_to_measure_r15->unpack(bref)); + } + } + } return SRSASN_SUCCESS; } void carrier_freq_nr_r15_s::to_json(json_writer& j) const @@ -1966,6 +2212,34 @@ void carrier_freq_nr_r15_s::to_json(json_writer& j) const j.write_fieldname("threshRS-Index-r15"); thresh_rs_idx_r15.to_json(j); } + if (ext) { + if (multi_band_ns_pmax_list_nr_v1550.is_present()) { + j.start_array("multiBandNsPmaxListNR-v1550"); + for (const auto& e1 : *multi_band_ns_pmax_list_nr_v1550) { + j.start_array(); + for (const auto& e2 : e1) { + e2.to_json(j); + } + j.end_array(); + } + j.end_array(); + } + if (multi_band_ns_pmax_list_nr_sul_v1550.is_present()) { + j.start_array("multiBandNsPmaxListNR-SUL-v1550"); + for (const auto& e1 : *multi_band_ns_pmax_list_nr_sul_v1550) { + j.start_array(); + for (const auto& e2 : e1) { + e2.to_json(j); + } + j.end_array(); + } + j.end_array(); + } + if (ssb_to_measure_r15.is_present()) { + j.write_fieldname("ssb-ToMeasure-r15"); + ssb_to_measure_r15->to_json(j); + } + } j.end_obj(); } @@ -3248,17 +3522,17 @@ uint16_t mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_mod_period_v1430_opts::to_n std::string mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_opts::to_string() const { - static const char* options[] = {"khz-7dot5", "khz-1dot25"}; + static const char* options[] = {"kHz7dot5", "kHz1dot25"}; return convert_enum_idx(options, 2, value, "mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_e_"); } float mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_opts::to_number() const { - static const float options[] = {-7.5, -1.25}; + static const float options[] = {7.5, 1.25}; return map_enum_number(options, 2, value, "mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_e_"); } std::string mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_opts::to_number_string() const { - static const char* options[] = {"-7.5", "-1.25"}; + static const char* options[] = {"7.5", "1.25"}; return convert_enum_idx(options, 2, value, "mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_e_"); } @@ -7093,7 +7367,7 @@ SRSASN_CODE sib_type26_r15_s::pack(bit_ref& bref) const HANDLE_CODE(bref.pack(sync_freq_list_r15_present, 1)); HANDLE_CODE(bref.pack(slss_tx_multi_freq_r15_present, 1)); HANDLE_CODE(bref.pack(v2x_freq_sel_cfg_list_r15_present, 1)); - HANDLE_CODE(bref.pack(thresh_s_rssi_cbr_r14_present, 1)); + HANDLE_CODE(bref.pack(thresh_s_rssi_cbr_r15_present, 1)); if (v2x_inter_freq_info_list_r15_present) { HANDLE_CODE(pack_dyn_seq_of(bref, v2x_inter_freq_info_list_r15, 0, 7)); @@ -7110,10 +7384,17 @@ SRSASN_CODE sib_type26_r15_s::pack(bit_ref& bref) const if (v2x_freq_sel_cfg_list_r15_present) { HANDLE_CODE(pack_dyn_seq_of(bref, v2x_freq_sel_cfg_list_r15, 1, 8)); } - if (thresh_s_rssi_cbr_r14_present) { - HANDLE_CODE(pack_integer(bref, thresh_s_rssi_cbr_r14, (uint8_t)0u, (uint8_t)45u)); + if (thresh_s_rssi_cbr_r15_present) { + HANDLE_CODE(pack_integer(bref, thresh_s_rssi_cbr_r15, (uint8_t)0u, (uint8_t)45u)); } + if (ext) { + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + } return SRSASN_SUCCESS; } SRSASN_CODE sib_type26_r15_s::unpack(cbit_ref& bref) @@ -7125,7 +7406,7 @@ SRSASN_CODE sib_type26_r15_s::unpack(cbit_ref& bref) HANDLE_CODE(bref.unpack(sync_freq_list_r15_present, 1)); HANDLE_CODE(bref.unpack(slss_tx_multi_freq_r15_present, 1)); HANDLE_CODE(bref.unpack(v2x_freq_sel_cfg_list_r15_present, 1)); - HANDLE_CODE(bref.unpack(thresh_s_rssi_cbr_r14_present, 1)); + HANDLE_CODE(bref.unpack(thresh_s_rssi_cbr_r15_present, 1)); if (v2x_inter_freq_info_list_r15_present) { HANDLE_CODE(unpack_dyn_seq_of(v2x_inter_freq_info_list_r15, bref, 0, 7)); @@ -7142,10 +7423,17 @@ SRSASN_CODE sib_type26_r15_s::unpack(cbit_ref& bref) if (v2x_freq_sel_cfg_list_r15_present) { HANDLE_CODE(unpack_dyn_seq_of(v2x_freq_sel_cfg_list_r15, bref, 1, 8)); } - if (thresh_s_rssi_cbr_r14_present) { - HANDLE_CODE(unpack_integer(thresh_s_rssi_cbr_r14, bref, (uint8_t)0u, (uint8_t)45u)); + if (thresh_s_rssi_cbr_r15_present) { + HANDLE_CODE(unpack_integer(thresh_s_rssi_cbr_r15, bref, (uint8_t)0u, (uint8_t)45u)); } + if (ext) { + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + } return SRSASN_SUCCESS; } void sib_type26_r15_s::to_json(json_writer& j) const @@ -7186,8 +7474,13 @@ void sib_type26_r15_s::to_json(json_writer& j) const } j.end_array(); } - if (thresh_s_rssi_cbr_r14_present) { - j.write_int("threshS-RSSI-CBR-r14", thresh_s_rssi_cbr_r14); + if (thresh_s_rssi_cbr_r15_present) { + j.write_int("threshS-RSSI-CBR-r15", thresh_s_rssi_cbr_r15); + } + if (ext) { + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } } j.end_obj(); } diff --git a/lib/src/asn1/rrc/dl_ccch_msg.cc b/lib/src/asn1/rrc/dl_ccch_msg.cc index 34ffc8bba..936caa189 100644 --- a/lib/src/asn1/rrc/dl_ccch_msg.cc +++ b/lib/src/asn1/rrc/dl_ccch_msg.cc @@ -835,6 +835,43 @@ void rrc_conn_setup_v8a0_ies_s::to_json(json_writer& j) const j.end_obj(); } +// RRCEarlyDataComplete-v1590-IEs ::= SEQUENCE +SRSASN_CODE rrc_early_data_complete_v1590_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_early_data_complete_v1590_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void rrc_early_data_complete_v1590_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + // RedirectedCarrierInfo-r15-IEs ::= CHOICE void redirected_carrier_info_r15_ies_c::destroy_() { @@ -1202,6 +1239,9 @@ SRSASN_CODE rrc_early_data_complete_r15_ies_s::pack(bit_ref& bref) const if (redirected_carrier_info_r15_present) { HANDLE_CODE(redirected_carrier_info_r15.pack(bref)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } return SRSASN_SUCCESS; } @@ -1229,6 +1269,9 @@ SRSASN_CODE rrc_early_data_complete_r15_ies_s::unpack(cbit_ref& bref) if (redirected_carrier_info_r15_present) { HANDLE_CODE(redirected_carrier_info_r15.unpack(bref)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } return SRSASN_SUCCESS; } @@ -1255,8 +1298,7 @@ void rrc_early_data_complete_r15_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_dcch_msg.cc b/lib/src/asn1/rrc/dl_dcch_msg.cc index c1e55f9f3..98b8571bf 100644 --- a/lib/src/asn1/rrc/dl_dcch_msg.cc +++ b/lib/src/asn1/rrc/dl_dcch_msg.cc @@ -608,6 +608,18 @@ void sl_tx_pool_to_add_mod_r14_s::to_json(json_writer& j) const j.end_obj(); } +// SubframeAssignment-r15 ::= ENUMERATED +std::string sf_assign_r15_opts::to_string() const +{ + static const char* options[] = {"sa0", "sa1", "sa2", "sa3", "sa4", "sa5", "sa6"}; + return convert_enum_idx(options, 7, value, "sf_assign_r15_e"); +} +uint8_t sf_assign_r15_opts::to_number() const +{ + static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6}; + return map_enum_number(options, 7, value, "sf_assign_r15_e"); +} + // UplinkPowerControlCommonPSCell-r12 ::= SEQUENCE SRSASN_CODE ul_pwr_ctrl_common_ps_cell_r12_s::pack(bit_ref& bref) const { @@ -1565,16 +1577,62 @@ SRSASN_CODE sl_disc_tx_res_r13_c::setup_c_::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -// SubframeAssignment-r15 ::= ENUMERATED -std::string sf_assign_r15_opts::to_string() const +// TDM-PatternConfig-r15 ::= CHOICE +void tdm_pattern_cfg_r15_c::set(types::options e) { - static const char* options[] = {"sa0", "sa1", "sa2", "sa3", "sa4", "sa5", "sa6"}; - return convert_enum_idx(options, 7, value, "sf_assign_r15_e"); + type_ = e; } -uint8_t sf_assign_r15_opts::to_number() const +void tdm_pattern_cfg_r15_c::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(); + 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 @@ -2453,63 +2511,6 @@ SRSASN_CODE rrc_conn_recfg_v1510_ies_s::nr_cfg_r15_c_::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void rrc_conn_recfg_v1510_ies_s::tdm_pattern_cfg_r15_c_::set(types::options e) -{ - type_ = e; -} -void rrc_conn_recfg_v1510_ies_s::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_, "rrc_conn_recfg_v1510_ies_s::tdm_pattern_cfg_r15_c_"); - } - j.end_obj(); -} -SRSASN_CODE rrc_conn_recfg_v1510_ies_s::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_, "rrc_conn_recfg_v1510_ies_s::tdm_pattern_cfg_r15_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } - return SRSASN_SUCCESS; -} -SRSASN_CODE rrc_conn_recfg_v1510_ies_s::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_, "rrc_conn_recfg_v1510_ies_s::tdm_pattern_cfg_r15_c_"); - return SRSASN_ERROR_DECODE_FAIL; - } - return SRSASN_SUCCESS; -} - // SCG-Configuration-v13c0 ::= CHOICE void scg_cfg_v13c0_c::set(types::options e) { @@ -3885,6 +3886,35 @@ void rrc_conn_recfg_v1430_ies_s::to_json(json_writer& j) const j.end_obj(); } +// RRCConnectionRelease-v15b0-IEs ::= SEQUENCE +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)); + + return SRSASN_SUCCESS; +} +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)); + + return SRSASN_SUCCESS; +} +void rrc_conn_release_v15b0_ies_s::to_json(json_writer& j) const +{ + 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(); + } + j.end_obj(); +} + // RadioResourceConfigDedicated-v1370 ::= SEQUENCE SRSASN_CODE rr_cfg_ded_v1370_s::pack(bit_ref& bref) const { @@ -3950,6 +3980,9 @@ SRSASN_CODE scg_cfg_part_scg_r12_s::pack(bit_ref& bref) const group_flags[2] |= pscell_to_add_mod_v1440.is_present(); group_flags[3] |= scell_group_to_release_list_scg_r15.is_present(); group_flags[3] |= scell_group_to_add_mod_list_scg_r15.is_present(); + group_flags[4] |= meas_cfg_sn_r15.is_present(); + group_flags[4] |= tdm_pattern_cfg_ne_dc_r15.is_present(); + group_flags[5] |= p_max_eutra_r15_present; group_flags.pack(bref); if (group_flags[0]) { @@ -3992,6 +4025,26 @@ SRSASN_CODE scg_cfg_part_scg_r12_s::pack(bit_ref& bref) const HANDLE_CODE(pack_dyn_seq_of(bref, *scell_group_to_add_mod_list_scg_r15, 1, 4)); } } + if (group_flags[4]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(meas_cfg_sn_r15.is_present(), 1)); + HANDLE_CODE(bref.pack(tdm_pattern_cfg_ne_dc_r15.is_present(), 1)); + if (meas_cfg_sn_r15.is_present()) { + HANDLE_CODE(meas_cfg_sn_r15->pack(bref)); + } + if (tdm_pattern_cfg_ne_dc_r15.is_present()) { + HANDLE_CODE(tdm_pattern_cfg_ne_dc_r15->pack(bref)); + } + } + if (group_flags[5]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(p_max_eutra_r15_present, 1)); + if (p_max_eutra_r15_present) { + HANDLE_CODE(pack_integer(bref, p_max_eutra_r15, (int8_t)-30, (int8_t)33)); + } + } } return SRSASN_SUCCESS; } @@ -4021,7 +4074,7 @@ SRSASN_CODE scg_cfg_part_scg_r12_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]) { @@ -4076,6 +4129,30 @@ SRSASN_CODE scg_cfg_part_scg_r12_s::unpack(cbit_ref& bref) HANDLE_CODE(unpack_dyn_seq_of(*scell_group_to_add_mod_list_scg_r15, bref, 1, 4)); } } + if (group_flags[4]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool meas_cfg_sn_r15_present; + HANDLE_CODE(bref.unpack(meas_cfg_sn_r15_present, 1)); + meas_cfg_sn_r15.set_present(meas_cfg_sn_r15_present); + bool tdm_pattern_cfg_ne_dc_r15_present; + HANDLE_CODE(bref.unpack(tdm_pattern_cfg_ne_dc_r15_present, 1)); + tdm_pattern_cfg_ne_dc_r15.set_present(tdm_pattern_cfg_ne_dc_r15_present); + if (meas_cfg_sn_r15.is_present()) { + HANDLE_CODE(meas_cfg_sn_r15->unpack(bref)); + } + if (tdm_pattern_cfg_ne_dc_r15.is_present()) { + HANDLE_CODE(tdm_pattern_cfg_ne_dc_r15->unpack(bref)); + } + } + if (group_flags[5]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.unpack(p_max_eutra_r15_present, 1)); + if (p_max_eutra_r15_present) { + HANDLE_CODE(unpack_integer(p_max_eutra_r15, bref, (int8_t)-30, (int8_t)33)); + } + } } return SRSASN_SUCCESS; } @@ -4148,6 +4225,17 @@ void scg_cfg_part_scg_r12_s::to_json(json_writer& j) const } j.end_array(); } + if (meas_cfg_sn_r15.is_present()) { + j.write_fieldname("measConfigSN-r15"); + meas_cfg_sn_r15->to_json(j); + } + if (tdm_pattern_cfg_ne_dc_r15.is_present()) { + j.write_fieldname("tdm-PatternConfigNE-DC-r15"); + tdm_pattern_cfg_ne_dc_r15->to_json(j); + } + if (p_max_eutra_r15_present) { + j.write_int("p-MaxEUTRA-r15", p_max_eutra_r15); + } } j.end_obj(); } @@ -4357,7 +4445,7 @@ SRSASN_CODE rrc_inactive_cfg_r15_s::pack(bit_ref& bref) const HANDLE_CODE(bref.pack(ran_notif_area_info_r15_present, 1)); HANDLE_CODE(bref.pack(periodic_rnau_timer_r15_present, 1)); HANDLE_CODE(bref.pack(next_hop_chaining_count_r15_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(dummy_present, 1)); HANDLE_CODE(full_i_rnti_r15.pack(bref)); HANDLE_CODE(short_i_rnti_r15.pack(bref)); @@ -4382,7 +4470,7 @@ SRSASN_CODE rrc_inactive_cfg_r15_s::unpack(cbit_ref& bref) HANDLE_CODE(bref.unpack(ran_notif_area_info_r15_present, 1)); HANDLE_CODE(bref.unpack(periodic_rnau_timer_r15_present, 1)); HANDLE_CODE(bref.unpack(next_hop_chaining_count_r15_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(dummy_present, 1)); HANDLE_CODE(full_i_rnti_r15.unpack(bref)); HANDLE_CODE(short_i_rnti_r15.unpack(bref)); @@ -4419,8 +4507,8 @@ void rrc_inactive_cfg_r15_s::to_json(json_writer& j) const 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"); + if (dummy_present) { + j.write_fieldname("dummy"); j.start_obj(); j.end_obj(); } @@ -4613,6 +4701,9 @@ SRSASN_CODE rrc_conn_release_v1540_ies_s::pack(bit_ref& bref) const if (wait_time_present) { HANDLE_CODE(pack_integer(bref, wait_time, (uint8_t)1u, (uint8_t)16u)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } return SRSASN_SUCCESS; } @@ -4624,6 +4715,9 @@ SRSASN_CODE rrc_conn_release_v1540_ies_s::unpack(cbit_ref& bref) if (wait_time_present) { HANDLE_CODE(unpack_integer(wait_time, bref, (uint8_t)1u, (uint8_t)16u)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } return SRSASN_SUCCESS; } @@ -4635,8 +4729,7 @@ void rrc_conn_release_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(); } @@ -8073,7 +8166,7 @@ void other_cfg_r9_s::meas_cfg_app_layer_r15_c_::to_json(json_writer& j) const j.write_fieldname("setup"); j.start_obj(); j.write_str("measConfigAppLayerContainer-r15", c.meas_cfg_app_layer_container_r15.to_string()); - j.write_str("serviceType", c.service_type.to_string()); + j.write_str("serviceType-r15", c.service_type_r15.to_string()); j.end_obj(); break; default: @@ -8089,7 +8182,7 @@ SRSASN_CODE other_cfg_r9_s::meas_cfg_app_layer_r15_c_::pack(bit_ref& bref) const break; case types::setup: HANDLE_CODE(c.meas_cfg_app_layer_container_r15.pack(bref)); - HANDLE_CODE(c.service_type.pack(bref)); + HANDLE_CODE(c.service_type_r15.pack(bref)); break; default: log_invalid_choice_id(type_, "other_cfg_r9_s::meas_cfg_app_layer_r15_c_"); @@ -8107,7 +8200,7 @@ SRSASN_CODE other_cfg_r9_s::meas_cfg_app_layer_r15_c_::unpack(cbit_ref& bref) break; case types::setup: HANDLE_CODE(c.meas_cfg_app_layer_container_r15.unpack(bref)); - HANDLE_CODE(c.service_type.unpack(bref)); + HANDLE_CODE(c.service_type_r15.unpack(bref)); break; default: log_invalid_choice_id(type_, "other_cfg_r9_s::meas_cfg_app_layer_r15_c_"); @@ -8116,10 +8209,11 @@ SRSASN_CODE other_cfg_r9_s::meas_cfg_app_layer_r15_c_::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -std::string other_cfg_r9_s::meas_cfg_app_layer_r15_c_::setup_s_::service_type_opts::to_string() const +std::string other_cfg_r9_s::meas_cfg_app_layer_r15_c_::setup_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, "other_cfg_r9_s::meas_cfg_app_layer_r15_c_::setup_s_::service_type_e_"); + return convert_enum_idx( + options, 8, value, "other_cfg_r9_s::meas_cfg_app_layer_r15_c_::setup_s_::service_type_r15_e_"); } // RRCConnectionReconfiguration-v1020-IEs ::= SEQUENCE diff --git a/lib/src/asn1/rrc/ho_cmd.cc b/lib/src/asn1/rrc/ho_cmd.cc index ebb380d68..f4ceae81c 100644 --- a/lib/src/asn1/rrc/ho_cmd.cc +++ b/lib/src/asn1/rrc/ho_cmd.cc @@ -58,8 +58,8 @@ void scg_cfg_v13c0_ies_s::to_json(json_writer& j) const j.end_obj(); } -// SCG-Config-v12x0-IEs ::= SEQUENCE -SRSASN_CODE scg_cfg_v12x0_ies_s::pack(bit_ref& bref) const +// SCG-Config-v12i0a-IEs ::= SEQUENCE +SRSASN_CODE scg_cfg_v12i0a_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)); @@ -73,7 +73,7 @@ SRSASN_CODE scg_cfg_v12x0_ies_s::pack(bit_ref& bref) const return SRSASN_SUCCESS; } -SRSASN_CODE scg_cfg_v12x0_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE scg_cfg_v12i0a_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)); @@ -87,7 +87,7 @@ SRSASN_CODE scg_cfg_v12x0_ies_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void scg_cfg_v12x0_ies_s::to_json(json_writer& j) const +void scg_cfg_v12i0a_ies_s::to_json(json_writer& j) const { j.start_obj(); if (late_non_crit_ext_present) { @@ -143,6 +143,53 @@ void scg_cfg_r12_ies_s::to_json(json_writer& j) const j.end_obj(); } +// AS-Config-v1550 ::= SEQUENCE +SRSASN_CODE as_cfg_v1550_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(tdm_pattern_cfg_r15_present, 1)); + HANDLE_CODE(bref.pack(p_max_eutra_r15_present, 1)); + + if (tdm_pattern_cfg_r15_present) { + HANDLE_CODE(tdm_pattern_cfg_r15.sf_assign_r15.pack(bref)); + HANDLE_CODE(pack_integer(bref, tdm_pattern_cfg_r15.harq_offset_r15, (uint8_t)0u, (uint8_t)9u)); + } + if (p_max_eutra_r15_present) { + HANDLE_CODE(pack_integer(bref, p_max_eutra_r15, (int8_t)-30, (int8_t)33)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE as_cfg_v1550_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(tdm_pattern_cfg_r15_present, 1)); + HANDLE_CODE(bref.unpack(p_max_eutra_r15_present, 1)); + + if (tdm_pattern_cfg_r15_present) { + HANDLE_CODE(tdm_pattern_cfg_r15.sf_assign_r15.unpack(bref)); + HANDLE_CODE(unpack_integer(tdm_pattern_cfg_r15.harq_offset_r15, bref, (uint8_t)0u, (uint8_t)9u)); + } + if (p_max_eutra_r15_present) { + HANDLE_CODE(unpack_integer(p_max_eutra_r15, bref, (int8_t)-30, (int8_t)33)); + } + + return SRSASN_SUCCESS; +} +void as_cfg_v1550_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (tdm_pattern_cfg_r15_present) { + j.write_fieldname("tdm-PatternConfig-r15"); + j.start_obj(); + j.write_str("subframeAssignment-r15", tdm_pattern_cfg_r15.sf_assign_r15.to_string()); + j.write_int("harq-Offset-r15", tdm_pattern_cfg_r15.harq_offset_r15); + j.end_obj(); + } + if (p_max_eutra_r15_present) { + j.write_int("p-MaxEUTRA-r15", p_max_eutra_r15); + } + j.end_obj(); +} + // AS-ConfigNR-r15 ::= SEQUENCE SRSASN_CODE as_cfg_nr_r15_s::pack(bit_ref& bref) const { @@ -195,6 +242,22 @@ void as_cfg_nr_r15_s::to_json(json_writer& j) const j.end_obj(); } +// AS-ConfigNR-v1570 ::= SEQUENCE +SRSASN_CODE as_cfg_nr_v1570_s::pack(bit_ref& bref) const +{ + return SRSASN_SUCCESS; +} +SRSASN_CODE as_cfg_nr_v1570_s::unpack(cbit_ref& bref) +{ + return SRSASN_SUCCESS; +} +void as_cfg_nr_v1570_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("sourceSCG-ConfiguredNR-r15", "true"); + j.end_obj(); +} + // SCG-Config-r12 ::= SEQUENCE SRSASN_CODE scg_cfg_r12_s::pack(bit_ref& bref) const { @@ -434,6 +497,8 @@ SRSASN_CODE as_cfg_s::pack(bit_ref& bref) const group_flags[1] |= source_scell_cfg_list_r10.is_present(); group_flags[2] |= source_cfg_scg_r12.is_present(); 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.pack(bref); if (group_flags[0]) { @@ -469,6 +534,22 @@ SRSASN_CODE as_cfg_s::pack(bit_ref& bref) const HANDLE_CODE(as_cfg_nr_r15->pack(bref)); } } + if (group_flags[4]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(as_cfg_v1550.is_present(), 1)); + if (as_cfg_v1550.is_present()) { + HANDLE_CODE(as_cfg_v1550->pack(bref)); + } + } + if (group_flags[5]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(as_cfg_nr_v1570.is_present(), 1)); + if (as_cfg_nr_v1570.is_present()) { + HANDLE_CODE(as_cfg_nr_v1570->pack(bref)); + } + } } return SRSASN_SUCCESS; } @@ -486,7 +567,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(4); + ext_groups_unpacker_guard group_flags(6); group_flags.unpack(bref); if (group_flags[0]) { @@ -528,6 +609,26 @@ SRSASN_CODE as_cfg_s::unpack(cbit_ref& bref) HANDLE_CODE(as_cfg_nr_r15->unpack(bref)); } } + if (group_flags[4]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool as_cfg_v1550_present; + HANDLE_CODE(bref.unpack(as_cfg_v1550_present, 1)); + as_cfg_v1550.set_present(as_cfg_v1550_present); + if (as_cfg_v1550.is_present()) { + HANDLE_CODE(as_cfg_v1550->unpack(bref)); + } + } + if (group_flags[5]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool as_cfg_nr_v1570_present; + HANDLE_CODE(bref.unpack(as_cfg_nr_v1570_present, 1)); + as_cfg_nr_v1570.set_present(as_cfg_nr_v1570_present); + if (as_cfg_nr_v1570.is_present()) { + HANDLE_CODE(as_cfg_nr_v1570->unpack(bref)); + } + } } return SRSASN_SUCCESS; } @@ -571,6 +672,14 @@ void as_cfg_s::to_json(json_writer& j) const j.write_fieldname("as-ConfigNR-r15"); as_cfg_nr_r15->to_json(j); } + if (as_cfg_v1550.is_present()) { + j.write_fieldname("as-Config-v1550"); + as_cfg_v1550->to_json(j); + } + if (as_cfg_nr_v1570.is_present()) { + j.write_fieldname("as-ConfigNR-v1570"); + as_cfg_nr_v1570->to_json(j); + } } j.end_obj(); } diff --git a/lib/src/asn1/rrc/meascfg.cc b/lib/src/asn1/rrc/meascfg.cc index bc4befa22..38d83532a 100644 --- a/lib/src/asn1/rrc/meascfg.cc +++ b/lib/src/asn1/rrc/meascfg.cc @@ -615,6 +615,162 @@ bool ss_rssi_meas_r15_s::operator==(const ss_rssi_meas_r15_s& other) const return meas_slots_r15 == other.meas_slots_r15 and end_symbol_r15 == other.end_symbol_r15; } +// SSB-ToMeasure-r15 ::= CHOICE +void ssb_to_measure_r15_c::destroy_() +{ + switch (type_) { + case types::short_bitmap_r15: + c.destroy >(); + break; + case types::medium_bitmap_r15: + c.destroy >(); + break; + case types::long_bitmap_r15: + c.destroy >(); + break; + default: + break; + } +} +void ssb_to_measure_r15_c::set(types::options e) +{ + destroy_(); + type_ = e; + switch (type_) { + case types::short_bitmap_r15: + c.init >(); + break; + case types::medium_bitmap_r15: + c.init >(); + break; + case types::long_bitmap_r15: + c.init >(); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "ssb_to_measure_r15_c"); + } +} +ssb_to_measure_r15_c::ssb_to_measure_r15_c(const ssb_to_measure_r15_c& other) +{ + type_ = other.type(); + switch (type_) { + case types::short_bitmap_r15: + c.init(other.c.get >()); + break; + case types::medium_bitmap_r15: + c.init(other.c.get >()); + break; + case types::long_bitmap_r15: + c.init(other.c.get >()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "ssb_to_measure_r15_c"); + } +} +ssb_to_measure_r15_c& ssb_to_measure_r15_c::operator=(const ssb_to_measure_r15_c& other) +{ + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::short_bitmap_r15: + c.set(other.c.get >()); + break; + case types::medium_bitmap_r15: + c.set(other.c.get >()); + break; + case types::long_bitmap_r15: + c.set(other.c.get >()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "ssb_to_measure_r15_c"); + } + + return *this; +} +void ssb_to_measure_r15_c::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::short_bitmap_r15: + j.write_str("shortBitmap-r15", c.get >().to_string()); + break; + case types::medium_bitmap_r15: + j.write_str("mediumBitmap-r15", c.get >().to_string()); + break; + case types::long_bitmap_r15: + j.write_str("longBitmap-r15", c.get >().to_string()); + break; + default: + log_invalid_choice_id(type_, "ssb_to_measure_r15_c"); + } + j.end_obj(); +} +SRSASN_CODE ssb_to_measure_r15_c::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::short_bitmap_r15: + HANDLE_CODE(c.get >().pack(bref)); + break; + case types::medium_bitmap_r15: + HANDLE_CODE(c.get >().pack(bref)); + break; + case types::long_bitmap_r15: + HANDLE_CODE(c.get >().pack(bref)); + break; + default: + log_invalid_choice_id(type_, "ssb_to_measure_r15_c"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE ssb_to_measure_r15_c::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::short_bitmap_r15: + HANDLE_CODE(c.get >().unpack(bref)); + break; + case types::medium_bitmap_r15: + HANDLE_CODE(c.get >().unpack(bref)); + break; + case types::long_bitmap_r15: + HANDLE_CODE(c.get >().unpack(bref)); + break; + default: + log_invalid_choice_id(type_, "ssb_to_measure_r15_c"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} +bool ssb_to_measure_r15_c::operator==(const ssb_to_measure_r15_c& other) const +{ + if (type_ != other.type_) { + return false; + } + switch (type_) { + case types::short_bitmap_r15: + return c.get >() == other.c.get >(); + case types::medium_bitmap_r15: + return c.get >() == other.c.get >(); + case types::long_bitmap_r15: + return c.get >() == other.c.get >(); + default: + return true; + } + return true; +} + // ThresholdListNR-r15 ::= SEQUENCE SRSASN_CODE thres_list_nr_r15_s::pack(bit_ref& bref) const { @@ -754,307 +910,103 @@ bool carrier_freq_cdma2000_s::operator==(const carrier_freq_cdma2000_s& other) c return band_class == other.band_class and arfcn == other.arfcn; } -// RACH-ConfigDedicated ::= SEQUENCE -SRSASN_CODE rach_cfg_ded_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, ra_preamb_idx, (uint8_t)0u, (uint8_t)63u)); - HANDLE_CODE(pack_integer(bref, ra_prach_mask_idx, (uint8_t)0u, (uint8_t)15u)); + 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 rach_cfg_ded_s::unpack(cbit_ref& bref) +SRSASN_CODE meas_csi_rs_cfg_r12_s::unpack(cbit_ref& bref) { - HANDLE_CODE(unpack_integer(ra_preamb_idx, bref, (uint8_t)0u, (uint8_t)63u)); - HANDLE_CODE(unpack_integer(ra_prach_mask_idx, bref, (uint8_t)0u, (uint8_t)15u)); + 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 rach_cfg_ded_s::to_json(json_writer& j) const +void meas_csi_rs_cfg_r12_s::to_json(json_writer& j) const { j.start_obj(); - j.write_int("ra-PreambleIndex", ra_preamb_idx); - j.write_int("ra-PRACH-MaskIndex", ra_prach_mask_idx); + 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; +} -// RACH-Skip-r14 ::= SEQUENCE -SRSASN_CODE rach_skip_r14_s::pack(bit_ref& bref) const +// PhysCellIdRangeUTRA-FDD-r9 ::= SEQUENCE +SRSASN_CODE pci_range_utra_fdd_r9_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(ul_cfg_info_r14_present, 1)); + HANDLE_CODE(bref.pack(range_r9_present, 1)); - HANDLE_CODE(target_ta_r14.pack(bref)); - if (ul_cfg_info_r14_present) { - HANDLE_CODE(pack_integer(bref, ul_cfg_info_r14.nof_conf_ul_processes_r14, (uint8_t)1u, (uint8_t)8u)); - HANDLE_CODE(ul_cfg_info_r14.ul_sched_interv_r14.pack(bref)); - HANDLE_CODE(pack_integer(bref, ul_cfg_info_r14.ul_start_sf_r14, (uint8_t)0u, (uint8_t)9u)); - HANDLE_CODE(ul_cfg_info_r14.ul_grant_r14.pack(bref)); + 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 rach_skip_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE pci_range_utra_fdd_r9_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(ul_cfg_info_r14_present, 1)); + HANDLE_CODE(bref.unpack(range_r9_present, 1)); - HANDLE_CODE(target_ta_r14.unpack(bref)); - if (ul_cfg_info_r14_present) { - HANDLE_CODE(unpack_integer(ul_cfg_info_r14.nof_conf_ul_processes_r14, bref, (uint8_t)1u, (uint8_t)8u)); - HANDLE_CODE(ul_cfg_info_r14.ul_sched_interv_r14.unpack(bref)); - HANDLE_CODE(unpack_integer(ul_cfg_info_r14.ul_start_sf_r14, bref, (uint8_t)0u, (uint8_t)9u)); - HANDLE_CODE(ul_cfg_info_r14.ul_grant_r14.unpack(bref)); + 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 rach_skip_r14_s::to_json(json_writer& j) const +void pci_range_utra_fdd_r9_s::to_json(json_writer& j) const { j.start_obj(); - j.write_fieldname("targetTA-r14"); - target_ta_r14.to_json(j); - if (ul_cfg_info_r14_present) { - j.write_fieldname("ul-ConfigInfo-r14"); - j.start_obj(); - j.write_int("numberOfConfUL-Processes-r14", ul_cfg_info_r14.nof_conf_ul_processes_r14); - j.write_str("ul-SchedInterval-r14", ul_cfg_info_r14.ul_sched_interv_r14.to_string()); - j.write_int("ul-StartSubframe-r14", ul_cfg_info_r14.ul_start_sf_r14); - j.write_str("ul-Grant-r14", ul_cfg_info_r14.ul_grant_r14.to_string()); - j.end_obj(); + j.write_int("start-r9", start_r9); + if (range_r9_present) { + j.write_int("range-r9", range_r9); } j.end_obj(); } - -void rach_skip_r14_s::target_ta_r14_c_::destroy_() {} -void rach_skip_r14_s::target_ta_r14_c_::set(types::options e) +bool pci_range_utra_fdd_r9_s::operator==(const pci_range_utra_fdd_r9_s& other) const { - destroy_(); - type_ = e; + 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); } -rach_skip_r14_s::target_ta_r14_c_::target_ta_r14_c_(const rach_skip_r14_s::target_ta_r14_c_& other) + +// AltTTT-CellsToAddMod-r12 ::= SEQUENCE +SRSASN_CODE alt_ttt_cells_to_add_mod_r12_s::pack(bit_ref& bref) const { - type_ = other.type(); - switch (type_) { - case types::ta0_r14: - break; - case types::mcg_ptag_r14: - break; - case types::scg_ptag_r14: - break; - case types::mcg_stag_r14: - c.init(other.c.get()); - break; - case types::scg_stag_r14: - c.init(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "rach_skip_r14_s::target_ta_r14_c_"); - } + HANDLE_CODE(pack_integer(bref, cell_idx_r12, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(pci_range_r12.pack(bref)); + + return SRSASN_SUCCESS; } -rach_skip_r14_s::target_ta_r14_c_& -rach_skip_r14_s::target_ta_r14_c_::operator=(const rach_skip_r14_s::target_ta_r14_c_& other) +SRSASN_CODE alt_ttt_cells_to_add_mod_r12_s::unpack(cbit_ref& bref) { - if (this == &other) { - return *this; - } - set(other.type()); - switch (type_) { - case types::ta0_r14: - break; - case types::mcg_ptag_r14: - break; - case types::scg_ptag_r14: - break; - case types::mcg_stag_r14: - c.set(other.c.get()); - break; - case types::scg_stag_r14: - c.set(other.c.get()); - break; - case types::nulltype: - break; - default: - log_invalid_choice_id(type_, "rach_skip_r14_s::target_ta_r14_c_"); - } + HANDLE_CODE(unpack_integer(cell_idx_r12, bref, (uint8_t)1u, (uint8_t)32u)); + HANDLE_CODE(pci_range_r12.unpack(bref)); - return *this; + return SRSASN_SUCCESS; } -void rach_skip_r14_s::target_ta_r14_c_::to_json(json_writer& j) const -{ - j.start_obj(); - switch (type_) { - case types::ta0_r14: - break; - case types::mcg_ptag_r14: - break; - case types::scg_ptag_r14: - break; - case types::mcg_stag_r14: - j.write_int("mcg-STAG-r14", c.get()); - break; - case types::scg_stag_r14: - j.write_int("scg-STAG-r14", c.get()); - break; - default: - log_invalid_choice_id(type_, "rach_skip_r14_s::target_ta_r14_c_"); - } - j.end_obj(); -} -SRSASN_CODE rach_skip_r14_s::target_ta_r14_c_::pack(bit_ref& bref) const -{ - type_.pack(bref); - switch (type_) { - case types::ta0_r14: - break; - case types::mcg_ptag_r14: - break; - case types::scg_ptag_r14: - break; - case types::mcg_stag_r14: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)3u)); - break; - case types::scg_stag_r14: - HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)3u)); - break; - default: - log_invalid_choice_id(type_, "rach_skip_r14_s::target_ta_r14_c_"); - return SRSASN_ERROR_ENCODE_FAIL; - } - return SRSASN_SUCCESS; -} -SRSASN_CODE rach_skip_r14_s::target_ta_r14_c_::unpack(cbit_ref& bref) -{ - types e; - e.unpack(bref); - set(e); - switch (type_) { - case types::ta0_r14: - break; - case types::mcg_ptag_r14: - break; - case types::scg_ptag_r14: - break; - case types::mcg_stag_r14: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)3u)); - break; - case types::scg_stag_r14: - HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)3u)); - break; - default: - log_invalid_choice_id(type_, "rach_skip_r14_s::target_ta_r14_c_"); - return SRSASN_ERROR_DECODE_FAIL; - } - return SRSASN_SUCCESS; -} - -std::string rach_skip_r14_s::ul_cfg_info_r14_s_::ul_sched_interv_r14_opts::to_string() const -{ - static const char* options[] = {"sf2", "sf5", "sf10"}; - return convert_enum_idx(options, 3, value, "rach_skip_r14_s::ul_cfg_info_r14_s_::ul_sched_interv_r14_e_"); -} -uint8_t rach_skip_r14_s::ul_cfg_info_r14_s_::ul_sched_interv_r14_opts::to_number() const -{ - static const uint8_t options[] = {2, 5, 10}; - return map_enum_number(options, 3, value, "rach_skip_r14_s::ul_cfg_info_r14_s_::ul_sched_interv_r14_e_"); -} - -// MeasCSI-RS-Config-r12 ::= SEQUENCE -SRSASN_CODE meas_csi_rs_cfg_r12_s::pack(bit_ref& bref) const -{ - 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 meas_csi_rs_cfg_r12_s::unpack(cbit_ref& bref) -{ - 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); -} - -// 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 +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); @@ -1372,29 +1324,6 @@ bool csg_allowed_report_cells_r9_s::operator==(const csg_allowed_report_cells_r9 (not pci_range_utra_fdd_list_r9_present or pci_range_utra_fdd_list_r9 == other.pci_range_utra_fdd_list_r9); } -// CarrierFreqGERAN ::= SEQUENCE -SRSASN_CODE carrier_freq_geran_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(pack_integer(bref, arfcn, (uint16_t)0u, (uint16_t)1023u)); - HANDLE_CODE(band_ind.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE carrier_freq_geran_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(unpack_integer(arfcn, bref, (uint16_t)0u, (uint16_t)1023u)); - HANDLE_CODE(band_ind.unpack(bref)); - - return SRSASN_SUCCESS; -} -void carrier_freq_geran_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_int("arfcn", arfcn); - j.write_str("bandIndicator", band_ind.to_string()); - j.end_obj(); -} - // MeasCycleSCell-r10 ::= ENUMERATED std::string meas_cycle_scell_r10_opts::to_string() const { @@ -2364,36 +2293,6 @@ bool meas_sf_pattern_cfg_neigh_r10_c::operator==(const meas_sf_pattern_cfg_neigh (not c.meas_sf_cell_list_r10_present or c.meas_sf_cell_list_r10 == other.c.meas_sf_cell_list_r10); } -// MobilityControlInfo-v10l0 ::= SEQUENCE -SRSASN_CODE mob_ctrl_info_v10l0_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(add_spec_emission_v10l0_present, 1)); - - if (add_spec_emission_v10l0_present) { - HANDLE_CODE(pack_integer(bref, add_spec_emission_v10l0, (uint16_t)33u, (uint16_t)288u)); - } - - return SRSASN_SUCCESS; -} -SRSASN_CODE mob_ctrl_info_v10l0_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(add_spec_emission_v10l0_present, 1)); - - if (add_spec_emission_v10l0_present) { - HANDLE_CODE(unpack_integer(add_spec_emission_v10l0, bref, (uint16_t)33u, (uint16_t)288u)); - } - - return SRSASN_SUCCESS; -} -void mob_ctrl_info_v10l0_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (add_spec_emission_v10l0_present) { - j.write_int("additionalSpectrumEmission-v10l0", add_spec_emission_v10l0); - } - j.end_obj(); -} - // PhysCellIdGERAN ::= SEQUENCE SRSASN_CODE pci_geran_s::pack(bit_ref& bref) const { @@ -2590,6 +2489,20 @@ SRSASN_CODE rs_cfg_ssb_nr_r15_s::pack(bit_ref& bref) const 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(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) @@ -2598,6 +2511,21 @@ SRSASN_CODE rs_cfg_ssb_nr_r15_s::unpack(cbit_ref& bref) 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); + + 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 @@ -2606,12 +2534,20 @@ void rs_cfg_ssb_nr_r15_s::to_json(json_writer& j) const 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.end_obj(); } bool rs_cfg_ssb_nr_r15_s::operator==(const rs_cfg_ssb_nr_r15_s& other) const { return ext == other.ext and meas_timing_cfg_r15 == other.meas_timing_cfg_r15 and - subcarrier_spacing_ssb_r15 == other.subcarrier_spacing_ssb_r15; + 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))); } std::string rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_opts::to_string() const @@ -2625,41 +2561,41 @@ uint8_t rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_opts::to_number() const return map_enum_number(options, 4, value, "rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_e_"); } -// RSRQ-RangeConfig-r12 ::= CHOICE -void rsrq_range_cfg_r12_c::set(types::options e) +void rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::set(types::options e) { type_ = e; } -void rsrq_range_cfg_r12_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::release: break; case types::setup: - j.write_int("setup", c); + j.write_fieldname("setup"); + c.to_json(j); break; default: - log_invalid_choice_id(type_, "rsrq_range_cfg_r12_c"); + log_invalid_choice_id(type_, "rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_"); } j.end_obj(); } -SRSASN_CODE rsrq_range_cfg_r12_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::release: break; case types::setup: - HANDLE_CODE(pack_integer(bref, c, (int8_t)-30, (int8_t)46)); + HANDLE_CODE(c.pack(bref)); break; default: - log_invalid_choice_id(type_, "rsrq_range_cfg_r12_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 rsrq_range_cfg_r12_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); @@ -2668,22 +2604,78 @@ 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)); + HANDLE_CODE(c.unpack(bref)); break; default: - log_invalid_choice_id(type_, "rsrq_range_cfg_r12_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 rsrq_range_cfg_r12_c::operator==(const rsrq_range_cfg_r12_c& other) const +bool rs_cfg_ssb_nr_r15_s::ssb_to_measure_r15_c_::operator==(const ssb_to_measure_r15_c_& other) const { return type() == other.type() and c == other.c; } -// ReportInterval ::= ENUMERATED -std::string report_interv_opts::to_string() const -{ +// RSRQ-RangeConfig-r12 ::= CHOICE +void rsrq_range_cfg_r12_c::set(types::options e) +{ + type_ = e; +} +void rsrq_range_cfg_r12_c::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::release: + break; + case types::setup: + j.write_int("setup", c); + break; + default: + log_invalid_choice_id(type_, "rsrq_range_cfg_r12_c"); + } + j.end_obj(); +} +SRSASN_CODE rsrq_range_cfg_r12_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)); + break; + default: + log_invalid_choice_id(type_, "rsrq_range_cfg_r12_c"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rsrq_range_cfg_r12_c::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::release: + break; + case types::setup: + HANDLE_CODE(unpack_integer(c, bref, (int8_t)-30, (int8_t)46)); + break; + default: + log_invalid_choice_id(type_, "rsrq_range_cfg_r12_c"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} +bool rsrq_range_cfg_r12_c::operator==(const rsrq_range_cfg_r12_c& other) const +{ + return type() == other.type() and c == other.c; +} + +// ReportInterval ::= ENUMERATED +std::string report_interv_opts::to_string() const +{ static const char* options[] = {"ms120", "ms240", "ms480", @@ -3392,62 +3384,6 @@ bool wlan_name_list_cfg_r15_c::operator==(const wlan_name_list_cfg_r15_c& other) return type() == other.type() and c == other.c; } -// LoggedMeasurementConfiguration-v1530-IEs ::= SEQUENCE -SRSASN_CODE logged_meas_cfg_v1530_ies_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(bt_name_list_r15_present, 1)); - HANDLE_CODE(bref.pack(wlan_name_list_r15_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - 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)); - } - - return SRSASN_SUCCESS; -} -SRSASN_CODE logged_meas_cfg_v1530_ies_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(bt_name_list_r15_present, 1)); - HANDLE_CODE(bref.unpack(wlan_name_list_r15_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - 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)); - } - - return SRSASN_SUCCESS; -} -void logged_meas_cfg_v1530_ies_s::to_json(json_writer& j) const -{ - j.start_obj(); - 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 (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - j.start_obj(); - j.end_obj(); - } - j.end_obj(); -} - // MeasGapConfigPerCC-r14 ::= SEQUENCE SRSASN_CODE meas_gap_cfg_per_cc_r14_s::pack(bit_ref& bref) const { @@ -5431,14 +5367,14 @@ void eutra_event_s::event_id_c_::to_json(json_writer& j) const j.write_fieldname("eventH1-r15"); j.start_obj(); j.write_int("h1-ThresholdOffset-r15", c.get().h1_thres_offset_r15); - j.write_int("h1-Hysteresis-15", c.get().h1_hysteresis_minus15); + j.write_int("h1-Hysteresis-r15", c.get().h1_hysteresis_r15); j.end_obj(); break; case types::event_h2_r15: j.write_fieldname("eventH2-r15"); j.start_obj(); j.write_int("h2-ThresholdOffset-r15", c.get().h2_thres_offset_r15); - j.write_int("h2-Hysteresis-15", c.get().h2_hysteresis_minus15); + j.write_int("h2-Hysteresis-r15", c.get().h2_hysteresis_r15); j.end_obj(); break; default: @@ -5494,12 +5430,12 @@ SRSASN_CODE eutra_event_s::event_id_c_::pack(bit_ref& bref) const case types::event_h1_r15: { varlength_field_pack_guard varlen_scope(bref, false); HANDLE_CODE(pack_integer(bref, c.get().h1_thres_offset_r15, (uint16_t)0u, (uint16_t)300u)); - HANDLE_CODE(pack_integer(bref, c.get().h1_hysteresis_minus15, (uint8_t)1u, (uint8_t)16u)); + HANDLE_CODE(pack_integer(bref, c.get().h1_hysteresis_r15, (uint8_t)1u, (uint8_t)16u)); } break; case types::event_h2_r15: { varlength_field_pack_guard varlen_scope(bref, false); HANDLE_CODE(pack_integer(bref, c.get().h2_thres_offset_r15, (uint16_t)0u, (uint16_t)300u)); - HANDLE_CODE(pack_integer(bref, c.get().h2_hysteresis_minus15, (uint8_t)1u, (uint8_t)16u)); + HANDLE_CODE(pack_integer(bref, c.get().h2_hysteresis_r15, (uint8_t)1u, (uint8_t)16u)); } break; default: log_invalid_choice_id(type_, "eutra_event_s::event_id_c_"); @@ -5557,12 +5493,12 @@ SRSASN_CODE eutra_event_s::event_id_c_::unpack(cbit_ref& bref) case types::event_h1_r15: { varlength_field_unpack_guard varlen_scope(bref, false); HANDLE_CODE(unpack_integer(c.get().h1_thres_offset_r15, bref, (uint16_t)0u, (uint16_t)300u)); - HANDLE_CODE(unpack_integer(c.get().h1_hysteresis_minus15, bref, (uint8_t)1u, (uint8_t)16u)); + HANDLE_CODE(unpack_integer(c.get().h1_hysteresis_r15, bref, (uint8_t)1u, (uint8_t)16u)); } break; case types::event_h2_r15: { varlength_field_unpack_guard varlen_scope(bref, false); HANDLE_CODE(unpack_integer(c.get().h2_thres_offset_r15, bref, (uint16_t)0u, (uint16_t)300u)); - HANDLE_CODE(unpack_integer(c.get().h2_hysteresis_minus15, bref, (uint8_t)1u, (uint8_t)16u)); + HANDLE_CODE(unpack_integer(c.get().h2_hysteresis_r15, bref, (uint8_t)1u, (uint8_t)16u)); } break; default: log_invalid_choice_id(type_, "eutra_event_s::event_id_c_"); @@ -5604,10 +5540,10 @@ bool eutra_event_s::event_id_c_::operator==(const event_id_c_& other) const return c.get().v2_thres_r14 == other.c.get().v2_thres_r14; case types::event_h1_r15: return c.get().h1_thres_offset_r15 == other.c.get().h1_thres_offset_r15 and - c.get().h1_hysteresis_minus15 == other.c.get().h1_hysteresis_minus15; + c.get().h1_hysteresis_r15 == other.c.get().h1_hysteresis_r15; case types::event_h2_r15: return c.get().h2_thres_offset_r15 == other.c.get().h2_thres_offset_r15 and - c.get().h2_hysteresis_minus15 == other.c.get().h2_hysteresis_minus15; + c.get().h2_hysteresis_r15 == other.c.get().h2_hysteresis_r15; default: return true; } @@ -7522,30 +7458,6 @@ std::string report_cfg_inter_rat_s::report_sftd_meas_r15_opts::to_string() const return convert_enum_idx(options, 2, value, "report_cfg_inter_rat_s::report_sftd_meas_r15_e_"); } -// CellGlobalIdEUTRA ::= SEQUENCE -SRSASN_CODE cell_global_id_eutra_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(plmn_id.pack(bref)); - HANDLE_CODE(cell_id.pack(bref)); - - return SRSASN_SUCCESS; -} -SRSASN_CODE cell_global_id_eutra_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(plmn_id.unpack(bref)); - HANDLE_CODE(cell_id.unpack(bref)); - - return SRSASN_SUCCESS; -} -void cell_global_id_eutra_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_fieldname("plmn-Identity"); - plmn_id.to_json(j); - j.write_str("cellIdentity", cell_id.to_string()); - j.end_obj(); -} - // MeasIdToAddMod ::= SEQUENCE SRSASN_CODE meas_id_to_add_mod_s::pack(bit_ref& bref) const { @@ -8633,221 +8545,70 @@ bool report_cfg_to_add_mod_s::report_cfg_c_::operator==(const report_cfg_c_& oth return true; } -// CarrierBandwidthEUTRA ::= SEQUENCE -SRSASN_CODE carrier_bw_eutra_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(ul_bw_present, 1)); - - HANDLE_CODE(dl_bw.pack(bref)); - if (ul_bw_present) { - HANDLE_CODE(ul_bw.pack(bref)); - } - - return SRSASN_SUCCESS; -} -SRSASN_CODE carrier_bw_eutra_s::unpack(cbit_ref& bref) +// MeasGapConfigDensePRS-r15 ::= CHOICE +void meas_gap_cfg_dense_prs_r15_c::set(types::options e) { - HANDLE_CODE(bref.unpack(ul_bw_present, 1)); - - HANDLE_CODE(dl_bw.unpack(bref)); - if (ul_bw_present) { - HANDLE_CODE(ul_bw.unpack(bref)); - } - - return SRSASN_SUCCESS; + type_ = e; } -void carrier_bw_eutra_s::to_json(json_writer& j) const +void meas_gap_cfg_dense_prs_r15_c::to_json(json_writer& j) const { j.start_obj(); - j.write_str("dl-Bandwidth", dl_bw.to_string()); - if (ul_bw_present) { - j.write_str("ul-Bandwidth", ul_bw.to_string()); + switch (type_) { + case types::release: + break; + case types::setup: + j.write_fieldname("setup"); + j.start_obj(); + j.write_fieldname("gapOffsetDensePRS-r15"); + c.gap_offset_dense_prs_r15.to_json(j); + j.end_obj(); + break; + default: + log_invalid_choice_id(type_, "meas_gap_cfg_dense_prs_r15_c"); } j.end_obj(); } - -std::string carrier_bw_eutra_s::dl_bw_opts::to_string() const +SRSASN_CODE meas_gap_cfg_dense_prs_r15_c::pack(bit_ref& bref) const { - static const char* options[] = {"n6", - "n15", - "n25", - "n50", - "n75", - "n100", - "spare10", - "spare9", - "spare8", - "spare7", - "spare6", - "spare5", - "spare4", - "spare3", - "spare2", - "spare1"}; - return convert_enum_idx(options, 16, value, "carrier_bw_eutra_s::dl_bw_e_"); + type_.pack(bref); + switch (type_) { + case types::release: + break; + case types::setup: + HANDLE_CODE(c.gap_offset_dense_prs_r15.pack(bref)); + break; + default: + log_invalid_choice_id(type_, "meas_gap_cfg_dense_prs_r15_c"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; } -uint8_t carrier_bw_eutra_s::dl_bw_opts::to_number() const +SRSASN_CODE meas_gap_cfg_dense_prs_r15_c::unpack(cbit_ref& bref) { - static const uint8_t options[] = {6, 15, 25, 50, 75, 100}; - return map_enum_number(options, 6, value, "carrier_bw_eutra_s::dl_bw_e_"); + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::release: + break; + case types::setup: + HANDLE_CODE(c.gap_offset_dense_prs_r15.unpack(bref)); + break; + default: + log_invalid_choice_id(type_, "meas_gap_cfg_dense_prs_r15_c"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; } -std::string carrier_bw_eutra_s::ul_bw_opts::to_string() const +void meas_gap_cfg_dense_prs_r15_c::setup_s_::gap_offset_dense_prs_r15_c_::destroy_() {} +void meas_gap_cfg_dense_prs_r15_c::setup_s_::gap_offset_dense_prs_r15_c_::set(types::options e) { - static const char* options[] = {"n6", - "n15", - "n25", - "n50", - "n75", - "n100", - "spare10", - "spare9", - "spare8", - "spare7", - "spare6", - "spare5", - "spare4", - "spare3", - "spare2", - "spare1"}; - return convert_enum_idx(options, 16, value, "carrier_bw_eutra_s::ul_bw_e_"); + destroy_(); + type_ = e; } -uint8_t carrier_bw_eutra_s::ul_bw_opts::to_number() const -{ - static const uint8_t options[] = {6, 15, 25, 50, 75, 100}; - return map_enum_number(options, 6, value, "carrier_bw_eutra_s::ul_bw_e_"); -} - -// CarrierFreqEUTRA ::= SEQUENCE -SRSASN_CODE carrier_freq_eutra_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(ul_carrier_freq_present, 1)); - - HANDLE_CODE(pack_integer(bref, dl_carrier_freq, (uint32_t)0u, (uint32_t)65535u)); - if (ul_carrier_freq_present) { - HANDLE_CODE(pack_integer(bref, ul_carrier_freq, (uint32_t)0u, (uint32_t)65535u)); - } - - return SRSASN_SUCCESS; -} -SRSASN_CODE carrier_freq_eutra_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(ul_carrier_freq_present, 1)); - - HANDLE_CODE(unpack_integer(dl_carrier_freq, bref, (uint32_t)0u, (uint32_t)65535u)); - if (ul_carrier_freq_present) { - HANDLE_CODE(unpack_integer(ul_carrier_freq, bref, (uint32_t)0u, (uint32_t)65535u)); - } - - return SRSASN_SUCCESS; -} -void carrier_freq_eutra_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_int("dl-CarrierFreq", dl_carrier_freq); - if (ul_carrier_freq_present) { - j.write_int("ul-CarrierFreq", ul_carrier_freq); - } - j.end_obj(); -} - -// CarrierFreqEUTRA-v9e0 ::= SEQUENCE -SRSASN_CODE carrier_freq_eutra_v9e0_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(ul_carrier_freq_v9e0_present, 1)); - - HANDLE_CODE(pack_integer(bref, dl_carrier_freq_v9e0, (uint32_t)0u, (uint32_t)262143u)); - if (ul_carrier_freq_v9e0_present) { - HANDLE_CODE(pack_integer(bref, ul_carrier_freq_v9e0, (uint32_t)0u, (uint32_t)262143u)); - } - - return SRSASN_SUCCESS; -} -SRSASN_CODE carrier_freq_eutra_v9e0_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(ul_carrier_freq_v9e0_present, 1)); - - HANDLE_CODE(unpack_integer(dl_carrier_freq_v9e0, bref, (uint32_t)0u, (uint32_t)262143u)); - if (ul_carrier_freq_v9e0_present) { - HANDLE_CODE(unpack_integer(ul_carrier_freq_v9e0, bref, (uint32_t)0u, (uint32_t)262143u)); - } - - return SRSASN_SUCCESS; -} -void carrier_freq_eutra_v9e0_s::to_json(json_writer& j) const -{ - j.start_obj(); - j.write_int("dl-CarrierFreq-v9e0", dl_carrier_freq_v9e0); - if (ul_carrier_freq_v9e0_present) { - j.write_int("ul-CarrierFreq-v9e0", ul_carrier_freq_v9e0); - } - j.end_obj(); -} - -// MeasGapConfigDensePRS-r15 ::= CHOICE -void meas_gap_cfg_dense_prs_r15_c::set(types::options e) -{ - type_ = e; -} -void meas_gap_cfg_dense_prs_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_fieldname("gapOffsetDensePRS-r15"); - c.gap_offset_dense_prs_r15.to_json(j); - j.end_obj(); - break; - default: - log_invalid_choice_id(type_, "meas_gap_cfg_dense_prs_r15_c"); - } - j.end_obj(); -} -SRSASN_CODE meas_gap_cfg_dense_prs_r15_c::pack(bit_ref& bref) const -{ - type_.pack(bref); - switch (type_) { - case types::release: - break; - case types::setup: - HANDLE_CODE(c.gap_offset_dense_prs_r15.pack(bref)); - break; - default: - log_invalid_choice_id(type_, "meas_gap_cfg_dense_prs_r15_c"); - return SRSASN_ERROR_ENCODE_FAIL; - } - return SRSASN_SUCCESS; -} -SRSASN_CODE meas_gap_cfg_dense_prs_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.gap_offset_dense_prs_r15.unpack(bref)); - break; - default: - log_invalid_choice_id(type_, "meas_gap_cfg_dense_prs_r15_c"); - return SRSASN_ERROR_DECODE_FAIL; - } - return SRSASN_SUCCESS; -} - -void meas_gap_cfg_dense_prs_r15_c::setup_s_::gap_offset_dense_prs_r15_c_::destroy_() {} -void meas_gap_cfg_dense_prs_r15_c::setup_s_::gap_offset_dense_prs_r15_c_::set(types::options e) -{ - destroy_(); - type_ = e; -} -meas_gap_cfg_dense_prs_r15_c::setup_s_::gap_offset_dense_prs_r15_c_::gap_offset_dense_prs_r15_c_( - const meas_gap_cfg_dense_prs_r15_c::setup_s_::gap_offset_dense_prs_r15_c_& other) +meas_gap_cfg_dense_prs_r15_c::setup_s_::gap_offset_dense_prs_r15_c_::gap_offset_dense_prs_r15_c_( + const meas_gap_cfg_dense_prs_r15_c::setup_s_::gap_offset_dense_prs_r15_c_& other) { type_ = other.type(); switch (type_) { @@ -9386,79 +9147,6 @@ uint8_t meas_scale_factor_r12_opts::to_number() const return map_enum_number(options, 2, value, "meas_scale_factor_r12_e"); } -// MobilityControlInfoV2X-r14 ::= SEQUENCE -SRSASN_CODE mob_ctrl_info_v2x_r14_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(v2x_comm_tx_pool_exceptional_r14_present, 1)); - HANDLE_CODE(bref.pack(v2x_comm_rx_pool_r14_present, 1)); - HANDLE_CODE(bref.pack(v2x_comm_sync_cfg_r14_present, 1)); - HANDLE_CODE(bref.pack(cbr_mob_tx_cfg_list_r14_present, 1)); - - if (v2x_comm_tx_pool_exceptional_r14_present) { - HANDLE_CODE(v2x_comm_tx_pool_exceptional_r14.pack(bref)); - } - if (v2x_comm_rx_pool_r14_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, v2x_comm_rx_pool_r14, 1, 16)); - } - if (v2x_comm_sync_cfg_r14_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, v2x_comm_sync_cfg_r14, 1, 16)); - } - if (cbr_mob_tx_cfg_list_r14_present) { - HANDLE_CODE(cbr_mob_tx_cfg_list_r14.pack(bref)); - } - - return SRSASN_SUCCESS; -} -SRSASN_CODE mob_ctrl_info_v2x_r14_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(v2x_comm_tx_pool_exceptional_r14_present, 1)); - HANDLE_CODE(bref.unpack(v2x_comm_rx_pool_r14_present, 1)); - HANDLE_CODE(bref.unpack(v2x_comm_sync_cfg_r14_present, 1)); - HANDLE_CODE(bref.unpack(cbr_mob_tx_cfg_list_r14_present, 1)); - - if (v2x_comm_tx_pool_exceptional_r14_present) { - HANDLE_CODE(v2x_comm_tx_pool_exceptional_r14.unpack(bref)); - } - if (v2x_comm_rx_pool_r14_present) { - HANDLE_CODE(unpack_dyn_seq_of(v2x_comm_rx_pool_r14, bref, 1, 16)); - } - if (v2x_comm_sync_cfg_r14_present) { - HANDLE_CODE(unpack_dyn_seq_of(v2x_comm_sync_cfg_r14, bref, 1, 16)); - } - if (cbr_mob_tx_cfg_list_r14_present) { - HANDLE_CODE(cbr_mob_tx_cfg_list_r14.unpack(bref)); - } - - return SRSASN_SUCCESS; -} -void mob_ctrl_info_v2x_r14_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (v2x_comm_tx_pool_exceptional_r14_present) { - j.write_fieldname("v2x-CommTxPoolExceptional-r14"); - v2x_comm_tx_pool_exceptional_r14.to_json(j); - } - if (v2x_comm_rx_pool_r14_present) { - j.start_array("v2x-CommRxPool-r14"); - for (const auto& e1 : v2x_comm_rx_pool_r14) { - e1.to_json(j); - } - j.end_array(); - } - if (v2x_comm_sync_cfg_r14_present) { - j.start_array("v2x-CommSyncConfig-r14"); - for (const auto& e1 : v2x_comm_sync_cfg_r14) { - e1.to_json(j); - } - j.end_array(); - } - if (cbr_mob_tx_cfg_list_r14_present) { - j.write_fieldname("cbr-MobilityTxConfigList-r14"); - cbr_mob_tx_cfg_list_r14.to_json(j); - } - j.end_obj(); -} - // QuantityConfig ::= SEQUENCE SRSASN_CODE quant_cfg_s::pack(bit_ref& bref) const { @@ -9672,26 +9360,230 @@ bool quant_cfg_s::operator==(const quant_cfg_s& other) const (not quant_cfg_nr_list_r15.is_present() or *quant_cfg_nr_list_r15 == *other.quant_cfg_nr_list_r15))); } -// MeasConfig ::= SEQUENCE -SRSASN_CODE meas_cfg_s::pack(bit_ref& bref) const +// RACH-ConfigDedicated ::= SEQUENCE +SRSASN_CODE rach_cfg_ded_s::pack(bit_ref& bref) const { - bref.pack(ext, 1); - HANDLE_CODE(bref.pack(meas_obj_to_rem_list_present, 1)); - HANDLE_CODE(bref.pack(meas_obj_to_add_mod_list_present, 1)); - HANDLE_CODE(bref.pack(report_cfg_to_rem_list_present, 1)); - HANDLE_CODE(bref.pack(report_cfg_to_add_mod_list_present, 1)); - HANDLE_CODE(bref.pack(meas_id_to_rem_list_present, 1)); - HANDLE_CODE(bref.pack(meas_id_to_add_mod_list_present, 1)); - HANDLE_CODE(bref.pack(quant_cfg_present, 1)); - HANDLE_CODE(bref.pack(meas_gap_cfg_present, 1)); - HANDLE_CODE(bref.pack(s_measure_present, 1)); - HANDLE_CODE(bref.pack(pre_regist_info_hrpd_present, 1)); - HANDLE_CODE(bref.pack(speed_state_pars_present, 1)); + HANDLE_CODE(pack_integer(bref, ra_preamb_idx, (uint8_t)0u, (uint8_t)63u)); + HANDLE_CODE(pack_integer(bref, ra_prach_mask_idx, (uint8_t)0u, (uint8_t)15u)); - if (meas_obj_to_rem_list_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, meas_obj_to_rem_list, 1, 32, integer_packer(1, 32))); + return SRSASN_SUCCESS; +} +SRSASN_CODE rach_cfg_ded_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(ra_preamb_idx, bref, (uint8_t)0u, (uint8_t)63u)); + HANDLE_CODE(unpack_integer(ra_prach_mask_idx, bref, (uint8_t)0u, (uint8_t)15u)); + + return SRSASN_SUCCESS; +} +void rach_cfg_ded_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("ra-PreambleIndex", ra_preamb_idx); + j.write_int("ra-PRACH-MaskIndex", ra_prach_mask_idx); + j.end_obj(); +} + +// RACH-Skip-r14 ::= SEQUENCE +SRSASN_CODE rach_skip_r14_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(ul_cfg_info_r14_present, 1)); + + HANDLE_CODE(target_ta_r14.pack(bref)); + if (ul_cfg_info_r14_present) { + HANDLE_CODE(pack_integer(bref, ul_cfg_info_r14.nof_conf_ul_processes_r14, (uint8_t)1u, (uint8_t)8u)); + HANDLE_CODE(ul_cfg_info_r14.ul_sched_interv_r14.pack(bref)); + HANDLE_CODE(pack_integer(bref, ul_cfg_info_r14.ul_start_sf_r14, (uint8_t)0u, (uint8_t)9u)); + HANDLE_CODE(ul_cfg_info_r14.ul_grant_r14.pack(bref)); } - if (meas_obj_to_add_mod_list_present) { + + return SRSASN_SUCCESS; +} +SRSASN_CODE rach_skip_r14_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(ul_cfg_info_r14_present, 1)); + + HANDLE_CODE(target_ta_r14.unpack(bref)); + if (ul_cfg_info_r14_present) { + HANDLE_CODE(unpack_integer(ul_cfg_info_r14.nof_conf_ul_processes_r14, bref, (uint8_t)1u, (uint8_t)8u)); + HANDLE_CODE(ul_cfg_info_r14.ul_sched_interv_r14.unpack(bref)); + HANDLE_CODE(unpack_integer(ul_cfg_info_r14.ul_start_sf_r14, bref, (uint8_t)0u, (uint8_t)9u)); + HANDLE_CODE(ul_cfg_info_r14.ul_grant_r14.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void rach_skip_r14_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("targetTA-r14"); + target_ta_r14.to_json(j); + if (ul_cfg_info_r14_present) { + j.write_fieldname("ul-ConfigInfo-r14"); + j.start_obj(); + j.write_int("numberOfConfUL-Processes-r14", ul_cfg_info_r14.nof_conf_ul_processes_r14); + j.write_str("ul-SchedInterval-r14", ul_cfg_info_r14.ul_sched_interv_r14.to_string()); + j.write_int("ul-StartSubframe-r14", ul_cfg_info_r14.ul_start_sf_r14); + j.write_str("ul-Grant-r14", ul_cfg_info_r14.ul_grant_r14.to_string()); + j.end_obj(); + } + j.end_obj(); +} + +void rach_skip_r14_s::target_ta_r14_c_::destroy_() {} +void rach_skip_r14_s::target_ta_r14_c_::set(types::options e) +{ + destroy_(); + type_ = e; +} +rach_skip_r14_s::target_ta_r14_c_::target_ta_r14_c_(const rach_skip_r14_s::target_ta_r14_c_& other) +{ + type_ = other.type(); + switch (type_) { + case types::ta0_r14: + break; + case types::mcg_ptag_r14: + break; + case types::scg_ptag_r14: + break; + case types::mcg_stag_r14: + c.init(other.c.get()); + break; + case types::scg_stag_r14: + c.init(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rach_skip_r14_s::target_ta_r14_c_"); + } +} +rach_skip_r14_s::target_ta_r14_c_& +rach_skip_r14_s::target_ta_r14_c_::operator=(const rach_skip_r14_s::target_ta_r14_c_& other) +{ + if (this == &other) { + return *this; + } + set(other.type()); + switch (type_) { + case types::ta0_r14: + break; + case types::mcg_ptag_r14: + break; + case types::scg_ptag_r14: + break; + case types::mcg_stag_r14: + c.set(other.c.get()); + break; + case types::scg_stag_r14: + c.set(other.c.get()); + break; + case types::nulltype: + break; + default: + log_invalid_choice_id(type_, "rach_skip_r14_s::target_ta_r14_c_"); + } + + return *this; +} +void rach_skip_r14_s::target_ta_r14_c_::to_json(json_writer& j) const +{ + j.start_obj(); + switch (type_) { + case types::ta0_r14: + break; + case types::mcg_ptag_r14: + break; + case types::scg_ptag_r14: + break; + case types::mcg_stag_r14: + j.write_int("mcg-STAG-r14", c.get()); + break; + case types::scg_stag_r14: + j.write_int("scg-STAG-r14", c.get()); + break; + default: + log_invalid_choice_id(type_, "rach_skip_r14_s::target_ta_r14_c_"); + } + j.end_obj(); +} +SRSASN_CODE rach_skip_r14_s::target_ta_r14_c_::pack(bit_ref& bref) const +{ + type_.pack(bref); + switch (type_) { + case types::ta0_r14: + break; + case types::mcg_ptag_r14: + break; + case types::scg_ptag_r14: + break; + case types::mcg_stag_r14: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)3u)); + break; + case types::scg_stag_r14: + HANDLE_CODE(pack_integer(bref, c.get(), (uint8_t)1u, (uint8_t)3u)); + break; + default: + log_invalid_choice_id(type_, "rach_skip_r14_s::target_ta_r14_c_"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE rach_skip_r14_s::target_ta_r14_c_::unpack(cbit_ref& bref) +{ + types e; + e.unpack(bref); + set(e); + switch (type_) { + case types::ta0_r14: + break; + case types::mcg_ptag_r14: + break; + case types::scg_ptag_r14: + break; + case types::mcg_stag_r14: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)3u)); + break; + case types::scg_stag_r14: + HANDLE_CODE(unpack_integer(c.get(), bref, (uint8_t)1u, (uint8_t)3u)); + break; + default: + log_invalid_choice_id(type_, "rach_skip_r14_s::target_ta_r14_c_"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} + +std::string rach_skip_r14_s::ul_cfg_info_r14_s_::ul_sched_interv_r14_opts::to_string() const +{ + static const char* options[] = {"sf2", "sf5", "sf10"}; + return convert_enum_idx(options, 3, value, "rach_skip_r14_s::ul_cfg_info_r14_s_::ul_sched_interv_r14_e_"); +} +uint8_t rach_skip_r14_s::ul_cfg_info_r14_s_::ul_sched_interv_r14_opts::to_number() const +{ + static const uint8_t options[] = {2, 5, 10}; + return map_enum_number(options, 3, value, "rach_skip_r14_s::ul_cfg_info_r14_s_::ul_sched_interv_r14_e_"); +} + +// MeasConfig ::= SEQUENCE +SRSASN_CODE meas_cfg_s::pack(bit_ref& bref) const +{ + bref.pack(ext, 1); + HANDLE_CODE(bref.pack(meas_obj_to_rem_list_present, 1)); + HANDLE_CODE(bref.pack(meas_obj_to_add_mod_list_present, 1)); + HANDLE_CODE(bref.pack(report_cfg_to_rem_list_present, 1)); + HANDLE_CODE(bref.pack(report_cfg_to_add_mod_list_present, 1)); + HANDLE_CODE(bref.pack(meas_id_to_rem_list_present, 1)); + HANDLE_CODE(bref.pack(meas_id_to_add_mod_list_present, 1)); + HANDLE_CODE(bref.pack(quant_cfg_present, 1)); + HANDLE_CODE(bref.pack(meas_gap_cfg_present, 1)); + HANDLE_CODE(bref.pack(s_measure_present, 1)); + HANDLE_CODE(bref.pack(pre_regist_info_hrpd_present, 1)); + HANDLE_CODE(bref.pack(speed_state_pars_present, 1)); + + if (meas_obj_to_rem_list_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, meas_obj_to_rem_list, 1, 32, integer_packer(1, 32))); + } + if (meas_obj_to_add_mod_list_present) { HANDLE_CODE(pack_dyn_seq_of(bref, meas_obj_to_add_mod_list, 1, 32)); } if (report_cfg_to_rem_list_present) { @@ -10320,6 +10212,363 @@ SRSASN_CODE meas_cfg_s::height_thresh_ref_r15_c_::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } +// CarrierFreqGERAN ::= SEQUENCE +SRSASN_CODE carrier_freq_geran_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pack_integer(bref, arfcn, (uint16_t)0u, (uint16_t)1023u)); + HANDLE_CODE(band_ind.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE carrier_freq_geran_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(unpack_integer(arfcn, bref, (uint16_t)0u, (uint16_t)1023u)); + HANDLE_CODE(band_ind.unpack(bref)); + + return SRSASN_SUCCESS; +} +void carrier_freq_geran_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("arfcn", arfcn); + j.write_str("bandIndicator", band_ind.to_string()); + j.end_obj(); +} + +// MobilityControlInfo-v10l0 ::= SEQUENCE +SRSASN_CODE mob_ctrl_info_v10l0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(add_spec_emission_v10l0_present, 1)); + + if (add_spec_emission_v10l0_present) { + HANDLE_CODE(pack_integer(bref, add_spec_emission_v10l0, (uint16_t)33u, (uint16_t)288u)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE mob_ctrl_info_v10l0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(add_spec_emission_v10l0_present, 1)); + + if (add_spec_emission_v10l0_present) { + HANDLE_CODE(unpack_integer(add_spec_emission_v10l0, bref, (uint16_t)33u, (uint16_t)288u)); + } + + return SRSASN_SUCCESS; +} +void mob_ctrl_info_v10l0_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (add_spec_emission_v10l0_present) { + j.write_int("additionalSpectrumEmission-v10l0", add_spec_emission_v10l0); + } + j.end_obj(); +} + +// LoggedMeasurementConfiguration-v1530-IEs ::= SEQUENCE +SRSASN_CODE logged_meas_cfg_v1530_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(bt_name_list_r15_present, 1)); + HANDLE_CODE(bref.pack(wlan_name_list_r15_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + 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)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE logged_meas_cfg_v1530_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(bt_name_list_r15_present, 1)); + HANDLE_CODE(bref.unpack(wlan_name_list_r15_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + 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)); + } + + return SRSASN_SUCCESS; +} +void logged_meas_cfg_v1530_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + 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 (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + +// CellGlobalIdEUTRA ::= SEQUENCE +SRSASN_CODE cell_global_id_eutra_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(plmn_id.pack(bref)); + HANDLE_CODE(cell_id.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE cell_global_id_eutra_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(plmn_id.unpack(bref)); + HANDLE_CODE(cell_id.unpack(bref)); + + return SRSASN_SUCCESS; +} +void cell_global_id_eutra_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("plmn-Identity"); + plmn_id.to_json(j); + j.write_str("cellIdentity", cell_id.to_string()); + j.end_obj(); +} + +// CarrierBandwidthEUTRA ::= SEQUENCE +SRSASN_CODE carrier_bw_eutra_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(ul_bw_present, 1)); + + HANDLE_CODE(dl_bw.pack(bref)); + if (ul_bw_present) { + HANDLE_CODE(ul_bw.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE carrier_bw_eutra_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(ul_bw_present, 1)); + + HANDLE_CODE(dl_bw.unpack(bref)); + if (ul_bw_present) { + HANDLE_CODE(ul_bw.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void carrier_bw_eutra_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("dl-Bandwidth", dl_bw.to_string()); + if (ul_bw_present) { + j.write_str("ul-Bandwidth", ul_bw.to_string()); + } + j.end_obj(); +} + +std::string carrier_bw_eutra_s::dl_bw_opts::to_string() const +{ + static const char* options[] = {"n6", + "n15", + "n25", + "n50", + "n75", + "n100", + "spare10", + "spare9", + "spare8", + "spare7", + "spare6", + "spare5", + "spare4", + "spare3", + "spare2", + "spare1"}; + return convert_enum_idx(options, 16, value, "carrier_bw_eutra_s::dl_bw_e_"); +} +uint8_t carrier_bw_eutra_s::dl_bw_opts::to_number() const +{ + static const uint8_t options[] = {6, 15, 25, 50, 75, 100}; + return map_enum_number(options, 6, value, "carrier_bw_eutra_s::dl_bw_e_"); +} + +std::string carrier_bw_eutra_s::ul_bw_opts::to_string() const +{ + static const char* options[] = {"n6", + "n15", + "n25", + "n50", + "n75", + "n100", + "spare10", + "spare9", + "spare8", + "spare7", + "spare6", + "spare5", + "spare4", + "spare3", + "spare2", + "spare1"}; + return convert_enum_idx(options, 16, value, "carrier_bw_eutra_s::ul_bw_e_"); +} +uint8_t carrier_bw_eutra_s::ul_bw_opts::to_number() const +{ + static const uint8_t options[] = {6, 15, 25, 50, 75, 100}; + return map_enum_number(options, 6, value, "carrier_bw_eutra_s::ul_bw_e_"); +} + +// CarrierFreqEUTRA ::= SEQUENCE +SRSASN_CODE carrier_freq_eutra_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(ul_carrier_freq_present, 1)); + + HANDLE_CODE(pack_integer(bref, dl_carrier_freq, (uint32_t)0u, (uint32_t)65535u)); + if (ul_carrier_freq_present) { + HANDLE_CODE(pack_integer(bref, ul_carrier_freq, (uint32_t)0u, (uint32_t)65535u)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE carrier_freq_eutra_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(ul_carrier_freq_present, 1)); + + HANDLE_CODE(unpack_integer(dl_carrier_freq, bref, (uint32_t)0u, (uint32_t)65535u)); + if (ul_carrier_freq_present) { + HANDLE_CODE(unpack_integer(ul_carrier_freq, bref, (uint32_t)0u, (uint32_t)65535u)); + } + + return SRSASN_SUCCESS; +} +void carrier_freq_eutra_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("dl-CarrierFreq", dl_carrier_freq); + if (ul_carrier_freq_present) { + j.write_int("ul-CarrierFreq", ul_carrier_freq); + } + j.end_obj(); +} + +// CarrierFreqEUTRA-v9e0 ::= SEQUENCE +SRSASN_CODE carrier_freq_eutra_v9e0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(ul_carrier_freq_v9e0_present, 1)); + + HANDLE_CODE(pack_integer(bref, dl_carrier_freq_v9e0, (uint32_t)0u, (uint32_t)262143u)); + if (ul_carrier_freq_v9e0_present) { + HANDLE_CODE(pack_integer(bref, ul_carrier_freq_v9e0, (uint32_t)0u, (uint32_t)262143u)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE carrier_freq_eutra_v9e0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(ul_carrier_freq_v9e0_present, 1)); + + HANDLE_CODE(unpack_integer(dl_carrier_freq_v9e0, bref, (uint32_t)0u, (uint32_t)262143u)); + if (ul_carrier_freq_v9e0_present) { + HANDLE_CODE(unpack_integer(ul_carrier_freq_v9e0, bref, (uint32_t)0u, (uint32_t)262143u)); + } + + return SRSASN_SUCCESS; +} +void carrier_freq_eutra_v9e0_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_int("dl-CarrierFreq-v9e0", dl_carrier_freq_v9e0); + if (ul_carrier_freq_v9e0_present) { + j.write_int("ul-CarrierFreq-v9e0", ul_carrier_freq_v9e0); + } + j.end_obj(); +} + +// MobilityControlInfoV2X-r14 ::= SEQUENCE +SRSASN_CODE mob_ctrl_info_v2x_r14_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(v2x_comm_tx_pool_exceptional_r14_present, 1)); + HANDLE_CODE(bref.pack(v2x_comm_rx_pool_r14_present, 1)); + HANDLE_CODE(bref.pack(v2x_comm_sync_cfg_r14_present, 1)); + HANDLE_CODE(bref.pack(cbr_mob_tx_cfg_list_r14_present, 1)); + + if (v2x_comm_tx_pool_exceptional_r14_present) { + HANDLE_CODE(v2x_comm_tx_pool_exceptional_r14.pack(bref)); + } + if (v2x_comm_rx_pool_r14_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, v2x_comm_rx_pool_r14, 1, 16)); + } + if (v2x_comm_sync_cfg_r14_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, v2x_comm_sync_cfg_r14, 1, 16)); + } + if (cbr_mob_tx_cfg_list_r14_present) { + HANDLE_CODE(cbr_mob_tx_cfg_list_r14.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE mob_ctrl_info_v2x_r14_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(v2x_comm_tx_pool_exceptional_r14_present, 1)); + HANDLE_CODE(bref.unpack(v2x_comm_rx_pool_r14_present, 1)); + HANDLE_CODE(bref.unpack(v2x_comm_sync_cfg_r14_present, 1)); + HANDLE_CODE(bref.unpack(cbr_mob_tx_cfg_list_r14_present, 1)); + + if (v2x_comm_tx_pool_exceptional_r14_present) { + HANDLE_CODE(v2x_comm_tx_pool_exceptional_r14.unpack(bref)); + } + if (v2x_comm_rx_pool_r14_present) { + HANDLE_CODE(unpack_dyn_seq_of(v2x_comm_rx_pool_r14, bref, 1, 16)); + } + if (v2x_comm_sync_cfg_r14_present) { + HANDLE_CODE(unpack_dyn_seq_of(v2x_comm_sync_cfg_r14, bref, 1, 16)); + } + if (cbr_mob_tx_cfg_list_r14_present) { + HANDLE_CODE(cbr_mob_tx_cfg_list_r14.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void mob_ctrl_info_v2x_r14_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (v2x_comm_tx_pool_exceptional_r14_present) { + j.write_fieldname("v2x-CommTxPoolExceptional-r14"); + v2x_comm_tx_pool_exceptional_r14.to_json(j); + } + if (v2x_comm_rx_pool_r14_present) { + j.start_array("v2x-CommRxPool-r14"); + for (const auto& e1 : v2x_comm_rx_pool_r14) { + e1.to_json(j); + } + j.end_array(); + } + if (v2x_comm_sync_cfg_r14_present) { + j.start_array("v2x-CommSyncConfig-r14"); + for (const auto& e1 : v2x_comm_sync_cfg_r14) { + e1.to_json(j); + } + j.end_array(); + } + if (cbr_mob_tx_cfg_list_r14_present) { + j.write_fieldname("cbr-MobilityTxConfigList-r14"); + cbr_mob_tx_cfg_list_r14.to_json(j); + } + j.end_obj(); +} + // MobilityControlInfo ::= SEQUENCE SRSASN_CODE mob_ctrl_info_s::pack(bit_ref& bref) const { @@ -12456,14 +12705,14 @@ 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_minus15_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_minus15_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list_minus15, 1, 32, integer_packer(1, 1024))); + 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)); @@ -12476,14 +12725,14 @@ 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_minus15_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_minus15_present) { - HANDLE_CODE(unpack_dyn_seq_of(freq_band_list_minus15, bref, 1, 32, integer_packer(1, 1024))); + 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)); @@ -12502,9 +12751,9 @@ void cgi_info_nr_r15_s::to_json(json_writer& j) const } j.end_array(); } - if (freq_band_list_minus15_present) { - j.start_array("frequencyBandList-15"); - for (const auto& e1 : freq_band_list_minus15) { + 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(); diff --git a/lib/src/asn1/rrc/phy_ded.cc b/lib/src/asn1/rrc/phy_ded.cc index 9074fc286..70abc65a5 100644 --- a/lib/src/asn1/rrc/phy_ded.cc +++ b/lib/src/asn1/rrc/phy_ded.cc @@ -9777,10 +9777,10 @@ void spucch_cfg_r15_c::to_json(json_writer& j) const if (c.two_ant_port_activ_spucch_format1a1b_r15_present) { j.write_str("twoAntennaPortActivatedSPUCCH-Format1a1b-r15", "true"); } - j.write_fieldname("twoAntennaPortActivatedSPUCCH-Format3-r15"); + j.write_fieldname("dummy"); j.start_obj(); j.start_array("n3SPUCCH-AN-List-r15"); - for (const auto& e1 : c.two_ant_port_activ_spucch_format3_r15.n3_spucch_an_list_r15) { + for (const auto& e1 : c.dummy.n3_spucch_an_list_r15) { j.write_int(e1); } j.end_array(); @@ -9804,8 +9804,7 @@ SRSASN_CODE spucch_cfg_r15_c::pack(bit_ref& bref) const if (c.spucch_set_r15_present) { HANDLE_CODE(pack_dyn_seq_of(bref, c.spucch_set_r15, 1, 4)); } - HANDLE_CODE(pack_dyn_seq_of( - bref, c.two_ant_port_activ_spucch_format3_r15.n3_spucch_an_list_r15, 1, 4, integer_packer(0, 549))); + HANDLE_CODE(pack_dyn_seq_of(bref, c.dummy.n3_spucch_an_list_r15, 1, 4, integer_packer(0, 549))); break; default: log_invalid_choice_id(type_, "spucch_cfg_r15_c"); @@ -9827,8 +9826,7 @@ SRSASN_CODE spucch_cfg_r15_c::unpack(cbit_ref& bref) if (c.spucch_set_r15_present) { HANDLE_CODE(unpack_dyn_seq_of(c.spucch_set_r15, bref, 1, 4)); } - HANDLE_CODE(unpack_dyn_seq_of( - c.two_ant_port_activ_spucch_format3_r15.n3_spucch_an_list_r15, bref, 1, 4, integer_packer(0, 549))); + HANDLE_CODE(unpack_dyn_seq_of(c.dummy.n3_spucch_an_list_r15, bref, 1, 4, integer_packer(0, 549))); break; default: log_invalid_choice_id(type_, "spucch_cfg_r15_c"); @@ -9842,8 +9840,7 @@ bool spucch_cfg_r15_c::operator==(const spucch_cfg_r15_c& other) const (not c.spucch_set_r15_present or c.spucch_set_r15 == other.c.spucch_set_r15) and c.two_ant_port_activ_spucch_format1a1b_r15_present == other.c.two_ant_port_activ_spucch_format1a1b_r15_present and - c.two_ant_port_activ_spucch_format3_r15.n3_spucch_an_list_r15 == - other.c.two_ant_port_activ_spucch_format3_r15.n3_spucch_an_list_r15; + c.dummy.n3_spucch_an_list_r15 == other.c.dummy.n3_spucch_an_list_r15; } // SRS-CC-SetIndex-r14 ::= SEQUENCE @@ -15742,6 +15739,81 @@ 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); } +// SPUCCH-Config-v1550 ::= CHOICE +void spucch_cfg_v1550_c::set(types::options e) +{ + type_ = e; +} +void spucch_cfg_v1550_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("twoAntennaPortActivatedSPUCCH-Format3-v1550"); + j.start_obj(); + j.start_array("n3SPUCCH-AN-List-v1550"); + for (const auto& e1 : c.two_ant_port_activ_spucch_format3_v1550.n3_spucch_an_list_v1550) { + j.write_int(e1); + } + j.end_array(); + j.end_obj(); + j.end_obj(); + break; + default: + log_invalid_choice_id(type_, "spucch_cfg_v1550_c"); + } + j.end_obj(); +} +SRSASN_CODE spucch_cfg_v1550_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.two_ant_port_activ_spucch_format3_v1550.n3_spucch_an_list_v1550, + 1, + 4, + integer_packer(0, 549))); + break; + default: + log_invalid_choice_id(type_, "spucch_cfg_v1550_c"); + return SRSASN_ERROR_ENCODE_FAIL; + } + return SRSASN_SUCCESS; +} +SRSASN_CODE spucch_cfg_v1550_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.two_ant_port_activ_spucch_format3_v1550.n3_spucch_an_list_v1550, + bref, + 1, + 4, + integer_packer(0, 549))); + break; + default: + log_invalid_choice_id(type_, "spucch_cfg_v1550_c"); + return SRSASN_ERROR_DECODE_FAIL; + } + return SRSASN_SUCCESS; +} +bool spucch_cfg_v1550_c::operator==(const spucch_cfg_v1550_c& other) const +{ + return type() == other.type() and c.two_ant_port_activ_spucch_format3_v1550.n3_spucch_an_list_v1550 == + other.c.two_ant_port_activ_spucch_format3_v1550.n3_spucch_an_list_v1550; +} + // SRS-TPC-PDCCH-Config-r14 ::= CHOICE void srs_tpc_pdcch_cfg_r14_c::set(types::options e) { @@ -17257,6 +17329,7 @@ SRSASN_CODE phys_cfg_ded_s::pack(bit_ref& bref) const group_flags[10] |= ul_pwr_ctrl_ded_v1530.is_present(); 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.pack(bref); if (group_flags[0]) { @@ -17593,6 +17666,14 @@ SRSASN_CODE phys_cfg_ded_s::pack(bit_ref& bref) const HANDLE_CODE(blind_pdsch_repeat_cfg_r15->pack(bref)); } } + if (group_flags[11]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(spucch_cfg_v1550.is_present(), 1)); + if (spucch_cfg_v1550.is_present()) { + HANDLE_CODE(spucch_cfg_v1550->pack(bref)); + } + } } return SRSASN_SUCCESS; } @@ -17642,7 +17723,7 @@ SRSASN_CODE phys_cfg_ded_s::unpack(cbit_ref& bref) } if (ext) { - ext_groups_unpacker_guard group_flags(11); + ext_groups_unpacker_guard group_flags(12); group_flags.unpack(bref); if (group_flags[0]) { @@ -18119,6 +18200,16 @@ SRSASN_CODE phys_cfg_ded_s::unpack(cbit_ref& bref) HANDLE_CODE(blind_pdsch_repeat_cfg_r15->unpack(bref)); } } + if (group_flags[11]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool spucch_cfg_v1550_present; + HANDLE_CODE(bref.unpack(spucch_cfg_v1550_present, 1)); + spucch_cfg_v1550.set_present(spucch_cfg_v1550_present); + if (spucch_cfg_v1550.is_present()) { + HANDLE_CODE(spucch_cfg_v1550->unpack(bref)); + } + } } return SRSASN_SUCCESS; } @@ -18485,6 +18576,10 @@ void phys_cfg_ded_s::to_json(json_writer& j) const j.write_fieldname("blindPDSCH-Repetition-Config-r15"); blind_pdsch_repeat_cfg_r15->to_json(j); } + if (spucch_cfg_v1550.is_present()) { + j.write_fieldname("spucch-Config-v1550"); + spucch_cfg_v1550->to_json(j); + } } j.end_obj(); } diff --git a/lib/src/asn1/rrc/rr_common.cc b/lib/src/asn1/rrc/rr_common.cc index 757509c43..5da38c960 100644 --- a/lib/src/asn1/rrc/rr_common.cc +++ b/lib/src/asn1/rrc/rr_common.cc @@ -3624,6 +3624,42 @@ uint16_t wus_cfg_r15_s::time_offset_e_drx_long_r15_opts::to_number() const return map_enum_number(options, 2, value, "wus_cfg_r15_s::time_offset_e_drx_long_r15_e_"); } +// WUS-Config-v1560 ::= SEQUENCE +SRSASN_CODE wus_cfg_v1560_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(pwr_boost_r15.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE wus_cfg_v1560_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(pwr_boost_r15.unpack(bref)); + + return SRSASN_SUCCESS; +} +void wus_cfg_v1560_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("powerBoost-r15", pwr_boost_r15.to_string()); + j.end_obj(); +} + +std::string wus_cfg_v1560_s::pwr_boost_r15_opts::to_string() const +{ + static const char* options[] = {"dB0", "dB1dot8", "dB3", "dB4dot8"}; + return convert_enum_idx(options, 4, value, "wus_cfg_v1560_s::pwr_boost_r15_e_"); +} +float wus_cfg_v1560_s::pwr_boost_r15_opts::to_number() const +{ + static const float options[] = {0.0, 1.8, 3.0, 4.8}; + return map_enum_number(options, 4, value, "wus_cfg_v1560_s::pwr_boost_r15_e_"); +} +std::string wus_cfg_v1560_s::pwr_boost_r15_opts::to_number_string() const +{ + static const char* options[] = {"0", "1.8", "3", "4.8"}; + return convert_enum_idx(options, 4, value, "wus_cfg_v1560_s::pwr_boost_r15_e_"); +} + // RadioResourceConfigCommonSIB ::= SEQUENCE SRSASN_CODE rr_cfg_common_sib_s::pack(bit_ref& bref) const { @@ -3659,6 +3695,7 @@ SRSASN_CODE rr_cfg_common_sib_s::pack(bit_ref& bref) const group_flags[5] |= wus_cfg_r15.is_present(); 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.pack(bref); if (group_flags[0]) { @@ -3761,6 +3798,14 @@ SRSASN_CODE rr_cfg_common_sib_s::pack(bit_ref& bref) const HANDLE_CODE(ul_pwr_ctrl_common_v1540->pack(bref)); } } + if (group_flags[7]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(wus_cfg_v1560.is_present(), 1)); + if (wus_cfg_v1560.is_present()) { + HANDLE_CODE(wus_cfg_v1560->pack(bref)); + } + } } return SRSASN_SUCCESS; } @@ -3779,7 +3824,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(7); + ext_groups_unpacker_guard group_flags(8); group_flags.unpack(bref); if (group_flags[0]) { @@ -3918,6 +3963,16 @@ SRSASN_CODE rr_cfg_common_sib_s::unpack(cbit_ref& bref) HANDLE_CODE(ul_pwr_ctrl_common_v1540->unpack(bref)); } } + if (group_flags[7]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool wus_cfg_v1560_present; + HANDLE_CODE(bref.unpack(wus_cfg_v1560_present, 1)); + wus_cfg_v1560.set_present(wus_cfg_v1560_present); + if (wus_cfg_v1560.is_present()) { + HANDLE_CODE(wus_cfg_v1560->unpack(bref)); + } + } } return SRSASN_SUCCESS; } @@ -4016,6 +4071,10 @@ void rr_cfg_common_sib_s::to_json(json_writer& j) const j.write_fieldname("uplinkPowerControlCommon-v1540"); ul_pwr_ctrl_common_v1540->to_json(j); } + if (wus_cfg_v1560.is_present()) { + j.write_fieldname("wus-Config-v1560"); + wus_cfg_v1560->to_json(j); + } } j.end_obj(); } diff --git a/lib/src/asn1/rrc/rr_ded.cc b/lib/src/asn1/rrc/rr_ded.cc index 3de4e6273..fa48e7f56 100644 --- a/lib/src/asn1/rrc/rr_ded.cc +++ b/lib/src/asn1/rrc/rr_ded.cc @@ -401,7 +401,7 @@ SRSASN_CODE lc_ch_cfg_s::pack(bit_ref& bref) const group_flags[2] |= bit_rate_query_prohibit_timer_r14_present; group_flags[3] |= allowed_tti_lens_r15.is_present(); group_flags[3] |= lc_ch_sr_restrict_r15.is_present(); - group_flags[3] |= chl_access_prio_r15.is_present(); + group_flags[3] |= ch_access_prio_r15.is_present(); group_flags[3] |= lch_cell_restrict_r15_present; group_flags.pack(bref); @@ -435,7 +435,7 @@ SRSASN_CODE lc_ch_cfg_s::pack(bit_ref& bref) const HANDLE_CODE(bref.pack(allowed_tti_lens_r15.is_present(), 1)); HANDLE_CODE(bref.pack(lc_ch_sr_restrict_r15.is_present(), 1)); - HANDLE_CODE(bref.pack(chl_access_prio_r15.is_present(), 1)); + HANDLE_CODE(bref.pack(ch_access_prio_r15.is_present(), 1)); HANDLE_CODE(bref.pack(lch_cell_restrict_r15_present, 1)); if (allowed_tti_lens_r15.is_present()) { HANDLE_CODE(allowed_tti_lens_r15->pack(bref)); @@ -443,8 +443,8 @@ SRSASN_CODE lc_ch_cfg_s::pack(bit_ref& bref) const if (lc_ch_sr_restrict_r15.is_present()) { HANDLE_CODE(lc_ch_sr_restrict_r15->pack(bref)); } - if (chl_access_prio_r15.is_present()) { - HANDLE_CODE(chl_access_prio_r15->pack(bref)); + if (ch_access_prio_r15.is_present()) { + HANDLE_CODE(ch_access_prio_r15->pack(bref)); } if (lch_cell_restrict_r15_present) { HANDLE_CODE(lch_cell_restrict_r15.pack(bref)); @@ -506,9 +506,9 @@ SRSASN_CODE lc_ch_cfg_s::unpack(cbit_ref& bref) bool lc_ch_sr_restrict_r15_present; HANDLE_CODE(bref.unpack(lc_ch_sr_restrict_r15_present, 1)); lc_ch_sr_restrict_r15.set_present(lc_ch_sr_restrict_r15_present); - bool chl_access_prio_r15_present; - HANDLE_CODE(bref.unpack(chl_access_prio_r15_present, 1)); - chl_access_prio_r15.set_present(chl_access_prio_r15_present); + bool ch_access_prio_r15_present; + HANDLE_CODE(bref.unpack(ch_access_prio_r15_present, 1)); + ch_access_prio_r15.set_present(ch_access_prio_r15_present); HANDLE_CODE(bref.unpack(lch_cell_restrict_r15_present, 1)); if (allowed_tti_lens_r15.is_present()) { HANDLE_CODE(allowed_tti_lens_r15->unpack(bref)); @@ -516,8 +516,8 @@ SRSASN_CODE lc_ch_cfg_s::unpack(cbit_ref& bref) if (lc_ch_sr_restrict_r15.is_present()) { HANDLE_CODE(lc_ch_sr_restrict_r15->unpack(bref)); } - if (chl_access_prio_r15.is_present()) { - HANDLE_CODE(chl_access_prio_r15->unpack(bref)); + if (ch_access_prio_r15.is_present()) { + HANDLE_CODE(ch_access_prio_r15->unpack(bref)); } if (lch_cell_restrict_r15_present) { HANDLE_CODE(lch_cell_restrict_r15.unpack(bref)); @@ -561,9 +561,9 @@ void lc_ch_cfg_s::to_json(json_writer& j) const j.write_fieldname("logicalChannelSR-Restriction-r15"); lc_ch_sr_restrict_r15->to_json(j); } - if (chl_access_prio_r15.is_present()) { - j.write_fieldname("channellAccessPriority-r15"); - chl_access_prio_r15->to_json(j); + if (ch_access_prio_r15.is_present()) { + j.write_fieldname("channelAccessPriority-r15"); + ch_access_prio_r15->to_json(j); } if (lch_cell_restrict_r15_present) { j.write_str("lch-CellRestriction-r15", lch_cell_restrict_r15.to_string()); @@ -592,8 +592,8 @@ bool lc_ch_cfg_s::operator==(const lc_ch_cfg_s& other) const (not allowed_tti_lens_r15.is_present() or *allowed_tti_lens_r15 == *other.allowed_tti_lens_r15) and lc_ch_sr_restrict_r15.is_present() == other.lc_ch_sr_restrict_r15.is_present() and (not lc_ch_sr_restrict_r15.is_present() or *lc_ch_sr_restrict_r15 == *other.lc_ch_sr_restrict_r15) and - chl_access_prio_r15.is_present() == other.chl_access_prio_r15.is_present() and - (not chl_access_prio_r15.is_present() or *chl_access_prio_r15 == *other.chl_access_prio_r15) and + 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))); } @@ -773,11 +773,11 @@ std::string lc_ch_cfg_s::lc_ch_sr_restrict_r15_c_::setup_opts::to_string() const return convert_enum_idx(options, 2, value, "lc_ch_cfg_s::lc_ch_sr_restrict_r15_c_::setup_e_"); } -void lc_ch_cfg_s::chl_access_prio_r15_c_::set(types::options e) +void lc_ch_cfg_s::ch_access_prio_r15_c_::set(types::options e) { type_ = e; } -void lc_ch_cfg_s::chl_access_prio_r15_c_::to_json(json_writer& j) const +void lc_ch_cfg_s::ch_access_prio_r15_c_::to_json(json_writer& j) const { j.start_obj(); switch (type_) { @@ -787,11 +787,11 @@ void lc_ch_cfg_s::chl_access_prio_r15_c_::to_json(json_writer& j) const j.write_int("setup", c); break; default: - log_invalid_choice_id(type_, "lc_ch_cfg_s::chl_access_prio_r15_c_"); + log_invalid_choice_id(type_, "lc_ch_cfg_s::ch_access_prio_r15_c_"); } j.end_obj(); } -SRSASN_CODE lc_ch_cfg_s::chl_access_prio_r15_c_::pack(bit_ref& bref) const +SRSASN_CODE lc_ch_cfg_s::ch_access_prio_r15_c_::pack(bit_ref& bref) const { type_.pack(bref); switch (type_) { @@ -801,12 +801,12 @@ SRSASN_CODE lc_ch_cfg_s::chl_access_prio_r15_c_::pack(bit_ref& bref) const HANDLE_CODE(pack_integer(bref, c, (uint8_t)1u, (uint8_t)4u)); break; default: - log_invalid_choice_id(type_, "lc_ch_cfg_s::chl_access_prio_r15_c_"); + log_invalid_choice_id(type_, "lc_ch_cfg_s::ch_access_prio_r15_c_"); return SRSASN_ERROR_ENCODE_FAIL; } return SRSASN_SUCCESS; } -SRSASN_CODE lc_ch_cfg_s::chl_access_prio_r15_c_::unpack(cbit_ref& bref) +SRSASN_CODE lc_ch_cfg_s::ch_access_prio_r15_c_::unpack(cbit_ref& bref) { types e; e.unpack(bref); @@ -818,12 +818,12 @@ SRSASN_CODE lc_ch_cfg_s::chl_access_prio_r15_c_::unpack(cbit_ref& bref) HANDLE_CODE(unpack_integer(c, bref, (uint8_t)1u, (uint8_t)4u)); break; default: - log_invalid_choice_id(type_, "lc_ch_cfg_s::chl_access_prio_r15_c_"); + log_invalid_choice_id(type_, "lc_ch_cfg_s::ch_access_prio_r15_c_"); return SRSASN_ERROR_DECODE_FAIL; } return SRSASN_SUCCESS; } -bool lc_ch_cfg_s::chl_access_prio_r15_c_::operator==(const chl_access_prio_r15_c_& other) const +bool lc_ch_cfg_s::ch_access_prio_r15_c_::operator==(const ch_access_prio_r15_c_& other) const { return type() == other.type() and c == other.c; } @@ -1331,7 +1331,7 @@ uint8_t crs_assist_info_r13_s::ant_ports_count_r13_opts::to_number() const // CRS-AssistanceInfo-r15 ::= SEQUENCE SRSASN_CODE crs_assist_info_r15_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(crs_intf_mitig_enabled_minus15_present, 1)); + HANDLE_CODE(bref.pack(crs_intf_mitig_enabled_r15_present, 1)); HANDLE_CODE(pack_integer(bref, pci_r15, (uint16_t)0u, (uint16_t)503u)); @@ -1339,7 +1339,7 @@ SRSASN_CODE crs_assist_info_r15_s::pack(bit_ref& bref) const } SRSASN_CODE crs_assist_info_r15_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(crs_intf_mitig_enabled_minus15_present, 1)); + HANDLE_CODE(bref.unpack(crs_intf_mitig_enabled_r15_present, 1)); HANDLE_CODE(unpack_integer(pci_r15, bref, (uint16_t)0u, (uint16_t)503u)); @@ -1349,15 +1349,14 @@ void crs_assist_info_r15_s::to_json(json_writer& j) const { j.start_obj(); j.write_int("physCellId-r15", pci_r15); - if (crs_intf_mitig_enabled_minus15_present) { - j.write_str("crs-IntfMitigEnabled-15", "enabled"); + if (crs_intf_mitig_enabled_r15_present) { + j.write_str("crs-IntfMitigEnabled-r15", "enabled"); } j.end_obj(); } bool crs_assist_info_r15_s::operator==(const crs_assist_info_r15_s& other) const { - return pci_r15 == other.pci_r15 and - crs_intf_mitig_enabled_minus15_present == other.crs_intf_mitig_enabled_minus15_present; + return pci_r15 == other.pci_r15 and crs_intf_mitig_enabled_r15_present == other.crs_intf_mitig_enabled_r15_present; } // NeighCellsInfo-r12 ::= SEQUENCE @@ -3983,7 +3982,7 @@ SRSASN_CODE drb_to_add_mod_s::pack(bit_ref& bref) const group_flags[2] |= lwa_wlan_ac_r14_present; group_flags[3] |= rlc_cfg_v1510.is_present(); group_flags[4] |= rlc_cfg_v1530.is_present(); - group_flags[4] |= rlc_bearer_cfg_dupl_r15.is_present(); + group_flags[4] |= rlc_bearer_cfg_secondary_r15.is_present(); group_flags[4] |= lc_ch_id_r15_present; group_flags.pack(bref); @@ -4044,13 +4043,13 @@ SRSASN_CODE drb_to_add_mod_s::pack(bit_ref& bref) const varlength_field_pack_guard varlen_scope(bref, false); HANDLE_CODE(bref.pack(rlc_cfg_v1530.is_present(), 1)); - HANDLE_CODE(bref.pack(rlc_bearer_cfg_dupl_r15.is_present(), 1)); + HANDLE_CODE(bref.pack(rlc_bearer_cfg_secondary_r15.is_present(), 1)); HANDLE_CODE(bref.pack(lc_ch_id_r15_present, 1)); if (rlc_cfg_v1530.is_present()) { HANDLE_CODE(rlc_cfg_v1530->pack(bref)); } - if (rlc_bearer_cfg_dupl_r15.is_present()) { - HANDLE_CODE(rlc_bearer_cfg_dupl_r15->pack(bref)); + if (rlc_bearer_cfg_secondary_r15.is_present()) { + HANDLE_CODE(rlc_bearer_cfg_secondary_r15->pack(bref)); } if (lc_ch_id_r15_present) { HANDLE_CODE(pack_integer(bref, lc_ch_id_r15, (uint8_t)32u, (uint8_t)38u)); @@ -4156,15 +4155,15 @@ SRSASN_CODE drb_to_add_mod_s::unpack(cbit_ref& bref) bool rlc_cfg_v1530_present; HANDLE_CODE(bref.unpack(rlc_cfg_v1530_present, 1)); rlc_cfg_v1530.set_present(rlc_cfg_v1530_present); - bool rlc_bearer_cfg_dupl_r15_present; - HANDLE_CODE(bref.unpack(rlc_bearer_cfg_dupl_r15_present, 1)); - rlc_bearer_cfg_dupl_r15.set_present(rlc_bearer_cfg_dupl_r15_present); + bool rlc_bearer_cfg_secondary_r15_present; + HANDLE_CODE(bref.unpack(rlc_bearer_cfg_secondary_r15_present, 1)); + rlc_bearer_cfg_secondary_r15.set_present(rlc_bearer_cfg_secondary_r15_present); HANDLE_CODE(bref.unpack(lc_ch_id_r15_present, 1)); if (rlc_cfg_v1530.is_present()) { HANDLE_CODE(rlc_cfg_v1530->unpack(bref)); } - if (rlc_bearer_cfg_dupl_r15.is_present()) { - HANDLE_CODE(rlc_bearer_cfg_dupl_r15->unpack(bref)); + if (rlc_bearer_cfg_secondary_r15.is_present()) { + HANDLE_CODE(rlc_bearer_cfg_secondary_r15->unpack(bref)); } if (lc_ch_id_r15_present) { HANDLE_CODE(unpack_integer(lc_ch_id_r15, bref, (uint8_t)32u, (uint8_t)38u)); @@ -4234,9 +4233,9 @@ void drb_to_add_mod_s::to_json(json_writer& j) const j.write_fieldname("rlc-Config-v1530"); rlc_cfg_v1530->to_json(j); } - if (rlc_bearer_cfg_dupl_r15.is_present()) { - j.write_fieldname("rlc-BearerConfigDupl-r15"); - rlc_bearer_cfg_dupl_r15->to_json(j); + if (rlc_bearer_cfg_secondary_r15.is_present()) { + j.write_fieldname("rlc-BearerConfigSecondary-r15"); + rlc_bearer_cfg_secondary_r15->to_json(j); } if (lc_ch_id_r15_present) { j.write_int("logicalChannelIdentity-r15", lc_ch_id_r15); @@ -4274,8 +4273,9 @@ bool drb_to_add_mod_s::operator==(const drb_to_add_mod_s& other) const (not rlc_cfg_v1510.is_present() or *rlc_cfg_v1510 == *other.rlc_cfg_v1510) and rlc_cfg_v1530.is_present() == other.rlc_cfg_v1530.is_present() and (not rlc_cfg_v1530.is_present() or *rlc_cfg_v1530 == *other.rlc_cfg_v1530) and - rlc_bearer_cfg_dupl_r15.is_present() == other.rlc_bearer_cfg_dupl_r15.is_present() and - (not rlc_bearer_cfg_dupl_r15.is_present() or *rlc_bearer_cfg_dupl_r15 == *other.rlc_bearer_cfg_dupl_r15) and + rlc_bearer_cfg_secondary_r15.is_present() == other.rlc_bearer_cfg_secondary_r15.is_present() and + (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))); } @@ -5575,8 +5575,9 @@ SRSASN_CODE srb_to_add_mod_s::pack(bit_ref& bref) const ext_groups_packer_guard group_flags; group_flags[0] |= pdcp_ver_change_r15_present; group_flags[0] |= rlc_cfg_v1530.is_present(); - group_flags[0] |= rlc_bearer_cfg_dupl_r15.is_present(); + 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.pack(bref); if (group_flags[0]) { @@ -5584,18 +5585,26 @@ SRSASN_CODE srb_to_add_mod_s::pack(bit_ref& bref) const HANDLE_CODE(bref.pack(pdcp_ver_change_r15_present, 1)); HANDLE_CODE(bref.pack(rlc_cfg_v1530.is_present(), 1)); - HANDLE_CODE(bref.pack(rlc_bearer_cfg_dupl_r15.is_present(), 1)); + HANDLE_CODE(bref.pack(rlc_bearer_cfg_secondary_r15.is_present(), 1)); HANDLE_CODE(bref.pack(srb_id_v1530_present, 1)); if (rlc_cfg_v1530.is_present()) { HANDLE_CODE(rlc_cfg_v1530->pack(bref)); } - if (rlc_bearer_cfg_dupl_r15.is_present()) { - HANDLE_CODE(rlc_bearer_cfg_dupl_r15->pack(bref)); + if (rlc_bearer_cfg_secondary_r15.is_present()) { + HANDLE_CODE(rlc_bearer_cfg_secondary_r15->pack(bref)); } if (srb_id_v1530_present) { HANDLE_CODE(pack_integer(bref, srb_id_v1530, (uint8_t)4u, (uint8_t)4u)); } } + if (group_flags[1]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(rlc_cfg_v1560.is_present(), 1)); + if (rlc_cfg_v1560.is_present()) { + HANDLE_CODE(rlc_cfg_v1560->pack(bref)); + } + } } return SRSASN_SUCCESS; } @@ -5614,7 +5623,7 @@ SRSASN_CODE srb_to_add_mod_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]) { @@ -5624,20 +5633,30 @@ SRSASN_CODE srb_to_add_mod_s::unpack(cbit_ref& bref) bool rlc_cfg_v1530_present; HANDLE_CODE(bref.unpack(rlc_cfg_v1530_present, 1)); rlc_cfg_v1530.set_present(rlc_cfg_v1530_present); - bool rlc_bearer_cfg_dupl_r15_present; - HANDLE_CODE(bref.unpack(rlc_bearer_cfg_dupl_r15_present, 1)); - rlc_bearer_cfg_dupl_r15.set_present(rlc_bearer_cfg_dupl_r15_present); + bool rlc_bearer_cfg_secondary_r15_present; + HANDLE_CODE(bref.unpack(rlc_bearer_cfg_secondary_r15_present, 1)); + rlc_bearer_cfg_secondary_r15.set_present(rlc_bearer_cfg_secondary_r15_present); HANDLE_CODE(bref.unpack(srb_id_v1530_present, 1)); if (rlc_cfg_v1530.is_present()) { HANDLE_CODE(rlc_cfg_v1530->unpack(bref)); } - if (rlc_bearer_cfg_dupl_r15.is_present()) { - HANDLE_CODE(rlc_bearer_cfg_dupl_r15->unpack(bref)); + if (rlc_bearer_cfg_secondary_r15.is_present()) { + HANDLE_CODE(rlc_bearer_cfg_secondary_r15->unpack(bref)); } if (srb_id_v1530_present) { HANDLE_CODE(unpack_integer(srb_id_v1530, bref, (uint8_t)4u, (uint8_t)4u)); } } + if (group_flags[1]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool rlc_cfg_v1560_present; + HANDLE_CODE(bref.unpack(rlc_cfg_v1560_present, 1)); + rlc_cfg_v1560.set_present(rlc_cfg_v1560_present); + if (rlc_cfg_v1560.is_present()) { + HANDLE_CODE(rlc_cfg_v1560->unpack(bref)); + } + } } return SRSASN_SUCCESS; } @@ -5661,13 +5680,17 @@ void srb_to_add_mod_s::to_json(json_writer& j) const j.write_fieldname("rlc-Config-v1530"); rlc_cfg_v1530->to_json(j); } - if (rlc_bearer_cfg_dupl_r15.is_present()) { - j.write_fieldname("rlc-BearerConfigDupl-r15"); - rlc_bearer_cfg_dupl_r15->to_json(j); + if (rlc_bearer_cfg_secondary_r15.is_present()) { + j.write_fieldname("rlc-BearerConfigSecondary-r15"); + rlc_bearer_cfg_secondary_r15->to_json(j); } if (srb_id_v1530_present) { j.write_int("srb-Identity-v1530", srb_id_v1530); } + if (rlc_cfg_v1560.is_present()) { + j.write_fieldname("rlc-Config-v1560"); + rlc_cfg_v1560->to_json(j); + } } j.end_obj(); } @@ -5676,14 +5699,16 @@ bool srb_to_add_mod_s::operator==(const srb_to_add_mod_s& other) const return ext == other.ext and srb_id == other.srb_id and rlc_cfg_present == other.rlc_cfg_present and (not rlc_cfg_present or rlc_cfg == other.rlc_cfg) and lc_ch_cfg_present == other.lc_ch_cfg_present and (not lc_ch_cfg_present or lc_ch_cfg == other.lc_ch_cfg) and - (not ext or - (pdcp_ver_change_r15_present == other.pdcp_ver_change_r15_present and - rlc_cfg_v1530.is_present() == other.rlc_cfg_v1530.is_present() and - (not rlc_cfg_v1530.is_present() or *rlc_cfg_v1530 == *other.rlc_cfg_v1530) and - rlc_bearer_cfg_dupl_r15.is_present() == other.rlc_bearer_cfg_dupl_r15.is_present() and - (not rlc_bearer_cfg_dupl_r15.is_present() or *rlc_bearer_cfg_dupl_r15 == *other.rlc_bearer_cfg_dupl_r15) and - srb_id_v1530_present == other.srb_id_v1530_present and - (not srb_id_v1530_present or srb_id_v1530 == other.srb_id_v1530))); + (not ext or (pdcp_ver_change_r15_present == other.pdcp_ver_change_r15_present and + rlc_cfg_v1530.is_present() == other.rlc_cfg_v1530.is_present() and + (not rlc_cfg_v1530.is_present() or *rlc_cfg_v1530 == *other.rlc_cfg_v1530) and + rlc_bearer_cfg_secondary_r15.is_present() == other.rlc_bearer_cfg_secondary_r15.is_present() and + (not rlc_bearer_cfg_secondary_r15.is_present() or + *rlc_bearer_cfg_secondary_r15 == *other.rlc_bearer_cfg_secondary_r15) and + 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))); } void srb_to_add_mod_s::rlc_cfg_c_::set(types::options e) @@ -7988,8 +8013,8 @@ SRSASN_CODE rr_cfg_ded_s::pack(bit_ref& bref) const group_flags[4] |= neigh_cells_crs_info_r13.is_present(); group_flags[4] |= rlf_timers_and_consts_r13.is_present(); group_flags[5] |= sps_cfg_v1430.is_present(); - group_flags[6] |= srb_to_add_mod_ext_list_r15.is_present(); - group_flags[6] |= srb_to_release_ext_list_r15_present; + group_flags[6] |= srb_to_add_mod_list_ext_r15.is_present(); + group_flags[6] |= srb_to_release_list_ext_r15_present; group_flags[6] |= sps_cfg_v1530.is_present(); group_flags[6] |= crs_intf_mitig_cfg_r15.is_present(); group_flags[6] |= neigh_cells_crs_info_r15.is_present(); @@ -8054,19 +8079,19 @@ SRSASN_CODE rr_cfg_ded_s::pack(bit_ref& bref) const if (group_flags[6]) { varlength_field_pack_guard varlen_scope(bref, false); - HANDLE_CODE(bref.pack(srb_to_add_mod_ext_list_r15.is_present(), 1)); - HANDLE_CODE(bref.pack(srb_to_release_ext_list_r15_present, 1)); + HANDLE_CODE(bref.pack(srb_to_add_mod_list_ext_r15.is_present(), 1)); + HANDLE_CODE(bref.pack(srb_to_release_list_ext_r15_present, 1)); HANDLE_CODE(bref.pack(sps_cfg_v1530.is_present(), 1)); HANDLE_CODE(bref.pack(crs_intf_mitig_cfg_r15.is_present(), 1)); HANDLE_CODE(bref.pack(neigh_cells_crs_info_r15.is_present(), 1)); HANDLE_CODE(bref.pack(drb_to_add_mod_list_r15.is_present(), 1)); HANDLE_CODE(bref.pack(drb_to_release_list_r15.is_present(), 1)); HANDLE_CODE(bref.pack(dummy.is_present(), 1)); - if (srb_to_add_mod_ext_list_r15.is_present()) { - HANDLE_CODE(pack_fixed_seq_of(bref, &(*srb_to_add_mod_ext_list_r15)[0], srb_to_add_mod_ext_list_r15->size())); + if (srb_to_add_mod_list_ext_r15.is_present()) { + HANDLE_CODE(pack_fixed_seq_of(bref, &(*srb_to_add_mod_list_ext_r15)[0], srb_to_add_mod_list_ext_r15->size())); } - if (srb_to_release_ext_list_r15_present) { - HANDLE_CODE(pack_integer(bref, srb_to_release_ext_list_r15, (uint8_t)4u, (uint8_t)4u)); + if (srb_to_release_list_ext_r15_present) { + HANDLE_CODE(pack_integer(bref, srb_to_release_list_ext_r15, (uint8_t)4u, (uint8_t)4u)); } if (sps_cfg_v1530.is_present()) { HANDLE_CODE(sps_cfg_v1530->pack(bref)); @@ -8200,10 +8225,10 @@ SRSASN_CODE rr_cfg_ded_s::unpack(cbit_ref& bref) if (group_flags[6]) { varlength_field_unpack_guard varlen_scope(bref, false); - bool srb_to_add_mod_ext_list_r15_present; - HANDLE_CODE(bref.unpack(srb_to_add_mod_ext_list_r15_present, 1)); - srb_to_add_mod_ext_list_r15.set_present(srb_to_add_mod_ext_list_r15_present); - HANDLE_CODE(bref.unpack(srb_to_release_ext_list_r15_present, 1)); + bool srb_to_add_mod_list_ext_r15_present; + HANDLE_CODE(bref.unpack(srb_to_add_mod_list_ext_r15_present, 1)); + srb_to_add_mod_list_ext_r15.set_present(srb_to_add_mod_list_ext_r15_present); + HANDLE_CODE(bref.unpack(srb_to_release_list_ext_r15_present, 1)); bool sps_cfg_v1530_present; HANDLE_CODE(bref.unpack(sps_cfg_v1530_present, 1)); sps_cfg_v1530.set_present(sps_cfg_v1530_present); @@ -8222,11 +8247,11 @@ SRSASN_CODE rr_cfg_ded_s::unpack(cbit_ref& bref) bool dummy_present; HANDLE_CODE(bref.unpack(dummy_present, 1)); dummy.set_present(dummy_present); - if (srb_to_add_mod_ext_list_r15.is_present()) { - HANDLE_CODE(unpack_fixed_seq_of(&(*srb_to_add_mod_ext_list_r15)[0], bref, srb_to_add_mod_ext_list_r15->size())); + if (srb_to_add_mod_list_ext_r15.is_present()) { + HANDLE_CODE(unpack_fixed_seq_of(&(*srb_to_add_mod_list_ext_r15)[0], bref, srb_to_add_mod_list_ext_r15->size())); } - if (srb_to_release_ext_list_r15_present) { - HANDLE_CODE(unpack_integer(srb_to_release_ext_list_r15, bref, (uint8_t)4u, (uint8_t)4u)); + if (srb_to_release_list_ext_r15_present) { + HANDLE_CODE(unpack_integer(srb_to_release_list_ext_r15, bref, (uint8_t)4u, (uint8_t)4u)); } if (sps_cfg_v1530.is_present()) { HANDLE_CODE(sps_cfg_v1530->unpack(bref)); @@ -8325,15 +8350,15 @@ void rr_cfg_ded_s::to_json(json_writer& j) const j.write_fieldname("sps-Config-v1430"); sps_cfg_v1430->to_json(j); } - if (srb_to_add_mod_ext_list_r15.is_present()) { - j.start_array("srb-ToAddModExtList-r15"); - for (const auto& e1 : *srb_to_add_mod_ext_list_r15) { + if (srb_to_add_mod_list_ext_r15.is_present()) { + j.start_array("srb-ToAddModListExt-r15"); + for (const auto& e1 : *srb_to_add_mod_list_ext_r15) { e1.to_json(j); } j.end_array(); } - if (srb_to_release_ext_list_r15_present) { - j.write_int("srb-ToReleaseExtList-r15", srb_to_release_ext_list_r15); + if (srb_to_release_list_ext_r15_present) { + j.write_int("srb-ToReleaseListExt-r15", srb_to_release_list_ext_r15); } if (sps_cfg_v1530.is_present()) { j.write_fieldname("sps-Config-v1530"); @@ -8488,10 +8513,10 @@ void rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::to_json(json_writer& j) { j.start_obj(); switch (type_) { - case types::crs_intf_mitig_enabled_minus15: + case types::crs_intf_mitig_enabled: break; - case types::crs_intf_mitig_num_prbs_r15: - j.write_str("crs-IntfMitigNumPRBs-r15", c.to_string()); + case types::crs_intf_mitig_num_prbs: + j.write_str("crs-IntfMitigNumPRBs", c.to_string()); break; default: log_invalid_choice_id(type_, "rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_"); @@ -8502,9 +8527,9 @@ SRSASN_CODE rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::pack(bit_ref& bre { type_.pack(bref); switch (type_) { - case types::crs_intf_mitig_enabled_minus15: + case types::crs_intf_mitig_enabled: break; - case types::crs_intf_mitig_num_prbs_r15: + case types::crs_intf_mitig_num_prbs: HANDLE_CODE(c.pack(bref)); break; default: @@ -8519,9 +8544,9 @@ SRSASN_CODE rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::unpack(cbit_ref& e.unpack(bref); set(e); switch (type_) { - case types::crs_intf_mitig_enabled_minus15: + case types::crs_intf_mitig_enabled: break; - case types::crs_intf_mitig_num_prbs_r15: + case types::crs_intf_mitig_num_prbs: HANDLE_CODE(c.unpack(bref)); break; default: @@ -8531,17 +8556,17 @@ SRSASN_CODE rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::unpack(cbit_ref& return SRSASN_SUCCESS; } -std::string rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::crs_intf_mitig_num_prbs_r15_opts::to_string() const +std::string rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::crs_intf_mitig_num_prbs_opts::to_string() const { static const char* options[] = {"n6", "n24"}; return convert_enum_idx( - options, 2, value, "rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::crs_intf_mitig_num_prbs_r15_e_"); + options, 2, value, "rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::crs_intf_mitig_num_prbs_e_"); } -uint8_t rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::crs_intf_mitig_num_prbs_r15_opts::to_number() const +uint8_t rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::crs_intf_mitig_num_prbs_opts::to_number() const { static const uint8_t options[] = {6, 24}; return map_enum_number( - options, 2, value, "rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::crs_intf_mitig_num_prbs_r15_e_"); + options, 2, value, "rr_cfg_ded_s::crs_intf_mitig_cfg_r15_c_::setup_c_::crs_intf_mitig_num_prbs_e_"); } // PDCCH-CandidateReductionValue-r14 ::= ENUMERATED @@ -11390,7 +11415,7 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::pack(bit_ref& bref) const group_flags[6] |= csi_rs_cfg_v1480.is_present(); group_flags[7] |= phys_cfg_ded_stti_r15.is_present(); group_flags[7] |= pdsch_cfg_ded_v1530.is_present(); - group_flags[7] |= cqi_report_cfg_v1530.is_present(); + group_flags[7] |= dummy.is_present(); group_flags[7] |= cqi_report_cfg_scell_r15.is_present(); group_flags[7] |= cqi_short_cfg_scell_r15.is_present(); group_flags[7] |= csi_rs_cfg_v1530.is_present(); @@ -11399,6 +11424,7 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::pack(bit_ref& bref) const group_flags[7] |= pusch_cfg_ded_v1530.is_present(); 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.pack(bref); if (group_flags[0]) { @@ -11612,7 +11638,7 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::pack(bit_ref& bref) const HANDLE_CODE(bref.pack(phys_cfg_ded_stti_r15.is_present(), 1)); HANDLE_CODE(bref.pack(pdsch_cfg_ded_v1530.is_present(), 1)); - HANDLE_CODE(bref.pack(cqi_report_cfg_v1530.is_present(), 1)); + HANDLE_CODE(bref.pack(dummy.is_present(), 1)); HANDLE_CODE(bref.pack(cqi_report_cfg_scell_r15.is_present(), 1)); HANDLE_CODE(bref.pack(cqi_short_cfg_scell_r15.is_present(), 1)); HANDLE_CODE(bref.pack(csi_rs_cfg_v1530.is_present(), 1)); @@ -11627,8 +11653,8 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::pack(bit_ref& bref) const if (pdsch_cfg_ded_v1530.is_present()) { HANDLE_CODE(pdsch_cfg_ded_v1530->pack(bref)); } - if (cqi_report_cfg_v1530.is_present()) { - HANDLE_CODE(cqi_report_cfg_v1530->pack(bref)); + if (dummy.is_present()) { + HANDLE_CODE(dummy->pack(bref)); } if (cqi_report_cfg_scell_r15.is_present()) { HANDLE_CODE(cqi_report_cfg_scell_r15->pack(bref)); @@ -11655,6 +11681,14 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::pack(bit_ref& bref) const HANDLE_CODE(blind_pdsch_repeat_cfg_r15->pack(bref)); } } + if (group_flags[8]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(spucch_cfg_v1550.is_present(), 1)); + if (spucch_cfg_v1550.is_present()) { + HANDLE_CODE(spucch_cfg_v1550->pack(bref)); + } + } } return SRSASN_SUCCESS; } @@ -11714,7 +11748,7 @@ SRSASN_CODE phys_cfg_ded_scell_r10_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]) { @@ -12018,9 +12052,9 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::unpack(cbit_ref& bref) bool pdsch_cfg_ded_v1530_present; HANDLE_CODE(bref.unpack(pdsch_cfg_ded_v1530_present, 1)); pdsch_cfg_ded_v1530.set_present(pdsch_cfg_ded_v1530_present); - bool cqi_report_cfg_v1530_present; - HANDLE_CODE(bref.unpack(cqi_report_cfg_v1530_present, 1)); - cqi_report_cfg_v1530.set_present(cqi_report_cfg_v1530_present); + bool dummy_present; + HANDLE_CODE(bref.unpack(dummy_present, 1)); + dummy.set_present(dummy_present); bool cqi_report_cfg_scell_r15_present; HANDLE_CODE(bref.unpack(cqi_report_cfg_scell_r15_present, 1)); cqi_report_cfg_scell_r15.set_present(cqi_report_cfg_scell_r15_present); @@ -12051,8 +12085,8 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::unpack(cbit_ref& bref) if (pdsch_cfg_ded_v1530.is_present()) { HANDLE_CODE(pdsch_cfg_ded_v1530->unpack(bref)); } - if (cqi_report_cfg_v1530.is_present()) { - HANDLE_CODE(cqi_report_cfg_v1530->unpack(bref)); + if (dummy.is_present()) { + HANDLE_CODE(dummy->unpack(bref)); } if (cqi_report_cfg_scell_r15.is_present()) { HANDLE_CODE(cqi_report_cfg_scell_r15->unpack(bref)); @@ -12079,6 +12113,16 @@ SRSASN_CODE phys_cfg_ded_scell_r10_s::unpack(cbit_ref& bref) HANDLE_CODE(blind_pdsch_repeat_cfg_r15->unpack(bref)); } } + if (group_flags[8]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool spucch_cfg_v1550_present; + HANDLE_CODE(bref.unpack(spucch_cfg_v1550_present, 1)); + spucch_cfg_v1550.set_present(spucch_cfg_v1550_present); + if (spucch_cfg_v1550.is_present()) { + HANDLE_CODE(spucch_cfg_v1550->unpack(bref)); + } + } } return SRSASN_SUCCESS; } @@ -12356,9 +12400,9 @@ void phys_cfg_ded_scell_r10_s::to_json(json_writer& j) const j.write_fieldname("pdsch-ConfigDedicated-v1530"); pdsch_cfg_ded_v1530->to_json(j); } - if (cqi_report_cfg_v1530.is_present()) { - j.write_fieldname("cqi-ReportConfig-v1530"); - cqi_report_cfg_v1530->to_json(j); + if (dummy.is_present()) { + j.write_fieldname("dummy"); + dummy->to_json(j); } if (cqi_report_cfg_scell_r15.is_present()) { j.write_fieldname("cqi-ReportConfigSCell-r15"); @@ -12392,6 +12436,10 @@ void phys_cfg_ded_scell_r10_s::to_json(json_writer& j) const j.write_fieldname("blindPDSCH-Repetition-Config-r15"); blind_pdsch_repeat_cfg_r15->to_json(j); } + if (spucch_cfg_v1550.is_present()) { + j.write_fieldname("spucch-Config-v1550"); + spucch_cfg_v1550->to_json(j); + } } j.end_obj(); } @@ -12551,8 +12599,7 @@ bool phys_cfg_ded_scell_r10_s::operator==(const phys_cfg_ded_scell_r10_s& other) (not phys_cfg_ded_stti_r15.is_present() or *phys_cfg_ded_stti_r15 == *other.phys_cfg_ded_stti_r15) and pdsch_cfg_ded_v1530.is_present() == other.pdsch_cfg_ded_v1530.is_present() and (not pdsch_cfg_ded_v1530.is_present() or *pdsch_cfg_ded_v1530 == *other.pdsch_cfg_ded_v1530) and - cqi_report_cfg_v1530.is_present() == other.cqi_report_cfg_v1530.is_present() and - (not cqi_report_cfg_v1530.is_present() or *cqi_report_cfg_v1530 == *other.cqi_report_cfg_v1530) and + dummy.is_present() == other.dummy.is_present() and (not dummy.is_present() or *dummy == *other.dummy) and cqi_report_cfg_scell_r15.is_present() == other.cqi_report_cfg_scell_r15.is_present() and (not cqi_report_cfg_scell_r15.is_present() or *cqi_report_cfg_scell_r15 == *other.cqi_report_cfg_scell_r15) and @@ -12571,7 +12618,9 @@ bool phys_cfg_ded_scell_r10_s::operator==(const phys_cfg_ded_scell_r10_s& other) (not semi_static_cfi_cfg_r15.is_present() or *semi_static_cfi_cfg_r15 == *other.semi_static_cfi_cfg_r15) and blind_pdsch_repeat_cfg_r15.is_present() == other.blind_pdsch_repeat_cfg_r15.is_present() and (not blind_pdsch_repeat_cfg_r15.is_present() or - *blind_pdsch_repeat_cfg_r15 == *other.blind_pdsch_repeat_cfg_r15))); + *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))); } void phys_cfg_ded_scell_r10_s::pucch_scell_c_::set(types::options e) @@ -13965,7 +14014,8 @@ SRSASN_CODE drb_to_add_mod_scg_r12_s::pack(bit_ref& bref) const group_flags[0] |= rlc_cfg_v1430.is_present(); group_flags[1] |= lc_ch_id_scg_r15_present; group_flags[1] |= rlc_cfg_v1530.is_present(); - group_flags[1] |= rlc_bearer_cfg_dupl_r15.is_present(); + group_flags[1] |= rlc_bearer_cfg_secondary_r15.is_present(); + group_flags[2] |= rlc_cfg_v1560.is_present(); group_flags.pack(bref); if (group_flags[0]) { @@ -13981,15 +14031,23 @@ SRSASN_CODE drb_to_add_mod_scg_r12_s::pack(bit_ref& bref) const HANDLE_CODE(bref.pack(lc_ch_id_scg_r15_present, 1)); HANDLE_CODE(bref.pack(rlc_cfg_v1530.is_present(), 1)); - HANDLE_CODE(bref.pack(rlc_bearer_cfg_dupl_r15.is_present(), 1)); + HANDLE_CODE(bref.pack(rlc_bearer_cfg_secondary_r15.is_present(), 1)); if (lc_ch_id_scg_r15_present) { HANDLE_CODE(pack_integer(bref, lc_ch_id_scg_r15, (uint8_t)32u, (uint8_t)38u)); } if (rlc_cfg_v1530.is_present()) { HANDLE_CODE(rlc_cfg_v1530->pack(bref)); } - if (rlc_bearer_cfg_dupl_r15.is_present()) { - HANDLE_CODE(rlc_bearer_cfg_dupl_r15->pack(bref)); + if (rlc_bearer_cfg_secondary_r15.is_present()) { + HANDLE_CODE(rlc_bearer_cfg_secondary_r15->pack(bref)); + } + } + if (group_flags[2]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(rlc_cfg_v1560.is_present(), 1)); + if (rlc_cfg_v1560.is_present()) { + HANDLE_CODE(rlc_cfg_v1560->pack(bref)); } } } @@ -14022,7 +14080,7 @@ SRSASN_CODE drb_to_add_mod_scg_r12_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]) { @@ -14042,17 +14100,27 @@ SRSASN_CODE drb_to_add_mod_scg_r12_s::unpack(cbit_ref& bref) bool rlc_cfg_v1530_present; HANDLE_CODE(bref.unpack(rlc_cfg_v1530_present, 1)); rlc_cfg_v1530.set_present(rlc_cfg_v1530_present); - bool rlc_bearer_cfg_dupl_r15_present; - HANDLE_CODE(bref.unpack(rlc_bearer_cfg_dupl_r15_present, 1)); - rlc_bearer_cfg_dupl_r15.set_present(rlc_bearer_cfg_dupl_r15_present); + bool rlc_bearer_cfg_secondary_r15_present; + HANDLE_CODE(bref.unpack(rlc_bearer_cfg_secondary_r15_present, 1)); + rlc_bearer_cfg_secondary_r15.set_present(rlc_bearer_cfg_secondary_r15_present); if (lc_ch_id_scg_r15_present) { HANDLE_CODE(unpack_integer(lc_ch_id_scg_r15, bref, (uint8_t)32u, (uint8_t)38u)); } if (rlc_cfg_v1530.is_present()) { HANDLE_CODE(rlc_cfg_v1530->unpack(bref)); } - if (rlc_bearer_cfg_dupl_r15.is_present()) { - HANDLE_CODE(rlc_bearer_cfg_dupl_r15->unpack(bref)); + if (rlc_bearer_cfg_secondary_r15.is_present()) { + HANDLE_CODE(rlc_bearer_cfg_secondary_r15->unpack(bref)); + } + } + if (group_flags[2]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool rlc_cfg_v1560_present; + HANDLE_CODE(bref.unpack(rlc_cfg_v1560_present, 1)); + rlc_cfg_v1560.set_present(rlc_cfg_v1560_present); + if (rlc_cfg_v1560.is_present()) { + HANDLE_CODE(rlc_cfg_v1560->unpack(bref)); } } } @@ -14093,9 +14161,13 @@ void drb_to_add_mod_scg_r12_s::to_json(json_writer& j) const j.write_fieldname("rlc-Config-v1530"); rlc_cfg_v1530->to_json(j); } - if (rlc_bearer_cfg_dupl_r15.is_present()) { - j.write_fieldname("rlc-BearerConfigDupl-r15"); - rlc_bearer_cfg_dupl_r15->to_json(j); + if (rlc_bearer_cfg_secondary_r15.is_present()) { + j.write_fieldname("rlc-BearerConfigSecondary-r15"); + rlc_bearer_cfg_secondary_r15->to_json(j); + } + if (rlc_cfg_v1560.is_present()) { + j.write_fieldname("rlc-Config-v1560"); + rlc_cfg_v1560->to_json(j); } } j.end_obj(); @@ -14677,6 +14749,7 @@ SRSASN_CODE rr_cfg_ded_scg_r12_s::pack(bit_ref& bref) const group_flags[0] |= drb_to_add_mod_list_scg_r15.is_present(); group_flags[1] |= srb_to_add_mod_list_scg_r15.is_present(); group_flags[1] |= srb_to_release_list_scg_r15.is_present(); + group_flags[2] |= drb_to_release_list_scg_r15.is_present(); group_flags.pack(bref); if (group_flags[0]) { @@ -14699,6 +14772,14 @@ SRSASN_CODE rr_cfg_ded_scg_r12_s::pack(bit_ref& bref) const HANDLE_CODE(pack_dyn_seq_of(bref, *srb_to_release_list_scg_r15, 1, 2, integer_packer(1, 2))); } } + if (group_flags[2]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(drb_to_release_list_scg_r15.is_present(), 1)); + if (drb_to_release_list_scg_r15.is_present()) { + HANDLE_CODE(pack_dyn_seq_of(bref, *drb_to_release_list_scg_r15, 1, 15, integer_packer(1, 32))); + } + } } return SRSASN_SUCCESS; } @@ -14720,7 +14801,7 @@ SRSASN_CODE rr_cfg_ded_scg_r12_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]) { @@ -14749,6 +14830,16 @@ SRSASN_CODE rr_cfg_ded_scg_r12_s::unpack(cbit_ref& bref) HANDLE_CODE(unpack_dyn_seq_of(*srb_to_release_list_scg_r15, bref, 1, 2, integer_packer(1, 2))); } } + if (group_flags[2]) { + varlength_field_unpack_guard varlen_scope(bref, false); + + bool drb_to_release_list_scg_r15_present; + HANDLE_CODE(bref.unpack(drb_to_release_list_scg_r15_present, 1)); + drb_to_release_list_scg_r15.set_present(drb_to_release_list_scg_r15_present); + if (drb_to_release_list_scg_r15.is_present()) { + HANDLE_CODE(unpack_dyn_seq_of(*drb_to_release_list_scg_r15, bref, 1, 15, integer_packer(1, 32))); + } + } } return SRSASN_SUCCESS; } @@ -14792,6 +14883,13 @@ void rr_cfg_ded_scg_r12_s::to_json(json_writer& j) const } j.end_array(); } + if (drb_to_release_list_scg_r15.is_present()) { + j.start_array("drb-ToReleaseListSCG-r15"); + for (const auto& e1 : *drb_to_release_list_scg_r15) { + j.write_int(e1); + } + j.end_array(); + } } j.end_obj(); } diff --git a/lib/src/asn1/rrc/si.cc b/lib/src/asn1/rrc/si.cc index ad93b7aac..fdb36111a 100644 --- a/lib/src/asn1/rrc/si.cc +++ b/lib/src/asn1/rrc/si.cc @@ -449,10 +449,10 @@ void sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::to_json(json_writer& j) c { j.start_obj(); switch (type_) { - case types::crs_intf_mitig_enabled_minus15: + case types::crs_intf_mitig_enabled: break; - case types::crs_intf_mitig_num_prbs_r15: - j.write_str("crs-IntfMitigNumPRBs-r15", c.to_string()); + case types::crs_intf_mitig_num_prbs: + j.write_str("crs-IntfMitigNumPRBs", c.to_string()); break; default: log_invalid_choice_id(type_, "sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_"); @@ -463,9 +463,9 @@ SRSASN_CODE sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::pack(bit_ref& bref { type_.pack(bref); switch (type_) { - case types::crs_intf_mitig_enabled_minus15: + case types::crs_intf_mitig_enabled: break; - case types::crs_intf_mitig_num_prbs_r15: + case types::crs_intf_mitig_num_prbs: HANDLE_CODE(c.pack(bref)); break; default: @@ -480,9 +480,9 @@ SRSASN_CODE sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::unpack(cbit_ref& b e.unpack(bref); set(e); switch (type_) { - case types::crs_intf_mitig_enabled_minus15: + case types::crs_intf_mitig_enabled: break; - case types::crs_intf_mitig_num_prbs_r15: + case types::crs_intf_mitig_num_prbs: HANDLE_CODE(c.unpack(bref)); break; default: @@ -492,17 +492,17 @@ SRSASN_CODE sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::unpack(cbit_ref& b return SRSASN_SUCCESS; } -std::string sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_r15_opts::to_string() const +std::string sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_opts::to_string() const { static const char* options[] = {"n6", "n24"}; return convert_enum_idx( - options, 2, value, "sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_r15_e_"); + options, 2, value, "sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_e_"); } -uint8_t sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_r15_opts::to_number() const +uint8_t sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_opts::to_number() const { static const uint8_t options[] = {6, 24}; return map_enum_number( - options, 2, value, "sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_r15_e_"); + options, 2, value, "sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_e_"); } std::string sib_type1_v1530_ies_s::cell_barred_crs_r15_opts::to_string() const @@ -583,6 +583,18 @@ void cell_sel_info_ce1_v1360_s::to_json(json_writer& j) const j.end_obj(); } +// SI-Periodicity-r12 ::= ENUMERATED +std::string si_periodicity_r12_opts::to_string() const +{ + static const char* options[] = {"rf8", "rf16", "rf32", "rf64", "rf128", "rf256", "rf512"}; + return convert_enum_idx(options, 7, value, "si_periodicity_r12_e"); +} +uint16_t si_periodicity_r12_opts::to_number() const +{ + static const uint16_t options[] = {8, 16, 32, 64, 128, 256, 512}; + return map_enum_number(options, 7, value, "si_periodicity_r12_e"); +} + // SystemInformationBlockType1-v1450-IEs ::= SEQUENCE SRSASN_CODE sib_type1_v1450_ies_s::pack(bit_ref& bref) const { @@ -2472,17 +2484,6 @@ void sched_info_s::to_json(json_writer& j) const j.end_obj(); } -std::string sched_info_s::si_periodicity_opts::to_string() const -{ - static const char* options[] = {"rf8", "rf16", "rf32", "rf64", "rf128", "rf256", "rf512"}; - return convert_enum_idx(options, 7, value, "sched_info_s::si_periodicity_e_"); -} -uint16_t sched_info_s::si_periodicity_opts::to_number() const -{ - static const uint16_t options[] = {8, 16, 32, 64, 128, 256, 512}; - return map_enum_number(options, 7, value, "sched_info_s::si_periodicity_e_"); -} - // SystemInformationBlockType1-v920-IEs ::= SEQUENCE SRSASN_CODE sib_type1_v920_ies_s::pack(bit_ref& bref) const { diff --git a/lib/src/asn1/rrc/uecap.cc b/lib/src/asn1/rrc/uecap.cc index 5a91629fc..4339792a9 100644 --- a/lib/src/asn1/rrc/uecap.cc +++ b/lib/src/asn1/rrc/uecap.cc @@ -27,6 +27,43 @@ std::string ca_bw_class_r10_opts::to_string() const return convert_enum_idx(options, 6, value, "ca_bw_class_r10_e"); } +// UECapabilityEnquiry-v1560-IEs ::= SEQUENCE +SRSASN_CODE ue_cap_enquiry_v1560_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(requested_cap_common_r15_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (requested_cap_common_r15_present) { + HANDLE_CODE(requested_cap_common_r15.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_cap_enquiry_v1560_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(requested_cap_common_r15_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (requested_cap_common_r15_present) { + HANDLE_CODE(requested_cap_common_r15.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void ue_cap_enquiry_v1560_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (requested_cap_common_r15_present) { + j.write_str("requestedCapabilityCommon-r15", requested_cap_common_r15.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + // BandIndication-r14 ::= SEQUENCE SRSASN_CODE band_ind_r14_s::pack(bit_ref& bref) const { @@ -63,6 +100,48 @@ void band_ind_r14_s::to_json(json_writer& j) const j.end_obj(); } +// UECapabilityEnquiry-v1550-IEs ::= SEQUENCE +SRSASN_CODE ue_cap_enquiry_v1550_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(requested_cap_nr_r15_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (requested_cap_nr_r15_present) { + HANDLE_CODE(requested_cap_nr_r15.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_cap_enquiry_v1550_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(requested_cap_nr_r15_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (requested_cap_nr_r15_present) { + HANDLE_CODE(requested_cap_nr_r15.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void ue_cap_enquiry_v1550_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (requested_cap_nr_r15_present) { + j.write_str("requestedCapabilityNR-r15", requested_cap_nr_r15.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + // UECapabilityEnquiry-v1530-IEs ::= SEQUENCE SRSASN_CODE ue_cap_enquiry_v1530_ies_s::pack(bit_ref& bref) const { @@ -70,6 +149,10 @@ SRSASN_CODE ue_cap_enquiry_v1530_ies_s::pack(bit_ref& bref) const HANDLE_CODE(bref.pack(eutra_nr_only_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 ue_cap_enquiry_v1530_ies_s::unpack(cbit_ref& bref) @@ -78,6 +161,10 @@ SRSASN_CODE ue_cap_enquiry_v1530_ies_s::unpack(cbit_ref& bref) HANDLE_CODE(bref.unpack(eutra_nr_only_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 ue_cap_enquiry_v1530_ies_s::to_json(json_writer& j) const @@ -91,8 +178,7 @@ void ue_cap_enquiry_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(); } @@ -2722,8 +2808,8 @@ void mimo_ca_params_per_bo_bc_v1430_s::to_json(json_writer& j) const j.end_obj(); } -// RetuningTimeInfo-r14 ::= SEQUENCE -SRSASN_CODE retuning_time_info_r14_s::pack(bit_ref& bref) const +// SRS-CapabilityPerBandPair-r14 ::= SEQUENCE +SRSASN_CODE srs_cap_per_band_pair_r14_s::pack(bit_ref& bref) const { HANDLE_CODE(bref.pack(retuning_info.rf_retuning_time_dl_r14_present, 1)); HANDLE_CODE(bref.pack(retuning_info.rf_retuning_time_ul_r14_present, 1)); @@ -2736,7 +2822,7 @@ SRSASN_CODE retuning_time_info_r14_s::pack(bit_ref& bref) const return SRSASN_SUCCESS; } -SRSASN_CODE retuning_time_info_r14_s::unpack(cbit_ref& bref) +SRSASN_CODE srs_cap_per_band_pair_r14_s::unpack(cbit_ref& bref) { HANDLE_CODE(bref.unpack(retuning_info.rf_retuning_time_dl_r14_present, 1)); HANDLE_CODE(bref.unpack(retuning_info.rf_retuning_time_ul_r14_present, 1)); @@ -2749,7 +2835,7 @@ SRSASN_CODE retuning_time_info_r14_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void retuning_time_info_r14_s::to_json(json_writer& j) const +void srs_cap_per_band_pair_r14_s::to_json(json_writer& j) const { j.start_obj(); j.write_fieldname("retuningInfo"); @@ -2764,7 +2850,7 @@ void retuning_time_info_r14_s::to_json(json_writer& j) const j.end_obj(); } -std::string retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_opts::to_string() const +std::string srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_opts::to_string() const { static const char* options[] = {"n0", "n0dot5", @@ -2782,21 +2868,24 @@ std::string retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_ "n6dot5", "n7", "spare1"}; - return convert_enum_idx(options, 16, value, "retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_e_"); + return convert_enum_idx( + options, 16, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_e_"); } -float retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_opts::to_number() const +float srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_opts::to_number() const { static const float options[] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0}; - return map_enum_number(options, 15, value, "retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_e_"); + return map_enum_number( + options, 15, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_e_"); } -std::string retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_opts::to_number_string() const +std::string srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_opts::to_number_string() const { static const char* options[] = { "0", "0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4", "4.5", "5", "5.5", "6", "6.5", "7"}; - return convert_enum_idx(options, 16, value, "retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_e_"); + return convert_enum_idx( + options, 16, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_e_"); } -std::string retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_opts::to_string() const +std::string srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_opts::to_string() const { static const char* options[] = {"n0", "n0dot5", @@ -2814,18 +2903,21 @@ std::string retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_ "n6dot5", "n7", "spare1"}; - return convert_enum_idx(options, 16, value, "retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_e_"); + return convert_enum_idx( + options, 16, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_e_"); } -float retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_opts::to_number() const +float srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_opts::to_number() const { static const float options[] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0}; - return map_enum_number(options, 15, value, "retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_e_"); + return map_enum_number( + options, 15, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_e_"); } -std::string retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_opts::to_number_string() const +std::string srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_opts::to_number_string() const { static const char* options[] = { "0", "0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4", "4.5", "5", "5.5", "6", "6.5", "7"}; - return convert_enum_idx(options, 16, value, "retuning_time_info_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_e_"); + return convert_enum_idx( + options, 16, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_e_"); } // UL-256QAM-perCC-Info-r14 ::= SEQUENCE @@ -2856,7 +2948,7 @@ SRSASN_CODE band_params_v1430_s::pack(bit_ref& bref) const HANDLE_CODE(bref.pack(band_params_dl_v1430_present, 1)); HANDLE_CODE(bref.pack(ul_minus256_qam_r14_present, 1)); HANDLE_CODE(bref.pack(ul_minus256_qam_per_cc_info_list_r14_present, 1)); - HANDLE_CODE(bref.pack(retuning_time_info_band_list_r14_present, 1)); + HANDLE_CODE(bref.pack(srs_cap_per_band_pair_list_r14_present, 1)); if (band_params_dl_v1430_present) { HANDLE_CODE(band_params_dl_v1430.pack(bref)); @@ -2864,8 +2956,8 @@ SRSASN_CODE band_params_v1430_s::pack(bit_ref& bref) const if (ul_minus256_qam_per_cc_info_list_r14_present) { HANDLE_CODE(pack_dyn_seq_of(bref, ul_minus256_qam_per_cc_info_list_r14, 2, 32)); } - if (retuning_time_info_band_list_r14_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, retuning_time_info_band_list_r14, 1, 64)); + if (srs_cap_per_band_pair_list_r14_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, srs_cap_per_band_pair_list_r14, 1, 64)); } return SRSASN_SUCCESS; @@ -2875,7 +2967,7 @@ SRSASN_CODE band_params_v1430_s::unpack(cbit_ref& bref) HANDLE_CODE(bref.unpack(band_params_dl_v1430_present, 1)); HANDLE_CODE(bref.unpack(ul_minus256_qam_r14_present, 1)); HANDLE_CODE(bref.unpack(ul_minus256_qam_per_cc_info_list_r14_present, 1)); - HANDLE_CODE(bref.unpack(retuning_time_info_band_list_r14_present, 1)); + HANDLE_CODE(bref.unpack(srs_cap_per_band_pair_list_r14_present, 1)); if (band_params_dl_v1430_present) { HANDLE_CODE(band_params_dl_v1430.unpack(bref)); @@ -2883,8 +2975,8 @@ SRSASN_CODE band_params_v1430_s::unpack(cbit_ref& bref) if (ul_minus256_qam_per_cc_info_list_r14_present) { HANDLE_CODE(unpack_dyn_seq_of(ul_minus256_qam_per_cc_info_list_r14, bref, 2, 32)); } - if (retuning_time_info_band_list_r14_present) { - HANDLE_CODE(unpack_dyn_seq_of(retuning_time_info_band_list_r14, bref, 1, 64)); + if (srs_cap_per_band_pair_list_r14_present) { + HANDLE_CODE(unpack_dyn_seq_of(srs_cap_per_band_pair_list_r14, bref, 1, 64)); } return SRSASN_SUCCESS; @@ -2906,9 +2998,9 @@ void band_params_v1430_s::to_json(json_writer& j) const } j.end_array(); } - if (retuning_time_info_band_list_r14_present) { - j.start_array("retuningTimeInfoBandList-r14"); - for (const auto& e1 : retuning_time_info_band_list_r14) { + if (srs_cap_per_band_pair_list_r14_present) { + j.start_array("srs-CapabilityPerBandPairList-r14"); + for (const auto& e1 : srs_cap_per_band_pair_list_r14) { e1.to_json(j); } j.end_array(); @@ -3223,6 +3315,101 @@ void band_combination_params_v1470_s::to_json(json_writer& j) const j.end_obj(); } +// SRS-CapabilityPerBandPair-v14b0 ::= SEQUENCE +SRSASN_CODE srs_cap_per_band_pair_v14b0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(srs_flex_timing_r14_present, 1)); + HANDLE_CODE(bref.pack(srs_harq_ref_cfg_r14_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE srs_cap_per_band_pair_v14b0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(srs_flex_timing_r14_present, 1)); + HANDLE_CODE(bref.unpack(srs_harq_ref_cfg_r14_present, 1)); + + return SRSASN_SUCCESS; +} +void srs_cap_per_band_pair_v14b0_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (srs_flex_timing_r14_present) { + j.write_str("srs-FlexibleTiming-r14", "supported"); + } + if (srs_harq_ref_cfg_r14_present) { + j.write_str("srs-HARQ-ReferenceConfig-r14", "supported"); + } + j.end_obj(); +} + +// BandParameters-v14b0 ::= SEQUENCE +SRSASN_CODE band_params_v14b0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(srs_cap_per_band_pair_list_v14b0_present, 1)); + + if (srs_cap_per_band_pair_list_v14b0_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, srs_cap_per_band_pair_list_v14b0, 1, 64)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE band_params_v14b0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(srs_cap_per_band_pair_list_v14b0_present, 1)); + + if (srs_cap_per_band_pair_list_v14b0_present) { + HANDLE_CODE(unpack_dyn_seq_of(srs_cap_per_band_pair_list_v14b0, bref, 1, 64)); + } + + return SRSASN_SUCCESS; +} +void band_params_v14b0_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (srs_cap_per_band_pair_list_v14b0_present) { + j.start_array("srs-CapabilityPerBandPairList-v14b0"); + for (const auto& e1 : srs_cap_per_band_pair_list_v14b0) { + e1.to_json(j); + } + j.end_array(); + } + j.end_obj(); +} + +// BandCombinationParameters-v14b0 ::= SEQUENCE +SRSASN_CODE band_combination_params_v14b0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(band_param_list_v14b0_present, 1)); + + if (band_param_list_v14b0_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, band_param_list_v14b0, 1, 64)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE band_combination_params_v14b0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(band_param_list_v14b0_present, 1)); + + if (band_param_list_v14b0_present) { + HANDLE_CODE(unpack_dyn_seq_of(band_param_list_v14b0, bref, 1, 64)); + } + + return SRSASN_SUCCESS; +} +void band_combination_params_v14b0_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (band_param_list_v14b0_present) { + j.start_array("bandParameterList-v14b0"); + for (const auto& e1 : band_param_list_v14b0) { + e1.to_json(j); + } + j.end_array(); + } + j.end_obj(); +} + // DL-UL-CCs-r15 ::= SEQUENCE SRSASN_CODE dl_ul_ccs_r15_s::pack(bit_ref& bref) const { @@ -4092,6 +4279,28 @@ void feature_set_ul_r15_s::to_json(json_writer& j) const j.end_obj(); } +// FeatureSetDL-v1550 ::= SEQUENCE +SRSASN_CODE feature_set_dl_v1550_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(dl_minus1024_qam_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE feature_set_dl_v1550_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(dl_minus1024_qam_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void feature_set_dl_v1550_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (dl_minus1024_qam_r15_present) { + j.write_str("dl-1024QAM-r15", "supported"); + } + j.end_obj(); +} + // FeatureSetsEUTRA-r15 ::= SEQUENCE SRSASN_CODE feature_sets_eutra_r15_s::pack(bit_ref& bref) const { @@ -4114,6 +4323,20 @@ SRSASN_CODE feature_sets_eutra_r15_s::pack(bit_ref& bref) const HANDLE_CODE(pack_dyn_seq_of(bref, feature_sets_ul_per_cc_r15, 1, 32)); } + if (ext) { + ext_groups_packer_guard group_flags; + group_flags[0] |= feature_sets_dl_v1550.is_present(); + group_flags.pack(bref); + + if (group_flags[0]) { + varlength_field_pack_guard varlen_scope(bref, false); + + HANDLE_CODE(bref.pack(feature_sets_dl_v1550.is_present(), 1)); + if (feature_sets_dl_v1550.is_present()) { + HANDLE_CODE(pack_dyn_seq_of(bref, *feature_sets_dl_v1550, 1, 256)); + } + } + } return SRSASN_SUCCESS; } SRSASN_CODE feature_sets_eutra_r15_s::unpack(cbit_ref& bref) @@ -4137,6 +4360,21 @@ SRSASN_CODE feature_sets_eutra_r15_s::unpack(cbit_ref& bref) HANDLE_CODE(unpack_dyn_seq_of(feature_sets_ul_per_cc_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 feature_sets_dl_v1550_present; + HANDLE_CODE(bref.unpack(feature_sets_dl_v1550_present, 1)); + feature_sets_dl_v1550.set_present(feature_sets_dl_v1550_present); + if (feature_sets_dl_v1550.is_present()) { + HANDLE_CODE(unpack_dyn_seq_of(*feature_sets_dl_v1550, bref, 1, 256)); + } + } + } return SRSASN_SUCCESS; } void feature_sets_eutra_r15_s::to_json(json_writer& j) const @@ -4170,6 +4408,15 @@ void feature_sets_eutra_r15_s::to_json(json_writer& j) const } j.end_array(); } + if (ext) { + if (feature_sets_dl_v1550.is_present()) { + j.start_array("featureSetsDL-v1550"); + for (const auto& e1 : *feature_sets_dl_v1550) { + e1.to_json(j); + } + j.end_array(); + } + } j.end_obj(); } @@ -7593,6 +7840,70 @@ void rf_params_v1470_s::to_json(json_writer& j) const j.end_obj(); } +// RF-Parameters-v14b0 ::= SEQUENCE +SRSASN_CODE rf_params_v14b0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(supported_band_combination_v14b0_present, 1)); + HANDLE_CODE(bref.pack(supported_band_combination_add_v14b0_present, 1)); + HANDLE_CODE(bref.pack(supported_band_combination_reduced_v14b0_present, 1)); + + if (supported_band_combination_v14b0_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_v14b0, 1, 128)); + } + if (supported_band_combination_add_v14b0_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_add_v14b0, 1, 256)); + } + if (supported_band_combination_reduced_v14b0_present) { + HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_reduced_v14b0, 1, 384)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rf_params_v14b0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(supported_band_combination_v14b0_present, 1)); + HANDLE_CODE(bref.unpack(supported_band_combination_add_v14b0_present, 1)); + HANDLE_CODE(bref.unpack(supported_band_combination_reduced_v14b0_present, 1)); + + if (supported_band_combination_v14b0_present) { + HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_v14b0, bref, 1, 128)); + } + if (supported_band_combination_add_v14b0_present) { + HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_add_v14b0, bref, 1, 256)); + } + if (supported_band_combination_reduced_v14b0_present) { + HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_reduced_v14b0, bref, 1, 384)); + } + + return SRSASN_SUCCESS; +} +void rf_params_v14b0_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (supported_band_combination_v14b0_present) { + j.start_array("supportedBandCombination-v14b0"); + for (const auto& e1 : supported_band_combination_v14b0) { + e1.to_json(j); + } + j.end_array(); + } + if (supported_band_combination_add_v14b0_present) { + j.start_array("supportedBandCombinationAdd-v14b0"); + for (const auto& e1 : supported_band_combination_add_v14b0) { + e1.to_json(j); + } + j.end_array(); + } + if (supported_band_combination_reduced_v14b0_present) { + j.start_array("supportedBandCombinationReduced-v14b0"); + for (const auto& e1 : supported_band_combination_reduced_v14b0) { + e1.to_json(j); + } + j.end_array(); + } + j.end_obj(); +} + // RF-Parameters-v1530 ::= SEQUENCE SRSASN_CODE rf_params_v1530_s::pack(bit_ref& bref) const { @@ -8100,144 +8411,637 @@ std::string 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_"); } -// EUTRA-5GC-Parameters-r15 ::= SEQUENCE -SRSASN_CODE eutra_minus5_gc_params_r15_s::pack(bit_ref& bref) const +// NeighCellSI-AcquisitionParameters-v15a0 ::= SEQUENCE +SRSASN_CODE neigh_cell_si_acquisition_params_v15a0_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(eutra_minus5_gc_r15_present, 1)); - HANDLE_CODE(bref.pack(eutra_epc_ho_eutra_minus5_gc_r15_present, 1)); - HANDLE_CODE(bref.pack(ho_eutra_minus5_gc_fdd_tdd_r15_present, 1)); - HANDLE_CODE(bref.pack(ho_interfreq_eutra_minus5_gc_r15_present, 1)); - HANDLE_CODE(bref.pack(ims_voice_over_mcg_bearer_eutra_minus5_gc_r15_present, 1)); - HANDLE_CODE(bref.pack(inactive_state_r15_present, 1)); - HANDLE_CODE(bref.pack(reflective_qos_r15_present, 1)); + HANDLE_CODE(bref.pack(eutra_cgi_report_nedc_r15_present, 1)); return SRSASN_SUCCESS; } -SRSASN_CODE eutra_minus5_gc_params_r15_s::unpack(cbit_ref& bref) +SRSASN_CODE neigh_cell_si_acquisition_params_v15a0_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(eutra_minus5_gc_r15_present, 1)); - HANDLE_CODE(bref.unpack(eutra_epc_ho_eutra_minus5_gc_r15_present, 1)); - HANDLE_CODE(bref.unpack(ho_eutra_minus5_gc_fdd_tdd_r15_present, 1)); - HANDLE_CODE(bref.unpack(ho_interfreq_eutra_minus5_gc_r15_present, 1)); - HANDLE_CODE(bref.unpack(ims_voice_over_mcg_bearer_eutra_minus5_gc_r15_present, 1)); - HANDLE_CODE(bref.unpack(inactive_state_r15_present, 1)); - HANDLE_CODE(bref.unpack(reflective_qos_r15_present, 1)); + HANDLE_CODE(bref.unpack(eutra_cgi_report_nedc_r15_present, 1)); return SRSASN_SUCCESS; } -void eutra_minus5_gc_params_r15_s::to_json(json_writer& j) const +void neigh_cell_si_acquisition_params_v15a0_s::to_json(json_writer& j) const { j.start_obj(); - if (eutra_minus5_gc_r15_present) { - j.write_str("eutra-5GC-r15", "supported"); - } - if (eutra_epc_ho_eutra_minus5_gc_r15_present) { - j.write_str("eutra-EPC-HO-EUTRA-5GC-r15", "supported"); - } - if (ho_eutra_minus5_gc_fdd_tdd_r15_present) { - j.write_str("ho-EUTRA-5GC-FDD-TDD-r15", "supported"); - } - if (ho_interfreq_eutra_minus5_gc_r15_present) { - j.write_str("ho-InterfreqEUTRA-5GC-r15", "supported"); - } - if (ims_voice_over_mcg_bearer_eutra_minus5_gc_r15_present) { - j.write_str("ims-VoiceOverMCG-BearerEUTRA-5GC-r15", "supported"); - } - if (inactive_state_r15_present) { - j.write_str("inactiveState-r15", "supported"); - } - if (reflective_qos_r15_present) { - j.write_str("reflectiveQoS-r15", "supported"); + if (eutra_cgi_report_nedc_r15_present) { + j.write_str("eutra-CGI-Reporting-NEDC-r15", "supported"); } j.end_obj(); } -// NeighCellSI-AcquisitionParameters-v1530 ::= SEQUENCE -SRSASN_CODE neigh_cell_si_acquisition_params_v1530_s::pack(bit_ref& bref) const +// PhyLayerParameters-v1540 ::= SEQUENCE +SRSASN_CODE phy_layer_params_v1540_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(report_cgi_nr_en_dc_r15_present, 1)); - HANDLE_CODE(bref.pack(report_cgi_nr_no_en_dc_r15_present, 1)); + 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)); + + if (stti_spt_cap_v1540_present) { + } return SRSASN_SUCCESS; } -SRSASN_CODE neigh_cell_si_acquisition_params_v1530_s::unpack(cbit_ref& bref) +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)); + + if (stti_spt_cap_v1540_present) { + } + + return SRSASN_SUCCESS; +} +void phy_layer_params_v1540_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (stti_spt_cap_v1540_present) { + j.write_fieldname("stti-SPT-Capabilities-v1540"); + j.start_obj(); + 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 (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(); +} + +// EUTRA-5GC-Parameters-r15 ::= SEQUENCE +SRSASN_CODE eutra_minus5_gc_params_r15_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(eutra_minus5_gc_r15_present, 1)); + HANDLE_CODE(bref.pack(eutra_epc_ho_eutra_minus5_gc_r15_present, 1)); + HANDLE_CODE(bref.pack(ho_eutra_minus5_gc_fdd_tdd_r15_present, 1)); + HANDLE_CODE(bref.pack(ho_interfreq_eutra_minus5_gc_r15_present, 1)); + HANDLE_CODE(bref.pack(ims_voice_over_mcg_bearer_eutra_minus5_gc_r15_present, 1)); + HANDLE_CODE(bref.pack(inactive_state_r15_present, 1)); + HANDLE_CODE(bref.pack(reflective_qos_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE eutra_minus5_gc_params_r15_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(eutra_minus5_gc_r15_present, 1)); + HANDLE_CODE(bref.unpack(eutra_epc_ho_eutra_minus5_gc_r15_present, 1)); + HANDLE_CODE(bref.unpack(ho_eutra_minus5_gc_fdd_tdd_r15_present, 1)); + HANDLE_CODE(bref.unpack(ho_interfreq_eutra_minus5_gc_r15_present, 1)); + HANDLE_CODE(bref.unpack(ims_voice_over_mcg_bearer_eutra_minus5_gc_r15_present, 1)); + HANDLE_CODE(bref.unpack(inactive_state_r15_present, 1)); + HANDLE_CODE(bref.unpack(reflective_qos_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void eutra_minus5_gc_params_r15_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (eutra_minus5_gc_r15_present) { + j.write_str("eutra-5GC-r15", "supported"); + } + if (eutra_epc_ho_eutra_minus5_gc_r15_present) { + j.write_str("eutra-EPC-HO-EUTRA-5GC-r15", "supported"); + } + if (ho_eutra_minus5_gc_fdd_tdd_r15_present) { + j.write_str("ho-EUTRA-5GC-FDD-TDD-r15", "supported"); + } + if (ho_interfreq_eutra_minus5_gc_r15_present) { + j.write_str("ho-InterfreqEUTRA-5GC-r15", "supported"); + } + if (ims_voice_over_mcg_bearer_eutra_minus5_gc_r15_present) { + j.write_str("ims-VoiceOverMCG-BearerEUTRA-5GC-r15", "supported"); + } + if (inactive_state_r15_present) { + j.write_str("inactiveState-r15", "supported"); + } + if (reflective_qos_r15_present) { + j.write_str("reflectiveQoS-r15", "supported"); + } + j.end_obj(); +} + +// UE-EUTRA-CapabilityAddXDD-Mode-v15a0 ::= SEQUENCE +SRSASN_CODE ue_eutra_cap_add_xdd_mode_v15a0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(phy_layer_params_v1530_present, 1)); + HANDLE_CODE(bref.pack(phy_layer_params_v1540_present, 1)); + HANDLE_CODE(bref.pack(phy_layer_params_v1550_present, 1)); + + if (phy_layer_params_v1530_present) { + HANDLE_CODE(phy_layer_params_v1530.pack(bref)); + } + if (phy_layer_params_v1540_present) { + HANDLE_CODE(phy_layer_params_v1540.pack(bref)); + } + if (phy_layer_params_v1550_present) { + HANDLE_CODE(phy_layer_params_v1550.pack(bref)); + } + HANDLE_CODE(neigh_cell_si_acquisition_params_v15a0.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_eutra_cap_add_xdd_mode_v15a0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(phy_layer_params_v1530_present, 1)); + HANDLE_CODE(bref.unpack(phy_layer_params_v1540_present, 1)); + HANDLE_CODE(bref.unpack(phy_layer_params_v1550_present, 1)); + + if (phy_layer_params_v1530_present) { + HANDLE_CODE(phy_layer_params_v1530.unpack(bref)); + } + if (phy_layer_params_v1540_present) { + HANDLE_CODE(phy_layer_params_v1540.unpack(bref)); + } + if (phy_layer_params_v1550_present) { + HANDLE_CODE(phy_layer_params_v1550.unpack(bref)); + } + HANDLE_CODE(neigh_cell_si_acquisition_params_v15a0.unpack(bref)); + + return SRSASN_SUCCESS; +} +void ue_eutra_cap_add_xdd_mode_v15a0_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (phy_layer_params_v1530_present) { + j.write_fieldname("phyLayerParameters-v1530"); + phy_layer_params_v1530.to_json(j); + } + if (phy_layer_params_v1540_present) { + j.write_fieldname("phyLayerParameters-v1540"); + phy_layer_params_v1540.to_json(j); + } + if (phy_layer_params_v1550_present) { + j.write_fieldname("phyLayerParameters-v1550"); + phy_layer_params_v1550.to_json(j); + } + j.write_fieldname("neighCellSI-AcquisitionParameters-v15a0"); + neigh_cell_si_acquisition_params_v15a0.to_json(j); + j.end_obj(); +} + +// IRAT-ParametersNR-v1570 ::= SEQUENCE +SRSASN_CODE irat_params_nr_v1570_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(ss_sinr_meas_nr_fr1_r15_present, 1)); + HANDLE_CODE(bref.pack(ss_sinr_meas_nr_fr2_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE irat_params_nr_v1570_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(ss_sinr_meas_nr_fr1_r15_present, 1)); + HANDLE_CODE(bref.unpack(ss_sinr_meas_nr_fr2_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void irat_params_nr_v1570_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (ss_sinr_meas_nr_fr1_r15_present) { + j.write_str("ss-SINR-Meas-NR-FR1-r15", "supported"); + } + if (ss_sinr_meas_nr_fr2_r15_present) { + j.write_str("ss-SINR-Meas-NR-FR2-r15", "supported"); + } + j.end_obj(); +} + +// PDCP-ParametersNR-v1560 ::= SEQUENCE +SRSASN_CODE pdcp_params_nr_v1560_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(ims_vo_nr_pdcp_scg_ngendc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE pdcp_params_nr_v1560_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(ims_vo_nr_pdcp_scg_ngendc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void pdcp_params_nr_v1560_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (ims_vo_nr_pdcp_scg_ngendc_r15_present) { + j.write_str("ims-VoNR-PDCP-SCG-NGENDC-r15", "supported"); + } + j.end_obj(); +} + +// RF-Parameters-v1570 ::= SEQUENCE +SRSASN_CODE rf_params_v1570_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(dl_minus1024_qam_scaling_factor_r15.pack(bref)); + HANDLE_CODE(pack_integer(bref, dl_minus1024_qam_total_weighted_layers_r15, (uint8_t)0u, (uint8_t)10u)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE rf_params_v1570_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(dl_minus1024_qam_scaling_factor_r15.unpack(bref)); + HANDLE_CODE(unpack_integer(dl_minus1024_qam_total_weighted_layers_r15, bref, (uint8_t)0u, (uint8_t)10u)); + + return SRSASN_SUCCESS; +} +void rf_params_v1570_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("dl-1024QAM-ScalingFactor-r15", dl_minus1024_qam_scaling_factor_r15.to_string()); + j.write_int("dl-1024QAM-TotalWeightedLayers-r15", dl_minus1024_qam_total_weighted_layers_r15); + j.end_obj(); +} + +std::string rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_opts::to_string() const +{ + static const char* options[] = {"v1", "v1dot2", "v1dot25"}; + return convert_enum_idx(options, 3, value, "rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_e_"); +} +float rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_opts::to_number() const +{ + static const float options[] = {1.0, 1.2, 1.25}; + return map_enum_number(options, 3, value, "rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_e_"); +} +std::string rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_opts::to_number_string() const +{ + static const char* options[] = {"1", "1.2", "1.25"}; + return convert_enum_idx(options, 3, value, "rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_e_"); +} + +// UE-EUTRA-Capability-v15a0-IEs ::= SEQUENCE +SRSASN_CODE ue_eutra_cap_v15a0_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(eutra_minus5_gc_params_r15_present, 1)); + HANDLE_CODE(bref.pack(fdd_add_ue_eutra_cap_v15a0_present, 1)); + HANDLE_CODE(bref.pack(tdd_add_ue_eutra_cap_v15a0_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + HANDLE_CODE(neigh_cell_si_acquisition_params_v15a0.pack(bref)); + if (eutra_minus5_gc_params_r15_present) { + HANDLE_CODE(eutra_minus5_gc_params_r15.pack(bref)); + } + if (fdd_add_ue_eutra_cap_v15a0_present) { + HANDLE_CODE(fdd_add_ue_eutra_cap_v15a0.pack(bref)); + } + if (tdd_add_ue_eutra_cap_v15a0_present) { + HANDLE_CODE(tdd_add_ue_eutra_cap_v15a0.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_eutra_cap_v15a0_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(eutra_minus5_gc_params_r15_present, 1)); + HANDLE_CODE(bref.unpack(fdd_add_ue_eutra_cap_v15a0_present, 1)); + HANDLE_CODE(bref.unpack(tdd_add_ue_eutra_cap_v15a0_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + HANDLE_CODE(neigh_cell_si_acquisition_params_v15a0.unpack(bref)); + if (eutra_minus5_gc_params_r15_present) { + HANDLE_CODE(eutra_minus5_gc_params_r15.unpack(bref)); + } + if (fdd_add_ue_eutra_cap_v15a0_present) { + HANDLE_CODE(fdd_add_ue_eutra_cap_v15a0.unpack(bref)); + } + if (tdd_add_ue_eutra_cap_v15a0_present) { + HANDLE_CODE(tdd_add_ue_eutra_cap_v15a0.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void ue_eutra_cap_v15a0_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("neighCellSI-AcquisitionParameters-v15a0"); + neigh_cell_si_acquisition_params_v15a0.to_json(j); + if (eutra_minus5_gc_params_r15_present) { + j.write_fieldname("eutra-5GC-Parameters-r15"); + eutra_minus5_gc_params_r15.to_json(j); + } + if (fdd_add_ue_eutra_cap_v15a0_present) { + j.write_fieldname("fdd-Add-UE-EUTRA-Capabilities-v15a0"); + fdd_add_ue_eutra_cap_v15a0.to_json(j); + } + if (tdd_add_ue_eutra_cap_v15a0_present) { + j.write_fieldname("tdd-Add-UE-EUTRA-Capabilities-v15a0"); + tdd_add_ue_eutra_cap_v15a0.to_json(j); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + +// IRAT-ParametersNR-v1560 ::= SEQUENCE +SRSASN_CODE irat_params_nr_v1560_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(ng_en_dc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE irat_params_nr_v1560_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(ng_en_dc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void irat_params_nr_v1560_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (ng_en_dc_r15_present) { + j.write_str("ng-EN-DC-r15", "supported"); + } + j.end_obj(); +} + +// NeighCellSI-AcquisitionParameters-v1550 ::= SEQUENCE +SRSASN_CODE neigh_cell_si_acquisition_params_v1550_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(eutra_cgi_report_endc_r15_present, 1)); + HANDLE_CODE(bref.pack(utra_geran_cgi_report_endc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE neigh_cell_si_acquisition_params_v1550_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(eutra_cgi_report_endc_r15_present, 1)); + HANDLE_CODE(bref.unpack(utra_geran_cgi_report_endc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void neigh_cell_si_acquisition_params_v1550_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (eutra_cgi_report_endc_r15_present) { + j.write_str("eutra-CGI-Reporting-ENDC-r15", "supported"); + } + if (utra_geran_cgi_report_endc_r15_present) { + j.write_str("utra-GERAN-CGI-Reporting-ENDC-r15", "supported"); + } + j.end_obj(); +} + +// UE-EUTRA-Capability-v1570-IEs ::= SEQUENCE +SRSASN_CODE ue_eutra_cap_v1570_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(rf_params_v1570_present, 1)); + HANDLE_CODE(bref.pack(irat_params_nr_v1570_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (rf_params_v1570_present) { + HANDLE_CODE(rf_params_v1570.pack(bref)); + } + if (irat_params_nr_v1570_present) { + HANDLE_CODE(irat_params_nr_v1570.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_eutra_cap_v1570_ies_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(report_cgi_nr_en_dc_r15_present, 1)); - HANDLE_CODE(bref.unpack(report_cgi_nr_no_en_dc_r15_present, 1)); + HANDLE_CODE(bref.unpack(rf_params_v1570_present, 1)); + HANDLE_CODE(bref.unpack(irat_params_nr_v1570_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (rf_params_v1570_present) { + HANDLE_CODE(rf_params_v1570.unpack(bref)); + } + if (irat_params_nr_v1570_present) { + HANDLE_CODE(irat_params_nr_v1570.unpack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } return SRSASN_SUCCESS; } -void neigh_cell_si_acquisition_params_v1530_s::to_json(json_writer& j) const +void ue_eutra_cap_v1570_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (report_cgi_nr_en_dc_r15_present) { - j.write_str("reportCGI-NR-EN-DC-r15", "supported"); + if (rf_params_v1570_present) { + j.write_fieldname("rf-Parameters-v1570"); + rf_params_v1570.to_json(j); } - if (report_cgi_nr_no_en_dc_r15_present) { - j.write_str("reportCGI-NR-NoEN-DC-r15", "supported"); + if (irat_params_nr_v1570_present) { + j.write_fieldname("irat-ParametersNR-v1570"); + irat_params_nr_v1570.to_json(j); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); } j.end_obj(); } -// Other-Parameters-v1540 ::= SEQUENCE -SRSASN_CODE other_params_v1540_s::pack(bit_ref& bref) const +// UE-EUTRA-CapabilityAddXDD-Mode-v1560 ::= SEQUENCE +SRSASN_CODE ue_eutra_cap_add_xdd_mode_v1560_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(in_dev_coex_ind_endc_r15_present, 1)); + HANDLE_CODE(pdcp_params_nr_v1560.pack(bref)); return SRSASN_SUCCESS; } -SRSASN_CODE other_params_v1540_s::unpack(cbit_ref& bref) +SRSASN_CODE ue_eutra_cap_add_xdd_mode_v1560_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(in_dev_coex_ind_endc_r15_present, 1)); + HANDLE_CODE(pdcp_params_nr_v1560.unpack(bref)); return SRSASN_SUCCESS; } -void other_params_v1540_s::to_json(json_writer& j) const +void ue_eutra_cap_add_xdd_mode_v1560_s::to_json(json_writer& j) const { j.start_obj(); - if (in_dev_coex_ind_endc_r15_present) { - j.write_str("inDeviceCoexInd-ENDC-r15", "supported"); + j.write_fieldname("pdcp-ParametersNR-v1560"); + pdcp_params_nr_v1560.to_json(j); + j.end_obj(); +} + +// MAC-Parameters-v1550 ::= SEQUENCE +SRSASN_CODE mac_params_v1550_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(elcid_support_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE mac_params_v1550_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(elcid_support_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void mac_params_v1550_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (elcid_support_r15_present) { + j.write_str("eLCID-Support-r15", "supported"); } j.end_obj(); } -// PhyLayerParameters-v1540 ::= SEQUENCE -SRSASN_CODE phy_layer_params_v1540_s::pack(bit_ref& bref) const +// UE-EUTRA-Capability-v1560-IEs ::= SEQUENCE +SRSASN_CODE ue_eutra_cap_v1560_ies_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(applied_cap_filt_common_r15_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - if (stti_spt_cap_v1540_present) { + HANDLE_CODE(pdcp_params_nr_v1560.pack(bref)); + HANDLE_CODE(irat_params_nr_v1560.pack(bref)); + if (applied_cap_filt_common_r15_present) { + HANDLE_CODE(applied_cap_filt_common_r15.pack(bref)); + } + HANDLE_CODE(fdd_add_ue_eutra_cap_v1560.pack(bref)); + HANDLE_CODE(tdd_add_ue_eutra_cap_v1560.pack(bref)); + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); } return SRSASN_SUCCESS; } -SRSASN_CODE phy_layer_params_v1540_s::unpack(cbit_ref& bref) +SRSASN_CODE ue_eutra_cap_v1560_ies_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(applied_cap_filt_common_r15_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - if (stti_spt_cap_v1540_present) { + HANDLE_CODE(pdcp_params_nr_v1560.unpack(bref)); + HANDLE_CODE(irat_params_nr_v1560.unpack(bref)); + if (applied_cap_filt_common_r15_present) { + HANDLE_CODE(applied_cap_filt_common_r15.unpack(bref)); + } + HANDLE_CODE(fdd_add_ue_eutra_cap_v1560.unpack(bref)); + HANDLE_CODE(tdd_add_ue_eutra_cap_v1560.unpack(bref)); + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); } return SRSASN_SUCCESS; } -void phy_layer_params_v1540_s::to_json(json_writer& j) const +void ue_eutra_cap_v1560_ies_s::to_json(json_writer& j) const { j.start_obj(); - if (stti_spt_cap_v1540_present) { - j.write_fieldname("stti-SPT-Capabilities-v1540"); - j.start_obj(); - j.write_str("slotPDSCH-TxDiv-TM8-r15", "supported"); - j.end_obj(); + j.write_fieldname("pdcp-ParametersNR-v1560"); + pdcp_params_nr_v1560.to_json(j); + j.write_fieldname("irat-ParametersNR-v1560"); + irat_params_nr_v1560.to_json(j); + if (applied_cap_filt_common_r15_present) { + j.write_str("appliedCapabilityFilterCommon-r15", applied_cap_filt_common_r15.to_string()); } - if (crs_im_tm1_to_tm9_one_rx_port_v1540_present) { - j.write_str("crs-IM-TM1-toTM9-OneRX-Port-v1540", "supported"); + j.write_fieldname("fdd-Add-UE-EUTRA-Capabilities-v1560"); + fdd_add_ue_eutra_cap_v1560.to_json(j); + j.write_fieldname("tdd-Add-UE-EUTRA-Capabilities-v1560"); + tdd_add_ue_eutra_cap_v1560.to_json(j); + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.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"); + j.end_obj(); +} + +// UE-EUTRA-CapabilityAddXDD-Mode-v1550 ::= SEQUENCE +SRSASN_CODE ue_eutra_cap_add_xdd_mode_v1550_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(neigh_cell_si_acquisition_params_v1550_present, 1)); + + if (neigh_cell_si_acquisition_params_v1550_present) { + HANDLE_CODE(neigh_cell_si_acquisition_params_v1550.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_eutra_cap_add_xdd_mode_v1550_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(neigh_cell_si_acquisition_params_v1550_present, 1)); + + if (neigh_cell_si_acquisition_params_v1550_present) { + HANDLE_CODE(neigh_cell_si_acquisition_params_v1550.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void ue_eutra_cap_add_xdd_mode_v1550_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (neigh_cell_si_acquisition_params_v1550_present) { + j.write_fieldname("neighCellSI-AcquisitionParameters-v1550"); + neigh_cell_si_acquisition_params_v1550.to_json(j); + } + j.end_obj(); +} + +// NeighCellSI-AcquisitionParameters-v1530 ::= SEQUENCE +SRSASN_CODE neigh_cell_si_acquisition_params_v1530_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(report_cgi_nr_en_dc_r15_present, 1)); + HANDLE_CODE(bref.pack(report_cgi_nr_no_en_dc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE neigh_cell_si_acquisition_params_v1530_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(report_cgi_nr_en_dc_r15_present, 1)); + HANDLE_CODE(bref.unpack(report_cgi_nr_no_en_dc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void neigh_cell_si_acquisition_params_v1530_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (report_cgi_nr_en_dc_r15_present) { + j.write_str("reportCGI-NR-EN-DC-r15", "supported"); + } + if (report_cgi_nr_no_en_dc_r15_present) { + j.write_str("reportCGI-NR-NoEN-DC-r15", "supported"); + } + j.end_obj(); +} + +// Other-Parameters-v1540 ::= SEQUENCE +SRSASN_CODE other_params_v1540_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(in_dev_coex_ind_endc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE other_params_v1540_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(in_dev_coex_ind_endc_r15_present, 1)); + + return SRSASN_SUCCESS; +} +void other_params_v1540_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (in_dev_coex_ind_endc_r15_present) { + j.write_str("inDeviceCoexInd-ENDC-r15", "supported"); } j.end_obj(); } @@ -8279,6 +9083,65 @@ void sl_params_v1540_s::to_json(json_writer& j) const j.end_obj(); } +// UE-EUTRA-Capability-v1550-IEs ::= SEQUENCE +SRSASN_CODE ue_eutra_cap_v1550_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(neigh_cell_si_acquisition_params_v1550_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (neigh_cell_si_acquisition_params_v1550_present) { + HANDLE_CODE(neigh_cell_si_acquisition_params_v1550.pack(bref)); + } + HANDLE_CODE(phy_layer_params_v1550.pack(bref)); + HANDLE_CODE(mac_params_v1550.pack(bref)); + HANDLE_CODE(fdd_add_ue_eutra_cap_v1550.pack(bref)); + HANDLE_CODE(tdd_add_ue_eutra_cap_v1550.pack(bref)); + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_eutra_cap_v1550_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(neigh_cell_si_acquisition_params_v1550_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (neigh_cell_si_acquisition_params_v1550_present) { + HANDLE_CODE(neigh_cell_si_acquisition_params_v1550.unpack(bref)); + } + HANDLE_CODE(phy_layer_params_v1550.unpack(bref)); + HANDLE_CODE(mac_params_v1550.unpack(bref)); + HANDLE_CODE(fdd_add_ue_eutra_cap_v1550.unpack(bref)); + HANDLE_CODE(tdd_add_ue_eutra_cap_v1550.unpack(bref)); + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void ue_eutra_cap_v1550_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (neigh_cell_si_acquisition_params_v1550_present) { + j.write_fieldname("neighCellSI-AcquisitionParameters-v1550"); + neigh_cell_si_acquisition_params_v1550.to_json(j); + } + j.write_fieldname("phyLayerParameters-v1550"); + phy_layer_params_v1550.to_json(j); + j.write_fieldname("mac-Parameters-v1550"); + mac_params_v1550.to_json(j); + j.write_fieldname("fdd-Add-UE-EUTRA-Capabilities-v1550"); + fdd_add_ue_eutra_cap_v1550.to_json(j); + j.write_fieldname("tdd-Add-UE-EUTRA-Capabilities-v1550"); + tdd_add_ue_eutra_cap_v1550.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-v1540 ::= SEQUENCE SRSASN_CODE ue_eutra_cap_add_xdd_mode_v1540_s::pack(bit_ref& bref) const { @@ -8533,6 +9396,9 @@ SRSASN_CODE ue_eutra_cap_v1540_ies_s::pack(bit_ref& bref) const if (irat_params_nr_v1540_present) { HANDLE_CODE(irat_params_nr_v1540.pack(bref)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } return SRSASN_SUCCESS; } @@ -8561,6 +9427,9 @@ SRSASN_CODE ue_eutra_cap_v1540_ies_s::unpack(cbit_ref& bref) if (irat_params_nr_v1540_present) { HANDLE_CODE(irat_params_nr_v1540.unpack(bref)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } return SRSASN_SUCCESS; } @@ -8591,8 +9460,7 @@ void ue_eutra_cap_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(); } @@ -8636,20 +9504,20 @@ void ue_eutra_cap_add_xdd_mode_v1530_s::to_json(json_writer& j) const // MeasParameters-v1520 ::= SEQUENCE SRSASN_CODE meas_params_v1520_s::pack(bit_ref& bref) const { - HANDLE_CODE(bref.pack(meas_gap_patterns_v1520_present, 1)); + HANDLE_CODE(bref.pack(meas_gap_patterns_r15_present, 1)); - if (meas_gap_patterns_v1520_present) { - HANDLE_CODE(meas_gap_patterns_v1520.pack(bref)); + if (meas_gap_patterns_r15_present) { + HANDLE_CODE(meas_gap_patterns_r15.pack(bref)); } return SRSASN_SUCCESS; } SRSASN_CODE meas_params_v1520_s::unpack(cbit_ref& bref) { - HANDLE_CODE(bref.unpack(meas_gap_patterns_v1520_present, 1)); + HANDLE_CODE(bref.unpack(meas_gap_patterns_r15_present, 1)); - if (meas_gap_patterns_v1520_present) { - HANDLE_CODE(meas_gap_patterns_v1520.unpack(bref)); + if (meas_gap_patterns_r15_present) { + HANDLE_CODE(meas_gap_patterns_r15.unpack(bref)); } return SRSASN_SUCCESS; @@ -8657,8 +9525,8 @@ SRSASN_CODE meas_params_v1520_s::unpack(cbit_ref& bref) void meas_params_v1520_s::to_json(json_writer& j) const { j.start_obj(); - if (meas_gap_patterns_v1520_present) { - j.write_str("measGapPatterns-v1520", meas_gap_patterns_v1520.to_string()); + if (meas_gap_patterns_r15_present) { + j.write_str("measGapPatterns-r15", meas_gap_patterns_r15.to_string()); } j.end_obj(); } @@ -9746,6 +10614,28 @@ uint16_t pdcp_params_v1430_s::max_num_rohc_context_sessions_r14_opts::to_number( return map_enum_number(options, 14, value, "pdcp_params_v1430_s::max_num_rohc_context_sessions_r14_e_"); } +// PhyLayerParameters-v14a0 ::= SEQUENCE +SRSASN_CODE phy_layer_params_v14a0_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(ssp10_tdd_only_r14_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE phy_layer_params_v14a0_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(ssp10_tdd_only_r14_present, 1)); + + return SRSASN_SUCCESS; +} +void phy_layer_params_v14a0_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (ssp10_tdd_only_r14_present) { + j.write_str("ssp10-TDD-Only-r14", "supported"); + } + j.end_obj(); +} + // RLC-Parameters-v1430 ::= SEQUENCE SRSASN_CODE rlc_params_v1430_s::pack(bit_ref& bref) const { @@ -9829,6 +10719,44 @@ void ue_eutra_cap_v1440_ies_s::to_json(json_writer& j) const j.end_obj(); } +// UE-EUTRA-Capability-v14b0-IEs ::= SEQUENCE +SRSASN_CODE ue_eutra_cap_v14b0_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(rf_params_v14b0_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (rf_params_v14b0_present) { + HANDLE_CODE(rf_params_v14b0.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_eutra_cap_v14b0_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(rf_params_v14b0_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (rf_params_v14b0_present) { + HANDLE_CODE(rf_params_v14b0.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void ue_eutra_cap_v14b0_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (rf_params_v14b0_present) { + j.write_fieldname("rf-Parameters-v14b0"); + rf_params_v14b0.to_json(j); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + // UE-EUTRA-CapabilityAddXDD-Mode-v1430 ::= SEQUENCE SRSASN_CODE ue_eutra_cap_add_xdd_mode_v1430_s::pack(bit_ref& bref) const { @@ -10271,6 +11199,41 @@ uint8_t ue_eutra_cap_v1430_ies_s::ue_category_ul_v1430_opts::to_number() const return map_enum_number(options, 6, value, "ue_eutra_cap_v1430_ies_s::ue_category_ul_v1430_e_"); } +// UE-EUTRA-Capability-v14a0-IEs ::= SEQUENCE +SRSASN_CODE ue_eutra_cap_v14a0_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + HANDLE_CODE(phy_layer_params_v14a0.pack(bref)); + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE ue_eutra_cap_v14a0_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + HANDLE_CODE(phy_layer_params_v14a0.unpack(bref)); + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void ue_eutra_cap_v14a0_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_fieldname("phyLayerParameters-v14a0"); + phy_layer_params_v14a0.to_json(j); + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + non_crit_ext.to_json(j); + } + j.end_obj(); +} + // CE-Parameters-v1350 ::= SEQUENCE SRSASN_CODE ce_params_v1350_s::pack(bit_ref& bref) const { @@ -10353,6 +11316,9 @@ SRSASN_CODE ue_eutra_cap_v1470_ies_s::pack(bit_ref& bref) const if (rf_params_v1470_present) { HANDLE_CODE(rf_params_v1470.pack(bref)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } return SRSASN_SUCCESS; } @@ -10372,6 +11338,9 @@ SRSASN_CODE ue_eutra_cap_v1470_ies_s::unpack(cbit_ref& bref) if (rf_params_v1470_present) { HANDLE_CODE(rf_params_v1470.unpack(bref)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } return SRSASN_SUCCESS; } @@ -10392,8 +11361,7 @@ void ue_eutra_cap_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(); } @@ -10465,8 +11433,8 @@ void ue_eutra_cap_v1350_ies_s::to_json(json_writer& j) const j.end_obj(); } -// UE-EUTRA-Capability-v13x0-IEs ::= SEQUENCE -SRSASN_CODE ue_eutra_cap_v13x0_ies_s::pack(bit_ref& bref) const +// UE-EUTRA-Capability-v13e0a-IEs ::= SEQUENCE +SRSASN_CODE ue_eutra_cap_v13e0a_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)); @@ -10480,7 +11448,7 @@ SRSASN_CODE ue_eutra_cap_v13x0_ies_s::pack(bit_ref& bref) const return SRSASN_SUCCESS; } -SRSASN_CODE ue_eutra_cap_v13x0_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE ue_eutra_cap_v13e0a_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)); @@ -10494,7 +11462,7 @@ SRSASN_CODE ue_eutra_cap_v13x0_ies_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void ue_eutra_cap_v13x0_ies_s::to_json(json_writer& j) const +void ue_eutra_cap_v13e0a_ies_s::to_json(json_writer& j) const { j.start_obj(); if (late_non_crit_ext_present) { diff --git a/lib/src/asn1/rrc/ul_ccch_msg.cc b/lib/src/asn1/rrc/ul_ccch_msg.cc index 212c0dd9f..9d73adc8a 100644 --- a/lib/src/asn1/rrc/ul_ccch_msg.cc +++ b/lib/src/asn1/rrc/ul_ccch_msg.cc @@ -279,6 +279,43 @@ SRSASN_CODE init_ue_id_minus5_gc_c::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } +// RRCEarlyDataRequest-v1590-IEs ::= SEQUENCE +SRSASN_CODE rrc_early_data_request_v1590_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_early_data_request_v1590_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void rrc_early_data_request_v1590_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + // ReestabUE-Identity ::= SEQUENCE SRSASN_CODE reestab_ue_id_s::pack(bit_ref& bref) const { @@ -728,6 +765,9 @@ SRSASN_CODE rrc_early_data_request_r15_ies_s::pack(bit_ref& bref) const HANDLE_CODE(s_tmsi_r15.pack(bref)); HANDLE_CODE(establishment_cause_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; } @@ -738,6 +778,9 @@ SRSASN_CODE rrc_early_data_request_r15_ies_s::unpack(cbit_ref& bref) HANDLE_CODE(s_tmsi_r15.unpack(bref)); HANDLE_CODE(establishment_cause_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; } @@ -750,15 +793,14 @@ void rrc_early_data_request_r15_ies_s::to_json(json_writer& j) const j.write_str("dedicatedInfoNAS-r15", ded_info_nas_r15.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(); } std::string rrc_early_data_request_r15_ies_s::establishment_cause_r15_opts::to_string() const { - static const char* options[] = {"mo-Data-r15", "delayTolerantAccess-r15"}; + static const char* options[] = {"mo-Data", "delayTolerantAccess"}; return convert_enum_idx(options, 2, value, "rrc_early_data_request_r15_ies_s::establishment_cause_r15_e_"); } diff --git a/lib/src/asn1/rrc/ul_dcch_msg.cc b/lib/src/asn1/rrc/ul_dcch_msg.cc index ee2f07185..6c055dc7c 100644 --- a/lib/src/asn1/rrc/ul_dcch_msg.cc +++ b/lib/src/asn1/rrc/ul_dcch_msg.cc @@ -221,7 +221,7 @@ void rrc_conn_setup_complete_v1540_ies_s::to_json(json_writer& j) const { j.start_obj(); if (gummei_type_v1540_present) { - j.write_str("gummei-Type-v1540", "mappedFrom5G"); + j.write_str("gummei-Type-v1540", "mappedFrom5G-v1540"); } if (guami_type_r15_present) { j.write_str("guami-Type-r15", guami_type_r15.to_string()); @@ -2165,40 +2165,6 @@ void ue_info_resp_v1250_ies_s::to_json(json_writer& j) const j.end_obj(); } -// FailureReportSCG-v12d0 ::= SEQUENCE -SRSASN_CODE fail_report_scg_v12d0_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(meas_result_neigh_cells_v12d0_present, 1)); - - if (meas_result_neigh_cells_v12d0_present) { - HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_neigh_cells_v12d0, 1, 8)); - } - - return SRSASN_SUCCESS; -} -SRSASN_CODE fail_report_scg_v12d0_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(meas_result_neigh_cells_v12d0_present, 1)); - - if (meas_result_neigh_cells_v12d0_present) { - HANDLE_CODE(unpack_dyn_seq_of(meas_result_neigh_cells_v12d0, bref, 1, 8)); - } - - return SRSASN_SUCCESS; -} -void fail_report_scg_v12d0_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (meas_result_neigh_cells_v12d0_present) { - j.start_array("measResultNeighCells-v12d0"); - for (const auto& e1 : meas_result_neigh_cells_v12d0) { - e1.to_json(j); - } - j.end_array(); - } - j.end_obj(); -} - // IDC-SubframePattern-r11 ::= CHOICE void idc_sf_pattern_r11_c::destroy_() { @@ -4410,44 +4376,6 @@ SRSASN_CODE rstd_inter_freq_info_r10_s::meas_prs_offset_r15_c_::unpack(cbit_ref& return SRSASN_SUCCESS; } -// SCGFailureInformation-v12d0-IEs ::= SEQUENCE -SRSASN_CODE scg_fail_info_v12d0_ies_s::pack(bit_ref& bref) const -{ - HANDLE_CODE(bref.pack(fail_report_scg_v12d0_present, 1)); - HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); - - if (fail_report_scg_v12d0_present) { - HANDLE_CODE(fail_report_scg_v12d0.pack(bref)); - } - - return SRSASN_SUCCESS; -} -SRSASN_CODE scg_fail_info_v12d0_ies_s::unpack(cbit_ref& bref) -{ - HANDLE_CODE(bref.unpack(fail_report_scg_v12d0_present, 1)); - HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); - - if (fail_report_scg_v12d0_present) { - HANDLE_CODE(fail_report_scg_v12d0.unpack(bref)); - } - - return SRSASN_SUCCESS; -} -void scg_fail_info_v12d0_ies_s::to_json(json_writer& j) const -{ - j.start_obj(); - if (fail_report_scg_v12d0_present) { - j.write_fieldname("failureReportSCG-v12d0"); - fail_report_scg_v12d0.to_json(j); - } - if (non_crit_ext_present) { - j.write_fieldname("nonCriticalExtension"); - j.start_obj(); - j.end_obj(); - } - j.end_obj(); -} - // SL-CommTxResourceReq-r12 ::= SEQUENCE SRSASN_CODE sl_comm_tx_res_req_r12_s::pack(bit_ref& bref) const { @@ -5070,6 +4998,43 @@ void mbms_interest_ind_v1310_ies_s::to_json(json_writer& j) const j.end_obj(); } +// MeasReportAppLayer-v1590-IEs ::= SEQUENCE +SRSASN_CODE meas_report_app_layer_v1590_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE meas_report_app_layer_v1590_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void meas_report_app_layer_v1590_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + // ProximityIndication-v930-IEs ::= SEQUENCE SRSASN_CODE proximity_ind_v930_ies_s::pack(bit_ref& bref) const { @@ -6119,8 +6084,45 @@ void registered_mme_s::to_json(json_writer& j) const j.end_obj(); } -// SCGFailureInformation-v1310-IEs ::= SEQUENCE -SRSASN_CODE scg_fail_info_v1310_ies_s::pack(bit_ref& bref) const +// SCGFailureInformation-v12d0a-IEs ::= SEQUENCE +SRSASN_CODE scg_fail_info_v12d0a_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE scg_fail_info_v12d0a_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.unpack(bref)); + } + + return SRSASN_SUCCESS; +} +void scg_fail_info_v12d0a_ies_s::to_json(json_writer& j) const +{ + j.start_obj(); + if (late_non_crit_ext_present) { + j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string()); + } + if (non_crit_ext_present) { + j.write_fieldname("nonCriticalExtension"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + +// SCGFailureInformationNR-v1590-IEs ::= SEQUENCE +SRSASN_CODE scg_fail_info_nr_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)); @@ -6131,7 +6133,7 @@ SRSASN_CODE scg_fail_info_v1310_ies_s::pack(bit_ref& bref) const return SRSASN_SUCCESS; } -SRSASN_CODE scg_fail_info_v1310_ies_s::unpack(cbit_ref& bref) +SRSASN_CODE scg_fail_info_nr_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)); @@ -6142,7 +6144,7 @@ SRSASN_CODE scg_fail_info_v1310_ies_s::unpack(cbit_ref& bref) return SRSASN_SUCCESS; } -void scg_fail_info_v1310_ies_s::to_json(json_writer& j) const +void scg_fail_info_nr_v1590_ies_s::to_json(json_writer& j) const { j.start_obj(); if (late_non_crit_ext_present) { @@ -7216,14 +7218,17 @@ void mbms_interest_ind_r11_ies_s::to_json(json_writer& j) const SRSASN_CODE meas_report_app_layer_r15_ies_s::pack(bit_ref& bref) const { HANDLE_CODE(bref.pack(meas_report_app_layer_container_r15_present, 1)); - HANDLE_CODE(bref.pack(service_type_present, 1)); + HANDLE_CODE(bref.pack(service_type_r15_present, 1)); HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); if (meas_report_app_layer_container_r15_present) { HANDLE_CODE(meas_report_app_layer_container_r15.pack(bref)); } - if (service_type_present) { - HANDLE_CODE(service_type.pack(bref)); + if (service_type_r15_present) { + HANDLE_CODE(service_type_r15.pack(bref)); + } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); } return SRSASN_SUCCESS; @@ -7231,14 +7236,17 @@ SRSASN_CODE meas_report_app_layer_r15_ies_s::pack(bit_ref& bref) const 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_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_present) { - HANDLE_CODE(service_type.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; @@ -7249,21 +7257,20 @@ void meas_report_app_layer_r15_ies_s::to_json(json_writer& j) const if (meas_report_app_layer_container_r15_present) { j.write_str("measReportAppLayerContainer-r15", meas_report_app_layer_container_r15.to_string()); } - if (service_type_present) { - j.write_str("serviceType", service_type.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"); - j.start_obj(); - j.end_obj(); + non_crit_ext.to_json(j); } j.end_obj(); } -std::string meas_report_app_layer_r15_ies_s::service_type_opts::to_string() const +std::string 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_e_"); + return convert_enum_idx(options, 8, value, "meas_report_app_layer_r15_ies_s::service_type_r15_e_"); } // ProximityIndication-r9-IEs ::= SEQUENCE @@ -7727,6 +7734,9 @@ SRSASN_CODE scg_fail_info_nr_r15_ies_s::pack(bit_ref& bref) const if (fail_report_scg_nr_r15_present) { HANDLE_CODE(fail_report_scg_nr_r15.pack(bref)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.pack(bref)); + } return SRSASN_SUCCESS; } @@ -7738,6 +7748,9 @@ SRSASN_CODE scg_fail_info_nr_r15_ies_s::unpack(cbit_ref& bref) if (fail_report_scg_nr_r15_present) { HANDLE_CODE(fail_report_scg_nr_r15.unpack(bref)); } + if (non_crit_ext_present) { + HANDLE_CODE(non_crit_ext.unpack(bref)); + } return SRSASN_SUCCESS; } @@ -7750,8 +7763,7 @@ void scg_fail_info_nr_r15_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(); } @@ -8564,9 +8576,6 @@ void fail_info_r15_s::to_json(json_writer& j) const j.write_fieldname("failedLogicalChannelInfo-r15"); failed_lc_ch_info_r15.to_json(j); } - j.write_fieldname("nonCriticalExtension"); - j.start_obj(); - j.end_obj(); j.end_obj(); } diff --git a/lib/src/asn1/rrc_nbiot.cc b/lib/src/asn1/rrc_nbiot.cc index fef73efe4..10883403d 100644 --- a/lib/src/asn1/rrc_nbiot.cc +++ b/lib/src/asn1/rrc_nbiot.cc @@ -170,6 +170,42 @@ std::string 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_"); } +// CarrierFreq-NB-v1550 ::= SEQUENCE +SRSASN_CODE carrier_freq_nb_v1550_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(carrier_freq_offset_v1550.pack(bref)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE carrier_freq_nb_v1550_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(carrier_freq_offset_v1550.unpack(bref)); + + return SRSASN_SUCCESS; +} +void carrier_freq_nb_v1550_s::to_json(json_writer& j) const +{ + j.start_obj(); + j.write_str("carrierFreqOffset-v1550", carrier_freq_offset_v1550.to_string()); + j.end_obj(); +} + +std::string carrier_freq_nb_v1550_s::carrier_freq_offset_v1550_opts::to_string() const +{ + static const char* options[] = {"v-8dot5", "v-4dot5", "v3dot5", "v7dot5"}; + return convert_enum_idx(options, 4, value, "carrier_freq_nb_v1550_s::carrier_freq_offset_v1550_e_"); +} +float carrier_freq_nb_v1550_s::carrier_freq_offset_v1550_opts::to_number() const +{ + static const float options[] = {-8.5, -4.5, 3.5, 7.5}; + return map_enum_number(options, 4, value, "carrier_freq_nb_v1550_s::carrier_freq_offset_v1550_e_"); +} +std::string carrier_freq_nb_v1550_s::carrier_freq_offset_v1550_opts::to_number_string() const +{ + static const char* options[] = {"-8.5", "-4.5", "3.5", "7.5"}; + return convert_enum_idx(options, 4, value, "carrier_freq_nb_v1550_s::carrier_freq_offset_v1550_e_"); +} + // DL-AM-RLC-NB-r13 ::= SEQUENCE SRSASN_CODE dl_am_rlc_nb_r13_s::pack(bit_ref& bref) const { @@ -491,6 +527,7 @@ SRSASN_CODE dl_carrier_cfg_ded_nb_r13_s::pack(bit_ref& bref) const ext_groups_packer_guard group_flags; group_flags[0] |= nrs_pwr_offset_non_anchor_v1330_present; group_flags[1] |= dl_gap_non_anchor_v1530.is_present(); + group_flags[2] |= dl_carrier_freq_v1550.is_present(); group_flags.pack(bref); if (group_flags[0]) { @@ -509,6 +546,14 @@ SRSASN_CODE dl_carrier_cfg_ded_nb_r13_s::pack(bit_ref& bref) const HANDLE_CODE(dl_gap_non_anchor_v1530->pack(bref)); } } + if (group_flags[2]) { + 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)); + } + } } return SRSASN_SUCCESS; } @@ -535,7 +580,7 @@ SRSASN_CODE dl_carrier_cfg_ded_nb_r13_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]) { @@ -556,6 +601,16 @@ SRSASN_CODE dl_carrier_cfg_ded_nb_r13_s::unpack(cbit_ref& bref) HANDLE_CODE(dl_gap_non_anchor_v1530->unpack(bref)); } } + if (group_flags[2]) { + 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)); + } + } } return SRSASN_SUCCESS; } @@ -590,6 +645,10 @@ void dl_carrier_cfg_ded_nb_r13_s::to_json(json_writer& j) const 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"); + dl_carrier_freq_v1550->to_json(j); + } } j.end_obj(); } @@ -3202,6 +3261,20 @@ SRSASN_CODE as_cfg_nb_s::pack(bit_ref& bref) const 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; } SRSASN_CODE as_cfg_nb_s::unpack(cbit_ref& bref) @@ -3212,6 +3285,21 @@ SRSASN_CODE as_cfg_nb_s::unpack(cbit_ref& 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 @@ -3224,6 +3312,12 @@ void as_cfg_nb_s::to_json(json_writer& j) const 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(); } @@ -5690,6 +5784,51 @@ uint8_t nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_ options, 16, value, "nprach_params_tdd_nb_r15_s::nprach_params_r15_s_::nprach_num_cbra_start_subcarriers_r15_e_"); } +// NPRACH-ParametersTDD-NB-v1550 ::= SEQUENCE +SRSASN_CODE nprach_params_tdd_nb_v1550_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)); + + 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)); + + return SRSASN_SUCCESS; +} +void nprach_params_tdd_nb_v1550_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()); + j.end_obj(); +} + +std::string nprach_params_tdd_nb_v1550_s::max_num_preamb_attempt_ce_v1550_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_"); +} +uint8_t nprach_params_tdd_nb_v1550_s::max_num_preamb_attempt_ce_v1550_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_"); +} + +std::string 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 std::string paging_weight_nb_r14_opts::to_string() const { @@ -5854,6 +5993,7 @@ SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::pack(bit_ref& bref) const 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]) { @@ -5864,6 +6004,14 @@ SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::pack(bit_ref& bref) const 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(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; } @@ -5888,7 +6036,7 @@ SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::unpack(cbit_ref& bref) } if (ext) { - ext_groups_unpacker_guard group_flags(1); + ext_groups_unpacker_guard group_flags(2); group_flags.unpack(bref); if (group_flags[0]) { @@ -5901,6 +6049,16 @@ SRSASN_CODE dl_carrier_cfg_common_nb_r14_s::unpack(cbit_ref& bref) HANDLE_CODE(dl_gap_non_anchor_v1530->unpack(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)); + } + } } return SRSASN_SUCCESS; } @@ -5931,6 +6089,10 @@ void dl_carrier_cfg_common_nb_r14_s::to_json(json_writer& j) const 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"); + dl_carrier_freq_v1550->to_json(j); + } } j.end_obj(); } @@ -6637,6 +6799,7 @@ SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::pack(bit_ref& bref) const 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]) { @@ -6671,6 +6834,14 @@ SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::pack(bit_ref& bref) const 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)); + } + } } return SRSASN_SUCCESS; } @@ -6706,7 +6877,7 @@ SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::unpack(cbit_ref& bref) } if (ext) { - ext_groups_unpacker_guard group_flags(3); + ext_groups_unpacker_guard group_flags(4); group_flags.unpack(bref); if (group_flags[0]) { @@ -6745,6 +6916,16 @@ SRSASN_CODE inter_freq_carrier_freq_info_nb_r13_s::unpack(cbit_ref& bref) 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); + if (dl_carrier_freq_v1550.is_present()) { + HANDLE_CODE(dl_carrier_freq_v1550->unpack(bref)); + } + } } return SRSASN_SUCCESS; } @@ -6805,6 +6986,10 @@ void inter_freq_carrier_freq_info_nb_r13_s::to_json(json_writer& j) const } j.end_array(); } + if (dl_carrier_freq_v1550.is_present()) { + j.write_fieldname("dl-CarrierFreq-v1550"); + dl_carrier_freq_v1550->to_json(j); + } } j.end_obj(); } @@ -7051,7 +7236,7 @@ SRSASN_CODE nprach_cfg_sib_nb_v1530_s::pack(bit_ref& bref) const if (tdd_params_r15_present) { HANDLE_CODE(tdd_params_r15.nprach_preamb_format_r15.pack(bref)); - HANDLE_CODE(tdd_params_r15.num_repeats_per_preamb_attempt_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) { @@ -7083,7 +7268,7 @@ SRSASN_CODE nprach_cfg_sib_nb_v1530_s::unpack(cbit_ref& bref) if (tdd_params_r15_present) { HANDLE_CODE(tdd_params_r15.nprach_preamb_format_r15.unpack(bref)); - HANDLE_CODE(tdd_params_r15.num_repeats_per_preamb_attempt_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) { @@ -7114,7 +7299,7 @@ void nprach_cfg_sib_nb_v1530_s::to_json(json_writer& j) const 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("numRepetitionsPerPreambleAttempt-r15", tdd_params_r15.num_repeats_per_preamb_attempt_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); @@ -7171,17 +7356,42 @@ std::string nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::nprach_preamb_format_r options, 5, value, "nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::nprach_preamb_format_r15_e_"); } -std::string nprach_cfg_sib_nb_v1530_s::tdd_params_r15_s_::num_repeats_per_preamb_attempt_r15_opts::to_string() const +std::string 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_::num_repeats_per_preamb_attempt_r15_e_"); + 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_::num_repeats_per_preamb_attempt_r15_opts::to_number() 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_::num_repeats_per_preamb_attempt_r15_e_"); + 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(); + 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(); } // NPRACH-ProbabilityAnchor-NB-r14 ::= SEQUENCE @@ -8301,6 +8511,7 @@ SRSASN_CODE rr_cfg_common_sib_nb_r13_s::pack(bit_ref& bref) const 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.pack(bref); if (group_flags[0]) { @@ -8335,6 +8546,14 @@ SRSASN_CODE rr_cfg_common_sib_nb_r13_s::pack(bit_ref& bref) const 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)); + } + } } return SRSASN_SUCCESS; } @@ -8355,7 +8574,7 @@ SRSASN_CODE rr_cfg_common_sib_nb_r13_s::unpack(cbit_ref& bref) HANDLE_CODE(ul_pwr_ctrl_common_r13.unpack(bref)); if (ext) { - ext_groups_unpacker_guard group_flags(3); + ext_groups_unpacker_guard group_flags(4); group_flags.unpack(bref); if (group_flags[0]) { @@ -8400,6 +8619,16 @@ SRSASN_CODE rr_cfg_common_sib_nb_r13_s::unpack(cbit_ref& bref) 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)); + } + } } return SRSASN_SUCCESS; } @@ -8445,6 +8674,10 @@ void rr_cfg_common_sib_nb_r13_s::to_json(json_writer& j) const 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); + } } j.end_obj(); } @@ -11827,6 +12060,43 @@ 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 +{ + HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + if (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_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)); + } + + 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"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + // RedirectedCarrierInfo-NB-v1430 ::= SEQUENCE SRSASN_CODE redirected_carrier_info_nb_v1430_s::pack(bit_ref& bref) const { @@ -12045,6 +12315,9 @@ SRSASN_CODE rrc_early_data_complete_nb_r15_ies_s::pack(bit_ref& bref) const 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; } @@ -12068,6 +12341,9 @@ SRSASN_CODE rrc_early_data_complete_nb_r15_ies_s::unpack(cbit_ref& 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; } @@ -12090,8 +12366,7 @@ void rrc_early_data_complete_nb_r15_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(); } @@ -13191,6 +13466,78 @@ void dl_ccch_msg_nb_s::to_json(json_writer& j) const j.end_array(); } +// RRCConnectionRelease-NB-v15b0-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_release_nb_v15b0_ies_s::pack(bit_ref& bref) const +{ + HANDLE_CODE(bref.pack(no_last_cell_upd_r15_present, 1)); + HANDLE_CODE(bref.pack(non_crit_ext_present, 1)); + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_conn_release_nb_v15b0_ies_s::unpack(cbit_ref& bref) +{ + HANDLE_CODE(bref.unpack(no_last_cell_upd_r15_present, 1)); + HANDLE_CODE(bref.unpack(non_crit_ext_present, 1)); + + return SRSASN_SUCCESS; +} +void rrc_conn_release_nb_v15b0_ies_s::to_json(json_writer& j) const +{ + 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(); + } + j.end_obj(); +} + +// RRCConnectionRelease-NB-v1550-IEs ::= SEQUENCE +SRSASN_CODE rrc_conn_release_nb_v1550_ies_s::pack(bit_ref& bref) const +{ + 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 rrc_conn_release_nb_v1550_ies_s::unpack(cbit_ref& bref) +{ + 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 rrc_conn_release_nb_v1550_ies_s::to_json(json_writer& j) const +{ + 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(); +} + // RRCConnectionRelease-NB-v1530-IEs ::= SEQUENCE SRSASN_CODE rrc_conn_release_nb_v1530_ies_s::pack(bit_ref& bref) const { @@ -13201,6 +13548,9 @@ SRSASN_CODE rrc_conn_release_nb_v1530_ies_s::pack(bit_ref& bref) const 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; } @@ -13213,6 +13563,9 @@ SRSASN_CODE rrc_conn_release_nb_v1530_ies_s::unpack(cbit_ref& bref) 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; } @@ -13227,8 +13580,7 @@ void rrc_conn_release_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(); } @@ -18027,6 +18379,43 @@ std::string rrc_conn_setup_complete_nb_s::crit_exts_c_::types_opts::to_string() return convert_enum_idx(options, 2, value, "rrc_conn_setup_complete_nb_s::crit_exts_c_::types"); } +// RRCEarlyDataRequest-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 (late_non_crit_ext_present) { + HANDLE_CODE(late_non_crit_ext.pack(bref)); + } + + return SRSASN_SUCCESS; +} +SRSASN_CODE rrc_early_data_request_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)); + } + + return SRSASN_SUCCESS; +} +void rrc_early_data_request_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"); + j.start_obj(); + j.end_obj(); + } + j.end_obj(); +} + // RRCEarlyDataRequest-NB-r15-IEs ::= SEQUENCE SRSASN_CODE rrc_early_data_request_nb_r15_ies_s::pack(bit_ref& bref) const { @@ -18039,6 +18428,9 @@ SRSASN_CODE rrc_early_data_request_nb_r15_ies_s::pack(bit_ref& bref) const 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; } @@ -18053,6 +18445,9 @@ SRSASN_CODE rrc_early_data_request_nb_r15_ies_s::unpack(cbit_ref& bref) 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; } @@ -18068,15 +18463,14 @@ void rrc_early_data_request_nb_r15_ies_s::to_json(json_writer& j) const j.write_str("dedicatedInfoNAS-r15", ded_info_nas_r15.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(); } std::string rrc_early_data_request_nb_r15_ies_s::establishment_cause_r15_opts::to_string() const { - static const char* options[] = {"mo-Data-r15", "mo-ExceptionData-r15", "delayTolerantAccess-r15", "spare1"}; + 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_"); } diff --git a/lib/test/asn1/rrc_test.cc b/lib/test/asn1/rrc_test.cc index 5a047986a..cead6f1d3 100644 --- a/lib/test/asn1/rrc_test.cc +++ b/lib/test/asn1/rrc_test.cc @@ -259,7 +259,7 @@ int test_bcch_dl_sch_msg2() sib_type1_s& sib1 = bcch_msg.msg.c1().sib_type1(); TESTASSERT(not sib1.p_max_present); TESTASSERT(sib1.sched_info_list.size() == 1); - TESTASSERT(sib1.sched_info_list[0].si_periodicity.value == sched_info_s::si_periodicity_e_::rf16); + TESTASSERT(sib1.sched_info_list[0].si_periodicity.value == si_periodicity_r12_e::rf16); TESTASSERT(sib1.sched_info_list[0].sib_map_info.size() == 1); TESTASSERT(sib1.sched_info_list[0].sib_map_info[0] == sib_type_e::sib_type13_v920); diff --git a/srsue/src/stack/rrc/rrc.cc b/srsue/src/stack/rrc/rrc.cc index 574683ca9..00772e3d6 100644 --- a/srsue/src/stack/rrc/rrc.cc +++ b/srsue/src/stack/rrc/rrc.cc @@ -174,11 +174,11 @@ void rrc::get_metrics(rrc_metrics_t& m) // Save strongest cells metrics for (auto& c : meas_cells) { phy_meas_t meas = {}; - meas.cfo_hz = c->get_cfo_hz(); - meas.earfcn = c->get_earfcn(); - meas.rsrq = c->get_rsrq(); - meas.rsrp = c->get_rsrp(); - meas.pci = c->get_pci(); + meas.cfo_hz = c->get_cfo_hz(); + meas.earfcn = c->get_earfcn(); + meas.rsrq = c->get_rsrq(); + meas.rsrp = c->get_rsrp(); + meas.pci = c->get_pci(); m.neighbour_cells.push_back(meas); } } @@ -1248,7 +1248,7 @@ void rrc::handle_sib1() // Print SIB scheduling info for (uint32_t i = 0; i < sib1->sched_info_list.size(); ++i) { - sched_info_s::si_periodicity_e_ p = sib1->sched_info_list[i].si_periodicity; + si_periodicity_r12_e p = sib1->sched_info_list[i].si_periodicity; for (uint32_t j = 0; j < sib1->sched_info_list[i].sib_map_info.size(); ++j) { sib_type_e t = sib1->sched_info_list[i].sib_map_info[j]; rrc_log->debug("SIB scheduling info, sib_type=%d, si_periodicity=%d\n", t.to_number(), p.to_number()); @@ -1258,8 +1258,8 @@ void rrc::handle_sib1() // Set TDD Config if (sib1->tdd_cfg_present) { srslte_tdd_config_t tdd_config = {}; - tdd_config.sf_config = sib1->tdd_cfg.sf_assign.to_number(); - tdd_config.ss_config = sib1->tdd_cfg.special_sf_patterns.to_number(); + tdd_config.sf_config = sib1->tdd_cfg.sf_assign.to_number(); + tdd_config.ss_config = sib1->tdd_cfg.special_sf_patterns.to_number(); phy->set_config_tdd(tdd_config); } }