/** * * \section COPYRIGHT * * Copyright 2013-2021 Software Radio Systems Limited * * By using this file, you agree to the terms and conditions set * forth in the LICENSE file which can be found at the top level of * the distribution. * */ /******************************************************************************* * * 3GPP TS ASN1 S1AP v16.1.0 (2020-03) * ******************************************************************************/ #ifndef SRSASN1_S1AP_H #define SRSASN1_S1AP_H #include "asn1_utils.h" #include #include namespace asn1 { namespace s1ap { /******************************************************************************* * Constant Definitions ******************************************************************************/ #define ASN1_S1AP_ID_HO_PREP 0 #define ASN1_S1AP_ID_HO_RES_ALLOC 1 #define ASN1_S1AP_ID_HO_NOTIF 2 #define ASN1_S1AP_ID_PATH_SWITCH_REQUEST 3 #define ASN1_S1AP_ID_HO_CANCEL 4 #define ASN1_S1AP_ID_ERAB_SETUP 5 #define ASN1_S1AP_ID_ERAB_MODIFY 6 #define ASN1_S1AP_ID_ERAB_RELEASE 7 #define ASN1_S1AP_ID_ERAB_RELEASE_IND 8 #define ASN1_S1AP_ID_INIT_CONTEXT_SETUP 9 #define ASN1_S1AP_ID_PAGING 10 #define ASN1_S1AP_ID_DL_NAS_TRANSPORT 11 #define ASN1_S1AP_ID_INIT_UE_MSG 12 #define ASN1_S1AP_ID_UL_NAS_TRANSPORT 13 #define ASN1_S1AP_ID_RESET 14 #define ASN1_S1AP_ID_ERROR_IND 15 #define ASN1_S1AP_ID_NAS_NON_DELIVERY_IND 16 #define ASN1_S1AP_ID_S1_SETUP 17 #define ASN1_S1AP_ID_UE_CONTEXT_RELEASE_REQUEST 18 #define ASN1_S1AP_ID_DL_S1CDMA2000TUNNELLING 19 #define ASN1_S1AP_ID_UL_S1CDMA2000TUNNELLING 20 #define ASN1_S1AP_ID_UE_CONTEXT_MOD 21 #define ASN1_S1AP_ID_UE_CAP_INFO_IND 22 #define ASN1_S1AP_ID_UE_CONTEXT_RELEASE 23 #define ASN1_S1AP_ID_ENB_STATUS_TRANSFER 24 #define ASN1_S1AP_ID_MME_STATUS_TRANSFER 25 #define ASN1_S1AP_ID_DEACTIV_TRACE 26 #define ASN1_S1AP_ID_TRACE_START 27 #define ASN1_S1AP_ID_TRACE_FAIL_IND 28 #define ASN1_S1AP_ID_ENB_CFG_UPD 29 #define ASN1_S1AP_ID_MME_CFG_UPD 30 #define ASN1_S1AP_ID_LOCATION_REPORT_CTRL 31 #define ASN1_S1AP_ID_LOCATION_REPORT_FAIL_IND 32 #define ASN1_S1AP_ID_LOCATION_REPORT 33 #define ASN1_S1AP_ID_OVERLOAD_START 34 #define ASN1_S1AP_ID_OVERLOAD_STOP 35 #define ASN1_S1AP_ID_WRITE_REPLACE_WARNING 36 #define ASN1_S1AP_ID_ENB_DIRECT_INFO_TRANSFER 37 #define ASN1_S1AP_ID_MME_DIRECT_INFO_TRANSFER 38 #define ASN1_S1AP_ID_PRIVATE_MSG 39 #define ASN1_S1AP_ID_ENB_CFG_TRANSFER 40 #define ASN1_S1AP_ID_MME_CFG_TRANSFER 41 #define ASN1_S1AP_ID_CELL_TRAFFIC_TRACE 42 #define ASN1_S1AP_ID_KILL 43 #define ASN1_S1AP_ID_DL_UEASSOCIATED_LP_PA_TRANSPORT 44 #define ASN1_S1AP_ID_UL_UEASSOCIATED_LP_PA_TRANSPORT 45 #define ASN1_S1AP_ID_DL_NON_UEASSOCIATED_LP_PA_TRANSPORT 46 #define ASN1_S1AP_ID_UL_NON_UEASSOCIATED_LP_PA_TRANSPORT 47 #define ASN1_S1AP_ID_UE_RADIO_CAP_MATCH 48 #define ASN1_S1AP_ID_PWS_RESTART_IND 49 #define ASN1_S1AP_ID_ERAB_MOD_IND 50 #define ASN1_S1AP_ID_PWS_FAIL_IND 51 #define ASN1_S1AP_ID_REROUTE_NAS_REQUEST 52 #define ASN1_S1AP_ID_UE_CONTEXT_MOD_IND 53 #define ASN1_S1AP_ID_CONN_ESTABLISHMENT_IND 54 #define ASN1_S1AP_ID_UE_CONTEXT_SUSPEND 55 #define ASN1_S1AP_ID_UE_CONTEXT_RESUME 56 #define ASN1_S1AP_ID_NAS_DELIVERY_IND 57 #define ASN1_S1AP_ID_RETRIEVE_UE_INFO 58 #define ASN1_S1AP_ID_UE_INFO_TRANSFER 59 #define ASN1_S1AP_ID_ENBCP_RELOCATION_IND 60 #define ASN1_S1AP_ID_MMECP_RELOCATION_IND 61 #define ASN1_S1AP_ID_SECONDARY_RAT_DATA_USAGE_REPORT 62 #define ASN1_S1AP_MAX_PRIVATE_IES 65535 #define ASN1_S1AP_MAX_PROTOCOL_EXTS 65535 #define ASN1_S1AP_MAX_PROTOCOL_IES 65535 #define ASN1_S1AP_MAXNOOF_CSGS 256 #define ASN1_S1AP_MAXNOOF_ERABS 256 #define ASN1_S1AP_MAXNOOF_TAIS 256 #define ASN1_S1AP_MAXNOOF_TACS 256 #define ASN1_S1AP_MAXNOOF_ERRORS 256 #define ASN1_S1AP_MAXNOOF_BPLMNS 6 #define ASN1_S1AP_MAXNOOF_PLMNS_PER_MME 32 #define ASN1_S1AP_MAXNOOF_EPLMNS 15 #define ASN1_S1AP_MAXNOOF_EPLMNS_PLUS_ONE 16 #define ASN1_S1AP_MAXNOOF_FORB_LACS 4096 #define ASN1_S1AP_MAXNOOF_FORB_TACS 4096 #define ASN1_S1AP_MAXNOOF_INDIVIDUAL_S1_CONNS_TO_RESET 256 #define ASN1_S1AP_MAXNOOF_CELLSIN_UE_HISTORY_INFO 16 #define ASN1_S1AP_MAXNOOF_CELLSINENB 256 #define ASN1_S1AP_MAXNOOF_TA_IFOR_WARNING 65535 #define ASN1_S1AP_MAXNOOF_CELL_ID 65535 #define ASN1_S1AP_MAXNOOF_DCNS 32 #define ASN1_S1AP_MAXNOOF_EMERGENCY_AREA_ID 65535 #define ASN1_S1AP_MAXNOOF_CELLIN_TAI 65535 #define ASN1_S1AP_MAXNOOF_CELLIN_EAI 65535 #define ASN1_S1AP_MAXNOOFENBX2_TLAS 2 #define ASN1_S1AP_MAXNOOFENBX2_EXT_TLAS 16 #define ASN1_S1AP_MAXNOOFENBX2_GTPTLAS 16 #define ASN1_S1AP_MAXNOOF_RATS 8 #define ASN1_S1AP_MAXNOOF_GROUP_IDS 65535 #define ASN1_S1AP_MAXNOOF_MMECS 256 #define ASN1_S1AP_MAXNOOF_CELL_IDFOR_MDT 32 #define ASN1_S1AP_MAXNOOF_TAFOR_MDT 8 #define ASN1_S1AP_MAXNOOF_MDTPLMNS 16 #define ASN1_S1AP_MAXNOOF_CELLSFOR_RESTART 256 #define ASN1_S1AP_MAXNOOF_RESTART_TAIS 2048 #define ASN1_S1AP_MAXNOOF_RESTART_EMERGENCY_AREA_IDS 256 #define ASN1_S1AP_MAX_EARFCN 262143 #define ASN1_S1AP_MAXNOOF_MBSFN_AREA_MDT 8 #define ASN1_S1AP_MAXNOOF_RECOMMENDED_CELLS 16 #define ASN1_S1AP_MAXNOOF_RECOMMENDED_ENBS 16 #define ASN1_S1AP_MAXNOOFTIMEPERIODS 2 #define ASN1_S1AP_MAXNOOF_CELL_IDFOR_QMC 32 #define ASN1_S1AP_MAXNOOF_TAFOR_QMC 8 #define ASN1_S1AP_MAXNOOF_PLM_NFOR_QMC 16 #define ASN1_S1AP_MAXNOOF_BLUETOOTH_NAME 4 #define ASN1_S1AP_MAXNOOF_WLAN_NAME 4 #define ASN1_S1AP_MAXNOOF_CONNECTEDENG_NBS 256 #define ASN1_S1AP_ID_MME_UE_S1AP_ID 0 #define ASN1_S1AP_ID_HANDOV_TYPE 1 #define ASN1_S1AP_ID_CAUSE 2 #define ASN1_S1AP_ID_SOURCE_ID 3 #define ASN1_S1AP_ID_TARGET_ID 4 #define ASN1_S1AP_ID_ENB_UE_S1AP_ID 8 #define ASN1_S1AP_ID_ERAB_SUBJECTTO_DATA_FORWARDING_LIST 12 #define ASN1_S1AP_ID_ERAB_TO_RELEASE_LIST_HO_CMD 13 #define ASN1_S1AP_ID_ERAB_DATA_FORWARDING_ITEM 14 #define ASN1_S1AP_ID_ERAB_RELEASE_ITEM_BEARER_REL_COMP 15 #define ASN1_S1AP_ID_ERAB_TO_BE_SETUP_LIST_BEARER_SU_REQ 16 #define ASN1_S1AP_ID_ERAB_TO_BE_SETUP_ITEM_BEARER_SU_REQ 17 #define ASN1_S1AP_ID_ERAB_ADMITTED_LIST 18 #define ASN1_S1AP_ID_ERAB_FAILED_TO_SETUP_LIST_HO_REQ_ACK 19 #define ASN1_S1AP_ID_ERAB_ADMITTED_ITEM 20 #define ASN1_S1AP_ID_ERAB_FAILEDTO_SETUP_ITEM_HO_REQ_ACK 21 #define ASN1_S1AP_ID_ERAB_TO_BE_SWITCHED_DL_LIST 22 #define ASN1_S1AP_ID_ERAB_TO_BE_SWITCHED_DL_ITEM 23 #define ASN1_S1AP_ID_ERAB_TO_BE_SETUP_LIST_CTXT_SU_REQ 24 #define ASN1_S1AP_ID_TRACE_ACTIVATION 25 #define ASN1_S1AP_ID_NAS_PDU 26 #define ASN1_S1AP_ID_ERAB_TO_BE_SETUP_ITEM_HO_REQ 27 #define ASN1_S1AP_ID_ERAB_SETUP_LIST_BEARER_SU_RES 28 #define ASN1_S1AP_ID_ERAB_FAILED_TO_SETUP_LIST_BEARER_SU_RES 29 #define ASN1_S1AP_ID_ERAB_TO_BE_MODIFIED_LIST_BEARER_MOD_REQ 30 #define ASN1_S1AP_ID_ERAB_MODIFY_LIST_BEARER_MOD_RES 31 #define ASN1_S1AP_ID_ERAB_FAILED_TO_MODIFY_LIST 32 #define ASN1_S1AP_ID_ERAB_TO_BE_RELEASED_LIST 33 #define ASN1_S1AP_ID_ERAB_FAILED_TO_RELEASE_LIST 34 #define ASN1_S1AP_ID_ERAB_ITEM 35 #define ASN1_S1AP_ID_ERAB_TO_BE_MODIFIED_ITEM_BEARER_MOD_REQ 36 #define ASN1_S1AP_ID_ERAB_MODIFY_ITEM_BEARER_MOD_RES 37 #define ASN1_S1AP_ID_ERAB_RELEASE_ITEM 38 #define ASN1_S1AP_ID_ERAB_SETUP_ITEM_BEARER_SU_RES 39 #define ASN1_S1AP_ID_SECURITY_CONTEXT 40 #define ASN1_S1AP_ID_HO_RESTRICT_LIST 41 #define ASN1_S1AP_ID_UE_PAGING_ID 43 #define ASN1_S1AP_ID_PAGING_DRX 44 #define ASN1_S1AP_ID_TAI_LIST 46 #define ASN1_S1AP_ID_TAI_ITEM 47 #define ASN1_S1AP_ID_ERAB_FAILED_TO_SETUP_LIST_CTXT_SU_RES 48 #define ASN1_S1AP_ID_ERAB_RELEASE_ITEM_HO_CMD 49 #define ASN1_S1AP_ID_ERAB_SETUP_ITEM_CTXT_SU_RES 50 #define ASN1_S1AP_ID_ERAB_SETUP_LIST_CTXT_SU_RES 51 #define ASN1_S1AP_ID_ERAB_TO_BE_SETUP_ITEM_CTXT_SU_REQ 52 #define ASN1_S1AP_ID_ERAB_TO_BE_SETUP_LIST_HO_REQ 53 #define ASN1_S1AP_ID_GERA_NTO_LTEHO_INFO_RES 55 #define ASN1_S1AP_ID_UTRA_NTO_LTEHO_INFO_RES 57 #define ASN1_S1AP_ID_CRIT_DIAGNOSTICS 58 #define ASN1_S1AP_ID_GLOBAL_ENB_ID 59 #define ASN1_S1AP_ID_ENBNAME 60 #define ASN1_S1AP_ID_MM_ENAME 61 #define ASN1_S1AP_ID_SERVED_PLMNS 63 #define ASN1_S1AP_ID_SUPPORTED_TAS 64 #define ASN1_S1AP_ID_TIME_TO_WAIT 65 #define ASN1_S1AP_ID_U_EAGGREGATE_MAXIMUM_BITRATE 66 #define ASN1_S1AP_ID_TAI 67 #define ASN1_S1AP_ID_ERAB_RELEASE_LIST_BEARER_REL_COMP 69 #define ASN1_S1AP_ID_CDMA2000_PDU 70 #define ASN1_S1AP_ID_CDMA2000_RAT_TYPE 71 #define ASN1_S1AP_ID_CDMA2000_SECTOR_ID 72 #define ASN1_S1AP_ID_SECURITY_KEY 73 #define ASN1_S1AP_ID_UE_RADIO_CAP 74 #define ASN1_S1AP_ID_GUMMEI_ID 75 #define ASN1_S1AP_ID_ERAB_INFO_LIST_ITEM 78 #define ASN1_S1AP_ID_DIRECT_FORWARDING_PATH_AVAILABILITY 79 #define ASN1_S1AP_ID_UE_ID_IDX_VALUE 80 #define ASN1_S1AP_ID_CDMA2000_HO_STATUS 83 #define ASN1_S1AP_ID_CDMA2000_HO_REQUIRED_IND 84 #define ASN1_S1AP_ID_E_UTRAN_TRACE_ID 86 #define ASN1_S1AP_ID_RELATIVE_MME_CAPACITY 87 #define ASN1_S1AP_ID_SOURCE_MME_UE_S1AP_ID 88 #define ASN1_S1AP_ID_BEARERS_SUBJECT_TO_STATUS_TRANSFER_ITEM 89 #define ASN1_S1AP_ID_ENB_STATUS_TRANSFER_TRANSPARENT_CONTAINER 90 #define ASN1_S1AP_ID_UE_ASSOCIATED_LC_S1_CONN_ITEM 91 #define ASN1_S1AP_ID_RESET_TYPE 92 #define ASN1_S1AP_ID_UE_ASSOCIATED_LC_S1_CONN_LIST_RES_ACK 93 #define ASN1_S1AP_ID_ERAB_TO_BE_SWITCHED_UL_ITEM 94 #define ASN1_S1AP_ID_ERAB_TO_BE_SWITCHED_UL_LIST 95 #define ASN1_S1AP_ID_S_TMSI 96 #define ASN1_S1AP_ID_CDMA2000_ONE_XRAND 97 #define ASN1_S1AP_ID_REQUEST_TYPE 98 #define ASN1_S1AP_ID_UE_S1AP_IDS 99 #define ASN1_S1AP_ID_EUTRAN_CGI 100 #define ASN1_S1AP_ID_OVERLOAD_RESP 101 #define ASN1_S1AP_ID_CDMA2000_ONE_XSRVCC_INFO 102 #define ASN1_S1AP_ID_ERAB_FAILED_TO_BE_RELEASED_LIST 103 #define ASN1_S1AP_ID_SOURCE_TO_TARGET_TRANSPARENT_CONTAINER 104 #define ASN1_S1AP_ID_SERVED_GUMMEIS 105 #define ASN1_S1AP_ID_SUBSCRIBER_PROFILE_IDFOR_RFP 106 #define ASN1_S1AP_ID_UE_SECURITY_CAP 107 #define ASN1_S1AP_ID_CS_FALLBACK_IND 108 #define ASN1_S1AP_ID_CN_DOMAIN 109 #define ASN1_S1AP_ID_ERAB_RELEASED_LIST 110 #define ASN1_S1AP_ID_MSG_ID 111 #define ASN1_S1AP_ID_SERIAL_NUM 112 #define ASN1_S1AP_ID_WARNING_AREA_LIST 113 #define ASN1_S1AP_ID_REPEAT_PERIOD 114 #define ASN1_S1AP_ID_NUMOF_BROADCAST_REQUEST 115 #define ASN1_S1AP_ID_WARNING_TYPE 116 #define ASN1_S1AP_ID_WARNING_SECURITY_INFO 117 #define ASN1_S1AP_ID_DATA_CODING_SCHEME 118 #define ASN1_S1AP_ID_WARNING_MSG_CONTENTS 119 #define ASN1_S1AP_ID_BROADCAST_COMPLETED_AREA_LIST 120 #define ASN1_S1AP_ID_INTER_SYS_INFO_TRANSFER_TYPE_EDT 121 #define ASN1_S1AP_ID_INTER_SYS_INFO_TRANSFER_TYPE_MDT 122 #define ASN1_S1AP_ID_TARGET_TO_SOURCE_TRANSPARENT_CONTAINER 123 #define ASN1_S1AP_ID_SRVCC_OPERATION_POSSIBLE 124 #define ASN1_S1AP_ID_SRVCCHO_IND 125 #define ASN1_S1AP_ID_NAS_DL_COUNT 126 #define ASN1_S1AP_ID_CSG_ID 127 #define ASN1_S1AP_ID_CSG_ID_LIST 128 #define ASN1_S1AP_ID_SON_CFG_TRANSFER_ECT 129 #define ASN1_S1AP_ID_SON_CFG_TRANSFER_MCT 130 #define ASN1_S1AP_ID_TRACE_COLLECTION_ENTITY_IP_ADDRESS 131 #define ASN1_S1AP_ID_MS_CLASSMARK2 132 #define ASN1_S1AP_ID_MS_CLASSMARK3 133 #define ASN1_S1AP_ID_RRC_ESTABLISHMENT_CAUSE 134 #define ASN1_S1AP_ID_NAS_SECURITY_PARAMSFROM_E_UTRAN 135 #define ASN1_S1AP_ID_NAS_SECURITY_PARAMSTO_E_UTRAN 136 #define ASN1_S1AP_ID_DEFAULT_PAGING_DRX 137 #define ASN1_S1AP_ID_SOURCE_TO_TARGET_TRANSPARENT_CONTAINER_SECONDARY 138 #define ASN1_S1AP_ID_TARGET_TO_SOURCE_TRANSPARENT_CONTAINER_SECONDARY 139 #define ASN1_S1AP_ID_EUTRAN_ROUND_TRIP_DELAY_ESTIMATION_INFO 140 #define ASN1_S1AP_ID_BROADCAST_CANCELLED_AREA_LIST 141 #define ASN1_S1AP_ID_CONCURRENT_WARNING_MSG_IND 142 #define ASN1_S1AP_ID_DATA_FORWARDING_NOT_POSSIBLE 143 #define ASN1_S1AP_ID_EXTENDED_REPEAT_PERIOD 144 #define ASN1_S1AP_ID_CELL_ACCESS_MODE 145 #define ASN1_S1AP_ID_CSG_MEMBERSHIP_STATUS 146 #define ASN1_S1AP_ID_LP_PA_PDU 147 #define ASN1_S1AP_ID_ROUTING_ID 148 #define ASN1_S1AP_ID_TIME_SYNCHRONISATION_INFO 149 #define ASN1_S1AP_ID_PS_SERVICE_NOT_AVAILABLE 150 #define ASN1_S1AP_ID_PAGING_PRIO 151 #define ASN1_S1AP_ID_X2_TNL_CFG_INFO 152 #define ASN1_S1AP_ID_ENBX2_EXTENDED_TRANSPORT_LAYER_ADDRESSES 153 #define ASN1_S1AP_ID_GUMMEI_LIST 154 #define ASN1_S1AP_ID_GW_TRANSPORT_LAYER_ADDRESS 155 #define ASN1_S1AP_ID_CORRELATION_ID 156 #define ASN1_S1AP_ID_SOURCE_MME_GUMMEI 157 #define ASN1_S1AP_ID_MME_UE_S1AP_ID_MINUS2 158 #define ASN1_S1AP_ID_REGISTERED_LAI 159 #define ASN1_S1AP_ID_RELAY_NODE_IND 160 #define ASN1_S1AP_ID_TRAFFIC_LOAD_REDUCTION_IND 161 #define ASN1_S1AP_ID_MDT_CFG 162 #define ASN1_S1AP_ID_MME_RELAY_SUPPORT_IND 163 #define ASN1_S1AP_ID_GW_CONTEXT_RELEASE_IND 164 #define ASN1_S1AP_ID_MANAGEMENT_BASED_MDT_ALLOWED 165 #define ASN1_S1AP_ID_PRIVACY_IND 166 #define ASN1_S1AP_ID_TIME_UE_STAYED_IN_CELL_ENHANCED_GRANULARITY 167 #define ASN1_S1AP_ID_HO_CAUSE 168 #define ASN1_S1AP_ID_VOICE_SUPPORT_MATCH_IND 169 #define ASN1_S1AP_ID_GUMMEI_TYPE 170 #define ASN1_S1AP_ID_M3_CFG 171 #define ASN1_S1AP_ID_M4_CFG 172 #define ASN1_S1AP_ID_M5_CFG 173 #define ASN1_S1AP_ID_MDT_LOCATION_INFO 174 #define ASN1_S1AP_ID_MOB_INFO 175 #define ASN1_S1AP_ID_TUNNEL_INFO_FOR_BBF 176 #define ASN1_S1AP_ID_MANAGEMENT_BASED_MDTPLMN_LIST 177 #define ASN1_S1AP_ID_SIG_BASED_MDTPLMN_LIST 178 #define ASN1_S1AP_ID_ULCOUNT_VALUE_EXTENDED 179 #define ASN1_S1AP_ID_DLCOUNT_VALUE_EXTENDED 180 #define ASN1_S1AP_ID_RECEIVE_STATUS_OF_ULPDCPSDUS_EXTENDED 181 #define ASN1_S1AP_ID_ECGI_LIST_FOR_RESTART 182 #define ASN1_S1AP_ID_SIPTO_CORRELATION_ID 183 #define ASN1_S1AP_ID_SIPTO_L_GW_TRANSPORT_LAYER_ADDRESS 184 #define ASN1_S1AP_ID_TRANSPORT_INFO 185 #define ASN1_S1AP_ID_LHN_ID 186 #define ASN1_S1AP_ID_ADD_CS_FALLBACK_IND 187 #define ASN1_S1AP_ID_TAI_LIST_FOR_RESTART 188 #define ASN1_S1AP_ID_USER_LOCATION_INFO 189 #define ASN1_S1AP_ID_EMERGENCY_AREA_ID_LIST_FOR_RESTART 190 #define ASN1_S1AP_ID_KILL_ALL_WARNING_MSGS 191 #define ASN1_S1AP_ID_MASKED_IMEISV 192 #define ASN1_S1AP_ID_ENB_INDIRECT_X2_TRANSPORT_LAYER_ADDRESSES 193 #define ASN1_S1AP_ID_U_E_HISTORY_INFO_FROM_THE_UE 194 #define ASN1_S1AP_ID_PRO_SE_AUTHORIZED 195 #define ASN1_S1AP_ID_EXPECTED_UE_BEHAVIOUR 196 #define ASN1_S1AP_ID_LOGGED_MBSFNMDT 197 #define ASN1_S1AP_ID_UE_RADIO_CAP_FOR_PAGING 198 #define ASN1_S1AP_ID_ERAB_TO_BE_MODIFIED_LIST_BEARER_MOD_IND 199 #define ASN1_S1AP_ID_ERAB_TO_BE_MODIFIED_ITEM_BEARER_MOD_IND 200 #define ASN1_S1AP_ID_ERAB_NOT_TO_BE_MODIFIED_LIST_BEARER_MOD_IND 201 #define ASN1_S1AP_ID_ERAB_NOT_TO_BE_MODIFIED_ITEM_BEARER_MOD_IND 202 #define ASN1_S1AP_ID_ERAB_MODIFY_LIST_BEARER_MOD_CONF 203 #define ASN1_S1AP_ID_ERAB_MODIFY_ITEM_BEARER_MOD_CONF 204 #define ASN1_S1AP_ID_ERAB_FAILED_TO_MODIFY_LIST_BEARER_MOD_CONF 205 #define ASN1_S1AP_ID_SON_INFO_REPORT 206 #define ASN1_S1AP_ID_MUTING_AVAILABILITY_IND 207 #define ASN1_S1AP_ID_MUTING_PATTERN_INFO 208 #define ASN1_S1AP_ID_SYNCHRONISATION_INFO 209 #define ASN1_S1AP_ID_ERAB_TO_BE_RELEASED_LIST_BEARER_MOD_CONF 210 #define ASN1_S1AP_ID_ASSIST_DATA_FOR_PAGING 211 #define ASN1_S1AP_ID_CELL_ID_AND_CE_LEVEL_FOR_CE_CAPABLE_UES 212 #define ASN1_S1AP_ID_INFO_ON_RECOMMENDED_CELLS_AND_ENBS_FOR_PAGING 213 #define ASN1_S1AP_ID_RECOMMENDED_CELL_ITEM 214 #define ASN1_S1AP_ID_RECOMMENDED_ENB_ITEM 215 #define ASN1_S1AP_ID_PRO_SE_UETO_NETWORK_RELAYING 216 #define ASN1_S1AP_ID_ULCOUNT_VALUE_PDCP_SNLEN18 217 #define ASN1_S1AP_ID_DLCOUNT_VALUE_PDCP_SNLEN18 218 #define ASN1_S1AP_ID_RECEIVE_STATUS_OF_ULPDCPSDUS_PDCP_SNLEN18 219 #define ASN1_S1AP_ID_M6_CFG 220 #define ASN1_S1AP_ID_M7_CFG 221 #define ASN1_S1AP_ID_PW_SFAILED_ECGI_LIST 222 #define ASN1_S1AP_ID_MME_GROUP_ID 223 #define ASN1_S1AP_ID_ADD_GUTI 224 #define ASN1_S1AP_ID_S1_MSG 225 #define ASN1_S1AP_ID_CSG_MEMBERSHIP_INFO 226 #define ASN1_S1AP_ID_PAGING_E_DRX_INFO 227 #define ASN1_S1AP_ID_UE_RETENTION_INFO 228 #define ASN1_S1AP_ID_UE_USAGE_TYPE 230 #define ASN1_S1AP_ID_EXTENDED_UE_ID_IDX_VALUE 231 #define ASN1_S1AP_ID_RAT_TYPE 232 #define ASN1_S1AP_ID_BEARER_TYPE 233 #define ASN1_S1AP_ID_NB_IO_T_DEFAULT_PAGING_DRX 234 #define ASN1_S1AP_ID_ERAB_FAILED_TO_RESUME_LIST_RESUME_REQ 235 #define ASN1_S1AP_ID_ERAB_FAILED_TO_RESUME_ITEM_RESUME_REQ 236 #define ASN1_S1AP_ID_ERAB_FAILED_TO_RESUME_LIST_RESUME_RES 237 #define ASN1_S1AP_ID_ERAB_FAILED_TO_RESUME_ITEM_RESUME_RES 238 #define ASN1_S1AP_ID_NB_IO_T_PAGING_E_DRX_INFO 239 #define ASN1_S1AP_ID_V2XSERVICES_AUTHORIZED 240 #define ASN1_S1AP_ID_UEUSER_PLANE_CIO_TSUPPORT_IND 241 #define ASN1_S1AP_ID_CE_MODE_B_SUPPORT_IND 242 #define ASN1_S1AP_ID_SRVCC_OPERATION_NOT_POSSIBLE 243 #define ASN1_S1AP_ID_NB_IO_T_UE_ID_IDX_VALUE 244 #define ASN1_S1AP_ID_RRC_RESUME_CAUSE 245 #define ASN1_S1AP_ID_DCN_ID 246 #define ASN1_S1AP_ID_SERVED_DCNS 247 #define ASN1_S1AP_ID_UE_SIDELINK_AGGREGATE_MAXIMUM_BITRATE 248 #define ASN1_S1AP_ID_DLNASPDU_DELIVERY_ACK_REQUEST 249 #define ASN1_S1AP_ID_COVERAGE_LEVEL 250 #define ASN1_S1AP_ID_ENHANCED_COVERAGE_RESTRICTED 251 #define ASN1_S1AP_ID_UE_LEVEL_QOS_PARAMS 252 #define ASN1_S1AP_ID_DL_CP_SECURITY_INFO 253 #define ASN1_S1AP_ID_UL_CP_SECURITY_INFO 254 #define ASN1_S1AP_ID_EXTENDED_ERAB_MAXIMUM_BITRATE_DL 255 #define ASN1_S1AP_ID_EXTENDED_ERAB_MAXIMUM_BITRATE_UL 256 #define ASN1_S1AP_ID_EXTENDED_ERAB_GUARANTEED_BITRATE_DL 257 #define ASN1_S1AP_ID_EXTENDED_ERAB_GUARANTEED_BITRATE_UL 258 #define ASN1_S1AP_ID_EXTENDED_U_EAGGREGATE_MAXIMUM_BIT_RATE_DL 259 #define ASN1_S1AP_ID_EXTENDED_U_EAGGREGATE_MAXIMUM_BIT_RATE_UL 260 #define ASN1_S1AP_ID_NRRESTRICTIN_EP_SAS_SECONDARY_RAT 261 #define ASN1_S1AP_ID_UE_APP_LAYER_MEAS_CFG 262 #define ASN1_S1AP_ID_UE_APPLICATION_LAYER_MEAS_CAP 263 #define ASN1_S1AP_ID_SECONDARY_RAT_DATA_USAGE_REPORT_LIST 264 #define ASN1_S1AP_ID_SECONDARY_RAT_DATA_USAGE_REPORT_ITEM 265 #define ASN1_S1AP_ID_HO_FLAG 266 #define ASN1_S1AP_ID_ERABUSAGE_REPORT_ITEM 267 #define ASN1_S1AP_ID_SECONDARY_RAT_DATA_USAGE_REQUEST 268 #define ASN1_S1AP_ID_NRUE_SECURITY_CAP 269 #define ASN1_S1AP_ID_UNLICENSED_SPEC_RESTRICT 270 #define ASN1_S1AP_ID_CE_MODE_BRESTRICTED 271 #define ASN1_S1AP_ID_LTE_M_IND 272 #define ASN1_S1AP_ID_DL_PACKET_LOSS_RATE 273 #define ASN1_S1AP_ID_UL_PACKET_LOSS_RATE 274 #define ASN1_S1AP_ID_UE_CAP_INFO_REQUEST 275 #define ASN1_S1AP_ID_SERVICE_TYPE 276 #define ASN1_S1AP_ID_AERIAL_UESUBSCRIPTION_INFO 277 #define ASN1_S1AP_ID_SUBSCRIPTION_BASED_UE_DIFFERENTIATION_INFO 278 #define ASN1_S1AP_ID_END_IND 280 #define ASN1_S1AP_ID_EDT_SESSION 281 #define ASN1_S1AP_ID_CN_TYPE_RESTRICTS 282 #define ASN1_S1AP_ID_PENDING_DATA_IND 283 #define ASN1_S1AP_ID_BLUETOOTH_MEAS_CFG 284 #define ASN1_S1AP_ID_WLAN_MEAS_CFG 285 #define ASN1_S1AP_ID_WARNING_AREA_COORDINATES 286 #define ASN1_S1AP_ID_NRRESTRICTIN5_GS 287 #define ASN1_S1AP_ID_PS_CELL_INFO 288 #define ASN1_S1AP_ID_LAST_NG_RANPLMN_ID 290 #define ASN1_S1AP_ID_CONNECTEDENG_NB_LIST 291 #define ASN1_S1AP_ID_CONNECTEDENG_NB_TO_ADD_LIST 292 #define ASN1_S1AP_ID_CONNECTEDENG_NB_TO_REM_LIST 293 #define ASN1_S1AP_ID_EN_DCSON_CFG_TRANSFER_ECT 294 #define ASN1_S1AP_ID_EN_DCSON_CFG_TRANSFER_MCT 295 #define ASN1_S1AP_ID_IM_SVOICE_EP_SFALLBACKFROM5_G 296 #define ASN1_S1AP_ID_TIME_SINCE_SECONDARY_NODE_RELEASE 297 #define ASN1_S1AP_ID_REQUEST_TYPE_ADD_INFO 298 #define ASN1_S1AP_ID_ADD_RRM_PRIO_IDX 299 #define ASN1_S1AP_ID_CONTEXTAT_SOURCE 300 #define ASN1_S1AP_MAXNOOF_IRAT_REPORT_CELLS 128 #define ASN1_S1AP_MAXNOOFCANDIDATE_CELLS 16 #define ASN1_S1AP_MAXNOOF_CELLINENB 256 /******************************************************************************* * Struct Definitions ******************************************************************************/ // PrivateIE-ID ::= CHOICE struct private_ie_id_c { struct types_opts { enum options { local, global, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods private_ie_id_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 uint32_t& local() { assert_choice_type(types::local, type_, "PrivateIE-ID"); return c; } const uint32_t& local() const { assert_choice_type(types::local, type_, "PrivateIE-ID"); return c; } uint32_t& set_local(); void set_global(); private: types type_; uint32_t c; }; // PrivateIE-Field{S1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE{{S1AP-PRIVATE-IES}} template struct private_ie_field_s { private_ie_id_c id; crit_e crit; typename ies_set_paramT_::value_c value; SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // PrivateIE-Container{S1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE (SIZE (1..65535)) OF PrivateIE-Field template using private_ie_container_l = dyn_seq_of, 1, 65535, true>; // ProtocolIE-FieldPair{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE{{S1AP-PROTOCOL-IES-PAIR}} template struct protocol_ie_field_pair_s { uint32_t id = 0; crit_e first_crit; typename ies_set_paramT_::first_value_c first_value; crit_e second_crit; typename ies_set_paramT_::second_value_c second_value; SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; bool load_info_obj(const uint32_t& id_); }; // ProtocolIE-ContainerPair{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE (SIZE (0..65535)) OF ProtocolIE-FieldPair template using protocol_ie_container_pair_l = dyn_seq_of, 0, 65535, true>; // ActivatedCellsList-Item ::= SEQUENCE struct activ_cells_list_item_s { bool ext = false; unbounded_octstring cell_id; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ActivatedCellsList ::= SEQUENCE (SIZE (0..256)) OF ActivatedCellsList-Item using activ_cells_list_l = dyn_array; // GUMMEI-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using gummei_ext_ies_o = protocol_ext_empty_o; // PLMNidentity ::= OCTET STRING using plm_nid = fixed_octstring<3, true>; // Additional-GUTI-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using add_guti_ext_ies_o = protocol_ext_empty_o; using gummei_ext_ies_container = protocol_ext_container_empty_l; // GUMMEI ::= SEQUENCE struct gummei_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plmn_id; fixed_octstring<2, true> mme_group_id; fixed_octstring<1, true> mme_code; gummei_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using add_guti_ext_ies_container = protocol_ext_container_empty_l; // Additional-GUTI ::= SEQUENCE struct add_guti_s { bool ext = false; bool ie_exts_present = false; gummei_s gummei; fixed_octstring<4, true> m_tmsi; add_guti_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // AllocationAndRetentionPriority-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using alloc_and_retention_prio_ext_ies_o = protocol_ext_empty_o; // Pre-emptionCapability ::= ENUMERATED struct pre_emption_cap_opts { enum options { shall_not_trigger_pre_emption, may_trigger_pre_emption, nulltype } value; const char* to_string() const; }; typedef enumerated pre_emption_cap_e; // Pre-emptionVulnerability ::= ENUMERATED struct pre_emption_vulnerability_opts { enum options { not_pre_emptable, pre_emptable, nulltype } value; const char* to_string() const; }; typedef enumerated pre_emption_vulnerability_e; using alloc_and_retention_prio_ext_ies_container = protocol_ext_container_empty_l; // AllocationAndRetentionPriority ::= SEQUENCE struct alloc_and_retention_prio_s { bool ext = false; bool ie_exts_present = false; uint8_t prio_level = 0; pre_emption_cap_e pre_emption_cap; pre_emption_vulnerability_e pre_emption_vulnerability; alloc_and_retention_prio_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // EUTRAN-CGI-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using eutran_cgi_ext_ies_o = protocol_ext_empty_o; // TAI-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using tai_ext_ies_o = protocol_ext_empty_o; using eutran_cgi_ext_ies_container = protocol_ext_container_empty_l; // EUTRAN-CGI ::= SEQUENCE struct eutran_cgi_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plm_nid; fixed_bitstring<28, false, true> cell_id; eutran_cgi_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using tai_ext_ies_container = protocol_ext_container_empty_l; // TAI ::= SEQUENCE struct tai_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plm_nid; fixed_octstring<2, true> tac; tai_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CellBasedMDT-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using cell_based_mdt_ext_ies_o = protocol_ext_empty_o; // CellIdListforMDT ::= SEQUENCE (SIZE (1..32)) OF EUTRAN-CGI using cell_id_listfor_mdt_l = dyn_array; // TABasedMDT-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using ta_based_mdt_ext_ies_o = protocol_ext_empty_o; // TAIBasedMDT-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using tai_based_mdt_ext_ies_o = protocol_ext_empty_o; // TAIListforMDT ::= SEQUENCE (SIZE (1..8)) OF TAI using tai_listfor_mdt_l = dyn_array; // TAListforMDT ::= SEQUENCE (SIZE (1..8)) OF OCTET STRING (SIZE (2)) using ta_listfor_mdt_l = bounded_array, 8>; using cell_based_mdt_ext_ies_container = protocol_ext_container_empty_l; // CellBasedMDT ::= SEQUENCE struct cell_based_mdt_s { bool ext = false; bool ie_exts_present = false; cell_id_listfor_mdt_l cell_id_listfor_mdt; cell_based_mdt_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using ta_based_mdt_ext_ies_container = protocol_ext_container_empty_l; // TABasedMDT ::= SEQUENCE struct ta_based_mdt_s { bool ext = false; bool ie_exts_present = false; ta_listfor_mdt_l talistfor_mdt; ta_based_mdt_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using tai_based_mdt_ext_ies_container = protocol_ext_container_empty_l; // TAIBasedMDT ::= SEQUENCE struct tai_based_mdt_s { bool ext = false; bool ie_exts_present = false; tai_listfor_mdt_l tai_listfor_mdt; tai_based_mdt_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // AreaScopeOfMDT ::= CHOICE struct area_scope_of_mdt_c { struct types_opts { enum options { cell_based, tabased, plmn_wide, /*...*/ tai_based, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods area_scope_of_mdt_c() = default; area_scope_of_mdt_c(const area_scope_of_mdt_c& other); area_scope_of_mdt_c& operator=(const area_scope_of_mdt_c& other); ~area_scope_of_mdt_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters cell_based_mdt_s& cell_based() { assert_choice_type(types::cell_based, type_, "AreaScopeOfMDT"); return c.get(); } ta_based_mdt_s& tabased() { assert_choice_type(types::tabased, type_, "AreaScopeOfMDT"); return c.get(); } tai_based_mdt_s& tai_based() { assert_choice_type(types::tai_based, type_, "AreaScopeOfMDT"); return c.get(); } const cell_based_mdt_s& cell_based() const { assert_choice_type(types::cell_based, type_, "AreaScopeOfMDT"); return c.get(); } const ta_based_mdt_s& tabased() const { assert_choice_type(types::tabased, type_, "AreaScopeOfMDT"); return c.get(); } const tai_based_mdt_s& tai_based() const { assert_choice_type(types::tai_based, type_, "AreaScopeOfMDT"); return c.get(); } cell_based_mdt_s& set_cell_based(); ta_based_mdt_s& set_tabased(); void set_plmn_wide(); tai_based_mdt_s& set_tai_based(); private: types type_; choice_buffer_t c; void destroy_(); }; // CellBasedQMC-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using cell_based_qmc_ext_ies_o = protocol_ext_empty_o; // CellIdListforQMC ::= SEQUENCE (SIZE (1..32)) OF EUTRAN-CGI using cell_id_listfor_qmc_l = dyn_array; // PLMNAreaBasedQMC-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using plmn_area_based_qmc_ext_ies_o = protocol_ext_empty_o; // PLMNListforQMC ::= SEQUENCE (SIZE (1..16)) OF OCTET STRING (SIZE (3)) using plmn_listfor_qmc_l = bounded_array, 16>; // TABasedQMC-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using ta_based_qmc_ext_ies_o = protocol_ext_empty_o; // TAIBasedQMC-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using tai_based_qmc_ext_ies_o = protocol_ext_empty_o; // TAIListforQMC ::= SEQUENCE (SIZE (1..8)) OF TAI using tai_listfor_qmc_l = dyn_array; // TAListforQMC ::= SEQUENCE (SIZE (1..8)) OF OCTET STRING (SIZE (2)) using ta_listfor_qmc_l = bounded_array, 8>; using cell_based_qmc_ext_ies_container = protocol_ext_container_empty_l; // CellBasedQMC ::= SEQUENCE struct cell_based_qmc_s { bool ext = false; bool ie_exts_present = false; cell_id_listfor_qmc_l cell_id_listfor_qmc; cell_based_qmc_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using plmn_area_based_qmc_ext_ies_container = protocol_ext_container_empty_l; // PLMNAreaBasedQMC ::= SEQUENCE struct plmn_area_based_qmc_s { bool ext = false; bool ie_exts_present = false; plmn_listfor_qmc_l plmn_listfor_qmc; plmn_area_based_qmc_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using ta_based_qmc_ext_ies_container = protocol_ext_container_empty_l; // TABasedQMC ::= SEQUENCE struct ta_based_qmc_s { bool ext = false; bool ie_exts_present = false; ta_listfor_qmc_l talistfor_qmc; ta_based_qmc_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using tai_based_qmc_ext_ies_container = protocol_ext_container_empty_l; // TAIBasedQMC ::= SEQUENCE struct tai_based_qmc_s { bool ext = false; bool ie_exts_present = false; tai_listfor_qmc_l tai_listfor_qmc; tai_based_qmc_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // AreaScopeOfQMC ::= CHOICE struct area_scope_of_qmc_c { struct types_opts { enum options { cell_based, tabased, tai_based, plmn_area_based, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods area_scope_of_qmc_c() = default; area_scope_of_qmc_c(const area_scope_of_qmc_c& other); area_scope_of_qmc_c& operator=(const area_scope_of_qmc_c& other); ~area_scope_of_qmc_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters cell_based_qmc_s& cell_based() { assert_choice_type(types::cell_based, type_, "AreaScopeOfQMC"); return c.get(); } ta_based_qmc_s& tabased() { assert_choice_type(types::tabased, type_, "AreaScopeOfQMC"); return c.get(); } tai_based_qmc_s& tai_based() { assert_choice_type(types::tai_based, type_, "AreaScopeOfQMC"); return c.get(); } plmn_area_based_qmc_s& plmn_area_based() { assert_choice_type(types::plmn_area_based, type_, "AreaScopeOfQMC"); return c.get(); } const cell_based_qmc_s& cell_based() const { assert_choice_type(types::cell_based, type_, "AreaScopeOfQMC"); return c.get(); } const ta_based_qmc_s& tabased() const { assert_choice_type(types::tabased, type_, "AreaScopeOfQMC"); return c.get(); } const tai_based_qmc_s& tai_based() const { assert_choice_type(types::tai_based, type_, "AreaScopeOfQMC"); return c.get(); } const plmn_area_based_qmc_s& plmn_area_based() const { assert_choice_type(types::plmn_area_based, type_, "AreaScopeOfQMC"); return c.get(); } cell_based_qmc_s& set_cell_based(); ta_based_qmc_s& set_tabased(); tai_based_qmc_s& set_tai_based(); plmn_area_based_qmc_s& set_plmn_area_based(); private: types type_; choice_buffer_t c; void destroy_(); }; // CellIdentifierAndCELevelForCECapableUEs-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using cell_id_and_ce_level_for_ce_capable_ues_ext_ies_o = protocol_ext_empty_o; using cell_id_and_ce_level_for_ce_capable_ues_ext_ies_container = protocol_ext_container_empty_l; // CellIdentifierAndCELevelForCECapableUEs ::= SEQUENCE struct cell_id_and_ce_level_for_ce_capable_ues_s { bool ext = false; bool ie_exts_present = false; eutran_cgi_s global_cell_id; unbounded_octstring celevel; cell_id_and_ce_level_for_ce_capable_ues_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // InformationForCECapableUEs-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using info_for_ce_capable_ues_ext_ies_o = protocol_ext_empty_o; using info_for_ce_capable_ues_ext_ies_container = protocol_ext_container_empty_l; // AssistanceDataForCECapableUEs ::= SEQUENCE struct assist_data_for_ce_capable_ues_s { bool ext = false; bool ie_exts_present = false; cell_id_and_ce_level_for_ce_capable_ues_s cell_id_and_ce_level_for_ce_capable_ues; info_for_ce_capable_ues_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RecommendedCellsForPagingItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using recommended_cells_for_paging_item_ext_ies_o = protocol_ext_empty_o; using recommended_cells_for_paging_item_ext_ies_container = protocol_ext_container_empty_l; // RecommendedCellItem ::= SEQUENCE struct recommended_cell_item_s { bool ext = false; bool time_stayed_in_cell_present = false; bool ie_exts_present = false; eutran_cgi_s eutran_cgi; uint16_t time_stayed_in_cell = 0; recommended_cells_for_paging_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RecommendedCellItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct recommended_cell_item_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { recommended_cell_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::recommended_cell_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters recommended_cell_item_s& recommended_cell_item() { return c; } const recommended_cell_item_s& recommended_cell_item() const { return c; } private: recommended_cell_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // RecommendedCellList ::= SEQUENCE (SIZE (1..16)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} using recommended_cell_list_l = bounded_array, 16>; // RecommendedCellsForPaging-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using recommended_cells_for_paging_ext_ies_o = protocol_ext_empty_o; // AssistanceDataForRecommendedCells-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using assist_data_for_recommended_cells_ext_ies_o = protocol_ext_empty_o; // NextPagingAreaScope ::= ENUMERATED struct next_paging_area_scope_opts { enum options { same, changed, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated next_paging_area_scope_e; // PagingAttemptInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using paging_attempt_info_ext_ies_o = protocol_ext_empty_o; using recommended_cells_for_paging_ext_ies_container = protocol_ext_container_empty_l; // RecommendedCellsForPaging ::= SEQUENCE struct recommended_cells_for_paging_s { bool ext = false; bool ie_exts_present = false; recommended_cell_list_l recommended_cell_list; recommended_cells_for_paging_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // AssistanceDataForPaging-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using assist_data_for_paging_ext_ies_o = protocol_ext_empty_o; using assist_data_for_recommended_cells_ext_ies_container = protocol_ext_container_empty_l; // AssistanceDataForRecommendedCells ::= SEQUENCE struct assist_data_for_recommended_cells_s { bool ext = false; bool ie_exts_present = false; recommended_cells_for_paging_s recommended_cells_for_paging; assist_data_for_recommended_cells_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using paging_attempt_info_ext_ies_container = protocol_ext_container_empty_l; // PagingAttemptInformation ::= SEQUENCE struct paging_attempt_info_s { bool ext = false; bool next_paging_area_scope_present = false; bool ie_exts_present = false; uint8_t paging_attempt_count = 1; uint8_t intended_nof_paging_attempts = 1; next_paging_area_scope_e next_paging_area_scope; paging_attempt_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using assist_data_for_paging_ext_ies_container = protocol_ext_container_empty_l; // AssistanceDataForPaging ::= SEQUENCE struct assist_data_for_paging_s { bool ext = false; bool assist_data_for_recommended_cells_present = false; bool assist_data_for_ce_capable_ues_present = false; bool paging_attempt_info_present = false; bool ie_exts_present = false; assist_data_for_recommended_cells_s assist_data_for_recommended_cells; assist_data_for_ce_capable_ues_s assist_data_for_ce_capable_ues; paging_attempt_info_s paging_attempt_info; assist_data_for_paging_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // BPLMNs ::= SEQUENCE (SIZE (1..6)) OF OCTET STRING (SIZE (3)) using bplmns_l = bounded_array, 6>; // COUNTValueExtended-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using count_value_extended_ext_ies_o = protocol_ext_empty_o; // COUNTvaluePDCP-SNlength18-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using coun_tvalue_pdcp_snlen18_ext_ies_o = protocol_ext_empty_o; using count_value_extended_ext_ies_container = protocol_ext_container_empty_l; // COUNTValueExtended ::= SEQUENCE struct count_value_extended_s { bool ext = false; bool ie_exts_present = false; uint16_t pdcp_sn_extended = 0; uint32_t hfn_modified = 0; count_value_extended_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // COUNTvalue-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using coun_tvalue_ext_ies_o = protocol_ext_empty_o; using coun_tvalue_pdcp_snlen18_ext_ies_container = protocol_ext_container_empty_l; // COUNTvaluePDCP-SNlength18 ::= SEQUENCE struct coun_tvalue_pdcp_snlen18_s { bool ext = false; bool ie_exts_present = false; uint32_t pdcp_snlen18 = 0; uint16_t hfnfor_pdcp_snlen18 = 0; coun_tvalue_pdcp_snlen18_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // Bearers-SubjectToStatusTransfer-ItemExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct bearers_subject_to_status_transfer_item_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { ulcount_value_extended, dlcount_value_extended, receive_status_of_ulpdcpsdus_extended, ulcount_value_pdcp_snlen18, dlcount_value_pdcp_snlen18, receive_status_of_ulpdcpsdus_pdcp_snlen18, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 count_value_extended_s& ulcount_value_extended(); count_value_extended_s& dlcount_value_extended(); bounded_bitstring<1, 16384, false, true>& receive_status_of_ulpdcpsdus_extended(); coun_tvalue_pdcp_snlen18_s& ulcount_value_pdcp_snlen18(); coun_tvalue_pdcp_snlen18_s& dlcount_value_pdcp_snlen18(); bounded_bitstring<1, 131072, false, true>& receive_status_of_ulpdcpsdus_pdcp_snlen18(); const count_value_extended_s& ulcount_value_extended() const; const count_value_extended_s& dlcount_value_extended() const; const bounded_bitstring<1, 16384, false, true>& receive_status_of_ulpdcpsdus_extended() const; const coun_tvalue_pdcp_snlen18_s& ulcount_value_pdcp_snlen18() const; const coun_tvalue_pdcp_snlen18_s& dlcount_value_pdcp_snlen18() const; const bounded_bitstring<1, 131072, false, true>& receive_status_of_ulpdcpsdus_pdcp_snlen18() const; private: types type_; choice_buffer_t, bounded_bitstring<1, 16384, false, true>, coun_tvalue_pdcp_snlen18_s, count_value_extended_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; using coun_tvalue_ext_ies_container = protocol_ext_container_empty_l; // COUNTvalue ::= SEQUENCE struct coun_tvalue_s { bool ext = false; bool ie_exts_present = false; uint16_t pdcp_sn = 0; uint32_t hfn = 0; coun_tvalue_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; struct bearers_subject_to_status_transfer_item_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool ulcount_value_extended_present = false; bool dlcount_value_extended_present = false; bool receive_status_of_ulpdcpsdus_extended_present = false; bool ulcount_value_pdcp_snlen18_present = false; bool dlcount_value_pdcp_snlen18_present = false; bool receive_status_of_ulpdcpsdus_pdcp_snlen18_present = false; ie_field_s ulcount_value_extended; ie_field_s dlcount_value_extended; ie_field_s > receive_status_of_ulpdcpsdus_extended; ie_field_s ulcount_value_pdcp_snlen18; ie_field_s dlcount_value_pdcp_snlen18; ie_field_s > receive_status_of_ulpdcpsdus_pdcp_snlen18; // sequence methods bearers_subject_to_status_transfer_item_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // Bearers-SubjectToStatusTransfer-Item ::= SEQUENCE struct bearers_subject_to_status_transfer_item_s { bool ext = false; bool receive_statusof_ulpdcpsdus_present = false; bool ie_exts_present = false; uint8_t erab_id = 0; coun_tvalue_s ul_coun_tvalue; coun_tvalue_s dl_coun_tvalue; fixed_bitstring<4096, false, true> receive_statusof_ulpdcpsdus; bearers_subject_to_status_transfer_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // Bearers-SubjectToStatusTransfer-ItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct bearers_subject_to_status_transfer_item_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { bearers_subject_to_status_transfer_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::bearers_subject_to_status_transfer_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters bearers_subject_to_status_transfer_item_s& bearers_subject_to_status_transfer_item() { return c; } const bearers_subject_to_status_transfer_item_s& bearers_subject_to_status_transfer_item() const { return c; } private: bearers_subject_to_status_transfer_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // Bearers-SubjectToStatusTransferList ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : // IEsSetParam} using bearers_subject_to_status_transfer_list_l = dyn_array >; // BluetoothMeasConfigNameList ::= SEQUENCE (SIZE (1..4)) OF OCTET STRING (SIZE (1..248)) using bluetooth_meas_cfg_name_list_l = bounded_array, 4>; // BluetoothMeasConfig ::= ENUMERATED struct bluetooth_meas_cfg_opts { enum options { setup, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated bluetooth_meas_cfg_e; // BluetoothMeasurementConfiguration-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using bluetooth_meas_cfg_ext_ies_o = protocol_ext_empty_o; using bluetooth_meas_cfg_ext_ies_container = protocol_ext_container_empty_l; // BluetoothMeasurementConfiguration ::= SEQUENCE struct bluetooth_meas_cfg_s { struct bt_rssi_opts { enum options { true_value, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated bt_rssi_e_; // member variables bool ext = false; bool bluetooth_meas_cfg_name_list_present = false; bool bt_rssi_present = false; bool ie_exts_present = false; bluetooth_meas_cfg_e bluetooth_meas_cfg; bluetooth_meas_cfg_name_list_l bluetooth_meas_cfg_name_list; bt_rssi_e_ bt_rssi; bluetooth_meas_cfg_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CancelledCellinEAI-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using cancelled_cellin_eai_item_ext_ies_o = protocol_ext_empty_o; // CancelledCellinTAI-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using cancelled_cellin_tai_item_ext_ies_o = protocol_ext_empty_o; using cancelled_cellin_eai_item_ext_ies_container = protocol_ext_container_empty_l; // CancelledCellinEAI-Item ::= SEQUENCE struct cancelled_cellin_eai_item_s { bool ext = false; bool ie_exts_present = false; eutran_cgi_s ecgi; uint32_t nof_broadcasts = 0; cancelled_cellin_eai_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using cancelled_cellin_tai_item_ext_ies_container = protocol_ext_container_empty_l; // CancelledCellinTAI-Item ::= SEQUENCE struct cancelled_cellin_tai_item_s { bool ext = false; bool ie_exts_present = false; eutran_cgi_s ecgi; uint32_t nof_broadcasts = 0; cancelled_cellin_tai_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CancelledCellinEAI ::= SEQUENCE (SIZE (1..65535)) OF CancelledCellinEAI-Item using cancelled_cellin_eai_l = dyn_array; // CancelledCellinTAI ::= SEQUENCE (SIZE (1..65535)) OF CancelledCellinTAI-Item using cancelled_cellin_tai_l = dyn_array; // CellID-Cancelled-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using cell_id_cancelled_item_ext_ies_o = protocol_ext_empty_o; // EmergencyAreaID-Cancelled-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using emergency_area_id_cancelled_item_ext_ies_o = protocol_ext_empty_o; // TAI-Cancelled-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using tai_cancelled_item_ext_ies_o = protocol_ext_empty_o; using cell_id_cancelled_item_ext_ies_container = protocol_ext_container_empty_l; // CellID-Cancelled-Item ::= SEQUENCE struct cell_id_cancelled_item_s { bool ext = false; bool ie_exts_present = false; eutran_cgi_s ecgi; uint32_t nof_broadcasts = 0; cell_id_cancelled_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using emergency_area_id_cancelled_item_ext_ies_container = protocol_ext_container_empty_l; // EmergencyAreaID-Cancelled-Item ::= SEQUENCE struct emergency_area_id_cancelled_item_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> emergency_area_id; cancelled_cellin_eai_l cancelled_cellin_eai; emergency_area_id_cancelled_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using tai_cancelled_item_ext_ies_container = protocol_ext_container_empty_l; // TAI-Cancelled-Item ::= SEQUENCE struct tai_cancelled_item_s { bool ext = false; bool ie_exts_present = false; tai_s tai; cancelled_cellin_tai_l cancelled_cellin_tai; tai_cancelled_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CellID-Cancelled ::= SEQUENCE (SIZE (1..65535)) OF CellID-Cancelled-Item using cell_id_cancelled_l = dyn_array; // EmergencyAreaID-Cancelled ::= SEQUENCE (SIZE (1..65535)) OF EmergencyAreaID-Cancelled-Item using emergency_area_id_cancelled_l = dyn_array; // TAI-Cancelled ::= SEQUENCE (SIZE (1..65535)) OF TAI-Cancelled-Item using tai_cancelled_l = dyn_array; // BroadcastCancelledAreaList ::= CHOICE struct broadcast_cancelled_area_list_c { struct types_opts { enum options { cell_id_cancelled, tai_cancelled, emergency_area_id_cancelled, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods broadcast_cancelled_area_list_c() = default; broadcast_cancelled_area_list_c(const broadcast_cancelled_area_list_c& other); broadcast_cancelled_area_list_c& operator=(const broadcast_cancelled_area_list_c& other); ~broadcast_cancelled_area_list_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters cell_id_cancelled_l& cell_id_cancelled() { assert_choice_type(types::cell_id_cancelled, type_, "BroadcastCancelledAreaList"); return c.get(); } tai_cancelled_l& tai_cancelled() { assert_choice_type(types::tai_cancelled, type_, "BroadcastCancelledAreaList"); return c.get(); } emergency_area_id_cancelled_l& emergency_area_id_cancelled() { assert_choice_type(types::emergency_area_id_cancelled, type_, "BroadcastCancelledAreaList"); return c.get(); } const cell_id_cancelled_l& cell_id_cancelled() const { assert_choice_type(types::cell_id_cancelled, type_, "BroadcastCancelledAreaList"); return c.get(); } const tai_cancelled_l& tai_cancelled() const { assert_choice_type(types::tai_cancelled, type_, "BroadcastCancelledAreaList"); return c.get(); } const emergency_area_id_cancelled_l& emergency_area_id_cancelled() const { assert_choice_type(types::emergency_area_id_cancelled, type_, "BroadcastCancelledAreaList"); return c.get(); } cell_id_cancelled_l& set_cell_id_cancelled(); tai_cancelled_l& set_tai_cancelled(); emergency_area_id_cancelled_l& set_emergency_area_id_cancelled(); private: types type_; choice_buffer_t c; void destroy_(); }; // CompletedCellinEAI-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using completed_cellin_eai_item_ext_ies_o = protocol_ext_empty_o; // CompletedCellinTAI-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using completed_cellin_tai_item_ext_ies_o = protocol_ext_empty_o; using completed_cellin_eai_item_ext_ies_container = protocol_ext_container_empty_l; // CompletedCellinEAI-Item ::= SEQUENCE struct completed_cellin_eai_item_s { bool ext = false; bool ie_exts_present = false; eutran_cgi_s ecgi; completed_cellin_eai_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using completed_cellin_tai_item_ext_ies_container = protocol_ext_container_empty_l; // CompletedCellinTAI-Item ::= SEQUENCE struct completed_cellin_tai_item_s { bool ext = false; bool ie_exts_present = false; eutran_cgi_s ecgi; completed_cellin_tai_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CellID-Broadcast-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using cell_id_broadcast_item_ext_ies_o = protocol_ext_empty_o; // CompletedCellinEAI ::= SEQUENCE (SIZE (1..65535)) OF CompletedCellinEAI-Item using completed_cellin_eai_l = dyn_array; // CompletedCellinTAI ::= SEQUENCE (SIZE (1..65535)) OF CompletedCellinTAI-Item using completed_cellin_tai_l = dyn_array; // EmergencyAreaID-Broadcast-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using emergency_area_id_broadcast_item_ext_ies_o = protocol_ext_empty_o; // TAI-Broadcast-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using tai_broadcast_item_ext_ies_o = protocol_ext_empty_o; using cell_id_broadcast_item_ext_ies_container = protocol_ext_container_empty_l; // CellID-Broadcast-Item ::= SEQUENCE struct cell_id_broadcast_item_s { bool ext = false; bool ie_exts_present = false; eutran_cgi_s ecgi; cell_id_broadcast_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using emergency_area_id_broadcast_item_ext_ies_container = protocol_ext_container_empty_l; // EmergencyAreaID-Broadcast-Item ::= SEQUENCE struct emergency_area_id_broadcast_item_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> emergency_area_id; completed_cellin_eai_l completed_cellin_eai; emergency_area_id_broadcast_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using tai_broadcast_item_ext_ies_container = protocol_ext_container_empty_l; // TAI-Broadcast-Item ::= SEQUENCE struct tai_broadcast_item_s { bool ext = false; bool ie_exts_present = false; tai_s tai; completed_cellin_tai_l completed_cellin_tai; tai_broadcast_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CellID-Broadcast ::= SEQUENCE (SIZE (1..65535)) OF CellID-Broadcast-Item using cell_id_broadcast_l = dyn_array; // EmergencyAreaID-Broadcast ::= SEQUENCE (SIZE (1..65535)) OF EmergencyAreaID-Broadcast-Item using emergency_area_id_broadcast_l = dyn_array; // TAI-Broadcast ::= SEQUENCE (SIZE (1..65535)) OF TAI-Broadcast-Item using tai_broadcast_l = dyn_array; // BroadcastCompletedAreaList ::= CHOICE struct broadcast_completed_area_list_c { struct types_opts { enum options { cell_id_broadcast, tai_broadcast, emergency_area_id_broadcast, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods broadcast_completed_area_list_c() = default; broadcast_completed_area_list_c(const broadcast_completed_area_list_c& other); broadcast_completed_area_list_c& operator=(const broadcast_completed_area_list_c& other); ~broadcast_completed_area_list_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters cell_id_broadcast_l& cell_id_broadcast() { assert_choice_type(types::cell_id_broadcast, type_, "BroadcastCompletedAreaList"); return c.get(); } tai_broadcast_l& tai_broadcast() { assert_choice_type(types::tai_broadcast, type_, "BroadcastCompletedAreaList"); return c.get(); } emergency_area_id_broadcast_l& emergency_area_id_broadcast() { assert_choice_type(types::emergency_area_id_broadcast, type_, "BroadcastCompletedAreaList"); return c.get(); } const cell_id_broadcast_l& cell_id_broadcast() const { assert_choice_type(types::cell_id_broadcast, type_, "BroadcastCompletedAreaList"); return c.get(); } const tai_broadcast_l& tai_broadcast() const { assert_choice_type(types::tai_broadcast, type_, "BroadcastCompletedAreaList"); return c.get(); } const emergency_area_id_broadcast_l& emergency_area_id_broadcast() const { assert_choice_type(types::emergency_area_id_broadcast, type_, "BroadcastCompletedAreaList"); return c.get(); } cell_id_broadcast_l& set_cell_id_broadcast(); tai_broadcast_l& set_tai_broadcast(); emergency_area_id_broadcast_l& set_emergency_area_id_broadcast(); private: types type_; choice_buffer_t c; void destroy_(); }; // CGI-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using cgi_ext_ies_o = protocol_ext_empty_o; using cgi_ext_ies_container = protocol_ext_container_empty_l; // CGI ::= SEQUENCE struct cgi_s { bool ext = false; bool rac_present = false; bool ie_exts_present = false; fixed_octstring<3, true> plm_nid; fixed_octstring<2, true> lac; fixed_octstring<2, true> ci; fixed_octstring<1, true> rac; cgi_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CNType ::= ENUMERATED struct cn_type_opts { enum options { five_gc_forbidden, /*...*/ epc_forbiddden, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated cn_type_e; // CNTypeRestrictions-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using cn_type_restricts_item_ext_ies_o = protocol_ext_empty_o; using cn_type_restricts_item_ext_ies_container = protocol_ext_container_empty_l; // CNTypeRestrictions-Item ::= SEQUENCE struct cn_type_restricts_item_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plmn_id; cn_type_e cntype; cn_type_restricts_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CNTypeRestrictions ::= SEQUENCE (SIZE (1..16)) OF CNTypeRestrictions-Item using cn_type_restricts_l = dyn_array; // CSG-IdList-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using csg_id_list_item_ext_ies_o = protocol_ext_empty_o; using csg_id_list_item_ext_ies_container = protocol_ext_container_empty_l; // CSG-IdList-Item ::= SEQUENCE struct csg_id_list_item_s { bool ext = false; bool ie_exts_present = false; fixed_bitstring<27, false, true> csg_id; csg_id_list_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CSG-IdList ::= SEQUENCE (SIZE (1..256)) OF CSG-IdList-Item using csg_id_list_l = dyn_array; // CSGMembershipInfo-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using csg_membership_info_ext_ies_o = protocol_ext_empty_o; // CSGMembershipStatus ::= ENUMERATED struct csg_membership_status_opts { enum options { member, not_member, nulltype } value; const char* to_string() const; }; typedef enumerated csg_membership_status_e; // CellAccessMode ::= ENUMERATED struct cell_access_mode_opts { enum options { hybrid, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated cell_access_mode_e; using csg_membership_info_ext_ies_container = protocol_ext_container_empty_l; // CSGMembershipInfo ::= SEQUENCE struct csg_membership_info_s { bool ext = false; bool cell_access_mode_present = false; bool plm_nid_present = false; bool ie_exts_present = false; csg_membership_status_e csg_membership_status; fixed_bitstring<27, false, true> csg_id; cell_access_mode_e cell_access_mode; fixed_octstring<3, true> plm_nid; csg_membership_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // IRAT-Cell-ID ::= CHOICE struct irat_cell_id_c { struct types_opts { enum options { eutran, utran, geran, /*...*/ ehrpd, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods irat_cell_id_c() = default; irat_cell_id_c(const irat_cell_id_c& other); irat_cell_id_c& operator=(const irat_cell_id_c& other); ~irat_cell_id_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 unbounded_octstring& eutran() { assert_choice_type(types::eutran, type_, "IRAT-Cell-ID"); return c.get >(); } unbounded_octstring& utran() { assert_choice_type(types::utran, type_, "IRAT-Cell-ID"); return c.get >(); } unbounded_octstring& geran() { assert_choice_type(types::geran, type_, "IRAT-Cell-ID"); return c.get >(); } fixed_octstring<16, true>& ehrpd() { assert_choice_type(types::ehrpd, type_, "IRAT-Cell-ID"); return c.get >(); } const unbounded_octstring& eutran() const { assert_choice_type(types::eutran, type_, "IRAT-Cell-ID"); return c.get >(); } const unbounded_octstring& utran() const { assert_choice_type(types::utran, type_, "IRAT-Cell-ID"); return c.get >(); } const unbounded_octstring& geran() const { assert_choice_type(types::geran, type_, "IRAT-Cell-ID"); return c.get >(); } const fixed_octstring<16, true>& ehrpd() const { assert_choice_type(types::ehrpd, type_, "IRAT-Cell-ID"); return c.get >(); } unbounded_octstring& set_eutran(); unbounded_octstring& set_utran(); unbounded_octstring& set_geran(); fixed_octstring<16, true>& set_ehrpd(); private: types type_; choice_buffer_t, unbounded_octstring > c; void destroy_(); }; // CandidateCellList ::= SEQUENCE (SIZE (1..16)) OF IRAT-Cell-ID using candidate_cell_list_l = dyn_array; // CandidatePCI ::= SEQUENCE struct candidate_pci_s { bool ext = false; uint16_t pci = 0; unbounded_octstring earfcn; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CandidatePCIList ::= SEQUENCE (SIZE (1..16)) OF CandidatePCI using candidate_pci_list_l = dyn_array; // CauseMisc ::= ENUMERATED struct cause_misc_opts { enum options { ctrl_processing_overload, not_enough_user_plane_processing_res, hardware_fail, om_intervention, unspecified, unknown_plmn, // ... nulltype } value; const char* to_string() const; }; typedef enumerated cause_misc_e; // CauseNas ::= ENUMERATED struct cause_nas_opts { enum options { normal_release, authentication_fail, detach, unspecified, /*...*/ csg_subscription_expiry, nulltype } value; const char* to_string() const; }; typedef enumerated cause_nas_e; // CauseProtocol ::= ENUMERATED struct cause_protocol_opts { enum options { transfer_syntax_error, abstract_syntax_error_reject, abstract_syntax_error_ignore_and_notify, msg_not_compatible_with_receiver_state, semantic_error, abstract_syntax_error_falsely_constructed_msg, unspecified, // ... nulltype } value; const char* to_string() const; }; typedef enumerated cause_protocol_e; // CauseRadioNetwork ::= ENUMERATED struct cause_radio_network_opts { enum options { unspecified, tx2relocoverall_expiry, successful_ho, release_due_to_eutran_generated_reason, ho_cancelled, partial_ho, ho_fail_in_target_epc_enb_or_target_sys, ho_target_not_allowed, ts1relocoverall_expiry, ts1relocprep_expiry, cell_not_available, unknown_target_id, no_radio_res_available_in_target_cell, unknown_mme_ue_s1ap_id, unknown_enb_ue_s1ap_id, unknown_pair_ue_s1ap_id, ho_desirable_for_radio_reason, time_crit_ho, res_optim_ho, reduce_load_in_serving_cell, user_inactivity, radio_conn_with_ue_lost, load_balancing_tau_required, cs_fallback_triggered, ue_not_available_for_ps_service, radio_res_not_available, fail_in_radio_interface_proc, invalid_qos_combination, interrat_redirection, interaction_with_other_proc, unknown_erab_id, multiple_erab_id_instances, encryption_and_or_integrity_protection_algorithms_not_supported, s1_intra_sys_ho_triggered, s1_inter_sys_ho_triggered, x2_ho_triggered, // ... redirection_towards_minus1x_rtt, not_supported_qci_value, invalid_csg_id, release_due_to_pre_emption, nulltype } value; const char* to_string() const; }; typedef enumerated cause_radio_network_e; // CauseTransport ::= ENUMERATED struct cause_transport_opts { enum options { transport_res_unavailable, unspecified, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated cause_transport_e; // Cause ::= CHOICE struct cause_c { struct types_opts { enum options { radio_network, transport, nas, protocol, misc, /*...*/ nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods cause_c() = default; cause_c(const cause_c& other); cause_c& operator=(const cause_c& other); ~cause_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 cause_radio_network_e& radio_network() { assert_choice_type(types::radio_network, type_, "Cause"); return c.get(); } cause_transport_e& transport() { assert_choice_type(types::transport, type_, "Cause"); return c.get(); } cause_nas_e& nas() { assert_choice_type(types::nas, type_, "Cause"); return c.get(); } cause_protocol_e& protocol() { assert_choice_type(types::protocol, type_, "Cause"); return c.get(); } cause_misc_e& misc() { assert_choice_type(types::misc, type_, "Cause"); return c.get(); } const cause_radio_network_e& radio_network() const { assert_choice_type(types::radio_network, type_, "Cause"); return c.get(); } const cause_transport_e& transport() const { assert_choice_type(types::transport, type_, "Cause"); return c.get(); } const cause_nas_e& nas() const { assert_choice_type(types::nas, type_, "Cause"); return c.get(); } const cause_protocol_e& protocol() const { assert_choice_type(types::protocol, type_, "Cause"); return c.get(); } const cause_misc_e& misc() const { assert_choice_type(types::misc, type_, "Cause"); return c.get(); } cause_radio_network_e& set_radio_network(); cause_transport_e& set_transport(); cause_nas_e& set_nas(); cause_protocol_e& set_protocol(); cause_misc_e& set_misc(); private: types type_; pod_choice_buffer_t c; void destroy_(); }; // Cdma2000OneXSRVCCInfo-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using cdma2000_one_xsrvcc_info_ext_ies_o = protocol_ext_empty_o; using cdma2000_one_xsrvcc_info_ext_ies_container = protocol_ext_container_empty_l; // Cdma2000OneXSRVCCInfo ::= SEQUENCE struct cdma2000_one_xsrvcc_info_s { bool ext = false; bool ie_exts_present = false; unbounded_octstring cdma2000_one_xmeid; unbounded_octstring cdma2000_one_xmsi; unbounded_octstring cdma2000_one_xpilot; cdma2000_one_xsrvcc_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CellsToActivateList-Item ::= SEQUENCE struct cells_to_activ_list_item_s { bool ext = false; unbounded_octstring cell_id; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CellsToActivateList ::= SEQUENCE (SIZE (1..256)) OF CellsToActivateList-Item using cells_to_activ_list_l = dyn_array; // CellActivationRequest ::= SEQUENCE struct cell_activation_request_s { bool ext = false; bool minimum_activation_time_present = false; cells_to_activ_list_l cells_to_activ_list; uint8_t minimum_activation_time = 1; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CellActivationResponse ::= SEQUENCE struct cell_activation_resp_s { bool ext = false; activ_cells_list_l activ_cells_list; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // EHRPDCompositeAvailableCapacity ::= SEQUENCE struct ehrpd_composite_available_capacity_s { bool ext = false; uint8_t ehrpd_sector_capacity_class_value = 1; uint8_t ehrpd_capacity_value = 0; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // EHRPDSectorLoadReportingResponse ::= SEQUENCE struct ehrpd_sector_load_report_resp_s { bool ext = false; ehrpd_composite_available_capacity_s dl_ehrpd_composite_available_capacity; ehrpd_composite_available_capacity_s ul_ehrpd_composite_available_capacity; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // EUTRANcellLoadReportingResponse ::= SEQUENCE struct eutra_ncell_load_report_resp_s { bool ext = false; unbounded_octstring composite_available_capacity_group; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CellLoadReportingResponse ::= CHOICE struct cell_load_report_resp_c { struct types_opts { enum options { eutran, utran, geran, /*...*/ ehrpd, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods cell_load_report_resp_c() = default; cell_load_report_resp_c(const cell_load_report_resp_c& other); cell_load_report_resp_c& operator=(const cell_load_report_resp_c& other); ~cell_load_report_resp_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters eutra_ncell_load_report_resp_s& eutran() { assert_choice_type(types::eutran, type_, "CellLoadReportingResponse"); return c.get(); } unbounded_octstring& utran() { assert_choice_type(types::utran, type_, "CellLoadReportingResponse"); return c.get >(); } unbounded_octstring& geran() { assert_choice_type(types::geran, type_, "CellLoadReportingResponse"); return c.get >(); } ehrpd_sector_load_report_resp_s& ehrpd() { assert_choice_type(types::ehrpd, type_, "CellLoadReportingResponse"); return c.get(); } const eutra_ncell_load_report_resp_s& eutran() const { assert_choice_type(types::eutran, type_, "CellLoadReportingResponse"); return c.get(); } const unbounded_octstring& utran() const { assert_choice_type(types::utran, type_, "CellLoadReportingResponse"); return c.get >(); } const unbounded_octstring& geran() const { assert_choice_type(types::geran, type_, "CellLoadReportingResponse"); return c.get >(); } const ehrpd_sector_load_report_resp_s& ehrpd() const { assert_choice_type(types::ehrpd, type_, "CellLoadReportingResponse"); return c.get(); } eutra_ncell_load_report_resp_s& set_eutran(); unbounded_octstring& set_utran(); unbounded_octstring& set_geran(); ehrpd_sector_load_report_resp_s& set_ehrpd(); private: types type_; choice_buffer_t > c; void destroy_(); }; // NotifyFlag ::= ENUMERATED struct notify_flag_opts { enum options { activ, deactiv, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated notify_flag_e; // NotificationCellList-Item ::= SEQUENCE struct notif_cell_list_item_s { bool ext = false; unbounded_octstring cell_id; notify_flag_e notify_flag; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // NotificationCellList ::= SEQUENCE (SIZE (1..256)) OF NotificationCellList-Item using notif_cell_list_l = dyn_array; // CellStateIndication ::= SEQUENCE struct cell_state_ind_s { bool ext = false; notif_cell_list_l notif_cell_list; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // PrivacyIndicator ::= ENUMERATED struct privacy_ind_opts { enum options { immediate_mdt, logged_mdt, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated privacy_ind_e; // CellTrafficTraceIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct cell_traffic_trace_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, e_utran_trace_id, eutran_cgi, trace_collection_entity_ip_address, privacy_ind, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); fixed_octstring<8, true>& e_utran_trace_id(); eutran_cgi_s& eutran_cgi(); bounded_bitstring<1, 160, true, true>& trace_collection_entity_ip_address(); privacy_ind_e& privacy_ind(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const fixed_octstring<8, true>& e_utran_trace_id() const; const eutran_cgi_s& eutran_cgi() const; const bounded_bitstring<1, 160, true, true>& trace_collection_entity_ip_address() const; const privacy_ind_e& privacy_ind() const; private: types type_; choice_buffer_t, eutran_cgi_s, fixed_octstring<8, true> > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct cell_traffic_trace_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool privacy_ind_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > e_utran_trace_id; ie_field_s eutran_cgi; ie_field_s > trace_collection_entity_ip_address; ie_field_s privacy_ind; // sequence methods cell_traffic_trace_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CellTrafficTrace ::= SEQUENCE using cell_traffic_trace_s = elementary_procedure_option; // Cell-Size ::= ENUMERATED struct cell_size_opts { enum options { verysmall, small, medium, large, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated cell_size_e; // CellType-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using cell_type_ext_ies_o = protocol_ext_empty_o; using cell_type_ext_ies_container = protocol_ext_container_empty_l; // CellType ::= SEQUENCE struct cell_type_s { bool ext = false; bool ie_exts_present = false; cell_size_e cell_size; cell_type_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RAT-Type ::= ENUMERATED struct rat_type_opts { enum options { nbiot, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated rat_type_e; // SupportedTAs-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct supported_tas_item_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { rat_type, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::rat_type; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters rat_type_e& rat_type() { return c; } const rat_type_e& rat_type() const { return c; } private: rat_type_e c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // SupportedTAs-Item ::= SEQUENCE struct supported_tas_item_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<2, true> tac; bplmns_l broadcast_plmns; protocol_ext_container_l ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ConnectedengNBItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using connectedeng_nb_item_ext_ies_o = protocol_ext_empty_o; // SupportedTAs ::= SEQUENCE (SIZE (1..256)) OF SupportedTAs-Item using supported_tas_l = dyn_array; using connectedeng_nb_item_ext_ies_container = protocol_ext_container_empty_l; // ConnectedengNBItem ::= SEQUENCE struct connectedeng_nb_item_s { bool ext = false; bool ie_exts_present = false; bounded_bitstring<22, 32, true, true> en_g_nb_id; supported_tas_l supported_tas; connectedeng_nb_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ConnectedengNBList ::= SEQUENCE (SIZE (1..256)) OF ConnectedengNBItem using connectedeng_nb_list_l = dyn_array; // GBR-QosInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct gbr_qos_info_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { extended_erab_maximum_bitrate_dl, extended_erab_maximum_bitrate_ul, extended_erab_guaranteed_bitrate_dl, extended_erab_guaranteed_bitrate_ul, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 uint64_t& extended_erab_maximum_bitrate_dl(); uint64_t& extended_erab_maximum_bitrate_ul(); uint64_t& extended_erab_guaranteed_bitrate_dl(); uint64_t& extended_erab_guaranteed_bitrate_ul(); const uint64_t& extended_erab_maximum_bitrate_dl() const; const uint64_t& extended_erab_maximum_bitrate_ul() const; const uint64_t& extended_erab_guaranteed_bitrate_dl() const; const uint64_t& extended_erab_guaranteed_bitrate_ul() const; private: types type_; pod_choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // ScheduledCommunicationTime-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using sched_communication_time_ext_ies_o = protocol_ext_empty_o; // DL-CP-SecurityInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using dl_cp_security_info_ext_ies_o = protocol_ext_empty_o; // E-RABQoSParameters-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct erab_qos_params_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { dl_packet_loss_rate, ul_packet_loss_rate, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 uint16_t& dl_packet_loss_rate(); uint16_t& ul_packet_loss_rate(); const uint16_t& dl_packet_loss_rate() const; const uint16_t& ul_packet_loss_rate() const; private: types type_; pod_choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct gbr_qos_info_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool extended_erab_maximum_bitrate_dl_present = false; bool extended_erab_maximum_bitrate_ul_present = false; bool extended_erab_guaranteed_bitrate_dl_present = false; bool extended_erab_guaranteed_bitrate_ul_present = false; ie_field_s > extended_erab_maximum_bitrate_dl; ie_field_s > extended_erab_maximum_bitrate_ul; ie_field_s > extended_erab_guaranteed_bitrate_dl; ie_field_s > extended_erab_guaranteed_bitrate_ul; // sequence methods gbr_qos_info_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // GBR-QosInformation ::= SEQUENCE struct gbr_qos_info_s { bool ext = false; bool ie_exts_present = false; uint64_t erab_maximum_bitrate_dl = 0; uint64_t erab_maximum_bitrate_ul = 0; uint64_t erab_guaranteed_bitrate_dl = 0; uint64_t erab_guaranteed_bitrate_ul = 0; gbr_qos_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using sched_communication_time_ext_ies_container = protocol_ext_container_empty_l; // ScheduledCommunicationTime ::= SEQUENCE struct sched_communication_time_s { bool ext = false; bool dayof_week_present = false; bool timeof_day_start_present = false; bool timeof_day_end_present = false; bool ie_exts_present = false; fixed_bitstring<7, false, true> dayof_week; uint32_t timeof_day_start = 0; uint32_t timeof_day_end = 0; sched_communication_time_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // Subscription-Based-UE-DifferentiationInfo-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using subscription_based_ue_differentiation_info_ext_ies_o = protocol_ext_empty_o; // CE-ModeBRestricted ::= ENUMERATED struct ce_mode_brestricted_opts { enum options { restricted, not_restricted, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated ce_mode_brestricted_e; using dl_cp_security_info_ext_ies_container = protocol_ext_container_empty_l; // DL-CP-SecurityInformation ::= SEQUENCE struct dl_cp_security_info_s { bool ext = false; bool ie_exts_present = false; fixed_bitstring<16, false, true> dl_nas_mac; dl_cp_security_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; struct erab_qos_params_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool dl_packet_loss_rate_present = false; bool ul_packet_loss_rate_present = false; ie_field_s > dl_packet_loss_rate; ie_field_s > ul_packet_loss_rate; // sequence methods erab_qos_params_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABLevelQoSParameters ::= SEQUENCE struct erab_level_qos_params_s { bool ext = false; bool gbr_qos_info_present = false; bool ie_exts_present = false; uint16_t qci = 0; alloc_and_retention_prio_s alloc_retention_prio; gbr_qos_info_s gbr_qos_info; erab_qos_params_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // EndIndication ::= ENUMERATED struct end_ind_opts { enum options { no_further_data, further_data_exists, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated end_ind_e; // EnhancedCoverageRestricted ::= ENUMERATED struct enhanced_coverage_restricted_opts { enum options { restricted, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated enhanced_coverage_restricted_e; using subscription_based_ue_differentiation_info_ext_ies_container = protocol_ext_container_empty_l; // Subscription-Based-UE-DifferentiationInfo ::= SEQUENCE struct subscription_based_ue_differentiation_info_s { struct periodic_communication_ind_opts { enum options { periodically, ondemand, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated periodic_communication_ind_e_; struct stationary_ind_opts { enum options { stationary, mobile, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated stationary_ind_e_; struct traffic_profile_opts { enum options { single_packet, dual_packets, multiple_packets, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated traffic_profile_e_; struct battery_ind_opts { enum options { battery_pwred, battery_pwred_not_rechargeable_or_replaceable, not_battery_pwred, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated battery_ind_e_; // member variables bool ext = false; bool periodic_communication_ind_present = false; bool periodic_time_present = false; bool sched_communication_time_present = false; bool stationary_ind_present = false; bool traffic_profile_present = false; bool battery_ind_present = false; bool ie_exts_present = false; periodic_communication_ind_e_ periodic_communication_ind; uint16_t periodic_time = 1; sched_communication_time_s sched_communication_time; stationary_ind_e_ stationary_ind; traffic_profile_e_ traffic_profile; battery_ind_e_ battery_ind; subscription_based_ue_differentiation_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ConnectionEstablishmentIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct conn_establishment_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, ue_radio_cap, enhanced_coverage_restricted, dl_cp_security_info, ce_mode_brestricted, end_ind, subscription_based_ue_differentiation_info, ue_level_qos_params, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); unbounded_octstring& ue_radio_cap(); enhanced_coverage_restricted_e& enhanced_coverage_restricted(); dl_cp_security_info_s& dl_cp_security_info(); ce_mode_brestricted_e& ce_mode_brestricted(); end_ind_e& end_ind(); subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info(); erab_level_qos_params_s& ue_level_qos_params(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const unbounded_octstring& ue_radio_cap() const; const enhanced_coverage_restricted_e& enhanced_coverage_restricted() const; const dl_cp_security_info_s& dl_cp_security_info() const; const ce_mode_brestricted_e& ce_mode_brestricted() const; const end_ind_e& end_ind() const; const subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info() const; const erab_level_qos_params_s& ue_level_qos_params() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct conn_establishment_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ue_radio_cap_present = false; bool enhanced_coverage_restricted_present = false; bool dl_cp_security_info_present = false; bool ce_mode_brestricted_present = false; bool end_ind_present = false; bool subscription_based_ue_differentiation_info_present = false; bool ue_level_qos_params_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > ue_radio_cap; ie_field_s enhanced_coverage_restricted; ie_field_s dl_cp_security_info; ie_field_s ce_mode_brestricted; ie_field_s end_ind; ie_field_s subscription_based_ue_differentiation_info; ie_field_s ue_level_qos_params; // sequence methods conn_establishment_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ConnectionEstablishmentIndication ::= SEQUENCE using conn_establishment_ind_s = elementary_procedure_option; // ENB-ID ::= CHOICE struct enb_id_c { struct types_opts { enum options { macro_enb_id, home_enb_id, /*...*/ short_macro_enb_id, long_macro_enb_id, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods enb_id_c() = default; enb_id_c(const enb_id_c& other); enb_id_c& operator=(const enb_id_c& other); ~enb_id_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<20, false, true>& macro_enb_id() { assert_choice_type(types::macro_enb_id, type_, "ENB-ID"); return c.get >(); } fixed_bitstring<28, false, true>& home_enb_id() { assert_choice_type(types::home_enb_id, type_, "ENB-ID"); return c.get >(); } fixed_bitstring<18, false, true>& short_macro_enb_id() { assert_choice_type(types::short_macro_enb_id, type_, "ENB-ID"); return c.get >(); } fixed_bitstring<21, false, true>& long_macro_enb_id() { assert_choice_type(types::long_macro_enb_id, type_, "ENB-ID"); return c.get >(); } const fixed_bitstring<20, false, true>& macro_enb_id() const { assert_choice_type(types::macro_enb_id, type_, "ENB-ID"); return c.get >(); } const fixed_bitstring<28, false, true>& home_enb_id() const { assert_choice_type(types::home_enb_id, type_, "ENB-ID"); return c.get >(); } const fixed_bitstring<18, false, true>& short_macro_enb_id() const { assert_choice_type(types::short_macro_enb_id, type_, "ENB-ID"); return c.get >(); } const fixed_bitstring<21, false, true>& long_macro_enb_id() const { assert_choice_type(types::long_macro_enb_id, type_, "ENB-ID"); return c.get >(); } fixed_bitstring<20, false, true>& set_macro_enb_id(); fixed_bitstring<28, false, true>& set_home_enb_id(); fixed_bitstring<18, false, true>& set_short_macro_enb_id(); fixed_bitstring<21, false, true>& set_long_macro_enb_id(); private: types type_; choice_buffer_t > c; void destroy_(); }; // GNB-Identity ::= CHOICE struct gnb_id_c { struct types_opts { enum options { gnb_id, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::gnb_id; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters bounded_bitstring<22, 32, false, true>& gnb_id() { return c; } const bounded_bitstring<22, 32, false, true>& gnb_id() const { return c; } private: bounded_bitstring<22, 32, false, true> c; }; // Global-GNB-ID-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using global_gnb_id_ext_ies_o = protocol_ext_empty_o; // GlobalENB-ID-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using global_enb_id_ext_ies_o = protocol_ext_empty_o; // GNB-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using gnb_ext_ies_o = protocol_ext_empty_o; using global_enb_id_ext_ies_container = protocol_ext_container_empty_l; // Global-ENB-ID ::= SEQUENCE struct global_enb_id_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plm_nid; enb_id_c enb_id; global_enb_id_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using global_gnb_id_ext_ies_container = protocol_ext_container_empty_l; // Global-GNB-ID ::= SEQUENCE struct global_gnb_id_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plmn_id; gnb_id_c gnb_id; global_gnb_id_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // NG-eNB-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using ng_enb_ext_ies_o = protocol_ext_empty_o; using gnb_ext_ies_container = protocol_ext_container_empty_l; // GNB ::= SEQUENCE struct gnb_s { bool ext = false; bool ie_exts_present = false; global_gnb_id_s global_g_nb_id; gnb_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using ng_enb_ext_ies_container = protocol_ext_container_empty_l; // NG-eNB ::= SEQUENCE struct ng_enb_s { bool ext = false; bool ie_exts_present = false; global_enb_id_s global_ng_enb_id; ng_enb_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ContextatSource-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using contextat_source_ext_ies_o = protocol_ext_empty_o; // Global-RAN-NODE-ID ::= CHOICE struct global_ran_node_id_c { struct types_opts { enum options { gnb, ng_enb, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods global_ran_node_id_c() = default; global_ran_node_id_c(const global_ran_node_id_c& other); global_ran_node_id_c& operator=(const global_ran_node_id_c& other); ~global_ran_node_id_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 gnb_s& gnb() { assert_choice_type(types::gnb, type_, "Global-RAN-NODE-ID"); return c.get(); } ng_enb_s& ng_enb() { assert_choice_type(types::ng_enb, type_, "Global-RAN-NODE-ID"); return c.get(); } const gnb_s& gnb() const { assert_choice_type(types::gnb, type_, "Global-RAN-NODE-ID"); return c.get(); } const ng_enb_s& ng_enb() const { assert_choice_type(types::ng_enb, type_, "Global-RAN-NODE-ID"); return c.get(); } gnb_s& set_gnb(); ng_enb_s& set_ng_enb(); private: types type_; choice_buffer_t c; void destroy_(); }; using contextat_source_ext_ies_container = protocol_ext_container_empty_l; // ContextatSource ::= SEQUENCE struct contextat_source_s { bool ext = false; bool ie_exts_present = false; global_ran_node_id_c source_ng_ran_node_id; uint64_t ran_ue_ngap_id = 0; contextat_source_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CriticalityDiagnostics-IE-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using crit_diagnostics_ie_item_ext_ies_o = protocol_ext_empty_o; // TypeOfError ::= ENUMERATED struct type_of_error_opts { enum options { not_understood, missing, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated type_of_error_e; using crit_diagnostics_ie_item_ext_ies_container = protocol_ext_container_empty_l; // CriticalityDiagnostics-IE-Item ::= SEQUENCE struct crit_diagnostics_ie_item_s { bool ext = false; bool ie_exts_present = false; crit_e iecrit; uint32_t ie_id = 0; type_of_error_e type_of_error; crit_diagnostics_ie_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // CriticalityDiagnostics-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using crit_diagnostics_ext_ies_o = protocol_ext_empty_o; // CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..256)) OF CriticalityDiagnostics-IE-Item using crit_diagnostics_ie_list_l = dyn_array; // TriggeringMessage ::= ENUMERATED struct trigger_msg_opts { enum options { init_msg, successful_outcome, unsuccessfull_outcome, nulltype } value; const char* to_string() const; }; typedef enumerated trigger_msg_e; using crit_diagnostics_ext_ies_container = protocol_ext_container_empty_l; // CriticalityDiagnostics ::= SEQUENCE struct crit_diagnostics_s { bool ext = false; bool proc_code_present = false; bool trigger_msg_present = false; bool proc_crit_present = false; bool ies_crit_diagnostics_present = false; bool ie_exts_present = false; uint16_t proc_code = 0; trigger_msg_e trigger_msg; crit_e proc_crit; crit_diagnostics_ie_list_l ies_crit_diagnostics; crit_diagnostics_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // DeactivateTraceIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct deactiv_trace_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, e_utran_trace_id, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); fixed_octstring<8, true>& e_utran_trace_id(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const fixed_octstring<8, true>& e_utran_trace_id() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct deactiv_trace_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > e_utran_trace_id; // sequence methods deactiv_trace_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // DeactivateTrace ::= SEQUENCE using deactiv_trace_s = elementary_procedure_option; // ForbiddenLACs ::= SEQUENCE (SIZE (1..4096)) OF OCTET STRING (SIZE (2)) using forbidden_lacs_l = dyn_array >; // ForbiddenLAs-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using forbidden_las_item_ext_ies_o = protocol_ext_empty_o; // ForbiddenTACs ::= SEQUENCE (SIZE (1..4096)) OF OCTET STRING (SIZE (2)) using forbidden_tacs_l = dyn_array >; // ForbiddenTAs-Item-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using forbidden_tas_item_ext_ies_o = protocol_ext_empty_o; using forbidden_las_item_ext_ies_container = protocol_ext_container_empty_l; // ForbiddenLAs-Item ::= SEQUENCE struct forbidden_las_item_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plmn_id; forbidden_lacs_l forbidden_lacs; forbidden_las_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using forbidden_tas_item_ext_ies_container = protocol_ext_container_empty_l; // ForbiddenTAs-Item ::= SEQUENCE struct forbidden_tas_item_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plmn_id; forbidden_tacs_l forbidden_tacs; forbidden_tas_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // NRrestrictionin5GS ::= ENUMERATED struct nrrestrictin5_gs_opts { enum options { nrrestrictedin5_gs, /*...*/ nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated nrrestrictin5_gs_e; // NRrestrictioninEPSasSecondaryRAT ::= ENUMERATED struct nrrestrictin_ep_sas_secondary_rat_opts { enum options { nrrestrictedin_ep_sas_secondary_rat, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated nrrestrictin_ep_sas_secondary_rat_e; // UnlicensedSpectrumRestriction ::= ENUMERATED struct unlicensed_spec_restrict_opts { enum options { unlicensed_restricted, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated unlicensed_spec_restrict_e; // EPLMNs ::= SEQUENCE (SIZE (1..15)) OF OCTET STRING (SIZE (3)) using eplmns_l = bounded_array, 15>; // ForbiddenInterRATs ::= ENUMERATED struct forbidden_inter_rats_opts { enum options { all, geran, utran, cdma2000, /*...*/ geranandutran, cdma2000andutran, nulltype } value; const char* to_string() const; }; typedef enumerated forbidden_inter_rats_e; // ForbiddenLAs ::= SEQUENCE (SIZE (1..16)) OF ForbiddenLAs-Item using forbidden_las_l = dyn_array; // ForbiddenTAs ::= SEQUENCE (SIZE (1..16)) OF ForbiddenTAs-Item using forbidden_tas_l = dyn_array; // HandoverRestrictionList-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct ho_restrict_list_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { nrrestrictin_ep_sas_secondary_rat, unlicensed_spec_restrict, cn_type_restricts, nrrestrictin5_gs, last_ng_ranplmn_id, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 nrrestrictin_ep_sas_secondary_rat_e& nrrestrictin_ep_sas_secondary_rat(); unlicensed_spec_restrict_e& unlicensed_spec_restrict(); cn_type_restricts_l& cn_type_restricts(); nrrestrictin5_gs_e& nrrestrictin5_gs(); plm_nid& last_ng_ranplmn_id(); const nrrestrictin_ep_sas_secondary_rat_e& nrrestrictin_ep_sas_secondary_rat() const; const unlicensed_spec_restrict_e& unlicensed_spec_restrict() const; const cn_type_restricts_l& cn_type_restricts() const; const nrrestrictin5_gs_e& nrrestrictin5_gs() const; const plm_nid& last_ng_ranplmn_id() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // NRUESecurityCapabilities-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using nrue_security_cap_ext_ies_o = protocol_ext_empty_o; // DLNASPDUDeliveryAckRequest ::= ENUMERATED struct dlnaspdu_delivery_ack_request_opts { enum options { requested, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated dlnaspdu_delivery_ack_request_e; struct ho_restrict_list_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool nrrestrictin_ep_sas_secondary_rat_present = false; bool unlicensed_spec_restrict_present = false; bool cn_type_restricts_present = false; bool nrrestrictin5_gs_present = false; bool last_ng_ranplmn_id_present = false; ie_field_s nrrestrictin_ep_sas_secondary_rat; ie_field_s unlicensed_spec_restrict; ie_field_s > cn_type_restricts; ie_field_s nrrestrictin5_gs; ie_field_s last_ng_ranplmn_id; // sequence methods ho_restrict_list_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverRestrictionList ::= SEQUENCE struct ho_restrict_list_s { bool ext = false; bool equivalent_plmns_present = false; bool forbidden_tas_present = false; bool forbidden_las_present = false; bool forbidden_inter_rats_present = false; bool ie_exts_present = false; fixed_octstring<3, true> serving_plmn; eplmns_l equivalent_plmns; forbidden_tas_l forbidden_tas; forbidden_las_l forbidden_las; forbidden_inter_rats_e forbidden_inter_rats; ho_restrict_list_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using nrue_security_cap_ext_ies_container = protocol_ext_container_empty_l; // NRUESecurityCapabilities ::= SEQUENCE struct nrue_security_cap_s { bool ext = false; bool ie_exts_present = false; fixed_bitstring<16, true, true> nrencryption_algorithms; fixed_bitstring<16, true, true> nrintegrity_protection_algorithms; nrue_security_cap_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // PendingDataIndication ::= ENUMERATED struct pending_data_ind_opts { enum options { true_value, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated pending_data_ind_e; // SRVCCOperationPossible ::= ENUMERATED struct srvcc_operation_possible_opts { enum options { possible, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated srvcc_operation_possible_e; // UECapabilityInfoRequest ::= ENUMERATED struct ue_cap_info_request_opts { enum options { requested, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated ue_cap_info_request_e; // DownlinkNASTransport-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct dl_nas_transport_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, nas_pdu, ho_restrict_list, subscriber_profile_idfor_rfp, srvcc_operation_possible, ue_radio_cap, dlnaspdu_delivery_ack_request, enhanced_coverage_restricted, nrue_security_cap, ce_mode_brestricted, ue_cap_info_request, end_ind, pending_data_ind, subscription_based_ue_differentiation_info, add_rrm_prio_idx, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); unbounded_octstring& nas_pdu(); ho_restrict_list_s& ho_restrict_list(); uint16_t& subscriber_profile_idfor_rfp(); srvcc_operation_possible_e& srvcc_operation_possible(); unbounded_octstring& ue_radio_cap(); dlnaspdu_delivery_ack_request_e& dlnaspdu_delivery_ack_request(); enhanced_coverage_restricted_e& enhanced_coverage_restricted(); nrue_security_cap_s& nrue_security_cap(); ce_mode_brestricted_e& ce_mode_brestricted(); ue_cap_info_request_e& ue_cap_info_request(); end_ind_e& end_ind(); pending_data_ind_e& pending_data_ind(); subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info(); fixed_bitstring<32, false, true>& add_rrm_prio_idx(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const unbounded_octstring& nas_pdu() const; const ho_restrict_list_s& ho_restrict_list() const; const uint16_t& subscriber_profile_idfor_rfp() const; const srvcc_operation_possible_e& srvcc_operation_possible() const; const unbounded_octstring& ue_radio_cap() const; const dlnaspdu_delivery_ack_request_e& dlnaspdu_delivery_ack_request() const; const enhanced_coverage_restricted_e& enhanced_coverage_restricted() const; const nrue_security_cap_s& nrue_security_cap() const; const ce_mode_brestricted_e& ce_mode_brestricted() const; const ue_cap_info_request_e& ue_cap_info_request() const; const end_ind_e& end_ind() const; const pending_data_ind_e& pending_data_ind() const; const subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info() const; const fixed_bitstring<32, false, true>& add_rrm_prio_idx() const; private: types type_; choice_buffer_t, ho_restrict_list_s, nrue_security_cap_s, subscription_based_ue_differentiation_info_s, unbounded_octstring > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct dl_nas_transport_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ho_restrict_list_present = false; bool subscriber_profile_idfor_rfp_present = false; bool srvcc_operation_possible_present = false; bool ue_radio_cap_present = false; bool dlnaspdu_delivery_ack_request_present = false; bool enhanced_coverage_restricted_present = false; bool nrue_security_cap_present = false; bool ce_mode_brestricted_present = false; bool ue_cap_info_request_present = false; bool end_ind_present = false; bool pending_data_ind_present = false; bool subscription_based_ue_differentiation_info_present = false; bool add_rrm_prio_idx_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > nas_pdu; ie_field_s ho_restrict_list; ie_field_s > subscriber_profile_idfor_rfp; ie_field_s srvcc_operation_possible; ie_field_s > ue_radio_cap; ie_field_s dlnaspdu_delivery_ack_request; ie_field_s enhanced_coverage_restricted; ie_field_s nrue_security_cap; ie_field_s ce_mode_brestricted; ie_field_s ue_cap_info_request; ie_field_s end_ind; ie_field_s pending_data_ind; ie_field_s subscription_based_ue_differentiation_info; ie_field_s > add_rrm_prio_idx; // sequence methods dl_nas_transport_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // DownlinkNASTransport ::= SEQUENCE using dl_nas_transport_s = elementary_procedure_option; // DownlinkNonUEAssociatedLPPaTransport-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct dl_non_ueassociated_lp_pa_transport_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { routing_id, lp_pa_pdu, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint16_t& routing_id(); unbounded_octstring& lp_pa_pdu(); const uint16_t& routing_id() const; const unbounded_octstring& lp_pa_pdu() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct dl_non_ueassociated_lp_pa_transport_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > routing_id; ie_field_s > lp_pa_pdu; // sequence methods dl_non_ueassociated_lp_pa_transport_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // DownlinkNonUEAssociatedLPPaTransport ::= SEQUENCE using dl_non_ueassociated_lp_pa_transport_s = elementary_procedure_option; // E-RABDataForwardingItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_data_forwarding_item_ext_ies_o = protocol_ext_empty_o; using erab_data_forwarding_item_ext_ies_container = protocol_ext_container_empty_l; // E-RABDataForwardingItem ::= SEQUENCE struct erab_data_forwarding_item_s { bool ext = false; bool dl_transport_layer_address_present = false; bool dl_g_tp_teid_present = false; bool ul_transport_layer_address_present = false; bool ul_gtp_teid_present = false; bool ie_exts_present = false; uint8_t erab_id = 0; bounded_bitstring<1, 160, true, true> dl_transport_layer_address; fixed_octstring<4, true> dl_g_tp_teid; bounded_bitstring<1, 160, true, true> ul_transport_layer_address; fixed_octstring<4, true> ul_gtp_teid; erab_data_forwarding_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ProtocolIE-SingleContainer-item{S1AP-PROTOCOL-IES : IEsSetParam} ::= ProtocolIE-SingleContainer template using protocol_ie_single_container_item_s = protocol_ie_single_container_s; // E-RAB-IE-ContainerList{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE (SIZE (1..256)) OF // ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} template using erab_ie_container_list_l = dyn_seq_of, 1, 256, true>; // E-RABDataForwardingItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_data_forwarding_item_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_data_forwarding_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_data_forwarding_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_data_forwarding_item_s& erab_data_forwarding_item() { return c; } const erab_data_forwarding_item_s& erab_data_forwarding_item() const { return c; } private: erab_data_forwarding_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // Cdma2000HOStatus ::= ENUMERATED struct cdma2000_ho_status_opts { enum options { hosuccess, hofail, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated cdma2000_ho_status_e; // Cdma2000RATType ::= ENUMERATED struct cdma2000_rat_type_opts { enum options { hrpd, onex_rtt, /*...*/ nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated cdma2000_rat_type_e; // DownlinkS1cdma2000tunnellingIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct dl_s1cdma2000tunnelling_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, erab_subjectto_data_forwarding_list, cdma2000_ho_status, cdma2000_rat_type, cdma2000_pdu, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); erab_ie_container_list_l& erab_subjectto_data_forwarding_list(); cdma2000_ho_status_e& cdma2000_ho_status(); cdma2000_rat_type_e& cdma2000_rat_type(); unbounded_octstring& cdma2000_pdu(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const erab_ie_container_list_l& erab_subjectto_data_forwarding_list() const; const cdma2000_ho_status_e& cdma2000_ho_status() const; const cdma2000_rat_type_e& cdma2000_rat_type() const; const unbounded_octstring& cdma2000_pdu() const; private: types type_; choice_buffer_t, unbounded_octstring > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct dl_s1cdma2000tunnelling_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool erab_subjectto_data_forwarding_list_present = false; bool cdma2000_ho_status_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > erab_subjectto_data_forwarding_list; ie_field_s cdma2000_ho_status; ie_field_s cdma2000_rat_type; ie_field_s > cdma2000_pdu; // sequence methods dl_s1cdma2000tunnelling_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // DownlinkS1cdma2000tunnelling ::= SEQUENCE using dl_s1cdma2000tunnelling_s = elementary_procedure_option; // DownlinkUEAssociatedLPPaTransport-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct dl_ueassociated_lp_pa_transport_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, routing_id, lp_pa_pdu, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); uint16_t& routing_id(); unbounded_octstring& lp_pa_pdu(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const uint16_t& routing_id() const; const unbounded_octstring& lp_pa_pdu() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct dl_ueassociated_lp_pa_transport_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > routing_id; ie_field_s > lp_pa_pdu; // sequence methods dl_ueassociated_lp_pa_transport_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // DownlinkUEAssociatedLPPaTransport ::= SEQUENCE using dl_ueassociated_lp_pa_transport_s = elementary_procedure_option; // ProtocolIE-ContainerPair-item{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= ProtocolIE-ContainerPair template using protocol_ie_container_pair_item_l = protocol_ie_container_pair_l; // E-RAB-IE-ContainerPairList{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE (SIZE (1..256)) OF // ProtocolIE-ContainerPair{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} template using erab_ie_container_pair_list_l = dyn_seq_of, 0, 65535, true>, 1, 256>; // E-RABAdmittedItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_admitted_item_ext_ies_o = protocol_ext_empty_o; using erab_admitted_item_ext_ies_container = protocol_ext_container_empty_l; // E-RABAdmittedItem ::= SEQUENCE struct erab_admitted_item_s { bool ext = false; bool dl_transport_layer_address_present = false; bool dl_g_tp_teid_present = false; bool ul_transport_layer_address_present = false; bool ul_gtp_teid_present = false; bool ie_exts_present = false; uint8_t erab_id = 0; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<4, true> gtp_teid; bounded_bitstring<1, 160, true, true> dl_transport_layer_address; fixed_octstring<4, true> dl_g_tp_teid; bounded_bitstring<1, 160, true, true> ul_transport_layer_address; fixed_octstring<4, true> ul_gtp_teid; erab_admitted_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABAdmittedItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_admitted_item_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_admitted_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_admitted_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_admitted_item_s& erab_admitted_item() { return c; } const erab_admitted_item_s& erab_admitted_item() const { return c; } private: erab_admitted_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABFailedToResumeItemResumeReq-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_failed_to_resume_item_resume_req_ext_ies_o = protocol_ext_empty_o; using erab_failed_to_resume_item_resume_req_ext_ies_container = protocol_ext_container_empty_l; // E-RABFailedToResumeItemResumeReq ::= SEQUENCE struct erab_failed_to_resume_item_resume_req_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; cause_c cause; erab_failed_to_resume_item_resume_req_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABFailedToResumeItemResumeReqIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_failed_to_resume_item_resume_req_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_failed_to_resume_item_resume_req, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_failed_to_resume_item_resume_req; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_failed_to_resume_item_resume_req_s& erab_failed_to_resume_item_resume_req() { return c; } const erab_failed_to_resume_item_resume_req_s& erab_failed_to_resume_item_resume_req() const { return c; } private: erab_failed_to_resume_item_resume_req_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABFailedToResumeItemResumeRes-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_failed_to_resume_item_resume_res_ext_ies_o = protocol_ext_empty_o; using erab_failed_to_resume_item_resume_res_ext_ies_container = protocol_ext_container_empty_l; // E-RABFailedToResumeItemResumeRes ::= SEQUENCE struct erab_failed_to_resume_item_resume_res_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; cause_c cause; erab_failed_to_resume_item_resume_res_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABFailedToResumeItemResumeResIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_failed_to_resume_item_resume_res_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_failed_to_resume_item_resume_res, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_failed_to_resume_item_resume_res; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_failed_to_resume_item_resume_res_s& erab_failed_to_resume_item_resume_res() { return c; } const erab_failed_to_resume_item_resume_res_s& erab_failed_to_resume_item_resume_res() const { return c; } private: erab_failed_to_resume_item_resume_res_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABFailedToSetupItemHOReqAckExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_failed_to_setup_item_ho_req_ack_ext_ies_o = protocol_ext_empty_o; using erab_failed_to_setup_item_ho_req_ack_ext_ies_container = protocol_ext_container_empty_l; // E-RABFailedToSetupItemHOReqAck ::= SEQUENCE struct erab_failed_to_setup_item_ho_req_ack_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; cause_c cause; erab_failed_to_setup_item_ho_req_ack_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABFailedtoSetupItemHOReqAckIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_failedto_setup_item_ho_req_ack_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_failedto_setup_item_ho_req_ack, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_failedto_setup_item_ho_req_ack; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_failed_to_setup_item_ho_req_ack_s& erab_failedto_setup_item_ho_req_ack() { return c; } const erab_failed_to_setup_item_ho_req_ack_s& erab_failedto_setup_item_ho_req_ack() const { return c; } private: erab_failed_to_setup_item_ho_req_ack_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // DL-Forwarding ::= ENUMERATED struct dl_forwarding_opts { enum options { dl_forwarding_proposed, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated dl_forwarding_e; // E-RABInformationListItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_info_list_item_ext_ies_o = protocol_ext_empty_o; using erab_info_list_item_ext_ies_container = protocol_ext_container_empty_l; // E-RABInformationListItem ::= SEQUENCE struct erab_info_list_item_s { bool ext = false; bool dl_forwarding_present = false; bool ie_exts_present = false; uint8_t erab_id = 0; dl_forwarding_e dl_forwarding; erab_info_list_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABInformationListIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_info_list_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_info_list_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_info_list_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_info_list_item_s& erab_info_list_item() { return c; } const erab_info_list_item_s& erab_info_list_item() const { return c; } private: erab_info_list_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABInformationList ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} using erab_info_list_l = dyn_array >; // E-RABItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_item_ext_ies_o = protocol_ext_empty_o; using erab_item_ext_ies_container = protocol_ext_container_empty_l; // E-RABItem ::= SEQUENCE struct erab_item_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; cause_c cause; erab_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_item_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_item_s& erab_item() { return c; } const erab_item_s& erab_item() const { return c; } private: erab_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABList ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} using erab_list_l = dyn_array >; // E-RABModifyItemBearerModConfExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_modify_item_bearer_mod_conf_ext_ies_o = protocol_ext_empty_o; using erab_modify_item_bearer_mod_conf_ext_ies_container = protocol_ext_container_empty_l; // E-RABModifyItemBearerModConf ::= SEQUENCE struct erab_modify_item_bearer_mod_conf_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; erab_modify_item_bearer_mod_conf_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABModifyItemBearerModConfIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_modify_item_bearer_mod_conf_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_modify_item_bearer_mod_conf, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_modify_item_bearer_mod_conf; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_modify_item_bearer_mod_conf_s& erab_modify_item_bearer_mod_conf() { return c; } const erab_modify_item_bearer_mod_conf_s& erab_modify_item_bearer_mod_conf() const { return c; } private: erab_modify_item_bearer_mod_conf_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABModifyListBearerModConf ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : // IEsSetParam} using erab_modify_list_bearer_mod_conf_l = dyn_array >; // E-RABModificationConfirmIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_mod_confirm_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, erab_modify_list_bearer_mod_conf, erab_failed_to_modify_list_bearer_mod_conf, erab_to_be_released_list_bearer_mod_conf, crit_diagnostics, csg_membership_status, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); erab_modify_list_bearer_mod_conf_l& erab_modify_list_bearer_mod_conf(); erab_list_l& erab_failed_to_modify_list_bearer_mod_conf(); erab_list_l& erab_to_be_released_list_bearer_mod_conf(); crit_diagnostics_s& crit_diagnostics(); csg_membership_status_e& csg_membership_status(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const erab_modify_list_bearer_mod_conf_l& erab_modify_list_bearer_mod_conf() const; const erab_list_l& erab_failed_to_modify_list_bearer_mod_conf() const; const erab_list_l& erab_to_be_released_list_bearer_mod_conf() const; const crit_diagnostics_s& crit_diagnostics() const; const csg_membership_status_e& csg_membership_status() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_mod_confirm_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool erab_modify_list_bearer_mod_conf_present = false; bool erab_failed_to_modify_list_bearer_mod_conf_present = false; bool erab_to_be_released_list_bearer_mod_conf_present = false; bool crit_diagnostics_present = false; bool csg_membership_status_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s, 1, 256, true> > erab_modify_list_bearer_mod_conf; ie_field_s, 1, 256, true> > erab_failed_to_modify_list_bearer_mod_conf; ie_field_s, 1, 256, true> > erab_to_be_released_list_bearer_mod_conf; ie_field_s crit_diagnostics; ie_field_s csg_membership_status; // sequence methods erab_mod_confirm_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABModificationConfirm ::= SEQUENCE using erab_mod_confirm_s = elementary_procedure_option; // E-RABUsageReportItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erabusage_report_item_ext_ies_o = protocol_ext_empty_o; using erabusage_report_item_ext_ies_container = protocol_ext_container_empty_l; // E-RABUsageReportItem ::= SEQUENCE struct erabusage_report_item_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<4, true> start_timestamp; fixed_octstring<4, true> end_timestamp; uint64_t usage_count_ul = 0; uint64_t usage_count_dl = 0; erabusage_report_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABUsageReportItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erabusage_report_item_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erabusage_report_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erabusage_report_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erabusage_report_item_s& erabusage_report_item() { return c; } const erabusage_report_item_s& erabusage_report_item() const { return c; } private: erabusage_report_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // NR-CGI-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using nr_cgi_ext_ies_o = protocol_ext_empty_o; // E-RABNotToBeModifiedItemBearerModInd-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_not_to_be_modified_item_bearer_mod_ind_ext_ies_o = protocol_ext_empty_o; // E-RABToBeModifiedItemBearerModInd-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_to_be_modified_item_bearer_mod_ind_ext_ies_o = protocol_ext_empty_o; // E-RABUsageReportList ::= SEQUENCE (SIZE (1..2)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} using erabusage_report_list_l = bounded_array, 2>; using nr_cgi_ext_ies_container = protocol_ext_container_empty_l; // NR-CGI ::= SEQUENCE struct nr_cgi_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plmn_id; fixed_bitstring<36, false, true> nrcell_id; nr_cgi_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // PSCellInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using ps_cell_info_ext_ies_o = protocol_ext_empty_o; // SecondaryRATDataUsageReportItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using secondary_rat_data_usage_report_item_ext_ies_o = protocol_ext_empty_o; // SecondaryRATType ::= ENUMERATED struct secondary_rat_type_opts { enum options { nr, /*...*/ unlicensed, nulltype } value; const char* to_string() const; }; typedef enumerated secondary_rat_type_e; using erab_not_to_be_modified_item_bearer_mod_ind_ext_ies_container = protocol_ext_container_empty_l; // E-RABNotToBeModifiedItemBearerModInd ::= SEQUENCE struct erab_not_to_be_modified_item_bearer_mod_ind_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<4, true> dl_gtp_teid; erab_not_to_be_modified_item_bearer_mod_ind_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using erab_to_be_modified_item_bearer_mod_ind_ext_ies_container = protocol_ext_container_empty_l; // E-RABToBeModifiedItemBearerModInd ::= SEQUENCE struct erab_to_be_modified_item_bearer_mod_ind_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<4, true> dl_gtp_teid; erab_to_be_modified_item_bearer_mod_ind_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using ps_cell_info_ext_ies_container = protocol_ext_container_empty_l; // PSCellInformation ::= SEQUENCE struct ps_cell_info_s { bool ext = false; bool ie_exts_present = false; nr_cgi_s ncgi; ps_cell_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using secondary_rat_data_usage_report_item_ext_ies_container = protocol_ext_container_empty_l; // SecondaryRATDataUsageReportItem ::= SEQUENCE struct secondary_rat_data_usage_report_item_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; secondary_rat_type_e secondary_rat_type; erabusage_report_list_l erabusage_report_list; secondary_rat_data_usage_report_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABNotToBeModifiedItemBearerModIndIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_not_to_be_modified_item_bearer_mod_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_not_to_be_modified_item_bearer_mod_ind, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_not_to_be_modified_item_bearer_mod_ind; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_not_to_be_modified_item_bearer_mod_ind_s& erab_not_to_be_modified_item_bearer_mod_ind() { return c; } const erab_not_to_be_modified_item_bearer_mod_ind_s& erab_not_to_be_modified_item_bearer_mod_ind() const { return c; } private: erab_not_to_be_modified_item_bearer_mod_ind_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABToBeModifiedItemBearerModIndIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_to_be_modified_item_bearer_mod_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_to_be_modified_item_bearer_mod_ind, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_to_be_modified_item_bearer_mod_ind; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_to_be_modified_item_bearer_mod_ind_s& erab_to_be_modified_item_bearer_mod_ind() { return c; } const erab_to_be_modified_item_bearer_mod_ind_s& erab_to_be_modified_item_bearer_mod_ind() const { return c; } private: erab_to_be_modified_item_bearer_mod_ind_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // SecondaryRATDataUsageReportItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct secondary_rat_data_usage_report_item_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { secondary_rat_data_usage_report_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::secondary_rat_data_usage_report_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters secondary_rat_data_usage_report_item_s& secondary_rat_data_usage_report_item() { return c; } const secondary_rat_data_usage_report_item_s& secondary_rat_data_usage_report_item() const { return c; } private: secondary_rat_data_usage_report_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // Tunnel-Information-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using tunnel_info_ext_ies_o = protocol_ext_empty_o; // UserLocationInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct user_location_info_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { ps_cell_info, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::ps_cell_info; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters ps_cell_info_s& ps_cell_info() { return c; } const ps_cell_info_s& ps_cell_info() const { return c; } private: ps_cell_info_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // SecondaryRATDataUsageReportList ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : // IEsSetParam} using secondary_rat_data_usage_report_list_l = dyn_array >; using tunnel_info_ext_ies_container = protocol_ext_container_empty_l; // TunnelInformation ::= SEQUENCE struct tunnel_info_s { bool ext = false; bool udp_port_num_present = false; bool ie_exts_present = false; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<2, true> udp_port_num; tunnel_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UserLocationInformation ::= SEQUENCE struct user_location_info_s { bool ext = false; bool ie_exts_present = false; eutran_cgi_s eutran_cgi; tai_s tai; protocol_ext_container_l ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABModificationIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_mod_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, erab_to_be_modified_list_bearer_mod_ind, erab_not_to_be_modified_list_bearer_mod_ind, csg_membership_info, tunnel_info_for_bbf, secondary_rat_data_usage_report_list, user_location_info, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); erab_ie_container_list_l& erab_to_be_modified_list_bearer_mod_ind(); erab_ie_container_list_l& erab_not_to_be_modified_list_bearer_mod_ind(); csg_membership_info_s& csg_membership_info(); tunnel_info_s& tunnel_info_for_bbf(); secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list(); user_location_info_s& user_location_info(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const erab_ie_container_list_l& erab_to_be_modified_list_bearer_mod_ind() const; const erab_ie_container_list_l& erab_not_to_be_modified_list_bearer_mod_ind() const; const csg_membership_info_s& csg_membership_info() const; const tunnel_info_s& tunnel_info_for_bbf() const; const secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list() const; const user_location_info_s& user_location_info() const; private: types type_; choice_buffer_t, erab_ie_container_list_l, secondary_rat_data_usage_report_list_l, tunnel_info_s, user_location_info_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_mod_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool erab_not_to_be_modified_list_bearer_mod_ind_present = false; bool csg_membership_info_present = false; bool tunnel_info_for_bbf_present = false; bool secondary_rat_data_usage_report_list_present = false; bool user_location_info_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > erab_to_be_modified_list_bearer_mod_ind; ie_field_s > erab_not_to_be_modified_list_bearer_mod_ind; ie_field_s csg_membership_info; ie_field_s tunnel_info_for_bbf; ie_field_s, 1, 256, true> > secondary_rat_data_usage_report_list; ie_field_s user_location_info; // sequence methods erab_mod_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABModificationIndication ::= SEQUENCE using erab_mod_ind_s = elementary_procedure_option; // E-RABModifyItemBearerModResExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_modify_item_bearer_mod_res_ext_ies_o = protocol_ext_empty_o; using erab_modify_item_bearer_mod_res_ext_ies_container = protocol_ext_container_empty_l; // E-RABModifyItemBearerModRes ::= SEQUENCE struct erab_modify_item_bearer_mod_res_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; erab_modify_item_bearer_mod_res_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABModifyItemBearerModResIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_modify_item_bearer_mod_res_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_modify_item_bearer_mod_res, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_modify_item_bearer_mod_res; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_modify_item_bearer_mod_res_s& erab_modify_item_bearer_mod_res() { return c; } const erab_modify_item_bearer_mod_res_s& erab_modify_item_bearer_mod_res() const { return c; } private: erab_modify_item_bearer_mod_res_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABModifyListBearerModRes ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : // IEsSetParam} using erab_modify_list_bearer_mod_res_l = dyn_array >; // TransportInformation ::= SEQUENCE struct transport_info_s { bool ext = false; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<4, true> ul_gtp_teid; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABToBeModifyItemBearerModReqExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct erab_to_be_modify_item_bearer_mod_req_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { transport_info, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::transport_info; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters transport_info_s& transport_info() { return c; } const transport_info_s& transport_info() const { return c; } private: transport_info_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABToBeModifiedItemBearerModReq ::= SEQUENCE struct erab_to_be_modified_item_bearer_mod_req_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; erab_level_qos_params_s erab_level_qos_params; unbounded_octstring nas_pdu; protocol_ext_container_l ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABToBeModifiedItemBearerModReqIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_to_be_modified_item_bearer_mod_req_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_to_be_modified_item_bearer_mod_req, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_to_be_modified_item_bearer_mod_req; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_to_be_modified_item_bearer_mod_req_s& erab_to_be_modified_item_bearer_mod_req() { return c; } const erab_to_be_modified_item_bearer_mod_req_s& erab_to_be_modified_item_bearer_mod_req() const { return c; } private: erab_to_be_modified_item_bearer_mod_req_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEAggregate-MaximumBitrates-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct ue_aggregate_maximum_bitrates_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { extended_u_eaggregate_maximum_bit_rate_dl, extended_u_eaggregate_maximum_bit_rate_ul, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 uint64_t& extended_u_eaggregate_maximum_bit_rate_dl(); uint64_t& extended_u_eaggregate_maximum_bit_rate_ul(); const uint64_t& extended_u_eaggregate_maximum_bit_rate_dl() const; const uint64_t& extended_u_eaggregate_maximum_bit_rate_ul() const; private: types type_; pod_choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABToBeModifiedListBearerModReq ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : // IEsSetParam} using erab_to_be_modified_list_bearer_mod_req_l = dyn_array >; // SecondaryRATDataUsageRequest ::= ENUMERATED struct secondary_rat_data_usage_request_opts { enum options { requested, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated secondary_rat_data_usage_request_e; struct ue_aggregate_maximum_bitrates_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool extended_u_eaggregate_maximum_bit_rate_dl_present = false; bool extended_u_eaggregate_maximum_bit_rate_ul_present = false; ie_field_s > extended_u_eaggregate_maximum_bit_rate_dl; ie_field_s > extended_u_eaggregate_maximum_bit_rate_ul; // sequence methods ue_aggregate_maximum_bitrates_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEAggregateMaximumBitrate ::= SEQUENCE struct ue_aggregate_maximum_bitrate_s { bool ext = false; bool ie_exts_present = false; uint64_t ueaggregate_maximum_bit_rate_dl = 0; uint64_t ueaggregate_maximum_bit_rate_ul = 0; ue_aggregate_maximum_bitrates_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABModifyRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_modify_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, ueaggregate_maximum_bitrate, erab_to_be_modified_list_bearer_mod_req, secondary_rat_data_usage_request, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate(); erab_to_be_modified_list_bearer_mod_req_l& erab_to_be_modified_list_bearer_mod_req(); secondary_rat_data_usage_request_e& secondary_rat_data_usage_request(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate() const; const erab_to_be_modified_list_bearer_mod_req_l& erab_to_be_modified_list_bearer_mod_req() const; const secondary_rat_data_usage_request_e& secondary_rat_data_usage_request() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_modify_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ueaggregate_maximum_bitrate_present = false; bool secondary_rat_data_usage_request_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s ueaggregate_maximum_bitrate; ie_field_s, 1, 256, true> > erab_to_be_modified_list_bearer_mod_req; ie_field_s secondary_rat_data_usage_request; // sequence methods erab_modify_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABModifyRequest ::= SEQUENCE using erab_modify_request_s = elementary_procedure_option; // E-RABModifyResponseIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_modify_resp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, erab_modify_list_bearer_mod_res, erab_failed_to_modify_list, crit_diagnostics, secondary_rat_data_usage_report_list, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); erab_modify_list_bearer_mod_res_l& erab_modify_list_bearer_mod_res(); erab_list_l& erab_failed_to_modify_list(); crit_diagnostics_s& crit_diagnostics(); secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const erab_modify_list_bearer_mod_res_l& erab_modify_list_bearer_mod_res() const; const erab_list_l& erab_failed_to_modify_list() const; const crit_diagnostics_s& crit_diagnostics() const; const secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_modify_resp_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool erab_modify_list_bearer_mod_res_present = false; bool erab_failed_to_modify_list_present = false; bool crit_diagnostics_present = false; bool secondary_rat_data_usage_report_list_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s, 1, 256, true> > erab_modify_list_bearer_mod_res; ie_field_s, 1, 256, true> > erab_failed_to_modify_list; ie_field_s crit_diagnostics; ie_field_s, 1, 256, true> > secondary_rat_data_usage_report_list; // sequence methods erab_modify_resp_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABModifyResponse ::= SEQUENCE using erab_modify_resp_s = elementary_procedure_option; // E-RABReleaseCommandIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_release_cmd_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, ueaggregate_maximum_bitrate, erab_to_be_released_list, nas_pdu, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate(); erab_list_l& erab_to_be_released_list(); unbounded_octstring& nas_pdu(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate() const; const erab_list_l& erab_to_be_released_list() const; const unbounded_octstring& nas_pdu() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_release_cmd_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ueaggregate_maximum_bitrate_present = false; bool nas_pdu_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s ueaggregate_maximum_bitrate; ie_field_s, 1, 256, true> > erab_to_be_released_list; ie_field_s > nas_pdu; // sequence methods erab_release_cmd_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABReleaseCommand ::= SEQUENCE using erab_release_cmd_s = elementary_procedure_option; // E-RABReleaseIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_release_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, erab_released_list, user_location_info, secondary_rat_data_usage_report_list, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); erab_list_l& erab_released_list(); user_location_info_s& user_location_info(); secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const erab_list_l& erab_released_list() const; const user_location_info_s& user_location_info() const; const secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_release_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool user_location_info_present = false; bool secondary_rat_data_usage_report_list_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s, 1, 256, true> > erab_released_list; ie_field_s user_location_info; ie_field_s, 1, 256, true> > secondary_rat_data_usage_report_list; // sequence methods erab_release_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABReleaseIndication ::= SEQUENCE using erab_release_ind_s = elementary_procedure_option; // E-RABReleaseItemBearerRelCompExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_release_item_bearer_rel_comp_ext_ies_o = protocol_ext_empty_o; using erab_release_item_bearer_rel_comp_ext_ies_container = protocol_ext_container_empty_l; // E-RABReleaseItemBearerRelComp ::= SEQUENCE struct erab_release_item_bearer_rel_comp_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; erab_release_item_bearer_rel_comp_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABReleaseItemBearerRelCompIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_release_item_bearer_rel_comp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_release_item_bearer_rel_comp, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_release_item_bearer_rel_comp; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_release_item_bearer_rel_comp_s& erab_release_item_bearer_rel_comp() { return c; } const erab_release_item_bearer_rel_comp_s& erab_release_item_bearer_rel_comp() const { return c; } private: erab_release_item_bearer_rel_comp_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABReleaseListBearerRelComp ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : // IEsSetParam} using erab_release_list_bearer_rel_comp_l = dyn_array >; // E-RABReleaseResponseIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_release_resp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, erab_release_list_bearer_rel_comp, erab_failed_to_release_list, crit_diagnostics, user_location_info, secondary_rat_data_usage_report_list, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); erab_release_list_bearer_rel_comp_l& erab_release_list_bearer_rel_comp(); erab_list_l& erab_failed_to_release_list(); crit_diagnostics_s& crit_diagnostics(); user_location_info_s& user_location_info(); secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const erab_release_list_bearer_rel_comp_l& erab_release_list_bearer_rel_comp() const; const erab_list_l& erab_failed_to_release_list() const; const crit_diagnostics_s& crit_diagnostics() const; const user_location_info_s& user_location_info() const; const secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_release_resp_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool erab_release_list_bearer_rel_comp_present = false; bool erab_failed_to_release_list_present = false; bool crit_diagnostics_present = false; bool user_location_info_present = false; bool secondary_rat_data_usage_report_list_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s, 1, 256, true> > erab_release_list_bearer_rel_comp; ie_field_s, 1, 256, true> > erab_failed_to_release_list; ie_field_s crit_diagnostics; ie_field_s user_location_info; ie_field_s, 1, 256, true> > secondary_rat_data_usage_report_list; // sequence methods erab_release_resp_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABReleaseResponse ::= SEQUENCE using erab_release_resp_s = elementary_procedure_option; // E-RABSetupItemBearerSUResExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_setup_item_bearer_su_res_ext_ies_o = protocol_ext_empty_o; using erab_setup_item_bearer_su_res_ext_ies_container = protocol_ext_container_empty_l; // E-RABSetupItemBearerSURes ::= SEQUENCE struct erab_setup_item_bearer_su_res_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<4, true> gtp_teid; erab_setup_item_bearer_su_res_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABSetupItemBearerSUResIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_setup_item_bearer_su_res_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_setup_item_bearer_su_res, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_setup_item_bearer_su_res; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_setup_item_bearer_su_res_s& erab_setup_item_bearer_su_res() { return c; } const erab_setup_item_bearer_su_res_s& erab_setup_item_bearer_su_res() const { return c; } private: erab_setup_item_bearer_su_res_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABSetupItemCtxtSUResExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_setup_item_ctxt_su_res_ext_ies_o = protocol_ext_empty_o; using erab_setup_item_ctxt_su_res_ext_ies_container = protocol_ext_container_empty_l; // E-RABSetupItemCtxtSURes ::= SEQUENCE struct erab_setup_item_ctxt_su_res_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<4, true> gtp_teid; erab_setup_item_ctxt_su_res_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABSetupItemCtxtSUResIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_setup_item_ctxt_su_res_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_setup_item_ctxt_su_res, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_setup_item_ctxt_su_res; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_setup_item_ctxt_su_res_s& erab_setup_item_ctxt_su_res() { return c; } const erab_setup_item_ctxt_su_res_s& erab_setup_item_ctxt_su_res() const { return c; } private: erab_setup_item_ctxt_su_res_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABSetupListBearerSURes ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} using erab_setup_list_bearer_su_res_l = dyn_array >; // E-RABSetupListCtxtSURes ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} using erab_setup_list_ctxt_su_res_l = dyn_array >; // BearerType ::= ENUMERATED struct bearer_type_opts { enum options { non_ip, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated bearer_type_e; // E-RABToBeSetupItemBearerSUReqExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct erab_to_be_setup_item_bearer_su_req_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { correlation_id, sipto_correlation_id, bearer_type, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_octstring<4, true>& correlation_id(); fixed_octstring<4, true>& sipto_correlation_id(); bearer_type_e& bearer_type(); const fixed_octstring<4, true>& correlation_id() const; const fixed_octstring<4, true>& sipto_correlation_id() const; const bearer_type_e& bearer_type() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_to_be_setup_item_bearer_su_req_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool correlation_id_present = false; bool sipto_correlation_id_present = false; bool bearer_type_present = false; ie_field_s > correlation_id; ie_field_s > sipto_correlation_id; ie_field_s bearer_type; // sequence methods erab_to_be_setup_item_bearer_su_req_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABToBeSetupItemBearerSUReq ::= SEQUENCE struct erab_to_be_setup_item_bearer_su_req_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; erab_level_qos_params_s erab_level_qos_params; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<4, true> gtp_teid; unbounded_octstring nas_pdu; erab_to_be_setup_item_bearer_su_req_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABToBeSetupItemBearerSUReqIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_to_be_setup_item_bearer_su_req_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_to_be_setup_item_bearer_su_req, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_to_be_setup_item_bearer_su_req; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_to_be_setup_item_bearer_su_req_s& erab_to_be_setup_item_bearer_su_req() { return c; } const erab_to_be_setup_item_bearer_su_req_s& erab_to_be_setup_item_bearer_su_req() const { return c; } private: erab_to_be_setup_item_bearer_su_req_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABToBeSetupListBearerSUReq ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : // IEsSetParam} using erab_to_be_setup_list_bearer_su_req_l = dyn_array >; // E-RABSetupRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_setup_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, ueaggregate_maximum_bitrate, erab_to_be_setup_list_bearer_su_req, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate(); erab_to_be_setup_list_bearer_su_req_l& erab_to_be_setup_list_bearer_su_req(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate() const; const erab_to_be_setup_list_bearer_su_req_l& erab_to_be_setup_list_bearer_su_req() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_setup_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ueaggregate_maximum_bitrate_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s ueaggregate_maximum_bitrate; ie_field_s, 1, 256, true> > erab_to_be_setup_list_bearer_su_req; // sequence methods erab_setup_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABSetupRequest ::= SEQUENCE using erab_setup_request_s = elementary_procedure_option; // E-RABSetupResponseIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_setup_resp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, erab_setup_list_bearer_su_res, erab_failed_to_setup_list_bearer_su_res, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); erab_setup_list_bearer_su_res_l& erab_setup_list_bearer_su_res(); erab_list_l& erab_failed_to_setup_list_bearer_su_res(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const erab_setup_list_bearer_su_res_l& erab_setup_list_bearer_su_res() const; const erab_list_l& erab_failed_to_setup_list_bearer_su_res() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_setup_resp_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool erab_setup_list_bearer_su_res_present = false; bool erab_failed_to_setup_list_bearer_su_res_present = false; bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s, 1, 256, true> > erab_setup_list_bearer_su_res; ie_field_s, 1, 256, true> > erab_failed_to_setup_list_bearer_su_res; ie_field_s crit_diagnostics; // sequence methods erab_setup_resp_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABSetupResponse ::= SEQUENCE using erab_setup_resp_s = elementary_procedure_option; // E-RABToBeSetupItemCtxtSUReqExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct erab_to_be_setup_item_ctxt_su_req_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { correlation_id, sipto_correlation_id, bearer_type, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_octstring<4, true>& correlation_id(); fixed_octstring<4, true>& sipto_correlation_id(); bearer_type_e& bearer_type(); const fixed_octstring<4, true>& correlation_id() const; const fixed_octstring<4, true>& sipto_correlation_id() const; const bearer_type_e& bearer_type() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_to_be_setup_item_ctxt_su_req_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool correlation_id_present = false; bool sipto_correlation_id_present = false; bool bearer_type_present = false; ie_field_s > correlation_id; ie_field_s > sipto_correlation_id; ie_field_s bearer_type; // sequence methods erab_to_be_setup_item_ctxt_su_req_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABToBeSetupItemCtxtSUReq ::= SEQUENCE struct erab_to_be_setup_item_ctxt_su_req_s { bool ext = false; bool nas_pdu_present = false; bool ie_exts_present = false; uint8_t erab_id = 0; erab_level_qos_params_s erab_level_qos_params; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<4, true> gtp_teid; unbounded_octstring nas_pdu; erab_to_be_setup_item_ctxt_su_req_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABToBeSetupItemCtxtSUReqIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_to_be_setup_item_ctxt_su_req_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_to_be_setup_item_ctxt_su_req, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_to_be_setup_item_ctxt_su_req; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_to_be_setup_item_ctxt_su_req_s& erab_to_be_setup_item_ctxt_su_req() { return c; } const erab_to_be_setup_item_ctxt_su_req_s& erab_to_be_setup_item_ctxt_su_req() const { return c; } private: erab_to_be_setup_item_ctxt_su_req_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // Data-Forwarding-Not-Possible ::= ENUMERATED struct data_forwarding_not_possible_opts { enum options { data_forwarding_not_possible, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated data_forwarding_not_possible_e; // E-RABToBeSetupItemHOReq-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct erab_to_be_setup_item_ho_req_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { data_forwarding_not_possible, bearer_type, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 data_forwarding_not_possible_e& data_forwarding_not_possible(); bearer_type_e& bearer_type(); const data_forwarding_not_possible_e& data_forwarding_not_possible() const; const bearer_type_e& bearer_type() const; private: types type_; pod_choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct erab_to_be_setup_item_ho_req_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool data_forwarding_not_possible_present = false; bool bearer_type_present = false; ie_field_s data_forwarding_not_possible; ie_field_s bearer_type; // sequence methods erab_to_be_setup_item_ho_req_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABToBeSetupItemHOReq ::= SEQUENCE struct erab_to_be_setup_item_ho_req_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<4, true> gtp_teid; erab_level_qos_params_s erab_level_qos_params; erab_to_be_setup_item_ho_req_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABToBeSetupItemHOReqIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_to_be_setup_item_ho_req_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_to_be_setup_item_ho_req, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_to_be_setup_item_ho_req; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_to_be_setup_item_ho_req_s& erab_to_be_setup_item_ho_req() { return c; } const erab_to_be_setup_item_ho_req_s& erab_to_be_setup_item_ho_req() const { return c; } private: erab_to_be_setup_item_ho_req_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABToBeSetupListCtxtSUReq ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : // IEsSetParam} using erab_to_be_setup_list_ctxt_su_req_l = dyn_array >; // E-RABToBeSwitchedDLItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_to_be_switched_dl_item_ext_ies_o = protocol_ext_empty_o; using erab_to_be_switched_dl_item_ext_ies_container = protocol_ext_container_empty_l; // E-RABToBeSwitchedDLItem ::= SEQUENCE struct erab_to_be_switched_dl_item_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<4, true> gtp_teid; erab_to_be_switched_dl_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABToBeSwitchedDLItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_to_be_switched_dl_item_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_to_be_switched_dl_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_to_be_switched_dl_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_to_be_switched_dl_item_s& erab_to_be_switched_dl_item() { return c; } const erab_to_be_switched_dl_item_s& erab_to_be_switched_dl_item() const { return c; } private: erab_to_be_switched_dl_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // E-RABToBeSwitchedULItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using erab_to_be_switched_ul_item_ext_ies_o = protocol_ext_empty_o; using erab_to_be_switched_ul_item_ext_ies_container = protocol_ext_container_empty_l; // E-RABToBeSwitchedULItem ::= SEQUENCE struct erab_to_be_switched_ul_item_s { bool ext = false; bool ie_exts_present = false; uint8_t erab_id = 0; bounded_bitstring<1, 160, true, true> transport_layer_address; fixed_octstring<4, true> gtp_teid; erab_to_be_switched_ul_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // E-RABToBeSwitchedULItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct erab_to_be_switched_ul_item_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { erab_to_be_switched_ul_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::erab_to_be_switched_ul_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters erab_to_be_switched_ul_item_s& erab_to_be_switched_ul_item() { return c; } const erab_to_be_switched_ul_item_s& erab_to_be_switched_ul_item() const { return c; } private: erab_to_be_switched_ul_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // ECGI-List ::= SEQUENCE (SIZE (1..256)) OF EUTRAN-CGI using ecgi_list_l = dyn_array; // ECGIListForRestart ::= SEQUENCE (SIZE (1..256)) OF EUTRAN-CGI using ecgi_list_for_restart_l = dyn_array; // EHRPDMultiSectorLoadReportingResponseItem ::= SEQUENCE struct ehrpd_multi_sector_load_report_resp_item_s { bool ext = false; fixed_octstring<16, true> ehrpd_sector_id; ehrpd_sector_load_report_resp_s ehrpd_sector_load_report_resp; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ENBX2ExtTLA-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using enbx2_ext_tla_ext_ies_o = protocol_ext_empty_o; // ENBX2GTPTLAs ::= SEQUENCE (SIZE (1..16)) OF BIT STRING (SIZE (1..160,...)) using enbx2_gtptlas_l = bounded_array, 16>; using enbx2_ext_tla_ext_ies_container = protocol_ext_container_empty_l; // ENBX2ExtTLA ::= SEQUENCE struct enbx2_ext_tla_s { bool ext = false; bool ipsec_tla_present = false; bool gtptl_aa_present = false; bool ie_exts_present = false; bounded_bitstring<1, 160, true, true> ipsec_tla; enbx2_gtptlas_l gtptl_aa; enbx2_ext_tla_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // MutingAvailabilityIndication ::= ENUMERATED struct muting_availability_ind_opts { enum options { available, unavailable, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated muting_availability_ind_e; // RLFReportInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using rlf_report_info_ext_ies_o = protocol_ext_empty_o; // ENBIndirectX2TransportLayerAddresses ::= SEQUENCE (SIZE (1..2)) OF BIT STRING (SIZE (1..160,...)) using enb_indirect_x2_transport_layer_addresses_l = bounded_array, 2>; // ENBX2ExtTLAs ::= SEQUENCE (SIZE (1..16)) OF ENBX2ExtTLA using enbx2_ext_tlas_l = dyn_array; // Global-en-gNB-ID-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using global_en_g_nb_id_ext_ies_o = protocol_ext_empty_o; // MutingPatternInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using muting_pattern_info_ext_ies_o = protocol_ext_empty_o; using rlf_report_info_ext_ies_container = protocol_ext_container_empty_l; // RLFReportInformation ::= SEQUENCE struct rlf_report_info_s { bool ext = false; bool ue_rlf_report_container_for_extended_bands_present = false; bool ie_exts_present = false; unbounded_octstring ue_rlf_report_container; unbounded_octstring ue_rlf_report_container_for_extended_bands; rlf_report_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // SynchronisationStatus ::= ENUMERATED struct synchronisation_status_opts { enum options { sync, async, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated synchronisation_status_e; // TimeSynchronisationInfo-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct time_synchronisation_info_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { muting_availability_ind, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::muting_availability_ind; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters muting_availability_ind_e& muting_availability_ind() { return c; } const muting_availability_ind_e& muting_availability_ind() const { return c; } private: muting_availability_ind_e c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // EN-DCSONeNBIdentification-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using en_dcso_nenb_identif_ext_ies_o = protocol_ext_empty_o; // EN-DCSONengNBIdentification-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using en_dcso_neng_nb_identif_ext_ies_o = protocol_ext_empty_o; // ENBX2TLAs ::= SEQUENCE (SIZE (1..2)) OF BIT STRING (SIZE (1..160,...)) using enbx2_tlas_l = bounded_array, 2>; // FiveGSTAI-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using five_gstai_ext_ies_o = protocol_ext_empty_o; using global_en_g_nb_id_ext_ies_container = protocol_ext_container_empty_l; // Global-en-gNB-ID ::= SEQUENCE struct global_en_g_nb_id_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plm_nid; bounded_bitstring<22, 32, true, true> en_g_nb_id; global_en_g_nb_id_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using muting_pattern_info_ext_ies_container = protocol_ext_container_empty_l; // MutingPatternInformation ::= SEQUENCE struct muting_pattern_info_s { struct muting_pattern_period_opts { enum options { ms0, ms1280, ms2560, ms5120, ms10240, /*...*/ nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated muting_pattern_period_e_; // member variables bool ext = false; bool muting_pattern_offset_present = false; bool ie_exts_present = false; muting_pattern_period_e_ muting_pattern_period; uint16_t muting_pattern_offset = 0; muting_pattern_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // SONInformationReport ::= CHOICE struct son_info_report_c { struct types_opts { enum options { rlf_report_info, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::rlf_report_info; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters rlf_report_info_s& rlf_report_info() { return c; } const rlf_report_info_s& rlf_report_info() const { return c; } private: rlf_report_info_s c; }; // TimeSynchronisationInfo ::= SEQUENCE struct time_synchronisation_info_s { bool ext = false; bool ie_exts_present = false; uint8_t stratum_level = 0; synchronisation_status_e synchronisation_status; protocol_ext_container_l ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // X2TNLConfigurationInfo-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct x2_tnl_cfg_info_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { enbx2_extended_transport_layer_addresses, enb_indirect_x2_transport_layer_addresses, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 enbx2_ext_tlas_l& enbx2_extended_transport_layer_addresses(); enb_indirect_x2_transport_layer_addresses_l& enb_indirect_x2_transport_layer_addresses(); const enbx2_ext_tlas_l& enbx2_extended_transport_layer_addresses() const; const enb_indirect_x2_transport_layer_addresses_l& enb_indirect_x2_transport_layer_addresses() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; using en_dcso_nenb_identif_ext_ies_container = protocol_ext_container_empty_l; // EN-DCSONeNBIdentification ::= SEQUENCE struct en_dcso_nenb_identif_s { bool ext = false; bool ie_exts_present = false; global_enb_id_s globalenbid; tai_s sel_tai; en_dcso_nenb_identif_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using en_dcso_neng_nb_identif_ext_ies_container = protocol_ext_container_empty_l; // EN-DCSONengNBIdentification ::= SEQUENCE struct en_dcso_neng_nb_identif_s { bool ext = false; bool ie_exts_present = false; global_en_g_nb_id_s globaleng_nbid; tai_s sel_tai; en_dcso_neng_nb_identif_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // EN-DCTransferTypeReply-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using en_dc_transfer_type_reply_ext_ies_o = protocol_ext_empty_o; // EN-DCTransferTypeRequest-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using en_dc_transfer_type_request_ext_ies_o = protocol_ext_empty_o; using five_gstai_ext_ies_container = protocol_ext_container_empty_l; // FiveGSTAI ::= SEQUENCE struct five_gstai_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plm_nid; fixed_octstring<3, true> five_gstac; five_gstai_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // SONInformation-ExtensionIE ::= OBJECT SET OF S1AP-PROTOCOL-IES struct son_info_ext_ie_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { son_info_report, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::son_info_report; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters son_info_report_c& son_info_report() { return c; } const son_info_report_c& son_info_report() const { return c; } private: son_info_report_c c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // SONInformationReply-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct son_info_reply_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { time_synchronisation_info, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::time_synchronisation_info; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters time_synchronisation_info_s& time_synchronisation_info() { return c; } const time_synchronisation_info_s& time_synchronisation_info() const { return c; } private: time_synchronisation_info_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct x2_tnl_cfg_info_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool enbx2_extended_transport_layer_addresses_present = false; bool enb_indirect_x2_transport_layer_addresses_present = false; ie_field_s > enbx2_extended_transport_layer_addresses; ie_field_s, 1, 2, true> > enb_indirect_x2_transport_layer_addresses; // sequence methods x2_tnl_cfg_info_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // X2TNLConfigurationInfo ::= SEQUENCE struct x2_tnl_cfg_info_s { bool ext = false; bool ie_exts_present = false; enbx2_tlas_l enbx2_transport_layer_addresses; x2_tnl_cfg_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using en_dc_transfer_type_reply_ext_ies_container = protocol_ext_container_empty_l; // EN-DCTransferTypeReply ::= SEQUENCE struct en_dc_transfer_type_reply_s { bool ext = false; bool ie_exts_present = false; en_dcso_neng_nb_identif_s sourceeng_nb; en_dcso_nenb_identif_s targetenb; en_dc_transfer_type_reply_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using en_dc_transfer_type_request_ext_ies_container = protocol_ext_container_empty_l; // EN-DCTransferTypeRequest ::= SEQUENCE struct en_dc_transfer_type_request_s { bool ext = false; bool targetenb_present = false; bool associated_tai_present = false; bool broadcast5_gstai_present = false; bool ie_exts_present = false; en_dcso_nenb_identif_s sourceenb; en_dcso_neng_nb_identif_s targeteng_nb; en_dcso_nenb_identif_s targetenb; tai_s associated_tai; five_gstai_s broadcast5_gstai; en_dc_transfer_type_request_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // SONInformationReply ::= SEQUENCE struct son_info_reply_s { bool ext = false; bool x2_tnl_cfg_info_present = false; bool ie_exts_present = false; x2_tnl_cfg_info_s x2_tnl_cfg_info; protocol_ext_container_l ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // SONInformationRequest ::= ENUMERATED struct son_info_request_opts { enum options { x2_tnl_cfg_info, /*...*/ time_synchronisation_info, activ_muting, deactiv_muting, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated son_info_request_e; // EN-DCSONConfigurationTransfer-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using en_dcson_cfg_transfer_ext_ies_o = protocol_ext_empty_o; // EN-DCSONTransferType ::= CHOICE struct en_dcson_transfer_type_c { struct types_opts { enum options { request, reply, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods en_dcson_transfer_type_c() = default; en_dcson_transfer_type_c(const en_dcson_transfer_type_c& other); en_dcson_transfer_type_c& operator=(const en_dcson_transfer_type_c& other); ~en_dcson_transfer_type_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 en_dc_transfer_type_request_s& request() { assert_choice_type(types::request, type_, "EN-DCSONTransferType"); return c.get(); } en_dc_transfer_type_reply_s& reply() { assert_choice_type(types::reply, type_, "EN-DCSONTransferType"); return c.get(); } const en_dc_transfer_type_request_s& request() const { assert_choice_type(types::request, type_, "EN-DCSONTransferType"); return c.get(); } const en_dc_transfer_type_reply_s& reply() const { assert_choice_type(types::reply, type_, "EN-DCSONTransferType"); return c.get(); } en_dc_transfer_type_request_s& set_request(); en_dc_transfer_type_reply_s& set_reply(); private: types type_; choice_buffer_t c; void destroy_(); }; // SONInformation ::= CHOICE struct son_info_c { struct types_opts { enum options { son_info_request, son_info_reply, /*...*/ son_info_ext, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods son_info_c() = default; son_info_c(const son_info_c& other); son_info_c& operator=(const son_info_c& other); ~son_info_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 son_info_request_e& son_info_request() { assert_choice_type(types::son_info_request, type_, "SONInformation"); return c.get(); } son_info_reply_s& son_info_reply() { assert_choice_type(types::son_info_reply, type_, "SONInformation"); return c.get(); } protocol_ie_single_container_s& son_info_ext() { assert_choice_type(types::son_info_ext, type_, "SONInformation"); return c.get >(); } const son_info_request_e& son_info_request() const { assert_choice_type(types::son_info_request, type_, "SONInformation"); return c.get(); } const son_info_reply_s& son_info_reply() const { assert_choice_type(types::son_info_reply, type_, "SONInformation"); return c.get(); } const protocol_ie_single_container_s& son_info_ext() const { assert_choice_type(types::son_info_ext, type_, "SONInformation"); return c.get >(); } son_info_request_e& set_son_info_request(); son_info_reply_s& set_son_info_reply(); protocol_ie_single_container_s& set_son_info_ext(); private: types type_; choice_buffer_t, son_info_reply_s> c; void destroy_(); }; using en_dcson_cfg_transfer_ext_ies_container = protocol_ext_container_empty_l; // EN-DCSONConfigurationTransfer ::= SEQUENCE struct en_dcson_cfg_transfer_s { bool ext = false; bool x2_tnl_cfg_info_present = false; bool ie_exts_present = false; en_dcson_transfer_type_c transfertype; son_info_c son_info; x2_tnl_cfg_info_s x2_tnl_cfg_info; en_dcson_cfg_transfer_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ENB-StatusTransfer-TransparentContainer-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using enb_status_transfer_transparent_container_ext_ies_o = protocol_ext_empty_o; using enb_status_transfer_transparent_container_ext_ies_container = protocol_ext_container_empty_l; // ENB-StatusTransfer-TransparentContainer ::= SEQUENCE struct enb_status_transfer_transparent_container_s { bool ext = false; bool ie_exts_present = false; bearers_subject_to_status_transfer_list_l bearers_subject_to_status_transfer_list; enb_status_transfer_transparent_container_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // S-TMSI-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using s_tmsi_ext_ies_o = protocol_ext_empty_o; // UL-CP-SecurityInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using ul_cp_security_info_ext_ies_o = protocol_ext_empty_o; using s_tmsi_ext_ies_container = protocol_ext_container_empty_l; // S-TMSI ::= SEQUENCE struct s_tmsi_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<1, true> mmec; fixed_octstring<4, true> m_tmsi; s_tmsi_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using ul_cp_security_info_ext_ies_container = protocol_ext_container_empty_l; // UL-CP-SecurityInformation ::= SEQUENCE struct ul_cp_security_info_s { bool ext = false; bool ie_exts_present = false; fixed_bitstring<16, false, true> ul_nas_mac; fixed_bitstring<5, false, true> ul_nas_count; ul_cp_security_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ENBCPRelocationIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct enbcp_relocation_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { enb_ue_s1ap_id, s_tmsi, eutran_cgi, tai, ul_cp_security_info, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint32_t& enb_ue_s1ap_id(); s_tmsi_s& s_tmsi(); eutran_cgi_s& eutran_cgi(); tai_s& tai(); ul_cp_security_info_s& ul_cp_security_info(); const uint32_t& enb_ue_s1ap_id() const; const s_tmsi_s& s_tmsi() const; const eutran_cgi_s& eutran_cgi() const; const tai_s& tai() const; const ul_cp_security_info_s& ul_cp_security_info() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct enbcp_relocation_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > enb_ue_s1ap_id; ie_field_s s_tmsi; ie_field_s eutran_cgi; ie_field_s tai; ie_field_s ul_cp_security_info; // sequence methods enbcp_relocation_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ENBCPRelocationIndication ::= SEQUENCE using enbcp_relocation_ind_s = elementary_procedure_option; // ListeningSubframePattern-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using listening_sf_pattern_ext_ies_o = protocol_ext_empty_o; using listening_sf_pattern_ext_ies_container = protocol_ext_container_empty_l; // ListeningSubframePattern ::= SEQUENCE struct listening_sf_pattern_s { struct pattern_period_opts { enum options { ms1280, ms2560, ms5120, ms10240, /*...*/ nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated pattern_period_e_; // member variables bool ext = false; bool ie_exts_present = false; pattern_period_e_ pattern_period; uint16_t pattern_offset = 0; listening_sf_pattern_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // SynchronisationInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using synchronisation_info_ext_ies_o = protocol_ext_empty_o; // SourceeNB-ID-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using sourceenb_id_ext_ies_o = protocol_ext_empty_o; using synchronisation_info_ext_ies_container = protocol_ext_container_empty_l; // SynchronisationInformation ::= SEQUENCE struct synchronisation_info_s { bool ext = false; bool source_stratum_level_present = false; bool listening_sf_pattern_present = false; bool aggressore_cgi_list_present = false; bool ie_exts_present = false; uint8_t source_stratum_level = 0; listening_sf_pattern_s listening_sf_pattern; ecgi_list_l aggressore_cgi_list; synchronisation_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // TargeteNB-ID-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using targetenb_id_ext_ies_o = protocol_ext_empty_o; // SONConfigurationTransfer-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct son_cfg_transfer_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { x2_tnl_cfg_info, synchronisation_info, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 x2_tnl_cfg_info_s& x2_tnl_cfg_info(); synchronisation_info_s& synchronisation_info(); const x2_tnl_cfg_info_s& x2_tnl_cfg_info() const; const synchronisation_info_s& synchronisation_info() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; using sourceenb_id_ext_ies_container = protocol_ext_container_empty_l; // SourceeNB-ID ::= SEQUENCE struct sourceenb_id_s { bool ie_exts_present = false; global_enb_id_s global_enb_id; tai_s sel_tai; sourceenb_id_ext_ies_container ie_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using targetenb_id_ext_ies_container = protocol_ext_container_empty_l; // TargeteNB-ID ::= SEQUENCE struct targetenb_id_s { bool ext = false; bool ie_exts_present = false; global_enb_id_s global_enb_id; tai_s sel_tai; targetenb_id_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; struct son_cfg_transfer_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool x2_tnl_cfg_info_present = false; bool synchronisation_info_present = false; ie_field_s x2_tnl_cfg_info; ie_field_s synchronisation_info; // sequence methods son_cfg_transfer_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // SONConfigurationTransfer ::= SEQUENCE struct son_cfg_transfer_s { bool ext = false; bool ie_exts_present = false; targetenb_id_s targetenb_id; sourceenb_id_s sourceenb_id; son_info_c son_info; son_cfg_transfer_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ENBConfigurationTransferIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct enb_cfg_transfer_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { son_cfg_transfer_ect, en_dcson_cfg_transfer_ect, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 son_cfg_transfer_s& son_cfg_transfer_ect(); en_dcson_cfg_transfer_s& en_dcson_cfg_transfer_ect(); const son_cfg_transfer_s& son_cfg_transfer_ect() const; const en_dcson_cfg_transfer_s& en_dcson_cfg_transfer_ect() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct enb_cfg_transfer_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool son_cfg_transfer_ect_present = false; bool en_dcson_cfg_transfer_ect_present = false; ie_field_s son_cfg_transfer_ect; ie_field_s en_dcson_cfg_transfer_ect; // sequence methods enb_cfg_transfer_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ENBConfigurationTransfer ::= SEQUENCE using enb_cfg_transfer_s = elementary_procedure_option; // NB-IoT-DefaultPagingDRX ::= ENUMERATED struct nb_io_t_default_paging_drx_opts { enum options { v128, v256, v512, v1024, /*...*/ nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated nb_io_t_default_paging_drx_e; // PagingDRX ::= ENUMERATED struct paging_drx_opts { enum options { v32, v64, v128, v256, /*...*/ nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated paging_drx_e; // ENBConfigurationUpdateIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct enb_cfg_upd_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { enbname, supported_tas, csg_id_list, default_paging_drx, nb_io_t_default_paging_drx, connectedeng_nb_to_add_list, connectedeng_nb_to_rem_list, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 printable_string<1, 150, true, true>& enbname(); supported_tas_l& supported_tas(); csg_id_list_l& csg_id_list(); paging_drx_e& default_paging_drx(); nb_io_t_default_paging_drx_e& nb_io_t_default_paging_drx(); connectedeng_nb_list_l& connectedeng_nb_to_add_list(); connectedeng_nb_list_l& connectedeng_nb_to_rem_list(); const printable_string<1, 150, true, true>& enbname() const; const supported_tas_l& supported_tas() const; const csg_id_list_l& csg_id_list() const; const paging_drx_e& default_paging_drx() const; const nb_io_t_default_paging_drx_e& nb_io_t_default_paging_drx() const; const connectedeng_nb_list_l& connectedeng_nb_to_add_list() const; const connectedeng_nb_list_l& connectedeng_nb_to_rem_list() const; private: types type_; choice_buffer_t, supported_tas_l> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct enb_cfg_upd_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool enbname_present = false; bool supported_tas_present = false; bool csg_id_list_present = false; bool default_paging_drx_present = false; bool nb_io_t_default_paging_drx_present = false; bool connectedeng_nb_to_add_list_present = false; bool connectedeng_nb_to_rem_list_present = false; ie_field_s > enbname; ie_field_s > supported_tas; ie_field_s > csg_id_list; ie_field_s default_paging_drx; ie_field_s nb_io_t_default_paging_drx; ie_field_s > connectedeng_nb_to_add_list; ie_field_s > connectedeng_nb_to_rem_list; // sequence methods enb_cfg_upd_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ENBConfigurationUpdate ::= SEQUENCE using enb_cfg_upd_s = elementary_procedure_option; // ENBConfigurationUpdateAcknowledgeIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct enb_cfg_upd_ack_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::crit_diagnostics; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters crit_diagnostics_s& crit_diagnostics() { return c; } const crit_diagnostics_s& crit_diagnostics() const { return c; } private: crit_diagnostics_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // ENBConfigurationUpdateAcknowledge ::= SEQUENCE using enb_cfg_upd_ack_s = elementary_procedure_option >; // TimeToWait ::= ENUMERATED struct time_to_wait_opts { enum options { v1s, v2s, v5s, v10s, v20s, v60s, /*...*/ nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated time_to_wait_e; // ENBConfigurationUpdateFailureIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct enb_cfg_upd_fail_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { cause, time_to_wait, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 cause_c& cause(); time_to_wait_e& time_to_wait(); crit_diagnostics_s& crit_diagnostics(); const cause_c& cause() const; const time_to_wait_e& time_to_wait() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct enb_cfg_upd_fail_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool time_to_wait_present = false; bool crit_diagnostics_present = false; ie_field_s cause; ie_field_s time_to_wait; ie_field_s crit_diagnostics; // sequence methods enb_cfg_upd_fail_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ENBConfigurationUpdateFailure ::= SEQUENCE using enb_cfg_upd_fail_s = elementary_procedure_option; // LAI-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using lai_ext_ies_o = protocol_ext_empty_o; // GERAN-Cell-ID-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using geran_cell_id_ext_ies_o = protocol_ext_empty_o; using lai_ext_ies_container = protocol_ext_container_empty_l; // LAI ::= SEQUENCE struct lai_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<3, true> plm_nid; fixed_octstring<2, true> lac; lai_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // TargetRNC-ID-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using target_rnc_id_ext_ies_o = protocol_ext_empty_o; using geran_cell_id_ext_ies_container = protocol_ext_container_empty_l; // GERAN-Cell-ID ::= SEQUENCE struct geran_cell_id_s { bool ext = false; bool ie_exts_present = false; lai_s lai; fixed_octstring<1, true> rac; fixed_octstring<2, true> ci; geran_cell_id_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using target_rnc_id_ext_ies_container = protocol_ext_container_empty_l; // TargetRNC-ID ::= SEQUENCE struct target_rnc_id_s { bool ext = false; bool rac_present = false; bool extended_rnc_id_present = false; bool ie_exts_present = false; lai_s lai; fixed_octstring<1, true> rac; uint16_t rnc_id = 0; uint32_t extended_rnc_id = 4096; target_rnc_id_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RIMRoutingAddress ::= CHOICE struct rim_routing_address_c { struct types_opts { enum options { geran_cell_id, /*...*/ target_rnc_id, ehrpd_sector_id, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods rim_routing_address_c() = default; rim_routing_address_c(const rim_routing_address_c& other); rim_routing_address_c& operator=(const rim_routing_address_c& other); ~rim_routing_address_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 geran_cell_id_s& geran_cell_id() { assert_choice_type(types::geran_cell_id, type_, "RIMRoutingAddress"); return c.get(); } target_rnc_id_s& target_rnc_id() { assert_choice_type(types::target_rnc_id, type_, "RIMRoutingAddress"); return c.get(); } fixed_octstring<16, true>& ehrpd_sector_id() { assert_choice_type(types::ehrpd_sector_id, type_, "RIMRoutingAddress"); return c.get >(); } const geran_cell_id_s& geran_cell_id() const { assert_choice_type(types::geran_cell_id, type_, "RIMRoutingAddress"); return c.get(); } const target_rnc_id_s& target_rnc_id() const { assert_choice_type(types::target_rnc_id, type_, "RIMRoutingAddress"); return c.get(); } const fixed_octstring<16, true>& ehrpd_sector_id() const { assert_choice_type(types::ehrpd_sector_id, type_, "RIMRoutingAddress"); return c.get >(); } geran_cell_id_s& set_geran_cell_id(); target_rnc_id_s& set_target_rnc_id(); fixed_octstring<16, true>& set_ehrpd_sector_id(); private: types type_; choice_buffer_t, geran_cell_id_s, target_rnc_id_s> c; void destroy_(); }; // RIMTransfer-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using rim_transfer_ext_ies_o = protocol_ext_empty_o; using rim_transfer_ext_ies_container = protocol_ext_container_empty_l; // RIMTransfer ::= SEQUENCE struct rim_transfer_s { bool ext = false; bool rim_routing_address_present = false; bool ie_exts_present = false; unbounded_octstring rim_info; rim_routing_address_c rim_routing_address; rim_transfer_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // Inter-SystemInformationTransferType ::= CHOICE struct inter_sys_info_transfer_type_c { struct types_opts { enum options { rim_transfer, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::rim_transfer; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters rim_transfer_s& rim_transfer() { return c; } const rim_transfer_s& rim_transfer() const { return c; } private: rim_transfer_s c; }; // ENBDirectInformationTransferIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct enb_direct_info_transfer_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { inter_sys_info_transfer_type_edt, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::inter_sys_info_transfer_type_edt; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters inter_sys_info_transfer_type_c& inter_sys_info_transfer_type_edt() { return c; } const inter_sys_info_transfer_type_c& inter_sys_info_transfer_type_edt() const { return c; } private: inter_sys_info_transfer_type_c c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // ENBDirectInformationTransfer ::= SEQUENCE using enb_direct_info_transfer_s = elementary_procedure_option >; // ENBStatusTransferIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct enb_status_transfer_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, enb_status_transfer_transparent_container, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); enb_status_transfer_transparent_container_s& enb_status_transfer_transparent_container(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const enb_status_transfer_transparent_container_s& enb_status_transfer_transparent_container() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct enb_status_transfer_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s enb_status_transfer_transparent_container; // sequence methods enb_status_transfer_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ENBStatusTransfer ::= SEQUENCE using enb_status_transfer_s = elementary_procedure_option; // EUTRANResponse ::= SEQUENCE struct eutran_resp_s { bool ext = false; unbounded_octstring cell_id; eutra_ncell_load_report_resp_s eutra_ncell_load_report_resp; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // EmergencyAreaIDList ::= SEQUENCE (SIZE (1..65535)) OF OCTET STRING (SIZE (3)) using emergency_area_id_list_l = dyn_array >; // EmergencyAreaIDListForRestart ::= SEQUENCE (SIZE (1..256)) OF OCTET STRING (SIZE (3)) using emergency_area_id_list_for_restart_l = dyn_array >; // ErrorIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct error_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, cause, crit_diagnostics, s_tmsi, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); cause_c& cause(); crit_diagnostics_s& crit_diagnostics(); s_tmsi_s& s_tmsi(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const cause_c& cause() const; const crit_diagnostics_s& crit_diagnostics() const; const s_tmsi_s& s_tmsi() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct error_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool mme_ue_s1ap_id_present = false; bool enb_ue_s1ap_id_present = false; bool cause_present = false; bool crit_diagnostics_present = false; bool s_tmsi_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s cause; ie_field_s crit_diagnostics; ie_field_s s_tmsi; // sequence methods error_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ErrorIndication ::= SEQUENCE using error_ind_s = elementary_procedure_option; // NumberOfMeasurementReportingLevels ::= ENUMERATED struct nof_meas_report_levels_opts { enum options { rl2, rl3, rl4, rl5, rl10, /*...*/ nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated nof_meas_report_levels_e; // EventTriggeredCellLoadReportingRequest ::= SEQUENCE struct event_triggered_cell_load_report_request_s { bool ext = false; nof_meas_report_levels_e nof_meas_report_levels; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // OverloadFlag ::= ENUMERATED struct overload_flag_opts { enum options { overload, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated overload_flag_e; // EventTriggeredCellLoadReportingResponse ::= SEQUENCE struct event_triggered_cell_load_report_resp_s { bool ext = false; bool overload_flag_present = false; cell_load_report_resp_c cell_load_report_resp; overload_flag_e overload_flag; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ExpectedUEActivityBehaviour-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using expected_ue_activity_behaviour_ext_ies_o = protocol_ext_empty_o; // SourceOfUEActivityBehaviourInformation ::= ENUMERATED struct source_of_ue_activity_behaviour_info_opts { enum options { subscription_info, statistics, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated source_of_ue_activity_behaviour_info_e; using expected_ue_activity_behaviour_ext_ies_container = protocol_ext_container_empty_l; // ExpectedUEActivityBehaviour ::= SEQUENCE struct expected_ue_activity_behaviour_s { bool ext = false; bool expected_activity_period_present = false; bool expected_idle_period_present = false; bool sourceof_ue_activity_behaviour_info_present = false; bool ie_exts_present = false; uint8_t expected_activity_period = 1; uint8_t expected_idle_period = 1; source_of_ue_activity_behaviour_info_e sourceof_ue_activity_behaviour_info; expected_ue_activity_behaviour_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ExpectedHOInterval ::= ENUMERATED struct expected_ho_interv_opts { enum options { sec15, sec30, sec60, sec90, sec120, sec180, long_time, /*...*/ nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated expected_ho_interv_e; // ExpectedUEBehaviour-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using expected_ue_behaviour_ext_ies_o = protocol_ext_empty_o; using expected_ue_behaviour_ext_ies_container = protocol_ext_container_empty_l; // ExpectedUEBehaviour ::= SEQUENCE struct expected_ue_behaviour_s { bool ext = false; bool expected_activity_present = false; bool expected_ho_interv_present = false; bool ie_exts_present = false; expected_ue_activity_behaviour_s expected_activity; expected_ho_interv_e expected_ho_interv; expected_ue_behaviour_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // TooEarlyInterRATHOReportReportFromEUTRAN ::= SEQUENCE struct too_early_inter_ratho_report_report_from_eutran_s { bool ext = false; bool mob_info_present = false; unbounded_octstring uerlf_report_container; fixed_bitstring<32, false, true> mob_info; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // FailureEventReport ::= CHOICE struct fail_event_report_c { struct types_opts { enum options { too_early_inter_ratho_report_from_eutran, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::too_early_inter_ratho_report_from_eutran; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters too_early_inter_ratho_report_report_from_eutran_s& too_early_inter_ratho_report_from_eutran() { return c; } const too_early_inter_ratho_report_report_from_eutran_s& too_early_inter_ratho_report_from_eutran() const { return c; } private: too_early_inter_ratho_report_report_from_eutran_s c; }; // GUMMEIList ::= SEQUENCE (SIZE (1..256)) OF GUMMEI using gummei_list_l = dyn_array; // HoReportType ::= ENUMERATED struct ho_report_type_opts { enum options { unnecessaryhotoanotherrat, /*...*/ earlyiratho, nulltype } value; const char* to_string() const; }; typedef enumerated ho_report_type_e; // HoType ::= ENUMERATED struct ho_type_opts { enum options { ltetoutran, ltetogeran, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated ho_type_e; // HOReport ::= SEQUENCE struct ho_report_s { bool ext = false; ho_type_e ho_type; ho_report_type_e ho_report_type; irat_cell_id_c hosource_id; irat_cell_id_c ho_target_id; candidate_cell_list_l candidate_cell_list; // ... copy_ptr candidate_pci_list; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverCancelIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ho_cancel_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, cause, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); cause_c& cause(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const cause_c& cause() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct ho_cancel_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s cause; // sequence methods ho_cancel_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverCancel ::= SEQUENCE using ho_cancel_s = elementary_procedure_option; // HandoverCancelAcknowledgeIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ho_cancel_ack_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct ho_cancel_ack_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s crit_diagnostics; // sequence methods ho_cancel_ack_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverCancelAcknowledge ::= SEQUENCE using ho_cancel_ack_s = elementary_procedure_option; // HandoverType ::= ENUMERATED struct handov_type_opts { enum options { intralte, ltetoutran, ltetogeran, utrantolte, gerantolte, /*...*/ eps_to_minus5gs, fivegs_to_eps, nulltype } value; typedef int8_t number_type; const char* to_string() const; int8_t to_number() const; }; typedef enumerated handov_type_e; // HandoverCommandIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ho_cmd_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, handov_type, nas_security_paramsfrom_e_utran, erab_subjectto_data_forwarding_list, erab_to_release_list_ho_cmd, target_to_source_transparent_container, target_to_source_transparent_container_secondary, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); handov_type_e& handov_type(); unbounded_octstring& nas_security_paramsfrom_e_utran(); erab_ie_container_list_l& erab_subjectto_data_forwarding_list(); erab_list_l& erab_to_release_list_ho_cmd(); unbounded_octstring& target_to_source_transparent_container(); unbounded_octstring& target_to_source_transparent_container_secondary(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const handov_type_e& handov_type() const; const unbounded_octstring& nas_security_paramsfrom_e_utran() const; const erab_ie_container_list_l& erab_subjectto_data_forwarding_list() const; const erab_list_l& erab_to_release_list_ho_cmd() const; const unbounded_octstring& target_to_source_transparent_container() const; const unbounded_octstring& target_to_source_transparent_container_secondary() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t, erab_list_l, unbounded_octstring > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct ho_cmd_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool nas_security_paramsfrom_e_utran_present = false; bool erab_subjectto_data_forwarding_list_present = false; bool erab_to_release_list_ho_cmd_present = false; bool target_to_source_transparent_container_secondary_present = false; bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s handov_type; ie_field_s > nas_security_paramsfrom_e_utran; ie_field_s > erab_subjectto_data_forwarding_list; ie_field_s, 1, 256, true> > erab_to_release_list_ho_cmd; ie_field_s > target_to_source_transparent_container; ie_field_s > target_to_source_transparent_container_secondary; ie_field_s crit_diagnostics; // sequence methods ho_cmd_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverCommand ::= SEQUENCE using ho_cmd_s = elementary_procedure_option; // HandoverFailureIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ho_fail_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, cause, crit_diagnostics, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); cause_c& cause(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const cause_c& cause() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct ho_fail_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s cause; ie_field_s crit_diagnostics; // sequence methods ho_fail_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverFailure ::= SEQUENCE using ho_fail_s = elementary_procedure_option; // HandoverNotifyIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ho_notify_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, eutran_cgi, tai, tunnel_info_for_bbf, lhn_id, ps_cell_info, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); eutran_cgi_s& eutran_cgi(); tai_s& tai(); tunnel_info_s& tunnel_info_for_bbf(); bounded_octstring<32, 256, true>& lhn_id(); ps_cell_info_s& ps_cell_info(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const eutran_cgi_s& eutran_cgi() const; const tai_s& tai() const; const tunnel_info_s& tunnel_info_for_bbf() const; const bounded_octstring<32, 256, true>& lhn_id() const; const ps_cell_info_s& ps_cell_info() const; private: types type_; choice_buffer_t, eutran_cgi_s, ps_cell_info_s, tai_s, tunnel_info_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct ho_notify_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool tunnel_info_for_bbf_present = false; bool lhn_id_present = false; bool ps_cell_info_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s eutran_cgi; ie_field_s tai; ie_field_s tunnel_info_for_bbf; ie_field_s > lhn_id; ie_field_s ps_cell_info; // sequence methods ho_notify_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverNotify ::= SEQUENCE using ho_notify_s = elementary_procedure_option; // HandoverPreparationFailureIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ho_prep_fail_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, cause, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); cause_c& cause(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const cause_c& cause() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct ho_prep_fail_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s cause; ie_field_s crit_diagnostics; // sequence methods ho_prep_fail_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationFailure ::= SEQUENCE using ho_prep_fail_s = elementary_procedure_option; // MBSFN-ResultToLogInfo-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using mbsfn_result_to_log_info_ext_ies_o = protocol_ext_empty_o; using mbsfn_result_to_log_info_ext_ies_container = protocol_ext_container_empty_l; // MBSFN-ResultToLogInfo ::= SEQUENCE struct mbsfn_result_to_log_info_s { bool ext = false; bool mbsfn_area_id_present = false; bool ie_exts_present = false; uint16_t mbsfn_area_id = 0; uint32_t carrier_freq = 0; mbsfn_result_to_log_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // Links-to-log ::= ENUMERATED struct links_to_log_opts { enum options { ul, dl, both_ul_and_dl, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated links_to_log_e; // LoggedMBSFNMDT-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using logged_mbsfnmdt_ext_ies_o = protocol_ext_empty_o; // LoggingDuration ::= ENUMERATED struct logging_dur_opts { enum options { m10, m20, m40, m60, m90, m120, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated logging_dur_e; // LoggingInterval ::= ENUMERATED struct logging_interv_opts { enum options { ms128, ms256, ms512, ms1024, ms2048, ms3072, ms4096, ms6144, nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated logging_interv_e; // M3Configuration-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using m3_cfg_ext_ies_o = protocol_ext_empty_o; // M3period ::= ENUMERATED struct m3period_opts { enum options { ms100, ms1000, ms10000, /*...*/ ms1024, ms1280, ms2048, ms2560, ms5120, ms10240, min1, nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated m3period_e; // M4Configuration-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using m4_cfg_ext_ies_o = protocol_ext_empty_o; // M4period ::= ENUMERATED struct m4period_opts { enum options { ms1024, ms2048, ms5120, ms10240, min1, /*...*/ nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated m4period_e; // M5Configuration-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using m5_cfg_ext_ies_o = protocol_ext_empty_o; // M5period ::= ENUMERATED struct m5period_opts { enum options { ms1024, ms2048, ms5120, ms10240, min1, /*...*/ nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated m5period_e; // M6Configuration-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using m6_cfg_ext_ies_o = protocol_ext_empty_o; // M6delay-threshold ::= ENUMERATED struct m6delay_thres_opts { enum options { ms30, ms40, ms50, ms60, ms70, ms80, ms90, ms100, ms150, ms300, ms500, ms750, /*...*/ nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated m6delay_thres_e; // M6report-Interval ::= ENUMERATED struct m6report_interv_opts { enum options { ms1024, ms2048, ms5120, ms10240, /*...*/ nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated m6report_interv_e; // M7Configuration-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using m7_cfg_ext_ies_o = protocol_ext_empty_o; // MBSFN-ResultToLog ::= SEQUENCE (SIZE (1..8)) OF MBSFN-ResultToLogInfo using mbsfn_result_to_log_l = dyn_array; // WLANMeasConfig ::= ENUMERATED struct wlan_meas_cfg_opts { enum options { setup, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated wlan_meas_cfg_e; // WLANMeasConfigNameList ::= SEQUENCE (SIZE (1..4)) OF OCTET STRING (SIZE (1..32)) using wlan_meas_cfg_name_list_l = bounded_array, 4>; // WLANMeasurementConfiguration-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using wlan_meas_cfg_ext_ies_o = protocol_ext_empty_o; using logged_mbsfnmdt_ext_ies_container = protocol_ext_container_empty_l; // LoggedMBSFNMDT ::= SEQUENCE struct logged_mbsfnmdt_s { bool ext = false; bool mbsfn_result_to_log_present = false; bool ie_exts_present = false; logging_interv_e logging_interv; logging_dur_e logging_dur; mbsfn_result_to_log_l mbsfn_result_to_log; logged_mbsfnmdt_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // M1PeriodicReporting-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using m1_periodic_report_ext_ies_o = protocol_ext_empty_o; // M1ThresholdEventA2-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using m1_thres_event_a2_ext_ies_o = protocol_ext_empty_o; using m3_cfg_ext_ies_container = protocol_ext_container_empty_l; // M3Configuration ::= SEQUENCE struct m3_cfg_s { bool ext = false; bool ie_exts_present = false; m3period_e m3period; m3_cfg_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using m4_cfg_ext_ies_container = protocol_ext_container_empty_l; // M4Configuration ::= SEQUENCE struct m4_cfg_s { bool ext = false; bool ie_exts_present = false; m4period_e m4period; links_to_log_e m4_links_to_log; m4_cfg_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using m5_cfg_ext_ies_container = protocol_ext_container_empty_l; // M5Configuration ::= SEQUENCE struct m5_cfg_s { bool ext = false; bool ie_exts_present = false; m5period_e m5period; links_to_log_e m5_links_to_log; m5_cfg_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using m6_cfg_ext_ies_container = protocol_ext_container_empty_l; // M6Configuration ::= SEQUENCE struct m6_cfg_s { bool ext = false; bool m6delay_thres_present = false; bool ie_exts_present = false; m6report_interv_e m6report_interv; m6delay_thres_e m6delay_thres; links_to_log_e m6_links_to_log; m6_cfg_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using m7_cfg_ext_ies_container = protocol_ext_container_empty_l; // M7Configuration ::= SEQUENCE struct m7_cfg_s { bool ext = false; bool ie_exts_present = false; uint8_t m7period = 1; links_to_log_e m7_links_to_log; m7_cfg_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // MeasurementThresholdA2 ::= CHOICE struct meas_thres_a2_c { struct types_opts { enum options { thres_rsrp, thres_rsrq, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods meas_thres_a2_c() = default; meas_thres_a2_c(const meas_thres_a2_c& other); meas_thres_a2_c& operator=(const meas_thres_a2_c& other); ~meas_thres_a2_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& thres_rsrp() { assert_choice_type(types::thres_rsrp, type_, "MeasurementThresholdA2"); return c.get(); } uint8_t& thres_rsrq() { assert_choice_type(types::thres_rsrq, type_, "MeasurementThresholdA2"); return c.get(); } const uint8_t& thres_rsrp() const { assert_choice_type(types::thres_rsrp, type_, "MeasurementThresholdA2"); return c.get(); } const uint8_t& thres_rsrq() const { assert_choice_type(types::thres_rsrq, type_, "MeasurementThresholdA2"); return c.get(); } uint8_t& set_thres_rsrp(); uint8_t& set_thres_rsrq(); private: types type_; pod_choice_buffer_t c; void destroy_(); }; // ReportAmountMDT ::= ENUMERATED struct report_amount_mdt_opts { enum options { r1, r2, r4, r8, r16, r32, r64, rinfinity, nulltype } value; typedef int8_t number_type; const char* to_string() const; int8_t to_number() const; }; typedef enumerated report_amount_mdt_e; // ReportIntervalMDT ::= ENUMERATED struct report_interv_mdt_opts { enum options { ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, min1, min6, min12, min30, min60, nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated report_interv_mdt_e; using wlan_meas_cfg_ext_ies_container = protocol_ext_container_empty_l; // WLANMeasurementConfiguration ::= SEQUENCE struct wlan_meas_cfg_s { struct wlan_rssi_opts { enum options { true_value, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated wlan_rssi_e_; struct wlan_rtt_opts { enum options { true_value, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated wlan_rtt_e_; // member variables bool ext = false; bool wlan_meas_cfg_name_list_present = false; bool wlan_rssi_present = false; bool wlan_rtt_present = false; bool ie_exts_present = false; wlan_meas_cfg_e wlan_meas_cfg; wlan_meas_cfg_name_list_l wlan_meas_cfg_name_list; wlan_rssi_e_ wlan_rssi; wlan_rtt_e_ wlan_rtt; wlan_meas_cfg_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ImmediateMDT-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct immediate_mdt_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { m3_cfg, m4_cfg, m5_cfg, mdt_location_info, m6_cfg, m7_cfg, bluetooth_meas_cfg, wlan_meas_cfg, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 m3_cfg_s& m3_cfg(); m4_cfg_s& m4_cfg(); m5_cfg_s& m5_cfg(); fixed_bitstring<8, false, true>& mdt_location_info(); m6_cfg_s& m6_cfg(); m7_cfg_s& m7_cfg(); bluetooth_meas_cfg_s& bluetooth_meas_cfg(); wlan_meas_cfg_s& wlan_meas_cfg(); const m3_cfg_s& m3_cfg() const; const m4_cfg_s& m4_cfg() const; const m5_cfg_s& m5_cfg() const; const fixed_bitstring<8, false, true>& mdt_location_info() const; const m6_cfg_s& m6_cfg() const; const m7_cfg_s& m7_cfg() const; const bluetooth_meas_cfg_s& bluetooth_meas_cfg() const; const wlan_meas_cfg_s& wlan_meas_cfg() const; private: types type_; choice_buffer_t, m3_cfg_s, m4_cfg_s, m5_cfg_s, m6_cfg_s, m7_cfg_s, wlan_meas_cfg_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // LoggedMDT-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct logged_mdt_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { bluetooth_meas_cfg, wlan_meas_cfg, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 bluetooth_meas_cfg_s& bluetooth_meas_cfg(); wlan_meas_cfg_s& wlan_meas_cfg(); const bluetooth_meas_cfg_s& bluetooth_meas_cfg() const; const wlan_meas_cfg_s& wlan_meas_cfg() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; using m1_periodic_report_ext_ies_container = protocol_ext_container_empty_l; // M1PeriodicReporting ::= SEQUENCE struct m1_periodic_report_s { bool ext = false; bool ie_exts_present = false; report_interv_mdt_e report_interv; report_amount_mdt_e report_amount; m1_periodic_report_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // M1ReportingTrigger ::= ENUMERATED struct m1_report_trigger_opts { enum options { periodic, a2eventtriggered, /*...*/ a2eventtriggered_periodic, nulltype } value; const char* to_string() const; }; typedef enumerated m1_report_trigger_e; using m1_thres_event_a2_ext_ies_container = protocol_ext_container_empty_l; // M1ThresholdEventA2 ::= SEQUENCE struct m1_thres_event_a2_s { bool ext = false; bool ie_exts_present = false; meas_thres_a2_c meas_thres; m1_thres_event_a2_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // MDTMode-ExtensionIE ::= OBJECT SET OF S1AP-PROTOCOL-IES struct mdt_mode_ext_ie_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { logged_mbsfnmdt, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::logged_mbsfnmdt; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters logged_mbsfnmdt_s& logged_mbsfnmdt() { return c; } const logged_mbsfnmdt_s& logged_mbsfnmdt() const { return c; } private: logged_mbsfnmdt_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct immediate_mdt_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool m3_cfg_present = false; bool m4_cfg_present = false; bool m5_cfg_present = false; bool mdt_location_info_present = false; bool m6_cfg_present = false; bool m7_cfg_present = false; bool bluetooth_meas_cfg_present = false; bool wlan_meas_cfg_present = false; ie_field_s m3_cfg; ie_field_s m4_cfg; ie_field_s m5_cfg; ie_field_s > mdt_location_info; ie_field_s m6_cfg; ie_field_s m7_cfg; ie_field_s bluetooth_meas_cfg; ie_field_s wlan_meas_cfg; // sequence methods immediate_mdt_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ImmediateMDT ::= SEQUENCE struct immediate_mdt_s { bool ext = false; bool m1thresevent_a2_present = false; bool m1periodic_report_present = false; bool ie_exts_present = false; fixed_bitstring<8, false, true> meass_to_activ; m1_report_trigger_e m1report_trigger; m1_thres_event_a2_s m1thresevent_a2; m1_periodic_report_s m1periodic_report; immediate_mdt_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; struct logged_mdt_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool bluetooth_meas_cfg_present = false; bool wlan_meas_cfg_present = false; ie_field_s bluetooth_meas_cfg; ie_field_s wlan_meas_cfg; // sequence methods logged_mdt_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // LoggedMDT ::= SEQUENCE struct logged_mdt_s { bool ext = false; bool ie_exts_present = false; logging_interv_e logging_interv; logging_dur_e logging_dur; logged_mdt_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // MDTPLMNList ::= SEQUENCE (SIZE (1..16)) OF OCTET STRING (SIZE (3)) using mdtplmn_list_l = bounded_array, 16>; // ServiceType ::= ENUMERATED struct service_type_opts { enum options { qmc_for_streaming_service, qmc_for_mtsi_service, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated service_type_e; // MDT-Activation ::= ENUMERATED struct mdt_activation_opts { enum options { immediate_mdt_only, immediate_mdt_and_trace, logged_mdt_only, /*...*/ logged_mbsfn_mdt, nulltype } value; const char* to_string() const; }; typedef enumerated mdt_activation_e; // MDT-Configuration-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct mdt_cfg_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { sig_based_mdtplmn_list, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::sig_based_mdtplmn_list; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters mdtplmn_list_l& sig_based_mdtplmn_list() { return c; } const mdtplmn_list_l& sig_based_mdtplmn_list() const { return c; } private: mdtplmn_list_l c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // MDTMode ::= CHOICE struct mdt_mode_c { struct types_opts { enum options { immediate_mdt, logged_mdt, /*...*/ mdt_mode_ext, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods mdt_mode_c() = default; mdt_mode_c(const mdt_mode_c& other); mdt_mode_c& operator=(const mdt_mode_c& other); ~mdt_mode_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 immediate_mdt_s& immediate_mdt() { assert_choice_type(types::immediate_mdt, type_, "MDTMode"); return c.get(); } logged_mdt_s& logged_mdt() { assert_choice_type(types::logged_mdt, type_, "MDTMode"); return c.get(); } protocol_ie_single_container_s& mdt_mode_ext() { assert_choice_type(types::mdt_mode_ext, type_, "MDTMode"); return c.get >(); } const immediate_mdt_s& immediate_mdt() const { assert_choice_type(types::immediate_mdt, type_, "MDTMode"); return c.get(); } const logged_mdt_s& logged_mdt() const { assert_choice_type(types::logged_mdt, type_, "MDTMode"); return c.get(); } const protocol_ie_single_container_s& mdt_mode_ext() const { assert_choice_type(types::mdt_mode_ext, type_, "MDTMode"); return c.get >(); } immediate_mdt_s& set_immediate_mdt(); logged_mdt_s& set_logged_mdt(); protocol_ie_single_container_s& set_mdt_mode_ext(); private: types type_; choice_buffer_t > c; void destroy_(); }; // UEAppLayerMeasConfig-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct ue_app_layer_meas_cfg_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { service_type, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::service_type; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters service_type_e& service_type() { return c; } const service_type_e& service_type() const { return c; } private: service_type_e c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // MDT-Configuration ::= SEQUENCE struct mdt_cfg_s { bool ext = false; bool ie_exts_present = false; mdt_activation_e mdt_activation; area_scope_of_mdt_c area_scope_of_mdt; mdt_mode_c mdt_mode; protocol_ext_container_l ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ProSeUEtoNetworkRelaying ::= ENUMERATED struct pro_se_ueto_network_relaying_opts { enum options { authorized, not_authorized, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated pro_se_ueto_network_relaying_e; // RequestTypeAdditionalInfo ::= ENUMERATED struct request_type_add_info_opts { enum options { include_ps_cell, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated request_type_add_info_e; // UEAppLayerMeasConfig ::= SEQUENCE struct ue_app_layer_meas_cfg_s { bool ext = false; bool ie_exts_present = false; bounded_octstring<1, 1000, true> container_for_app_layer_meas_cfg; area_scope_of_qmc_c area_scope_of_qmc; protocol_ext_container_l ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // EventType ::= ENUMERATED struct event_type_opts { enum options { direct, change_of_serve_cell, stop_change_of_serve_cell, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated event_type_e; // PedestrianUE ::= ENUMERATED struct pedestrian_ue_opts { enum options { authorized, not_authorized, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated pedestrian_ue_e; // ProSeAuthorized-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct pro_se_authorized_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { pro_se_ueto_network_relaying, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods types type() const { return types::pro_se_ueto_network_relaying; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters pro_se_ueto_network_relaying_e& pro_se_ueto_network_relaying() { return c; } const pro_se_ueto_network_relaying_e& pro_se_ueto_network_relaying() const { return c; } private: pro_se_ueto_network_relaying_e c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // ProSeDirectCommunication ::= ENUMERATED struct pro_se_direct_communication_opts { enum options { authorized, not_authorized, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated pro_se_direct_communication_e; // ProSeDirectDiscovery ::= ENUMERATED struct pro_se_direct_discovery_opts { enum options { authorized, not_authorized, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated pro_se_direct_discovery_e; // ReportArea ::= ENUMERATED struct report_area_opts { enum options { ecgi, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated report_area_e; // RequestType-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct request_type_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { request_type_add_info, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::request_type_add_info; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters request_type_add_info_e& request_type_add_info() { return c; } const request_type_add_info_e& request_type_add_info() const { return c; } private: request_type_add_info_e c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // SecurityContext-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using security_context_ext_ies_o = protocol_ext_empty_o; // TraceActivation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct trace_activation_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { mdt_cfg, ue_app_layer_meas_cfg, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 mdt_cfg_s& mdt_cfg(); ue_app_layer_meas_cfg_s& ue_app_layer_meas_cfg(); const mdt_cfg_s& mdt_cfg() const; const ue_app_layer_meas_cfg_s& ue_app_layer_meas_cfg() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // TraceDepth ::= ENUMERATED struct trace_depth_opts { enum options { minimum, medium, maximum, minimum_without_vendor_specific_ext, medium_without_vendor_specific_ext, maximum_without_vendor_specific_ext, // ... nulltype } value; const char* to_string() const; }; typedef enumerated trace_depth_e; // UE-Sidelink-Aggregate-MaximumBitrates-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using ue_sidelink_aggregate_maximum_bitrates_ext_ies_o = protocol_ext_empty_o; // UESecurityCapabilities-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using ue_security_cap_ext_ies_o = protocol_ext_empty_o; // V2XServicesAuthorized-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using v2xservices_authorized_ext_ies_o = protocol_ext_empty_o; // VehicleUE ::= ENUMERATED struct vehicle_ue_opts { enum options { authorized, not_authorized, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated vehicle_ue_e; // AerialUEsubscriptionInformation ::= ENUMERATED struct aerial_uesubscription_info_opts { enum options { allowed, not_allowed, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated aerial_uesubscription_info_e; // ManagementBasedMDTAllowed ::= ENUMERATED struct management_based_mdt_allowed_opts { enum options { allowed, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated management_based_mdt_allowed_e; // ProSeAuthorized ::= SEQUENCE struct pro_se_authorized_s { bool ext = false; bool pro_se_direct_discovery_present = false; bool pro_se_direct_communication_present = false; bool ie_exts_present = false; pro_se_direct_discovery_e pro_se_direct_discovery; pro_se_direct_communication_e pro_se_direct_communication; protocol_ext_container_l ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RequestType ::= SEQUENCE struct request_type_s { bool ext = false; bool ie_exts_present = false; event_type_e event_type; report_area_e report_area; protocol_ext_container_l ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using security_context_ext_ies_container = protocol_ext_container_empty_l; // SecurityContext ::= SEQUENCE struct security_context_s { bool ext = false; bool ie_exts_present = false; uint8_t next_hop_chaining_count = 0; fixed_bitstring<256, false, true> next_hop_param; security_context_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; struct trace_activation_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool mdt_cfg_present = false; bool ue_app_layer_meas_cfg_present = false; ie_field_s mdt_cfg; ie_field_s ue_app_layer_meas_cfg; // sequence methods trace_activation_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // TraceActivation ::= SEQUENCE struct trace_activation_s { bool ext = false; bool ie_exts_present = false; fixed_octstring<8, true> e_utran_trace_id; fixed_bitstring<8, false, true> interfaces_to_trace; trace_depth_e trace_depth; bounded_bitstring<1, 160, true, true> trace_collection_entity_ip_address; trace_activation_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using ue_security_cap_ext_ies_container = protocol_ext_container_empty_l; // UESecurityCapabilities ::= SEQUENCE struct ue_security_cap_s { bool ext = false; bool ie_exts_present = false; fixed_bitstring<16, true, true> encryption_algorithms; fixed_bitstring<16, true, true> integrity_protection_algorithms; ue_security_cap_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using ue_sidelink_aggregate_maximum_bitrates_ext_ies_container = protocol_ext_container_empty_l; // UESidelinkAggregateMaximumBitrate ::= SEQUENCE struct ue_sidelink_aggregate_maximum_bitrate_s { bool ext = false; bool ie_exts_present = false; uint64_t uesidelink_aggregate_maximum_bit_rate = 0; ue_sidelink_aggregate_maximum_bitrates_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEUserPlaneCIoTSupportIndicator ::= ENUMERATED struct ueuser_plane_cio_tsupport_ind_opts { enum options { supported, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated ueuser_plane_cio_tsupport_ind_e; using v2xservices_authorized_ext_ies_container = protocol_ext_container_empty_l; // V2XServicesAuthorized ::= SEQUENCE struct v2xservices_authorized_s { bool ext = false; bool vehicle_ue_present = false; bool pedestrian_ue_present = false; bool ie_exts_present = false; vehicle_ue_e vehicle_ue; pedestrian_ue_e pedestrian_ue; v2xservices_authorized_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ho_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, handov_type, cause, ueaggregate_maximum_bitrate, erab_to_be_setup_list_ho_req, source_to_target_transparent_container, ue_security_cap, ho_restrict_list, trace_activation, request_type, srvcc_operation_possible, security_context, nas_security_paramsto_e_utran, csg_id, csg_membership_status, gummei_id, mme_ue_s1ap_id_minus2, management_based_mdt_allowed, management_based_mdtplmn_list, masked_imeisv, expected_ue_behaviour, pro_se_authorized, ueuser_plane_cio_tsupport_ind, v2xservices_authorized, ue_sidelink_aggregate_maximum_bitrate, enhanced_coverage_restricted, nrue_security_cap, ce_mode_brestricted, aerial_uesubscription_info, pending_data_ind, subscription_based_ue_differentiation_info, add_rrm_prio_idx, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); handov_type_e& handov_type(); cause_c& cause(); ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate(); erab_ie_container_list_l& erab_to_be_setup_list_ho_req(); unbounded_octstring& source_to_target_transparent_container(); ue_security_cap_s& ue_security_cap(); ho_restrict_list_s& ho_restrict_list(); trace_activation_s& trace_activation(); request_type_s& request_type(); srvcc_operation_possible_e& srvcc_operation_possible(); security_context_s& security_context(); unbounded_octstring& nas_security_paramsto_e_utran(); fixed_bitstring<27, false, true>& csg_id(); csg_membership_status_e& csg_membership_status(); gummei_s& gummei_id(); uint64_t& mme_ue_s1ap_id_minus2(); management_based_mdt_allowed_e& management_based_mdt_allowed(); mdtplmn_list_l& management_based_mdtplmn_list(); fixed_bitstring<64, false, true>& masked_imeisv(); expected_ue_behaviour_s& expected_ue_behaviour(); pro_se_authorized_s& pro_se_authorized(); ueuser_plane_cio_tsupport_ind_e& ueuser_plane_cio_tsupport_ind(); v2xservices_authorized_s& v2xservices_authorized(); ue_sidelink_aggregate_maximum_bitrate_s& ue_sidelink_aggregate_maximum_bitrate(); enhanced_coverage_restricted_e& enhanced_coverage_restricted(); nrue_security_cap_s& nrue_security_cap(); ce_mode_brestricted_e& ce_mode_brestricted(); aerial_uesubscription_info_e& aerial_uesubscription_info(); pending_data_ind_e& pending_data_ind(); subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info(); fixed_bitstring<32, false, true>& add_rrm_prio_idx(); const uint64_t& mme_ue_s1ap_id() const; const handov_type_e& handov_type() const; const cause_c& cause() const; const ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate() const; const erab_ie_container_list_l& erab_to_be_setup_list_ho_req() const; const unbounded_octstring& source_to_target_transparent_container() const; const ue_security_cap_s& ue_security_cap() const; const ho_restrict_list_s& ho_restrict_list() const; const trace_activation_s& trace_activation() const; const request_type_s& request_type() const; const srvcc_operation_possible_e& srvcc_operation_possible() const; const security_context_s& security_context() const; const unbounded_octstring& nas_security_paramsto_e_utran() const; const fixed_bitstring<27, false, true>& csg_id() const; const csg_membership_status_e& csg_membership_status() const; const gummei_s& gummei_id() const; const uint64_t& mme_ue_s1ap_id_minus2() const; const management_based_mdt_allowed_e& management_based_mdt_allowed() const; const mdtplmn_list_l& management_based_mdtplmn_list() const; const fixed_bitstring<64, false, true>& masked_imeisv() const; const expected_ue_behaviour_s& expected_ue_behaviour() const; const pro_se_authorized_s& pro_se_authorized() const; const ueuser_plane_cio_tsupport_ind_e& ueuser_plane_cio_tsupport_ind() const; const v2xservices_authorized_s& v2xservices_authorized() const; const ue_sidelink_aggregate_maximum_bitrate_s& ue_sidelink_aggregate_maximum_bitrate() const; const enhanced_coverage_restricted_e& enhanced_coverage_restricted() const; const nrue_security_cap_s& nrue_security_cap() const; const ce_mode_brestricted_e& ce_mode_brestricted() const; const aerial_uesubscription_info_e& aerial_uesubscription_info() const; const pending_data_ind_e& pending_data_ind() const; const subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info() const; const fixed_bitstring<32, false, true>& add_rrm_prio_idx() const; private: types type_; choice_buffer_t, expected_ue_behaviour_s, fixed_bitstring<64, false, true>, gummei_s, ho_restrict_list_s, mdtplmn_list_l, nrue_security_cap_s, pro_se_authorized_s, request_type_s, security_context_s, subscription_based_ue_differentiation_info_s, trace_activation_s, ue_aggregate_maximum_bitrate_s, ue_security_cap_s, ue_sidelink_aggregate_maximum_bitrate_s, unbounded_octstring, v2xservices_authorized_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct ho_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ho_restrict_list_present = false; bool trace_activation_present = false; bool request_type_present = false; bool srvcc_operation_possible_present = false; bool nas_security_paramsto_e_utran_present = false; bool csg_id_present = false; bool csg_membership_status_present = false; bool gummei_id_present = false; bool mme_ue_s1ap_id_minus2_present = false; bool management_based_mdt_allowed_present = false; bool management_based_mdtplmn_list_present = false; bool masked_imeisv_present = false; bool expected_ue_behaviour_present = false; bool pro_se_authorized_present = false; bool ueuser_plane_cio_tsupport_ind_present = false; bool v2xservices_authorized_present = false; bool ue_sidelink_aggregate_maximum_bitrate_present = false; bool enhanced_coverage_restricted_present = false; bool nrue_security_cap_present = false; bool ce_mode_brestricted_present = false; bool aerial_uesubscription_info_present = false; bool pending_data_ind_present = false; bool subscription_based_ue_differentiation_info_present = false; bool add_rrm_prio_idx_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s handov_type; ie_field_s cause; ie_field_s ueaggregate_maximum_bitrate; ie_field_s > erab_to_be_setup_list_ho_req; ie_field_s > source_to_target_transparent_container; ie_field_s ue_security_cap; ie_field_s ho_restrict_list; ie_field_s trace_activation; ie_field_s request_type; ie_field_s srvcc_operation_possible; ie_field_s security_context; ie_field_s > nas_security_paramsto_e_utran; ie_field_s > csg_id; ie_field_s csg_membership_status; ie_field_s gummei_id; ie_field_s > mme_ue_s1ap_id_minus2; ie_field_s management_based_mdt_allowed; ie_field_s, 1, 16, true> > management_based_mdtplmn_list; ie_field_s > masked_imeisv; ie_field_s expected_ue_behaviour; ie_field_s pro_se_authorized; ie_field_s ueuser_plane_cio_tsupport_ind; ie_field_s v2xservices_authorized; ie_field_s ue_sidelink_aggregate_maximum_bitrate; ie_field_s enhanced_coverage_restricted; ie_field_s nrue_security_cap; ie_field_s ce_mode_brestricted; ie_field_s aerial_uesubscription_info; ie_field_s pending_data_ind; ie_field_s subscription_based_ue_differentiation_info; ie_field_s > add_rrm_prio_idx; // sequence methods ho_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverRequest ::= SEQUENCE using ho_request_s = elementary_procedure_option; // CE-mode-B-SupportIndicator ::= ENUMERATED struct ce_mode_b_support_ind_opts { enum options { supported, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated ce_mode_b_support_ind_e; // HandoverRequestAcknowledgeIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ho_request_ack_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, erab_admitted_list, erab_failed_to_setup_list_ho_req_ack, target_to_source_transparent_container, csg_id, crit_diagnostics, cell_access_mode, ce_mode_b_support_ind, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); erab_ie_container_list_l& erab_admitted_list(); erab_ie_container_list_l& erab_failed_to_setup_list_ho_req_ack(); unbounded_octstring& target_to_source_transparent_container(); fixed_bitstring<27, false, true>& csg_id(); crit_diagnostics_s& crit_diagnostics(); cell_access_mode_e& cell_access_mode(); ce_mode_b_support_ind_e& ce_mode_b_support_ind(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const erab_ie_container_list_l& erab_admitted_list() const; const erab_ie_container_list_l& erab_failed_to_setup_list_ho_req_ack() const; const unbounded_octstring& target_to_source_transparent_container() const; const fixed_bitstring<27, false, true>& csg_id() const; const crit_diagnostics_s& crit_diagnostics() const; const cell_access_mode_e& cell_access_mode() const; const ce_mode_b_support_ind_e& ce_mode_b_support_ind() const; private: types type_; choice_buffer_t, erab_ie_container_list_l, fixed_bitstring<27, false, true>, unbounded_octstring > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct ho_request_ack_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool erab_failed_to_setup_list_ho_req_ack_present = false; bool csg_id_present = false; bool crit_diagnostics_present = false; bool cell_access_mode_present = false; bool ce_mode_b_support_ind_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > erab_admitted_list; ie_field_s > erab_failed_to_setup_list_ho_req_ack; ie_field_s > target_to_source_transparent_container; ie_field_s > csg_id; ie_field_s crit_diagnostics; ie_field_s cell_access_mode; ie_field_s ce_mode_b_support_ind; // sequence methods ho_request_ack_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverRequestAcknowledge ::= SEQUENCE using ho_request_ack_s = elementary_procedure_option; // TargetNgRanNode-ID-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using target_ng_ran_node_id_ext_ies_o = protocol_ext_empty_o; using target_ng_ran_node_id_ext_ies_container = protocol_ext_container_empty_l; // TargetNgRanNode-ID ::= SEQUENCE struct target_ng_ran_node_id_s { bool ext = false; bool ie_exts_present = false; global_ran_node_id_c global_ran_node_id; five_gstai_s sel_tai; target_ng_ran_node_id_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // Direct-Forwarding-Path-Availability ::= ENUMERATED struct direct_forwarding_path_availability_opts { enum options { direct_path_available, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated direct_forwarding_path_availability_e; // PS-ServiceNotAvailable ::= ENUMERATED struct ps_service_not_available_opts { enum options { ps_service_not_available, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated ps_service_not_available_e; // SRVCCHOIndication ::= ENUMERATED struct srvccho_ind_opts { enum options { psand_cs, csonly, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated srvccho_ind_e; // TargetID ::= CHOICE struct target_id_c { struct types_opts { enum options { targetenb_id, target_rnc_id, cgi, /*...*/ targetg_ng_ran_node_id, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods target_id_c() = default; target_id_c(const target_id_c& other); target_id_c& operator=(const target_id_c& other); ~target_id_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 targetenb_id_s& targetenb_id() { assert_choice_type(types::targetenb_id, type_, "TargetID"); return c.get(); } target_rnc_id_s& target_rnc_id() { assert_choice_type(types::target_rnc_id, type_, "TargetID"); return c.get(); } cgi_s& cgi() { assert_choice_type(types::cgi, type_, "TargetID"); return c.get(); } target_ng_ran_node_id_s& targetg_ng_ran_node_id() { assert_choice_type(types::targetg_ng_ran_node_id, type_, "TargetID"); return c.get(); } const targetenb_id_s& targetenb_id() const { assert_choice_type(types::targetenb_id, type_, "TargetID"); return c.get(); } const target_rnc_id_s& target_rnc_id() const { assert_choice_type(types::target_rnc_id, type_, "TargetID"); return c.get(); } const cgi_s& cgi() const { assert_choice_type(types::cgi, type_, "TargetID"); return c.get(); } const target_ng_ran_node_id_s& targetg_ng_ran_node_id() const { assert_choice_type(types::targetg_ng_ran_node_id, type_, "TargetID"); return c.get(); } targetenb_id_s& set_targetenb_id(); target_rnc_id_s& set_target_rnc_id(); cgi_s& set_cgi(); target_ng_ran_node_id_s& set_targetg_ng_ran_node_id(); private: types type_; choice_buffer_t c; void destroy_(); }; // HandoverRequiredIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ho_required_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, handov_type, cause, target_id, direct_forwarding_path_availability, srvccho_ind, source_to_target_transparent_container, source_to_target_transparent_container_secondary, ms_classmark2, ms_classmark3, csg_id, cell_access_mode, ps_service_not_available, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); handov_type_e& handov_type(); cause_c& cause(); target_id_c& target_id(); direct_forwarding_path_availability_e& direct_forwarding_path_availability(); srvccho_ind_e& srvccho_ind(); unbounded_octstring& source_to_target_transparent_container(); unbounded_octstring& source_to_target_transparent_container_secondary(); unbounded_octstring& ms_classmark2(); unbounded_octstring& ms_classmark3(); fixed_bitstring<27, false, true>& csg_id(); cell_access_mode_e& cell_access_mode(); ps_service_not_available_e& ps_service_not_available(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const handov_type_e& handov_type() const; const cause_c& cause() const; const target_id_c& target_id() const; const direct_forwarding_path_availability_e& direct_forwarding_path_availability() const; const srvccho_ind_e& srvccho_ind() const; const unbounded_octstring& source_to_target_transparent_container() const; const unbounded_octstring& source_to_target_transparent_container_secondary() const; const unbounded_octstring& ms_classmark2() const; const unbounded_octstring& ms_classmark3() const; const fixed_bitstring<27, false, true>& csg_id() const; const cell_access_mode_e& cell_access_mode() const; const ps_service_not_available_e& ps_service_not_available() const; private: types type_; choice_buffer_t, target_id_c, unbounded_octstring > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct ho_required_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool direct_forwarding_path_availability_present = false; bool srvccho_ind_present = false; bool source_to_target_transparent_container_secondary_present = false; bool ms_classmark2_present = false; bool ms_classmark3_present = false; bool csg_id_present = false; bool cell_access_mode_present = false; bool ps_service_not_available_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s handov_type; ie_field_s cause; ie_field_s target_id; ie_field_s direct_forwarding_path_availability; ie_field_s srvccho_ind; ie_field_s > source_to_target_transparent_container; ie_field_s > source_to_target_transparent_container_secondary; ie_field_s > ms_classmark2; ie_field_s > ms_classmark3; ie_field_s > csg_id; ie_field_s cell_access_mode; ie_field_s ps_service_not_available; // sequence methods ho_required_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // HandoverRequired ::= SEQUENCE using ho_required_s = elementary_procedure_option; // MMEPagingTarget ::= CHOICE struct mme_paging_target_c { struct types_opts { enum options { global_enb_id, tai, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods mme_paging_target_c() = default; mme_paging_target_c(const mme_paging_target_c& other); mme_paging_target_c& operator=(const mme_paging_target_c& other); ~mme_paging_target_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 global_enb_id_s& global_enb_id() { assert_choice_type(types::global_enb_id, type_, "MMEPagingTarget"); return c.get(); } tai_s& tai() { assert_choice_type(types::tai, type_, "MMEPagingTarget"); return c.get(); } const global_enb_id_s& global_enb_id() const { assert_choice_type(types::global_enb_id, type_, "MMEPagingTarget"); return c.get(); } const tai_s& tai() const { assert_choice_type(types::tai, type_, "MMEPagingTarget"); return c.get(); } global_enb_id_s& set_global_enb_id(); tai_s& set_tai(); private: types type_; choice_buffer_t c; void destroy_(); }; // RecommendedENBItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using recommended_enb_item_ext_ies_o = protocol_ext_empty_o; using recommended_enb_item_ext_ies_container = protocol_ext_container_empty_l; // RecommendedENBItem ::= SEQUENCE struct recommended_enb_item_s { bool ext = false; bool ie_exts_present = false; mme_paging_target_c mme_paging_target; recommended_enb_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RecommendedENBItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct recommended_enb_item_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { recommended_enb_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::recommended_enb_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters recommended_enb_item_s& recommended_enb_item() { return c; } const recommended_enb_item_s& recommended_enb_item() const { return c; } private: recommended_enb_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // RecommendedENBList ::= SEQUENCE (SIZE (1..16)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} using recommended_enb_list_l = bounded_array, 16>; // RecommendedENBsForPaging-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using recommended_enbs_for_paging_ext_ies_o = protocol_ext_empty_o; // InformationOnRecommendedCellsAndENBsForPaging-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using info_on_recommended_cells_and_enbs_for_paging_ext_ies_o = protocol_ext_empty_o; using recommended_enbs_for_paging_ext_ies_container = protocol_ext_container_empty_l; // RecommendedENBsForPaging ::= SEQUENCE struct recommended_enbs_for_paging_s { bool ext = false; bool ie_exts_present = false; recommended_enb_list_l recommended_enb_list; recommended_enbs_for_paging_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using info_on_recommended_cells_and_enbs_for_paging_ext_ies_container = protocol_ext_container_empty_l; // InformationOnRecommendedCellsAndENBsForPaging ::= SEQUENCE struct info_on_recommended_cells_and_enbs_for_paging_s { bool ext = false; bool ie_exts_present = false; recommended_cells_for_paging_s recommended_cells_for_paging; recommended_enbs_for_paging_s recommend_enbs_for_paging; info_on_recommended_cells_and_enbs_for_paging_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // InitialContextSetupFailureIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct init_context_setup_fail_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, cause, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); cause_c& cause(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const cause_c& cause() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct init_context_setup_fail_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s cause; ie_field_s crit_diagnostics; // sequence methods init_context_setup_fail_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // InitialContextSetupFailure ::= SEQUENCE using init_context_setup_fail_s = elementary_procedure_option; // AdditionalCSFallbackIndicator ::= ENUMERATED struct add_cs_fallback_ind_opts { enum options { no_restrict, restrict, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated add_cs_fallback_ind_e; // CSFallbackIndicator ::= ENUMERATED struct cs_fallback_ind_opts { enum options { cs_fallback_required, /*...*/ cs_fallback_high_prio, nulltype } value; const char* to_string() const; }; typedef enumerated cs_fallback_ind_e; // InitialContextSetupRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct init_context_setup_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, ueaggregate_maximum_bitrate, erab_to_be_setup_list_ctxt_su_req, ue_security_cap, security_key, trace_activation, ho_restrict_list, ue_radio_cap, subscriber_profile_idfor_rfp, cs_fallback_ind, srvcc_operation_possible, csg_membership_status, registered_lai, gummei_id, mme_ue_s1ap_id_minus2, management_based_mdt_allowed, management_based_mdtplmn_list, add_cs_fallback_ind, masked_imeisv, expected_ue_behaviour, pro_se_authorized, ueuser_plane_cio_tsupport_ind, v2xservices_authorized, ue_sidelink_aggregate_maximum_bitrate, enhanced_coverage_restricted, nrue_security_cap, ce_mode_brestricted, aerial_uesubscription_info, pending_data_ind, subscription_based_ue_differentiation_info, add_rrm_prio_idx, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate(); erab_to_be_setup_list_ctxt_su_req_l& erab_to_be_setup_list_ctxt_su_req(); ue_security_cap_s& ue_security_cap(); fixed_bitstring<256, false, true>& security_key(); trace_activation_s& trace_activation(); ho_restrict_list_s& ho_restrict_list(); unbounded_octstring& ue_radio_cap(); uint16_t& subscriber_profile_idfor_rfp(); cs_fallback_ind_e& cs_fallback_ind(); srvcc_operation_possible_e& srvcc_operation_possible(); csg_membership_status_e& csg_membership_status(); lai_s& registered_lai(); gummei_s& gummei_id(); uint64_t& mme_ue_s1ap_id_minus2(); management_based_mdt_allowed_e& management_based_mdt_allowed(); mdtplmn_list_l& management_based_mdtplmn_list(); add_cs_fallback_ind_e& add_cs_fallback_ind(); fixed_bitstring<64, false, true>& masked_imeisv(); expected_ue_behaviour_s& expected_ue_behaviour(); pro_se_authorized_s& pro_se_authorized(); ueuser_plane_cio_tsupport_ind_e& ueuser_plane_cio_tsupport_ind(); v2xservices_authorized_s& v2xservices_authorized(); ue_sidelink_aggregate_maximum_bitrate_s& ue_sidelink_aggregate_maximum_bitrate(); enhanced_coverage_restricted_e& enhanced_coverage_restricted(); nrue_security_cap_s& nrue_security_cap(); ce_mode_brestricted_e& ce_mode_brestricted(); aerial_uesubscription_info_e& aerial_uesubscription_info(); pending_data_ind_e& pending_data_ind(); subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info(); fixed_bitstring<32, false, true>& add_rrm_prio_idx(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate() const; const erab_to_be_setup_list_ctxt_su_req_l& erab_to_be_setup_list_ctxt_su_req() const; const ue_security_cap_s& ue_security_cap() const; const fixed_bitstring<256, false, true>& security_key() const; const trace_activation_s& trace_activation() const; const ho_restrict_list_s& ho_restrict_list() const; const unbounded_octstring& ue_radio_cap() const; const uint16_t& subscriber_profile_idfor_rfp() const; const cs_fallback_ind_e& cs_fallback_ind() const; const srvcc_operation_possible_e& srvcc_operation_possible() const; const csg_membership_status_e& csg_membership_status() const; const lai_s& registered_lai() const; const gummei_s& gummei_id() const; const uint64_t& mme_ue_s1ap_id_minus2() const; const management_based_mdt_allowed_e& management_based_mdt_allowed() const; const mdtplmn_list_l& management_based_mdtplmn_list() const; const add_cs_fallback_ind_e& add_cs_fallback_ind() const; const fixed_bitstring<64, false, true>& masked_imeisv() const; const expected_ue_behaviour_s& expected_ue_behaviour() const; const pro_se_authorized_s& pro_se_authorized() const; const ueuser_plane_cio_tsupport_ind_e& ueuser_plane_cio_tsupport_ind() const; const v2xservices_authorized_s& v2xservices_authorized() const; const ue_sidelink_aggregate_maximum_bitrate_s& ue_sidelink_aggregate_maximum_bitrate() const; const enhanced_coverage_restricted_e& enhanced_coverage_restricted() const; const nrue_security_cap_s& nrue_security_cap() const; const ce_mode_brestricted_e& ce_mode_brestricted() const; const aerial_uesubscription_info_e& aerial_uesubscription_info() const; const pending_data_ind_e& pending_data_ind() const; const subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info() const; const fixed_bitstring<32, false, true>& add_rrm_prio_idx() const; private: types type_; choice_buffer_t, gummei_s, ho_restrict_list_s, lai_s, mdtplmn_list_l, nrue_security_cap_s, pro_se_authorized_s, subscription_based_ue_differentiation_info_s, trace_activation_s, ue_aggregate_maximum_bitrate_s, ue_security_cap_s, ue_sidelink_aggregate_maximum_bitrate_s, unbounded_octstring, v2xservices_authorized_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct init_context_setup_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool trace_activation_present = false; bool ho_restrict_list_present = false; bool ue_radio_cap_present = false; bool subscriber_profile_idfor_rfp_present = false; bool cs_fallback_ind_present = false; bool srvcc_operation_possible_present = false; bool csg_membership_status_present = false; bool registered_lai_present = false; bool gummei_id_present = false; bool mme_ue_s1ap_id_minus2_present = false; bool management_based_mdt_allowed_present = false; bool management_based_mdtplmn_list_present = false; bool add_cs_fallback_ind_present = false; bool masked_imeisv_present = false; bool expected_ue_behaviour_present = false; bool pro_se_authorized_present = false; bool ueuser_plane_cio_tsupport_ind_present = false; bool v2xservices_authorized_present = false; bool ue_sidelink_aggregate_maximum_bitrate_present = false; bool enhanced_coverage_restricted_present = false; bool nrue_security_cap_present = false; bool ce_mode_brestricted_present = false; bool aerial_uesubscription_info_present = false; bool pending_data_ind_present = false; bool subscription_based_ue_differentiation_info_present = false; bool add_rrm_prio_idx_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s ueaggregate_maximum_bitrate; ie_field_s, 1, 256, true> > erab_to_be_setup_list_ctxt_su_req; ie_field_s ue_security_cap; ie_field_s > security_key; ie_field_s trace_activation; ie_field_s ho_restrict_list; ie_field_s > ue_radio_cap; ie_field_s > subscriber_profile_idfor_rfp; ie_field_s cs_fallback_ind; ie_field_s srvcc_operation_possible; ie_field_s csg_membership_status; ie_field_s registered_lai; ie_field_s gummei_id; ie_field_s > mme_ue_s1ap_id_minus2; ie_field_s management_based_mdt_allowed; ie_field_s, 1, 16, true> > management_based_mdtplmn_list; ie_field_s add_cs_fallback_ind; ie_field_s > masked_imeisv; ie_field_s expected_ue_behaviour; ie_field_s pro_se_authorized; ie_field_s ueuser_plane_cio_tsupport_ind; ie_field_s v2xservices_authorized; ie_field_s ue_sidelink_aggregate_maximum_bitrate; ie_field_s enhanced_coverage_restricted; ie_field_s nrue_security_cap; ie_field_s ce_mode_brestricted; ie_field_s aerial_uesubscription_info; ie_field_s pending_data_ind; ie_field_s subscription_based_ue_differentiation_info; ie_field_s > add_rrm_prio_idx; // sequence methods init_context_setup_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // InitialContextSetupRequest ::= SEQUENCE using init_context_setup_request_s = elementary_procedure_option; // InitialContextSetupResponseIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct init_context_setup_resp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, erab_setup_list_ctxt_su_res, erab_failed_to_setup_list_ctxt_su_res, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); erab_setup_list_ctxt_su_res_l& erab_setup_list_ctxt_su_res(); erab_list_l& erab_failed_to_setup_list_ctxt_su_res(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const erab_setup_list_ctxt_su_res_l& erab_setup_list_ctxt_su_res() const; const erab_list_l& erab_failed_to_setup_list_ctxt_su_res() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct init_context_setup_resp_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool erab_failed_to_setup_list_ctxt_su_res_present = false; bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s, 1, 256, true> > erab_setup_list_ctxt_su_res; ie_field_s, 1, 256, true> > erab_failed_to_setup_list_ctxt_su_res; ie_field_s crit_diagnostics; // sequence methods init_context_setup_resp_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // InitialContextSetupResponse ::= SEQUENCE using init_context_setup_resp_s = elementary_procedure_option; // Coverage-Level ::= ENUMERATED struct coverage_level_opts { enum options { extendedcoverage, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated coverage_level_e; // EDT-Session ::= ENUMERATED struct edt_session_opts { enum options { true_value, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated edt_session_e; // GUMMEIType ::= ENUMERATED struct gummei_type_opts { enum options { native, mapped, /*...*/ mapped_from5_g, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated gummei_type_e; // RRC-Establishment-Cause ::= ENUMERATED struct rrc_establishment_cause_opts { enum options { emergency, high_prio_access, mt_access, mo_sig, mo_data, // ... delay_tolerant_access, mo_voice_call, mo_exception_data, nulltype } value; const char* to_string() const; }; typedef enumerated rrc_establishment_cause_e; // RelayNode-Indicator ::= ENUMERATED struct relay_node_ind_opts { enum options { true_value, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated relay_node_ind_e; // InitialUEMessage-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct init_ue_msg_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { enb_ue_s1ap_id, nas_pdu, tai, eutran_cgi, rrc_establishment_cause, s_tmsi, csg_id, gummei_id, cell_access_mode, gw_transport_layer_address, relay_node_ind, gummei_type, tunnel_info_for_bbf, sipto_l_gw_transport_layer_address, lhn_id, mme_group_id, ue_usage_type, ce_mode_b_support_ind, dcn_id, coverage_level, ue_application_layer_meas_cap, edt_session, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint32_t& enb_ue_s1ap_id(); unbounded_octstring& nas_pdu(); tai_s& tai(); eutran_cgi_s& eutran_cgi(); rrc_establishment_cause_e& rrc_establishment_cause(); s_tmsi_s& s_tmsi(); fixed_bitstring<27, false, true>& csg_id(); gummei_s& gummei_id(); cell_access_mode_e& cell_access_mode(); bounded_bitstring<1, 160, true, true>& gw_transport_layer_address(); relay_node_ind_e& relay_node_ind(); gummei_type_e& gummei_type(); tunnel_info_s& tunnel_info_for_bbf(); bounded_bitstring<1, 160, true, true>& sipto_l_gw_transport_layer_address(); bounded_octstring<32, 256, true>& lhn_id(); fixed_octstring<2, true>& mme_group_id(); uint16_t& ue_usage_type(); ce_mode_b_support_ind_e& ce_mode_b_support_ind(); uint32_t& dcn_id(); coverage_level_e& coverage_level(); fixed_bitstring<8, false, true>& ue_application_layer_meas_cap(); edt_session_e& edt_session(); const uint32_t& enb_ue_s1ap_id() const; const unbounded_octstring& nas_pdu() const; const tai_s& tai() const; const eutran_cgi_s& eutran_cgi() const; const rrc_establishment_cause_e& rrc_establishment_cause() const; const s_tmsi_s& s_tmsi() const; const fixed_bitstring<27, false, true>& csg_id() const; const gummei_s& gummei_id() const; const cell_access_mode_e& cell_access_mode() const; const bounded_bitstring<1, 160, true, true>& gw_transport_layer_address() const; const relay_node_ind_e& relay_node_ind() const; const gummei_type_e& gummei_type() const; const tunnel_info_s& tunnel_info_for_bbf() const; const bounded_bitstring<1, 160, true, true>& sipto_l_gw_transport_layer_address() const; const bounded_octstring<32, 256, true>& lhn_id() const; const fixed_octstring<2, true>& mme_group_id() const; const uint16_t& ue_usage_type() const; const ce_mode_b_support_ind_e& ce_mode_b_support_ind() const; const uint32_t& dcn_id() const; const coverage_level_e& coverage_level() const; const fixed_bitstring<8, false, true>& ue_application_layer_meas_cap() const; const edt_session_e& edt_session() const; private: types type_; choice_buffer_t, bounded_octstring<32, 256, true>, eutran_cgi_s, fixed_bitstring<27, false, true>, fixed_octstring<2, true>, gummei_s, s_tmsi_s, tai_s, tunnel_info_s, unbounded_octstring > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct init_ue_msg_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool s_tmsi_present = false; bool csg_id_present = false; bool gummei_id_present = false; bool cell_access_mode_present = false; bool gw_transport_layer_address_present = false; bool relay_node_ind_present = false; bool gummei_type_present = false; bool tunnel_info_for_bbf_present = false; bool sipto_l_gw_transport_layer_address_present = false; bool lhn_id_present = false; bool mme_group_id_present = false; bool ue_usage_type_present = false; bool ce_mode_b_support_ind_present = false; bool dcn_id_present = false; bool coverage_level_present = false; bool ue_application_layer_meas_cap_present = false; bool edt_session_present = false; ie_field_s > enb_ue_s1ap_id; ie_field_s > nas_pdu; ie_field_s tai; ie_field_s eutran_cgi; ie_field_s rrc_establishment_cause; ie_field_s s_tmsi; ie_field_s > csg_id; ie_field_s gummei_id; ie_field_s cell_access_mode; ie_field_s > gw_transport_layer_address; ie_field_s relay_node_ind; ie_field_s gummei_type; ie_field_s tunnel_info_for_bbf; ie_field_s > sipto_l_gw_transport_layer_address; ie_field_s > lhn_id; ie_field_s > mme_group_id; ie_field_s > ue_usage_type; ie_field_s ce_mode_b_support_ind; ie_field_s > dcn_id; ie_field_s coverage_level; ie_field_s > ue_application_layer_meas_cap; ie_field_s edt_session; // sequence methods init_ue_msg_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // InitialUEMessage ::= SEQUENCE using init_ue_msg_s = elementary_procedure_option; // UE-associatedLogicalS1-ConnectionItemExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using ue_associated_lc_s1_conn_item_ext_ies_o = protocol_ext_empty_o; // TAIItemExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using tai_item_ext_ies_o = protocol_ext_empty_o; using ue_associated_lc_s1_conn_item_ext_ies_container = protocol_ext_container_empty_l; // UE-associatedLogicalS1-ConnectionItem ::= SEQUENCE struct ue_associated_lc_s1_conn_item_s { bool ext = false; bool mme_ue_s1ap_id_present = false; bool enb_ue_s1ap_id_present = false; bool ie_exts_present = false; uint64_t mme_ue_s1ap_id = 0; uint32_t enb_ue_s1ap_id = 0; ue_associated_lc_s1_conn_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ServedDCNsItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using served_dcns_item_ext_ies_o = protocol_ext_empty_o; // ServedGUMMEIsItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct served_gummeis_item_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { gummei_type, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::gummei_type; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters gummei_type_e& gummei_type() { return c; } const gummei_type_e& gummei_type() const { return c; } private: gummei_type_e c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // ServedGroupIDs ::= SEQUENCE (SIZE (1..65535)) OF OCTET STRING (SIZE (2)) using served_group_ids_l = dyn_array >; // ServedMMECs ::= SEQUENCE (SIZE (1..256)) OF OCTET STRING (SIZE (1)) using served_mmecs_l = dyn_array >; // ServedPLMNs ::= SEQUENCE (SIZE (1..32)) OF OCTET STRING (SIZE (3)) using served_plmns_l = bounded_array, 32>; using tai_item_ext_ies_container = protocol_ext_container_empty_l; // TAIItem ::= SEQUENCE struct tai_item_s { bool ext = false; bool ie_exts_present = false; tai_s tai; tai_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UE-S1AP-ID-pair-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using ue_s1ap_id_pair_ext_ies_o = protocol_ext_empty_o; // UE-associatedLogicalS1-ConnectionItemRes ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_associated_lc_s1_conn_item_res_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { ue_associated_lc_s1_conn_item, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods types type() const { return types::ue_associated_lc_s1_conn_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters ue_associated_lc_s1_conn_item_s& ue_associated_lc_s1_conn_item() { return c; } const ue_associated_lc_s1_conn_item_s& ue_associated_lc_s1_conn_item() const { return c; } private: ue_associated_lc_s1_conn_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // NB-IoT-Paging-eDRX-Cycle ::= ENUMERATED struct nb_io_t_paging_e_drx_cycle_opts { enum options { hf2, hf4, hf6, hf8, hf10, hf12, hf14, hf16, hf32, hf64, hf128, hf256, hf512, hf1024, /*...*/ nulltype } value; typedef uint16_t number_type; const char* to_string() const; uint16_t to_number() const; }; typedef enumerated nb_io_t_paging_e_drx_cycle_e; // NB-IoT-Paging-eDRXInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using nb_io_t_paging_e_drx_info_ext_ies_o = protocol_ext_empty_o; // NB-IoT-PagingTimeWindow ::= ENUMERATED struct nb_io_t_paging_time_win_opts { enum options { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, /*...*/ nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated nb_io_t_paging_time_win_e; // OverloadAction ::= ENUMERATED struct overload_action_opts { enum options { reject_non_emergency_mo_dt, reject_rrc_cr_sig, permit_emergency_sessions_and_mobile_terminated_services_only, // ... permit_high_prio_sessions_and_mobile_terminated_services_only, reject_delay_tolerant_access, permit_high_prio_sessions_and_exception_report_and_mobile_terminated_services_only, not_accept_mo_data_or_delay_tolerant_access_from_cp_cio_t, nulltype } value; const char* to_string() const; }; typedef enumerated overload_action_e; // Paging-eDRX-Cycle ::= ENUMERATED struct paging_e_drx_cycle_opts { enum options { hfhalf, hf1, hf2, hf4, hf6, hf8, hf10, hf12, hf14, hf16, hf32, hf64, hf128, hf256, /*...*/ nulltype } value; typedef float number_type; const char* to_string() const; float to_number() const; const char* to_number_string() const; }; typedef enumerated paging_e_drx_cycle_e; // Paging-eDRXInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using paging_e_drx_info_ext_ies_o = protocol_ext_empty_o; // PagingTimeWindow ::= ENUMERATED struct paging_time_win_opts { enum options { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, /*...*/ nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated paging_time_win_e; // ResetAll ::= ENUMERATED struct reset_all_opts { enum options { reset_all, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated reset_all_e; using served_dcns_item_ext_ies_container = protocol_ext_container_empty_l; // ServedDCNsItem ::= SEQUENCE struct served_dcns_item_s { bool ext = false; bool ie_exts_present = false; uint32_t dcn_id = 0; uint16_t relative_dcn_capacity = 0; served_dcns_item_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ServedGUMMEIsItem ::= SEQUENCE struct served_gummeis_item_s { bool ext = false; bool ie_exts_present = false; served_plmns_l served_plmns; served_group_ids_l served_group_ids; served_mmecs_l served_mmecs; protocol_ext_container_l ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // TAIItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct tai_item_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { tai_item, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::tai_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters tai_item_s& tai_item() { return c; } const tai_item_s& tai_item() const { return c; } private: tai_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // TAIListforWarning ::= SEQUENCE (SIZE (1..65535)) OF TAI using tai_listfor_warning_l = dyn_array; using ue_s1ap_id_pair_ext_ies_container = protocol_ext_container_empty_l; // UE-S1AP-ID-pair ::= SEQUENCE struct ue_s1ap_id_pair_s { bool ext = false; bool ie_exts_present = false; uint64_t mme_ue_s1ap_id = 0; uint32_t enb_ue_s1ap_id = 0; ue_s1ap_id_pair_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UE-associatedLogicalS1-ConnectionItemResAck ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_associated_lc_s1_conn_item_res_ack_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { ue_associated_lc_s1_conn_item, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods types type() const { return types::ue_associated_lc_s1_conn_item; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters ue_associated_lc_s1_conn_item_s& ue_associated_lc_s1_conn_item() { return c; } const ue_associated_lc_s1_conn_item_s& ue_associated_lc_s1_conn_item() const { return c; } private: ue_associated_lc_s1_conn_item_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UE-associatedLogicalS1-ConnectionListRes ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES // : IEsSetParam} using ue_associated_lc_s1_conn_list_res_l = dyn_array >; // CNDomain ::= ENUMERATED struct cn_domain_opts { enum options { ps, cs, nulltype } value; const char* to_string() const; }; typedef enumerated cn_domain_e; // Cdma2000HORequiredIndication ::= ENUMERATED struct cdma2000_ho_required_ind_opts { enum options { true_value, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated cdma2000_ho_required_ind_e; // ConcurrentWarningMessageIndicator ::= ENUMERATED struct concurrent_warning_msg_ind_opts { enum options { true_value, nulltype } value; const char* to_string() const; }; typedef enumerated concurrent_warning_msg_ind_e; // GWContextReleaseIndication ::= ENUMERATED struct gw_context_release_ind_opts { enum options { true_value, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated gw_context_release_ind_e; // HandoverFlag ::= ENUMERATED struct ho_flag_opts { enum options { ho_prep, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated ho_flag_e; // KillAllWarningMessages ::= ENUMERATED struct kill_all_warning_msgs_opts { enum options { true_value, nulltype } value; const char* to_string() const; }; typedef enumerated kill_all_warning_msgs_e; // LTE-M-Indication ::= ENUMERATED struct lte_m_ind_opts { enum options { lte_m, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated lte_m_ind_e; // MMERelaySupportIndicator ::= ENUMERATED struct mme_relay_support_ind_opts { enum options { true_value, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated mme_relay_support_ind_e; using nb_io_t_paging_e_drx_info_ext_ies_container = protocol_ext_container_empty_l; // NB-IoT-Paging-eDRXInformation ::= SEQUENCE struct nb_io_t_paging_e_drx_info_s { bool ext = false; bool nb_io_t_paging_time_win_present = false; bool ie_exts_present = false; nb_io_t_paging_e_drx_cycle_e nb_io_t_paging_e_drx_cycle; nb_io_t_paging_time_win_e nb_io_t_paging_time_win; nb_io_t_paging_e_drx_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // OverloadResponse ::= CHOICE struct overload_resp_c { struct types_opts { enum options { overload_action, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::overload_action; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters overload_action_e& overload_action() { return c; } const overload_action_e& overload_action() const { return c; } private: overload_action_e c; }; // PWSfailedECGIList ::= SEQUENCE (SIZE (1..256)) OF EUTRAN-CGI using pw_sfailed_ecgi_list_l = dyn_array; using paging_e_drx_info_ext_ies_container = protocol_ext_container_empty_l; // Paging-eDRXInformation ::= SEQUENCE struct paging_e_drx_info_s { bool ext = false; bool paging_time_win_present = false; bool ie_exts_present = false; paging_e_drx_cycle_e paging_e_drx_cycle; paging_time_win_e paging_time_win; paging_e_drx_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // PagingPriority ::= ENUMERATED struct paging_prio_opts { enum options { priolevel1, priolevel2, priolevel3, priolevel4, priolevel5, priolevel6, priolevel7, priolevel8, // ... nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated paging_prio_e; // ResetType ::= CHOICE struct reset_type_c { struct types_opts { enum options { s1_interface, part_of_s1_interface, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods reset_type_c() = default; reset_type_c(const reset_type_c& other); reset_type_c& operator=(const reset_type_c& other); ~reset_type_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 reset_all_e& s1_interface() { assert_choice_type(types::s1_interface, type_, "ResetType"); return c.get(); } ue_associated_lc_s1_conn_list_res_l& part_of_s1_interface() { assert_choice_type(types::part_of_s1_interface, type_, "ResetType"); return c.get(); } const reset_all_e& s1_interface() const { assert_choice_type(types::s1_interface, type_, "ResetType"); return c.get(); } const ue_associated_lc_s1_conn_list_res_l& part_of_s1_interface() const { assert_choice_type(types::part_of_s1_interface, type_, "ResetType"); return c.get(); } reset_all_e& set_s1_interface(); ue_associated_lc_s1_conn_list_res_l& set_part_of_s1_interface(); private: types type_; choice_buffer_t c; void destroy_(); }; // SRVCCOperationNotPossible ::= ENUMERATED struct srvcc_operation_not_possible_opts { enum options { not_possible, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated srvcc_operation_not_possible_e; // ServedDCNs ::= SEQUENCE (SIZE (0..32)) OF ServedDCNsItem using served_dcns_l = dyn_array; // ServedGUMMEIs ::= SEQUENCE (SIZE (1..8)) OF ServedGUMMEIsItem using served_gummeis_l = dyn_array; // TAIList ::= SEQUENCE (SIZE (1..256)) OF ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} using tai_list_l = dyn_array >; // TAIListForRestart ::= SEQUENCE (SIZE (1..2048)) OF TAI using tai_list_for_restart_l = dyn_array; // UE-RetentionInformation ::= ENUMERATED struct ue_retention_info_opts { enum options { ues_retained, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated ue_retention_info_e; // UE-S1AP-IDs ::= CHOICE struct ue_s1ap_ids_c { struct types_opts { enum options { ue_s1ap_id_pair, mme_ue_s1ap_id, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ue_s1ap_ids_c() = default; ue_s1ap_ids_c(const ue_s1ap_ids_c& other); ue_s1ap_ids_c& operator=(const ue_s1ap_ids_c& other); ~ue_s1ap_ids_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 ue_s1ap_id_pair_s& ue_s1ap_id_pair() { assert_choice_type(types::ue_s1ap_id_pair, type_, "UE-S1AP-IDs"); return c.get(); } uint64_t& mme_ue_s1ap_id() { assert_choice_type(types::mme_ue_s1ap_id, type_, "UE-S1AP-IDs"); return c.get(); } const ue_s1ap_id_pair_s& ue_s1ap_id_pair() const { assert_choice_type(types::ue_s1ap_id_pair, type_, "UE-S1AP-IDs"); return c.get(); } const uint64_t& mme_ue_s1ap_id() const { assert_choice_type(types::mme_ue_s1ap_id, type_, "UE-S1AP-IDs"); return c.get(); } ue_s1ap_id_pair_s& set_ue_s1ap_id_pair(); uint64_t& set_mme_ue_s1ap_id(); private: types type_; choice_buffer_t c; void destroy_(); }; // UE-associatedLogicalS1-ConnectionListResAck ::= SEQUENCE (SIZE (1..256)) OF // ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} using ue_associated_lc_s1_conn_list_res_ack_l = dyn_array >; // UEPagingID ::= CHOICE struct ue_paging_id_c { struct types_opts { enum options { s_tmsi, imsi, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods ue_paging_id_c() = default; ue_paging_id_c(const ue_paging_id_c& other); ue_paging_id_c& operator=(const ue_paging_id_c& other); ~ue_paging_id_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 s_tmsi_s& s_tmsi() { assert_choice_type(types::s_tmsi, type_, "UEPagingID"); return c.get(); } bounded_octstring<3, 8, true>& imsi() { assert_choice_type(types::imsi, type_, "UEPagingID"); return c.get >(); } const s_tmsi_s& s_tmsi() const { assert_choice_type(types::s_tmsi, type_, "UEPagingID"); return c.get(); } const bounded_octstring<3, 8, true>& imsi() const { assert_choice_type(types::imsi, type_, "UEPagingID"); return c.get >(); } s_tmsi_s& set_s_tmsi(); bounded_octstring<3, 8, true>& set_imsi(); private: types type_; choice_buffer_t, s_tmsi_s> c; void destroy_(); }; // VoiceSupportMatchIndicator ::= ENUMERATED struct voice_support_match_ind_opts { enum options { supported, not_supported, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated voice_support_match_ind_e; // WarningAreaList ::= CHOICE struct warning_area_list_c { struct types_opts { enum options { cell_id_list, tracking_area_listfor_warning, emergency_area_id_list, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods warning_area_list_c() = default; warning_area_list_c(const warning_area_list_c& other); warning_area_list_c& operator=(const warning_area_list_c& other); ~warning_area_list_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 ecgi_list_l& cell_id_list() { assert_choice_type(types::cell_id_list, type_, "WarningAreaList"); return c.get(); } tai_listfor_warning_l& tracking_area_listfor_warning() { assert_choice_type(types::tracking_area_listfor_warning, type_, "WarningAreaList"); return c.get(); } emergency_area_id_list_l& emergency_area_id_list() { assert_choice_type(types::emergency_area_id_list, type_, "WarningAreaList"); return c.get(); } const ecgi_list_l& cell_id_list() const { assert_choice_type(types::cell_id_list, type_, "WarningAreaList"); return c.get(); } const tai_listfor_warning_l& tracking_area_listfor_warning() const { assert_choice_type(types::tracking_area_listfor_warning, type_, "WarningAreaList"); return c.get(); } const emergency_area_id_list_l& emergency_area_id_list() const { assert_choice_type(types::emergency_area_id_list, type_, "WarningAreaList"); return c.get(); } ecgi_list_l& set_cell_id_list(); tai_listfor_warning_l& set_tracking_area_listfor_warning(); emergency_area_id_list_l& set_emergency_area_id_list(); private: types type_; choice_buffer_t c; void destroy_(); }; // KillRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct kill_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { msg_id, serial_num, warning_area_list, kill_all_warning_msgs, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<16, false, true>& msg_id(); fixed_bitstring<16, false, true>& serial_num(); warning_area_list_c& warning_area_list(); kill_all_warning_msgs_e& kill_all_warning_msgs(); const fixed_bitstring<16, false, true>& msg_id() const; const fixed_bitstring<16, false, true>& serial_num() const; const warning_area_list_c& warning_area_list() const; const kill_all_warning_msgs_e& kill_all_warning_msgs() const; private: types type_; choice_buffer_t, warning_area_list_c> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // KillResponseIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct kill_resp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { msg_id, serial_num, broadcast_cancelled_area_list, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<16, false, true>& msg_id(); fixed_bitstring<16, false, true>& serial_num(); broadcast_cancelled_area_list_c& broadcast_cancelled_area_list(); crit_diagnostics_s& crit_diagnostics(); const fixed_bitstring<16, false, true>& msg_id() const; const fixed_bitstring<16, false, true>& serial_num() const; const broadcast_cancelled_area_list_c& broadcast_cancelled_area_list() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // LocationReportIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct location_report_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, eutran_cgi, tai, request_type, ps_cell_info, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); eutran_cgi_s& eutran_cgi(); tai_s& tai(); request_type_s& request_type(); ps_cell_info_s& ps_cell_info(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const eutran_cgi_s& eutran_cgi() const; const tai_s& tai() const; const request_type_s& request_type() const; const ps_cell_info_s& ps_cell_info() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // LocationReportingControlIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct location_report_ctrl_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, request_type, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); request_type_s& request_type(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const request_type_s& request_type() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // LocationReportingFailureIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct location_report_fail_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, cause, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); cause_c& cause(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const cause_c& cause() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // MMECPRelocationIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct mmecp_relocation_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; private: types type_; pod_choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // MMEConfigurationTransferIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct mme_cfg_transfer_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { son_cfg_transfer_mct, en_dcson_cfg_transfer_mct, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 son_cfg_transfer_s& son_cfg_transfer_mct(); en_dcson_cfg_transfer_s& en_dcson_cfg_transfer_mct(); const son_cfg_transfer_s& son_cfg_transfer_mct() const; const en_dcson_cfg_transfer_s& en_dcson_cfg_transfer_mct() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // MMEConfigurationUpdateAcknowledgeIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct mme_cfg_upd_ack_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::crit_diagnostics; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters crit_diagnostics_s& crit_diagnostics() { return c; } const crit_diagnostics_s& crit_diagnostics() const { return c; } private: crit_diagnostics_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // MMEConfigurationUpdateFailureIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct mme_cfg_upd_fail_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { cause, time_to_wait, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 cause_c& cause(); time_to_wait_e& time_to_wait(); crit_diagnostics_s& crit_diagnostics(); const cause_c& cause() const; const time_to_wait_e& time_to_wait() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // MMEConfigurationUpdateIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct mme_cfg_upd_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mm_ename, served_gummeis, relative_mme_capacity, served_dcns, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 printable_string<1, 150, true, true>& mm_ename(); served_gummeis_l& served_gummeis(); uint16_t& relative_mme_capacity(); served_dcns_l& served_dcns(); const printable_string<1, 150, true, true>& mm_ename() const; const served_gummeis_l& served_gummeis() const; const uint16_t& relative_mme_capacity() const; const served_dcns_l& served_dcns() const; private: types type_; choice_buffer_t, served_dcns_l, served_gummeis_l> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // MMEDirectInformationTransferIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct mme_direct_info_transfer_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { inter_sys_info_transfer_type_mdt, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::inter_sys_info_transfer_type_mdt; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters inter_sys_info_transfer_type_c& inter_sys_info_transfer_type_mdt() { return c; } const inter_sys_info_transfer_type_c& inter_sys_info_transfer_type_mdt() const { return c; } private: inter_sys_info_transfer_type_c c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // MMEStatusTransferIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct mme_status_transfer_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, enb_status_transfer_transparent_container, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); enb_status_transfer_transparent_container_s& enb_status_transfer_transparent_container(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const enb_status_transfer_transparent_container_s& enb_status_transfer_transparent_container() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // NASDeliveryIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct nas_delivery_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; private: types type_; pod_choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // NASNonDeliveryIndication-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct nas_non_delivery_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, nas_pdu, cause, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); unbounded_octstring& nas_pdu(); cause_c& cause(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const unbounded_octstring& nas_pdu() const; const cause_c& cause() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // OverloadStartIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct overload_start_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { overload_resp, gummei_list, traffic_load_reduction_ind, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 overload_resp_c& overload_resp(); gummei_list_l& gummei_list(); uint8_t& traffic_load_reduction_ind(); const overload_resp_c& overload_resp() const; const gummei_list_l& gummei_list() const; const uint8_t& traffic_load_reduction_ind() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // OverloadStopIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct overload_stop_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { gummei_list, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::gummei_list; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters gummei_list_l& gummei_list() { return c; } const gummei_list_l& gummei_list() const { return c; } private: gummei_list_l c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // PWSFailureIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct pws_fail_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { pw_sfailed_ecgi_list, global_enb_id, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 pw_sfailed_ecgi_list_l& pw_sfailed_ecgi_list(); global_enb_id_s& global_enb_id(); const pw_sfailed_ecgi_list_l& pw_sfailed_ecgi_list() const; const global_enb_id_s& global_enb_id() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // PWSRestartIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct pws_restart_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { ecgi_list_for_restart, global_enb_id, tai_list_for_restart, emergency_area_id_list_for_restart, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 ecgi_list_for_restart_l& ecgi_list_for_restart(); global_enb_id_s& global_enb_id(); tai_list_for_restart_l& tai_list_for_restart(); emergency_area_id_list_for_restart_l& emergency_area_id_list_for_restart(); const ecgi_list_for_restart_l& ecgi_list_for_restart() const; const global_enb_id_s& global_enb_id() const; const tai_list_for_restart_l& tai_list_for_restart() const; const emergency_area_id_list_for_restart_l& emergency_area_id_list_for_restart() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // PagingIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct paging_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { ue_id_idx_value, ue_paging_id, paging_drx, cn_domain, tai_list, csg_id_list, paging_prio, ue_radio_cap_for_paging, assist_data_for_paging, paging_e_drx_info, extended_ue_id_idx_value, nb_io_t_paging_e_drx_info, nb_io_t_ue_id_idx_value, enhanced_coverage_restricted, ce_mode_brestricted, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<10, false, true>& ue_id_idx_value(); ue_paging_id_c& ue_paging_id(); paging_drx_e& paging_drx(); cn_domain_e& cn_domain(); tai_list_l& tai_list(); csg_id_list_l& csg_id_list(); paging_prio_e& paging_prio(); unbounded_octstring& ue_radio_cap_for_paging(); assist_data_for_paging_s& assist_data_for_paging(); paging_e_drx_info_s& paging_e_drx_info(); fixed_bitstring<14, false, true>& extended_ue_id_idx_value(); nb_io_t_paging_e_drx_info_s& nb_io_t_paging_e_drx_info(); fixed_bitstring<12, false, true>& nb_io_t_ue_id_idx_value(); enhanced_coverage_restricted_e& enhanced_coverage_restricted(); ce_mode_brestricted_e& ce_mode_brestricted(); const fixed_bitstring<10, false, true>& ue_id_idx_value() const; const ue_paging_id_c& ue_paging_id() const; const paging_drx_e& paging_drx() const; const cn_domain_e& cn_domain() const; const tai_list_l& tai_list() const; const csg_id_list_l& csg_id_list() const; const paging_prio_e& paging_prio() const; const unbounded_octstring& ue_radio_cap_for_paging() const; const assist_data_for_paging_s& assist_data_for_paging() const; const paging_e_drx_info_s& paging_e_drx_info() const; const fixed_bitstring<14, false, true>& extended_ue_id_idx_value() const; const nb_io_t_paging_e_drx_info_s& nb_io_t_paging_e_drx_info() const; const fixed_bitstring<12, false, true>& nb_io_t_ue_id_idx_value() const; const enhanced_coverage_restricted_e& enhanced_coverage_restricted() const; const ce_mode_brestricted_e& ce_mode_brestricted() const; private: types type_; choice_buffer_t, nb_io_t_paging_e_drx_info_s, paging_e_drx_info_s, tai_list_l, ue_paging_id_c, unbounded_octstring > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // PathSwitchRequestAcknowledgeIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct path_switch_request_ack_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, ueaggregate_maximum_bitrate, erab_to_be_switched_ul_list, erab_to_be_released_list, security_context, crit_diagnostics, mme_ue_s1ap_id_minus2, csg_membership_status, pro_se_authorized, ueuser_plane_cio_tsupport_ind, v2xservices_authorized, ue_sidelink_aggregate_maximum_bitrate, enhanced_coverage_restricted, nrue_security_cap, ce_mode_brestricted, aerial_uesubscription_info, pending_data_ind, subscription_based_ue_differentiation_info, ho_restrict_list, add_rrm_prio_idx, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate(); erab_ie_container_list_l& erab_to_be_switched_ul_list(); erab_list_l& erab_to_be_released_list(); security_context_s& security_context(); crit_diagnostics_s& crit_diagnostics(); uint64_t& mme_ue_s1ap_id_minus2(); csg_membership_status_e& csg_membership_status(); pro_se_authorized_s& pro_se_authorized(); ueuser_plane_cio_tsupport_ind_e& ueuser_plane_cio_tsupport_ind(); v2xservices_authorized_s& v2xservices_authorized(); ue_sidelink_aggregate_maximum_bitrate_s& ue_sidelink_aggregate_maximum_bitrate(); enhanced_coverage_restricted_e& enhanced_coverage_restricted(); nrue_security_cap_s& nrue_security_cap(); ce_mode_brestricted_e& ce_mode_brestricted(); aerial_uesubscription_info_e& aerial_uesubscription_info(); pending_data_ind_e& pending_data_ind(); subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info(); ho_restrict_list_s& ho_restrict_list(); fixed_bitstring<32, false, true>& add_rrm_prio_idx(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate() const; const erab_ie_container_list_l& erab_to_be_switched_ul_list() const; const erab_list_l& erab_to_be_released_list() const; const security_context_s& security_context() const; const crit_diagnostics_s& crit_diagnostics() const; const uint64_t& mme_ue_s1ap_id_minus2() const; const csg_membership_status_e& csg_membership_status() const; const pro_se_authorized_s& pro_se_authorized() const; const ueuser_plane_cio_tsupport_ind_e& ueuser_plane_cio_tsupport_ind() const; const v2xservices_authorized_s& v2xservices_authorized() const; const ue_sidelink_aggregate_maximum_bitrate_s& ue_sidelink_aggregate_maximum_bitrate() const; const enhanced_coverage_restricted_e& enhanced_coverage_restricted() const; const nrue_security_cap_s& nrue_security_cap() const; const ce_mode_brestricted_e& ce_mode_brestricted() const; const aerial_uesubscription_info_e& aerial_uesubscription_info() const; const pending_data_ind_e& pending_data_ind() const; const subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info() const; const ho_restrict_list_s& ho_restrict_list() const; const fixed_bitstring<32, false, true>& add_rrm_prio_idx() const; private: types type_; choice_buffer_t, erab_list_l, fixed_bitstring<32, false, true>, ho_restrict_list_s, nrue_security_cap_s, pro_se_authorized_s, security_context_s, subscription_based_ue_differentiation_info_s, ue_aggregate_maximum_bitrate_s, ue_sidelink_aggregate_maximum_bitrate_s, v2xservices_authorized_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // PathSwitchRequestFailureIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct path_switch_request_fail_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, cause, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); cause_c& cause(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const cause_c& cause() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // PathSwitchRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct path_switch_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { enb_ue_s1ap_id, erab_to_be_switched_dl_list, source_mme_ue_s1ap_id, eutran_cgi, tai, ue_security_cap, csg_id, cell_access_mode, source_mme_gummei, csg_membership_status, tunnel_info_for_bbf, lhn_id, rrc_resume_cause, nrue_security_cap, ps_cell_info, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint32_t& enb_ue_s1ap_id(); erab_ie_container_list_l& erab_to_be_switched_dl_list(); uint64_t& source_mme_ue_s1ap_id(); eutran_cgi_s& eutran_cgi(); tai_s& tai(); ue_security_cap_s& ue_security_cap(); fixed_bitstring<27, false, true>& csg_id(); cell_access_mode_e& cell_access_mode(); gummei_s& source_mme_gummei(); csg_membership_status_e& csg_membership_status(); tunnel_info_s& tunnel_info_for_bbf(); bounded_octstring<32, 256, true>& lhn_id(); rrc_establishment_cause_e& rrc_resume_cause(); nrue_security_cap_s& nrue_security_cap(); ps_cell_info_s& ps_cell_info(); const uint32_t& enb_ue_s1ap_id() const; const erab_ie_container_list_l& erab_to_be_switched_dl_list() const; const uint64_t& source_mme_ue_s1ap_id() const; const eutran_cgi_s& eutran_cgi() const; const tai_s& tai() const; const ue_security_cap_s& ue_security_cap() const; const fixed_bitstring<27, false, true>& csg_id() const; const cell_access_mode_e& cell_access_mode() const; const gummei_s& source_mme_gummei() const; const csg_membership_status_e& csg_membership_status() const; const tunnel_info_s& tunnel_info_for_bbf() const; const bounded_octstring<32, 256, true>& lhn_id() const; const rrc_establishment_cause_e& rrc_resume_cause() const; const nrue_security_cap_s& nrue_security_cap() const; const ps_cell_info_s& ps_cell_info() const; private: types type_; choice_buffer_t, erab_ie_container_list_l, eutran_cgi_s, fixed_bitstring<27, false, true>, gummei_s, nrue_security_cap_s, ps_cell_info_s, tai_s, tunnel_info_s, ue_security_cap_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct s1ap_private_ies_empty_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::nulltype; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; }; // PrivateMessageIEs ::= OBJECT SET OF S1AP-PRIVATE-IES using private_msg_ies_o = s1ap_private_ies_empty_o; // RerouteNASRequest-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct reroute_nas_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { enb_ue_s1ap_id, mme_ue_s1ap_id, s1_msg, mme_group_id, add_guti, ue_usage_type, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint32_t& enb_ue_s1ap_id(); uint64_t& mme_ue_s1ap_id(); unbounded_octstring& s1_msg(); fixed_octstring<2, true>& mme_group_id(); add_guti_s& add_guti(); uint16_t& ue_usage_type(); const uint32_t& enb_ue_s1ap_id() const; const uint64_t& mme_ue_s1ap_id() const; const unbounded_octstring& s1_msg() const; const fixed_octstring<2, true>& mme_group_id() const; const add_guti_s& add_guti() const; const uint16_t& ue_usage_type() const; private: types type_; choice_buffer_t, unbounded_octstring > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // ResetAcknowledgeIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct reset_ack_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { ue_associated_lc_s1_conn_list_res_ack, crit_diagnostics, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 ue_associated_lc_s1_conn_list_res_ack_l& ue_associated_lc_s1_conn_list_res_ack(); crit_diagnostics_s& crit_diagnostics(); const ue_associated_lc_s1_conn_list_res_ack_l& ue_associated_lc_s1_conn_list_res_ack() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // ResetIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct reset_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { cause, reset_type, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 cause_c& cause(); reset_type_c& reset_type(); const cause_c& cause() const; const reset_type_c& reset_type() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // RetrieveUEInformationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct retrieve_ue_info_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { s_tmsi, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::s_tmsi; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters s_tmsi_s& s_tmsi() { return c; } const s_tmsi_s& s_tmsi() const { return c; } private: s_tmsi_s c; }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // S1SetupFailureIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct s1_setup_fail_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { cause, time_to_wait, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 cause_c& cause(); time_to_wait_e& time_to_wait(); crit_diagnostics_s& crit_diagnostics(); const cause_c& cause() const; const time_to_wait_e& time_to_wait() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // S1SetupRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct s1_setup_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { global_enb_id, enbname, supported_tas, default_paging_drx, csg_id_list, ue_retention_info, nb_io_t_default_paging_drx, connectedeng_nb_list, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 global_enb_id_s& global_enb_id(); printable_string<1, 150, true, true>& enbname(); supported_tas_l& supported_tas(); paging_drx_e& default_paging_drx(); csg_id_list_l& csg_id_list(); ue_retention_info_e& ue_retention_info(); nb_io_t_default_paging_drx_e& nb_io_t_default_paging_drx(); connectedeng_nb_list_l& connectedeng_nb_list(); const global_enb_id_s& global_enb_id() const; const printable_string<1, 150, true, true>& enbname() const; const supported_tas_l& supported_tas() const; const paging_drx_e& default_paging_drx() const; const csg_id_list_l& csg_id_list() const; const ue_retention_info_e& ue_retention_info() const; const nb_io_t_default_paging_drx_e& nb_io_t_default_paging_drx() const; const connectedeng_nb_list_l& connectedeng_nb_list() const; private: types type_; choice_buffer_t, supported_tas_l> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // S1SetupResponseIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct s1_setup_resp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mm_ename, served_gummeis, relative_mme_capacity, mme_relay_support_ind, crit_diagnostics, ue_retention_info, served_dcns, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 printable_string<1, 150, true, true>& mm_ename(); served_gummeis_l& served_gummeis(); uint16_t& relative_mme_capacity(); mme_relay_support_ind_e& mme_relay_support_ind(); crit_diagnostics_s& crit_diagnostics(); ue_retention_info_e& ue_retention_info(); served_dcns_l& served_dcns(); const printable_string<1, 150, true, true>& mm_ename() const; const served_gummeis_l& served_gummeis() const; const uint16_t& relative_mme_capacity() const; const mme_relay_support_ind_e& mme_relay_support_ind() const; const crit_diagnostics_s& crit_diagnostics() const; const ue_retention_info_e& ue_retention_info() const; const served_dcns_l& served_dcns() const; private: types type_; choice_buffer_t, served_dcns_l, served_gummeis_l> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // SecondaryRATDataUsageReportIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct secondary_rat_data_usage_report_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, secondary_rat_data_usage_report_list, ho_flag, user_location_info, time_since_secondary_node_release, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list(); ho_flag_e& ho_flag(); user_location_info_s& user_location_info(); fixed_octstring<4, true>& time_since_secondary_node_release(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list() const; const ho_flag_e& ho_flag() const; const user_location_info_s& user_location_info() const; const fixed_octstring<4, true>& time_since_secondary_node_release() const; private: types type_; choice_buffer_t, secondary_rat_data_usage_report_list_l, user_location_info_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // TraceFailureIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct trace_fail_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, e_utran_trace_id, cause, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); fixed_octstring<8, true>& e_utran_trace_id(); cause_c& cause(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const fixed_octstring<8, true>& e_utran_trace_id() const; const cause_c& cause() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // TraceStartIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct trace_start_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, trace_activation, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); trace_activation_s& trace_activation(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const trace_activation_s& trace_activation() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UECapabilityInfoIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_cap_info_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, ue_radio_cap, ue_radio_cap_for_paging, ue_application_layer_meas_cap, lte_m_ind, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); unbounded_octstring& ue_radio_cap(); unbounded_octstring& ue_radio_cap_for_paging(); fixed_bitstring<8, false, true>& ue_application_layer_meas_cap(); lte_m_ind_e& lte_m_ind(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const unbounded_octstring& ue_radio_cap() const; const unbounded_octstring& ue_radio_cap_for_paging() const; const fixed_bitstring<8, false, true>& ue_application_layer_meas_cap() const; const lte_m_ind_e& lte_m_ind() const; private: types type_; choice_buffer_t, unbounded_octstring > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextModificationConfirmIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_mod_confirm_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, csg_membership_status, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); csg_membership_status_e& csg_membership_status(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const csg_membership_status_e& csg_membership_status() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextModificationFailureIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_mod_fail_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, cause, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); cause_c& cause(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const cause_c& cause() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextModificationIndicationIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_mod_ind_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, csg_membership_info, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); csg_membership_info_s& csg_membership_info(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const csg_membership_info_s& csg_membership_info() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextModificationRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_mod_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, security_key, subscriber_profile_idfor_rfp, ueaggregate_maximum_bitrate, cs_fallback_ind, ue_security_cap, csg_membership_status, registered_lai, add_cs_fallback_ind, pro_se_authorized, srvcc_operation_possible, srvcc_operation_not_possible, v2xservices_authorized, ue_sidelink_aggregate_maximum_bitrate, nrue_security_cap, aerial_uesubscription_info, add_rrm_prio_idx, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); fixed_bitstring<256, false, true>& security_key(); uint16_t& subscriber_profile_idfor_rfp(); ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate(); cs_fallback_ind_e& cs_fallback_ind(); ue_security_cap_s& ue_security_cap(); csg_membership_status_e& csg_membership_status(); lai_s& registered_lai(); add_cs_fallback_ind_e& add_cs_fallback_ind(); pro_se_authorized_s& pro_se_authorized(); srvcc_operation_possible_e& srvcc_operation_possible(); srvcc_operation_not_possible_e& srvcc_operation_not_possible(); v2xservices_authorized_s& v2xservices_authorized(); ue_sidelink_aggregate_maximum_bitrate_s& ue_sidelink_aggregate_maximum_bitrate(); nrue_security_cap_s& nrue_security_cap(); aerial_uesubscription_info_e& aerial_uesubscription_info(); fixed_bitstring<32, false, true>& add_rrm_prio_idx(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const fixed_bitstring<256, false, true>& security_key() const; const uint16_t& subscriber_profile_idfor_rfp() const; const ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate() const; const cs_fallback_ind_e& cs_fallback_ind() const; const ue_security_cap_s& ue_security_cap() const; const csg_membership_status_e& csg_membership_status() const; const lai_s& registered_lai() const; const add_cs_fallback_ind_e& add_cs_fallback_ind() const; const pro_se_authorized_s& pro_se_authorized() const; const srvcc_operation_possible_e& srvcc_operation_possible() const; const srvcc_operation_not_possible_e& srvcc_operation_not_possible() const; const v2xservices_authorized_s& v2xservices_authorized() const; const ue_sidelink_aggregate_maximum_bitrate_s& ue_sidelink_aggregate_maximum_bitrate() const; const nrue_security_cap_s& nrue_security_cap() const; const aerial_uesubscription_info_e& aerial_uesubscription_info() const; const fixed_bitstring<32, false, true>& add_rrm_prio_idx() const; private: types type_; choice_buffer_t, lai_s, nrue_security_cap_s, pro_se_authorized_s, ue_aggregate_maximum_bitrate_s, ue_security_cap_s, ue_sidelink_aggregate_maximum_bitrate_s, v2xservices_authorized_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextModificationResponseIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_mod_resp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextReleaseCommand-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_release_cmd_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { ue_s1ap_ids, cause, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 ue_s1ap_ids_c& ue_s1ap_ids(); cause_c& cause(); const ue_s1ap_ids_c& ue_s1ap_ids() const; const cause_c& cause() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextReleaseComplete-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_release_complete_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, crit_diagnostics, user_location_info, info_on_recommended_cells_and_enbs_for_paging, cell_id_and_ce_level_for_ce_capable_ues, secondary_rat_data_usage_report_list, time_since_secondary_node_release, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); crit_diagnostics_s& crit_diagnostics(); user_location_info_s& user_location_info(); info_on_recommended_cells_and_enbs_for_paging_s& info_on_recommended_cells_and_enbs_for_paging(); cell_id_and_ce_level_for_ce_capable_ues_s& cell_id_and_ce_level_for_ce_capable_ues(); secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list(); fixed_octstring<4, true>& time_since_secondary_node_release(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const crit_diagnostics_s& crit_diagnostics() const; const user_location_info_s& user_location_info() const; const info_on_recommended_cells_and_enbs_for_paging_s& info_on_recommended_cells_and_enbs_for_paging() const; const cell_id_and_ce_level_for_ce_capable_ues_s& cell_id_and_ce_level_for_ce_capable_ues() const; const secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list() const; const fixed_octstring<4, true>& time_since_secondary_node_release() const; private: types type_; choice_buffer_t, info_on_recommended_cells_and_enbs_for_paging_s, secondary_rat_data_usage_report_list_l, user_location_info_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextReleaseRequest-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_release_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, cause, gw_context_release_ind, secondary_rat_data_usage_report_list, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); cause_c& cause(); gw_context_release_ind_e& gw_context_release_ind(); secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const cause_c& cause() const; const gw_context_release_ind_e& gw_context_release_ind() const; const secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextResumeFailureIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_resume_fail_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, cause, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); cause_c& cause(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const cause_c& cause() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextResumeRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_resume_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, erab_failed_to_resume_list_resume_req, rrc_resume_cause, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); erab_ie_container_list_l& erab_failed_to_resume_list_resume_req(); rrc_establishment_cause_e& rrc_resume_cause(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const erab_ie_container_list_l& erab_failed_to_resume_list_resume_req() const; const rrc_establishment_cause_e& rrc_resume_cause() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextResumeResponseIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_resume_resp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, erab_failed_to_resume_list_resume_res, crit_diagnostics, security_context, pending_data_ind, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); erab_ie_container_list_l& erab_failed_to_resume_list_resume_res(); crit_diagnostics_s& crit_diagnostics(); security_context_s& security_context(); pending_data_ind_e& pending_data_ind(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const erab_ie_container_list_l& erab_failed_to_resume_list_resume_res() const; const crit_diagnostics_s& crit_diagnostics() const; const security_context_s& security_context() const; const pending_data_ind_e& pending_data_ind() const; private: types type_; choice_buffer_t, security_context_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextSuspendRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_suspend_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, info_on_recommended_cells_and_enbs_for_paging, cell_id_and_ce_level_for_ce_capable_ues, secondary_rat_data_usage_report_list, user_location_info, time_since_secondary_node_release, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); info_on_recommended_cells_and_enbs_for_paging_s& info_on_recommended_cells_and_enbs_for_paging(); cell_id_and_ce_level_for_ce_capable_ues_s& cell_id_and_ce_level_for_ce_capable_ues(); secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list(); user_location_info_s& user_location_info(); fixed_octstring<4, true>& time_since_secondary_node_release(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const info_on_recommended_cells_and_enbs_for_paging_s& info_on_recommended_cells_and_enbs_for_paging() const; const cell_id_and_ce_level_for_ce_capable_ues_s& cell_id_and_ce_level_for_ce_capable_ues() const; const secondary_rat_data_usage_report_list_l& secondary_rat_data_usage_report_list() const; const user_location_info_s& user_location_info() const; const fixed_octstring<4, true>& time_since_secondary_node_release() const; private: types type_; choice_buffer_t, info_on_recommended_cells_and_enbs_for_paging_s, secondary_rat_data_usage_report_list_l, user_location_info_s> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEContextSuspendResponseIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_context_suspend_resp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, crit_diagnostics, security_context, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); crit_diagnostics_s& crit_diagnostics(); security_context_s& security_context(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const crit_diagnostics_s& crit_diagnostics() const; const security_context_s& security_context() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UEInformationTransferIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_info_transfer_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { s_tmsi, ue_level_qos_params, ue_radio_cap, subscription_based_ue_differentiation_info, pending_data_ind, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 s_tmsi_s& s_tmsi(); erab_level_qos_params_s& ue_level_qos_params(); unbounded_octstring& ue_radio_cap(); subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info(); pending_data_ind_e& pending_data_ind(); const s_tmsi_s& s_tmsi() const; const erab_level_qos_params_s& ue_level_qos_params() const; const unbounded_octstring& ue_radio_cap() const; const subscription_based_ue_differentiation_info_s& subscription_based_ue_differentiation_info() const; const pending_data_ind_e& pending_data_ind() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UERadioCapabilityMatchRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_radio_cap_match_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, ue_radio_cap, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); unbounded_octstring& ue_radio_cap(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const unbounded_octstring& ue_radio_cap() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UERadioCapabilityMatchResponseIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ue_radio_cap_match_resp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, voice_support_match_ind, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); voice_support_match_ind_e& voice_support_match_ind(); crit_diagnostics_s& crit_diagnostics(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const voice_support_match_ind_e& voice_support_match_ind() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UplinkNASTransport-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ul_nas_transport_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, nas_pdu, eutran_cgi, tai, gw_transport_layer_address, sipto_l_gw_transport_layer_address, lhn_id, ps_cell_info, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); unbounded_octstring& nas_pdu(); eutran_cgi_s& eutran_cgi(); tai_s& tai(); bounded_bitstring<1, 160, true, true>& gw_transport_layer_address(); bounded_bitstring<1, 160, true, true>& sipto_l_gw_transport_layer_address(); bounded_octstring<32, 256, true>& lhn_id(); ps_cell_info_s& ps_cell_info(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const unbounded_octstring& nas_pdu() const; const eutran_cgi_s& eutran_cgi() const; const tai_s& tai() const; const bounded_bitstring<1, 160, true, true>& gw_transport_layer_address() const; const bounded_bitstring<1, 160, true, true>& sipto_l_gw_transport_layer_address() const; const bounded_octstring<32, 256, true>& lhn_id() const; const ps_cell_info_s& ps_cell_info() const; private: types type_; choice_buffer_t, bounded_octstring<32, 256, true>, eutran_cgi_s, ps_cell_info_s, tai_s, unbounded_octstring > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UplinkNonUEAssociatedLPPaTransport-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ul_non_ueassociated_lp_pa_transport_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { routing_id, lp_pa_pdu, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint16_t& routing_id(); unbounded_octstring& lp_pa_pdu(); const uint16_t& routing_id() const; const unbounded_octstring& lp_pa_pdu() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UplinkS1cdma2000tunnellingIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ul_s1cdma2000tunnelling_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, cdma2000_rat_type, cdma2000_sector_id, cdma2000_ho_required_ind, cdma2000_one_xsrvcc_info, cdma2000_one_xrand, cdma2000_pdu, eutran_round_trip_delay_estimation_info, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); cdma2000_rat_type_e& cdma2000_rat_type(); unbounded_octstring& cdma2000_sector_id(); cdma2000_ho_required_ind_e& cdma2000_ho_required_ind(); cdma2000_one_xsrvcc_info_s& cdma2000_one_xsrvcc_info(); unbounded_octstring& cdma2000_one_xrand(); unbounded_octstring& cdma2000_pdu(); uint16_t& eutran_round_trip_delay_estimation_info(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const cdma2000_rat_type_e& cdma2000_rat_type() const; const unbounded_octstring& cdma2000_sector_id() const; const cdma2000_ho_required_ind_e& cdma2000_ho_required_ind() const; const cdma2000_one_xsrvcc_info_s& cdma2000_one_xsrvcc_info() const; const unbounded_octstring& cdma2000_one_xrand() const; const unbounded_octstring& cdma2000_pdu() const; const uint16_t& eutran_round_trip_delay_estimation_info() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UplinkUEAssociatedLPPaTransport-IEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct ul_ueassociated_lp_pa_transport_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { mme_ue_s1ap_id, enb_ue_s1ap_id, routing_id, lp_pa_pdu, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_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 uint64_t& mme_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id(); uint16_t& routing_id(); unbounded_octstring& lp_pa_pdu(); const uint64_t& mme_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const; const uint16_t& routing_id() const; const unbounded_octstring& lp_pa_pdu() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // WriteReplaceWarningRequestIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct write_replace_warning_request_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { msg_id, serial_num, warning_area_list, repeat_period, extended_repeat_period, numof_broadcast_request, warning_type, warning_security_info, data_coding_scheme, warning_msg_contents, concurrent_warning_msg_ind, warning_area_coordinates, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<16, false, true>& msg_id(); fixed_bitstring<16, false, true>& serial_num(); warning_area_list_c& warning_area_list(); uint16_t& repeat_period(); uint32_t& extended_repeat_period(); uint32_t& numof_broadcast_request(); fixed_octstring<2, true>& warning_type(); fixed_octstring<50, true>& warning_security_info(); fixed_bitstring<8, false, true>& data_coding_scheme(); bounded_octstring<1, 9600, true>& warning_msg_contents(); concurrent_warning_msg_ind_e& concurrent_warning_msg_ind(); bounded_octstring<1, 1024, true>& warning_area_coordinates(); const fixed_bitstring<16, false, true>& msg_id() const; const fixed_bitstring<16, false, true>& serial_num() const; const warning_area_list_c& warning_area_list() const; const uint16_t& repeat_period() const; const uint32_t& extended_repeat_period() const; const uint32_t& numof_broadcast_request() const; const fixed_octstring<2, true>& warning_type() const; const fixed_octstring<50, true>& warning_security_info() const; const fixed_bitstring<8, false, true>& data_coding_scheme() const; const bounded_octstring<1, 9600, true>& warning_msg_contents() const; const concurrent_warning_msg_ind_e& concurrent_warning_msg_ind() const; const bounded_octstring<1, 1024, true>& warning_area_coordinates() const; private: types type_; choice_buffer_t, bounded_octstring<1, 9600, true>, fixed_bitstring<16, false, true>, fixed_octstring<2, true>, fixed_octstring<50, true>, warning_area_list_c> c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // WriteReplaceWarningResponseIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES struct write_replace_warning_resp_ies_o { // Value ::= OPEN TYPE struct value_c { struct types_opts { enum options { msg_id, serial_num, broadcast_completed_area_list, crit_diagnostics, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods value_c() = default; value_c(const value_c& other); value_c& operator=(const value_c& other); ~value_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<16, false, true>& msg_id(); fixed_bitstring<16, false, true>& serial_num(); broadcast_completed_area_list_c& broadcast_completed_area_list(); crit_diagnostics_s& crit_diagnostics(); const fixed_bitstring<16, false, true>& msg_id() const; const fixed_bitstring<16, false, true>& serial_num() const; const broadcast_completed_area_list_c& broadcast_completed_area_list() const; const crit_diagnostics_s& crit_diagnostics() const; private: types type_; choice_buffer_t > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static value_c get_value(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct kill_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool warning_area_list_present = false; bool kill_all_warning_msgs_present = false; ie_field_s > msg_id; ie_field_s > serial_num; ie_field_s warning_area_list; ie_field_s kill_all_warning_msgs; // sequence methods kill_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // KillRequest ::= SEQUENCE using kill_request_s = elementary_procedure_option; struct kill_resp_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool broadcast_cancelled_area_list_present = false; bool crit_diagnostics_present = false; ie_field_s > msg_id; ie_field_s > serial_num; ie_field_s broadcast_cancelled_area_list; ie_field_s crit_diagnostics; // sequence methods kill_resp_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // KillResponse ::= SEQUENCE using kill_resp_s = elementary_procedure_option; struct location_report_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ps_cell_info_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s eutran_cgi; ie_field_s tai; ie_field_s request_type; ie_field_s ps_cell_info; // sequence methods location_report_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // LocationReport ::= SEQUENCE using location_report_s = elementary_procedure_option; struct location_report_ctrl_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s request_type; // sequence methods location_report_ctrl_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // LocationReportingControl ::= SEQUENCE using location_report_ctrl_s = elementary_procedure_option; struct location_report_fail_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s cause; // sequence methods location_report_fail_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // LocationReportingFailureIndication ::= SEQUENCE using location_report_fail_ind_s = elementary_procedure_option; struct mmecp_relocation_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; // sequence methods mmecp_relocation_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // MMECPRelocationIndication ::= SEQUENCE using mmecp_relocation_ind_s = elementary_procedure_option; struct mme_cfg_transfer_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool son_cfg_transfer_mct_present = false; bool en_dcson_cfg_transfer_mct_present = false; ie_field_s son_cfg_transfer_mct; ie_field_s en_dcson_cfg_transfer_mct; // sequence methods mme_cfg_transfer_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // MMEConfigurationTransfer ::= SEQUENCE using mme_cfg_transfer_s = elementary_procedure_option; struct mme_cfg_upd_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool mm_ename_present = false; bool served_gummeis_present = false; bool relative_mme_capacity_present = false; bool served_dcns_present = false; ie_field_s > mm_ename; ie_field_s > served_gummeis; ie_field_s > relative_mme_capacity; ie_field_s > served_dcns; // sequence methods mme_cfg_upd_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // MMEConfigurationUpdate ::= SEQUENCE using mme_cfg_upd_s = elementary_procedure_option; // MMEConfigurationUpdateAcknowledge ::= SEQUENCE using mme_cfg_upd_ack_s = elementary_procedure_option >; struct mme_cfg_upd_fail_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool time_to_wait_present = false; bool crit_diagnostics_present = false; ie_field_s cause; ie_field_s time_to_wait; ie_field_s crit_diagnostics; // sequence methods mme_cfg_upd_fail_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // MMEConfigurationUpdateFailure ::= SEQUENCE using mme_cfg_upd_fail_s = elementary_procedure_option; // MMEDirectInformationTransfer ::= SEQUENCE using mme_direct_info_transfer_s = elementary_procedure_option >; struct mme_status_transfer_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s enb_status_transfer_transparent_container; // sequence methods mme_status_transfer_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // MMEStatusTransfer ::= SEQUENCE using mme_status_transfer_s = elementary_procedure_option; struct nas_delivery_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; // sequence methods nas_delivery_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // NASDeliveryIndication ::= SEQUENCE using nas_delivery_ind_s = elementary_procedure_option; struct nas_non_delivery_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > nas_pdu; ie_field_s cause; // sequence methods nas_non_delivery_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // NASNonDeliveryIndication ::= SEQUENCE using nas_non_delivery_ind_s = elementary_procedure_option; struct overload_start_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool gummei_list_present = false; bool traffic_load_reduction_ind_present = false; ie_field_s overload_resp; ie_field_s > gummei_list; ie_field_s > traffic_load_reduction_ind; // sequence methods overload_start_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // OverloadStart ::= SEQUENCE using overload_start_s = elementary_procedure_option; // OverloadStop ::= SEQUENCE using overload_stop_s = elementary_procedure_option >; struct pws_fail_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > pw_sfailed_ecgi_list; ie_field_s global_enb_id; // sequence methods pws_fail_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // PWSFailureIndication ::= SEQUENCE using pws_fail_ind_s = elementary_procedure_option; struct pws_restart_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool emergency_area_id_list_for_restart_present = false; ie_field_s > ecgi_list_for_restart; ie_field_s global_enb_id; ie_field_s > tai_list_for_restart; ie_field_s, 1, 256, true> > emergency_area_id_list_for_restart; // sequence methods pws_restart_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // PWSRestartIndication ::= SEQUENCE using pws_restart_ind_s = elementary_procedure_option; struct paging_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool paging_drx_present = false; bool csg_id_list_present = false; bool paging_prio_present = false; bool ue_radio_cap_for_paging_present = false; bool assist_data_for_paging_present = false; bool paging_e_drx_info_present = false; bool extended_ue_id_idx_value_present = false; bool nb_io_t_paging_e_drx_info_present = false; bool nb_io_t_ue_id_idx_value_present = false; bool enhanced_coverage_restricted_present = false; bool ce_mode_brestricted_present = false; ie_field_s > ue_id_idx_value; ie_field_s ue_paging_id; ie_field_s paging_drx; ie_field_s cn_domain; ie_field_s, 1, 256, true> > tai_list; ie_field_s > csg_id_list; ie_field_s paging_prio; ie_field_s > ue_radio_cap_for_paging; ie_field_s assist_data_for_paging; ie_field_s paging_e_drx_info; ie_field_s > extended_ue_id_idx_value; ie_field_s nb_io_t_paging_e_drx_info; ie_field_s > nb_io_t_ue_id_idx_value; ie_field_s enhanced_coverage_restricted; ie_field_s ce_mode_brestricted; // sequence methods paging_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // Paging ::= SEQUENCE using paging_s = elementary_procedure_option; struct path_switch_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool csg_id_present = false; bool cell_access_mode_present = false; bool source_mme_gummei_present = false; bool csg_membership_status_present = false; bool tunnel_info_for_bbf_present = false; bool lhn_id_present = false; bool rrc_resume_cause_present = false; bool nrue_security_cap_present = false; bool ps_cell_info_present = false; ie_field_s > enb_ue_s1ap_id; ie_field_s > erab_to_be_switched_dl_list; ie_field_s > source_mme_ue_s1ap_id; ie_field_s eutran_cgi; ie_field_s tai; ie_field_s ue_security_cap; ie_field_s > csg_id; ie_field_s cell_access_mode; ie_field_s source_mme_gummei; ie_field_s csg_membership_status; ie_field_s tunnel_info_for_bbf; ie_field_s > lhn_id; ie_field_s rrc_resume_cause; ie_field_s nrue_security_cap; ie_field_s ps_cell_info; // sequence methods path_switch_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // PathSwitchRequest ::= SEQUENCE using path_switch_request_s = elementary_procedure_option; struct path_switch_request_ack_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ueaggregate_maximum_bitrate_present = false; bool erab_to_be_switched_ul_list_present = false; bool erab_to_be_released_list_present = false; bool crit_diagnostics_present = false; bool mme_ue_s1ap_id_minus2_present = false; bool csg_membership_status_present = false; bool pro_se_authorized_present = false; bool ueuser_plane_cio_tsupport_ind_present = false; bool v2xservices_authorized_present = false; bool ue_sidelink_aggregate_maximum_bitrate_present = false; bool enhanced_coverage_restricted_present = false; bool nrue_security_cap_present = false; bool ce_mode_brestricted_present = false; bool aerial_uesubscription_info_present = false; bool pending_data_ind_present = false; bool subscription_based_ue_differentiation_info_present = false; bool ho_restrict_list_present = false; bool add_rrm_prio_idx_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s ueaggregate_maximum_bitrate; ie_field_s > erab_to_be_switched_ul_list; ie_field_s, 1, 256, true> > erab_to_be_released_list; ie_field_s security_context; ie_field_s crit_diagnostics; ie_field_s > mme_ue_s1ap_id_minus2; ie_field_s csg_membership_status; ie_field_s pro_se_authorized; ie_field_s ueuser_plane_cio_tsupport_ind; ie_field_s v2xservices_authorized; ie_field_s ue_sidelink_aggregate_maximum_bitrate; ie_field_s enhanced_coverage_restricted; ie_field_s nrue_security_cap; ie_field_s ce_mode_brestricted; ie_field_s aerial_uesubscription_info; ie_field_s pending_data_ind; ie_field_s subscription_based_ue_differentiation_info; ie_field_s ho_restrict_list; ie_field_s > add_rrm_prio_idx; // sequence methods path_switch_request_ack_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // PathSwitchRequestAcknowledge ::= SEQUENCE using path_switch_request_ack_s = elementary_procedure_option; struct path_switch_request_fail_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s cause; ie_field_s crit_diagnostics; // sequence methods path_switch_request_fail_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // PathSwitchRequestFailure ::= SEQUENCE using path_switch_request_fail_s = elementary_procedure_option; template struct private_ie_container_item_s { private_ie_id_c id; crit_e crit; valueT_ value; // sequence methods private_ie_container_item_s(private_ie_id_c id_, crit_e crit_); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; struct private_ie_container_empty_l { template using ie_field_s = private_ie_container_item_s; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; using private_msg_ies_container = private_ie_container_empty_l; // PrivateMessage ::= SEQUENCE struct private_msg_s { bool ext = false; private_msg_ies_container private_ies; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; struct reroute_nas_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool mme_ue_s1ap_id_present = false; bool add_guti_present = false; bool ue_usage_type_present = false; ie_field_s > enb_ue_s1ap_id; ie_field_s > mme_ue_s1ap_id; ie_field_s > s1_msg; ie_field_s > mme_group_id; ie_field_s add_guti; ie_field_s > ue_usage_type; // sequence methods reroute_nas_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RerouteNASRequest ::= SEQUENCE using reroute_nas_request_s = elementary_procedure_option; struct reset_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s cause; ie_field_s reset_type; // sequence methods reset_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // Reset ::= SEQUENCE using reset_s = elementary_procedure_option; struct reset_ack_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ue_associated_lc_s1_conn_list_res_ack_present = false; bool crit_diagnostics_present = false; ie_field_s, 1, 256, true> > ue_associated_lc_s1_conn_list_res_ack; ie_field_s crit_diagnostics; // sequence methods reset_ack_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ResetAcknowledge ::= SEQUENCE using reset_ack_s = elementary_procedure_option; // RetrieveUEInformation ::= SEQUENCE using retrieve_ue_info_s = elementary_procedure_option >; struct s1_setup_fail_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool time_to_wait_present = false; bool crit_diagnostics_present = false; ie_field_s cause; ie_field_s time_to_wait; ie_field_s crit_diagnostics; // sequence methods s1_setup_fail_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // S1SetupFailure ::= SEQUENCE using s1_setup_fail_s = elementary_procedure_option; struct s1_setup_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool enbname_present = false; bool csg_id_list_present = false; bool ue_retention_info_present = false; bool nb_io_t_default_paging_drx_present = false; bool connectedeng_nb_list_present = false; ie_field_s global_enb_id; ie_field_s > enbname; ie_field_s > supported_tas; ie_field_s default_paging_drx; ie_field_s > csg_id_list; ie_field_s ue_retention_info; ie_field_s nb_io_t_default_paging_drx; ie_field_s > connectedeng_nb_list; // sequence methods s1_setup_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // S1SetupRequest ::= SEQUENCE using s1_setup_request_s = elementary_procedure_option; struct s1_setup_resp_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool mm_ename_present = false; bool mme_relay_support_ind_present = false; bool crit_diagnostics_present = false; bool ue_retention_info_present = false; bool served_dcns_present = false; ie_field_s > mm_ename; ie_field_s > served_gummeis; ie_field_s > relative_mme_capacity; ie_field_s mme_relay_support_ind; ie_field_s crit_diagnostics; ie_field_s ue_retention_info; ie_field_s > served_dcns; // sequence methods s1_setup_resp_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // S1SetupResponse ::= SEQUENCE using s1_setup_resp_s = elementary_procedure_option; struct secondary_rat_data_usage_report_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ho_flag_present = false; bool user_location_info_present = false; bool time_since_secondary_node_release_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s, 1, 256, true> > secondary_rat_data_usage_report_list; ie_field_s ho_flag; ie_field_s user_location_info; ie_field_s > time_since_secondary_node_release; // sequence methods secondary_rat_data_usage_report_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // SecondaryRATDataUsageReport ::= SEQUENCE using secondary_rat_data_usage_report_s = elementary_procedure_option; struct trace_fail_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > e_utran_trace_id; ie_field_s cause; // sequence methods trace_fail_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // TraceFailureIndication ::= SEQUENCE using trace_fail_ind_s = elementary_procedure_option; struct trace_start_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s trace_activation; // sequence methods trace_start_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // TraceStart ::= SEQUENCE using trace_start_s = elementary_procedure_option; struct ue_cap_info_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ue_radio_cap_for_paging_present = false; bool ue_application_layer_meas_cap_present = false; bool lte_m_ind_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > ue_radio_cap; ie_field_s > ue_radio_cap_for_paging; ie_field_s > ue_application_layer_meas_cap; ie_field_s lte_m_ind; // sequence methods ue_cap_info_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UECapabilityInfoIndication ::= SEQUENCE using ue_cap_info_ind_s = elementary_procedure_option; struct ue_context_mod_confirm_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool csg_membership_status_present = false; bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s csg_membership_status; ie_field_s crit_diagnostics; // sequence methods ue_context_mod_confirm_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextModificationConfirm ::= SEQUENCE using ue_context_mod_confirm_s = elementary_procedure_option; struct ue_context_mod_fail_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s cause; ie_field_s crit_diagnostics; // sequence methods ue_context_mod_fail_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextModificationFailure ::= SEQUENCE using ue_context_mod_fail_s = elementary_procedure_option; struct ue_context_mod_ind_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool csg_membership_info_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s csg_membership_info; // sequence methods ue_context_mod_ind_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextModificationIndication ::= SEQUENCE using ue_context_mod_ind_s = elementary_procedure_option; struct ue_context_mod_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool security_key_present = false; bool subscriber_profile_idfor_rfp_present = false; bool ueaggregate_maximum_bitrate_present = false; bool cs_fallback_ind_present = false; bool ue_security_cap_present = false; bool csg_membership_status_present = false; bool registered_lai_present = false; bool add_cs_fallback_ind_present = false; bool pro_se_authorized_present = false; bool srvcc_operation_possible_present = false; bool srvcc_operation_not_possible_present = false; bool v2xservices_authorized_present = false; bool ue_sidelink_aggregate_maximum_bitrate_present = false; bool nrue_security_cap_present = false; bool aerial_uesubscription_info_present = false; bool add_rrm_prio_idx_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > security_key; ie_field_s > subscriber_profile_idfor_rfp; ie_field_s ueaggregate_maximum_bitrate; ie_field_s cs_fallback_ind; ie_field_s ue_security_cap; ie_field_s csg_membership_status; ie_field_s registered_lai; ie_field_s add_cs_fallback_ind; ie_field_s pro_se_authorized; ie_field_s srvcc_operation_possible; ie_field_s srvcc_operation_not_possible; ie_field_s v2xservices_authorized; ie_field_s ue_sidelink_aggregate_maximum_bitrate; ie_field_s nrue_security_cap; ie_field_s aerial_uesubscription_info; ie_field_s > add_rrm_prio_idx; // sequence methods ue_context_mod_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextModificationRequest ::= SEQUENCE using ue_context_mod_request_s = elementary_procedure_option; struct ue_context_mod_resp_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s crit_diagnostics; // sequence methods ue_context_mod_resp_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextModificationResponse ::= SEQUENCE using ue_context_mod_resp_s = elementary_procedure_option; struct ue_context_release_cmd_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s ue_s1ap_ids; ie_field_s cause; // sequence methods ue_context_release_cmd_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextReleaseCommand ::= SEQUENCE using ue_context_release_cmd_s = elementary_procedure_option; struct ue_context_release_complete_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool crit_diagnostics_present = false; bool user_location_info_present = false; bool info_on_recommended_cells_and_enbs_for_paging_present = false; bool cell_id_and_ce_level_for_ce_capable_ues_present = false; bool secondary_rat_data_usage_report_list_present = false; bool time_since_secondary_node_release_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s crit_diagnostics; ie_field_s user_location_info; ie_field_s info_on_recommended_cells_and_enbs_for_paging; ie_field_s cell_id_and_ce_level_for_ce_capable_ues; ie_field_s, 1, 256, true> > secondary_rat_data_usage_report_list; ie_field_s > time_since_secondary_node_release; // sequence methods ue_context_release_complete_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextReleaseComplete ::= SEQUENCE using ue_context_release_complete_s = elementary_procedure_option; struct ue_context_release_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool gw_context_release_ind_present = false; bool secondary_rat_data_usage_report_list_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s cause; ie_field_s gw_context_release_ind; ie_field_s, 1, 256, true> > secondary_rat_data_usage_report_list; // sequence methods ue_context_release_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextReleaseRequest ::= SEQUENCE using ue_context_release_request_s = elementary_procedure_option; struct ue_context_resume_fail_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s cause; ie_field_s crit_diagnostics; // sequence methods ue_context_resume_fail_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextResumeFailure ::= SEQUENCE using ue_context_resume_fail_s = elementary_procedure_option; struct ue_context_resume_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool erab_failed_to_resume_list_resume_req_present = false; bool rrc_resume_cause_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > erab_failed_to_resume_list_resume_req; ie_field_s rrc_resume_cause; // sequence methods ue_context_resume_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextResumeRequest ::= SEQUENCE using ue_context_resume_request_s = elementary_procedure_option; struct ue_context_resume_resp_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool erab_failed_to_resume_list_resume_res_present = false; bool crit_diagnostics_present = false; bool security_context_present = false; bool pending_data_ind_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > erab_failed_to_resume_list_resume_res; ie_field_s crit_diagnostics; ie_field_s security_context; ie_field_s pending_data_ind; // sequence methods ue_context_resume_resp_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextResumeResponse ::= SEQUENCE using ue_context_resume_resp_s = elementary_procedure_option; struct ue_context_suspend_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool info_on_recommended_cells_and_enbs_for_paging_present = false; bool cell_id_and_ce_level_for_ce_capable_ues_present = false; bool secondary_rat_data_usage_report_list_present = false; bool user_location_info_present = false; bool time_since_secondary_node_release_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s info_on_recommended_cells_and_enbs_for_paging; ie_field_s cell_id_and_ce_level_for_ce_capable_ues; ie_field_s, 1, 256, true> > secondary_rat_data_usage_report_list; ie_field_s user_location_info; ie_field_s > time_since_secondary_node_release; // sequence methods ue_context_suspend_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextSuspendRequest ::= SEQUENCE using ue_context_suspend_request_s = elementary_procedure_option; struct ue_context_suspend_resp_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool crit_diagnostics_present = false; bool security_context_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s crit_diagnostics; ie_field_s security_context; // sequence methods ue_context_suspend_resp_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEContextSuspendResponse ::= SEQUENCE using ue_context_suspend_resp_s = elementary_procedure_option; struct ue_info_transfer_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ue_level_qos_params_present = false; bool ue_radio_cap_present = false; bool subscription_based_ue_differentiation_info_present = false; bool pending_data_ind_present = false; ie_field_s s_tmsi; ie_field_s ue_level_qos_params; ie_field_s > ue_radio_cap; ie_field_s subscription_based_ue_differentiation_info; ie_field_s pending_data_ind; // sequence methods ue_info_transfer_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationTransfer ::= SEQUENCE using ue_info_transfer_s = elementary_procedure_option; struct ue_radio_cap_match_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool ue_radio_cap_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > ue_radio_cap; // sequence methods ue_radio_cap_match_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UERadioCapabilityMatchRequest ::= SEQUENCE using ue_radio_cap_match_request_s = elementary_procedure_option; struct ue_radio_cap_match_resp_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool crit_diagnostics_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s voice_support_match_ind; ie_field_s crit_diagnostics; // sequence methods ue_radio_cap_match_resp_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UERadioCapabilityMatchResponse ::= SEQUENCE using ue_radio_cap_match_resp_s = elementary_procedure_option; struct ul_nas_transport_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool gw_transport_layer_address_present = false; bool sipto_l_gw_transport_layer_address_present = false; bool lhn_id_present = false; bool ps_cell_info_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > nas_pdu; ie_field_s eutran_cgi; ie_field_s tai; ie_field_s > gw_transport_layer_address; ie_field_s > sipto_l_gw_transport_layer_address; ie_field_s > lhn_id; ie_field_s ps_cell_info; // sequence methods ul_nas_transport_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UplinkNASTransport ::= SEQUENCE using ul_nas_transport_s = elementary_procedure_option; struct ul_non_ueassociated_lp_pa_transport_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > routing_id; ie_field_s > lp_pa_pdu; // sequence methods ul_non_ueassociated_lp_pa_transport_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UplinkNonUEAssociatedLPPaTransport ::= SEQUENCE using ul_non_ueassociated_lp_pa_transport_s = elementary_procedure_option; struct ul_s1cdma2000tunnelling_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool cdma2000_ho_required_ind_present = false; bool cdma2000_one_xsrvcc_info_present = false; bool cdma2000_one_xrand_present = false; bool eutran_round_trip_delay_estimation_info_present = false; ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s cdma2000_rat_type; ie_field_s > cdma2000_sector_id; ie_field_s cdma2000_ho_required_ind; ie_field_s cdma2000_one_xsrvcc_info; ie_field_s > cdma2000_one_xrand; ie_field_s > cdma2000_pdu; ie_field_s > eutran_round_trip_delay_estimation_info; // sequence methods ul_s1cdma2000tunnelling_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UplinkS1cdma2000tunnelling ::= SEQUENCE using ul_s1cdma2000tunnelling_s = elementary_procedure_option; struct ul_ueassociated_lp_pa_transport_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables ie_field_s > mme_ue_s1ap_id; ie_field_s > enb_ue_s1ap_id; ie_field_s > routing_id; ie_field_s > lp_pa_pdu; // sequence methods ul_ueassociated_lp_pa_transport_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UplinkUEAssociatedLPPaTransport ::= SEQUENCE using ul_ueassociated_lp_pa_transport_s = elementary_procedure_option; struct write_replace_warning_request_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool warning_area_list_present = false; bool extended_repeat_period_present = false; bool warning_type_present = false; bool warning_security_info_present = false; bool data_coding_scheme_present = false; bool warning_msg_contents_present = false; bool concurrent_warning_msg_ind_present = false; bool warning_area_coordinates_present = false; ie_field_s > msg_id; ie_field_s > serial_num; ie_field_s warning_area_list; ie_field_s > repeat_period; ie_field_s > extended_repeat_period; ie_field_s > numof_broadcast_request; ie_field_s > warning_type; ie_field_s > warning_security_info; ie_field_s > data_coding_scheme; ie_field_s > warning_msg_contents; ie_field_s concurrent_warning_msg_ind; ie_field_s > warning_area_coordinates; // sequence methods write_replace_warning_request_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // WriteReplaceWarningRequest ::= SEQUENCE using write_replace_warning_request_s = elementary_procedure_option; struct write_replace_warning_resp_ies_container { template using ie_field_s = protocol_ie_container_item_s; // member variables bool broadcast_completed_area_list_present = false; bool crit_diagnostics_present = false; ie_field_s > msg_id; ie_field_s > serial_num; ie_field_s broadcast_completed_area_list; ie_field_s crit_diagnostics; // sequence methods write_replace_warning_resp_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // WriteReplaceWarningResponse ::= SEQUENCE using write_replace_warning_resp_s = elementary_procedure_option; // S1AP-ELEMENTARY-PROCEDURES ::= OBJECT SET OF S1AP-ELEMENTARY-PROCEDURE struct s1ap_elem_procs_o { // InitiatingMessage ::= OPEN TYPE struct init_msg_c { struct types_opts { enum options { ho_required, ho_request, path_switch_request, erab_setup_request, erab_modify_request, erab_release_cmd, init_context_setup_request, ho_cancel, kill_request, reset, s1_setup_request, ue_context_mod_request, ue_context_release_cmd, enb_cfg_upd, mme_cfg_upd, write_replace_warning_request, ho_notify, erab_release_ind, paging, dl_nas_transport, init_ue_msg, ul_nas_transport, error_ind, nas_non_delivery_ind, ue_context_release_request, dl_s1cdma2000tunnelling, ul_s1cdma2000tunnelling, ue_cap_info_ind, enb_status_transfer, mme_status_transfer, deactiv_trace, trace_start, trace_fail_ind, cell_traffic_trace, location_report_ctrl, location_report_fail_ind, location_report, overload_start, overload_stop, enb_direct_info_transfer, mme_direct_info_transfer, enb_cfg_transfer, mme_cfg_transfer, private_msg, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods init_msg_c() = default; init_msg_c(const init_msg_c& other); init_msg_c& operator=(const init_msg_c& other); ~init_msg_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 ho_required_s& ho_required(); ho_request_s& ho_request(); path_switch_request_s& path_switch_request(); erab_setup_request_s& erab_setup_request(); erab_modify_request_s& erab_modify_request(); erab_release_cmd_s& erab_release_cmd(); init_context_setup_request_s& init_context_setup_request(); ho_cancel_s& ho_cancel(); kill_request_s& kill_request(); reset_s& reset(); s1_setup_request_s& s1_setup_request(); ue_context_mod_request_s& ue_context_mod_request(); ue_context_release_cmd_s& ue_context_release_cmd(); enb_cfg_upd_s& enb_cfg_upd(); mme_cfg_upd_s& mme_cfg_upd(); write_replace_warning_request_s& write_replace_warning_request(); ho_notify_s& ho_notify(); erab_release_ind_s& erab_release_ind(); paging_s& paging(); dl_nas_transport_s& dl_nas_transport(); init_ue_msg_s& init_ue_msg(); ul_nas_transport_s& ul_nas_transport(); error_ind_s& error_ind(); nas_non_delivery_ind_s& nas_non_delivery_ind(); ue_context_release_request_s& ue_context_release_request(); dl_s1cdma2000tunnelling_s& dl_s1cdma2000tunnelling(); ul_s1cdma2000tunnelling_s& ul_s1cdma2000tunnelling(); ue_cap_info_ind_s& ue_cap_info_ind(); enb_status_transfer_s& enb_status_transfer(); mme_status_transfer_s& mme_status_transfer(); deactiv_trace_s& deactiv_trace(); trace_start_s& trace_start(); trace_fail_ind_s& trace_fail_ind(); cell_traffic_trace_s& cell_traffic_trace(); location_report_ctrl_s& location_report_ctrl(); location_report_fail_ind_s& location_report_fail_ind(); location_report_s& location_report(); overload_start_s& overload_start(); overload_stop_s& overload_stop(); enb_direct_info_transfer_s& enb_direct_info_transfer(); mme_direct_info_transfer_s& mme_direct_info_transfer(); enb_cfg_transfer_s& enb_cfg_transfer(); mme_cfg_transfer_s& mme_cfg_transfer(); private_msg_s& private_msg(); const ho_required_s& ho_required() const; const ho_request_s& ho_request() const; const path_switch_request_s& path_switch_request() const; const erab_setup_request_s& erab_setup_request() const; const erab_modify_request_s& erab_modify_request() const; const erab_release_cmd_s& erab_release_cmd() const; const init_context_setup_request_s& init_context_setup_request() const; const ho_cancel_s& ho_cancel() const; const kill_request_s& kill_request() const; const reset_s& reset() const; const s1_setup_request_s& s1_setup_request() const; const ue_context_mod_request_s& ue_context_mod_request() const; const ue_context_release_cmd_s& ue_context_release_cmd() const; const enb_cfg_upd_s& enb_cfg_upd() const; const mme_cfg_upd_s& mme_cfg_upd() const; const write_replace_warning_request_s& write_replace_warning_request() const; const ho_notify_s& ho_notify() const; const erab_release_ind_s& erab_release_ind() const; const paging_s& paging() const; const dl_nas_transport_s& dl_nas_transport() const; const init_ue_msg_s& init_ue_msg() const; const ul_nas_transport_s& ul_nas_transport() const; const error_ind_s& error_ind() const; const nas_non_delivery_ind_s& nas_non_delivery_ind() const; const ue_context_release_request_s& ue_context_release_request() const; const dl_s1cdma2000tunnelling_s& dl_s1cdma2000tunnelling() const; const ul_s1cdma2000tunnelling_s& ul_s1cdma2000tunnelling() const; const ue_cap_info_ind_s& ue_cap_info_ind() const; const enb_status_transfer_s& enb_status_transfer() const; const mme_status_transfer_s& mme_status_transfer() const; const deactiv_trace_s& deactiv_trace() const; const trace_start_s& trace_start() const; const trace_fail_ind_s& trace_fail_ind() const; const cell_traffic_trace_s& cell_traffic_trace() const; const location_report_ctrl_s& location_report_ctrl() const; const location_report_fail_ind_s& location_report_fail_ind() const; const location_report_s& location_report() const; const overload_start_s& overload_start() const; const overload_stop_s& overload_stop() const; const enb_direct_info_transfer_s& enb_direct_info_transfer() const; const mme_direct_info_transfer_s& mme_direct_info_transfer() const; const enb_cfg_transfer_s& enb_cfg_transfer() const; const mme_cfg_transfer_s& mme_cfg_transfer() const; const private_msg_s& private_msg() const; private: types type_; choice_buffer_t c; void destroy_(); }; // SuccessfulOutcome ::= OPEN TYPE struct successful_outcome_c { struct types_opts { enum options { ho_cmd, ho_request_ack, path_switch_request_ack, erab_setup_resp, erab_modify_resp, erab_release_resp, init_context_setup_resp, ho_cancel_ack, kill_resp, reset_ack, s1_setup_resp, ue_context_mod_resp, ue_context_release_complete, enb_cfg_upd_ack, mme_cfg_upd_ack, write_replace_warning_resp, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods successful_outcome_c() = default; successful_outcome_c(const successful_outcome_c& other); successful_outcome_c& operator=(const successful_outcome_c& other); ~successful_outcome_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 ho_cmd_s& ho_cmd(); ho_request_ack_s& ho_request_ack(); path_switch_request_ack_s& path_switch_request_ack(); erab_setup_resp_s& erab_setup_resp(); erab_modify_resp_s& erab_modify_resp(); erab_release_resp_s& erab_release_resp(); init_context_setup_resp_s& init_context_setup_resp(); ho_cancel_ack_s& ho_cancel_ack(); kill_resp_s& kill_resp(); reset_ack_s& reset_ack(); s1_setup_resp_s& s1_setup_resp(); ue_context_mod_resp_s& ue_context_mod_resp(); ue_context_release_complete_s& ue_context_release_complete(); enb_cfg_upd_ack_s& enb_cfg_upd_ack(); mme_cfg_upd_ack_s& mme_cfg_upd_ack(); write_replace_warning_resp_s& write_replace_warning_resp(); const ho_cmd_s& ho_cmd() const; const ho_request_ack_s& ho_request_ack() const; const path_switch_request_ack_s& path_switch_request_ack() const; const erab_setup_resp_s& erab_setup_resp() const; const erab_modify_resp_s& erab_modify_resp() const; const erab_release_resp_s& erab_release_resp() const; const init_context_setup_resp_s& init_context_setup_resp() const; const ho_cancel_ack_s& ho_cancel_ack() const; const kill_resp_s& kill_resp() const; const reset_ack_s& reset_ack() const; const s1_setup_resp_s& s1_setup_resp() const; const ue_context_mod_resp_s& ue_context_mod_resp() const; const ue_context_release_complete_s& ue_context_release_complete() const; const enb_cfg_upd_ack_s& enb_cfg_upd_ack() const; const mme_cfg_upd_ack_s& mme_cfg_upd_ack() const; const write_replace_warning_resp_s& write_replace_warning_resp() const; private: types type_; choice_buffer_t c; void destroy_(); }; // UnsuccessfulOutcome ::= OPEN TYPE struct unsuccessful_outcome_c { struct types_opts { enum options { ho_prep_fail, ho_fail, path_switch_request_fail, init_context_setup_fail, s1_setup_fail, ue_context_mod_fail, enb_cfg_upd_fail, mme_cfg_upd_fail, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods unsuccessful_outcome_c() = default; unsuccessful_outcome_c(const unsuccessful_outcome_c& other); unsuccessful_outcome_c& operator=(const unsuccessful_outcome_c& other); ~unsuccessful_outcome_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 ho_prep_fail_s& ho_prep_fail(); ho_fail_s& ho_fail(); path_switch_request_fail_s& path_switch_request_fail(); init_context_setup_fail_s& init_context_setup_fail(); s1_setup_fail_s& s1_setup_fail(); ue_context_mod_fail_s& ue_context_mod_fail(); enb_cfg_upd_fail_s& enb_cfg_upd_fail(); mme_cfg_upd_fail_s& mme_cfg_upd_fail(); const ho_prep_fail_s& ho_prep_fail() const; const ho_fail_s& ho_fail() const; const path_switch_request_fail_s& path_switch_request_fail() const; const init_context_setup_fail_s& init_context_setup_fail() const; const s1_setup_fail_s& s1_setup_fail() const; const ue_context_mod_fail_s& ue_context_mod_fail() const; const enb_cfg_upd_fail_s& enb_cfg_upd_fail() const; const mme_cfg_upd_fail_s& mme_cfg_upd_fail() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint16_t idx_to_proc_code(uint32_t idx); static bool is_proc_code_valid(const uint16_t& proc_code); static init_msg_c get_init_msg(const uint16_t& proc_code); static successful_outcome_c get_successful_outcome(const uint16_t& proc_code); static unsuccessful_outcome_c get_unsuccessful_outcome(const uint16_t& proc_code); static crit_e get_crit(const uint16_t& proc_code); }; // InitiatingMessage ::= SEQUENCE{{S1AP-ELEMENTARY-PROCEDURE}} struct init_msg_s { uint16_t proc_code = 0; crit_e crit; s1ap_elem_procs_o::init_msg_c value; SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; bool load_info_obj(const uint16_t& proc_code_); }; // LastVisitedEUTRANCellInformation-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct last_visited_eutran_cell_info_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { time_ue_stayed_in_cell_enhanced_granularity, ho_cause, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_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 uint16_t& time_ue_stayed_in_cell_enhanced_granularity(); cause_c& ho_cause(); const uint16_t& time_ue_stayed_in_cell_enhanced_granularity() const; const cause_c& ho_cause() const; private: types type_; choice_buffer_t c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; struct last_visited_eutran_cell_info_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool time_ue_stayed_in_cell_enhanced_granularity_present = false; bool ho_cause_present = false; ie_field_s > time_ue_stayed_in_cell_enhanced_granularity; ie_field_s ho_cause; // sequence methods last_visited_eutran_cell_info_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // LastVisitedEUTRANCellInformation ::= SEQUENCE struct last_visited_eutran_cell_info_s { bool ext = false; bool ie_exts_present = false; eutran_cgi_s global_cell_id; cell_type_s cell_type; uint16_t time_ue_stayed_in_cell = 0; last_visited_eutran_cell_info_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // LastVisitedGERANCellInformation ::= CHOICE struct last_visited_geran_cell_info_c { struct types_opts { enum options { undefined, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::undefined; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // LastVisitedCell-Item ::= CHOICE struct last_visited_cell_item_c { struct types_opts { enum options { e_utran_cell, utran_cell, geran_cell, /*...*/ ng_ran_cell, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods last_visited_cell_item_c() = default; last_visited_cell_item_c(const last_visited_cell_item_c& other); last_visited_cell_item_c& operator=(const last_visited_cell_item_c& other); ~last_visited_cell_item_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 last_visited_eutran_cell_info_s& e_utran_cell() { assert_choice_type(types::e_utran_cell, type_, "LastVisitedCell-Item"); return c.get(); } unbounded_octstring& utran_cell() { assert_choice_type(types::utran_cell, type_, "LastVisitedCell-Item"); return c.get >(); } last_visited_geran_cell_info_c& geran_cell() { assert_choice_type(types::geran_cell, type_, "LastVisitedCell-Item"); return c.get(); } unbounded_octstring& ng_ran_cell() { assert_choice_type(types::ng_ran_cell, type_, "LastVisitedCell-Item"); return c.get >(); } const last_visited_eutran_cell_info_s& e_utran_cell() const { assert_choice_type(types::e_utran_cell, type_, "LastVisitedCell-Item"); return c.get(); } const unbounded_octstring& utran_cell() const { assert_choice_type(types::utran_cell, type_, "LastVisitedCell-Item"); return c.get >(); } const last_visited_geran_cell_info_c& geran_cell() const { assert_choice_type(types::geran_cell, type_, "LastVisitedCell-Item"); return c.get(); } const unbounded_octstring& ng_ran_cell() const { assert_choice_type(types::ng_ran_cell, type_, "LastVisitedCell-Item"); return c.get >(); } last_visited_eutran_cell_info_s& set_e_utran_cell(); unbounded_octstring& set_utran_cell(); last_visited_geran_cell_info_c& set_geran_cell(); unbounded_octstring& set_ng_ran_cell(); private: types type_; choice_buffer_t > c; void destroy_(); }; // RequestedCellList ::= SEQUENCE (SIZE (1..128)) OF IRAT-Cell-ID using requested_cell_list_l = dyn_array; // MultiCellLoadReportingRequest ::= SEQUENCE struct multi_cell_load_report_request_s { bool ext = false; requested_cell_list_l requested_cell_list; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // MultiCellLoadReportingResponse-Item ::= CHOICE struct multi_cell_load_report_resp_item_c { struct types_opts { enum options { eutran_resp, utran_resp, geran_resp, /*...*/ ehrpd, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods multi_cell_load_report_resp_item_c() = default; multi_cell_load_report_resp_item_c(const multi_cell_load_report_resp_item_c& other); multi_cell_load_report_resp_item_c& operator=(const multi_cell_load_report_resp_item_c& other); ~multi_cell_load_report_resp_item_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 eutran_resp_s& eutran_resp() { assert_choice_type(types::eutran_resp, type_, "MultiCellLoadReportingResponse-Item"); return c.get(); } unbounded_octstring& utran_resp() { assert_choice_type(types::utran_resp, type_, "MultiCellLoadReportingResponse-Item"); return c.get >(); } unbounded_octstring& geran_resp() { assert_choice_type(types::geran_resp, type_, "MultiCellLoadReportingResponse-Item"); return c.get >(); } ehrpd_multi_sector_load_report_resp_item_s& ehrpd() { assert_choice_type(types::ehrpd, type_, "MultiCellLoadReportingResponse-Item"); return c.get(); } const eutran_resp_s& eutran_resp() const { assert_choice_type(types::eutran_resp, type_, "MultiCellLoadReportingResponse-Item"); return c.get(); } const unbounded_octstring& utran_resp() const { assert_choice_type(types::utran_resp, type_, "MultiCellLoadReportingResponse-Item"); return c.get >(); } const unbounded_octstring& geran_resp() const { assert_choice_type(types::geran_resp, type_, "MultiCellLoadReportingResponse-Item"); return c.get >(); } const ehrpd_multi_sector_load_report_resp_item_s& ehrpd() const { assert_choice_type(types::ehrpd, type_, "MultiCellLoadReportingResponse-Item"); return c.get(); } eutran_resp_s& set_eutran_resp(); unbounded_octstring& set_utran_resp(); unbounded_octstring& set_geran_resp(); ehrpd_multi_sector_load_report_resp_item_s& set_ehrpd(); private: types type_; choice_buffer_t > c; void destroy_(); }; // MultiCellLoadReportingResponse ::= SEQUENCE (SIZE (1..128)) OF MultiCellLoadReportingResponse-Item using multi_cell_load_report_resp_l = dyn_array; // ProtocolError-IE-ContainerList{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE (SIZE (1..256)) OF // ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} template using protocol_error_ie_container_list_l = dyn_seq_of, 1, 256, true>; // ReportingCellList-Item ::= SEQUENCE struct report_cell_list_item_s { bool ext = false; irat_cell_id_c cell_id; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ReportingCellList ::= SEQUENCE (SIZE (1..128)) OF ReportingCellList-Item using report_cell_list_l = dyn_array; // SuccessfulOutcome ::= SEQUENCE{{S1AP-ELEMENTARY-PROCEDURE}} struct successful_outcome_s { uint16_t proc_code = 0; crit_e crit; s1ap_elem_procs_o::successful_outcome_c value; SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; bool load_info_obj(const uint16_t& proc_code_); }; // UnsuccessfulOutcome ::= SEQUENCE{{S1AP-ELEMENTARY-PROCEDURE}} struct unsuccessful_outcome_s { uint16_t proc_code = 0; crit_e crit; s1ap_elem_procs_o::unsuccessful_outcome_c value; SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; bool load_info_obj(const uint16_t& proc_code_); }; // S1AP-PDU ::= CHOICE struct s1ap_pdu_c { struct types_opts { enum options { init_msg, successful_outcome, unsuccessful_outcome, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods s1ap_pdu_c() = default; s1ap_pdu_c(const s1ap_pdu_c& other); s1ap_pdu_c& operator=(const s1ap_pdu_c& other); ~s1ap_pdu_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 init_msg_s& init_msg() { assert_choice_type(types::init_msg, type_, "S1AP-PDU"); return c.get(); } successful_outcome_s& successful_outcome() { assert_choice_type(types::successful_outcome, type_, "S1AP-PDU"); return c.get(); } unsuccessful_outcome_s& unsuccessful_outcome() { assert_choice_type(types::unsuccessful_outcome, type_, "S1AP-PDU"); return c.get(); } const init_msg_s& init_msg() const { assert_choice_type(types::init_msg, type_, "S1AP-PDU"); return c.get(); } const successful_outcome_s& successful_outcome() const { assert_choice_type(types::successful_outcome, type_, "S1AP-PDU"); return c.get(); } const unsuccessful_outcome_s& unsuccessful_outcome() const { assert_choice_type(types::unsuccessful_outcome, type_, "S1AP-PDU"); return c.get(); } init_msg_s& set_init_msg(); successful_outcome_s& set_successful_outcome(); unsuccessful_outcome_s& set_unsuccessful_outcome(); private: types type_; choice_buffer_t c; void destroy_(); }; // CellActivationCause ::= ENUMERATED struct cell_activation_cause_opts { enum options { application_container_syntax_error, inconsistent_report_cell_id, unspecified, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated cell_activation_cause_e; // CellLoadReportingCause ::= ENUMERATED struct cell_load_report_cause_opts { enum options { application_container_syntax_error, inconsistent_report_cell_id, unspecified, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated cell_load_report_cause_e; // CellStateIndicationCause ::= ENUMERATED struct cell_state_ind_cause_opts { enum options { application_container_syntax_error, inconsistent_report_cell_id, unspecified, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated cell_state_ind_cause_e; // FailureEventReportingCause ::= ENUMERATED struct fail_event_report_cause_opts { enum options { application_container_syntax_error, inconsistent_report_cell_id, unspecified, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated fail_event_report_cause_e; // HOReportingCause ::= ENUMERATED struct ho_report_cause_opts { enum options { application_container_syntax_error, inconsistent_report_cell_id, unspecified, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated ho_report_cause_e; // SONtransferCause ::= CHOICE struct so_ntransfer_cause_c { struct types_opts { enum options { cell_load_report, // ... multi_cell_load_report, event_triggered_cell_load_report, horeport, eutran_cell_activation, energy_savings_ind, fail_event_report, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods so_ntransfer_cause_c() = default; so_ntransfer_cause_c(const so_ntransfer_cause_c& other); so_ntransfer_cause_c& operator=(const so_ntransfer_cause_c& other); ~so_ntransfer_cause_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters cell_load_report_cause_e& cell_load_report() { assert_choice_type(types::cell_load_report, type_, "SONtransferCause"); return c.get(); } cell_load_report_cause_e& multi_cell_load_report() { assert_choice_type(types::multi_cell_load_report, type_, "SONtransferCause"); return c.get(); } cell_load_report_cause_e& event_triggered_cell_load_report() { assert_choice_type(types::event_triggered_cell_load_report, type_, "SONtransferCause"); return c.get(); } ho_report_cause_e& horeport() { assert_choice_type(types::horeport, type_, "SONtransferCause"); return c.get(); } cell_activation_cause_e& eutran_cell_activation() { assert_choice_type(types::eutran_cell_activation, type_, "SONtransferCause"); return c.get(); } cell_state_ind_cause_e& energy_savings_ind() { assert_choice_type(types::energy_savings_ind, type_, "SONtransferCause"); return c.get(); } fail_event_report_cause_e& fail_event_report() { assert_choice_type(types::fail_event_report, type_, "SONtransferCause"); return c.get(); } const cell_load_report_cause_e& cell_load_report() const { assert_choice_type(types::cell_load_report, type_, "SONtransferCause"); return c.get(); } const cell_load_report_cause_e& multi_cell_load_report() const { assert_choice_type(types::multi_cell_load_report, type_, "SONtransferCause"); return c.get(); } const cell_load_report_cause_e& event_triggered_cell_load_report() const { assert_choice_type(types::event_triggered_cell_load_report, type_, "SONtransferCause"); return c.get(); } const ho_report_cause_e& horeport() const { assert_choice_type(types::horeport, type_, "SONtransferCause"); return c.get(); } const cell_activation_cause_e& eutran_cell_activation() const { assert_choice_type(types::eutran_cell_activation, type_, "SONtransferCause"); return c.get(); } const cell_state_ind_cause_e& energy_savings_ind() const { assert_choice_type(types::energy_savings_ind, type_, "SONtransferCause"); return c.get(); } const fail_event_report_cause_e& fail_event_report() const { assert_choice_type(types::fail_event_report, type_, "SONtransferCause"); return c.get(); } cell_load_report_cause_e& set_cell_load_report(); cell_load_report_cause_e& set_multi_cell_load_report(); cell_load_report_cause_e& set_event_triggered_cell_load_report(); ho_report_cause_e& set_horeport(); cell_activation_cause_e& set_eutran_cell_activation(); cell_state_ind_cause_e& set_energy_savings_ind(); fail_event_report_cause_e& set_fail_event_report(); private: types type_; pod_choice_buffer_t c; void destroy_(); }; // SONtransferRequestContainer ::= CHOICE struct so_ntransfer_request_container_c { struct types_opts { enum options { cell_load_report, // ... multi_cell_load_report, event_triggered_cell_load_report, horeport, eutran_cell_activation, energy_savings_ind, fail_event_report, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods so_ntransfer_request_container_c() = default; so_ntransfer_request_container_c(const so_ntransfer_request_container_c& other); so_ntransfer_request_container_c& operator=(const so_ntransfer_request_container_c& other); ~so_ntransfer_request_container_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 multi_cell_load_report_request_s& multi_cell_load_report() { assert_choice_type(types::multi_cell_load_report, type_, "SONtransferRequestContainer"); return c.get(); } event_triggered_cell_load_report_request_s& event_triggered_cell_load_report() { assert_choice_type(types::event_triggered_cell_load_report, type_, "SONtransferRequestContainer"); return c.get(); } ho_report_s& horeport() { assert_choice_type(types::horeport, type_, "SONtransferRequestContainer"); return c.get(); } cell_activation_request_s& eutran_cell_activation() { assert_choice_type(types::eutran_cell_activation, type_, "SONtransferRequestContainer"); return c.get(); } cell_state_ind_s& energy_savings_ind() { assert_choice_type(types::energy_savings_ind, type_, "SONtransferRequestContainer"); return c.get(); } fail_event_report_c& fail_event_report() { assert_choice_type(types::fail_event_report, type_, "SONtransferRequestContainer"); return c.get(); } const multi_cell_load_report_request_s& multi_cell_load_report() const { assert_choice_type(types::multi_cell_load_report, type_, "SONtransferRequestContainer"); return c.get(); } const event_triggered_cell_load_report_request_s& event_triggered_cell_load_report() const { assert_choice_type(types::event_triggered_cell_load_report, type_, "SONtransferRequestContainer"); return c.get(); } const ho_report_s& horeport() const { assert_choice_type(types::horeport, type_, "SONtransferRequestContainer"); return c.get(); } const cell_activation_request_s& eutran_cell_activation() const { assert_choice_type(types::eutran_cell_activation, type_, "SONtransferRequestContainer"); return c.get(); } const cell_state_ind_s& energy_savings_ind() const { assert_choice_type(types::energy_savings_ind, type_, "SONtransferRequestContainer"); return c.get(); } const fail_event_report_c& fail_event_report() const { assert_choice_type(types::fail_event_report, type_, "SONtransferRequestContainer"); return c.get(); } void set_cell_load_report(); multi_cell_load_report_request_s& set_multi_cell_load_report(); event_triggered_cell_load_report_request_s& set_event_triggered_cell_load_report(); ho_report_s& set_horeport(); cell_activation_request_s& set_eutran_cell_activation(); cell_state_ind_s& set_energy_savings_ind(); fail_event_report_c& set_fail_event_report(); private: types type_; choice_buffer_t c; void destroy_(); }; // SONtransferResponseContainer ::= CHOICE struct so_ntransfer_resp_container_c { struct types_opts { enum options { cell_load_report, // ... multi_cell_load_report, event_triggered_cell_load_report, horeport, eutran_cell_activation, energy_savings_ind, fail_event_report, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods so_ntransfer_resp_container_c() = default; so_ntransfer_resp_container_c(const so_ntransfer_resp_container_c& other); so_ntransfer_resp_container_c& operator=(const so_ntransfer_resp_container_c& other); ~so_ntransfer_resp_container_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters cell_load_report_resp_c& cell_load_report() { assert_choice_type(types::cell_load_report, type_, "SONtransferResponseContainer"); return c.get(); } multi_cell_load_report_resp_l& multi_cell_load_report() { assert_choice_type(types::multi_cell_load_report, type_, "SONtransferResponseContainer"); return c.get(); } event_triggered_cell_load_report_resp_s& event_triggered_cell_load_report() { assert_choice_type(types::event_triggered_cell_load_report, type_, "SONtransferResponseContainer"); return c.get(); } cell_activation_resp_s& eutran_cell_activation() { assert_choice_type(types::eutran_cell_activation, type_, "SONtransferResponseContainer"); return c.get(); } const cell_load_report_resp_c& cell_load_report() const { assert_choice_type(types::cell_load_report, type_, "SONtransferResponseContainer"); return c.get(); } const multi_cell_load_report_resp_l& multi_cell_load_report() const { assert_choice_type(types::multi_cell_load_report, type_, "SONtransferResponseContainer"); return c.get(); } const event_triggered_cell_load_report_resp_s& event_triggered_cell_load_report() const { assert_choice_type(types::event_triggered_cell_load_report, type_, "SONtransferResponseContainer"); return c.get(); } const cell_activation_resp_s& eutran_cell_activation() const { assert_choice_type(types::eutran_cell_activation, type_, "SONtransferResponseContainer"); return c.get(); } cell_load_report_resp_c& set_cell_load_report(); multi_cell_load_report_resp_l& set_multi_cell_load_report(); event_triggered_cell_load_report_resp_s& set_event_triggered_cell_load_report(); void set_horeport(); cell_activation_resp_s& set_eutran_cell_activation(); void set_energy_savings_ind(); void set_fail_event_report(); private: types type_; choice_buffer_t c; void destroy_(); }; // IMSvoiceEPSfallbackfrom5G ::= ENUMERATED struct im_svoice_ep_sfallbackfrom5_g_opts { enum options { true_value, /*...*/ nulltype } value; const char* to_string() const; }; typedef enumerated im_svoice_ep_sfallbackfrom5_g_e; // SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION struct sourceenb_to_targetenb_transparent_container_ext_ies_o { // Extension ::= OPEN TYPE struct ext_c { struct types_opts { enum options { mob_info, ue_history_info_from_the_ue, im_svoice_ep_sfallbackfrom5_g, add_rrm_prio_idx, contextat_source, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods ext_c() = default; ext_c(const ext_c& other); ext_c& operator=(const ext_c& other); ~ext_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<32, false, true>& mob_info(); unbounded_octstring& ue_history_info_from_the_ue(); im_svoice_ep_sfallbackfrom5_g_e& im_svoice_ep_sfallbackfrom5_g(); fixed_bitstring<32, false, true>& add_rrm_prio_idx(); contextat_source_s& contextat_source(); const fixed_bitstring<32, false, true>& mob_info() const; const unbounded_octstring& ue_history_info_from_the_ue() const; const im_svoice_ep_sfallbackfrom5_g_e& im_svoice_ep_sfallbackfrom5_g() const; const fixed_bitstring<32, false, true>& add_rrm_prio_idx() const; const contextat_source_s& contextat_source() const; private: types type_; choice_buffer_t, unbounded_octstring > c; void destroy_(); }; // members lookup methods static uint32_t idx_to_id(uint32_t idx); static bool is_id_valid(const uint32_t& id); static crit_e get_crit(const uint32_t& id); static ext_c get_ext(const uint32_t& id); static presence_e get_presence(const uint32_t& id); }; // UE-HistoryInformation ::= SEQUENCE (SIZE (1..16)) OF LastVisitedCell-Item using ue_history_info_l = dyn_array; struct sourceenb_to_targetenb_transparent_container_ext_ies_container { template using ie_field_s = protocol_ext_container_item_s; // member variables bool mob_info_present = false; bool ue_history_info_from_the_ue_present = false; bool im_svoice_ep_sfallbackfrom5_g_present = false; bool add_rrm_prio_idx_present = false; bool contextat_source_present = false; ie_field_s > mob_info; ie_field_s > ue_history_info_from_the_ue; ie_field_s im_svoice_ep_sfallbackfrom5_g; ie_field_s > add_rrm_prio_idx; ie_field_s contextat_source; // sequence methods sourceenb_to_targetenb_transparent_container_ext_ies_container(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // SourceeNB-ToTargeteNB-TransparentContainer ::= SEQUENCE struct sourceenb_to_targetenb_transparent_container_s { bool ext = false; bool erab_info_list_present = false; bool subscriber_profile_idfor_rfp_present = false; bool ie_exts_present = false; unbounded_octstring rrc_container; erab_info_list_l erab_info_list; eutran_cgi_s target_cell_id; uint16_t subscriber_profile_idfor_rfp = 1; ue_history_info_l ue_history_info; sourceenb_to_targetenb_transparent_container_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // TargeteNB-ToSourceeNB-TransparentContainer-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION using targetenb_to_sourceenb_transparent_container_ext_ies_o = protocol_ext_empty_o; using targetenb_to_sourceenb_transparent_container_ext_ies_container = protocol_ext_container_empty_l; // TargeteNB-ToSourceeNB-TransparentContainer ::= SEQUENCE struct targetenb_to_sourceenb_transparent_container_s { bool ext = false; bool ie_exts_present = false; unbounded_octstring rrc_container; targetenb_to_sourceenb_transparent_container_ext_ies_container ie_exts; // ... // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; } // namespace s1ap } // namespace asn1 extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_single_container_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ie_field_s; extern template struct asn1::protocol_ext_field_s; extern template struct asn1::protocol_ext_field_s; #endif // SRSASN1_S1AP_H