aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2018-01-09 23:38:47 +0100
committerAnders Broman <a.broman58@gmail.com>2018-01-10 05:31:33 +0000
commit88abff68df5fcea46e1f7f0a32d7fe8718fd67c0 (patch)
tree802e75b2a344129a51605e451e0cba45913536e7
parentfb4953a13c1ac6e5b54a347769c5f05e8fd6ab28 (diff)
NR RRC: add initial dissector based on v15.0.0
ASN.1 prose imported from the specification and heavily modified manually to workaround its poor quality. Some of them are marked with -- WS modification comment, some are not. Probably useless as-is, but it is an initial start until an updated version is available. Change-Id: I19ab6cedb6aa23c8ed57bae525ee4a3391494e32 Reviewed-on: https://code.wireshark.org/review/25235 Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--configure.ac1
-rw-r--r--docbook/release-notes.asciidoc1
-rw-r--r--epan/dissectors/CMakeLists.txt1
-rw-r--r--epan/dissectors/asn1/CMakeLists.txt1
-rw-r--r--epan/dissectors/asn1/Makefile.am1
-rw-r--r--epan/dissectors/asn1/lte-rrc/lte-rrc.cnf1
-rw-r--r--epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c1
-rw-r--r--epan/dissectors/asn1/nr-rrc/CMakeLists.txt51
-rw-r--r--epan/dissectors/asn1/nr-rrc/Makefile.am43
-rw-r--r--epan/dissectors/asn1/nr-rrc/NR-InterNodeDefinitions.asn183
-rw-r--r--epan/dissectors/asn1/nr-rrc/NR-RRC-Definitions.asn3061
-rw-r--r--epan/dissectors/asn1/nr-rrc/nr-rrc.cnf202
-rw-r--r--epan/dissectors/asn1/nr-rrc/packet-nr-rrc-template.c108
-rw-r--r--epan/dissectors/packet-lte-rrc.c23
-rw-r--r--epan/dissectors/packet-lte-rrc.h1
-rw-r--r--epan/dissectors/packet-nr-rrc.c14909
-rwxr-xr-xtools/extract_asn1_from_spec.pl4
17 files changed, 18577 insertions, 15 deletions
diff --git a/configure.ac b/configure.ac
index 95ec676db1..7b0ecfddaf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2726,6 +2726,7 @@ AC_CONFIG_FILES(
epan/dissectors/asn1/mpeg-pes/Makefile
epan/dissectors/asn1/mudurl/Makefile
epan/dissectors/asn1/nbap/Makefile
+ epan/dissectors/asn1/nr-rrc/Makefile
epan/dissectors/asn1/ns_cert_exts/Makefile
epan/dissectors/asn1/novell_pkis/Makefile
epan/dissectors/asn1/ocsp/Makefile
diff --git a/docbook/release-notes.asciidoc b/docbook/release-notes.asciidoc
index 7cb452add4..19ffab3726 100644
--- a/docbook/release-notes.asciidoc
+++ b/docbook/release-notes.asciidoc
@@ -87,6 +87,7 @@ LoRaWAN
Lustre Network
Lustre Filesystem
Network Functional Application Platform Interface (NFAPI) Protocol
+New Radio Radio Resource Control protocol
NXP 802.15.4 Sniffer Protocol
PFCP (Packet Forwarding Control Protocol)
Protobuf (Protocol Buffers)
diff --git a/epan/dissectors/CMakeLists.txt b/epan/dissectors/CMakeLists.txt
index e8e3bfe67b..298f32f5f9 100644
--- a/epan/dissectors/CMakeLists.txt
+++ b/epan/dissectors/CMakeLists.txt
@@ -142,6 +142,7 @@ set(CLEAN_ASN1_DISSECTOR_SRC
${CMAKE_CURRENT_SOURCE_DIR}/packet-mudurl.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-nbap.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-novell_pkis.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/packet-nr-rrc.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-ns_cert_exts.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-ocsp.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-p1.c
diff --git a/epan/dissectors/asn1/CMakeLists.txt b/epan/dissectors/asn1/CMakeLists.txt
index 692c2f5956..02fc68ff0c 100644
--- a/epan/dissectors/asn1/CMakeLists.txt
+++ b/epan/dissectors/asn1/CMakeLists.txt
@@ -79,6 +79,7 @@ set(ASN1_SRC_DIRS
mpeg-pes
mudurl
nbap
+ nr-rrc
ns_cert_exts
novell_pkis
ocsp
diff --git a/epan/dissectors/asn1/Makefile.am b/epan/dissectors/asn1/Makefile.am
index 9c94673ac9..77694ff969 100644
--- a/epan/dissectors/asn1/Makefile.am
+++ b/epan/dissectors/asn1/Makefile.am
@@ -81,6 +81,7 @@ SUBDIRS = \
mudurl \
nbap \
novell_pkis \
+ nr-rrc \
ns_cert_exts \
ocsp \
p1 \
diff --git a/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf b/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf
index 6afc23d060..ff018d37ed 100644
--- a/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf
+++ b/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf
@@ -28,6 +28,7 @@ HandoverPreparationInformation-NB_PDU
RLF-Report-r9_PDU
RLF-Report-v9e0_PDU
SCG-ConfigInfo-r12_PDU
+UECapabilityInformation_PDU
UEPagingCoverageInformation_PDU
UEPagingCoverageInformation-NB_PDU
UERadioAccessCapabilityInformation_PDU
diff --git a/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c b/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c
index 9666d1289c..148a1975d9 100644
--- a/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c
+++ b/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c
@@ -350,7 +350,6 @@ static const fragment_items lte_rrc_sib12_frag_items = {
/* Forward declarations */
static int dissect_DL_DCCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
-static int dissect_UECapabilityInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static const true_false_string lte_rrc_eutra_cap_feat_group_ind_1_val = {
"Intra-subframe freq hopping for PUSCH scheduled by UL grant; DCI format 3a; Aperiodic CQI/PMI/RI report on PUSCH: Mode 2-0 & 2-2 - Supported",
diff --git a/epan/dissectors/asn1/nr-rrc/CMakeLists.txt b/epan/dissectors/asn1/nr-rrc/CMakeLists.txt
new file mode 100644
index 0000000000..5d728e72e0
--- /dev/null
+++ b/epan/dissectors/asn1/nr-rrc/CMakeLists.txt
@@ -0,0 +1,51 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+set( PROTOCOL_NAME nr-rrc )
+
+set( PROTO_OPT )
+
+set( EXPORT_FILES
+ ${PROTOCOL_NAME}-exp.cnf
+)
+
+set( EXT_ASN_FILE_LIST
+)
+
+set( ASN_FILE_LIST
+ NR-InterNodeDefinitions.asn
+ NR-RRC-Definitions.asn
+)
+
+set( EXTRA_DIST
+ ${ASN_FILE_LIST}
+ packet-${PROTOCOL_NAME}-template.c
+ ${PROTOCOL_NAME}.cnf
+)
+
+set( SRC_FILES
+ ${EXTRA_DIST}
+ ${EXT_ASN_FILE_LIST}
+)
+
+set( A2W_FLAGS -L )
+
+ASN2WRS()
diff --git a/epan/dissectors/asn1/nr-rrc/Makefile.am b/epan/dissectors/asn1/nr-rrc/Makefile.am
new file mode 100644
index 0000000000..8831281284
--- /dev/null
+++ b/epan/dissectors/asn1/nr-rrc/Makefile.am
@@ -0,0 +1,43 @@
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+include ../Makefile.inc
+
+PROTOCOL_NAME = nr-rrc
+
+EXPORT_FILES = $(PROTOCOL_NAME)-exp.cnf
+
+EXT_ASN_FILE_LIST =
+
+ASN_FILE_LIST = \
+ NR-InterNodeDefinitions.asn \
+ NR-RRC-Definitions.asn
+
+EXTRA_DIST = \
+ $(EXTRA_DIST_COMMON) \
+ $(ASN_FILE_LIST) \
+ packet-$(PROTOCOL_NAME)-template.c \
+ $(PROTOCOL_NAME).cnf
+
+SRC_FILES = \
+ $(EXTRA_DIST) \
+ $(EXT_ASN_FILE_LIST)
+
+A2W_FLAGS = -L
+
+EXTRA_CNF =
diff --git a/epan/dissectors/asn1/nr-rrc/NR-InterNodeDefinitions.asn b/epan/dissectors/asn1/nr-rrc/NR-InterNodeDefinitions.asn
new file mode 100644
index 0000000000..d7241a8d6d
--- /dev/null
+++ b/epan/dissectors/asn1/nr-rrc/NR-InterNodeDefinitions.asn
@@ -0,0 +1,183 @@
+-- 3GPP TS 38.331 V15.0.0 (2017-12)
+
+NR-InterNodeDefinitions DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ RRCReconfiguration,
+ UE-CapabilityRAT-ContainerList
+FROM NR-RRC-Definitions;
+
+-- TAG-HANDOVER-COMMAND-START
+
+HandoverCommand ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ c1 CHOICE{
+ handoverCommand-r15 HandoverCommand-r15-IEs,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+HandoverCommand-r15-IEs ::= SEQUENCE {
+ handoverCommandMessage OCTET STRING (CONTAINING RRCReconfiguration),
+ nonCriticalExtension SEQUENCE {} OPTIONAL
+}
+
+-- TAG-HANDOVER-COMMAND-STOP
+-- TAG-HANDOVER-PREPARATION-INFORMATION-START
+
+HandoverPreparationInformation ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ c1 CHOICE{
+ handoverPreparationInformation-r15 HandoverPreparationInformation-r15-IEs,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+HandoverPreparationInformation-r15-IEs ::= SEQUENCE {
+ ue-CapabilityRAT-List UE-CapabilityRAT-ContainerList,
+ sourceConfig OCTET STRING (CONTAINING RRCReconfiguration),
+ rrm-Config RRM-Config OPTIONAL,
+ as-Context AS-Context OPTIONAL,
+ nonCriticalExtension SEQUENCE {} OPTIONAL
+}
+
+AS-Context ::= SEQUENCE {
+ reestablishmentInfo SEQUENCE {
+ sourcePhysCellId PhysCellId,
+ targetCellShortMAC-I ShortMAC-I,
+ additionalReestabInfoList AdditionalReestabInfoList OPTIONAL
+ } OPTIONAL,
+ -- FFS Whether to change e.g. move all re-establishment info to Xx
+ configRestrictInfo ConfigRestrictInfoSCG OPTIONAL,
+ ...
+}
+
+ReestabNCellInfoList ::= SEQUENCE ( SIZE (1..maxCellPrep) ) OF ReestabNCellInfo
+
+ReestabNCellInfo::= SEQUENCE{
+ cellIdentity CellIdentity,
+ key-gNodeB-Star BIT STRING (SIZE (256)),
+ shortMAC-I ShortMAC-I
+}
+
+RRM-Config ::= SEQUENCE {
+ ue-InactiveTime INTEGER,
+ candidateCellInfoList CandidateCellInfoList OPTIONAL,
+ ...
+}
+
+-- TAG-HANDOVER-PREPARATION-INFORMATION-STOP
+-- TAG-SCG-CONFIG-START
+
+SCG-Config ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ c1 CHOICE{
+ scg-Config-r15 SCG-Config-r15-IEs,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+SCG-Config-r15-IEs ::= SEQUENCE {
+ scg-CellGroupdConfig OCTET STRING (CONTAINING RRCReconfiguration) OPTIONAL,
+ p-maxFR1 P-Max OPTIONAL,
+ scg-RB-Config OCTET STRING (CONTAINING RadioBearerConfiguration) OPTIONAL,
+ configRestrictModReq ConfigRestrictModReqSCG OPTIONAL,
+ candidateCellInfoList CandidateCellInfoList OPTIONAL,
+ nonCriticalExtension SEQUENCE {} OPTIONAL
+}
+
+ConfigRestrictModReqSCG ::= SEQUENCE {
+ requestedBC-List-NR SEQUENCE OF INTEGER OPTIONAL,
+ requestedBPC-List-NR SEQUENCE OF INTEGER OPTIONAL,
+ -- FFS Signalling details of BC and BPC restrictions requested by SgNB to be alleviated
+ ...
+}
+
+-- TAG-SCG-CONFIG-STOP
+-- TAG-SCG-CONFIG-INFO-START
+
+SCG-ConfigInfo ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ c1 CHOICE{
+ scg-ConfigInfo-r15 SCG-ConfigInfo-r15-IEs,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+SCG-ConfigInfo-r15-IEs ::= SEQUENCE {
+ eutra-CapabilityInfo OCTET STRING (CONTAINING UECapabilityInformation) OPTIONAL,
+ candidateCellInfoList CandidateCellInfoList OPTIONAL,
+ measResultSSTD MeasResultSSTD OPTIONAL,
+ configRestrictInfo ConfigRestrictInfoSCG OPTIONAL,
+ drx-InfoMCG DRX-Info OPTIONAL,
+ sourceConfigSCG OCTET STRING (CONTAINING RRCReconfiguration) OPTIONAL,
+ p-maxFR1 P-Max OPTIONAL,
+ mcg-RB-Config OCTET STRING (CONTAINING RadioBearerConfiguration) OPTIONAL,
+ nonCriticalExtension SEQUENCE {} OPTIONAL
+}
+
+ConfigRestrictInfoSCG ::= SEQUENCE {
+ restrictedBandCombinationNR INTEGER OPTIONAL,
+ restrictedBasebandCombinationNR-NR SEQUENCE OF INTEGER OPTIONAL,
+ -- FFS Signalling details of BC and BPC restrictions to be observed by SgNB
+ -- FFS Signalling details regarding power coordination
+ maxMeasFreqsSCG-NR INTEGER OPTIONAL,
+ ...
+}
+
+DRX-Info ::= SEQUENCE {
+ cycle INTEGER,
+ offset INTEGER
+}
+
+-- TAG-SCG-CONFIG-INFO-STOP
+-- TAG-CANDIDATE-CELL-INFO-LIST-START
+
+CandidateCellInfoList ::= SEQUENCE (SIZE (1..maxCellSCG)) OF CandidateCellInfo
+
+CandidateCellInfo ::= SEQUENCE {
+ -- FFS whether to introduce something additional for transfer of SN configured measurements
+ cellIdentification SEQUENCE {
+ physCellId PhysCellId,
+ dl-CarrierFreq ARFCN-ValueNR
+ },
+ measResultCell SEQUENCE {
+ rsrpResultCell RSRP-Range,
+ rsrqResultCell RSRQ-Range
+ -- FFS whether to support SINR
+ } OPTIONAL,
+ candidateRS-IndexList CandidateRS-IndexInfoList OPTIONAL,
+ ...
+}
+
+CandidateRS-IndexInfoList ::= SEQUENCE (SIZE (1..maxRS-IndexReport)) OF CandidateRS-IndexInfo -- WS modification: was CandidateBeamInfoList
+
+CandidateRS-IndexInfo ::= SEQUENCE {
+ -- FFS whether to support CSI RS based beam results also
+ ssb-Index SSB-Index,
+ measResultSSB SEQUENCE {
+ rsrpResultCell RSRP-Range,
+ rsrqResultCell RSRQ-Range
+ -- FFS whether to support SINR
+ } OPTIONAL,
+ ...
+}
+
+-- TAG-CANDIDATE-CELL-INFO-LIST-STOP
+
+-- WS modification: fake definitions for missing entries in ASN.1
+maxCellPrep INTEGER ::= 1
+maxCellSCG INTEGER ::= 1
+maxRS-IndexReport INTEGER ::= 1
+
+END
diff --git a/epan/dissectors/asn1/nr-rrc/NR-RRC-Definitions.asn b/epan/dissectors/asn1/nr-rrc/NR-RRC-Definitions.asn
new file mode 100644
index 0000000000..c0b5713544
--- /dev/null
+++ b/epan/dissectors/asn1/nr-rrc/NR-RRC-Definitions.asn
@@ -0,0 +1,3061 @@
+-- 3GPP TS 38.331 V15.0.0 (2017-12)
+
+NR-RRC-Definitions DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- TAG-NR-RRC-DEFINITIONS-STOP
+-- TAG-BCCH-BCH-MESSAGE-START
+
+BCCH-BCH-Message ::= SEQUENCE {
+ message BCCH-BCH-MessageType
+}
+
+BCCH-BCH-MessageType ::= CHOICE {
+ mib MIB,
+ messageClassExtension SEQUENCE {}
+}
+
+-- TAG-BCCH-BCH-MESSAGE-STOP
+-- TAG-DL-DCCH-MESSAGE-START
+
+DL-DCCH-Message ::= SEQUENCE {
+ message DL-DCCH-MessageType
+}
+
+DL-DCCH-MessageType ::= CHOICE {
+ c1 CHOICE {
+ rrcReconfiguration RRCReconfiguration,
+ spare15 NULL, spare14 NULL, spare13 NULL,
+ spare12 NULL, spare11 NULL, spare10 NULL,
+ spare9 NULL, spare8 NULL, spare7 NULL,
+ spare6 NULL, spare5 NULL, spare4 NULL,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ messageClassExtension SEQUENCE {}
+}
+
+-- TAG-DL-DCCH-MESSAGE-STOP
+-- TAG-UL-DCCH-MESSAGE-START
+
+UL-DCCH-Message ::= SEQUENCE {
+ message UL-DCCH-MessageType
+}
+
+UL-DCCH-MessageType ::= CHOICE {
+ c1 CHOICE {
+ measurementReport MeasurementReport,
+ rrcReconfigurationComplete RRCReconfigurationComplete,
+ spare14 NULL, spare13 NULL, spare12 NULL,
+ spare11 NULL, spare10 NULL, spare9 NULL,
+ spare8 NULL, spare7 NULL, spare6 NULL,
+ spare5 NULL, spare4 NULL, spare3 NULL,
+ spare2 NULL, spare1 NULL
+ },
+ messageClassExtension SEQUENCE {}
+}
+
+-- TAG-UL-DCCH-MESSAGE-STOP
+-- TAG-MIB-START
+
+MIB ::= SEQUENCE {
+ -- Part of the SSB index transmitted explicitly in the MasterInformationBlock (see 38.213, section 4.1).
+ -- The SSB-Index identifies this SSB in the SS-Burst-Set.
+ -- The field is only present for carrier frequencies >6 GHz. FFS whether to create a separate MIB for >6 GHz or move optional field to the end.
+ ssb-IndexExplicit INTEGER (1..7) OPTIONAL, -- Cond Above6Ghz
+
+ -- Indication of whether the SS block is in the first or second 5 ms of a radio frame.
+ -- Corresponds to L1 parameter 'half-frame-index' (see 38,211, section 4.3.1)
+ halfFrameIndex ENUMERATED {firstHalf,secondHalf},
+
+ systemFrameNumber BIT STRING (SIZE (10)),
+
+ -- Subcarrier spacing for SIB1, Msg.2/4 for initial access and SI-messages.
+ -- Values 15 and 30 kHz are applicable for carrier frequencies <6GHz; Values 60 and 120 kHz are applicable for carrier frequencies >6GHz
+ subCarrierSpacingCommon SubcarrierSpacing,
+
+ -- The frequency domain offset between SSB and the overall resource block grid in number of subcarriers. See 38.211, section 7.4.3.1)
+ ssb-subcarrierOffset INTEGER (0..11),
+
+ -- Position of (first) DL DM-RS (see 38.211, section 7.4.1.1.1)
+ dmrs-TypeA-Position ENUMERATED {pos2, pos3},
+
+ -- Determines a bandwidth for PDCCH/SIB, a common ControlResourceSet (CORESET) a common search space and necessary PDCCH parameters
+ -- Corresponds to L1 parameter 'RMSI-PDCCH-Config' (see FFS_Specification, section FFS_Section)
+ -- FFS: Make optional and omit e.g. in EN-DC or in other cells not broadcasting SIB1? Or make it mandatory to avoid optional fields in MIB?
+ pdcchConfigSIB1 INTEGER(0..255),
+
+ -- Indicates that UE shall not campe on this cell
+ cellBarred ENUMERATED {barred, notBarred},
+ -- Indicates that intraFreqReselection is not allowed when cellBarred is set to barred.
+ intraFreqReselection ENUMERATED {allowed, notAllowed},
+
+ -- FFS: How many spare values to keep in MIB?
+ spare BIT STRING (SIZE (0)) -- WS modification; was ffsValue
+}
+
+-- TAG-MIB-STOP
+-- TAG-MEASUREMENTREPORT-START
+
+MeasurementReport ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ measurementReport MeasurementReport-IEs,
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+MeasurementReport-IEs ::= SEQUENCE {
+ measResults MeasResults
+-- FFS
+}
+
+-- TAG-MEASUREMENTREPORT-STOP
+-- TAG-RRCRECONFIGURATION-START
+
+RRCReconfiguration ::= SEQUENCE {
+ rrc-TransactionIdentifier RRC-TransactionIdentifier,
+ criticalExtensions CHOICE {
+ rrcReconfiguration RRCReconfiguration-IEs,
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+RRCReconfiguration-IEs ::= SEQUENCE {
+ -- Configuration of Radio Bearers (DRBs, SRBs) including SDAP/PDCP.
+ -- In In EN-DC this field may only be present if the RRCReconfiguration
+ -- is transmitted over SRB3.
+ radioBearerConfig RadioBearerConfig OPTIONAL, -- Need M
+
+ -- Configuration of primary and secondary cell groups (Dual Connectivity):
+ masterCellGroupConfig CellGroupConfig OPTIONAL, -- Need M
+ secondaryCellGroupToAddModList SEQUENCE (SIZE (1..maxSCellGroups)) OF CellGroupConfig OPTIONAL, -- Need M
+ secondaryCellGroupToReleaseList SEQUENCE (SIZE (1..maxSCellGroups)) OF CellGroupId OPTIONAL, -- Need M
+
+ measConfig MeasConfig OPTIONAL, -- Need M
+
+
+ lateNonCriticalExtension OCTET STRING OPTIONAL,
+ nonCriticalExtension SEQUENCE{} OPTIONAL
+}
+
+-- TAG-RRCRECONFIGURATION-STOP
+-- TAG-RRCRECONFIGURATIONCOMPLETE-START
+
+RRCReconfigurationComplete ::= SEQUENCE {
+ rrc-TransactionIdentifier RRC-TransactionIdentifier,
+ criticalExtensions CHOICE {
+ rrcReconfigurationComplete RRCReconfigurationComplete-IEs,
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+RRCReconfigurationComplete-IEs ::= SEQUENCE {
+ -- FFS
+}
+
+-- TAG-RRCRECONFIGURATIONCOMPLETE-STOP
+-- TAG-SIB1-START
+
+SIB1 ::= SEQUENCE {
+
+ -- FFS / TODO: Add other parameters.
+
+ -- Time domain positions of the transmitted SS-blocks in an SS-Burst-Set (see 38.213, section 4.1)
+ ssb-PositionsInBurst SEQUENCE {
+ -- Indicates the presence of the up to 8 SSBs in one group
+ inOneGroup BIT STRING (SIZE (8)),
+ -- For above 6 GHz: indicates which groups of SSBs is present
+ groupPresence BIT STRING (SIZE (8)) OPTIONAL -- Cond above6GHzOnly
+ },
+
+ -- The SSB periodicity in msec for the rate matching purpose (see 38.211, section [7.4.3.1])
+ ssb-periodicityServingCell ENUMERATED { ms5, ms10, ms20, ms40, ms80, ms160, spare1, spare2 },
+
+ -- TX power that the NW used for SSB transmission. The UE uses it to estimate the RA preamble TX power.
+ -- (see 38.213, section 7.4)
+ ss-PBCH-BlockPower INTEGER (-60..50),
+
+ frequencyInfoUL FrequencyInfoUL OPTIONAL, -- Cond FDD
+
+ -- FFS: How to indicate the FrequencyInfoUL for the SUL
+ supplementaryUplink SEQUENCE {
+ frequencyInfoUL FrequencyInfoUL
+ -- FFS: Add additional (selection) criteria determining when/whether the UE shall use the SUL frequency
+ } OPTIONAL, -- Cond SUL
+
+ tdd-UL-DL-configuration NULL OPTIONAL, -- Cond TDD WS modification: was TYPE_FFS!
+
+ -- Enables hopping of base sequence of PUCCH Format 0 when transmitted in different slots.
+ -- Corresponds to L1 parameter 'PUCCH-F0-Base-sequence-hopping' (see 38.211, section 6.4.1.3)
+ pucch-Format0-BaseSequenceHopping ENUMERATED {true} OPTIONAL,
+ -- Enabling hopping of base sequence of PUCCH Format 1 when transmitted in different slots
+ -- Corresponds to L1 parameter 'PUCCH-F1-Base-sequence-hopping' (see 38.211, section 6.4.1.3)
+ pucch-Format1-BaseSequenceHopping ENUMERATED {true} OPTIONAL
+}
+
+-- TAG-SIB1-STOP
+-- TAG-SETUP-RELEASE-START
+
+--SetupRelease { ElementTypeParam } ::= CHOICE {
+-- release NULL,
+-- setup ElementTypeParam
+--}
+
+-- TAG-SETUP-RELEASE-STOP
+-- TAG-DRB-IDENTITY-START
+
+DRB-Identity ::= INTEGER (4..32)
+
+-- TAG-DRB-IDENTITY-STOP
+-- TAG-BANDWIDTH-PART-START
+
+BandwidthPart-Config ::= SEQUENCE {
+
+ -- FFS: Conditions! What to do when certain fields or the entire bandwidth part is omitted? Assume parameters of the carrier instead?
+ -- Or use the initialBWP derived from SIB1 or ServingCellConfigCommon? Or make it mandatory to provide at least one BWP.
+ -- FFS: How can a BandiwdthPart be changed? Only via synchronousReconfiguration or also without?
+
+ -- NOTE: The changes in this section are based on RAN1 agreements (not from the official L1 parameter list):
+
+ -- The bandwidth parts for downlink. (see 38.211, 38.213, section 12)
+ downlinkBandwidthPartsToReleaseList SEQUENCE (SIZE (1..maxNrofBandwidthParts)) OF BandiwdthPartId OPTIONAL,
+ downlinkBandwidthPartsToAddModList SEQUENCE (SIZE (1..maxNrofBandwidthParts)) OF BandwidthPart OPTIONAL,
+ -- ID of the downlink bandwidth part to be used upon MAC-activation of an SCell. If not provided, the UE uses the default BWP
+ firstActiveDownlinkBwp-Id BandiwdthPartId OPTIONAL, -- Cond SCellOnly
+
+ -- Corresponds to L1 parameter 'default-DL-BWP'.
+ -- ID of the downlink bandwidth part to be used upon expiry of txxx.
+ -- This field is UE specific. When the field is absent the UE the initial BWP as default BWP.
+ -- (see 38.211, 38.213, section 12)
+ -- FFS: May the NW change the default BWP with a regular RRC reconfiguration or only with Reconfiguration with sync?
+ -- FFS: Whether to add a default uplink BWP
+ defaultDownlinkBwp-Id BandiwdthPartId OPTIONAL,
+
+ -- The bandwidth parts for uplink. In case of TDD uplink- and downlink BWP with the same bandwidthPartId are considered
+ -- as a BWP pair and must have the same center frequency.
+ uplinkBandwidthPartsToReleaseList SEQUENCE (SIZE (1..maxNrofBandwidthParts)) OF BandiwdthPartId OPTIONAL,
+ uplinkBandwidthPartsToAddModList SEQUENCE (SIZE (1..maxNrofBandwidthParts)) OF BandwidthPart OPTIONAL,
+ -- ID of the uplink bandwidth part to be used upon MAC-activation of an SCell. If not provided, the UE uses the FFS: default BWP
+ firstActiveUplinkBwp-Id BandiwdthPartId OPTIONAL, -- Cond SCellOnly
+
+ -- The duration in ms after which the UE falls back to the default Bandwidth Part. (see 38.321, section FFS_Section)
+ -- The UE starts the timer when it switches its active downlink BWP to a downlink BWP other than the default downlink BWP.
+ -- The UE restarts the timer to the initial value when it successfully decodes a DCI to schedule PDSCH(s) in its active downlink BWP.
+ -- When the timer expires, the UE switches its active downlink BWP to the default downlink (FFS: and uplink?) BWP.
+ -- FFS: For TDD the UE switches also the paired uplink BWP to the one with the defaultDownlinkBwp-Id.
+ -- FFS: For FDD the UE switches the uplink BWP?????
+ -- When the network releases the timer configuration, the UE stops the timer without swithching to the default (FFS: and uplink?) BWP.
+ bandwidthPartInactivityTimer CHOICE {
+ release NULL,
+ setup ENUMERATED {
+ null }} OPTIONAL -- Need M
+
+}
+
+BandwidthPart ::= SEQUENCE {
+ -- An identifier for this bandwidth part.
+ -- Corresponds to L1 parameter 'UL-BWP-index'. (see 38.211, 38.213, section 12)
+ bandwidthPartId BandwidthPartId,
+ -- Frequency domain location of this bandwidth part as a distance in number of PRBs in relation to the reference PRB (PRB 0)
+ -- of the associated carrier. Corresponds to L1 parameter 'DL-BWP-loc'. (see 38.211, section FFS_Section).
+ -- In case of TDD, a BWP-pair (UL BWP and DL BWP with the same bandwidthPartId) must have the same location (see 38.211, section REF)
+ -- FFS_Value: RAN1 seems to discuss the final range.
+ location INTEGER (0.. maxNrofPhysicalResourceBlocksTimes4) OPTIONAL,
+ -- Bandwidth of this bandwidth part (see 38.211, section REF)
+ bandwidth INTEGER (1.. maxNrofPhysicalResourceBlocks) OPTIONAL,
+ -- Subcarrier spacing to be used in this BWP. It is applied to at least PDCCH, PDSCH and corresponding DMRS.
+ -- The values provided here are converted into a subcarrier spacing as indicated in 38.211, Table 4.1-2.
+ subcarrierSpacing ENUMERATED {n0, n1, n2, n3, n4} OPTIONAL,
+ -- Indicates whether to use the extended cyclic prefix for this bandwidth part. If not set, the UE uses the normal cyclic prefix.
+ -- Normal CP is supported for all numerologies and slot formats. Extended CP is supported only for 60 kHz subcarrier spacing.
+ -- (see 38.211, section 4.2.2)
+ cyclicPrefix ENUMERATED { extended } OPTIONAL,
+
+ -- Frequency location of the uplink "direct current" frequency.
+ -- Corresponds to L1 parameter 'UL-BWP-DC'. (see 38.211, section FFS_Section)
+ directCurrentLocation INTEGER (0..3299) OPTIONAL -- Cond UplinkOnly
+}
+
+BandwidthPartId ::= INTEGER (0..maxNrofBandwidthParts-1)
+
+-- TAG-BANDWIDTH-PART-STOP
+-- TAG-CELL-GROUP-CONFIG-START
+
+-- Configuration of one Cell-Group:
+CellGroupConfig ::= SEQUENCE {
+ cellGroupId CellGroupId,
+
+ -- Logical Channel configuration and association with radio bearers:
+ rlc-BearerToAddModList SEQUENCE (SIZE(1..maxLCH)) OF LCH-Config OPTIONAL,
+ rlc-BearerToReleaseList SEQUENCE (SIZE(1..maxLCH)) OF LogicalChannelIdentity OPTIONAL,
+
+ -- Parameters applicable for the entire cell group:
+ mac-CellGroupConfig MAC-CellGroupConfig OPTIONAL, -- Need M
+ rlf-TimersAndConstants RLF-TimersAndConstants OPTIONAL, -- Need M
+ physical-CellGroupConfig PhysicalCellGroupConfig OPTIONAL, -- Need M
+
+ -- Serving Cell specific parameters (PCell and SCells)
+ spCellConfig SpCellConfig OPTIONAL, -- Need M
+ sCellToAddModList SCellToAddModList OPTIONAL, -- Need M
+ sCellToReleaseList SCellToReleaseList OPTIONAL -- Need M
+}
+
+CellGroupId ::= INTEGER (1.. maxSCellGroups)
+
+
+-- Configuration of one logical channel:
+LCH-Config ::= SEQUENCE {
+ logicalChannelIdentity LogicalChannelIdentity,
+
+ -- Associate the logical channel with an SRB or a DRB:
+ servedRadioBearer INTEGER (1..32) OPTIONAL, -- Cond LCH-SetupOnly
+
+ reestablishRLC ENUMERATED {true} OPTIONAL, -- Need N
+ rlc-Config RLC-Config OPTIONAL, -- Cond LCH-Setup
+
+ mac-LogicalChannelConfig LogicalChannelConfig OPTIONAL -- Cond LCH-Setup
+}
+
+LogicalChannelIdentity ::= INTEGER (1..32) -- WS modification: was FFS but 38.321 defines max value as 32
+
+-- Cell-Group specific L1 parameters
+PhysicalCellGroupConfig ::= SEQUENCE {
+ -- Enables spatial bundling of HARQ ACKs. It is configured per cell group, i.e. for all the cells within the cell group.
+ -- It is only applicable when more than 4 layers are possible to schedule.
+ -- Corresponds to L1 parameter 'HARQ-ACK-spatial-bundling' (see 38.213, section FFS_Section)
+ -- Absence indicates that spatial bundling is disabled.
+ harq-ACK-Spatial-Bundling ENUMERATED {true} OPTIONAL -- Need R,
+}
+
+
+-- Serving cell specific MAC and PHY parameters for a SpCell:
+SpCellConfig ::= SEQUENCE {
+ -- Parameters for the synchronous reconfiguration to the target SpCell:
+ reconfigurationWithSync SEQUENCE {
+ spCellConfigCommon ServingCellConfigCommon,
+ newUE-Identity C-RNTI,
+ t304 ENUMERATED {ms50, ms100, ms150, ms200, ms500, ms1000, ms2000, ms10000-v1310},
+ rach-ConfigDedicated RACH-ConfigDedicated OPTIONAL -- Need M
+ } OPTIONAL, -- Cond SpCellChange
+
+ spCellConfigDedicated ServingCellConfigDedicated OPTIONAL -- Need M
+}
+
+C-RNTI ::= BIT STRING (SIZE (16))
+SCellToReleaseList ::= SEQUENCE (SIZE (1..maxNrofSCells)) OF SCellIndex
+SCellToAddModList ::= SEQUENCE (SIZE (1..maxNrofSCells)) OF SCellConfig
+
+SCellConfig ::= SEQUENCE {
+ sCellIndex SCellIndex,
+ sCellConfigCommon ServingCellConfigCommon OPTIONAL, -- Cond SCellAdd
+ sCellConfigDedicated ServingCellConfigDedicated OPTIONAL -- Cond SCellAddMod
+}
+
+-- TAG-CELL-GROUP-CONFIG-STOP
+-- TAG-CELL-INDEX-LIST-START
+
+CellIndexList ::= SEQUENCE (SIZE (1..maxNrofCellMeas)) OF CellIndex
+
+CellIndex ::= INTEGER (1..maxNrofCellMeas)
+
+-- TAG-CELL-INDEX-LIST-STOP
+-- TAG-CONTROL-RESOURCE-INDEX-START
+
+ControlResourceIndex ::= INTEGER (1..maxNrofControlResourceSets)
+
+-- TAG-CONTROL-RESOURCE-INDEX-STOP
+
+CrossCarrierSchedulingConfig ::= SEQUENCE {
+
+ -- FFS: Indicate this separately for UL and DL (as done in LTE for LAA)
+ schedulingCellInfo CHOICE {
+ own SEQUENCE { -- No cross carrier scheduling
+ cif-Presence BOOLEAN
+ },
+ other SEQUENCE { -- Cross carrier scheduling
+ schedulingCellId ServCellIndex,
+ -- FFS: pdsch-start is probably not needed since RAN1 agreed that the scheduling DCI can provide (an index into a
+ -- UE-specific table giving) the OFDM symbols used for the PDSCH (or PUSCH) transmission. But what does "can provide" mean?
+ pdsch-Start INTEGER (1..4),
+ -- FFS: cif-InSchedulingCell is probably still needed since RAN1 agreed that "If CIF is present in DCI, the bitwidth is fixed at 3 bit".
+ cif-InSchedulingCell INTEGER (1..7)
+ }
+ }
+}
+
+-- TAG-CSI-MEAS-CONFIG-START
+
+-- Top level parameter for CSI/BM framework. Contains lists of reporting, resource, and link configurations (see 38.214, section 5.2)
+CSI-MeasConfig ::= SEQUENCE {
+ csi-ResourceConfigs SEQUENCE (SIZE (1..maxNrofCSI-ResourceConfigurations)) OF CSI-ResourceConfig OPTIONAL,
+ csi-ReportConfigs SEQUENCE (SIZE (1..maxNrofCSI-Reports)) OF CSI-ReportConfig OPTIONAL,
+ csi-MeasIdToAddModList SEQUENCE (SIZE (1..maxNrofCSI-MeasId)) OF CSI-MeasIdToAddMod OPTIONAL,
+
+ -- Contains trigger states for dynamically selecting one or more aperiodic and semi-persistent reporting configurations
+ -- and/or triggering one or more aperiodic CSI-RS resource sets for channel and/or interference measurement.
+ -- FFS_CHECK: Is this the appropriate place for the IE or should it be inside the resource configuration or in a set?
+ reportTrigger SEQUENCE {
+ -- Size of CSI request field in DCI (bits). Corresponds to L1 parameter 'ReportTriggerSize' (see 38.214, section 5.2)
+ reportTriggerSize INTEGER (0..6) OPTIONAL -- WS modification: was FFS but 38.214 defines max value as 6
+ }
+}
+
+
+-- One CSI resource configuration comprising of one or more resource sets
+CSI-ResourceConfig ::= SEQUENCE {
+ -- FFS: Where is the CSI-ResourceConfigId used?
+ csi-ResourceConfigId CSI-ResourceConfigId,
+ -- Contains up to maxNrofCSI-ResourceSets resource CSI-ReosurceSets if ResourceConfigType is 'aperiodic' and maxNrofCSI-ResourceSets otherwise.
+ -- Corresponds to L1 parameter 'ResourceSetConfigList' (see 38.214, section 5.2.1.3.1)
+ csi-ResourceSets SEQUENCE (SIZE (1..maxNrofCSI-ResourceSets)) OF CSI-ResourceSet,
+
+ -- List of SSB resources used for beam measurement and reporting in a resource set
+ -- Corresponds to L1 parameter 'SSBResourceMeasList' (see 38,214, section FFS_Section)
+ ssb-Resources SEQUENCE (SIZE (1..maxNrofSSB-Resources-1)) OF CSI-SSB-Resource OPTIONAL,
+
+ -- Time domain behavior of resource configuration. Corresponds to L1 parameter 'ResourceConfigType' (see 38.214, section 5.2.2.3.5)
+ resourceType CHOICE {
+ aperiodic NULL,
+ semiPersistent NULL,
+ periodic NULL
+ }}
+
+CSI-ResourceConfigId ::= INTEGER (0..maxNrofCSI-ResourceConfigurations-1)
+
+-- A set of CSI-RS resources (their IDs) for which DCI indicates whether or not these CSI-RS resources are currently present or not.
+-- Corresponds to L1 parameter 'ResourceSetConfig' (see 38.214, section 5.2)
+CSI-ResourceSet ::= SEQUENCE {
+ -- FFS: Where is the CSI-ResourceSetId used?
+ csi-ResourceSetId CSI-ResourceSetId,
+ -- Contains up to maxNrofCSI-RS-ResourcesPerSet CSI-RS-Resource configurations.
+ -- Corresponds to L1 parameter 'CSI-RS-ResourceConfigList' (see 38.214, section 5.2)
+ -- FFS: Better make the csi-rs-Resources a common pool on CSI-MeasConfig level?
+ csi-rs-Resources SEQUENCE (SIZE (1..maxNrofCSI-RS-ResourcesPerSet)) OF NZP-CSI-RS-Resource,
+ -- Indicates whether repetition is on/off. Repetition on (off), means that The UE can (cannot) assume that
+ -- the network maintains a fixed TX beam over the resources in the set.
+ -- Corresponds to L1 parameter 'ResourceRep' (see 38.214, section FFS_Section)
+ repetition BOOLEAN
+}
+
+CSI-ResourceSetId ::= INTEGER (0..maxNrofCSI-ResourceSets-1)
+
+-- A CSI-RS (reference signal) resource which the UE may be configured to measure on (see 38.214, section 5.2.1.3.1)
+NZP-CSI-RS-Resource ::= SEQUENCE {
+ nzp-csi-rs-ResourceId NZP-CSI-RS-ResourceId,
+ -- Number of ports (see 38.214, section 5.2.1.2)
+ nrofPorts ENUMERATED {p1,p2,p4,p8,p12,p16,p24,p32},
+ -- OFDM symbol location(s) in a slot and subcarrier occupancy in a PRB of the CSI-RS resource
+ -- FFS: how to configure CSI-RS in different slots for fine time/frequency tracking (see 38.214, section 5.2.1.3.1)
+ resourceMapping NULL, -- WS modification: was TYPE_FFS!
+ -- CDM value (1, 2, 4, or 8), CDM pattern (freq only, time and freq, time only) (see 38.214, section 5.2.1.3.1)
+ cdm-Value ENUMERATED {n1, n2, n4, n8},
+ cdm-Pattern ENUMERATED {freqOnly, timeAndFreq, timeOnly},
+ -- Density of CSI-RS resource measured in RE/port/PRB (see 38.214, section 5.2.1.3.1)
+ -- Values 0.5 (dot5), 1 (one) and 3 (three) are allowed for X=1,
+ -- values 0.5 (dot5) and 1 (one) are allowed for X=2, 16, 24 and 32,
+ -- value 1 (one) is allowed for X=4, 8, 12.
+ csi-RS-Density ENUMERATED {dot5, one, three, spare},
+ -- Wideband or partial band CSI-RS (see 38.214, section 5.2.1.3.1)
+ csi-RS-FreqBand NULL, -- WS modification: was TYPE_FFS!
+ -- Power offset of NZP CSI-RS RE to PDSCH RE, corresponds to parameter Pc (see 38.214, section 5.2.1.3.1)
+ powerControlOffset NULL, -- WS modification: was TYPE_FFS!
+ -- Power offset of NZP CSI-RS RE to SS RE. Corresponds to L1 parameter 'Pc_SS' (see 38.214, section FFS_Section)
+ powerControlOffsetSS NULL OPTIONAL, -- WS modification: was FFS_Value
+ -- Scrambling ID (see 38.214, section 5.2.1.3.1)
+ scramblingID INTEGER(0), -- WS modification: was TYPE_FFS!
+ -- Periodicity and slot offset
+ csi-RS-timeConfig CHOICE {
+ sl5 INTEGER (0..4),
+ sl10 INTEGER (0..9),
+ sl20 INTEGER (0..19),
+ sl40 INTEGER (0..39),
+ sl80 INTEGER (0..79),
+ sl160 INTEGER (0..159),
+ sl320 INTEGER (0..319),
+ sl640 INTEGER (0..639)
+ }
+}
+
+NZP-CSI-RS-ResourceId ::= INTEGER (0..maxNrofNZP-CSI-RS-Resources-1)
+
+ZP-CSI-RS-Resource ::= SEQUENCE {
+ zp-csi-rs-ResourceId ZP-CSI-RS-ResourceId,
+ -- OFDM symbol and subcarrier occupancy of the CSI-RS resource within a slot (see 38.214, section REF)
+ resourceMapping NULL -- WS modification: was TYPE_FFS!
+
+}
+
+ZP-CSI-RS-ResourceId ::= INTEGER (0..maxNrofZP-CSI-RS-Resources-1)
+
+CSI-IM-ResourceConfig ::= SEQUENCE {
+ csi-IM-ResourceConfigId CSI-IM-ResourceConfigId,
+
+ -- The resource element pattern for the CSI-IM resource
+ -- Corresponds to L1 parameter 'CSI-IM-RE-pattern' (see 38.214, section 5.2.2.3.4)
+ csi-IM-ResourceElementPattern ENUMERATED {pattern2-2, pattern4-1},
+
+ -- OFDM symbol and subcarrier occupancy of the CSI-IM resource within a slot
+ -- Corresponds to L1 parameter 'CSI-IM-ResourceMapping' (see 38.214, section 5.2.2.3.4)
+ -- FFS_Values: RAN1 indicated "symbol locations: [0..13] and subcarrier locations: [0..9]" -> Should this be a bitmap of 9x13? Or two separate?
+ resourceMapping NULL OPTIONAL -- WS modification: was TYPE_FFS!
+}
+
+CSI-IM-ResourceConfigId ::= INTEGER (0..maxNrofCSI-IM-Resources-1)
+
+CSI-SSB-Resource ::= SEQUENCE {
+ -- FFS: Undefined what the IE CSI-SSB-Resource contains.
+}
+
+-- Configuration of a CSI-Report sent on L1 (e.g. PUCCH) (see 38.214, section 5.2.1)
+CSI-ReportConfig ::= SEQUENCE {
+ reportConfigId CSI-ReportConfigId,
+ -- Time domain behavior of reporting configuration
+ reportConfigType CHOICE {
+ periodic SEQUENCE {
+ -- Periodicity and slot offset . Corresponds to L1 parameter 'ReportPeriodicity'and 'ReportSlotOffset'
+ -- (see 38.214, section section 5.2.1.4).
+ reportSlotConfig CHOICE {
+ sl5 INTEGER(0..4),
+ sl10 INTEGER(0..9),
+ sl20 INTEGER(0..19),
+ sl40 INTEGER(0..39),
+ sl80 INTEGER(0..79),
+ sl160 INTEGER(0..159),
+ sl320 INTEGER(0..319)
+ },
+ -- Indicates which PUCCH resource to use for reporting on PUCCH.
+ pucch-CSI-ResourceIndex NULL -- WS modification: was TYPE_FFS!
+ },
+ semiPersistent SEQUENCE {
+ -- Periodicity and slot offset. Corresponds to L1 parameter 'ReportPeriodicity' and 'ReportSlotOffset'
+ -- (see 38.214, section section 5.2.1.4).
+ reportSlotConfig CHOICE {
+ sl5 INTEGER(0..4),
+ sl10 INTEGER(0..9),
+ sl20 INTEGER(0..19),
+ sl40 INTEGER(0..39),
+ sl80 INTEGER(0..79),
+ sl160 INTEGER(0..159),
+ sl320 INTEGER(0..319)
+ },
+ -- Indicates which PUCCH resource to use for reporting on PUCCH.
+ pucch-CSI-ResourceIndex NULL -- WS modification: was TYPE_FFS!
+ },
+ aperiodic SEQUENCE {
+ -- Timing offset Y for aperiodic reporting. A particular value is indicated in DCI. (see 38.214, section 5.2.1.1)
+ aperiodicReportSlotOffset NULL -- WS modification: was TYPE_FFS!
+ }
+ },
+ -- The CSI related quanities to report (see 38.214, section REF)
+ reportQuantity CHOICE {
+ cRI-RI-PMI-CQI NULL,
+ cRI-RI-i1 NULL,
+ cRI-RI-i1-CQI SEQUENCE {
+ -- PRB bundling size to assume for CQI calcuation when reportQuantity is CRI/RI/i1/CQI
+ -- Corresponds to L1 parameter 'PDSCH-bundle-size-for-CSI' (see 38.214, section FFS_Section)
+ pdsch-BundleSizeForCSI ENUMERATED {n2, n4} OPTIONAL
+ },
+ cRI-RI-CQI NULL,
+ cRI NULL,
+ cRI-RSRP NULL,
+ spare1 NULL,
+ spare0 NULL
+ },
+ -- Reporting configuration in the frequency domain. (see 38.214, section 5.2.1)
+ reportFreqConfiguration SEQUENCE {
+ -- Indicates whether the UE shall report a single (wideband) or multiple (subband) CQI. (see 38.214, section 5.2.1.4)
+ cqi-FormatIndicator ENUMERATED { widebandCQI, subbandCQI },
+ -- Indicates whether the UE shall report a single (wideband) or multiple (subband) PMI. (see 38.214, section 5.2.1.4)
+ pmi-FormatIndicator ENUMERATED { widebandPMI, subbandPMI },
+ -- Indicates a contiguous or non-contigous subset of subbands in the bandwidth part which CSI shall be reported
+ -- for. FFS: Each bit in the bit-string represents one subband. The right-most bit in the bit string represents the
+ -- lowest subband in the BWP. (see 38.214, section 5.2.1.4)
+ -- FFS: Size of the bitmap. Introduce a CHOICE with different bitmap lengths depening on number of subbands in carrier/BWP?
+ csi-ReportingBand BIT STRING (SIZE (FFS))
+ },
+ -- Time domain measurement restriction for the channel (signal) measurements. (see 38.214, section 5.2.1.1)
+ measRestrictionTimeForChannel NULL, -- WS modification: was TYPE_FFS!
+ -- Time domain measurement restriction for interference measurements. (see 38.214, section 5.2.1.1)
+ measRestrictionTimeForInterference NULL, -- WS modification: was TYPE_FFS!
+ -- Codebook configuration for Type-1 or Type-II including codebook subset restriction
+ codebookConfig CodebookConfig,
+ -- Maximum number of CQIs per CSI report (cf. 1 for 1-CW, 2 for 2-CW)
+ nrofCQIsPerReport ENUMERATED {n1, n2},
+ -- Turning on/off group beam based reporting (see 38.214, section FFS_Section)
+ groupBasedBeamReporting CHOICE {
+ enabled SEQUENCE {
+ -- Number of beams to report for group based beam reporting (see 38.214, section REF)
+ nrofBeamsToReport INTEGER (2..4) -- WS modification: was TYPE_FFS! but 38.214 suggests this range
+ },
+ disabled SEQUENCE {
+ -- The number (N) of measured RS resources to be reported per report setting in a non-group-based report.
+ -- N <= N_max, where N_max is either 2 or 4 depending on UE capability.
+ -- FFS: The signaling mechanism for the gNB to select a subset of N beams for the UE to measure and report.
+ -- FFS: Note: this parameter may not be needed for certain resource and/or report settings
+ -- FFS_ASN1: Change groupBasedBeamReporting into a CHOICE and include this field into the "no" option?
+ -- (see 38.214, section FFS_Section)
+ -- When the field is absent the UE applies the value 1
+ nrofReportedRS ENUMERATED {n1, n2, n3, n4} OPTIONAL
+ }
+ },
+
+ -- Which CQI table to use for CQI calculation. Corresponds to L1 parameter 'CQI-Table' (see 38.214, section FFS_Section)
+ -- FFS: Whether URLLC2 should be added as one option
+ cqi-Table ENUMERATED {dl-64QAM, dl-256QAM, urllc1, urllc2} OPTIONAL,
+ -- Indicates one out of two possible BWP-dependent values for the subband size
+ -- Corresponds to L1 parameter 'SubbandSize' (see 38.214, section FFS_Section)
+ -- FFS_Value: Clarify what value1 and value2 mean.
+ subbandSize ENUMERATED {value1, value2},
+ -- BLER target that the UE shall be assume in its CQI calculation.
+ -- Corresponds to L1 parameter 'BLER-Target' (see 38.214, section FFS_Section)
+ -- FFS_Values (now filled with spares)
+ bler-Target ENUMERATED {v0dot1, spare3, space2, spare1} OPTIONAL
+
+}
+
+CSI-ReportConfigId ::= INTEGER (0..maxNrofCSI-ReportConfig-1)
+
+-- Codebook configuration for Type-I and Type-II (see 38.214, section 5.2.2.2)
+CodebookConfig ::= SEQUENCE {
+ -- Number of antenna ports in first dimension
+ codebookConfig-N1 ENUMERATED {n1,n2,n3,n4,n6,n8,n12,n16},
+ -- Number of antenna ports in second dimension
+ codebookConfig-N2 ENUMERATED {n1,n2,n3,n4},
+ -- Codebook subset restriction for the different codebooks
+
+ -- CodebookType including possibly sub-types and the corresponding parameters for each. Corresponds to L1 parameter 'CodebookType'
+ -- (see 38.214, section 5.2.2.2)
+ codebookType CHOICE {
+ type1 SEQUENCE {
+ subType ENUMERATED {typeI-SinglePanel, typeI-MultiPanel},
+ -- Switch between Config 1 and Config 2
+ codebookMode ENUMERATED {config1, config2},
+ -- Number of panels, Ng, used in multi-panel codebook
+ numberOfPanels ENUMERATED {panels2, panels4} OPTIONAL, -- Cond TypeI-MultiPanel
+ codebookSubsetRestrictionType1 CHOICE {
+ -- Codebook subset restriction for Type I Single-panel codebook
+ -- Corresponds to L1 parameter 'TypeI-SinglePanel-CodebookSubsetRestriction' (see 38.214, section FFS_Section)
+ -- FFS_Value: RAN1 indicated Bitmap of size N1*N2*O1*O2
+ singlePanel BIT STRING (SIZE (FFS)),
+
+ -- Codebook subset restriction for 2TX codebook
+ -- Corresponds to L1 parameter 'TypeI-SinglePanel-2Tx-CodebookSubsetRestriction' (see 38.214, section FFS_Section)
+ singlePanel2TX BIT STRING (SIZE (6)),
+
+ -- Codebook subset restriction for Type I Multi-panel codebook
+ -- Corresponds to L1 parameter 'TypeI-MultiPanel-CodebookSubsetRestriction' (see 38.214, section FFS_Section)
+ multiPanel BIT STRING (SIZE (FFS)),
+ -- i2 codebook subset restriction for Type I Single-panel codebook used when reportQuantity is CRI/Ri/i1/CQI
+ -- Corresponds to L1 parameter 'TypeI-SinglePanel-CodebookSubsetRestriction-i2' (see 38.214, section FFS_Section)
+ singlePanelCodebookSubsetRestriction-i2 BIT STRING (SIZE (16))
+ },
+ ri-Restriction CHOICE {
+ -- Restriction for RI for TypeI-SinglePanel-RI-Restriction
+ -- Corresponds to L1 parameter 'TypeI-SinglePanel-RI-Restriction' (see 38.214, section FFS_Section)
+ typeI-SinglePanelRI-Restriction BIT STRING (SIZE (8)),
+ -- Restriction for RI for TypeI-MultiPanel-RI-Restriction
+ -- Corresponds to L1 parameter 'TypeI-MultiPanel-RI-Restriction' (see 38.214, section FFS_Section)
+ typeI-MultiPanelRI-Restriction BIT STRING (SIZE (4))
+ }
+ },
+ type2 SEQUENCE {
+ subType ENUMERATED {typeII, typeII-PortSelection},
+ -- The size of the PSK alphabet, QPSK or 8-PSK
+ phaseAlphabetSize ENUMERATED {n4, n8},
+ -- If subband amplitude reporting is activated (true)
+ subbandAmplitude BOOLEAN,
+ -- Number of beams, L, used for linear combination
+ numberOfBeams ENUMERATED {beams2, beams3, beams4},
+ -- The size of the port selection codebook (parameter d)
+ portSelectionSamplingSize ENUMERATED {n1, n2, n3, n4} OPTIONAL, -- Cond TypeII-PortSelection
+ -- Codebook subset restriction for Type II codebook.
+ -- FFS: Clarify the meaning of the bitmap
+ -- FFS: The size of the bitmap is ceil(log2(nchoosek(O1*O2,4)))+8*N1*N2 ==> Clarify size. Present different bitmap sizes by CHOICE?
+ codebookSubsetRestrictionType2 BIT STRING (SIZE (FFS)),
+ ri-Restriction CHOICE {
+ -- Restriction for RI for TypeII-RI-Restriction
+ -- Corresponds to L1 parameter 'TypeII-RI-Restriction' (see 38.214, section FFS_Section)
+ typeII-RI-Restriction BIT STRING (SIZE (2)),
+ -- Restriction for RI for TypeII-PortSelection-RI-Restriction
+ -- Corresponds to L1 parameter 'TypeII-PortSelection-RI-Restriction' (see 38.214, section FFS_Section)
+ typeII-PortSelectionRI-Restriction BIT STRING (SIZE (2))
+ }
+ }
+ }
+}
+
+
+-- Linking a CSI-RS-ResourceConfig with a CSI-ReportConfig (see 38.214, section 5.2)
+CSI-MeasIdToAddMod ::= SEQUENCE {
+ csi-measId CSI-MeasId,
+ csi-RS-resourceConfigId CSI-RS-ConfigurationId,
+ csi-reportConfigId CSI-ReportConfigId,
+
+ -- For CQI-Emulation, i.e., how to measure and compute the CQI.
+ -- CHECK: Clarify further what the values mean.
+ -- CHECK: Is there a need to inform the UE which resource to use for which measurement (signal, interference, ...)?
+ measQuantity ENUMERATED {channel, interference}
+}
+
+CSI-MeasId ::= INTEGER (0..maxNrofCSI-MeasId-1)
+
+-- CHECK: Do the BeamManagement parameters really belong into the CSI context? Or rather to RLF/RLM?
+-- FFS_FIXME: BeamManagement IE is not used anywhere.
+BeamManagement ::= SEQUENCE {
+ -- Use of PRACH or/and PUSCH for beam in some combination, details FFS
+ linkReconfigurationRequest NULL OPTIONAL, -- WS modification: was FFS_Value
+ -- List of CSI-RS resouces used for beam failure detection
+ -- Corresponds to L1 parameter 'Beam-Failure-Detection-RS-ResourceConfig' (see 38.213, section 6)
+ failureDetectionResources NULL OPTIONAL, -- WS modification: was FFS_Value
+
+ -- Number of beam failure instances before the UE declares beam failure
+ -- Corresponds to L1 parameter 'Beam-Failure-Instance-MaxCount' (see 38.321, section FFS_Section)
+ beamFailureInstanceMaxCount NULL OPTIONAL, -- WS modification: was FFS_Value
+
+ -- Reference signal used to identify candidate beam
+ -- Corresponds to L1 parameter 'Candidate-Beam-RS-Identification-Resource' (see 38.213, section 6)
+ beamFailureCandidateBeamResource NULL OPTIONAL, -- WS modification: was FFS_Value
+
+ -- The candidate beam can be considered identified when metric X (FFS) of candidate beam is higher than a threshold"
+ -- Corresponds to L1 parameter 'Beam-failure-candidate-beam-threshold' (see 38.213, section 6)
+ beamFailureCandidateBeamThreshold NULL OPTIONAL, -- WS modification: was FFS_Value
+
+ -- RACH resource to send the beam failure recovery request
+ -- Corresponds to L1 parameter 'Beam-failure-recovery-request-RACH-Resource' (see 38.213, section 6)
+ beamFailureRecoveryRACH-Resource NULL OPTIONAL, -- WS modification: was FFS_Value
+
+ -- Window for beamfailure recovery
+ -- Corresponds to L1 parameter 'Beam-failure-recovery-request-window' (see 38.213, section 6)
+ beamFailureRecoveryRequestWindow NULL OPTIONAL, -- WS modification: was FFS_Value
+
+ -- CORESET configured to receive the Beam Failure Recovery Response. FFS: parameter name to be updated
+ -- Corresponds to L1 parameter 'Beam-Failure-Recovery-Response-CORESET' (see 38.213, section 6)
+ -- When the field is absent the UE applies the value FFS_DefaultValue
+ -- FFS_Value: Is this the ID of a CORESET defined elsewhere? Or is it really a ControlResourceSet IE?
+ recoveryControlResourceSet NULL OPTIONAL -- WS modification: was FFS_Value
+
+}
+
+-- TAG-CSI-MEAS-CONFIG-STOP
+-- TAG-FAILURE-REPORT-SCG-TO-OTHER-RAT-START
+-- FFS if failureType is needed
+
+FailureReportSCG-ToOtherRAT ::= SEQUENCE {
+ failureType ENUMERATED { t313-Expiry, randomAccessProblem,
+ rlc-MaxNumRetx, maxUL-TimingDiff,
+ scg-ChangeFailure, scg-reconfigFailure,
+ srb3-IntegrityFailure},
+ measResultServingFreqList MeasResultServFreqList2NR,
+ measResultNeighCells MeasResultList2NR,
+ ...
+}
+
+MeasResultServFreqList2NR ::= SEQUENCE (SIZE (1..maxServCell)) OF MeasResultServFreq2NR
+
+MeasResultServFreq2NR ::= SEQUENCE {
+ carrierFreq ARFCN-ValueNR,
+ measResultServingCell MeasResultNR,
+ measResultBestNeighServingCell MeasResultNR OPTIONAL
+}
+
+MeasResultList2NR ::= SEQUENCE (SIZE (1..maxFreq)) OF MeasResult2NR
+
+MeasResult2NR ::= SEQUENCE {
+ carrierFreq ARFCN-ValueNR,
+ measResult MeasResultListNR
+}
+
+-- TAG-FAILURE-REPORT-SCG-TO-OTHER-RAT-STOP
+-- TAG-FREQUENCY-INFO-UL-START
+
+FrequencyInfoUL ::= SEQUENCE {
+ -- FFS_FIXME: Frequency Information parameters need corrections (currently just inherited from LTE).
+ carrierFreqUL ARFCN-ValueNR OPTIONAL, -- Need OP
+ carrierBandwidthUL CarrierBandwidthNR OPTIONAL, -- Need OP
+ additionalSpectrumEmission AdditionalSpectrumEmission OPTIONAL, -- Need OP
+ p-Max P-Max OPTIONAL, -- Need OP
+ -- Enable or disable the NR UL transmission with a 7.5KHz shift to the LTE raster
+ frequencyShift7p5khz ENUMERATED {true} OPTIONAL, -- Cond FDD
+
+ -- The initial uplink BWP configuration for a SpCell. Corresponds to L1 parameter 'initial-UL-BWP'.
+ -- (see 38.331, section FFS_Section).
+ initialUplinkBandwidthPart BandwidthPart OPTIONAL -- Cond FDD-PCell
+}
+
+-- TAG-FREQUENCY-INFO-UL-STOP
+-- TAG-LOGICAL-CHANNEL-CONFIG-START
+
+LogicalChannelConfig ::= SEQUENCE {
+ ul-SpecificParameters SEQUENCE {
+ priority INTEGER (1..16),
+ prioritisedBitRate ENUMERATED {kBps0, kBps8, kBps16, kBps32, kBps64, kBps128, kBps256, kBps512,
+ kBps1024, kBps2048, kBps4096, kBps8192, kBps16384, kBps32768, kBps65536, infinity},
+ bucketSizeDuration ENUMERATED {ms50, ms100, ms150, ms300, ms500, ms1000, spare2, spare1},
+
+ -- FFS: Detailed handling of restrictions (UP email discussion)
+ -- Defined in L1 parameters but the value range must be checked.
+ allowedSubCarrierSpacing SubcarrierSpacing OPTIONAL,
+
+ allowedTiming NULL OPTIONAL, -- WS modification: was TYPE_FFS
+ logicalChannelGroup INTEGER (0..maxLCid) OPTIONAL,
+
+ logicalChannelSR-Mask BOOLEAN,
+
+ logicalChannelSR-DelayTimerApplied BOOLEAN
+ } OPTIONAL -- Cond UL
+
+ -- other parameters
+}
+
+-- TAG-LOGICAL-CHANNEL-CONFIG-STOP
+-- TAG-MAC-CELL-GROUP-CONFIG-START
+
+MAC-CellGroupConfig ::= SEQUENCE {
+ drx-Config DRX-Config OPTIONAL, -- Need R
+
+ schedulingRequestConfig SchedulingRequestConfig OPTIONAL,
+ bsr-Config BSR-Configuration OPTIONAL, -- Need N
+ tag-Config TAG-Configuration OPTIONAL, -- Need N
+ phr-Config PHR-Config OPTIONAL, -- Need N
+ sCellDeactivationTimer ENUMERATED {
+ ms20, ms40, ms80, ms160, ms200, ms240, ms320, ms400, ms480, ms520, ms640, ms720, ms840, ms1280, spare2,
+ spare1} OPTIONAL, -- Cond ServingCellWithoutPUCCH
+ -- FFS : configurable per SCell?
+ skipUplinkTxDynamic BOOLEAN
+}
+
+DRX-Config ::= CHOICE {
+ release NULL,
+ setup SEQUENCE {
+ drx-onDurationTimer ENUMERATED {
+ ms1-32, ms2-32, ms3-32, ms4-32, ms5-32, ms6-32, ms7-32, ms8-32, ms9-32, ms10-32, ms11-32,
+ ms12-32, ms13-32, ms14-32, ms15-32, ms16-32, ms17-32, ms18-32, ms19-32, ms-20-32, ms21-32,
+ ms22-32, ms23-32, ms24-32, ms25-32, ms26-32, ms27-32, ms28-32, ms29-32, ms30-32, ms31-32,
+ ms1, ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40, ms50, ms60,
+ ms80, ms100, ms200, ms300, ms400, ms500, ms600, ms800, ms1000, ms1200,
+ ms1600, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 },
+ drx-InactivityTimer ENUMERATED {
+ ms0, ms1, ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40,ms50, ms60, ms80,
+ ms100, ms200, ms300, ms500, ms750, ms1280, ms1920, ms2560, spare9, spare8,
+ spare7, spare6, spare5, spare4, spare3, spare2, spare1},
+ drx-HARQ-RTT-TimerDL INTEGER (0..56),
+ drx-HARQ-RTT-TimerUL INTEGER (0..56),
+ drx-RetransmissionTimerDL ENUMERATED {
+ sl0, sl1, sl2, sl4, sl6, sl8, sl16, sl24, sl33, sl40, sl64, sl80, sl96, sl112, sl128,
+ spare15, spare14, spare13, spare12, spare11, spare10, spare9,
+ spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1},
+ drx-RetransmissionTimerUL ENUMERATED {
+ sl0, sl1, sl2, sl4, sl6, sl8, sl16, sl24, sl33, sl40, sl64, sl80, sl96, sl112, sl1128,
+ u160sl160, u320sl320, spare15, spare14, spare13, spare12, spare11, spare10, spare9,
+ spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 },
+ -- FFS units and dependency on numerology for DL and UL retransmission timers
+ drx-LongCycleStartOffset CHOICE {
+ ms10 INTEGER(0..9),
+ ms20 INTEGER(0..19),
+ ms32 INTEGER(0..31),
+ ms40 INTEGER(0..39),
+ ms60 INTEGER(0..59),
+ ms64 INTEGER(0..63),
+ ms70 INTEGER(0..69),
+ ms80 INTEGER(0..79),
+ ms128 INTEGER(0..127),
+ ms160 INTEGER(0..159),
+ ms256 INTEGER(0..255),
+ ms320 INTEGER(0..319),
+ ms512 INTEGER(0..511),
+ ms640 INTEGER(0..639),
+ ms1024 INTEGER(0..1023),
+ ms1280 INTEGER(0..1279),
+ ms2048 INTEGER(0..2047),
+ ms2560 INTEGER(0..2559),
+ ms5120 INTEGER(0..5119),
+ ms10240 INTEGER(0..10239)
+ },
+ -- FFS need for finer offset granulary
+ -- FFS need for shorter values for long and short cycles
+ shortDRX SEQUENCE {
+ drx-ShortCycle ENUMERATED {
+ ms2, ms3, ms4, ms5, ms6, ms7, ms8, ms10, ms14, ms16, ms20, ms30, ms32,
+ ms35, ms40, ms64, ms80, ms128, ms160, ms256, ms320, ms512, ms640, spare9,
+ spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 },
+ drx-ShortCycleTimer INTEGER (1..16)
+ } OPTIONAL, -- Need R
+ drx-SlotOffset ENUMERATED {
+ ms0, ms1-32,ms2-32, ms3-32, ms4-32, ms5-32, ms6-32, ms7-32, ms8-32, ms9-32, ms10-32, ms11-32,
+ ms12-32, ms13-32, ms14-32, ms15-32, ms16-32, ms17-32, ms18-32, ms19-32, ms-20-32, ms21-32,
+ ms22-32, ms23-32, ms24-32, ms25-32, ms26-32, ms27-32, ms28-32, ms29-32, ms30-32, ms31-32 } }
+}
+
+PHR-Config ::= CHOICE {
+ release NULL,
+ setup SEQUENCE {
+ phr-PeriodicTimer ENUMERATED {sf10, sf20, sf50, sf100, sf200,sf500, sf1000, infinity},
+ phr-ProhibitTimer ENUMERATED {sf0, sf10, sf20, sf50, sf100,sf200, sf500, sf1000},
+ phr-Tx-PowerFactorChange ENUMERATED {dB1, dB3, dB6, infinity},
+ multiplePHR BOOLEAN,
+ phr-Type2PCell BOOLEAN,
+ phr-Type2OtherCell BOOLEAN,
+ phr-ModeOtherCG ENUMERATED {real, virtual}
+ }
+}
+
+
+TAG-Config ::= SEQUENCE {
+ tag-ToReleaseList TAG-ToReleaseList OPTIONAL, -- Need N
+ tag-ToAddModList TAG-ToAddModList OPTIONAL -- Need N
+}
+
+TAG-ToReleaseList ::= SEQUENCE (SIZE (1..maxNrofTAGs)) OF TAG-Id
+TAG-ToAddModList ::= SEQUENCE (SIZE (1..maxNrofTAGs)) OF TAG-ToAddMod
+TAG-ToAddMod ::= SEQUENCE {
+ tag-Id TAG-Id,
+ timeAlignmentTimer TimeAlignmentTimer,
+ ...
+}
+
+TAG-Id ::= INTEGER (0.. maxNrofTAGs-1)
+
+TimeAlignmentTimer ::= ENUMERATED {ms500, ms750, ms1280, ms1920, ms2560, ms5120,ms10240, infinity}
+
+BSR-Config ::= SEQUENCE {
+ -- FFS: other values for periodicBSR-Timer, "every PDU" value
+ periodicBSR-Timer ENUMERATED {
+ sf1, sf5, sf10, sf16, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf320, sf640, sf1280, sf2560, infinity},
+ retxBSR-Timer ENUMERATED { sf10, sf20, sf40, sf80, sf160, sf320, sf640, sf1280, sf2560, sf5120, sf10240},
+ logicaChannelSR-DelayTimer ENUMERATED { sf20, sf40, sf64, sf128, sf512, sf1024, sf2560, spare1} OPTIONAL
+}
+
+
+
+-- TAG-MAC-CELL-GROUP-CONFIG-STOP
+-- TAG-MEAS-CONFIG-START
+
+MeasConfig ::= SEQUENCE {
+ -- Measurement objects
+ measObjectToRemoveList MeasObjectToRemoveList OPTIONAL,
+ measObjectToAddModList MeasObjectToAddModList OPTIONAL,
+
+ -- Reporting configurations
+ reportConfigToRemoveList ReportConfigToRemoveList OPTIONAL,
+ reportConfigToAddModList ReportConfigToAddModList OPTIONAL,
+
+ -- Measurement identities
+ measIdToRemoveList MeasIdToRemoveList OPTIONAL,
+ measIdToAddModList MeasIdToAddModList OPTIONAL,
+
+ -- Other parameters
+ -- s-Measure config
+ s-MeasureConfig CHOICE {
+ ssb-rsrp RSRP-Range,
+ csi-rsrp RSRP-Range
+ } OPTIONAL,
+
+ quantityConfig QuantityConfig OPTIONAL,
+
+ -- Placehold for measGapConfig
+ measGapConfig MeasGapConfig OPTIONAL
+}
+
+MeasObjectToRemoveList ::= SEQUENCE (SIZE (1..maxNrofObjectId)) OF MeasObjectId
+
+MeasIdToRemoveList ::= SEQUENCE (SIZE (1..maxNrofMeasId)) OF MeasId
+
+ReportConfigToRemoveList ::= SEQUENCE (SIZE (1..maxNrofReportConfigId)) OF ReportConfigId
+
+-- TAG-MEAS-CONFIG-STOP
+-- TAG-MEAS-ID-START
+
+MeasId ::= INTEGER (1..maxNrofMeasId)
+
+-- TAG-MEAS-ID-STOP
+-- TAG-MEAS-ID-TO-ADD-MOD-LIST-START
+
+MeasIdToAddModList ::= SEQUENCE (SIZE (1..maxNrofMeasId)) OF MeasIdToAddMod
+
+MeasIdToAddMod ::= SEQUENCE {
+ measId MeasId,
+ measObjectId MeasObjectId OPTIONAL,
+ reportConfigId ReportConfigId
+}
+
+-- TAG-MEAS-ID-TO-ADD-MOD-LIST-STOP
+-- TAG-MEAS-OBJECT-ID-START
+
+MeasObjectId ::= INTEGER (1..maxNrofObjectId)
+
+-- TAG-MEAS-OBJECT-ID-STOP
+-- TAG-MEAS-OBJECT-NR-START
+
+MeasObjectNR ::= SEQUENCE {
+ carrierFreq ARFCN-ValueNR,
+
+ --RS configuration (e.g. SMTC window, CSI-RS resource, etc.)
+ referenceSignalConfig ReferenceSignalConfig OPTIONAL,
+
+ --Consolidation of L1 measurements per RS index
+ absThreshSS-BlocksConsolidation ThresholdNR OPTIONAL,
+ absThreshCSI-RS-Consolidation ThresholdNR OPTIONAL,
+
+ --Config for cell measurement derivation
+ nroSS-BlocksToAverage INTEGER (2..maxNroSS-BlocksToAverage) OPTIONAL,
+ nroCSI-RS-ResourcesToAverage INTEGER (2..maxNroCSI-RS-ResourcesToAverage) OPTIONAL,
+
+ -- Filter coefficients applicable to this measurement object
+ quantityConfigIndex INTEGER (1..maxQuantityConfigId),
+
+ --Frequency-specific offsets (only for events A3, A6)
+ offsetFreq Q-OffsetRangeList,
+
+ -- Cell list
+ cellsToRemoveList CellIndexList OPTIONAL,
+ cellsToAddModList CellsToAddModList OPTIONAL,
+
+ -- Black list
+ blackCellsToRemoveList CellIndexList OPTIONAL,
+ blackCellsToAddModList BlackCellsToAddModList OPTIONAL,
+
+ -- White list
+ whiteCellsToRemoveList CellIndexList OPTIONAL,
+ whiteCellsToAddModList WhiteCellsToAddModList OPTIONAL
+}
+
+-- FFS / TODO: To be updated based on email discussion[99#31][NR] Additional information for SSB and CSI-RS config (Ericsson)
+ReferenceSignalConfig::= SEQUENCE {
+
+ ssb-MeasurementTimingConfiguration SSB-MeasurementTimingConfiguration OPTIONAL,
+
+ ssbPresence CHOICE {
+ present SEQUENCE {
+ frequencyOffset NULL, -- WS modification: was TYPE_FFS!
+ subcarrierSpacing SubcarrierSpacing
+ },
+ notPresent SEQUENCE {
+ -- FFS: How to inform the UE where else to find the SSB. FFS whether to indicate here a carrier or a cell ID or multiple cell IDs
+ }
+ },
+
+ -- CSI-RS resources to be used for for CSI-RS based RRM measurements
+ csi-rs-ResourceConfig-Mobility CSI-RS-ResourceConfig-Mobility OPTIONAL, -- Need N
+
+ -- Indicates whether the UE can utilize serving cell timing to derive the index of SS block transmitted by neighbour cell:
+ useServingCellTimingForSync BOOLEAN
+}
+
+-- A measurement timing configuration
+SSB-MeasurementTimingConfiguration ::= SEQUENCE {
+ -- Primary measurement timing configuration. Applicable for intra- and inter-frequency measurements.
+ smtc1 SEQUENCE {
+ -- Periodicity and offset of the measurement window in which to receive SS/PBCH blocks.
+ -- Periodicity and offset are given in number of subframes.
+ -- FFS_FIXME: This does not match the L1 parameter table!
+ -- (see 38.213, section REF):
+ periodicityAndOffset CHOICE {
+ sf5 INTEGER (0..4),
+ sf10 INTEGER (0..9),
+ sf20 INTEGER (0..19),
+ sf40 INTEGER (0..39),
+ sf80 INTEGER (0..79),
+ sf160 INTEGER (0..159)
+ },
+ -- Duration of the measurement window in which to receive SS/PBCH blocks. It is given in number of subframes
+ -- (see 38.213, section 4.1)
+ -- FFS: RAN1 discusses additional allowed durations:
+ duration ENUMERATED { sf1, sf5 },
+
+ -- The set of SS blocks to be measured within the SMTC measurement duration.
+ -- Corresponds to L1 parameter 'SSB-measured' (see FFS_Spec, section FFS_Section)
+ -- When the field is absent the UE measures on all SS-blocks
+ -- FFS_CHECK: Is this IE placed correctly.
+ ssb-ToMeasure CHOICE {
+ release NULL,
+ setup CHOICE {
+ -- bitmap for sub 3 GHz
+ shortBitmap BIT STRING (SIZE (4)),
+ -- bitmap for 3-6 GHz
+ mediumBitmap BIT STRING (SIZE (8)),
+ -- bitmap for above 6 GHz
+ longBitmap BIT STRING (SIZE (64))
+ }
+ } OPTIONAL -- Need M
+ },
+
+ -- Secondary measurement timing confguration for explicitly signalled PCIs. It uses the offset and duration from smtc1.
+ -- It is supported only for intra-frequency measurements in RRC CONNECTED.
+ smtc2 SEQUENCE {
+ -- PCIs that are known to follow this SMTC.
+ pci-List SEQUENCE (SIZE (1..maxNrofPCIsPerSMTC)) OF PhysicalCellId OPTIONAL,
+ -- Periodicity for the given PCIs. Timing offset and Duration as provided in smtc1.
+ periodicty NULL -- WS modification: was TYPE_FFS!
+ } OPTIONAL -- Cond IntraFreqConnected
+}
+
+CSI-RS-ResourceConfig-Mobility ::= SEQUENCE {
+ -- MO specific values
+csi-rs-MeasurementBW SEQUENCE {
+ csi-rs-measurementBW-size ENUMERATED { size24, size48, size96, size192, size268},
+ csi-rs-measurement-BW-start ENUMERATED {ffsTypeAndValue},
+ associated-SSB ENUMERATED {ffsTypeAndValue},
+ qcled-SSB BOOLEAN,
+ isServingCellMO BOOLEAN
+},
+ -- subcarrier spacing of CSI-RS. It can take the same values available also for the data channels and for SSB
+ subcarrierSpacing SubcarrierSpacing,
+
+ -- List of resources
+ csi-rs-ResourceList-Mobility SEQUENCE (SIZE (1..maxNrofCSI-RS-ResourcesRRM)) OF CSI-RS-Resource-Mobility
+}
+
+CSI-RS-Resource-Mobility ::= SEQUENCE {
+ csi-rs-ResourceId-RRM CSI-RS-ResourceId-RRM,
+ cellId PhysicalCellId,
+ -- Contains periodicity and slot offset for periodic/semi-persistent CSI-RS (see 38.211, section x.x.x.x)FFS_Ref
+ -- FFS: Whether ms80 and ms160 are supported
+ slotConfig CHOICE {
+ ms5 INTEGER (0..4),
+ ms10 INTEGER (0..9),
+ ms20 INTEGER (0..19),
+ ms40 INTEGER (0..39),
+ ms80 INTEGER (0..79),
+ ms160 INTEGER (0..159)
+ },
+ -- Resource Element mapping pattern for CSI-RS (see 38.211, section x.x.x.x) FFS_Ref
+ resourceElementMappingPattern NULL, -- WS modification: was TYPE_FFS!
+ -- FFS / TODO: ADD DESCRIPTION (see 38.211, section x.x.x.x) FFS_Ref
+ sequenceGenerationConfig NULL -- WS modification: was TYPE_FFS!
+}
+
+CSI-RS-ResourceId-RRM ::= INTEGER (0..maxNrofCSI-RS-ResourcesRRM-1)
+
+Q-OffsetRangeList ::= SEQUENCE {
+ rsrpOffsetSSB Q-OffsetRange DEFAULT dB0,
+ rsrqOffsetSSB Q-OffsetRange DEFAULT dB0,
+ sinrOffsetSSB Q-OffsetRange DEFAULT dB0,
+ rsrpOffsetCSI-RS Q-OffsetRange DEFAULT dB0,
+ rsrqOffsetCSI-RS Q-OffsetRange DEFAULT dB0,
+ sinrOffsetCSI-RS Q-OffsetRange DEFAULT dB0
+}
+
+ThresholdNR ::= SEQUENCE{
+ threshold-RSRP RSRP-Range OPTIONAL,
+ threshold-RSRQ RSRQ-Range OPTIONAL,
+ threshold-SINR SINR-Range OPTIONAL
+}
+
+CellsToAddModList ::= SEQUENCE (SIZE (1..maxNrofCellMeas)) OF CellsToAddMod
+
+CellsToAddMod ::= SEQUENCE {
+ cellIndex INTEGER (1..maxNrofCellMeas),
+ physCellId PhysCellId,
+ cellIndividualOffset Q-OffsetRangeList
+}
+
+BlackCellsToAddModList ::= SEQUENCE (SIZE (1..maxNrofCellMeas)) OF BlackCellsToAddMod
+
+BlackCellsToAddMod ::= SEQUENCE {
+ cellIndex INTEGER (1..maxNrofCellMeas),
+ physCellIdRange PhysCellIdRange
+}
+
+
+WhiteCellsToAddModList ::= SEQUENCE (SIZE (1..maxNrofCellMeas)) OF WhiteCellsToAddMod
+
+WhiteCellsToAddMod ::= SEQUENCE {
+ cellIndex INTEGER (1..maxNrofCellMeas),
+ physCellIdRange PhysCellIdRange
+}
+
+-- TAG-MEAS-OBJECT-NR-STOP
+-- TAG-MEAS-OBJECT-TO-ADD-MOD-LIST-START
+
+MeasObjectToAddModList ::= SEQUENCE (SIZE (1..maxNrofObjectId)) OF MeasObjectToAddMod
+
+MeasObjectToAddMod ::= SEQUENCE {
+ measObjectId MeasObjectId,
+ measObject CHOICE {
+ measObjectNR MeasObjectNR,
+ measObjectEUTRA MeasObjectEUTRA
+ }
+}
+
+-- TAG-MEAS-OBJECT-TO-ADD-MOD-LIST-STOP
+-- TAG-MEAS-RESULTS-START
+
+MeasResults ::= SEQUENCE {
+ measId MeasId,
+ measResultServingFreqList MeasResultServFreqList,
+ measResultNeighCells CHOICE {
+ measResultListNR MeasResultListNR,
+ measResultListEUTRA MeasResultListEUTRA,
+ ...
+ } OPTIONAL
+}
+
+MeasResultServFreqList ::= SEQUENCE (SIZE (1..maxServCell)) OF MeasResultServFreq
+
+MeasResultServFreq ::= SEQUENCE {
+ servFreqId ServCellIndex OPTIONAL,
+ measResultServingCell MeasResultNR,
+ measResultBestNeighCell MeasResultNR }
+
+MeasResultListNR ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultNR
+
+MeasResultNR ::= SEQUENCE {
+ physCellId PhysCellId OPTIONAL,
+ --FFS: Details of cgi info
+ cgi-Info NULL, -- WS modification: was TYPE_FFS!
+ measResult SEQUENCE {
+ cellResults SEQUENCE{
+ resultsSSBCell ResultsSSBCell OPTIONAL,
+ resultsCSI-RSCell ResultsCSI-RSCell OPTIONAL
+ },
+ rsIndexResults SEQUENCE{
+ resultsSSBIndexes ResultsPerSSBIndexList OPTIONAL,
+ resultsCSI-RSIndexes ResultsPerCSI-RSIndexList OPTIONAL
+ } OPTIONAL
+ }
+}
+
+ResultsSSBCell ::= SEQUENCE {
+ ssb-Cellrsrp RSRP-Range OPTIONAL,
+ ssb-Cellrsrq RSRQ-Range OPTIONAL,
+ ssb-Cellsinr SINR-Range OPTIONAL
+}
+
+ResultsCSI-RSCell ::= SEQUENCE {
+ csi-rs-Cellrsrp RSRP-Range OPTIONAL,
+ csi-rs-Cellrsrq RSRQ-Range OPTIONAL,
+ csi-rs-Cellsinr SINR-Range OPTIONAL
+}
+
+ResultsPerSSBIndexList ::= SEQUENCE (SIZE (1..maxNroSSBs)) OF ResultsPerSSBIndex
+
+ResultsPerSSBIndex ::= SEQUENCE {
+ ssb-Index SSB-Index,
+ ss-rsrp RSRP-Range OPTIONAL,
+ ss-rsrq RSRQ-Range OPTIONAL,
+ ss-sinr SINR-Range OPTIONAL
+}
+
+ResultsPerCSI-RSIndexList ::= SEQUENCE (SIZE (1..maxNroCSI-RS)) OF ResultsPerCSI-RSIndex
+
+ResultsPerCSI-RSIndex ::= SEQUENCE {
+ csi-rsIndex CSI-RSIndex,
+ csi-rsrp RSRP-Range OPTIONAL,
+ csi-rsrq RSRQ-Range OPTIONAL,
+ csi-sinr SINR-Range OPTIONAL
+}
+
+-- TAG-MEAS-RESULTS-STOP
+-- TAG-PDCCH-CONFIG-START
+
+-- Downlink control channel related parameters
+PDCCH-Config ::= SEQUENCE {
+ -- List of Control Resource Sets (CORESETs) to be used by the UE
+ controlResourceSetToAddModList SEQUENCE(SIZE (1..maxNrofControlResourceSets)) OF ControlResourceSet OPTIONAL,
+ controlResourceSetToReleaseList SEQUENCE(SIZE (1..maxNrofControlResourceSets)) OF ControlResourceId OPTIONAL,
+
+ searchSpacesToAddModList SEQUENCE(SIZE (1..maxNrofSearchSpaces)) OF SearchSpace OPTIONAL,
+ searchSpacesToReleaseList SEQUENCE(SIZE (1..maxNrofSearchSpaces)) OF SearchSpaceId OPTIONAL,
+
+
+ -- FFS: Is this timing information applicable to the entire PDCCH or could it be different per CORESET?
+ -- FFS: Is there a default timing (to be used at least until first reconfiguration). Are the fields optionally present?
+ timing SEQUENCE {
+ dl-assignment-to-DL-data NULL, -- WS modification: was TYPE_FFS!
+ ul-assignment-to-UL-data NULL, -- WS modification: was TYPE_FFS!
+ dl-data-to-UL-ACK NULL -- WS modification: was TYPE_FFS!
+ } OPTIONAL
+
+}
+
+-- A time/frequency control resource set (CORESET) in which to search for downlink control information (see 38.213, section x.x.x.x)FFS_Ref
+ControlResourceSet ::= SEQUENCE {
+ controlResourceSetId ControlResourceSetId,
+
+ -- Frequency domain resources for the CORESET. The network ensures that the CORESET is within the BWP configured for a UE. (see 38.213, REF)
+ frequencyDomainResources NULL, -- WS modification: was TYPE_FFS!
+ -- Starting OFDM symbol for the CORESET (see 38.213, REF)
+ startSymbol INTEGER (0..maxCoReSetStartSymbol),
+ -- Contiguouse time duration of the CORESET in number of symbols see 38.213, section x.x.x.x)FFS_Ref
+ duration INTEGER (1..maxCoReSetDuration),
+ -- Resource Element Groups (REGs) can be bundled to create REG bundles. This parameter defines the size of such bundles.
+ -- (see 38.211, section 7.3.2.2)
+ reg-BundleSize ENUMERATED {n2, n3, n6},
+ -- Mapping of Control Channel Elements (CCE) to Resource Element Groups (REG). (see 38.211, 38.213, FFS_REF)
+ cce-reg-MappingType ENUMERATED { interleaved, nonInterleaved },
+ -- Precoder granularity in frequency domain (see 38.213, section FFS_REF)
+ precoderGranularity NULL, -- WS modification: was TYPE_FFS!
+ -- Corresponds to L1 parameter 'CORESET-interleaver-rows' (see 38.211, 38.213, section FFS_Section)
+ interleaverRows ENUMERATED {n2, n3, n6} OPTIONAL,
+
+ -- Corresponds to L1 parameter 'CORESET-shift-index' (see 38.211, 38.213, section FFS_Section)
+ shiftIndex NULL, -- WS modification: was FFS_Value OPTIONAL,
+
+ -- Reference to a configured TCI State providing QCL configuration/indication for PDCCH.
+ -- Corresponds to L1 parameter 'TCI-StateRefId' (see 38.211, 38.213, section FFS_Section)
+ tci-StateRefId NULL, -- WS modification: was FFS_Value OPTIONAL,
+
+ -- PDCCH DMRS scrambling initalization. Corresponds to L1 parameter 'PDCCH-DMRS-Scrambling-ID' (see 38.214, section 5.1)
+ -- When the field is absent the UE applies the value TBD/FFS
+ pdcch-DMRS-ScramblingID NULL -- WS modification: was FFS_Value OPTIONAL
+}
+
+-- ID of a Control Resource Set.
+ControlResourceSetId ::= INTEGER (0..maxNrofControlResourceSets-1)
+
+-- A search space defines how/where to search for PDCCH candidates. A search space is associated with one Control Resource Set
+SearchSpace ::= SEQUENCE {
+ searchSpaceId SearchSpaceId,
+
+ -- The CORESET applicable for this SearchSpace.
+ -- FFS: Value 0 identifies the common CORESET configured in MIB?
+ -- FFS: Values 1..maxNrofControlResourceSets-1 identify CORESETs configured by dedicated signalling?
+ controlResourceSetId ControlResourceSetId,
+
+ -- Slots for PDCCH Monitoring configured as periodicity and offset. Corresponds to L1 parameters 'Montoring-periodicity-PDCCH-slot' and
+ -- 'Montoring-offset-PDCCH-slot' (see 38.213, section 10)
+ -- sl15, sl10, sl20 FFS
+ monitoringSlotPeriodicityAndOffset CHOICE {
+ sl1 NULL,
+ sl2 INTEGER (0..1),
+ sl5 INTEGER (0..4),
+ sl10 INTEGER (0..9),
+ sl20 INTEGER (0..19)
+ } OPTIONAL,
+
+ -- Symbols for PDCCH monitoring in the slots configured for PDCCH monitoring (see monitoringSlotPeriodicityAndOffset).
+ -- The most significant (left) bit represents the first OFDM in a slot. The least significant (right) bit represents the last symbol.
+ -- Corresponds to L1 parameter 'Montoring-symbols-PDCCH-within-slot' (see 38.213, section 10)
+ monitoringSymbolsWithinSlot BIT STRING (SIZE (14)) OPTIONAL,
+
+ -- Number of candidates per aggregation level. Corresponds to L1 parameter 'Aggregation-level-1' to 'Aggregation-level-8'
+ -- (see 38.213, section 10)
+ nrofCandidates SEQUENCE {
+ aggregationLevel1 ENUMERATED {n0, n1, n2, n3, n4, n5, n6, n8},
+ aggregationLevel2 ENUMERATED {n0, n1, n2, n3, n4, n5, n6, n8},
+ aggregationLevel4 ENUMERATED {n0, n1, n2, n3, n4, n5, n6, n8},
+ aggregationLevel8 ENUMERATED {n0, n1, n2, n3, n4, n5, n6, n8}
+ },
+
+
+
+ -- Indicates whether this is a common search space (present) or a UE specific search space.
+ -- FFS: How many CSSs can the NW configure? And can a CSS only be in the common CORESET?
+ searchSpaceType CHOICE {
+ common SEQUENCE {
+ -- Monitoring of a group common PDCCH for at least SFI (Slot Format Indicator)
+ -- FFS_CHECK: Is this really part of the common search space? Or entirely separate?
+ sfi-PDCCH SFI-PDCCH,
+ -- Turn on monitoring of DL preemption DCI
+ -- FFS_CHECK: Is Preemp-DL needed at all? Can't this be derived from the presence of the following INT-RNTI field?
+ preemp-DL BOOLEAN,
+ -- RNTI used for indication pre-emption in DL. Also connected to monitoring of a Type2-PDCCH common search space.
+ -- (see 38.213, section 10)
+ -- FFS: What does the abbreviation stand for? Add a better description
+ -- FFS:_Verify that RNTI is still 16 bit.
+ int-RNTI BIT STRING (SIZE (16)),
+ -- Set selection for DL-preemption indication, the set indication two different manners the DL preemption DCI
+ -- is interpreteded by the UE. Corresponds to L1 parameter 'int-TF-unit' (see 38.213, section 10.1)
+ -- FFS: Clarify description.
+ int-TF ENUMERATED {set0, set1},
+ -- Monitoring periodicity of DCI with INT-RNTI in number of slots.
+ -- Corresponds to L1 parameter 'INT-monitoring-periodicity' (see 38.213, section 11.2)
+ monitoringPeriodicity NULL OPTIONAL -- WS modification: was FFS_Value
+ },
+ ue-Specific SEQUENCE {
+ -- FFS: Parameters that are applicable only for USS?
+ }
+ } OPTIONAL -- Need M
+}
+
+SearchSpaceId ::= INTEGER (1..maxNrofSearchSpaces)
+
+-- Configuration of monitoring a Group-Common-PDCCH for Slot-Format-Indicators (SFI)
+SFI-PDCCH ::= SEQUENCE {
+
+ -- Monitoring periodicity of SFI PDCCH in slots. Should be 8 values in total. RAN1 will decided the remainnig values, i.e. X1, X2, X3
+ -- Corresponds to L1 parameter 'SFI-monitoring-periodicity' (see 38.213, section FFS_Section)
+ monitoringPeriodicity ENUMERATED {sl1, sl2, sl5, sl10, sl20, spare3, spare2, spare1} OPTIONAL,
+
+ -- Maps a specific cell to a given SFI value within the DCI message
+ -- Corresponds to L1 parameter 'SFI-cell-to-SFI' (see 38.213, section FFS_Section)
+ sfi-CellToSFI SEQUENCE (SIZE(1..maxNrofAggregatedCellsPerCellGroup)) OF CellToSFI OPTIONAL,
+
+ -- The number of PDCCH candidates for the configured aggregation level.
+ -- Corresponds to L1 parameter 'SFI-Num-PDCCH-cand' (see 38.213, section FFS_Section)
+ nrofPDCCH-Candidates ENUMERATED {n1, n2},
+
+ -- The aggregation level for the SFI-PDCCH. Corresponds to L1 parameter 'SFI-Aggregation-Level' (see 38.213, section FFS_Section)
+ aggregationLevel ENUMERATED {n1, n2, n4, n8},
+
+ -- RNTI used for SFI on the given cell
+ -- Corresponds to L1 parameter 'SFI-RNTI' (see 38.213, section FFS_Section)
+ sfi-RNTI BIT STRING (SIZE (16)) OPTIONAL,
+
+ -- Payload length of SFI DCI. Corresponds to L1 parameter 'SFI-DCI-payload-length' (see 38.213, section FFS_Section)
+ dci-PayloadLength NULL OPTIONAL, -- WS modification: was TYPE_FFS!
+
+ -- Defines whether a specific CORESET is used or the CSS. Corresponds to L1 parameter 'SFI-SS' (see 38.213, section FFS_Section)
+ searchSpace NULL OPTIONAL, -- WS modification: was TYPE_FFS!
+
+ -- SFI value location within a DCI message, this fields gives the starting bit in the DCI message, assumption is that lenght is given RAN1 spec.
+ -- Corresponds to L1 parameter 'SFI-values' (see 38.213, section FFS_Section)
+ -- FFS_CHECK whether this field is placed correctly
+ sfi-PositionInDCI INTEGER (1..1) OPTIONAL -- WS modification: was MaxDCIpayload but it is undefined
+}
+
+-- Mapping for a given cell to SFI value within DCI message. Corresponds to L1 parameter 'cell-to-SFI' (see 38.213, section FFS_Section)
+CellToSFI ::= SEQUENCE {
+ -- FFS: Content and structure of this IE.
+
+ -- A list with SlotFormatCombinations. Each SlotFormatCombination comprises of one or more SlotFormats (see 38.211, section 4.3.2)
+ slotFormatCombinations SEQUENCE (SIZE (1..maxNrofSlotFormatCombinations)) OF SlotFormatCombination OPTIONAL
+}
+
+SlotFormatCombination ::= SEQUENCE {
+ slotFormatCombinationId SlotFormatCombinationId
+ -- slotFormats SEQUENCE (SIZE (1..maxNrofSlotFormatsPerCombination)) WS modification: comment this wrong construct
+}
+
+-- SFI index that is assoicated with a certian slot-format-combination
+-- Corresponds to L1 parameter 'SFI-index' (see 38.213, section FFS_Section)
+SlotFormatCombinationId ::= INTEGER (0..maxNrofSlotFormatCombinations-1)
+
+
+-- TAG-PDCCH-CONFIG-STOP
+-- TAG-PDCP-CONFIG-START
+
+PDCP-Config ::= SEQUENCE {
+ drb SEQUENCE {
+ discardTimer ENUMERATED {ms10, ms20, ms30, ms40, ms50, ms60, ms75, ms100, ms150, ms200, ms250, ms300, ms500, ms750, ms1500, infinity} OPTIONAL, -- Cond Setup
+ pdcp-SN-Size-UL ENUMERATED {len12bits, len18bits},
+ pdcp-SN-Size-DL ENUMERATED {len12bits, len18bits},
+ headerCompression CHOICE {
+ notUsed NULL,
+ rohc SEQUENCE {
+ maxCID INTEGER (1..16383) DEFAULT 15,
+ profiles SEQUENCE {
+ profile0x0001 BOOLEAN,
+ profile0x0002 BOOLEAN,
+ profile0x0003 BOOLEAN,
+ profile0x0004 BOOLEAN,
+ profile0x0006 BOOLEAN,
+ profile0x0101 BOOLEAN,
+ profile0x0102 BOOLEAN,
+ profile0x0103 BOOLEAN,
+ profile0x0104 BOOLEAN
+ },
+ uplinkOnlyROHC SEQUENCE {
+ maxCID INTEGER (1..16383) DEFAULT 15,
+ profiles SEQUENCE {
+ profile0x0006 BOOLEAN
+ }
+ },
+ ...
+ }
+ },
+
+ integrityProtection BOOLEAN,
+
+ statusReportRequired BOOLEAN OPTIONAL -- Cond Rlc-AM
+ } OPTIONAL, -- Cond DRB
+ -- FFS / TODO: Handle more than two secondary cell groups
+ moreThanOneRLC SEQUENCE {
+ primaryPath SEQUENCE {
+ cellGroup CellGroupId,
+ logicalChannel LogicalChannelIdentity
+ },
+ ul-DataSplitThreshold CHOICE {
+ release NULL,
+ setup ENUMERATED {
+ b0, b100, b200, b400, b800, b1600, b3200, b6400, b12800, b25600, b51200, b102400, b204800,
+ b409600, b819200, b1228800, b1638400, b2457600, b3276800, b4096000, b4915200, b5734400,
+ b6553600, infinity, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1}
+ },
+ ul-Duplication BOOLEAN
+ } OPTIONAL, -- Cond MoreThanOneRLC
+
+ t-Reordering ENUMERATED {
+ ms0, ms5, ms10, ms15, ms20, ms30, ms40, ms60, ms50, ms80, ms100, ms120, ms140, ms160, ms180, ms200, ms220,
+ ms240, ms260, ms280, ms300, ms500, ms750, ms1000, ms1250, ms1500, ms1750, ms2000, ms2250, ms2500, ms2750,
+ ms3000} OPTIONAL, -- Need R
+
+ -- FFS: whether ms0 is the same like outOfOrderDelivery
+ -- FFS: new values for t-Reordering
+ outOfOrderDelivery BOOLEAN,
+ ...
+}
+
+-- TAG-PDCP-CONFIG-STOP
+-- TAG-PDSCH-CONFIG-START
+
+PDSCH-Config ::= SEQUENCE {
+ -- Indicates whether to use code-block-group (CBG) based transmission (see 38.213, section x.x.x.x) FFS_Ref
+ -- FFS: Is this BOOLEAN parameter needed or can it be derived from the presence of the codeBlockGroupsPerTransportBlock?
+ codeBlockGroupTransmission BOOLEAN,
+ -- Maximum number of code-block-groups (CBGs) per TB. In case of multiple CW the maximum CBG is 4 (see 38.213, section 9.1.1)
+ maxCodeBlockGroupsPerTransportBlock ENUMERATED {n2, n4, n6, n8},
+ -- Indicates whether CBGFI for CBG based (re)transmission in DL is enabled (true). (see FFS_Specification, section FFS_Section)
+ codeBlockGroupFlushIndicator BOOLEAN,
+
+ -- Selection of the DMRS type to be used for DL (see 38.211, section 7.4.1.1.1)
+ dmrs-Type ENUMERATED {type1, type2} OPTIONAL, -- Need R
+ -- Position for additional DM-RS in DL, see Table 7.4.1.1.2-4 in 38.211.
+ -- The four values represent the cases of 1+0, 1+1, 1+1+1. 1+1+1+1 non-adjacent OFDM symbols for DL.
+ -- CHECK: Listed in RAN1 table. But should this really be in dedicated signalling?
+ dmrs-AdditionalPosition ENUMERATED {pos0, pos1, pos2, pos3} OPTIONAL, -- Need R
+ -- DM-RS groups that are QCL:ed, i.e. group 1 (see 38.214, section 5.1)
+ -- CHECK: Clarify how to configure the DMRS groups and the relation to TCI.
+ dmrs-group1 NULL, -- WS modification: was TYPE_FFS!
+ -- DM-RS groups that are QCL:ed, i.e. group 2 (see 38.214, section 5.1)
+ dmrs-group2 NULL, -- WS modification: was TYPE_FFS!
+
+ -- Configures downlink PTRS .
+ -- If absent of released, the UE assumes that downlink PTRS are not present. See 38.211 section 7.4.1.2.2
+ phaseTracking-RS CHOICE {
+ release NULL,
+ setup Downlink-PTRS-Config
+ } OPTIONAL, -- Need M
+
+ -- Contains Transmission Configuration Indicator (TCI) states for dynamically indicating (over DCI) a transmission configuration
+ -- which includes QCL-relationships between the DL RSs in one RS set and the PDSCH DMRS ports
+ -- (see 38.214, section 5.1.4)
+ tci-States NULL, -- WS modification: was TYPE_FFS!
+ -- Reference Signal set within a TCI state, e.g., which RSs, which QCL parameters, etc. (see 38.214, section 5.1.4)
+ tci-rs-SetConfig NULL, -- WS modification: was TYPE_FFS!
+ -- If at least spatial QCL is configured/indicated, this field indicates if TCI field is present or not present in DL-related DCI.
+ -- When the field is absent the UE considers the TCI to be absent/disabled.
+ -- FFS_RAN1: details of the granularity of the configuration, e.g. per CORESET, per UE.
+ -- Corresponds to L1 parameter 'TCI-PresentInDCI' (see 38,213, section 5.1.5)
+ tci-PresentInDCI ENUMERATED {enabled} OPTIONAL,
+ -- Accounts for overhead from CSI-RS, CORESET, etc. FFS: Clarify value range and description.
+ -- Corresponds to L1 parameter 'Xoh-PDSCH' (see 38.214, section 5.1.3.2)
+ xOverhead ENUMERATED {n0, n6, n12, n18} OPTIONAL, -- WS modification: was FFS_Value, values retrieved from 38.214
+
+ -- Indexes to possible symbol allcoations (the indexes point to entries in a UE specific table)
+ -- Corresponds to L1 parameter 'PDSCH-symbol-allocation' (see 38.214, section 5.1.2.1)
+ pdsch-symbolAllocation NULL OPTIONAL, -- WS modification: was FFS_Value
+ -- Resources that the UE should rate match PDSCH around.
+ rateMatchResourcesPDSCH SEQUENCE {
+ -- Resources patterns which the UE should rate match PDSCH around. The UE rate matches around the union of all resources
+ -- indicated in the nexted bitmaps. Corresponds to L1 parameter 'rate-match-PDSCH-resource-set' (see 38.214, section 5.1.2.2.3)
+ -- FFS_ASN1: Consider replacing by AddMod/Release lists
+ rateMatchPatterns CHOICE {
+ release NULL,
+ setup SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPattern
+ } OPTIONAL, -- Need M
+ lte-CRS-ToMatchAround CHOICE {
+ release NULL,
+ setup SEQUENCE {
+ -- Number of LTE CRS antenna port to rate-match around.
+ -- Corresponds to L1 parameter 'rate-match-resources-numb-LTE-CRS-antenna-port' (see 38.214, section 5.1.4)
+ nrofCRS-Ports ENUMERATED {n1, n2, n4},
+ -- Shifting value v-shift in LTE to rate match around LTE CRS
+ -- Corresponds to L1 parameter 'rate-match-resources-LTE-CRS-v-shift' (see 38.214, section 5.1.4)
+ v-Shift ENUMERATED {n0, n1, n2, n3, n4, n5}
+ }
+ } OPTIONAL -- Need M
+ },
+
+ -- Selection between config 1 and config 2 for RBG size for PDSCH. Corresponds to L1 parameter 'RBG-size-PDSCH' (see 38.214, section 5.1.2.2.1)
+ rbg-Size ENUMERATED {config1, config2},
+
+ -- Indicates which MCS table the UE shall use for PDSCH. Corresponds to L1 parameter 'MCS-Table-PDSCH' (see 38.214, section 5.1.3.1).
+ mcs-Table ENUMERATED {dl-64QAM, dl-256QAM},
+
+ -- Maximum number of code words that a single DCI may schedule. This changes the number of MCS/RV/NDI bits in the DCI message from 1 to 2.
+ maxNrofCodeWordsScheduledByDCI ENUMERATED {n1, n2} OPTIONAL, -- Need R
+
+ -- The number of HARQ processes to be used on the PDSCH of a serving cell.
+ -- Corresponds to L1 parameter 'number-HARQ-process-PDSCH' (see 38.214, section REF)
+ nrofHARQ-processesForPDSCH NULL, -- WS modification: was TYPE_FFS!
+
+
+ -- HARQ-ACK codebook is configured to be either semi-static of dynamic. This is applicable to both CA and none CA operation
+ -- Corresponds to L1 parameter 'HARQ-ACK-codebook' (see 38.213, section FFS_Section)
+ harq-ACK-Codebook ENUMERATED {semiStatic, dynamic},
+
+ -- Bundle size the UE may assume. Corresponds to L1 paramter 'PDSCH-bundle-size' (see 38.211, section 7.3.1.5)
+ -- FFS: Better description, value range
+ pdsch-BundleSize NULL, -- WS modification: no type was present
+
+ -- If set to true, the network indicates the PRB bundle size dynamically via DCI. Corresponds to L1 parameter 'PRB_bundling'
+ -- (see 38.214, section 5.1.2.3)
+ prbBundlingEnabled BOOLEAN,
+
+ ...
+}
+
+-- Parameters for configuration of downlink PTRS (see 38.211 section 7.4.1.2.2)
+Downlink-PTRS-Config ::= SEQUENCE {
+ -- Presence and frequency density of DL PT-RS as a function of Scheduled BW (see 38.214, section 5.1)
+ -- FFS: To be Configured per BWP
+ frequencyDensity NULL, -- WS modification: was TYPE_FFS!
+ -- Presence and time density of DL PT-RS as a function of MCS (see 38.214, section 5.1)
+ -- FFS: To be Configured per BWP
+ timeDensity NULL, -- WS modification: was TYPE_FFS!
+ -- Indicates the number of DL PTRS ports. This is equal or smaller than the number of DMRS groups (related to PDSCH parameters
+ -- dmrs-group1 and dmrs-group2). Corresponds to L1 parameter 'DL-PTRS-ports' (see 38.214, section 5.1)
+ nrofPorts ENUMERATED {n1, n2},
+ -- EPRE ratio between PTRS and PDSCH. Corresponds to L1 parameter 'DL-PTRS-EPRE-ratio' (see 38.214, section 5.1)
+ -- FFS: Whether there is one EPRE value per port (a comment in the L1 parameters hints that)
+ epre-Ratio NULL OPTIONAL, -- WS modification: was FFS_Value
+ -- Indicates the subcarrier offset for DL PTRS. Corresponds to L1 parameter 'DL-PTRS-RE-offset' (see 38.214, section 5.1)
+ resourceElementOffset NULL OPTIONAL -- WS modification: was FFS_Value
+}
+
+RateMatchPattern ::= SEQUENCE {
+
+ -- A resource block level bitmap in the frequency domain. It indicates the PRBs to which the symbolsInResourceBlock bitmap applies.
+ -- Corresponds to L1 parameter 'rate-match-PDSCH-bitmap1' (see 38.214, section FFS_Section)
+ -- FFS_ASN1: Consider multiple options with different number of bits (for narrower carriers)
+ resourceBlocks BIT STRING (SIZE (275)),
+
+ -- A symbol level bitmap in time domain. It indicates (FFS: with a bit set to true) the symbols which the UE shall rate match around.
+ -- This pattern recurs (in time domain) with the configured periodicityAndOffset.
+ -- Corresponds to L1 parameter 'rate-match-PDSCH-bitmap2' (see 38.214, section FFS_Section)
+ symbolsInResourceBlock BIT STRING (SIZE (14)),
+
+ -- A time domain repetition pattern. It determines the periodicity (FFS: And offset???) at which the symbolsInResourceBlock pattern recurs.
+ -- Absence of this field indicates the value n1, i.e., the symbolsInResourceBlock recurs every 14 symbols.
+ -- Corresponds to L1 parameter 'rate-match-PDSCH-bitmap3' (see 38.214, section FFS_Section)
+ -- FFS: Doesn't one require also an offset to configure from where the repetitions start?
+ periodicityAndOffset CHOICE {
+ n5 INTEGER (0..4),
+ n10 INTEGER (0..9),
+ n20 INTEGER (0..19),
+ n40 INTEGER (0..39)
+ } OPTIONAL -- Need R
+
+}
+
+-- TAG-PDSCH-CONFIG-STOP
+-- TAG-PHYS-CELL-ID-START
+
+PhysCellId ::= INTEGER (0..1007)
+
+-- TAG-PHYS-CELL-ID-STOP
+-- TAG-PUCCH-CONFIG-START
+
+PUCCH-Config ::= SEQUENCE {
+ -- PUCCH resource sets (see 38.213 9.2)
+ resourceSets SEQUENCE (SIZE (1..1)) OF PUCCH-ResourceSet OPTIONAL, -- WS modification: was FFS_Value
+
+ format1 CHOICE {
+ release NULL,
+ setup SEQUENCE {
+ -- Enabling inter-slot frequency hopping when PUCCH Format 1 is repetead over multiple slots.
+ interslotFrequencyHopping ENUMERATED {enabled} OPTIONAL,
+ -- Number of slots with the same PUCCH F1. When the field is absent the UE applies the value n1.
+ -- Corresponds to L1 parameter 'PUCCH-F1-number-of-slots' (see 38.213, section 9.2)
+ -- FFS_Value: Undefined values y1-y3 in range!
+ nrofSlots ENUMERATED {n1,ny1,y2,y3} OPTIONAL
+ } } OPTIONAL, -- Need M
+
+ format2 CHOICE {
+ release NULL,
+ setup SEQUENCE {
+ -- Maximum coding rate to determine how to feedback UCI on PUCCH Format 2.
+ -- Corresponds to L1 parameter 'PUCCH-F2-maximum-coderate' (see 38.213, section 9.2)
+ maxCodeRate INTEGER (0..7) OPTIONAL, -- WS modification: was FFS_Value, 38.214 suggests those values
+ -- Number of PRBs for PUCCH Format 2. Corresponds to L1 parameter 'PUCCH-F2-number-of-PRBs' (see 38.213, section 9.2)
+ -- FFS_Value range
+ nrofPRBs INTEGER(1..16) OPTIONAL,
+ -- Enabling simultaneous transmission of CSI and HARQ-ACK feedback with or without SR with PUCCH Format2
+ -- Corresponds to L1 parameter 'PUCCH-F2-Simultaneous-HARQ-ACK-CSI' (see 38.213, section 9.2)
+ -- When the field is absent the UE applies the value OFF
+ simultaneousHARQ-ACK-CSI ENUMERATED {true} OPTIONAL -- Need R
+ } } OPTIONAL, -- Need M
+
+
+ format3 CHOICE {
+ release NULL,
+ setup SEQUENCE {
+ -- Enabling inter-slot frequency hopping when PUCCH Format 3 is repetead over multiple slots.
+ interslotFrequencyHopping ENUMERATED {enabled} OPTIONAL,
+ -- Enabling 2 DMRS symbols per hop of a PUCCH Format 3 if both hops are more than X symbols when FH is enabled.
+ -- Enabling 4 DMRS sybmols for a PUCCH Format 3 with more than 2X+1 symbols when FH is disabled.
+ -- Corresponds to L1 parameter 'PUCCH-F3-F4-additional-DMRS' (see 38.21X, section FFS_Section)
+ additionalDMRS ENUMERATED {true} OPTIONAL, -- Need R
+ -- Max coding rate to determine how to feedback UCI on PUCCH Format 3
+ -- Corresponds to L1 parameter 'PUCCH-F3-maximum-coderate' (see 38.213, section 9.2)
+ maxCodeRate INTEGER (0..7) OPTIONAL, -- WS modification: was FFS_Value, 38.214 suggests those values
+ -- Number of slots with the same PUCCH F3. When the field is absent the UE applies the value n1.
+ -- Corresponds to L1 parameter 'PUCCH-F3-number-of-slots' (see 38.213, section 9.2)
+ -- FFS_Value: Undefined values y1-y3 in range!
+ nrofSlots ENUMERATED {n1,y1,y2,y3} OPTIONAL,
+ -- Enabling pi/2 BPSK for UCI symbols instead of QPSK for PUCCH.
+ -- Corresponds to L1 parameter 'PUCCH-PF3-PF4-pi/2PBSK' (see 38.21X, section FFS_Section)
+ pi2PBSK ENUMERATED {enabled} OPTIONAL
+ } } OPTIONAL, -- Need M
+
+ format4 CHOICE {
+ release NULL,
+ setup SEQUENCE {
+ -- Enabling inter-slot frequency hopping when PUCCH Format 4 is repetead over multiple slots.
+ interslotFrequencyHopping ENUMERATED {enabled} OPTIONAL,
+ -- Enabling 2 DMRS symbols per hop of a PUCCH Format 4 if both hops are more than X symbols when FH is enabled.
+ -- Enabling 4 DMRS sybmols for a PUCCH Format 4 with more than 2X+1 symbols when FH is disabled.
+ -- Corresponds to L1 parameter 'PUCCH-F3-F4-additional-DMRS' (see 38.21X, section FFS_Section)
+ additionalDMRS ENUMERATED {true} OPTIONAL, -- Need R
+ -- Max coding rate to determine how to feedback UCI on PUCCH Format 4
+ -- Corresponds to L1 parameter 'PUCCH-F4-maximum-coderate' (see 38.213, section 9.2)
+ maxCodeRate INTEGER (0..7) OPTIONAL, -- WS modification: was FFS_Value, 38.214 suggests those values
+ -- Number of slots with the same PUCCH F4. When the field is absent the UE applies the value n1.
+ -- Corresponds to L1 parameter 'PUCCH-F4-number-of-slots' (see 38.213, section 9.2)
+ -- FFS_Value: Undefined values y1-y3 in range!
+ nrofSlots ENUMERATED {n1,y1,y2,y3} OPTIONAL,
+ -- Enabling pi/2 BPSK for UCI symbols instead of QPSK for PUCCH.
+ -- Corresponds to L1 parameter 'PUCCH-PF3-PF4-pi/2PBSK' (see 38.21X, section FFS_Section)
+ pi2PBSK ENUMERATED {enabled} OPTIONAL
+ } } OPTIONAL, -- Need M
+
+ schedulingRequestResources CHOICE {
+ release NULL,
+ setup SEQUENCE (SIZE (1..maxNrofSchedulingRequestResoruces)) OF SchedulingRequestResource-Config
+ } OPTIONAL, -- Need M
+
+ -- RNTI used for PUCCH TPC. Corresponds to L1 parameter 'TPC-PUCCH-RNTI' (see 38.213, section 10).
+ tpc-PUCCH-RNTI BIT STRING (SIZE (16)) OPTIONAL
+}
+
+-- A set with one or more PUCCH resource configurations
+PUCCH-ResourceSet ::= SEQUENCE {
+ -- FFS What a PUCCH resource set contains and how the PUCCH resources in a set link to DCIs codepoints.
+}
+
+-- A PUCCH Format 0 resource configuration (see 38.213, section 9.2)
+-- Corresponds to L1 parameter 'PUCCH-F0-resource-config' (see 38.213, section 9.2)
+PUCCH-format0 ::= SEQUENCE {
+ startingSymbolIndex INTEGER(0..13),
+ nrofSymbols ENUMERATED {n1, n2},
+ startingPRB INTEGER(0..maxNrofPhysicalResourceBlocks-1),
+ frequencyHopping BOOLEAN,
+ initialCyclicShift INTEGER(0..11)
+}
+
+-- A PUCCH Format 1 resource configuration (see 38.213, section 9.2)
+-- Corresponds to L1 parameter 'PUCCH-F1-resource-config' (see 38.213, section 9.2)
+PUCCH-format1 ::= SEQUENCE {
+ startingSymbolIndex INTEGER(0..10),
+ nrofSymbols INTEGER(4..14),
+ startingPRB INTEGER(0..maxNrofPhysicalResourceBlocks-1),
+ frequencyHopping BOOLEAN,
+ initialCyclicShift INTEGER(0..11),
+ timeDomainOCC INTEGER(0..6)
+}
+
+-- A PUCCH Format 2 resource configuration (see 38.213, section 9.2)
+-- Corresponds to L1 parameter 'PUCCH-F2-resource-config' (see 38.213, section 9.2)
+PUCCH-format2 ::= SEQUENCE {
+ startingSymbolIndex INTEGER(0..13),
+ nrofSymbols ENUMERATED {n1, n2},
+ startingPRB INTEGER(0..maxNrofPhysicalResourceBlocks-1),
+ nrofPRBs PUCCH-F2-number-of-PRB,
+ frequencyHopping BOOLEAN
+}
+
+-- A PUCCH Format 3 resource configuration(see 38.213, section 9.2)
+-- Corresponds to L1 parameter 'PUCCH-F3-resource-config' (see 38.213, section 9.2)
+PUCCH-format3 ::= SEQUENCE {
+ startingSymbolIndex INTEGER(0..10),
+ nrofSymbols INTEGER(4..14),
+ startingPRB INTEGER(0..maxNrofPhysicalResourceBlocks-1),
+ nrofPRBs ENUMERATED {n1,n2,n3,n4,n5,n6,n8,n9,n10,n12,n15,n16},
+ frequencyHopping BOOLEAN
+}
+
+-- A PUCCH Format 4 resource configuration (see 38.213, section 9.2)
+-- Corresponds to L1 parameter 'PUCCH-F4-resource-config' (see 38.213, section 9.2)
+PUCCH-format4 ::= SEQUENCE {
+ startingSymbolIndex INTEGER(0..10),
+ nrofSymbols INTEGER(4..14),
+ startingPRB INTEGER(0..maxNrofPhysicalResourceBlocks-1),
+ frequencyHopping BOOLEAN,
+ occ-Length ENUMERATED {n2,n4},
+ occ-Index ENUMERATED {n0,n1,n2,n3}
+}
+
+
+-- TAG-PUCCH-CONFIG-STOP
+-- TAG-PUSCH-CONFIG-START
+
+PUSCH-Config ::= SEQUENCE {
+ -- Indicates whether to use code-block-group (CBG) based transmission (see 38.214, section x.x.x.x) FFS_Ref
+ -- FFS: Is this BOOLEAN parameter needed or can it be derived from the presence of the codeBlockGroupsPerTransportBlock?
+ codeBlockGroupTransmission ENUMERATED {true} OPTIONAL, -- Need R
+ -- Maximum number of code-block-groups (CBGs) per TB (see 38.xxx, section x.x.x, FFS_Ref)
+ maxCodeBlockGroupsPerTransportBlock ENUMERATED {n2, n4, n6, n8},
+
+ -- Selection of the DMRS type to be used for UL (see section 38.211, section 6.4.1.1.2)
+ dmrs-Type ENUMERATED {type1, type2} OPTIONAL, -- Need R
+ -- Position for additional DM-RS in DL, see Table 7.4.1.1.2-4 in 38.211.
+ -- The four values represent the cases of 1+0, 1+1, 1+1+1. 1+1+1+1 non-adjacent OFDM symbols for DL.
+ dmrs-AdditionalPosition ENUMERATED {pos0, pos1, pos2, pos3} OPTIONAL, -- Need R
+
+ -- Configures uplink PTRS (see 38.211, section x.x.x.x) FFS_Ref
+ phaseTracking-RS CHOICE {
+ release NULL,
+ setup Uplink-PTRS-Config } OPTIONAL, -- Need M
+
+
+
+
+ -- If enabled, UE applies TPC commands via accumulation. If not enabled, UE applies the TPC command without accumulation.
+ -- (see 38.213, section 7)
+ -- FFS: Collect all power control parameters in a common section or keep them per channel?
+ tpcAccumulation ENUMERATED { enabled } OPTIONAL, -- Need R
+
+ -- RNTI used for PUSCH TPC
+ -- Corresponds to L1 parameter 'TPC-PUSCH-RNTI' (see 38.213, section 10)
+ tcp-PUSCH-RNTI BIT STRING (SIZE (16)) OPTIONAL,
+ -- Configured one of two supported frequency hopping mode. If not configured frequency hopping is not configured
+ -- Corresponds to L1 parameter 'Frequency-hopping-PUSCH' (see 38.214, section 6)
+ -- When the field is absent the UE applies the value Not configured
+ frequencyHopping ENUMERATED {mode1, mode2},
+ -- Configure either LBRM or FBRM for PUSCH. FBRM = Full buffer rate-matchingLBRM = Limited buffer rate-matching
+ -- Corresponds to L1 parameter 'LBRM-FBRM-selection' (see 38.212, section 5.4.2)
+ rateMatching ENUMERATED {fullBufferRM, limitedBufferRM},
+ -- Resources that the UE should rate match PUSCH around (see 38.214, section REF)
+ rateMatchResources NULL, -- WS modification: was TYPE_FFS!
+ -- Configuration of DCI code points that determine PUSCH resource allocations.
+ -- Corresponds to L1 parameter 'PUSCH-symbol-allocation' (see 38.214, section 6.1.2.1)
+ symbolAllocationIndexs NULL OPTIONAL, -- WS modification: was FFS_Value
+
+ -- Indicates which MCS table the UE shall use for PUSCH without transform precoder
+ -- Corresponds to L1 parameter 'MCS-Table-PUSCH' (see 38.214, section 6.1.4)
+ -- When the field is absent the UE applies the value 64QAM
+ mcs-Table ENUMERATED {ul-64QAM, ul-256QAM},
+ -- Indicates which MCS table the UE shall use for PUSCH with transform precoding
+ -- Corresponds to L1 parameter 'MCS-Table-PUSCH-transform-precoding' (see 38.214, section 6.1.4)
+ -- When the field is absent the UE applies the value 64QAM
+ mcs-TableTransformPrecoder ENUMERATED {ul-64QAM, ul-256QAM},
+ -- The UE specifically selection of transformer precoder for PUSCH. When the field is absent the UE applies the value msg3-tp.
+ -- Corresponds to L1 parameter 'PUSCH-tp' (see 38.211, section 6.3.1.4)
+ transformPrecoder ENUMERATED {enabled} OPTIONAL,
+
+ -- Selection between config 1 and config 2 for RBG size for PUSCH. Corresponds to L1 parameter 'RBG-size-PUSCH' (see 38.214, section 6.1.2.2.1)
+ rbg-Size ENUMERATED {config1, config2},
+
+ -- Select between and configuration of dynamic and semi-static beta-offset
+ -- Corresponds to L1 parameter 'UCI-on-PUSCH' (see 38.214, section 9.3)
+ uci-on-PUSCH CHOICE {
+ release NULL,
+ setup CHOICE {
+ dynamic SEQUENCE (SIZE (1..4)) OF BetaOffsets,
+ semiStatic BetaOffsets
+ } } OPTIONAL, -- Need M
+
+ -- Accounts for overhead from CSI-RS, CORESET, etc. FFS: Clarify value range and description.
+ -- Corresponds to L1 parameter 'Xoh-PDSCH' (see 38.214, section 5.1.3.2)
+ xOverhead ENUMERATED {n0, n6, n12, n18} OPTIONAL, -- WS modification: was FFS_Value, values retrieved from 38.214
+
+ ...
+}
+
+-- Configuration of Uplink Phase-Tracking-Reference-Signals (PTRS)
+-- FFS: Is it possible to configure PTRS for CP-OFDM and DFT-S OFDM simultaneously or just one. If the latter, replace below by a CHOICE.
+Uplink-PTRS-Config ::= SEQUENCE {
+ -- Configuration of UL PTRS for CP-OFDM
+ cp-OFDM CHOICE {
+ release NULL,
+ setup SEQUENCE {
+ -- Presence and frequency density of UL PT-RS for CP-OFDM waveform as a function of scheduled BW (see 38.214, section 6.1)
+ -- FFS: Configuration is supposed to be per BWP according to RAN1
+ frequencyDensity NULL, -- WS modification: was TYPE_FFS!
+ -- Presence and time density of UL PT-RS for CP-OFDM waveform as a function of MCS (see 38.214, section 6.1)
+ -- FFS: Configuration is supposed to be per BWP according to RAN1
+ timeDensity NULL, -- WS modification: was TYPE_FFS!
+ -- Indicator related to the number of UL PTRS ports for CP-OFDM. Details to be further decided.
+ -- Corresponds to L1 parameter 'UL-PTRS-ports' (see 38.214, section 6.1)
+ nrofPorts ENUMERATED {n1, n2},
+ -- Indicates the subcarrier offset for UL PTRS for CP-OFDM. Corresponds to L1 parameter 'UL-PTRS-RE-offset' (see 38.214, section 6.1)
+ resourceElementOffset NULL OPTIONAL -- WS modification: was FFS_Value
+ }
+ } OPTIONAL, -- Cond M
+ -- Configuration of UL PTRS for DFT-S-OFDM.
+ dft-S-OFDM CHOICE {
+ release NULL,
+ setup SEQUENCE {
+ -- Sample density of PT-RS for DFT-s-OFDM, pre-DFT, indicating a set of thresholds T={NRBn,n=0,1,2,3,4},
+ -- that indicates dependency between presence of PT-RS and scheduled BW and the values of X and K the UE should
+ -- use depending on the scheduled BW according to the table in 38.214 FFS_Section.
+ -- FFS: Configuration is supposed to be per BWP according to RAN1
+ -- Corresponds to L1 parameter 'UL-PTRS-pre-DFT-density' (see 38.214, section 6.1)
+ sampleDensity NULL OPTIONAL, -- WS modification: was FFS_Value
+ -- Time density (OFDM symbol level) of PT-RS for DFT-s-OFDM
+ -- Corresponds to L1 parameter 'UL-PTRS-time-density-transform-precoding' (see 38.214, section 6.1)
+ timeDensity ENUMERATED {d1, d2} OPTIONAL,
+ -- PTRS sequence for DFT-s-OFDM. Corresponds to L1 parameter 'UL-PTRS-sequence-transform-precoding' (see 38.214, section 6.1)
+ sequence NULL OPTIONAL -- WS modification: was FFS_Value
+ }
+ } OPTIONAL -- Cond M
+}
+
+-- A set of beta-offset values
+BetaOffsets ::= SEQUENCE {
+ -- Up to 2 bits HARQ-ACK. Corresponds to L1 parameter 'betaOffset-ACK-Index-1' (see 38.213, section 9.3)
+ -- When the field is absent the UE applies the value 11
+ betaOffsetACK-Index1 INTEGER(0..31) OPTIONAL, -- Need M
+ -- Up to 11 bits HARQ-ACK. Corresponds to L1 parameter 'betaOffset-ACK-Index-2' (see 38.213, section 9.3)
+ -- When the field is absent the UE applies the value 11
+ betaOffsetACK-Index2 INTEGER(0..31) OPTIONAL, -- Need M
+ -- Above 11 bits HARQ-ACK. Corresponds to L1 parameter 'betaOffset-ACK-Index-3' (see 38.213, section 9.3)
+ -- When the field is absent the UE applies the value 11
+ betaOffsetACK-Index3 INTEGER(0..31) OPTIONAL, -- Need M
+ -- Up to 11 bits of CSI part 1 bits. Corresponds to L1 parameter 'betaOffset-CSI-part-1-Index-1' (see 38.213, section 9.3)
+ -- When the field is absent the UE applies the value 13
+ betaOffsetCSI-part1-Index1 INTEGER(0..31) OPTIONAL, -- Need M
+ -- Above 11 bits of CSI part 1 bits. Corresponds to L1 parameter 'betaOffset-CSI-part-1-Index-2' (see 38.213, section 9.3)
+ -- When the field is absent the UE applies the value 13
+ betaOffsetCSI-part1-Index2 INTEGER(0..31) OPTIONAL, -- Need M
+ -- Up to 11 bits of CSI part 2 bits. Corresponds to L1 parameter 'betaOffset-CSI-part-2-Index-1' (see 38.213, section 9.3)
+ -- When the field is absent the UE applies the value 13
+ betaOffsetCSI-part2-Index1 INTEGER(0..31) OPTIONAL, -- Need M
+ -- Above 11 bits of CSI part 2 bits. Corresponds to L1 parameter 'betaOffset-CSI-part-2-Index-2' (see 38.213, section 9.3)
+ -- When the field is absent the UE applies the value 13
+ betaOffsetCSI-part2-Index2 INTEGER(0..31) OPTIONAL -- Need M
+}
+
+-- TAG-PUSCH-CONFIG-STOP
+
+Q-OffsetRange ::= ENUMERATED {
+ dB-24, dB-22, dB-20, dB-18, dB-16, dB-14,
+ dB-12, dB-10, dB-8, dB-6, dB-5, dB-4, dB-3,
+ dB-2, dB-1, dB0, dB1, dB2, dB3, dB4, dB5,
+ dB6, dB8, dB10, dB12, dB14, dB16, dB18,
+ dB20, dB22, dB24}
+
+-- TAG-QUANTITY-CONFIG-START
+-- WS modification: missing QUantityConfig definiton start; let's add a fake one
+QuantityConfig ::= SEQUENCE {
+ quantityConfigRSindex QuantityConfigRS OPTIONAL
+}
+
+QuantityConfigRS ::= SEQUENCE {
+ -- SS Block based
+ ssbFilterCoefficientRSRP FilterCoefficient OPTIONAL, -- WS modification: was DEFAULT_FFS!
+ ssbFilterCoefficientRSRQ FilterCoefficient OPTIONAL, -- WS modification: was DEFAULT_FFS!
+ ssbFilterCoefficientRS-SINR FilterCoefficient OPTIONAL, -- WS modification: was DEFAULT_FFS!
+
+ -- CSI-RS based
+ csi-rsFilterCoefficientRSRP FilterCoefficient OPTIONAL, -- WS modification: was DEFAULT_FFS!
+ csi-rsFilterCoefficientRSRQ FilterCoefficient OPTIONAL, -- WS modification: was DEFAULT_FFS!
+ csi-rsFilterCoefficientRS-SINR FilterCoefficient OPTIONAL -- WS modification: was DEFAULT_FFS!
+}
+
+-- TAG-QUANTITY-CONFIG-STOP
+-- TAG-RACH-CONFIG-COMMON-START
+
+RACH-ConfigCommon ::= SEQUENCE {
+
+ -- FFS: whether any of the parameter(s) in the L1 TP should be within CBRA-SSB-ResourceList
+ groupBconfigured SEQUENCE {
+ -- FFS: ra-Msg3SizeGroupA values
+ ra-Msg3SizeGroupA ENUMERATED {b56, b144, b208, b256, b282, b480, b640, b800, b1000, spare7, spare6, spare5,
+ spare4, spare3, spare2, spare1},
+ -- FFS: Need and definition of messagePowerOffsetGroupB
+ messagePowerOffsetGroupB ENUMERATED { minusinfinity, dB0, dB5, dB8, dB10, dB12, dB15, dB18}
+ } OPTIONAL,
+
+ cbra-SSB-ResourceList CBRA-SSB-ResourceList,
+
+ ra-ContentionResolutionTimer ENUMERATED { sf8, sf16, sf24, sf32, sf40, sf48, sf56, sf64},
+
+ -- Msg1 (RA preamble): UE may select the SS block and corresponding PRACH resource for path-loss estimation and (re)transmission
+ -- based on SS blocks that satisfy the threshold (see 38.213, section REF)
+ ssb-Threshold NULL OPTIONAL, -- WS modification: was TYPE_FFS!
+ -- FFS: Provide proper description
+ -- Corresponds to L1 parameter 'SUL-RSRP-Threshold' (see FFS_Spec, section FFS_Section)
+ sul-RSRP-Threshold NULL OPTIONAL, -- WS modification: was TYPE_FFS!
+
+ -- PRACH configuration index. Corresponds to L1 parameter 'PRACHConfigurationIndex' (see 38.211, section 6.3.3.2)
+ prach-ConfigurationIndex INTEGER (0..255) OPTIONAL,
+ -- PRACH root sequence index. Corresponds to L1 parameter 'PRACHRootSequenceIndex' (see 38.211, section 6.3.3.1).
+ -- The value range depends on whether L=839 or L=139
+ prach-RootSequenceIndex CHOICE {
+ l839 INTEGER (0..837),
+ l139 INTEGER (0..137)
+ } OPTIONAL,
+
+ -- N-CS configuration, see Table 6.3.3.1-3 in 38.211
+ zeroCorrelationZoneConfig INTEGER(0..15),
+ -- Configuration of restricted sets, see 38.211 6.3.3.1
+ -- CHECK: RAN1 value said "restrictedTypeA". Does it mean "restrictedToTypeA"? If not, what else?
+ restrictedSetConfig ENUMERATED {unrestricted, restrictedToTypeA, restrictedToTypeB},
+ -- (see 38.213, section 7.4)
+ preambleReceivedTargetPower ENUMERATED {
+ dBm-120, dBm-118, dBm-116, dBm-114, dBm-112, dBm-110, dBm-108, dBm-106, dBm-104, dBm-102, dBm-100,
+ dBm-98, dBm-96, dBm-94,dBm-92, dBm-90, dBm-88, dBm-86, dBm-84,dBm-82, dBm-80, dBm-78, dBm-76,
+ dBm-74, dBm-72, dBm-70, dBm-68, dBm-66, dBm-64, dBm-62, dBm-60, dBm-58, dBm-56, dBm-54, dBm-52, dBm-50, dBm-48, dBm-46, dBm-44, dBm-42, dBm-42, dBm-40, dBm-38, dBm-36, dBm-34, dBm-32, dBm-30, dBm-28, dBm-26, dBm-24, dBm-22, dBm-20, dBm-18, dBm-16, dBm-14, dBm-12, dBm-10, dBm-8, dBm-6, dBm-4, dBm-2, dBm-0, dBm2, dBm4, dBm6 } OPTIONAL,
+ -- Power ramping steps for PRACH (see 38.321, FFS_section)
+ powerRampingStep ENUMERATED {dB0, dB2, dB4, dB6} OPTIONAL, -- Need R
+
+ -- CHECK: PreambleTransMax parameter usage (parameter was not provided by RAN1 and not yet discussed in RAN2)
+ preambleTransMax ENUMERATED {n3, n4, n5, n6, n7, n8, n10, n20, n50, n100, n200},
+
+
+ -- Msg2 (RAR) window length. Corresponds to L1 parameter 'msg2-scs' (see 38.213, section 8.1)
+ ra-ResponseWindow NULL, -- Subcarrier spacing for msg2 for contention-free RA procedure for handover. WS modification: was TYPE_FFS!
+ -- Corresponds to L1 parameter 'msg2-scs' (see 38.321?, section FFS_Section)
+ msg2-SubcarrierSpacing SubcarrierSpacing,
+ -- CORESET configured for random access. When the field is absent the UE uses the CORESET according to pdcchConfigSIB1
+ -- Corresponds to L1 parameter 'rach-coreset-configuration' (see 38.211?, section FFS_Section)
+ rach-ControlResourceSet NULL OPTIONAL, -- WS modification: was FFS_Value
+
+ -- Subcarrier spacing for Msg3. Corresponds to L1 parameter 'msg3-scs' (see 38.213, section 8.1)
+ msg3-SubcarrierSpacing SubcarrierSpacing,
+ -- Indicates to a UE whether transform precoding is enabled for Msg3 transmission.
+ -- Corresponds to L1 parameter 'msg3-tp' (see 38.213, section 8.1)
+ msg3-transformPrecoding ENUMERATED {true} OPTIONAL -- Need R
+}
+
+CBRA-SSB-ResourceList ::= SEQUENCE (SIZE(1..maxRAssbResources)) OF CBRA-SSB-Resource
+CBRA-SSB-Resource ::= SEQUENCE {
+ ssb SSB-ID,
+ startIndexRA-PreambleGroupA PreambleStartIndex,
+ numberofRA-PreamblesGroupA NumberOfRA-Preambles,
+ numberOfRA-Preambles NumberOfRA-Preambles,
+
+ -- PRACH configuration for SSB configuration (i.e. time and frequency location)
+ -- FFS / TODO: Type Definition for RA-Resources.
+ ra-Resources RA-Resources
+}
+
+PreambleStartIndex ::= INTEGER (0..maxRA-PreambleIndex)
+NumberofRA-Preambles ::= INTEGER (1.. maxNrOfRA-PreamblesPerSSB)
+
+-- TAG-RACH-CONFIG-COMMON-STOP
+-- TAG-RACH-CONFIG-DEDICATED-START
+
+-- FFS: resources for msg1-based on-demand SI request
+-- FFS: resources for beam failure recovery request
+
+RACH-ConfigDedicated ::= SEQUENCE {
+ -- Resources for handover to the cell
+ cfra-Resources CFRA-Resources,
+ -- Subcarrier spacing for msg2 for contention-free RA procedure for handover
+ rar-SubcarrierSpacing SubcarrierSpacing
+}
+
+-- FFS_CHECK: Isn't it sufficient to have just one list and the CHOICE inside the list element (around the ssb/csirs)?
+CFRA-Resources ::= CHOICE {
+ cfra-ssb-ResourceList SEQUENCE (SIZE(1..maxRAssbResources)) OF CFRA-SSB-Resource,
+ cfra-csirs-ResourceList SEQUENCE (SIZE(1..maxRAcsirsResources)) OF CFRA-CSIRS-Resource
+}
+
+CFRA-SSB-Resource ::= SEQUENCE {
+ ssb SSB-ID,
+ ra-PreambleIndex INTEGER (0..0), -- WS modification: was FFS_XX
+ -- PRACH configuration for SSB configuration (i.e. time and frequency location)
+ ra-Resources RA-Resources -- Definition FFS
+}
+
+CFRA-CSIRS-Resource ::= SEQUENCE {
+ csirs CSIRS-ID, -- FFS where the CSI-RS are defined (e.g. MO)
+ ra-PreambleIndex INTEGER (0..0), -- WS modification: was FFS_XX
+ -- PRACH configuration for CSIRS configuration (i.e. time and frequency location)
+ ra-Resources RA-Resources -- Definition FFS
+}
+
+-- TAG-RACH-CONFIG-DEDICATED-STOP
+-- TAG-RADIO-BEARER-CONFIG-START
+
+RadioBearerConfig ::= SEQUENCE {
+ srb-ToAddModList SRB-ToAddModList OPTIONAL, -- Need M
+ srb-ToReleaseList INTEGER (3) OPTIONAL, -- Need M
+ drb-ToAddModList DRB-ToAddModList OPTIONAL, -- Need M
+ drb-ToReleaseList DRB-ToReleaseList OPTIONAL, -- Need M
+ securityConfig SecurityConfig OPTIONAL -- Cond KeyChange
+}
+
+SRB-ToAddModList ::= SEQUENCE (SIZE (1..2)) OF SRB-ToAddMod
+SRB-ToAddMod ::= SEQUENCE {
+ srb-Identity SRB-Identity,
+
+ -- may only be set if the cell groups of all linked logical channels are reset or released
+ reestablishPDCP ENUMERATED{true} OPTIONAL, -- Cond KeyChange
+ pdcp-Config PDCP-Config OPTIONAL, -- Cond PDCP
+ ...
+}
+
+
+DRB-ToAddModList ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-ToAddMod
+DRB-ToAddMod ::= SEQUENCE {
+ cnAssociation CHOICE {
+ -- The EPS bearer ID determines the EPS bearer when NR connects to EPC using EN-DC
+ eps-BearerIdentity INTEGER (0..15), -- Cond EPS-DRB-Setup
+ -- The SDAP configuration determines how to map QoS flows to DRBs when NR connects to the 5GC
+ sdap-Config SDAP-Config -- Cond NGC
+ },
+ drb-Identity DRB-Identity,
+
+ -- may only be set if the cell groups of all linked logical channels are reset or released
+ reestablishPDCP ENUMERATED{true} OPTIONAL, -- Cond HO
+ recoverPDCP ENUMERATED{true} OPTIONAL, -- Need N
+ pdcp-Config PDCP-Config OPTIONAL, -- Cond PDCP
+ ...
+}
+
+DRB-ToReleaseList ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-Identity
+
+
+SecurityConfig ::= SEQUENCE {
+ securityAlgorithmConfig SecurityAlgorithmConfig OPTIONAL, -- Need M
+ keyToUse ENUMERATED{keNB, s-KgNB} OPTIONAL, -- Need M
+ ...
+}
+
+-- TAG-RADIO-BEARER-CONFIG-STOP
+-- TAG-REPORT-CONFIG-ID-START
+
+ReportConfigId ::= INTEGER (1..maxNrofReportConfigId)
+
+-- TAG-REPORT-CONFIG-ID-STOP
+-- TAG-REPORT-CONFIG-START
+
+ReportConfigNR ::= SEQUENCE {
+ reportType CHOICE {
+ periodical PeriodicalReportConfig,
+ eventTriggered EventTriggerConfig,
+ reportCGI NULL, -- WS modification: was Type_FFS!
+ ...
+ }
+}
+
+-- FFS / TODO: Consider separating trgger configuration (trigger, periodic, ...) from report congiguration.
+-- Current structure allows easier definiton of new events and new report types e.g. CGI, etc.
+EventTriggerConfig::= SEQUENCE {
+ eventId CHOICE {
+ eventA1 SEQUENCE {
+ a1-Threshold MeasTriggerQuantity,
+ reportOnLeave BOOLEAN,
+ hysteresis Hysteresis,
+ timeToTrigger TimeToTrigger
+ },
+ eventA2 SEQUENCE {
+ a2-Threshold MeasTriggerQuantity,
+ reportOnLeave BOOLEAN,
+ hysteresis Hysteresis,
+ timeToTrigger TimeToTrigger
+ },
+ eventA3 SEQUENCE {
+ a3-Offset MeasTriggerQuantityOffset,
+ reportOnLeave BOOLEAN,
+ hysteresis Hysteresis,
+ timeToTrigger TimeToTrigger,
+ useWhiteCellList BOOLEAN OPTIONAL
+ },
+ eventA4 SEQUENCE {
+ a4-Threshold MeasTriggerQuantity,
+ reportOnLeave BOOLEAN,
+ hysteresis Hysteresis,
+ timeToTrigger TimeToTrigger,
+ useWhiteCellList BOOLEAN OPTIONAL
+ },
+ eventA5 SEQUENCE {
+ a5-Threshold1 MeasTriggerQuantity,
+ a5-Threshold2 MeasTriggerQuantity,
+ reportOnLeave BOOLEAN,
+ hysteresis Hysteresis,
+ timeToTrigger TimeToTrigger,
+ useWhiteCellList BOOLEAN OPTIONAL
+ },
+ eventA6 SEQUENCE {
+ a6-Offset MeasTriggerQuantityOffset,
+ reportOnLeave BOOLEAN,
+ hysteresis Hysteresis,
+ timeToTrigger TimeToTrigger,
+ useWhiteCellList BOOLEAN OPTIONAL
+ }
+ },
+
+ rsType ENUMERATED {ss, csi-rs},
+
+ -- Common reporting config (at least to periodical and eventTriggered)
+ reportInterval ReportInterval,
+ reportAmount ENUMERATED {ffs}, -- WS modification: was FFS!
+
+ -- Cell reporting configuration
+ reportQuantityCell MeasReportQuantity,
+ maxReportCells INTEGER (1..maxCellReport),
+
+ -- RS index reporting configuration
+ reportQuantityRsIndexes MeasReportQuantity OPTIONAL,
+ maxNroIndexesToReport INTEGER (1..maxNroIndexesToReport) OPTIONAL,
+ onlyReportBeamIds BOOLEAN OPTIONAL,
+
+ -- If configured the UE includes the best neighbour cells per serving frequency
+ reportAddNeighMeas NULL -- WS modification: was TYPE_FFS!
+}
+
+PeriodicalReportConfig ::= SEQUENCE {
+ rsType ENUMERATED {ssb, csi-rs},
+
+ -- Common reporting config (at least to periodical and eventTriggered)
+ reportInterval ReportInterval,
+ reportAmount ENUMERATED {ffs}, -- WS modification: was FFS!
+
+ -- Cell reporting configuration
+ reportQuantityCell MeasReportQuantity,
+ maxReportCells INTEGER (1..maxCellReport),
+
+ -- RS index reporting configuration
+ reportQuantityRsIndexes MeasReportQuantity OPTIONAL,
+ maxNroRsIndexesToReport INTEGER (1..maxNroIndexesToReport) OPTIONAL,
+ onlyReportBeamIds BOOLEAN OPTIONAL
+}
+
+MeasTriggerQuantity::= CHOICE {
+ rsrp RSRPRange,
+ rsrq RSRQRange,
+ sinr SINRRange
+}
+
+MeasTriggerQuantityOffset::= CHOICE {
+ rsrp INTEGER (0), -- WS modification: was FFS!
+ rsrq INTEGER (0), -- WS modification: was FFS!
+ sinr INTEGER (0) -- WS modification: was FFS!
+}
+
+
+MeasReportQuantity::= SEQUENCE {
+ rsrp BOOLEAN,
+ rsrq BOOLEAN,
+ sinr BOOLEAN
+}
+
+
+-- TAG-REPORT-CONFIG-START
+-- TAG-REPORT-CONFIG-TO-ADD-MOD-LIST-START
+
+ReportConfigToAddModList ::= SEQUENCE (SIZE (1..maxReportConfigId)) OF ReportConfigToAddMod
+
+ReportConfigToAddMod ::= SEQUENCE {
+ reportConfigId ReportConfigId,
+ reportConfig CHOICE {
+ reportConfigNR ReportConfigNR,
+ reportConfigEUTRA ReportConfigEUTRA
+ }
+}
+
+-- TAG- REPORT-CONFIG-TO-ADD-MOD-LIST-STOP
+-- TAG-RLC-CONFIG-START
+
+RLC-Config ::= CHOICE {
+ am SEQUENCE {
+ ul-AM-RLC UL-AM-RLC,
+ dl-AM-RLC DL-AM-RLC
+ },
+ um-Bi-Directional SEQUENCE {
+ ul-UM-RLC UL-UM-RLC,
+ dl-UM-RLC DL-UM-RLC
+ },
+ um-Uni-Directional-UL SEQUENCE {
+ ul-UM-RLC UL-UM-RLC
+ },
+ um-Uni-Directional-DL SEQUENCE {
+ dl-UM-RLC DL-UM-RLC
+ },
+ ...
+}
+
+UL-AM-RLC ::= SEQUENCE {
+ sn-FieldLength SN-FieldLength-AM,
+ t-PollRetransmit T-PollRetransmit,
+ pollPDU PollPDU,
+ pollByte PollByte,
+ maxRetxThreshold ENUMERATED { t1, t2, t3, t4, t6, t8, t16, t32 }
+}
+
+DL-AM-RLC ::= SEQUENCE {
+ sn-FieldLength SN-FieldLength-AM,
+ t-Reassembly T-Reassembly,
+ t-StatusProhibit T-StatusProhibit
+}
+
+UL-UM-RLC ::= SEQUENCE {
+ sn-FieldLength SN-FieldLength-UM
+}
+
+DL-UM-RLC ::= SEQUENCE {
+ sn-FieldLength SN-FieldLength-UM,
+ t-Reassembly T-Reassembly
+}
+
+T-PollRetransmit ::= ENUMERATED {
+ ms5, ms10, ms15, ms20, ms25, ms30, ms35,
+ ms40, ms45, ms50, ms55, ms60, ms65, ms70,
+ ms75, ms80, ms85, ms90, ms95, ms100, ms105,
+ ms110, ms115, ms120, ms125, ms130, ms135,
+ ms140, ms145, ms150, ms155, ms160, ms165,
+ ms170, ms175, ms180, ms185, ms190, ms195,
+ ms200, ms205, ms210, ms215, ms220, ms225,
+ ms230, ms235, ms240, ms245, ms250, ms300,
+ ms350, ms400, ms450, ms500, ms800, ms1000,
+ ms2000, ms4000, spare5, spare4, spare3,
+ spare2, spare1}
+
+
+PollPDU ::= ENUMERATED {
+ p4, p8, p16, p32, p64, p128, p256, p512, p1024, p2048, p4096, p6144, p8192, p12288, p16384, p20480,
+ p24576, p28672, p32768, p40960, p49152, p57344, p65536, infinity, spare8, spare7, spare6, spare5, spare4,
+ spare3, spare2, spare1}
+
+PollByte ::= ENUMERATED {
+ kB1, kB2, kB5, kB8, kB10, kB15, kB25, kB50, kB75,
+ kB100, kB125, kB250, kB375, kB500, kB750, kB1000,
+ kB1250, kB1500, kB2000, kB3000, kB4000, kB4500,
+ kB5000, kB5500, kB6000, kB6500, kB7000, kB7500,
+ mB8, mB9, mB10, mB11, mB12, mB13, mB14, mB15,
+ mB16, mB17, mB18, mB20, mB25, mB30, mB40, infinity,
+ spare20, spare19, spare18, spare17, spare16,
+ spare15, spare14, spare13, spare12, spare11,
+ spare10, spare9, spare8, spare7, spare6, spare5,
+ spare4, spare3, spare2, spare1}
+
+T-Reassembly ::= ENUMERATED {
+ ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35,
+ ms40, ms45, ms50, ms55, ms60, ms65, ms70,
+ ms75, ms80, ms85, ms90, ms95, ms100, ms110,
+ ms120, ms130, ms140, ms150, ms160, ms170,
+ ms180, ms190, ms200, spare1}
+
+T-StatusProhibit ::= ENUMERATED {
+ ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35,
+ ms40, ms45, ms50, ms55, ms60, ms65, ms70,
+ ms75, ms80, ms85, ms90, ms95, ms100, ms105,
+ ms110, ms115, ms120, ms125, ms130, ms135,
+ ms140, ms145, ms150, ms155, ms160, ms165,
+ ms170, ms175, ms180, ms185, ms190, ms195,
+ ms200, ms205, ms210, ms215, ms220, ms225,
+ ms230, ms235, ms240, ms245, ms250, ms300,
+ ms350, ms400, ms450, ms500, ms800, ms1000,
+ ms1200, ms1600, ms2000, ms2400, spare2, spare1}
+
+SN-FieldLength-UM ::= ENUMERATED {size6, size12}
+SN-FieldLength-AM ::= ENUMERATED {size12, size18}
+
+-- TAG-RLC-CONFIG-STOP
+-- TAG-RLF-TIMERS-AND-CONSTANTS-START
+
+RLF-TimersAndConstants ::= SEQUENCE {
+ -- FFS / TODO: Add RRC parameters such as timers and constants.
+}
+
+-- TAG-RLF-TIMERS-AND-CONSTANTS-STOP
+-- TAG-SCELL-INDEX-START
+
+-- FFS: Value range and usage across Cell Groups (shared value range or separate value range). RAN1 indicated 16 serving cells per CG.
+SCellIndex ::= INTEGER (1..31)
+
+-- TAG-SCELLINDEX-STOP
+-- TAG-SCHEDULING-REQUEST-CONFIG-START
+
+SchedulingRequestConfig ::= SEQUENCE {
+ schedulingRequestToAddModList SEQUENCE (SIZE (1..maxNrofSR-ConfigPerCellGroup)) OF SchedulingRequestToAddMod OPTIONAL, -- Need N
+ schedulingRequestToReleaseList SEQUENCE (SIZE (1..maxNrofSR-ConfigPerCellGroup)) OF SchedulingRequestId OPTIONAL -- Need N
+}
+
+SchedulingRequestToAddMod ::= SEQUENCE {
+ schedulingRequestID SchedulingRequestId,
+
+ sr-prohibitTimer ENUMERATED {ms1, ms2, ms4, ms8, ms16, ms32, ms64, ms128},
+ sr-TransMax ENUMERATED { n4, n8, n16, n32, n64, spare3, spare2, spare1}
+}
+
+-- FFS_TODO: provide resources for each SchedulingRequestID in ServingCellConfigDedicated (TBD whether directly, in PUCCH-Config, in each BWP)
+
+-- TAG-SCHEDULING-REQUEST-CONFIG-STOP
+-- TAG-SDAP-CONFIG-START
+
+SDAP-Config ::= SEQUENCE {
+ -- FFS / TODO: Definition of PDUsessionID to be added
+ pduSession PDUsessionID,
+
+ -- FFS: separate configuration for UL and DL
+ sdap-Header-DL ENUMERATED {present, absent},
+ sdap-Header-UL ENUMERATED {present, absent},
+ defaultDRB BOOLEAN,
+ reflectiveQoS BOOLEAN, -- It is FFS whether this field is needed
+
+ -- FFS: Is the simple list sufficient? Replace by add/mod/release list? Or bitmap?
+ mappedQoSflows SEQUENCE (SIZE (0..maxNrofQFIs)) OF QFI OPTIONAL, -- Need N
+ ...
+}
+
+
+QFI ::= INTEGER (0..maxQFI)
+
+-- TAG-SDAP-CONFIG-STOP
+
+SecurityAlgorithmConfig ::= SEQUENCE {
+ cipheringAlgorithm CipheringAlgorithm,
+ integrityProtAlgorithm IntegrityProtAlgorithm
+
+}
+
+IntegrityProtAlgorithm ::= ENUMERATED {
+ nia0, nia1, nia2, nia3, spare4, spare3,
+ spare2, spare1, ...}
+
+CipheringAlgorithm ::= ENUMERATED {
+ nea0, nea1, nea2, nea3, spare4, spare3,
+ spare2, spare1, ...}
+
+-- TAG-SERV-CELL-INDEX-START
+
+ServCellIndex ::= INTEGER (0..16)
+
+-- TAG-SERV-CELL-INDEX-STOP
+-- TAG-SERVING-CELL-CONFIG-COMMON-START
+
+ServingCellConfigCommon ::= SEQUENCE {
+
+ -- Parameters identifying the target cell (reconfiguration with sync, SCell addition, PSCell addition)
+ -- FFS: Need to indicate initial BWP here?
+ -- FFS: Update the following based on input from RAN1 and RAN4
+ physCellId PhysCellId OPTIONAL, -- Cond HOAndSCellAdd,
+ frequencyInfoDL SEQUENCE {
+ carrierFreqDL ARFCN-ValueNR,
+ carrierBandwidthDL CarrierBandwidthNR
+ } OPTIONAL, -- Cond InterFreqHOAndSCellAdd
+ frequencyInfoUL FrequencyInfoUL OPTIONAL, -- Cond InterFreqHOAndUplinkSCellAdd
+
+ -- FFS: How to indicate the FrequencyInfoUL for the SUL
+ supplementaryUplink SEQUENCE {
+ frequencyInfoUL FrequencyInfoUL
+ -- FFS: Add additional (selection) criteria determining when/whether the UE shall use the SUL frequency
+ } OPTIONAL, -- Cond SUL
+
+
+ -- Subcarrier spacing for SIB1, Msg.2/4 for initial access and SI-messages.
+ -- Values 15, and 30 kHz are applicable for carrier frequencies <6GHz; Values 60 and 120 kHz are applicable for carrier frequencies >6GHz
+ subcarrierSpacingCommon SubcarrierSpacing,
+
+ -- The frequency domain offset between SSB and the overall resource block grid in number of subcarriers.
+ -- Absence of the field indicates that no offset if applied (offset = 0). See 38.211, section 7.4.3.1)
+ ssb-subcarrier-offset INTEGER (1..11) OPTIONAL,
+
+ -- Indicates the time domain positions of the transmitted SS-blocks in an SS-burst.
+ -- Corresponds to L1 parameter 'SSB-Transmitted' (see 38.213, section 4.1)
+ -- FFS_CECHK: Is the NW required to provide always a valid bitmap? If not, we cannot use "need M"
+ ssb-PositionsInBurst CHOICE {
+ -- bitmap for sub 3 GHz
+ shortBitmap BIT STRING (SIZE (4)),
+ -- bitmap for 3-6 GHz
+ mediumBitmap BIT STRING (SIZE (8)),
+ -- bitmap for above 6 GHz
+ longBitmap BIT STRING (SIZE (64))
+ } OPTIONAL, -- Need M,
+
+ -- The SSB periodicity in msec for the rate matching purpose (see 38.211, section [7.4.3.1])
+ ssb-periodicityServingCell ENUMERATED { ms5, ms10, ms20, ms40, ms80, ms160 } OPTIONAL,
+
+ -- CHECK: This field is usually in MIB. Assuming that the UE does not need to acquire MIB before sending RA to target cell, this parameter
+ -- should also be here
+ -- Position of (first) DL DM-RS (see 38.211, section 7.4.1.1.1)
+ dmrs-TypeA-Position ENUMERATED {pos2, pos3},
+
+
+ -- Subcarrier spacing of SSB. Used only for non-initial access (e.g. SCells, PCell of SCG).
+ -- If the field is absent the UE shall assume the default value of the band.
+ -- FFS in RAN1: Possibility to have several default values? May the field be absent in that case?
+ subcarrierSpacingSSB SubcarrierSpacingSSB OPTIONAL, -- Need R
+
+ tdd-UL-DL-configurationCommon SEQUENCE {
+ -- Periodicity of the DL-UL pattern. Corresponds to L1 parameter 'DL-UL-transmission-periodicity' (see 38.211, section FFS_Section)
+ dl-UL-TransmissionPeriodicity ENUMERATED {ms0dot5, ms1, ms2, ms5, ms10} OPTIONAL,
+
+ -- Number of consecutive full DL slots at the beginning of each DL-UL pattern.
+ -- Corresponds to L1 parameter 'number-of-DL-slots' (see 38.211, section FFS_Section)
+ -- FFS_Value: Verify that 160 is correct (maximum number of slots within the longest period (10 ms) and the largest subcarrier spacing.
+ nrofDownlinkSlots INTEGER (0..160) OPTIONAL,
+
+ -- Number of consecutive DL symbols in the beginning of the slot following the last full DL slot (as derived from nrofDownlinkSlots).
+ -- Corresponds to L1 parameter 'number-of-DL-symbols-common' (see 38.211, section FFS_Section).
+ nrofDownlinkSymbols INTEGER (0..maxSymbolIndex) OPTIONAL,
+
+ -- Number of consecutive full UL slots at the end of each DL-UL pattern.
+ -- Corresponds to L1 parameter 'number-of-UL-slots' (see 38.211, section FFS_Section)
+ -- FFS_Value: Verify that 160 is correct (maximum number of slots within the longest period (10 ms) and the largest subcarrier spacing.
+ nrofUplinkSlots INTEGER (0..160) OPTIONAL,
+
+ -- Number of consecutive UL symbols in the end of the slot preceding the first full UL slot (as derived from nrofUplinkSlots).
+ -- Corresponds to L1 parameter 'number-of-UL-symbols-common' (see 38.211, section FFS_Section)
+ nrofUplinkSymbols INTEGER (0..maxSymbolIndex) OPTIONAL
+ } OPTIONAL, -- Cond TDD
+
+ -- TX power that the NW used for SSB transmission. The UE uses it to estimate the RA preamble TX power.
+ -- CHECK: Value range and step size (table says [-60...50]) (see 38.213, section 7.4)
+ ss-PBCH-BlockPower INTEGER (-60..50),
+
+ -- Parameters that are also conveyed via system information (SIB1) but which are provided here to accelerate handover
+ -- and to avoid that UEs need to read system information from SCells.
+ rach-ConfigCommon RACH-ConfigCommon
+
+ -- =====================================
+ -- FFS which of the following are needed
+ --
+ -- BandwidthPart-Confi
+ -- ControlResourceSet
+ -- SearchSpace
+ -- or include pdcchConfigSIB1 instead of BWP, CORESET and SearchSpace?
+ -- bcch-Config BCCH-Config,
+ -- pcch-Config PCCH-Config,
+ -- prach-Config PRACH-ConfigSIB,
+ -- pdsch-ConfigCommon PDSCH-ConfigCommon,
+ -- pusch-ConfigCommon PUSCH-ConfigCommon,
+ -- pucch-ConfigCommon PUCCH-ConfigCommon,
+ -- soundingRS-UL-ConfigCommon SoundingRS-UL-ConfigCommon,
+ -- uplinkPowerControlCommon UplinkPowerControlCommon,
+
+}
+
+-- TAG-SERVING-CELL-CONFIG-COMMON-STOP
+-- TAG-SERVING-CELL-CONFIG-DEDICATED-START
+
+ServingCellConfigDedicated ::= SEQUENCE {
+ -- L1 parameters:
+
+ tdd-UL-DL-configurationDedicated SEQUENCE {
+ -- The slotSpecificConfiguration allows overriding UL/DL allocations provided in tdd-UL-DL-configurationCommon.
+ -- FFS_ASN1: Consider making this an AddMod/Release list
+ -- FFS_ASN1: Replace absolute numbers by variables... once RAN1 confirms.
+ slotSpecificConfigurations SEQUENCE (SIZE(0..160)) OF SEQUENCE {
+ -- Identifies a slot within a dl-UL-TransmissionPeriodicity (given in tdd-UL-DL-configurationCommon)
+ slotIndex INTEGER (0..160),
+
+ -- FFS_ASN1: Consider a choice structure with options [allDownlink, allUplink, explicit] where the following two fields are provided
+ -- only in case of "explicit".
+
+ -- Number of consecutive DL symbols in the beginning of the slot identified by slotIndex
+ -- Corresponds to L1 parameter 'number-of-DL-symbols-dedicated' (see 38.211, section FFS_Section)
+ nrofDownlinkSymbols INTEGER (0..maxSymbolIndex) OPTIONAL,
+
+ -- Number of consecutive UL symbols in the end of the slot identified by slotIndex
+ -- Corresponds to L1 parameter 'number-of-UL-symbols-dedicated' (see 38.211, section FFS_Section)
+ nrofUplinkSymbols INTEGER (0..maxSymbolIndex) OPTIONAL
+ } OPTIONAL -- Need M
+ } OPTIONAL, -- Cond TDD
+
+ bandwidthParts BandwidthParts OPTIONAL,
+
+ -- Identifer used to initalite data scrambling (c_init) for both PDSCH and PUSCH.
+ -- Corresponds to L1 parameter 'Data-scrambling-Identity' (see 38,214, section FFS_Section)
+ dataScramblingIdentity NULL OPTIONAL, -- WS modification: was FFS_Value
+
+ pdcch-Config PDCCH-Config OPTIONAL,
+ pdsch-Config PDSCH-Config OPTIONAL,
+
+ -- FFS in RAN1: Tracking Reference Signals configuration: TRS-Config?
+ csi-MeasConfig CSI-MeasConfig OPTIONAL,
+
+ pucch-Config PUCCH-Config OPTIONAL,
+ pusch-Config PUSCH-Config OPTIONAL,
+ srs-Config SRS-Config OPTIONAL,
+
+ -- MAC parameters:
+ -- FFS: Is it per BWP?
+
+
+ -- FFS: Resources for scheduling request (per BWP)
+
+ sps-Config SPS-Config OPTIONAL,
+
+ -- Indicates whether this SCell is cross-carrier scheduled by another serving cell.
+ -- FFS: How to indicate whether CIF is present in the DCIs of the PCell? Should the CrossCarrierSchedulingConfig be included
+ -- and set to own so that the field "cif-Presence" can be set?
+ crossCarrierSchedulingConfig CrossCarrierSchedulingConfig OPTIONAL, -- Cond SCell
+
+ -- Timing Advance Group ID, as specified in TS 38.321 [3], which this cell belongs to.
+ tag-Id TAG-Id,
+ -- Enables the "UE beam lock function (UBF)", which disable changes to the UE beamforming configuration when in NR_RRC_CONNECTED.
+ -- FFS: Parameter added preliminary based on RAN4 LS in R4-1711823. Decide where to place it (maybe ServingCellConfigCommon or
+ -- in a BeamManagement IE??)
+ ue-BeamLockFunction ENUMERATED {enabled} OPTIONAL,
+
+ -- Indicates whether UE shall apply as pathloss reference either the downlink of PCell or of SCell that corresponds with this uplink
+ -- (see 38.213, section 7)
+ pathlossReferenceLinking ENUMERATED {pCell, sCell} OPTIONAL -- Cond SCell
+}
+
+-- TAG-SERVING-CELL-CONFIG-DEDICATED-STOP
+-- TAG-SRB-IDENTITY-START
+
+SRB-Identity ::= INTEGER (1..3)
+
+-- TAG-SRB-IDENTITY-STOP
+-- TAG-SPS-CONFIG-START
+
+-- SPS may be configured on the PCell as well as on SCells. But it shall not be configured for more than
+-- one serving cell of a cell group at once.
+SPS-Config ::= SEQUENCE {
+ -- FFS: Same SPS for UL and DL (like in LTE)? See also naming FFS above.
+ -- sps-RNTI BIT STRING (SIZE (16)) OPTIONAL,
+
+ -- FSS / TODO: ADD DL SPS!
+
+ -- UL SPS configuration
+ -- FFS CHECK: Add possibility to release UL SPS
+ uplink SEQUENCE { periodicity NULL, -- WS modification: was TYPE_FFS!
+ powerControl NULL, -- WS modification: was TYPE_FFS!
+
+ -- Enable transformer precoder for type1 and type2. Absence indicates that it is disabled.
+ -- Corresponds to L1 parameter 'UL-TWG-tp' (see 38.214, section FFS_Section)
+ transformPrecoder ENUMERATED {enabled} OPTIONAL,
+ -- The number of HARQ processes configured. It applies for both Type 1 and Type 2
+ -- Corresponds to L1 parameter 'UL-TWG-numbHARQproc' (see 38.214, section FFS_Section)
+ nrofHARQ-processes INTEGER(1..1) OPTIONAL, -- WS modification: was FFS_Value
+
+ -- If repetitions is used, this field indicates the redundancy version (RV) sequence to use.
+ -- Corresponds to L1 parameter 'UL-TWG-RV-rep' (see 38.214, section FFS_Section)
+ repK-RV ENUMERATED {s1-0231, s2-0303, s3-0000} OPTIONAL,
+ -- Periodicity for UL transmission without UL grant for type 1 and type 2
+ -- Corresponds to L1 parameter 'UL-TWG-periodicity' (see 38.321, section FFS_Section)
+ -- The following periodicities are supported depending on the configured subcarrier spacing [ms]:
+ -- 15kHz: 2 symbols, 7 symbols, 1, 2, 5, 10, 20, 32, 40, 64, 80, 128, 160, 320, 640
+ -- 30kHz: 2 symbols, 7 symbols, 0.5, 1, 2, 5, 10, 20, 32, 40, 64, 80, 128, 160, 320, 640
+ -- 60kHz: 2 symbols, 7 symbols (6 symbols for ECP), 0.25,0.5,1,2,5,10,20,32, 40, 64, 80, 128, 160, 320, 640
+ -- 120kHz: 2 symbols, 7 symbols, 0.125,0.25,0.5,1,2,5,10,20, 32, 40, 64, 80, 128, 160, 320, 640 OPTIONAL,
+ -- 2 symbols, 7 symbols, 0.125,0.25,0.5,1,2,5,10,20, 32, 40, 64, 80, 128, 160, 320, 640
+ priodicity ENUMERATED {sym2, sym7, ms0dot125, ms0dot25, ms0dot5, ms1, ms2, ms5, ms10, ms20,
+ ms32, ms40, ms64, ms80, ms128, ms160, ms320, ms640} OPTIONAL,
+
+
+ -- UL-SPS transmission with fully RRC-configured UL grant (Type1) (see 38.214, section x.x.x.x). FFS_Ref
+ -- If not provided or set to release, use UL-SPS transmission with UL grant configured by DCI addressed to SPS-RNTI (Type2).
+ rrcConfiguredUplinkGrant CHOICE {
+ setup SEQUENCE {
+ -- FFS: Merge the following two into one. Possibly don't use "periodicity" for rrcConfiguredUplinkGrant
+ timeDomainOffset NULL, -- WS modification: was TYPE_FFS!
+ timeDomainAllocation NULL, -- WS modification: was TYPE_FFS!
+ frequencyDomainAllocation NULL, -- WS modification: was TYPE_FFS!
+ -- UE-specific DMRS configuration:
+ dmrs NULL, -- WS modification: was TYPE_FFS!
+ mcsAndTBS NULL, -- WS modification: was TYPE_FFS!
+ -- The number or repetitions of K:
+ repK NULL }, -- WS modification: was TYPE_FFS!
+ release NULL
+ } OPTIONAL -- Need M
+ } OPTIONAL -- Need M
+}
+
+-- TAG-SPS-CONFIG-STOP
+-- TAG-SRS-CONFIG-START
+
+-- SRS configuration allowing to add and remove sets of SRS resources
+SRS-Config ::= SEQUENCE {
+ srs-ResourceSetToReleaseList SEQUENCE (SIZE(0..maxNrofSRS-ResourceSets)) OF SRS-ResourceSetId OPTIONAL, -- Need M
+ srs-ResourceSetToAddModList SEQUENCE (SIZE(0..maxNrofSRS-ResourceSets)) OF SRS-ResourceSet OPTIONAL, -- Need M
+
+ srs-ResourceToReleaseList SEQUENCE (SIZE(1..maxNrofSRS-Resources)) OF SRS-ResourceId OPTIONAL, -- Need M
+ srs-ResourceToAddModList SEQUENCE (SIZE(1..maxNrofSRS-Resources)) OF SRS-Resource OPTIONAL, -- Need M
+
+
+ -- RNTI used for SRS TPC. Corresponds to L1 parameter 'TPC-SRS-RNTI' (see 38.213, section 10)
+ tpc-SRS-RNTI BIT STRING (SIZE (16)) OPTIONAL
+}
+
+-- A set of SRS resources
+SRS-ResourceSet ::= SEQUENCE {
+ srs-ResourceSetId SRS-ResourceSetId,
+ srs-ResourcesIds SEQUENCE (SIZE(1..maxNrofSRS-ResourcesPerSet)) OF SRS-ResourceId,
+
+ -- The DCI "code point" upon which the UE shall transmit SRS according to this SRS resource set configuration.
+ -- FFS: Verify definition and usage.
+ -- Corresponds to L1 parameter 'AperiodicSRS-ResourceTrigger' (see 38.214, section FFS_Section)
+ aperiodicSRS-ResourceTrigger NULL -- WS modification: was TYPE_FFS!
+}
+
+SRS-ResourceSetId ::= INTEGER (0..maxNrofSRS-ResourceSets-1)
+
+SRS-Resource ::= SEQUENCE {
+ srs-ResourceId SRS-ResourceId,
+ nrofSRS-Ports ENUMERATED {port1, ports2, ports4},
+ -- Comb value (2 or 4) and comb offset. Corresponds to L1 parameter 'SRS-TransmissionComb' (see 38.214, section 6.2.1)
+ transmissionComb ENUMERATED {n2, n4},
+ -- OFDM symbol location of the SRS resource within a slot including number of OFDM symbols (1, 2, or 4 per SRS resource)
+ -- Corresponds to L1 parameter 'SRS-ResourceMapping' (see 38.214, section 6.2.1)
+ resourceMapping NULL, -- WS modification: was TYPE_FFS!
+ -- Parameter(s) defining frequency domain position and configurable shift to align SRS allocation to 4 PRB grid.
+ -- Corresponds to L1 parameter 'SRS-FreqDomainPosition' (see 38.214, section 6.2.1)
+ freqDomainPosition NULL OPTIONAL, -- WS modification: was FFS_Value
+ -- Includes parameters capturing SRS frequency hopping
+ -- Corresponds to L1 parameter 'SRS-FreqHopping' (see 38.214, section 6.2.1)
+ freqHopping INTEGER (0..63), -- WS modification: was TYPE_FFS!, 38.211 suggests this range
+ -- Parameter(s) for configuring group or sequence hopping including hopping sequence initialization
+ -- Corresponds to L1 parameter 'SRS-GroupSequenceHopping' (see 38.211, section FFS_Section)
+ groupOrSequenceHopping INTEGER (0..2) OPTIONAL, -- WS modification: was FFS_Value, 38.211 suggests this range
+ -- Time domain behavior of SRS resource configuration
+ -- Corresponds to L1 parameter 'SRS-ResourceConfigType' (see 38.214, section 6.2.1)
+ -- FFS: Add configuration parameters for the different SRS resource types?
+ resourceType CHOICE {
+ aperiodic SEQUENCE {
+ },
+ semi-persistent SEQUENCE {
+ },
+ periodic SEQUENCE {
+ }
+ } OPTIONAL, -- Need M
+ -- Periodicity and slot offset for periodic/semi-persistent SRS
+ -- Corresponds to L1 parameter 'SRS-SlotConfig' (see 38.214, section 6.2.1)
+ -- FFS_Value: RAN1 discusses whether more values for other subcarrier spacings are needed.
+ periodicityAndOffset CHOICE {
+ sl2 INTEGER(0..1),
+ sl5 INTEGER(0..4),
+ sl10 INTEGER(0..9),
+ sl20 INTEGER(0..19),
+ sl40 INTEGER(0..39),
+ sl80 INTEGER(0..79),
+ sl160 INTEGER(0..159),
+ sl320 INTEGER(0..319)
+ },
+ -- Sequence ID. Corresponds to L1 parameter 'SRS-SequenceId' (see 38.214, section 6.2.1)
+ sequenceId NULL, -- WS modification: was TYPE_FFS!
+ -- SRS antenna switching. Corresponds to L1 parameter 'SRS-AntSwitching' (see 38.211, section 6.2.1)
+ antennaSwitching NULL, -- WS modification: was TYPE_FFS!
+ -- Includes parameters for configuration of carrier based SRS switching
+ -- Corresponds to L1 parameter 'SRS-CarrierSwitching' (see 38,214, section FFS_Section)
+ carrierSwitching NULL OPTIONAL, -- WS modification: was FFS_Value
+ -- Parameter(s) definiing cyclic shift configuration. Corresponds to L1 parameter 'SRS-CyclicShiftConfig' (see 38.214, section 6.2.1)
+ cyclicShift INTEGER (0..12) OPTIONAL, -- WS modification: was FFS_Value but 38.211 suggests this range
+ -- Configuration of the spatial relation between a reference RS and the target SRS. Reference RS can be SSB/CSI-RS/SRS
+ -- Corresponds to L1 parameter 'SRS-SpatialRelationInfo' (see 38.214, section 6.2.1)
+ spatialRelationInfo ENUMERATED {ssb-pbch, csi-rs, srs} OPTIONAL -- WS modification: was FFS_Value, 38.214 suggests those values
+}
+
+SRS-ResourceId ::= INTEGER (0..maxNrofSRS-Resources-1)
+
+-- TAG-SRS-CONFIG-STOP
+-- TAG-SUBCARRIER-SPACING-START
+
+-- Check value range! Currently used for subcarrierSpacingCommon (SIB1, Msg2, Msg4
+-- FFS: Replace this 2-bit field by a 1-bit field: ENUMERATED {sc1, sc2}. Then define that sc1 = 15 kHz and sc2 = 30 kHz
+-- when carrier frequency < 6 GHz and sc1 = 60 kHz and sc2 = 120 kHz when carrier frequency is > 6GHz?
+SubcarrierSpacing ::= ENUMERATED {kHz15, kHz30, kHz60, kHz120}
+
+-- 15 or 30 kHz (<6GHz), 120 and 240 kHz (>6GHz).
+SubcarrierSpacingSSB ::= ENUMERATED {kHz15, kHz30, kHz120, kHz240}
+
+SubcarrierSpacingRACH ::= NULL -- WS modification: was TYPE_FFS!
+
+-- TAG-SUBCARRIER-SPACING-STOP
+
+BandCombinationList ::= SEQUENCE (SIZE (1..maxBandComb)) OF BandCombination
+
+BandCombination ::= SEQUENCE {
+ -- FFS How to decouple DL and UL
+ -- FFS How to address NC CA in relation to carrier separation
+ -- intraBandSimultaneousTxRx will be added with FFS (per UE or per band combination)
+ -- multipleTimingAdvance will be added with FFS (per UE or per band combination)
+ -- singleTx will be included per band combination
+ -- scalingFactor will be included per band per band combination
+}
+
+
+RAT-Type ::= ENUMERATED {nr, mrdc, spare1, ...}
+
+-- FFS utra, geran-cs, geran-ps and cdma2000-1XRTT
+
+UE-CapabilityRAT-ContainerList ::=SEQUENCE (SIZE (0.. maxRAT-CapabilityContainers)) OF UE-CapabilityRAT-Container
+
+UE-CapabilityRAT-Container ::= SEQUENCE {
+ rat-Type RAT-Type,
+ ueCapabilityRAT-Container OCTET STRING
+}
+
+
+UE-MRDC-Capability ::= SEQUENCE {
+ measParameters-MRDC MeasParameters-MRDC,
+ rf-Parameters-MRDC RF-Parameters-MRDC,
+ phyLayerParameters-MRDC PhyLayerParameters-MRDC
+ -- FFS on other parameters
+}
+
+RF-Parameters-MRDC ::= SEQUENCE {
+ supportedBandCombination BandCombinationList
+ -- FFS on other parameters
+}
+
+PhyLayerParameters-MRDC ::= SEQUENCE {
+ supportedBasebandProcessingCombination-MRDC BasebandProcessingCombination-MRDC
+ -- FFS if supportedBasebandProcessingCombination-MRDC is included here or BandCombinationList
+ -- FFS on other parameters
+}
+
+BasebandProcessingCombination-MRDC ::= SEQUENCE (SIZE (1..maxBasebandProcComb)) OF LinkedBasebandProcessingCombination
+
+LinkedBasebandProcessingCombination ::= SEQUENCE {
+ basebandProcessingCombinationIndex BasebandProcessingCombinationIndex,
+ basebandProcessingCombinationLinkedIndex SEQUENCE (SIZE (1..maxBasebandProcComb)) OF BasebandProcessingCombinationIndex
+}
+
+BasebandProcessingCombinationIndex ::= INTEGER (1..maxBasebandProcComb)
+
+MeasParameters-MRDC ::= SEQUENCE {
+ intraCarrierConcurrentMeas ENUMERATED {supported} OPTIONAL,
+ independentGapConfig ENUMERATED {supported} OPTIONAL,
+ sstd-MeasType1 ENUMERATED {supported} OPTIONAL
+}
+
+UE-NR-Capability ::= SEQUENCE {
+ pdcp-Parameters PDCP-Parameters,
+ rlc-Parameters RLC-Parameters, -- FFS OPTIONAL
+ mac-Parameters MAC-Parameters, -- FFS OPTIONAL
+ phyLayerParameters PhyLayerParameters,
+ rf-Parameters RF-Parameters,
+ nonCriticalExtension SEQUENCE {} OPTIONAL
+}
+
+PhyLayerParameters ::= SEQUENCE {
+ supportedBasebandProcessingCombination SupportedBasebandProcessingCombination
+ -- FFS on other parameters
+}
+
+RF-Parameters ::= SEQUENCE {
+ supportedBandListNR SupportedBandListNR,
+ supportedBandCombination BandCombinationList,
+ intraBandAsyncFDD ENUMERATED {supported} OPTIONAL
+ -- FFS Whether intraBandAsyncFDD is included per UE or per band combination
+}
+
+SupportedBandListNR ::= SEQUENCE (SIZE (1..maxBands)) OF BandNR
+
+SupportedBandCombination ::= SEQUENCE (SIZE (1..maxBandComb)) OF BandCombination
+
+SupportedBasebandProcessingCombination ::= SEQUENCE (SIZE (1..maxBasebandProcComb)) OF BasebandProcessingCombination
+
+BasebandProcessingCombination ::= SEQUENCE {
+ basebandParametersPerBand SEQUENCE (SIZE (1..maxSimultaneousBands)) OF BasebandParametersPerBand
+ -- FFS on other parameters
+}
+
+BasebandParametersPerBand ::= SEQUENCE {
+ ca-BandwidthClassDL CA-BandwidthClass,
+ ca-BandwidthClassUL CA-BandwidthClass,
+ basebandParametersPerCC SEQUENCE (SIZE (1..maxServCell)) OF BasebandParametersPerCC,
+ supportedBWPerCC BWPerCC
+ -- FFS on the need (e.g. if ca-BandwidthClass is sufficient to cover BWPerCC)
+ -- FFS on other parameters
+}
+
+BasebandParametersPerCC ::= SEQUENCE {
+ supportedMIMO-CapabilityDL MIMO-Capability OPTIONAL,
+ supportedMIMO-CapabilityUL MIMO-Capability OPTIONAL,
+ modulationOrder ModulationOrder,
+ subCarrierSpacing SubCarrierSpacing
+ -- FFS if modulationOrder and subCarrierSpacing are included per Band or per CC
+ -- FFS on other parameters
+}
+
+BandNR ::= SEQUENCE {
+ bandNR FreqBandIndicatorNR,
+ supportedMIMO-CapabilityDL MIMO-Capability OPTIONAL,
+ supportedMIMO-CapabilityUL MIMO-Capability OPTIONAL
+ -- FFS on other parameters
+}
+
+CA-BandwidthClass ::= ENUMERATED {a, b, c, d, e, f, ...}
+
+MIMO-Capability ::= SEQUENCE {
+ -- FFS on the parameters
+}
+
+ModulationOrder ::= SEQUENCE {
+ -- FFS on the parameters
+}
+
+SubCarrierSpacing ::= SEQUENCE {
+ -- FFS on the parameters
+}
+
+PDCP-Parameters ::= SEQUENCE {
+ dataRateDRB-IP ENUMERATED {kbps64, spare6, spare5, spare4, spare3, spare2, spare1, spare0} OPTIONAL,
+ supportedROHC-Profiles SEQUENCE {
+ profile0x0000 BOOLEAN,
+ profile0x0001 BOOLEAN,
+ profile0x0002 BOOLEAN,
+ profile0x0003 BOOLEAN,
+ profile0x0004 BOOLEAN,
+ profile0x0006 BOOLEAN,
+ profile0x0101 BOOLEAN,
+ profile0x0102 BOOLEAN,
+ profile0x0103 BOOLEAN,
+ profile0x0104 BOOLEAN
+ },
+ maxNumberROHC-ContextSessions ENUMERATED {cs2, cs4, cs8, cs12, cs16, cs24, cs32, cs48, cs64, cs128, cs256, cs512, cs1024, cs16384, spare2, spare1},
+ uplinkOnlyROHC-Profiles ENUMERATED {supported} OPTIONAL,
+ continueROHC-Context ENUMERATED {supported} OPTIONAL,
+ outOfOrderDelivery ENUMERATED {supported} OPTIONAL,
+ shortSN ENUMERATED {supported} OPTIONAL,
+ volteOverNR-PDCP ENUMERATED {supported} OPTIONAL
+}
+
+RLC-Parameters ::= SEQUENCE {
+ amWithShortSN ENUMERATED {supported} OPTIONAL,
+ umWithShortSN ENUMERATED {supported} OPTIONAL,
+ umWIthLongSN ENUMERATED {supported} OPTIONAL
+}
+
+MAC-Parameters ::= SEQUENCE {
+ lcp-Restriction ENUMERATED {supported} OPTIONAL,
+ skipUplinkTxDynamic ENUMERATED {supported} OPTIONAL,
+ logicalChannelSR-DelayTimer ENUMERATED {supported} OPTIONAL,
+ longDRX-Cycle ENUMERATED {supported} OPTIONAL,
+ shortDRX-Cycle ENUMERATED {supported} OPTIONAL,
+ numberOfSR-Configurations ENUMERATED {n2, n3, n4,...} OPTIONAL, -- FFS value range
+ numberOfConfiguredGrantConfigurations ENUMERATED {n2, n3, n4,...} OPTIONAL -- FFS value range
+}
+
+-- TAG-UE-NR-CAPABILITY-STOP
+-- TAG-MULTIPLICITY-AND-TYPE-CONSTRAINT-DEFINITIONS-START
+maxBandComb INTEGER ::= 1 -- Maximum number of DL band combinations; WS modification: was FFS
+maxBasebandProcComb INTEGER ::= 1 -- Maximum number of base band processing combinations; WS modification: was FFS
+maxNrofSCells INTEGER ::= 15 -- Max number of secondary serving cells per cell group
+maxNrofCellMeas INTEGER ::= 1 -- Maximum number of entries in each of the cell lists in a measurement object; WS modification: was FFS
+maxNroSS-BlocksToAverage INTEGER ::= 2 -- Max number for the (max) number of SS blocks to average to determine cell measurement; WS modification: was FFS
+maxNroCSI-RS-ResourcesToAverage INTEGER ::= 2 -- Max number for the (max) number of CSI-RS to average to determine cell measurement; WS modification: was FFS
+
+maxNrofSR-CongigPerCellGroup INTEGER ::= 8 -- Maximum number of SR configurations per cell group
+
+maxLCG-ID INTEGER ::= 7 -- Maximum value of LCG ID
+macLC-ID INTEGER ::= 64 -- Maximum value of Logical Channel ID; WS modification: was FFS, 38.221 suggests 64
+maxNrofTAGs INTEGER ::= 4 -- Maximum number of Timing Advance Groups
+maxNrofTAGs-1 INTEGER ::= 3 -- Maximum number of Timing Advance Groups minus 1
+
+maxNrofBandwidthParts INTEGER ::= 4 -- Maximum number of BWPs per serving cell
+maxNrofBandwidthParts-1 INTEGER ::= 3 -- Maximum number of BWPs per serving cell minus 1
+
+maxSymbolIndex INTEGER ::= 13 -- Maximum index identifying a symbol within a slot (14 symbols, indexed from 0..13)
+
+maxNrofPhysicalResourceBlocks INTEGER ::= 275 -- Maximum number of PRBs
+maxNrofPhysicalResourceBlocks-1 INTEGER ::= 274 -- Maximum number of PRBs
+maxNrofPhysicalResourceBlocksTimes4 INTEGER ::= 1100 -- Maximum number of PRBs (used to reference PRBs in another subcarrier spacing)
+
+maxNrofControlResourceSets INTEGER ::= 2 -- Max number of CoReSets configurable on a serving cell; WS modification: was FFS
+maxNrofControlResourceSets-1 INTEGER ::= 1 -- Max number of CoReSets configurable on a serving cell minus 1; WS modification: was FFS
+maxCoReSetStartSymbol INTEGER ::= 0 -- Highest possible start symbol for a control resource set; WS modification: was FFS
+maxCoReSetDuration INTEGER ::= 3 -- Max number of OFDM symbols in a control resource set
+maxNrofSearchSpacesPerCoReSet INTEGER ::= 0 -- Max number of search spaces configurable per Control Resource Set; WS modification: was FFS
+
+maxNrofRateMatchPatterns INTEGER ::= 1 -- Max number of rate matching patterns that may be configured; WS modification: was FFS
+maxNrofRateMatchPatterns-1 INTEGER ::= 0 -- Max number of rate matching patterns that may be configured minus 1; WS modification: was FFS
+maxNrofCSI-Reports INTEGER ::= 1 -- Maximum number of report configurations; WS modification: was FFS
+maxNrofCSI-Reports-1 INTEGER ::= 0 -- Maximum number of report configurations minus 1; WS modification: was FFS
+maxNrofCSI-ResourceConfigurations INTEGER ::= 1 -- Maximum number of resource configurations; WS modification: was FFS
+maxNrofCSI-ResourceConfigurations-1 INTEGER ::= 0 -- Maximum number of resource configurations minus 1; WS modification: was FFS
+maxNrofCSI-ResourceSets INTEGER ::= 1 -- Maximum number of resource sets per resource configuration; WS modification: was FFS
+maxNrofCSI-ResourceSets-1 INTEGER ::= 0 -- Maximum number of resource sets per resource configuration minus 1; WS modification: was FFS
+maxNrofNZP-CSI-RS-Resources INTEGER ::= 1 -- Maximum number of Non-Zero-Power (NZP) CSI-RS resources; WS modification: was FFS
+maxNrofNZP-CSI-RS-Resources-1 INTEGER ::= 0 -- Maximum number of Non-Zero-Power (NZP) CSI-RS resources minus 1; WS modification: was FFS
+maxNrofZP-CSI-RS-Resources INTEGER ::= 1 -- Maximum number of Zero-Power (NZP) CSI-RS resources; WS modification: was FFS
+maxNrofZP-CSI-RS-Resources-1 INTEGER ::= 0 -- Maximum number of Zero-Power (NZP) CSI-RS resources minus 1; WS modification: was FFS
+maxNrofCSI-IM-Resources INTEGER ::= 1 -- Maximum number of CSI-IM resources. See CSI-IM-ResourceMax in 38.214. WS modification: was FFS
+maxNrofCSI-IM-Resources-1 INTEGER ::= 0 -- Maximum number of CSI-IM resources minus 1. See CSI-IM-ResourceMax in 38.214. WS modification: was FFS
+maxNrofSSB-Resources INTEGER ::= 64 -- Maximum number of SSB resources in a resource set
+maxNrofSSB-Resources-1 INTEGER ::= 63 -- Maximum number of SSB resources in a resource set minus 1
+maxNrofCSI-RS-ResourcesPerSet INTEGER ::= 8 -- Maximum number of CSI-RS resources per resource set
+maxNrofCSI-MeasId INTEGER ::= 1 -- Maximum number of link configurations; WS modification: was FFS
+maxNrofCSI-MeasId-1 INTEGER ::= 0 -- Maximum number of link configurations minus 1; WS modification: was FFS
+maxNrofCSI-RS-ResourcesRRM INTEGER ::= 1 -- Maximum number of CSI-RS resources for an RRM measurement object; WS modification: was FFS
+maxNrofCSI-RS-ResourcesRRM-1 INTEGER ::= 0 -- Maximum number of CSI-RS resources for an RRM measurement object minus 1; WS modification: was FFS
+
+maxNrofObjectId INTEGER ::= 1 -- Maximum number of configured measurement objects; WS modification: was FFS
+maxNrOfRA-PreamblesPerSSB INTEGER ::= 1 -- Maximum number of Random Access Preamble value per SSB; WS modification: was FFS
+maxNrofReportConfigId INTEGER ::= 1 -- Maximum number of reporting configurations; WS modification: was FFS
+maxNrofMeasId INTEGER ::= 1 -- Maximum number of configured measurements; WS modification: was FFS
+maxNroQuantityConfig INTEGER ::= 2 -- Maximum number of quantity configurations
+
+maxNrofSRS-ResourceSets INTEGER ::= 1 -- Maximum number of SRS resource sets. WS modification: was FFS
+maxNrofSRS-ResourceSets-1 INTEGER ::= 0 -- Maximum number of SRS resource sets minus 1. WS modification: was FFS
+maxNrofSRS-Resources INTEGER ::= 1 -- Maximum number of SRS resources in an SRS resource set. WS modification: was FFS
+maxNrofSRS-Resources-1 INTEGER ::= 0 -- Maximum number of SRS resources in an SRS resource set minus 1. WS modification: was FFS
+maxRA-PreambleIndex INTEGER ::= 0 -- Maxximum value of Random Access Preamble Index; WS modification: was FFS
+maxRAT-CapabilityContainers INTEGER ::= 3 -- Maximum number of interworking RAT containers (incl NR and MRDC); WS modification: was FFS
+maxServCell INTEGER ::= 1 -- Maximum number of serving cells; WS modification: was FFS
+maxSimultaneousBands INTEGER ::= 1 -- Maximum number of simultaneously aggregated bands; WS modification: was FFS
+
+-- TAG-MULTIPLICITY-AND-TYPE-CONSTRAINT-DEFINITIONS-STOP
+
+-- WS modification: fake definitions for missing entries in ASN.1
+AdditionalSpectrumEmission ::= INTEGER (1..32)
+ARFCN-ValueNR ::= INTEGER
+BandwidthParts ::= BandwidthPart
+BSR-Configuration ::= BSR-Config
+CarrierBandwidthNR ::= ENUMERATED {ffs}
+ControlResourceId ::= ControlResourceSetId
+CSI-RS-ConfigurationId ::= INTEGER
+CSI-RSIndex ::= INTEGER
+CSIRS-ID ::= INTEGER
+FilterCoefficient ::= ENUMERATED {
+ fc0, fc1, fc2, fc3, fc4, fc5,
+ fc6, fc7, fc8, fc9, fc11, fc13,
+ fc15, fc17, fc19, spare1, ...}
+Hysteresis ::= INTEGER (0..30)
+maxBands INTEGER ::= 256
+maxCellReport INTEGER ::= 8
+maxDRB INTEGER ::= 29
+maxFreq INTEGER ::= 1
+maxLCid INTEGER ::= 32
+maxLCH INTEGER ::= 8
+maxQFI INTEGER ::= 0
+maxNrofAggregatedCellsPerCellGroup INTEGER ::= 1
+maxNrofCSI-ReportConfig-1 INTEGER ::= 0
+maxNrofPCIsPerSMTC INTEGER ::= 1
+maxNrofQFIs INTEGER ::= 1
+maxNrofSchedulingRequestResoruces INTEGER ::= 64
+maxNrofSearchSpaces INTEGER ::= 1
+maxNrofSlotFormatCombinations INTEGER ::= 1
+maxNrofSlotFormatCombinations-1 INTEGER ::= 1
+maxNrofSR-ConfigPerCellGroup INTEGER ::= 1
+maxNrofSRS-ResourcesPerSet INTEGER ::= 1
+maxNroCSI-RS INTEGER ::= 1
+maxNroIndexesToReport INTEGER ::= 1
+maxNroSSBs INTEGER ::= 8
+maxQuantityConfigId INTEGER ::= 1
+maxRAcsirsResources INTEGER ::= 1
+maxRAssbResources INTEGER ::= 1
+maxReportConfigId INTEGER ::= 1
+maxSCellGroups INTEGER ::= 1
+MeasGapConfig ::= SEQUENCE {}
+MeasObjectEUTRA ::= SEQUENCE {}
+MeasResultListEUTRA ::= SEQUENCE {}
+NumberOfRA-Preambles ::= NumberofRA-Preambles
+P-Max ::= INTEGER (-30..33)
+PDUsessionID ::= INTEGER
+PhysicalCellId ::= PhysCellId
+PhysCellIdRange ::= SEQUENCE {
+ start PhysCellId,
+ range ENUMERATED {
+ n4, n8, n12, n16, n24, n32, n48, n64, n84,
+ n96, n128, n168, n252, n504, spare2,
+ spare1} OPTIONAL -- Need OP
+}
+PUCCH-F2-number-of-PRB ::= INTEGER
+UECapabilityInformation ::= OCTET STRING
+RadioBearerConfiguration ::= RadioBearerConfig
+RA-Resources ::= SEQUENCE {}
+ReportInterval ::= ENUMERATED {
+ ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240,
+ min1, min6, min12, min30, min60, spare3, spare2, spare1}
+ReportConfigEUTRA ::= SEQUENCE {}
+RRC-TransactionIdentifier ::= INTEGER (0..3)
+RSRP-Range ::= INTEGER (0..97)
+RSRPRange ::= RSRP-Range
+RSRQ-Range ::= INTEGER (0..34)
+RSRQRange ::= RSRQ-Range
+SchedulingRequestId ::= INTEGER
+SchedulingRequestResource-Config ::= SEQUENCE{}
+ShortMAC-I ::= BIT STRING (SIZE (16))
+SINR-Range ::= INTEGER (0..127)
+SINRRange ::= SINR-Range
+SSB-ID ::= INTEGER (1..7)
+SSB-Index ::= INTEGER (1..7)
+TAG-Configuration ::= TAG-Config
+TimeToTrigger ::= ENUMERATED {
+ ms0, ms40, ms64, ms80, ms100, ms128, ms160, ms256,
+ ms320, ms480, ms512, ms640, ms1024, ms1280, ms2560,
+ ms5120}
+
+END
diff --git a/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf b/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf
new file mode 100644
index 0000000000..67a0dc0825
--- /dev/null
+++ b/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf
@@ -0,0 +1,202 @@
+# nr-rrc.cnf
+# nr-rrc conformation file
+# Copyright 2018 Pascal Quantin
+
+#.OPT
+PER
+UNALIGNED
+#.END
+
+#.USE_VALS_EXT
+DRX-Config/setup/drx-onDurationTimer
+DRX-Config/setup/drx-InactivityTimer
+DRX-Config/setup/drx-RetransmissionTimerDL
+DRX-Config/setup/drx-RetransmissionTimerUL
+DRX-Config/setup/drx-LongCycleStartOffset
+DRX-Config/setup/shortDRX/drx-ShortCycle
+DRX-Config/setup/drx-SlotOffset
+PDCP-Config/moreThanOneRLC/ul-DataSplitThreshold/setup
+PDCP-Config/t-Reordering
+PollByte
+PollPDU
+Q-OffsetRange
+RACH-ConfigCommon/preambleReceivedTargetPower
+SPS-Config/uplink/priodicity
+T-PollRetransmit
+T-Reassembly
+T-StatusProhibit
+
+#.EXPORTS
+
+#.PDU
+#UE-MRDC-Capability
+#UE-NR-Capability
+BCCH-BCH-Message @bcch.bch
+DL-DCCH-Message @dl.dcch
+UL-DCCH-Message @ul.dcch
+#.END
+
+#.OMIT_ASSIGNMENT
+AS-Context
+BandCombination
+BandCombinationList
+BandNR
+BandwidthPart-Config
+BasebandParametersPerBand
+BasebandParametersPerCC
+BasebandProcessingCombination
+BasebandProcessingCombination-MRDC
+BasebandProcessingCombinationIndex
+BeamManagement
+CA-BandwidthClass
+CandidateCellInfo
+CandidateCellInfoList
+CandidateRS-IndexInfo
+CandidateRS-IndexInfoList
+ConfigRestrictInfoSCG
+ConfigRestrictModReqSCG
+ControlResourceIndex
+CSI-IM-ResourceConfig
+CSI-IM-ResourceConfigId
+DRX-Info
+FailureReportSCG-ToOtherRAT
+HandoverCommand
+HandoverCommand-r15-IEs
+HandoverPreparationInformation
+HandoverPreparationInformation-r15-IEs
+LinkedBasebandProcessingCombination
+MAC-Parameters
+MeasParameters-MRDC
+MeasResult2NR
+MeasResultList2NR
+MeasResultServFreq2NR
+MeasResultServFreqList2NR
+MIMO-Capability
+ModulationOrder
+PDCP-Parameters
+PhyLayerParameters
+PhyLayerParameters-MRDC
+PUCCH-F2-number-of-PRB
+PUCCH-format0
+PUCCH-format1
+PUCCH-format2
+PUCCH-format3
+PUCCH-format4
+RadioBearerConfiguration
+RAT-Type
+ReestabNCellInfo
+ReestabNCellInfoList
+RF-Parameters
+RF-Parameters-MRDC
+RLC-Parameters
+RRM-Config
+SIB1
+SCG-Config
+SCG-Config-r15-IEs
+SCG-ConfigInfo
+SCG-ConfigInfo-r15-IEs
+ShortMAC-I
+SubCarrierSpacing
+SubcarrierSpacingRACH
+SupportedBandCombination
+SupportedBandListNR
+SupportedBasebandProcessingCombination
+UE-CapabilityRAT-Container
+UE-CapabilityRAT-ContainerList
+UE-MRDC-Capability
+UE-NR-Capability
+UECapabilityInformation
+ZP-CSI-RS-Resource
+ZP-CSI-RS-ResourceId
+
+#.NO_EMIT ONLY_VALS
+
+#.MAKE_ENUM
+#RAT-Type TYPE_PREFIX
+
+#.FN_HDR BCCH-BCH-Message
+ proto_item *ti;
+
+ col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "NR RRC");
+ col_clear(actx->pinfo->cinfo, COL_INFO);
+
+ ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA);
+ tree = proto_item_add_subtree(ti, ett_nr_rrc);
+
+#.FN_HDR UL-DCCH-Message
+ proto_item *ti;
+
+ col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "NR RRC");
+ col_clear(actx->pinfo->cinfo, COL_INFO);
+
+ ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA);
+ tree = proto_item_add_subtree(ti, ett_nr_rrc);
+
+ actx->pinfo->link_dir = P2P_DIR_UL;
+
+#.FN_HDR DL-DCCH-Message
+ proto_item *ti;
+
+ col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "NR RRC");
+ col_clear(actx->pinfo->cinfo, COL_INFO);
+
+ ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA);
+ tree = proto_item_add_subtree(ti, ett_nr_rrc);
+
+ actx->pinfo->link_dir = P2P_DIR_DL;
+
+#.FN_HDR MIB
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MIB");
+
+#.FN_HDR RRCReconfiguration
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RRC Reconfiguration");
+
+#.FN_HDR MeasurementReport
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Measurement Report");
+
+#.FN_HDR RRCReconfigurationComplete
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RRC Reconfiguration Complete");
+
+# #.FN_BODY UE-CapabilityRAT-Container
+# /* Initialise to invalid value */
+# private_data_set_rat_type(actx, 0xFF);
+# %(DEFAULT_BODY)s
+
+# #.FN_BODY RAT-Type VAL_PTR = &rat_type
+# guint32 rat_type;
+# %(DEFAULT_BODY)s
+# private_data_set_rat_type(actx, (guint8)rat_type);
+
+# #.FN_BODY UE-CapabilityRAT-Container/ueCapabilityRAT-Container VAL_PTR = &ue_cap_tvb
+# tvbuff_t *ue_cap_tvb=NULL;
+# %(DEFAULT_BODY)s
+
+# #.FN_FTR UE-CapabilityRAT-Container/ueCapabilityRAT-Container
+# if (ue_cap_tvb) {
+# proto_tree *subtree;
+#
+# subtree = proto_item_add_subtree(actx->created_item, ett_nr_rrc_UE_CapabilityRAT_Container);
+# switch(private_data_get_rat_type(actx)){
+# case RAT_Type_nr:
+# /* eutra */
+# dissect_UE_NR_Capability_PDU(ue_cap_tvb, actx->pinfo, subtree, NULL);
+# break;
+# case RAT_Type_mrdc:
+# /* utra */
+# dissect_UE_MRDC_Capability_PDU(ue_cap_tvb, actx->pinfo, subtree, NULL);
+# break;
+# default:
+# break;
+# }
+# }
+
+# #.FN_BODY UECapabilityInformation VAL_PTR = &parameter_tvb
+# tvbuff_t *parameter_tvb;
+# proto_tree *subtree;
+#
+# %(DEFAULT_BODY)s
+#
+# if (parameter_tvb) {
+# subtree = proto_item_add_subtree(actx->created_item, ett_nr_rrc_UECapabilityInformation);
+# dissect_lte_rrc_UECapabilityInformation_PDU(parameter_tvb, actx->pinfo, subtree, NULL);
+# }
diff --git a/epan/dissectors/asn1/nr-rrc/packet-nr-rrc-template.c b/epan/dissectors/asn1/nr-rrc/packet-nr-rrc-template.c
new file mode 100644
index 0000000000..8d694c9e38
--- /dev/null
+++ b/epan/dissectors/asn1/nr-rrc/packet-nr-rrc-template.c
@@ -0,0 +1,108 @@
+/* packet-nr-rrc-template.c
+ * NR;
+ * Radio Resource Control (RRC) protocol specification
+ * (3GPP TS 38.331 V15.0.0 Release 15) packet dissection
+ * Copyright 2018, Pascal Quantin
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+
+#include <epan/packet.h>
+#include <epan/asn1.h>
+
+#include <wsutil/str_util.h>
+
+#include "packet-per.h"
+#include "packet-lte-rrc.h"
+
+#define PNAME "NR Radio Resource Control (RRC) protocol"
+#define PSNAME "NR RRC"
+#define PFNAME "nr-rrc"
+
+void proto_register_nr_rrc(void);
+void proto_reg_handoff_nr_rrc(void);
+
+/* Include constants */
+#include "packet-nr-rrc-val.h"
+
+/* Initialize the protocol and registered fields */
+static int proto_nr_rrc = -1;
+#include "packet-nr-rrc-hf.c"
+
+/* Initialize the subtree pointers */
+static gint ett_nr_rrc = -1;
+#include "packet-nr-rrc-ett.c"
+static gint ett_nr_rrc_UECapabilityInformation = -1;
+
+#if 0
+/* Forward declarations */
+static int dissect_UE_NR_Capability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_UE_MRDC_Capability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+
+typedef struct {
+ guint8 rat_type;
+} nr_rrc_private_data_t;
+
+/* Helper function to get or create a struct that will be actx->private_data */
+static nr_rrc_private_data_t* nr_rrc_get_private_data(asn1_ctx_t *actx)
+{
+ if (actx->private_data == NULL) {
+ actx->private_data = wmem_new0(wmem_packet_scope(), nr_rrc_private_data_t);
+ }
+ return (nr_rrc_private_data_t*)actx->private_data;
+}
+
+static guint8 private_data_get_rat_type(asn1_ctx_t *actx)
+{
+ nr_rrc_private_data_t *private_data = (nr_rrc_private_data_t*)nr_rrc_get_private_data(actx);
+ return private_data->rat_type;
+}
+
+static void private_data_set_rat_type(asn1_ctx_t *actx, guint8 rat_type)
+{
+ nr_rrc_private_data_t *private_data = (nr_rrc_private_data_t*)nr_rrc_get_private_data(actx);
+ private_data->rat_type = rat_type;
+}
+#endif
+
+#include "packet-nr-rrc-fn.c"
+
+void proto_register_nr_rrc(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+
+#include "packet-nr-rrc-hfarr.c"
+
+ };
+
+ static gint *ett[] = {
+ &ett_nr_rrc,
+#include "packet-nr-rrc-ettarr.c"
+ &ett_nr_rrc_UECapabilityInformation
+ };
+
+ /* Register protocol */
+ proto_nr_rrc = proto_register_protocol(PNAME, PSNAME, PFNAME);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_nr_rrc, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* Register the dissectors defined in nr-rrc.cnf */
+#include "packet-nr-rrc-dis-reg.c"
+}
+
+void
+proto_reg_handoff_nr_rrc(void)
+{
+}
diff --git a/epan/dissectors/packet-lte-rrc.c b/epan/dissectors/packet-lte-rrc.c
index e1c9251a52..6d2b1c31f1 100644
--- a/epan/dissectors/packet-lte-rrc.c
+++ b/epan/dissectors/packet-lte-rrc.c
@@ -298,7 +298,7 @@ static int hf_lte_rrc_DL_DCCH_Message_PDU = -1; /* DL_DCCH_Message */
static int hf_lte_rrc_UL_CCCH_Message_PDU = -1; /* UL_CCCH_Message */
static int hf_lte_rrc_UL_DCCH_Message_PDU = -1; /* UL_DCCH_Message */
static int hf_lte_rrc_SC_MCCH_Message_r13_PDU = -1; /* SC_MCCH_Message_r13 */
-static int hf_lte_rrc_UECapabilityInformation_PDU = -1; /* UECapabilityInformation */
+static int hf_lte_rrc_lte_rrc_UECapabilityInformation_PDU = -1; /* UECapabilityInformation */
static int hf_lte_rrc_lte_rrc_RLF_Report_r9_PDU = -1; /* RLF_Report_r9 */
static int hf_lte_rrc_lte_rrc_RLF_Report_v9e0_PDU = -1; /* RLF_Report_v9e0 */
static int hf_lte_rrc_lte_rrc_UE_EUTRA_Capability_PDU = -1; /* UE_EUTRA_Capability */
@@ -8620,7 +8620,6 @@ static const fragment_items lte_rrc_sib12_frag_items = {
/* Forward declarations */
static int dissect_DL_DCCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
-static int dissect_UECapabilityInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static const true_false_string lte_rrc_eutra_cap_feat_group_ind_1_val = {
"Intra-subframe freq hopping for PUSCH scheduled by UL grant; DCI format 3a; Aperiodic CQI/PMI/RI report on PUSCH: Mode 2-0 & 2-2 - Supported",
@@ -42511,7 +42510,7 @@ dissect_lte_rrc_PowerCoordinationInfo_r12(tvbuff_t *tvb _U_, int offset _U_, asn
static int
dissect_lte_rrc_T_eutra_CapabilityInfo_r12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_octet_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, dissect_UECapabilityInformation_PDU);
+ NO_BOUND, NO_BOUND, FALSE, dissect_lte_rrc_UECapabilityInformation_PDU);
return offset;
}
@@ -43182,7 +43181,7 @@ dissect_lte_rrc_UEPagingCoverageInformation(tvbuff_t *tvb _U_, int offset _U_, a
static int
dissect_lte_rrc_T_ue_RadioAccessCapabilityInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_octet_string_containing_pdu_new(tvb, offset, actx, tree, hf_index,
- NO_BOUND, NO_BOUND, FALSE, dissect_UECapabilityInformation_PDU);
+ NO_BOUND, NO_BOUND, FALSE, dissect_lte_rrc_UECapabilityInformation_PDU);
return offset;
}
@@ -84479,11 +84478,11 @@ static int dissect_SC_MCCH_Message_r13_PDU(tvbuff_t *tvb _U_, packet_info *pinfo
offset += 7; offset >>= 3;
return offset;
}
-static int dissect_UECapabilityInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
+int dissect_lte_rrc_UECapabilityInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
- offset = dissect_lte_rrc_UECapabilityInformation(tvb, offset, &asn1_ctx, tree, hf_lte_rrc_UECapabilityInformation_PDU);
+ offset = dissect_lte_rrc_UECapabilityInformation(tvb, offset, &asn1_ctx, tree, hf_lte_rrc_lte_rrc_UECapabilityInformation_PDU);
offset += 7; offset >>= 3;
return offset;
}
@@ -84818,7 +84817,7 @@ static int dissect_UE_RadioPagingInfo_NB_r13_PDU(tvbuff_t *tvb _U_, packet_info
/*--- End of included file: packet-lte-rrc-fn.c ---*/
-#line 3085 "./asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 3084 "./asn1/lte-rrc/packet-lte-rrc-template.c"
static int
dissect_lte_rrc_DL_CCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
@@ -85253,7 +85252,7 @@ void proto_register_lte_rrc(void) {
{ "SC-MCCH-Message-r13", "lte-rrc.SC_MCCH_Message_r13_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_lte_rrc_UECapabilityInformation_PDU,
+ { &hf_lte_rrc_lte_rrc_UECapabilityInformation_PDU,
{ "UECapabilityInformation", "lte-rrc.UECapabilityInformation_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -107183,7 +107182,7 @@ void proto_register_lte_rrc(void) {
"CarrierFreq_NB_r13", HFILL }},
/*--- End of included file: packet-lte-rrc-hfarr.c ---*/
-#line 3445 "./asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 3444 "./asn1/lte-rrc/packet-lte-rrc-template.c"
{ &hf_lte_rrc_eutra_cap_feat_group_ind_1,
{ "Indicator 1", "lte-rrc.eutra_cap_feat_group_ind_1",
@@ -110481,7 +110480,7 @@ void proto_register_lte_rrc(void) {
&ett_lte_rrc_PCI_ARFCN_NB_r14,
/*--- End of included file: packet-lte-rrc-ettarr.c ---*/
-#line 4172 "./asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 4171 "./asn1/lte-rrc/packet-lte-rrc-template.c"
&ett_lte_rrc_featureGroupIndicators,
&ett_lte_rrc_featureGroupIndRel9Add,
@@ -110574,7 +110573,7 @@ void proto_register_lte_rrc(void) {
register_dissector("lte-rrc.ul.ccch", dissect_UL_CCCH_Message_PDU, proto_lte_rrc);
register_dissector("lte-rrc.ul.dcch", dissect_UL_DCCH_Message_PDU, proto_lte_rrc);
register_dissector("lte-rrc.sc.mcch", dissect_SC_MCCH_Message_r13_PDU, proto_lte_rrc);
- register_dissector("lte-rrc.ue_cap_info", dissect_UECapabilityInformation_PDU, proto_lte_rrc);
+ register_dissector("lte-rrc.ue_cap_info", dissect_lte_rrc_UECapabilityInformation_PDU, proto_lte_rrc);
register_dissector("lte-rrc.ue_eutra_cap", dissect_lte_rrc_UE_EUTRA_Capability_PDU, proto_lte_rrc);
register_dissector("lte-rrc.sbcch.sl.bch", dissect_SBCCH_SL_BCH_Message_PDU, proto_lte_rrc);
register_dissector("lte-rrc.sbcch.sl.bch.v2x", dissect_SBCCH_SL_BCH_Message_V2X_r14_PDU, proto_lte_rrc);
@@ -110589,7 +110588,7 @@ void proto_register_lte_rrc(void) {
/*--- End of included file: packet-lte-rrc-dis-reg.c ---*/
-#line 4250 "./asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 4249 "./asn1/lte-rrc/packet-lte-rrc-template.c"
lte_rrc_etws_cmas_dcs_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);
lte_rrc_system_info_value_changed_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);
diff --git a/epan/dissectors/packet-lte-rrc.h b/epan/dissectors/packet-lte-rrc.h
index 03f9d5b492..c86ee4d4ed 100644
--- a/epan/dissectors/packet-lte-rrc.h
+++ b/epan/dissectors/packet-lte-rrc.h
@@ -42,6 +42,7 @@ int dissect_lte_rrc_SCG_ConfigInfo_r12_PDU(tvbuff_t *tvb _U_, packet_info *pinfo
int dissect_lte_rrc_UEPagingCoverageInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
int dissect_lte_rrc_UERadioAccessCapabilityInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
int dissect_lte_rrc_UERadioPagingInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+int dissect_lte_rrc_UECapabilityInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
int dissect_lte_rrc_RLF_Report_r9_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
int dissect_lte_rrc_RLF_Report_v9e0_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
int dissect_lte_rrc_UE_EUTRA_Capability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
diff --git a/epan/dissectors/packet-nr-rrc.c b/epan/dissectors/packet-nr-rrc.c
new file mode 100644
index 0000000000..4785d3d760
--- /dev/null
+++ b/epan/dissectors/packet-nr-rrc.c
@@ -0,0 +1,14909 @@
+/* Do not modify this file. Changes will be overwritten. */
+/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
+/* packet-nr-rrc.c */
+/* asn2wrs.py -L -p nr-rrc -c ./nr-rrc.cnf -s ./packet-nr-rrc-template -D . -O ../.. NR-InterNodeDefinitions.asn NR-RRC-Definitions.asn */
+
+/* Input file: packet-nr-rrc-template.c */
+
+#line 1 "./asn1/nr-rrc/packet-nr-rrc-template.c"
+/* packet-nr-rrc-template.c
+ * NR;
+ * Radio Resource Control (RRC) protocol specification
+ * (3GPP TS 38.331 V15.0.0 Release 15) packet dissection
+ * Copyright 2018, Pascal Quantin
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+
+#include <epan/packet.h>
+#include <epan/asn1.h>
+
+#include <wsutil/str_util.h>
+
+#include "packet-per.h"
+#include "packet-lte-rrc.h"
+
+#define PNAME "NR Radio Resource Control (RRC) protocol"
+#define PSNAME "NR RRC"
+#define PFNAME "nr-rrc"
+
+void proto_register_nr_rrc(void);
+void proto_reg_handoff_nr_rrc(void);
+
+/* Include constants */
+
+/*--- Included file: packet-nr-rrc-val.h ---*/
+#line 1 "./asn1/nr-rrc/packet-nr-rrc-val.h"
+#define maxCellPrep 1
+#define maxCellSCG 1
+#define maxRS_IndexReport 1
+#define maxBandComb 1
+#define maxBasebandProcComb 1
+#define maxNrofSCells 15
+#define maxNrofCellMeas 1
+#define maxNroSS_BlocksToAverage 2
+#define maxNroCSI_RS_ResourcesToAverage 2
+#define maxNrofSR_CongigPerCellGroup 8
+#define maxLCG_ID 7
+#define macLC_ID 64
+#define maxNrofTAGs 4
+#define maxNrofTAGs_1 3
+#define maxNrofBandwidthParts 4
+#define maxNrofBandwidthParts_1 3
+#define maxSymbolIndex 13
+#define maxNrofPhysicalResourceBlocks 275
+#define maxNrofPhysicalResourceBlocks_1 274
+#define maxNrofPhysicalResourceBlocksTimes4 1100
+#define maxNrofControlResourceSets 2
+#define maxNrofControlResourceSets_1 1
+#define maxCoReSetStartSymbol 0
+#define maxCoReSetDuration 3
+#define maxNrofSearchSpacesPerCoReSet 0
+#define maxNrofRateMatchPatterns 1
+#define maxNrofRateMatchPatterns_1 0
+#define maxNrofCSI_Reports 1
+#define maxNrofCSI_Reports_1 0
+#define maxNrofCSI_ResourceConfigurations 1
+#define maxNrofCSI_ResourceConfigurations_1 0
+#define maxNrofCSI_ResourceSets 1
+#define maxNrofCSI_ResourceSets_1 0
+#define maxNrofNZP_CSI_RS_Resources 1
+#define maxNrofNZP_CSI_RS_Resources_1 0
+#define maxNrofZP_CSI_RS_Resources 1
+#define maxNrofZP_CSI_RS_Resources_1 0
+#define maxNrofCSI_IM_Resources 1
+#define maxNrofCSI_IM_Resources_1 0
+#define maxNrofSSB_Resources 64
+#define maxNrofSSB_Resources_1 63
+#define maxNrofCSI_RS_ResourcesPerSet 8
+#define maxNrofCSI_MeasId 1
+#define maxNrofCSI_MeasId_1 0
+#define maxNrofCSI_RS_ResourcesRRM 1
+#define maxNrofCSI_RS_ResourcesRRM_1 0
+#define maxNrofObjectId 1
+#define maxNrOfRA_PreamblesPerSSB 1
+#define maxNrofReportConfigId 1
+#define maxNrofMeasId 1
+#define maxNroQuantityConfig 2
+#define maxNrofSRS_ResourceSets 1
+#define maxNrofSRS_ResourceSets_1 0
+#define maxNrofSRS_Resources 1
+#define maxNrofSRS_Resources_1 0
+#define maxRA_PreambleIndex 0
+#define maxRAT_CapabilityContainers 3
+#define maxServCell 1
+#define maxSimultaneousBands 1
+#define maxBands 256
+#define maxCellReport 8
+#define maxDRB 29
+#define maxFreq 1
+#define maxLCid 32
+#define maxLCH 8
+#define maxQFI 0
+#define maxNrofAggregatedCellsPerCellGroup 1
+#define maxNrofCSI_ReportConfig_1 0
+#define maxNrofPCIsPerSMTC 1
+#define maxNrofQFIs 1
+#define maxNrofSchedulingRequestResoruces 64
+#define maxNrofSearchSpaces 1
+#define maxNrofSlotFormatCombinations 1
+#define maxNrofSlotFormatCombinations_1 1
+#define maxNrofSR_ConfigPerCellGroup 1
+#define maxNrofSRS_ResourcesPerSet 1
+#define maxNroCSI_RS 1
+#define maxNroIndexesToReport 1
+#define maxNroSSBs 8
+#define maxQuantityConfigId 1
+#define maxRAcsirsResources 1
+#define maxRAssbResources 1
+#define maxReportConfigId 1
+#define maxSCellGroups 1
+
+/*--- End of included file: packet-nr-rrc-val.h ---*/
+#line 36 "./asn1/nr-rrc/packet-nr-rrc-template.c"
+
+/* Initialize the protocol and registered fields */
+static int proto_nr_rrc = -1;
+
+/*--- Included file: packet-nr-rrc-hf.c ---*/
+#line 1 "./asn1/nr-rrc/packet-nr-rrc-hf.c"
+static int hf_nr_rrc_BCCH_BCH_Message_PDU = -1; /* BCCH_BCH_Message */
+static int hf_nr_rrc_DL_DCCH_Message_PDU = -1; /* DL_DCCH_Message */
+static int hf_nr_rrc_UL_DCCH_Message_PDU = -1; /* UL_DCCH_Message */
+static int hf_nr_rrc_message = -1; /* BCCH_BCH_MessageType */
+static int hf_nr_rrc_mib = -1; /* MIB */
+static int hf_nr_rrc_messageClassExtension = -1; /* T_messageClassExtension */
+static int hf_nr_rrc_message_01 = -1; /* DL_DCCH_MessageType */
+static int hf_nr_rrc_c1 = -1; /* T_c1 */
+static int hf_nr_rrc_rrcReconfiguration = -1; /* RRCReconfiguration */
+static int hf_nr_rrc_spare15 = -1; /* NULL */
+static int hf_nr_rrc_spare14 = -1; /* NULL */
+static int hf_nr_rrc_spare13 = -1; /* NULL */
+static int hf_nr_rrc_spare12 = -1; /* NULL */
+static int hf_nr_rrc_spare11 = -1; /* NULL */
+static int hf_nr_rrc_spare10 = -1; /* NULL */
+static int hf_nr_rrc_spare9 = -1; /* NULL */
+static int hf_nr_rrc_spare8 = -1; /* NULL */
+static int hf_nr_rrc_spare7 = -1; /* NULL */
+static int hf_nr_rrc_spare6 = -1; /* NULL */
+static int hf_nr_rrc_spare5 = -1; /* NULL */
+static int hf_nr_rrc_spare4 = -1; /* NULL */
+static int hf_nr_rrc_spare3 = -1; /* NULL */
+static int hf_nr_rrc_spare2 = -1; /* NULL */
+static int hf_nr_rrc_spare1 = -1; /* NULL */
+static int hf_nr_rrc_messageClassExtension_01 = -1; /* T_messageClassExtension_01 */
+static int hf_nr_rrc_message_02 = -1; /* UL_DCCH_MessageType */
+static int hf_nr_rrc_c1_01 = -1; /* T_c1_01 */
+static int hf_nr_rrc_measurementReport = -1; /* MeasurementReport */
+static int hf_nr_rrc_rrcReconfigurationComplete = -1; /* RRCReconfigurationComplete */
+static int hf_nr_rrc_messageClassExtension_02 = -1; /* T_messageClassExtension_02 */
+static int hf_nr_rrc_ssb_IndexExplicit = -1; /* INTEGER_1_7 */
+static int hf_nr_rrc_halfFrameIndex = -1; /* T_halfFrameIndex */
+static int hf_nr_rrc_systemFrameNumber = -1; /* BIT_STRING_SIZE_10 */
+static int hf_nr_rrc_subCarrierSpacingCommon = -1; /* SubcarrierSpacing */
+static int hf_nr_rrc_ssb_subcarrierOffset = -1; /* INTEGER_0_11 */
+static int hf_nr_rrc_dmrs_TypeA_Position = -1; /* T_dmrs_TypeA_Position */
+static int hf_nr_rrc_pdcchConfigSIB1 = -1; /* INTEGER_0_255 */
+static int hf_nr_rrc_cellBarred = -1; /* T_cellBarred */
+static int hf_nr_rrc_intraFreqReselection = -1; /* T_intraFreqReselection */
+static int hf_nr_rrc_spare = -1; /* BIT_STRING_SIZE_0 */
+static int hf_nr_rrc_criticalExtensions = -1; /* T_criticalExtensions */
+static int hf_nr_rrc_measurementReport_01 = -1; /* MeasurementReport_IEs */
+static int hf_nr_rrc_criticalExtensionsFuture = -1; /* T_criticalExtensionsFuture */
+static int hf_nr_rrc_measResults = -1; /* MeasResults */
+static int hf_nr_rrc_rrc_TransactionIdentifier = -1; /* RRC_TransactionIdentifier */
+static int hf_nr_rrc_criticalExtensions_01 = -1; /* T_criticalExtensions_01 */
+static int hf_nr_rrc_rrcReconfiguration_01 = -1; /* RRCReconfiguration_IEs */
+static int hf_nr_rrc_criticalExtensionsFuture_01 = -1; /* T_criticalExtensionsFuture_01 */
+static int hf_nr_rrc_radioBearerConfig = -1; /* RadioBearerConfig */
+static int hf_nr_rrc_masterCellGroupConfig = -1; /* CellGroupConfig */
+static int hf_nr_rrc_secondaryCellGroupToAddModList = -1; /* SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupConfig */
+static int hf_nr_rrc_secondaryCellGroupToAddModList_item = -1; /* CellGroupConfig */
+static int hf_nr_rrc_secondaryCellGroupToReleaseList = -1; /* SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupId */
+static int hf_nr_rrc_secondaryCellGroupToReleaseList_item = -1; /* CellGroupId */
+static int hf_nr_rrc_measConfig = -1; /* MeasConfig */
+static int hf_nr_rrc_lateNonCriticalExtension = -1; /* OCTET_STRING */
+static int hf_nr_rrc_nonCriticalExtension = -1; /* T_nonCriticalExtension */
+static int hf_nr_rrc_criticalExtensions_02 = -1; /* T_criticalExtensions_02 */
+static int hf_nr_rrc_rrcReconfigurationComplete_01 = -1; /* RRCReconfigurationComplete_IEs */
+static int hf_nr_rrc_criticalExtensionsFuture_02 = -1; /* T_criticalExtensionsFuture_02 */
+static int hf_nr_rrc_bandwidthPartId = -1; /* BandwidthPartId */
+static int hf_nr_rrc_location = -1; /* INTEGER_0_maxNrofPhysicalResourceBlocksTimes4 */
+static int hf_nr_rrc_bandwidth = -1; /* INTEGER_1_maxNrofPhysicalResourceBlocks */
+static int hf_nr_rrc_subcarrierSpacing = -1; /* T_subcarrierSpacing */
+static int hf_nr_rrc_cyclicPrefix = -1; /* T_cyclicPrefix */
+static int hf_nr_rrc_directCurrentLocation = -1; /* INTEGER_0_3299 */
+static int hf_nr_rrc_cellGroupId = -1; /* CellGroupId */
+static int hf_nr_rrc_rlc_BearerToAddModList = -1; /* SEQUENCE_SIZE_1_maxLCH_OF_LCH_Config */
+static int hf_nr_rrc_rlc_BearerToAddModList_item = -1; /* LCH_Config */
+static int hf_nr_rrc_rlc_BearerToReleaseList = -1; /* SEQUENCE_SIZE_1_maxLCH_OF_LogicalChannelIdentity */
+static int hf_nr_rrc_rlc_BearerToReleaseList_item = -1; /* LogicalChannelIdentity */
+static int hf_nr_rrc_mac_CellGroupConfig = -1; /* MAC_CellGroupConfig */
+static int hf_nr_rrc_rlf_TimersAndConstants = -1; /* RLF_TimersAndConstants */
+static int hf_nr_rrc_physical_CellGroupConfig = -1; /* PhysicalCellGroupConfig */
+static int hf_nr_rrc_spCellConfig = -1; /* SpCellConfig */
+static int hf_nr_rrc_sCellToAddModList = -1; /* SCellToAddModList */
+static int hf_nr_rrc_sCellToReleaseList = -1; /* SCellToReleaseList */
+static int hf_nr_rrc_logicalChannelIdentity = -1; /* LogicalChannelIdentity */
+static int hf_nr_rrc_servedRadioBearer = -1; /* INTEGER_1_32 */
+static int hf_nr_rrc_reestablishRLC = -1; /* T_reestablishRLC */
+static int hf_nr_rrc_rlc_Config = -1; /* RLC_Config */
+static int hf_nr_rrc_mac_LogicalChannelConfig = -1; /* LogicalChannelConfig */
+static int hf_nr_rrc_harq_ACK_Spatial_Bundling = -1; /* T_harq_ACK_Spatial_Bundling */
+static int hf_nr_rrc_reconfigurationWithSync = -1; /* T_reconfigurationWithSync */
+static int hf_nr_rrc_spCellConfigCommon = -1; /* ServingCellConfigCommon */
+static int hf_nr_rrc_newUE_Identity = -1; /* C_RNTI */
+static int hf_nr_rrc_t304 = -1; /* T_t304 */
+static int hf_nr_rrc_rach_ConfigDedicated = -1; /* RACH_ConfigDedicated */
+static int hf_nr_rrc_spCellConfigDedicated = -1; /* ServingCellConfigDedicated */
+static int hf_nr_rrc_SCellToReleaseList_item = -1; /* SCellIndex */
+static int hf_nr_rrc_SCellToAddModList_item = -1; /* SCellConfig */
+static int hf_nr_rrc_sCellIndex = -1; /* SCellIndex */
+static int hf_nr_rrc_sCellConfigCommon = -1; /* ServingCellConfigCommon */
+static int hf_nr_rrc_sCellConfigDedicated = -1; /* ServingCellConfigDedicated */
+static int hf_nr_rrc_CellIndexList_item = -1; /* CellIndex */
+static int hf_nr_rrc_schedulingCellInfo = -1; /* T_schedulingCellInfo */
+static int hf_nr_rrc_own = -1; /* T_own */
+static int hf_nr_rrc_cif_Presence = -1; /* BOOLEAN */
+static int hf_nr_rrc_other = -1; /* T_other */
+static int hf_nr_rrc_schedulingCellId = -1; /* ServCellIndex */
+static int hf_nr_rrc_pdsch_Start = -1; /* INTEGER_1_4 */
+static int hf_nr_rrc_cif_InSchedulingCell = -1; /* INTEGER_1_7 */
+static int hf_nr_rrc_csi_ResourceConfigs = -1; /* SEQUENCE_SIZE_1_maxNrofCSI_ResourceConfigurations_OF_CSI_ResourceConfig */
+static int hf_nr_rrc_csi_ResourceConfigs_item = -1; /* CSI_ResourceConfig */
+static int hf_nr_rrc_csi_ReportConfigs = -1; /* SEQUENCE_SIZE_1_maxNrofCSI_Reports_OF_CSI_ReportConfig */
+static int hf_nr_rrc_csi_ReportConfigs_item = -1; /* CSI_ReportConfig */
+static int hf_nr_rrc_csi_MeasIdToAddModList = -1; /* SEQUENCE_SIZE_1_maxNrofCSI_MeasId_OF_CSI_MeasIdToAddMod */
+static int hf_nr_rrc_csi_MeasIdToAddModList_item = -1; /* CSI_MeasIdToAddMod */
+static int hf_nr_rrc_reportTrigger = -1; /* T_reportTrigger */
+static int hf_nr_rrc_reportTriggerSize = -1; /* INTEGER_0_6 */
+static int hf_nr_rrc_csi_ResourceConfigId = -1; /* CSI_ResourceConfigId */
+static int hf_nr_rrc_csi_ResourceSets = -1; /* SEQUENCE_SIZE_1_maxNrofCSI_ResourceSets_OF_CSI_ResourceSet */
+static int hf_nr_rrc_csi_ResourceSets_item = -1; /* CSI_ResourceSet */
+static int hf_nr_rrc_ssb_Resources = -1; /* SEQUENCE_SIZE_1_maxNrofSSB_Resources_1_OF_CSI_SSB_Resource */
+static int hf_nr_rrc_ssb_Resources_item = -1; /* CSI_SSB_Resource */
+static int hf_nr_rrc_resourceType = -1; /* T_resourceType */
+static int hf_nr_rrc_aperiodic = -1; /* NULL */
+static int hf_nr_rrc_semiPersistent = -1; /* NULL */
+static int hf_nr_rrc_periodic = -1; /* NULL */
+static int hf_nr_rrc_csi_ResourceSetId = -1; /* CSI_ResourceSetId */
+static int hf_nr_rrc_csi_rs_Resources = -1; /* SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesPerSet_OF_NZP_CSI_RS_Resource */
+static int hf_nr_rrc_csi_rs_Resources_item = -1; /* NZP_CSI_RS_Resource */
+static int hf_nr_rrc_repetition = -1; /* BOOLEAN */
+static int hf_nr_rrc_nzp_csi_rs_ResourceId = -1; /* NZP_CSI_RS_ResourceId */
+static int hf_nr_rrc_nrofPorts = -1; /* T_nrofPorts */
+static int hf_nr_rrc_resourceMapping = -1; /* NULL */
+static int hf_nr_rrc_cdm_Value = -1; /* T_cdm_Value */
+static int hf_nr_rrc_cdm_Pattern = -1; /* T_cdm_Pattern */
+static int hf_nr_rrc_csi_RS_Density = -1; /* T_csi_RS_Density */
+static int hf_nr_rrc_csi_RS_FreqBand = -1; /* NULL */
+static int hf_nr_rrc_powerControlOffset = -1; /* NULL */
+static int hf_nr_rrc_powerControlOffsetSS = -1; /* NULL */
+static int hf_nr_rrc_scramblingID = -1; /* INTEGER_0 */
+static int hf_nr_rrc_csi_RS_timeConfig = -1; /* T_csi_RS_timeConfig */
+static int hf_nr_rrc_sl5 = -1; /* INTEGER_0_4 */
+static int hf_nr_rrc_sl10 = -1; /* INTEGER_0_9 */
+static int hf_nr_rrc_sl20 = -1; /* INTEGER_0_19 */
+static int hf_nr_rrc_sl40 = -1; /* INTEGER_0_39 */
+static int hf_nr_rrc_sl80 = -1; /* INTEGER_0_79 */
+static int hf_nr_rrc_sl160 = -1; /* INTEGER_0_159 */
+static int hf_nr_rrc_sl320 = -1; /* INTEGER_0_319 */
+static int hf_nr_rrc_sl640 = -1; /* INTEGER_0_639 */
+static int hf_nr_rrc_reportConfigId = -1; /* CSI_ReportConfigId */
+static int hf_nr_rrc_reportConfigType = -1; /* T_reportConfigType */
+static int hf_nr_rrc_periodic_01 = -1; /* T_periodic */
+static int hf_nr_rrc_reportSlotConfig = -1; /* T_reportSlotConfig */
+static int hf_nr_rrc_pucch_CSI_ResourceIndex = -1; /* NULL */
+static int hf_nr_rrc_semiPersistent_01 = -1; /* T_semiPersistent */
+static int hf_nr_rrc_reportSlotConfig_01 = -1; /* T_reportSlotConfig_01 */
+static int hf_nr_rrc_aperiodic_01 = -1; /* T_aperiodic */
+static int hf_nr_rrc_aperiodicReportSlotOffset = -1; /* NULL */
+static int hf_nr_rrc_reportQuantity = -1; /* T_reportQuantity */
+static int hf_nr_rrc_cRI_RI_PMI_CQI = -1; /* NULL */
+static int hf_nr_rrc_cRI_RI_i1 = -1; /* NULL */
+static int hf_nr_rrc_cRI_RI_i1_CQI = -1; /* T_cRI_RI_i1_CQI */
+static int hf_nr_rrc_pdsch_BundleSizeForCSI = -1; /* T_pdsch_BundleSizeForCSI */
+static int hf_nr_rrc_cRI_RI_CQI = -1; /* NULL */
+static int hf_nr_rrc_cRI = -1; /* NULL */
+static int hf_nr_rrc_cRI_RSRP = -1; /* NULL */
+static int hf_nr_rrc_spare0 = -1; /* NULL */
+static int hf_nr_rrc_reportFreqConfiguration = -1; /* T_reportFreqConfiguration */
+static int hf_nr_rrc_cqi_FormatIndicator = -1; /* T_cqi_FormatIndicator */
+static int hf_nr_rrc_pmi_FormatIndicator = -1; /* T_pmi_FormatIndicator */
+static int hf_nr_rrc_csi_ReportingBand = -1; /* T_csi_ReportingBand */
+static int hf_nr_rrc_measRestrictionTimeForChannel = -1; /* NULL */
+static int hf_nr_rrc_measRestrictionTimeForInterference = -1; /* NULL */
+static int hf_nr_rrc_codebookConfig = -1; /* CodebookConfig */
+static int hf_nr_rrc_nrofCQIsPerReport = -1; /* T_nrofCQIsPerReport */
+static int hf_nr_rrc_groupBasedBeamReporting = -1; /* T_groupBasedBeamReporting */
+static int hf_nr_rrc_enabled = -1; /* T_enabled */
+static int hf_nr_rrc_nrofBeamsToReport = -1; /* INTEGER_2_4 */
+static int hf_nr_rrc_disabled = -1; /* T_disabled */
+static int hf_nr_rrc_nrofReportedRS = -1; /* T_nrofReportedRS */
+static int hf_nr_rrc_cqi_Table = -1; /* T_cqi_Table */
+static int hf_nr_rrc_subbandSize = -1; /* T_subbandSize */
+static int hf_nr_rrc_bler_Target = -1; /* T_bler_Target */
+static int hf_nr_rrc_codebookConfig_N1 = -1; /* T_codebookConfig_N1 */
+static int hf_nr_rrc_codebookConfig_N2 = -1; /* T_codebookConfig_N2 */
+static int hf_nr_rrc_codebookType = -1; /* T_codebookType */
+static int hf_nr_rrc_type1 = -1; /* T_type1 */
+static int hf_nr_rrc_subType = -1; /* T_subType */
+static int hf_nr_rrc_codebookMode = -1; /* T_codebookMode */
+static int hf_nr_rrc_numberOfPanels = -1; /* T_numberOfPanels */
+static int hf_nr_rrc_codebookSubsetRestrictionType1 = -1; /* T_codebookSubsetRestrictionType1 */
+static int hf_nr_rrc_singlePanel = -1; /* T_singlePanel */
+static int hf_nr_rrc_singlePanel2TX = -1; /* BIT_STRING_SIZE_6 */
+static int hf_nr_rrc_multiPanel = -1; /* T_multiPanel */
+static int hf_nr_rrc_singlePanelCodebookSubsetRestriction_i2 = -1; /* BIT_STRING_SIZE_16 */
+static int hf_nr_rrc_ri_Restriction = -1; /* T_ri_Restriction */
+static int hf_nr_rrc_typeI_SinglePanelRI_Restriction = -1; /* BIT_STRING_SIZE_8 */
+static int hf_nr_rrc_typeI_MultiPanelRI_Restriction = -1; /* BIT_STRING_SIZE_4 */
+static int hf_nr_rrc_type2 = -1; /* T_type2 */
+static int hf_nr_rrc_subType_01 = -1; /* T_subType_01 */
+static int hf_nr_rrc_phaseAlphabetSize = -1; /* T_phaseAlphabetSize */
+static int hf_nr_rrc_subbandAmplitude = -1; /* BOOLEAN */
+static int hf_nr_rrc_numberOfBeams = -1; /* T_numberOfBeams */
+static int hf_nr_rrc_portSelectionSamplingSize = -1; /* T_portSelectionSamplingSize */
+static int hf_nr_rrc_codebookSubsetRestrictionType2 = -1; /* T_codebookSubsetRestrictionType2 */
+static int hf_nr_rrc_ri_Restriction_01 = -1; /* T_ri_Restriction_01 */
+static int hf_nr_rrc_typeII_RI_Restriction = -1; /* BIT_STRING_SIZE_2 */
+static int hf_nr_rrc_typeII_PortSelectionRI_Restriction = -1; /* BIT_STRING_SIZE_2 */
+static int hf_nr_rrc_csi_measId = -1; /* CSI_MeasId */
+static int hf_nr_rrc_csi_RS_resourceConfigId = -1; /* CSI_RS_ConfigurationId */
+static int hf_nr_rrc_csi_reportConfigId = -1; /* CSI_ReportConfigId */
+static int hf_nr_rrc_measQuantity = -1; /* T_measQuantity */
+static int hf_nr_rrc_carrierFreqUL = -1; /* ARFCN_ValueNR */
+static int hf_nr_rrc_carrierBandwidthUL = -1; /* CarrierBandwidthNR */
+static int hf_nr_rrc_additionalSpectrumEmission = -1; /* AdditionalSpectrumEmission */
+static int hf_nr_rrc_p_Max = -1; /* P_Max */
+static int hf_nr_rrc_frequencyShift7p5khz = -1; /* T_frequencyShift7p5khz */
+static int hf_nr_rrc_initialUplinkBandwidthPart = -1; /* BandwidthPart */
+static int hf_nr_rrc_ul_SpecificParameters = -1; /* T_ul_SpecificParameters */
+static int hf_nr_rrc_priority = -1; /* INTEGER_1_16 */
+static int hf_nr_rrc_prioritisedBitRate = -1; /* T_prioritisedBitRate */
+static int hf_nr_rrc_bucketSizeDuration = -1; /* T_bucketSizeDuration */
+static int hf_nr_rrc_allowedSubCarrierSpacing = -1; /* SubcarrierSpacing */
+static int hf_nr_rrc_allowedTiming = -1; /* NULL */
+static int hf_nr_rrc_logicalChannelGroup = -1; /* INTEGER_0_maxLCid */
+static int hf_nr_rrc_logicalChannelSR_Mask = -1; /* BOOLEAN */
+static int hf_nr_rrc_logicalChannelSR_DelayTimerApplied = -1; /* BOOLEAN */
+static int hf_nr_rrc_drx_Config = -1; /* DRX_Config */
+static int hf_nr_rrc_schedulingRequestConfig = -1; /* SchedulingRequestConfig */
+static int hf_nr_rrc_bsr_Config = -1; /* BSR_Configuration */
+static int hf_nr_rrc_tag_Config = -1; /* TAG_Configuration */
+static int hf_nr_rrc_phr_Config = -1; /* PHR_Config */
+static int hf_nr_rrc_sCellDeactivationTimer = -1; /* T_sCellDeactivationTimer */
+static int hf_nr_rrc_skipUplinkTxDynamic = -1; /* BOOLEAN */
+static int hf_nr_rrc_release = -1; /* NULL */
+static int hf_nr_rrc_setup = -1; /* T_setup */
+static int hf_nr_rrc_drx_onDurationTimer = -1; /* T_drx_onDurationTimer */
+static int hf_nr_rrc_drx_InactivityTimer = -1; /* T_drx_InactivityTimer */
+static int hf_nr_rrc_drx_HARQ_RTT_TimerDL = -1; /* INTEGER_0_56 */
+static int hf_nr_rrc_drx_HARQ_RTT_TimerUL = -1; /* INTEGER_0_56 */
+static int hf_nr_rrc_drx_RetransmissionTimerDL = -1; /* T_drx_RetransmissionTimerDL */
+static int hf_nr_rrc_drx_RetransmissionTimerUL = -1; /* T_drx_RetransmissionTimerUL */
+static int hf_nr_rrc_drx_LongCycleStartOffset = -1; /* T_drx_LongCycleStartOffset */
+static int hf_nr_rrc_ms10 = -1; /* INTEGER_0_9 */
+static int hf_nr_rrc_ms20 = -1; /* INTEGER_0_19 */
+static int hf_nr_rrc_ms32 = -1; /* INTEGER_0_31 */
+static int hf_nr_rrc_ms40 = -1; /* INTEGER_0_39 */
+static int hf_nr_rrc_ms60 = -1; /* INTEGER_0_59 */
+static int hf_nr_rrc_ms64 = -1; /* INTEGER_0_63 */
+static int hf_nr_rrc_ms70 = -1; /* INTEGER_0_69 */
+static int hf_nr_rrc_ms80 = -1; /* INTEGER_0_79 */
+static int hf_nr_rrc_ms128 = -1; /* INTEGER_0_127 */
+static int hf_nr_rrc_ms160 = -1; /* INTEGER_0_159 */
+static int hf_nr_rrc_ms256 = -1; /* INTEGER_0_255 */
+static int hf_nr_rrc_ms320 = -1; /* INTEGER_0_319 */
+static int hf_nr_rrc_ms512 = -1; /* INTEGER_0_511 */
+static int hf_nr_rrc_ms640 = -1; /* INTEGER_0_639 */
+static int hf_nr_rrc_ms1024 = -1; /* INTEGER_0_1023 */
+static int hf_nr_rrc_ms1280 = -1; /* INTEGER_0_1279 */
+static int hf_nr_rrc_ms2048 = -1; /* INTEGER_0_2047 */
+static int hf_nr_rrc_ms2560 = -1; /* INTEGER_0_2559 */
+static int hf_nr_rrc_ms5120 = -1; /* INTEGER_0_5119 */
+static int hf_nr_rrc_ms10240 = -1; /* INTEGER_0_10239 */
+static int hf_nr_rrc_shortDRX = -1; /* T_shortDRX */
+static int hf_nr_rrc_drx_ShortCycle = -1; /* T_drx_ShortCycle */
+static int hf_nr_rrc_drx_ShortCycleTimer = -1; /* INTEGER_1_16 */
+static int hf_nr_rrc_drx_SlotOffset = -1; /* T_drx_SlotOffset */
+static int hf_nr_rrc_setup_01 = -1; /* T_setup_01 */
+static int hf_nr_rrc_phr_PeriodicTimer = -1; /* T_phr_PeriodicTimer */
+static int hf_nr_rrc_phr_ProhibitTimer = -1; /* T_phr_ProhibitTimer */
+static int hf_nr_rrc_phr_Tx_PowerFactorChange = -1; /* T_phr_Tx_PowerFactorChange */
+static int hf_nr_rrc_multiplePHR = -1; /* BOOLEAN */
+static int hf_nr_rrc_phr_Type2PCell = -1; /* BOOLEAN */
+static int hf_nr_rrc_phr_Type2OtherCell = -1; /* BOOLEAN */
+static int hf_nr_rrc_phr_ModeOtherCG = -1; /* T_phr_ModeOtherCG */
+static int hf_nr_rrc_tag_ToReleaseList = -1; /* TAG_ToReleaseList */
+static int hf_nr_rrc_tag_ToAddModList = -1; /* TAG_ToAddModList */
+static int hf_nr_rrc_TAG_ToReleaseList_item = -1; /* TAG_Id */
+static int hf_nr_rrc_TAG_ToAddModList_item = -1; /* TAG_ToAddMod */
+static int hf_nr_rrc_tag_Id = -1; /* TAG_Id */
+static int hf_nr_rrc_timeAlignmentTimer = -1; /* TimeAlignmentTimer */
+static int hf_nr_rrc_periodicBSR_Timer = -1; /* T_periodicBSR_Timer */
+static int hf_nr_rrc_retxBSR_Timer = -1; /* T_retxBSR_Timer */
+static int hf_nr_rrc_logicaChannelSR_DelayTimer = -1; /* T_logicaChannelSR_DelayTimer */
+static int hf_nr_rrc_measObjectToRemoveList = -1; /* MeasObjectToRemoveList */
+static int hf_nr_rrc_measObjectToAddModList = -1; /* MeasObjectToAddModList */
+static int hf_nr_rrc_reportConfigToRemoveList = -1; /* ReportConfigToRemoveList */
+static int hf_nr_rrc_reportConfigToAddModList = -1; /* ReportConfigToAddModList */
+static int hf_nr_rrc_measIdToRemoveList = -1; /* MeasIdToRemoveList */
+static int hf_nr_rrc_measIdToAddModList = -1; /* MeasIdToAddModList */
+static int hf_nr_rrc_s_MeasureConfig = -1; /* T_s_MeasureConfig */
+static int hf_nr_rrc_ssb_rsrp = -1; /* RSRP_Range */
+static int hf_nr_rrc_csi_rsrp = -1; /* RSRP_Range */
+static int hf_nr_rrc_quantityConfig = -1; /* QuantityConfig */
+static int hf_nr_rrc_measGapConfig = -1; /* MeasGapConfig */
+static int hf_nr_rrc_MeasObjectToRemoveList_item = -1; /* MeasObjectId */
+static int hf_nr_rrc_MeasIdToRemoveList_item = -1; /* MeasId */
+static int hf_nr_rrc_ReportConfigToRemoveList_item = -1; /* ReportConfigId */
+static int hf_nr_rrc_MeasIdToAddModList_item = -1; /* MeasIdToAddMod */
+static int hf_nr_rrc_measId = -1; /* MeasId */
+static int hf_nr_rrc_measObjectId = -1; /* MeasObjectId */
+static int hf_nr_rrc_reportConfigId_01 = -1; /* ReportConfigId */
+static int hf_nr_rrc_carrierFreq = -1; /* ARFCN_ValueNR */
+static int hf_nr_rrc_referenceSignalConfig = -1; /* ReferenceSignalConfig */
+static int hf_nr_rrc_absThreshSS_BlocksConsolidation = -1; /* ThresholdNR */
+static int hf_nr_rrc_absThreshCSI_RS_Consolidation = -1; /* ThresholdNR */
+static int hf_nr_rrc_nroSS_BlocksToAverage = -1; /* INTEGER_2_maxNroSS_BlocksToAverage */
+static int hf_nr_rrc_nroCSI_RS_ResourcesToAverage = -1; /* INTEGER_2_maxNroCSI_RS_ResourcesToAverage */
+static int hf_nr_rrc_quantityConfigIndex = -1; /* INTEGER_1_maxQuantityConfigId */
+static int hf_nr_rrc_offsetFreq = -1; /* Q_OffsetRangeList */
+static int hf_nr_rrc_cellsToRemoveList = -1; /* CellIndexList */
+static int hf_nr_rrc_cellsToAddModList = -1; /* CellsToAddModList */
+static int hf_nr_rrc_blackCellsToRemoveList = -1; /* CellIndexList */
+static int hf_nr_rrc_blackCellsToAddModList = -1; /* BlackCellsToAddModList */
+static int hf_nr_rrc_whiteCellsToRemoveList = -1; /* CellIndexList */
+static int hf_nr_rrc_whiteCellsToAddModList = -1; /* WhiteCellsToAddModList */
+static int hf_nr_rrc_ssb_MeasurementTimingConfiguration = -1; /* SSB_MeasurementTimingConfiguration */
+static int hf_nr_rrc_ssbPresence = -1; /* T_ssbPresence */
+static int hf_nr_rrc_present = -1; /* T_present */
+static int hf_nr_rrc_frequencyOffset = -1; /* NULL */
+static int hf_nr_rrc_subcarrierSpacing_01 = -1; /* SubcarrierSpacing */
+static int hf_nr_rrc_notPresent = -1; /* T_notPresent */
+static int hf_nr_rrc_csi_rs_ResourceConfig_Mobility = -1; /* CSI_RS_ResourceConfig_Mobility */
+static int hf_nr_rrc_useServingCellTimingForSync = -1; /* BOOLEAN */
+static int hf_nr_rrc_smtc1 = -1; /* T_smtc1 */
+static int hf_nr_rrc_periodicityAndOffset = -1; /* T_periodicityAndOffset */
+static int hf_nr_rrc_sf5 = -1; /* INTEGER_0_4 */
+static int hf_nr_rrc_sf10 = -1; /* INTEGER_0_9 */
+static int hf_nr_rrc_sf20 = -1; /* INTEGER_0_19 */
+static int hf_nr_rrc_sf40 = -1; /* INTEGER_0_39 */
+static int hf_nr_rrc_sf80 = -1; /* INTEGER_0_79 */
+static int hf_nr_rrc_sf160 = -1; /* INTEGER_0_159 */
+static int hf_nr_rrc_duration = -1; /* T_duration */
+static int hf_nr_rrc_ssb_ToMeasure = -1; /* T_ssb_ToMeasure */
+static int hf_nr_rrc_setup_02 = -1; /* T_setup_02 */
+static int hf_nr_rrc_shortBitmap = -1; /* BIT_STRING_SIZE_4 */
+static int hf_nr_rrc_mediumBitmap = -1; /* BIT_STRING_SIZE_8 */
+static int hf_nr_rrc_longBitmap = -1; /* BIT_STRING_SIZE_64 */
+static int hf_nr_rrc_smtc2 = -1; /* T_smtc2 */
+static int hf_nr_rrc_pci_List = -1; /* SEQUENCE_SIZE_1_maxNrofPCIsPerSMTC_OF_PhysicalCellId */
+static int hf_nr_rrc_pci_List_item = -1; /* PhysicalCellId */
+static int hf_nr_rrc_periodicty = -1; /* NULL */
+static int hf_nr_rrc_csi_rs_MeasurementBW = -1; /* T_csi_rs_MeasurementBW */
+static int hf_nr_rrc_csi_rs_measurementBW_size = -1; /* T_csi_rs_measurementBW_size */
+static int hf_nr_rrc_csi_rs_measurement_BW_start = -1; /* T_csi_rs_measurement_BW_start */
+static int hf_nr_rrc_associated_SSB = -1; /* T_associated_SSB */
+static int hf_nr_rrc_qcled_SSB = -1; /* BOOLEAN */
+static int hf_nr_rrc_isServingCellMO = -1; /* BOOLEAN */
+static int hf_nr_rrc_csi_rs_ResourceList_Mobility = -1; /* SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesRRM_OF_CSI_RS_Resource_Mobility */
+static int hf_nr_rrc_csi_rs_ResourceList_Mobility_item = -1; /* CSI_RS_Resource_Mobility */
+static int hf_nr_rrc_csi_rs_ResourceId_RRM = -1; /* CSI_RS_ResourceId_RRM */
+static int hf_nr_rrc_cellId = -1; /* PhysicalCellId */
+static int hf_nr_rrc_slotConfig = -1; /* T_slotConfig */
+static int hf_nr_rrc_ms5 = -1; /* INTEGER_0_4 */
+static int hf_nr_rrc_resourceElementMappingPattern = -1; /* NULL */
+static int hf_nr_rrc_sequenceGenerationConfig = -1; /* NULL */
+static int hf_nr_rrc_rsrpOffsetSSB = -1; /* Q_OffsetRange */
+static int hf_nr_rrc_rsrqOffsetSSB = -1; /* Q_OffsetRange */
+static int hf_nr_rrc_sinrOffsetSSB = -1; /* Q_OffsetRange */
+static int hf_nr_rrc_rsrpOffsetCSI_RS = -1; /* Q_OffsetRange */
+static int hf_nr_rrc_rsrqOffsetCSI_RS = -1; /* Q_OffsetRange */
+static int hf_nr_rrc_sinrOffsetCSI_RS = -1; /* Q_OffsetRange */
+static int hf_nr_rrc_threshold_RSRP = -1; /* RSRP_Range */
+static int hf_nr_rrc_threshold_RSRQ = -1; /* RSRQ_Range */
+static int hf_nr_rrc_threshold_SINR = -1; /* SINR_Range */
+static int hf_nr_rrc_CellsToAddModList_item = -1; /* CellsToAddMod */
+static int hf_nr_rrc_cellIndex = -1; /* INTEGER_1_maxNrofCellMeas */
+static int hf_nr_rrc_physCellId = -1; /* PhysCellId */
+static int hf_nr_rrc_cellIndividualOffset = -1; /* Q_OffsetRangeList */
+static int hf_nr_rrc_BlackCellsToAddModList_item = -1; /* BlackCellsToAddMod */
+static int hf_nr_rrc_physCellIdRange = -1; /* PhysCellIdRange */
+static int hf_nr_rrc_WhiteCellsToAddModList_item = -1; /* WhiteCellsToAddMod */
+static int hf_nr_rrc_MeasObjectToAddModList_item = -1; /* MeasObjectToAddMod */
+static int hf_nr_rrc_measObject = -1; /* T_measObject */
+static int hf_nr_rrc_measObjectNR = -1; /* MeasObjectNR */
+static int hf_nr_rrc_measObjectEUTRA = -1; /* MeasObjectEUTRA */
+static int hf_nr_rrc_measResultServingFreqList = -1; /* MeasResultServFreqList */
+static int hf_nr_rrc_measResultNeighCells = -1; /* T_measResultNeighCells */
+static int hf_nr_rrc_measResultListNR = -1; /* MeasResultListNR */
+static int hf_nr_rrc_measResultListEUTRA = -1; /* MeasResultListEUTRA */
+static int hf_nr_rrc_MeasResultServFreqList_item = -1; /* MeasResultServFreq */
+static int hf_nr_rrc_servFreqId = -1; /* ServCellIndex */
+static int hf_nr_rrc_measResultServingCell = -1; /* MeasResultNR */
+static int hf_nr_rrc_measResultBestNeighCell = -1; /* MeasResultNR */
+static int hf_nr_rrc_MeasResultListNR_item = -1; /* MeasResultNR */
+static int hf_nr_rrc_cgi_Info = -1; /* NULL */
+static int hf_nr_rrc_measResult = -1; /* T_measResult */
+static int hf_nr_rrc_cellResults = -1; /* T_cellResults */
+static int hf_nr_rrc_resultsSSBCell = -1; /* ResultsSSBCell */
+static int hf_nr_rrc_resultsCSI_RSCell = -1; /* ResultsCSI_RSCell */
+static int hf_nr_rrc_rsIndexResults = -1; /* T_rsIndexResults */
+static int hf_nr_rrc_resultsSSBIndexes = -1; /* ResultsPerSSBIndexList */
+static int hf_nr_rrc_resultsCSI_RSIndexes = -1; /* ResultsPerCSI_RSIndexList */
+static int hf_nr_rrc_ssb_Cellrsrp = -1; /* RSRP_Range */
+static int hf_nr_rrc_ssb_Cellrsrq = -1; /* RSRQ_Range */
+static int hf_nr_rrc_ssb_Cellsinr = -1; /* SINR_Range */
+static int hf_nr_rrc_csi_rs_Cellrsrp = -1; /* RSRP_Range */
+static int hf_nr_rrc_csi_rs_Cellrsrq = -1; /* RSRQ_Range */
+static int hf_nr_rrc_csi_rs_Cellsinr = -1; /* SINR_Range */
+static int hf_nr_rrc_ResultsPerSSBIndexList_item = -1; /* ResultsPerSSBIndex */
+static int hf_nr_rrc_ssb_Index = -1; /* SSB_Index */
+static int hf_nr_rrc_ss_rsrp = -1; /* RSRP_Range */
+static int hf_nr_rrc_ss_rsrq = -1; /* RSRQ_Range */
+static int hf_nr_rrc_ss_sinr = -1; /* SINR_Range */
+static int hf_nr_rrc_ResultsPerCSI_RSIndexList_item = -1; /* ResultsPerCSI_RSIndex */
+static int hf_nr_rrc_csi_rsIndex = -1; /* CSI_RSIndex */
+static int hf_nr_rrc_csi_rsrq = -1; /* RSRQ_Range */
+static int hf_nr_rrc_csi_sinr = -1; /* SINR_Range */
+static int hf_nr_rrc_controlResourceSetToAddModList = -1; /* SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceSet */
+static int hf_nr_rrc_controlResourceSetToAddModList_item = -1; /* ControlResourceSet */
+static int hf_nr_rrc_controlResourceSetToReleaseList = -1; /* SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceId */
+static int hf_nr_rrc_controlResourceSetToReleaseList_item = -1; /* ControlResourceId */
+static int hf_nr_rrc_searchSpacesToAddModList = -1; /* SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpace */
+static int hf_nr_rrc_searchSpacesToAddModList_item = -1; /* SearchSpace */
+static int hf_nr_rrc_searchSpacesToReleaseList = -1; /* SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpaceId */
+static int hf_nr_rrc_searchSpacesToReleaseList_item = -1; /* SearchSpaceId */
+static int hf_nr_rrc_timing = -1; /* T_timing */
+static int hf_nr_rrc_dl_assignment_to_DL_data = -1; /* NULL */
+static int hf_nr_rrc_ul_assignment_to_UL_data = -1; /* NULL */
+static int hf_nr_rrc_dl_data_to_UL_ACK = -1; /* NULL */
+static int hf_nr_rrc_controlResourceSetId = -1; /* ControlResourceSetId */
+static int hf_nr_rrc_frequencyDomainResources = -1; /* NULL */
+static int hf_nr_rrc_startSymbol = -1; /* INTEGER_0_maxCoReSetStartSymbol */
+static int hf_nr_rrc_duration_01 = -1; /* INTEGER_1_maxCoReSetDuration */
+static int hf_nr_rrc_reg_BundleSize = -1; /* T_reg_BundleSize */
+static int hf_nr_rrc_cce_reg_MappingType = -1; /* T_cce_reg_MappingType */
+static int hf_nr_rrc_precoderGranularity = -1; /* NULL */
+static int hf_nr_rrc_interleaverRows = -1; /* T_interleaverRows */
+static int hf_nr_rrc_shiftIndex = -1; /* NULL */
+static int hf_nr_rrc_tci_StateRefId = -1; /* NULL */
+static int hf_nr_rrc_pdcch_DMRS_ScramblingID = -1; /* NULL */
+static int hf_nr_rrc_searchSpaceId = -1; /* SearchSpaceId */
+static int hf_nr_rrc_monitoringSlotPeriodicityAndOffset = -1; /* T_monitoringSlotPeriodicityAndOffset */
+static int hf_nr_rrc_sl1 = -1; /* NULL */
+static int hf_nr_rrc_sl2 = -1; /* INTEGER_0_1 */
+static int hf_nr_rrc_monitoringSymbolsWithinSlot = -1; /* BIT_STRING_SIZE_14 */
+static int hf_nr_rrc_nrofCandidates = -1; /* T_nrofCandidates */
+static int hf_nr_rrc_aggregationLevel1 = -1; /* T_aggregationLevel1 */
+static int hf_nr_rrc_aggregationLevel2 = -1; /* T_aggregationLevel2 */
+static int hf_nr_rrc_aggregationLevel4 = -1; /* T_aggregationLevel4 */
+static int hf_nr_rrc_aggregationLevel8 = -1; /* T_aggregationLevel8 */
+static int hf_nr_rrc_searchSpaceType = -1; /* T_searchSpaceType */
+static int hf_nr_rrc_common = -1; /* T_common */
+static int hf_nr_rrc_sfi_PDCCH = -1; /* SFI_PDCCH */
+static int hf_nr_rrc_preemp_DL = -1; /* BOOLEAN */
+static int hf_nr_rrc_int_RNTI = -1; /* BIT_STRING_SIZE_16 */
+static int hf_nr_rrc_int_TF = -1; /* T_int_TF */
+static int hf_nr_rrc_monitoringPeriodicity = -1; /* NULL */
+static int hf_nr_rrc_ue_Specific = -1; /* T_ue_Specific */
+static int hf_nr_rrc_monitoringPeriodicity_01 = -1; /* T_monitoringPeriodicity */
+static int hf_nr_rrc_sfi_CellToSFI = -1; /* SEQUENCE_SIZE_1_maxNrofAggregatedCellsPerCellGroup_OF_CellToSFI */
+static int hf_nr_rrc_sfi_CellToSFI_item = -1; /* CellToSFI */
+static int hf_nr_rrc_nrofPDCCH_Candidates = -1; /* T_nrofPDCCH_Candidates */
+static int hf_nr_rrc_aggregationLevel = -1; /* T_aggregationLevel */
+static int hf_nr_rrc_sfi_RNTI = -1; /* BIT_STRING_SIZE_16 */
+static int hf_nr_rrc_dci_PayloadLength = -1; /* NULL */
+static int hf_nr_rrc_searchSpace = -1; /* NULL */
+static int hf_nr_rrc_sfi_PositionInDCI = -1; /* INTEGER_1_1 */
+static int hf_nr_rrc_slotFormatCombinations = -1; /* SEQUENCE_SIZE_1_maxNrofSlotFormatCombinations_OF_SlotFormatCombination */
+static int hf_nr_rrc_slotFormatCombinations_item = -1; /* SlotFormatCombination */
+static int hf_nr_rrc_slotFormatCombinationId = -1; /* SlotFormatCombinationId */
+static int hf_nr_rrc_drb = -1; /* T_drb */
+static int hf_nr_rrc_discardTimer = -1; /* T_discardTimer */
+static int hf_nr_rrc_pdcp_SN_Size_UL = -1; /* T_pdcp_SN_Size_UL */
+static int hf_nr_rrc_pdcp_SN_Size_DL = -1; /* T_pdcp_SN_Size_DL */
+static int hf_nr_rrc_headerCompression = -1; /* T_headerCompression */
+static int hf_nr_rrc_notUsed = -1; /* NULL */
+static int hf_nr_rrc_rohc = -1; /* T_rohc */
+static int hf_nr_rrc_maxCID = -1; /* INTEGER_1_16383 */
+static int hf_nr_rrc_profiles = -1; /* T_profiles */
+static int hf_nr_rrc_profile0x0001 = -1; /* BOOLEAN */
+static int hf_nr_rrc_profile0x0002 = -1; /* BOOLEAN */
+static int hf_nr_rrc_profile0x0003 = -1; /* BOOLEAN */
+static int hf_nr_rrc_profile0x0004 = -1; /* BOOLEAN */
+static int hf_nr_rrc_profile0x0006 = -1; /* BOOLEAN */
+static int hf_nr_rrc_profile0x0101 = -1; /* BOOLEAN */
+static int hf_nr_rrc_profile0x0102 = -1; /* BOOLEAN */
+static int hf_nr_rrc_profile0x0103 = -1; /* BOOLEAN */
+static int hf_nr_rrc_profile0x0104 = -1; /* BOOLEAN */
+static int hf_nr_rrc_uplinkOnlyROHC = -1; /* T_uplinkOnlyROHC */
+static int hf_nr_rrc_profiles_01 = -1; /* T_profiles_01 */
+static int hf_nr_rrc_integrityProtection = -1; /* BOOLEAN */
+static int hf_nr_rrc_statusReportRequired = -1; /* BOOLEAN */
+static int hf_nr_rrc_moreThanOneRLC = -1; /* T_moreThanOneRLC */
+static int hf_nr_rrc_primaryPath = -1; /* T_primaryPath */
+static int hf_nr_rrc_cellGroup = -1; /* CellGroupId */
+static int hf_nr_rrc_logicalChannel = -1; /* LogicalChannelIdentity */
+static int hf_nr_rrc_ul_DataSplitThreshold = -1; /* T_ul_DataSplitThreshold */
+static int hf_nr_rrc_setup_03 = -1; /* T_setup_03 */
+static int hf_nr_rrc_ul_Duplication = -1; /* BOOLEAN */
+static int hf_nr_rrc_t_Reordering = -1; /* T_t_Reordering */
+static int hf_nr_rrc_outOfOrderDelivery = -1; /* BOOLEAN */
+static int hf_nr_rrc_codeBlockGroupTransmission = -1; /* BOOLEAN */
+static int hf_nr_rrc_maxCodeBlockGroupsPerTransportBlock = -1; /* T_maxCodeBlockGroupsPerTransportBlock */
+static int hf_nr_rrc_codeBlockGroupFlushIndicator = -1; /* BOOLEAN */
+static int hf_nr_rrc_dmrs_Type = -1; /* T_dmrs_Type */
+static int hf_nr_rrc_dmrs_AdditionalPosition = -1; /* T_dmrs_AdditionalPosition */
+static int hf_nr_rrc_dmrs_group1 = -1; /* NULL */
+static int hf_nr_rrc_dmrs_group2 = -1; /* NULL */
+static int hf_nr_rrc_phaseTracking_RS = -1; /* T_phaseTracking_RS */
+static int hf_nr_rrc_setup_04 = -1; /* Downlink_PTRS_Config */
+static int hf_nr_rrc_tci_States = -1; /* NULL */
+static int hf_nr_rrc_tci_rs_SetConfig = -1; /* NULL */
+static int hf_nr_rrc_tci_PresentInDCI = -1; /* T_tci_PresentInDCI */
+static int hf_nr_rrc_xOverhead = -1; /* T_xOverhead */
+static int hf_nr_rrc_pdsch_symbolAllocation = -1; /* NULL */
+static int hf_nr_rrc_rateMatchResourcesPDSCH = -1; /* T_rateMatchResourcesPDSCH */
+static int hf_nr_rrc_rateMatchPatterns = -1; /* T_rateMatchPatterns */
+static int hf_nr_rrc_setup_05 = -1; /* SEQUENCE_SIZE_1_maxNrofRateMatchPatterns_OF_RateMatchPattern */
+static int hf_nr_rrc_setup_item = -1; /* RateMatchPattern */
+static int hf_nr_rrc_lte_CRS_ToMatchAround = -1; /* T_lte_CRS_ToMatchAround */
+static int hf_nr_rrc_setup_06 = -1; /* T_setup_04 */
+static int hf_nr_rrc_nrofCRS_Ports = -1; /* T_nrofCRS_Ports */
+static int hf_nr_rrc_v_Shift = -1; /* T_v_Shift */
+static int hf_nr_rrc_rbg_Size = -1; /* T_rbg_Size */
+static int hf_nr_rrc_mcs_Table = -1; /* T_mcs_Table */
+static int hf_nr_rrc_maxNrofCodeWordsScheduledByDCI = -1; /* T_maxNrofCodeWordsScheduledByDCI */
+static int hf_nr_rrc_nrofHARQ_processesForPDSCH = -1; /* NULL */
+static int hf_nr_rrc_harq_ACK_Codebook = -1; /* T_harq_ACK_Codebook */
+static int hf_nr_rrc_pdsch_BundleSize = -1; /* NULL */
+static int hf_nr_rrc_prbBundlingEnabled = -1; /* BOOLEAN */
+static int hf_nr_rrc_frequencyDensity = -1; /* NULL */
+static int hf_nr_rrc_timeDensity = -1; /* NULL */
+static int hf_nr_rrc_nrofPorts_01 = -1; /* T_nrofPorts_01 */
+static int hf_nr_rrc_epre_Ratio = -1; /* NULL */
+static int hf_nr_rrc_resourceElementOffset = -1; /* NULL */
+static int hf_nr_rrc_resourceBlocks = -1; /* BIT_STRING_SIZE_275 */
+static int hf_nr_rrc_symbolsInResourceBlock = -1; /* BIT_STRING_SIZE_14 */
+static int hf_nr_rrc_periodicityAndOffset_01 = -1; /* T_periodicityAndOffset_01 */
+static int hf_nr_rrc_n5 = -1; /* INTEGER_0_4 */
+static int hf_nr_rrc_n10 = -1; /* INTEGER_0_9 */
+static int hf_nr_rrc_n20 = -1; /* INTEGER_0_19 */
+static int hf_nr_rrc_n40 = -1; /* INTEGER_0_39 */
+static int hf_nr_rrc_resourceSets = -1; /* SEQUENCE_SIZE_1_1_OF_PUCCH_ResourceSet */
+static int hf_nr_rrc_resourceSets_item = -1; /* PUCCH_ResourceSet */
+static int hf_nr_rrc_format1 = -1; /* T_format1 */
+static int hf_nr_rrc_setup_07 = -1; /* T_setup_05 */
+static int hf_nr_rrc_interslotFrequencyHopping = -1; /* T_interslotFrequencyHopping */
+static int hf_nr_rrc_nrofSlots = -1; /* T_nrofSlots */
+static int hf_nr_rrc_format2 = -1; /* T_format2 */
+static int hf_nr_rrc_setup_08 = -1; /* T_setup_06 */
+static int hf_nr_rrc_maxCodeRate = -1; /* INTEGER_0_7 */
+static int hf_nr_rrc_nrofPRBs = -1; /* INTEGER_1_16 */
+static int hf_nr_rrc_simultaneousHARQ_ACK_CSI = -1; /* T_simultaneousHARQ_ACK_CSI */
+static int hf_nr_rrc_format3 = -1; /* T_format3 */
+static int hf_nr_rrc_setup_09 = -1; /* T_setup_07 */
+static int hf_nr_rrc_interslotFrequencyHopping_01 = -1; /* T_interslotFrequencyHopping_01 */
+static int hf_nr_rrc_additionalDMRS = -1; /* T_additionalDMRS */
+static int hf_nr_rrc_nrofSlots_01 = -1; /* T_nrofSlots_01 */
+static int hf_nr_rrc_pi2PBSK = -1; /* T_pi2PBSK */
+static int hf_nr_rrc_format4 = -1; /* T_format4 */
+static int hf_nr_rrc_setup_10 = -1; /* T_setup_08 */
+static int hf_nr_rrc_interslotFrequencyHopping_02 = -1; /* T_interslotFrequencyHopping_02 */
+static int hf_nr_rrc_additionalDMRS_01 = -1; /* T_additionalDMRS_01 */
+static int hf_nr_rrc_nrofSlots_02 = -1; /* T_nrofSlots_02 */
+static int hf_nr_rrc_pi2PBSK_01 = -1; /* T_pi2PBSK_01 */
+static int hf_nr_rrc_schedulingRequestResources = -1; /* T_schedulingRequestResources */
+static int hf_nr_rrc_setup_11 = -1; /* SEQUENCE_SIZE_1_maxNrofSchedulingRequestResoruces_OF_SchedulingRequestResource_Config */
+static int hf_nr_rrc_setup_item_01 = -1; /* SchedulingRequestResource_Config */
+static int hf_nr_rrc_tpc_PUCCH_RNTI = -1; /* BIT_STRING_SIZE_16 */
+static int hf_nr_rrc_codeBlockGroupTransmission_01 = -1; /* T_codeBlockGroupTransmission */
+static int hf_nr_rrc_maxCodeBlockGroupsPerTransportBlock_01 = -1; /* T_maxCodeBlockGroupsPerTransportBlock_01 */
+static int hf_nr_rrc_dmrs_Type_01 = -1; /* T_dmrs_Type_01 */
+static int hf_nr_rrc_dmrs_AdditionalPosition_01 = -1; /* T_dmrs_AdditionalPosition_01 */
+static int hf_nr_rrc_phaseTracking_RS_01 = -1; /* T_phaseTracking_RS_01 */
+static int hf_nr_rrc_setup_12 = -1; /* Uplink_PTRS_Config */
+static int hf_nr_rrc_tpcAccumulation = -1; /* T_tpcAccumulation */
+static int hf_nr_rrc_tcp_PUSCH_RNTI = -1; /* BIT_STRING_SIZE_16 */
+static int hf_nr_rrc_frequencyHopping = -1; /* T_frequencyHopping */
+static int hf_nr_rrc_rateMatching = -1; /* T_rateMatching */
+static int hf_nr_rrc_rateMatchResources = -1; /* NULL */
+static int hf_nr_rrc_symbolAllocationIndexs = -1; /* NULL */
+static int hf_nr_rrc_mcs_Table_01 = -1; /* T_mcs_Table_01 */
+static int hf_nr_rrc_mcs_TableTransformPrecoder = -1; /* T_mcs_TableTransformPrecoder */
+static int hf_nr_rrc_transformPrecoder = -1; /* T_transformPrecoder */
+static int hf_nr_rrc_rbg_Size_01 = -1; /* T_rbg_Size_01 */
+static int hf_nr_rrc_uci_on_PUSCH = -1; /* T_uci_on_PUSCH */
+static int hf_nr_rrc_setup_13 = -1; /* T_setup_09 */
+static int hf_nr_rrc_dynamic = -1; /* SEQUENCE_SIZE_1_4_OF_BetaOffsets */
+static int hf_nr_rrc_dynamic_item = -1; /* BetaOffsets */
+static int hf_nr_rrc_semiStatic = -1; /* BetaOffsets */
+static int hf_nr_rrc_xOverhead_01 = -1; /* T_xOverhead_01 */
+static int hf_nr_rrc_cp_OFDM = -1; /* T_cp_OFDM */
+static int hf_nr_rrc_setup_14 = -1; /* T_setup_10 */
+static int hf_nr_rrc_nrofPorts_02 = -1; /* T_nrofPorts_02 */
+static int hf_nr_rrc_dft_S_OFDM = -1; /* T_dft_S_OFDM */
+static int hf_nr_rrc_setup_15 = -1; /* T_setup_11 */
+static int hf_nr_rrc_sampleDensity = -1; /* NULL */
+static int hf_nr_rrc_timeDensity_01 = -1; /* T_timeDensity */
+static int hf_nr_rrc_sequence = -1; /* NULL */
+static int hf_nr_rrc_betaOffsetACK_Index1 = -1; /* INTEGER_0_31 */
+static int hf_nr_rrc_betaOffsetACK_Index2 = -1; /* INTEGER_0_31 */
+static int hf_nr_rrc_betaOffsetACK_Index3 = -1; /* INTEGER_0_31 */
+static int hf_nr_rrc_betaOffsetCSI_part1_Index1 = -1; /* INTEGER_0_31 */
+static int hf_nr_rrc_betaOffsetCSI_part1_Index2 = -1; /* INTEGER_0_31 */
+static int hf_nr_rrc_betaOffsetCSI_part2_Index1 = -1; /* INTEGER_0_31 */
+static int hf_nr_rrc_betaOffsetCSI_part2_Index2 = -1; /* INTEGER_0_31 */
+static int hf_nr_rrc_quantityConfigRSindex = -1; /* QuantityConfigRS */
+static int hf_nr_rrc_ssbFilterCoefficientRSRP = -1; /* FilterCoefficient */
+static int hf_nr_rrc_ssbFilterCoefficientRSRQ = -1; /* FilterCoefficient */
+static int hf_nr_rrc_ssbFilterCoefficientRS_SINR = -1; /* FilterCoefficient */
+static int hf_nr_rrc_csi_rsFilterCoefficientRSRP = -1; /* FilterCoefficient */
+static int hf_nr_rrc_csi_rsFilterCoefficientRSRQ = -1; /* FilterCoefficient */
+static int hf_nr_rrc_csi_rsFilterCoefficientRS_SINR = -1; /* FilterCoefficient */
+static int hf_nr_rrc_groupBconfigured = -1; /* T_groupBconfigured */
+static int hf_nr_rrc_ra_Msg3SizeGroupA = -1; /* T_ra_Msg3SizeGroupA */
+static int hf_nr_rrc_messagePowerOffsetGroupB = -1; /* T_messagePowerOffsetGroupB */
+static int hf_nr_rrc_cbra_SSB_ResourceList = -1; /* CBRA_SSB_ResourceList */
+static int hf_nr_rrc_ra_ContentionResolutionTimer = -1; /* T_ra_ContentionResolutionTimer */
+static int hf_nr_rrc_ssb_Threshold = -1; /* NULL */
+static int hf_nr_rrc_sul_RSRP_Threshold = -1; /* NULL */
+static int hf_nr_rrc_prach_ConfigurationIndex = -1; /* INTEGER_0_255 */
+static int hf_nr_rrc_prach_RootSequenceIndex = -1; /* T_prach_RootSequenceIndex */
+static int hf_nr_rrc_l839 = -1; /* INTEGER_0_837 */
+static int hf_nr_rrc_l139 = -1; /* INTEGER_0_137 */
+static int hf_nr_rrc_zeroCorrelationZoneConfig = -1; /* INTEGER_0_15 */
+static int hf_nr_rrc_restrictedSetConfig = -1; /* T_restrictedSetConfig */
+static int hf_nr_rrc_preambleReceivedTargetPower = -1; /* T_preambleReceivedTargetPower */
+static int hf_nr_rrc_powerRampingStep = -1; /* T_powerRampingStep */
+static int hf_nr_rrc_preambleTransMax = -1; /* T_preambleTransMax */
+static int hf_nr_rrc_ra_ResponseWindow = -1; /* NULL */
+static int hf_nr_rrc_msg2_SubcarrierSpacing = -1; /* SubcarrierSpacing */
+static int hf_nr_rrc_rach_ControlResourceSet = -1; /* NULL */
+static int hf_nr_rrc_msg3_SubcarrierSpacing = -1; /* SubcarrierSpacing */
+static int hf_nr_rrc_msg3_transformPrecoding = -1; /* T_msg3_transformPrecoding */
+static int hf_nr_rrc_CBRA_SSB_ResourceList_item = -1; /* CBRA_SSB_Resource */
+static int hf_nr_rrc_ssb = -1; /* SSB_ID */
+static int hf_nr_rrc_startIndexRA_PreambleGroupA = -1; /* PreambleStartIndex */
+static int hf_nr_rrc_numberofRA_PreamblesGroupA = -1; /* NumberOfRA_Preambles */
+static int hf_nr_rrc_numberOfRA_Preambles = -1; /* NumberOfRA_Preambles */
+static int hf_nr_rrc_ra_Resources = -1; /* RA_Resources */
+static int hf_nr_rrc_cfra_Resources = -1; /* CFRA_Resources */
+static int hf_nr_rrc_rar_SubcarrierSpacing = -1; /* SubcarrierSpacing */
+static int hf_nr_rrc_cfra_ssb_ResourceList = -1; /* SEQUENCE_SIZE_1_maxRAssbResources_OF_CFRA_SSB_Resource */
+static int hf_nr_rrc_cfra_ssb_ResourceList_item = -1; /* CFRA_SSB_Resource */
+static int hf_nr_rrc_cfra_csirs_ResourceList = -1; /* SEQUENCE_SIZE_1_maxRAcsirsResources_OF_CFRA_CSIRS_Resource */
+static int hf_nr_rrc_cfra_csirs_ResourceList_item = -1; /* CFRA_CSIRS_Resource */
+static int hf_nr_rrc_ra_PreambleIndex = -1; /* INTEGER_0_0 */
+static int hf_nr_rrc_csirs = -1; /* CSIRS_ID */
+static int hf_nr_rrc_srb_ToAddModList = -1; /* SRB_ToAddModList */
+static int hf_nr_rrc_srb_ToReleaseList = -1; /* INTEGER_3 */
+static int hf_nr_rrc_drb_ToAddModList = -1; /* DRB_ToAddModList */
+static int hf_nr_rrc_drb_ToReleaseList = -1; /* DRB_ToReleaseList */
+static int hf_nr_rrc_securityConfig = -1; /* SecurityConfig */
+static int hf_nr_rrc_SRB_ToAddModList_item = -1; /* SRB_ToAddMod */
+static int hf_nr_rrc_srb_Identity = -1; /* SRB_Identity */
+static int hf_nr_rrc_reestablishPDCP = -1; /* T_reestablishPDCP */
+static int hf_nr_rrc_pdcp_Config = -1; /* PDCP_Config */
+static int hf_nr_rrc_DRB_ToAddModList_item = -1; /* DRB_ToAddMod */
+static int hf_nr_rrc_cnAssociation = -1; /* T_cnAssociation */
+static int hf_nr_rrc_eps_BearerIdentity = -1; /* INTEGER_0_15 */
+static int hf_nr_rrc_sdap_Config = -1; /* SDAP_Config */
+static int hf_nr_rrc_drb_Identity = -1; /* DRB_Identity */
+static int hf_nr_rrc_reestablishPDCP_01 = -1; /* T_reestablishPDCP_01 */
+static int hf_nr_rrc_recoverPDCP = -1; /* T_recoverPDCP */
+static int hf_nr_rrc_DRB_ToReleaseList_item = -1; /* DRB_Identity */
+static int hf_nr_rrc_securityAlgorithmConfig = -1; /* SecurityAlgorithmConfig */
+static int hf_nr_rrc_keyToUse = -1; /* T_keyToUse */
+static int hf_nr_rrc_reportType = -1; /* T_reportType */
+static int hf_nr_rrc_periodical = -1; /* PeriodicalReportConfig */
+static int hf_nr_rrc_eventTriggered = -1; /* EventTriggerConfig */
+static int hf_nr_rrc_reportCGI = -1; /* NULL */
+static int hf_nr_rrc_eventId = -1; /* T_eventId */
+static int hf_nr_rrc_eventA1 = -1; /* T_eventA1 */
+static int hf_nr_rrc_a1_Threshold = -1; /* MeasTriggerQuantity */
+static int hf_nr_rrc_reportOnLeave = -1; /* BOOLEAN */
+static int hf_nr_rrc_hysteresis = -1; /* Hysteresis */
+static int hf_nr_rrc_timeToTrigger = -1; /* TimeToTrigger */
+static int hf_nr_rrc_eventA2 = -1; /* T_eventA2 */
+static int hf_nr_rrc_a2_Threshold = -1; /* MeasTriggerQuantity */
+static int hf_nr_rrc_eventA3 = -1; /* T_eventA3 */
+static int hf_nr_rrc_a3_Offset = -1; /* MeasTriggerQuantityOffset */
+static int hf_nr_rrc_useWhiteCellList = -1; /* BOOLEAN */
+static int hf_nr_rrc_eventA4 = -1; /* T_eventA4 */
+static int hf_nr_rrc_a4_Threshold = -1; /* MeasTriggerQuantity */
+static int hf_nr_rrc_eventA5 = -1; /* T_eventA5 */
+static int hf_nr_rrc_a5_Threshold1 = -1; /* MeasTriggerQuantity */
+static int hf_nr_rrc_a5_Threshold2 = -1; /* MeasTriggerQuantity */
+static int hf_nr_rrc_eventA6 = -1; /* T_eventA6 */
+static int hf_nr_rrc_a6_Offset = -1; /* MeasTriggerQuantityOffset */
+static int hf_nr_rrc_rsType = -1; /* T_rsType */
+static int hf_nr_rrc_reportInterval = -1; /* ReportInterval */
+static int hf_nr_rrc_reportAmount = -1; /* T_reportAmount */
+static int hf_nr_rrc_reportQuantityCell = -1; /* MeasReportQuantity */
+static int hf_nr_rrc_maxReportCells = -1; /* INTEGER_1_maxCellReport */
+static int hf_nr_rrc_reportQuantityRsIndexes = -1; /* MeasReportQuantity */
+static int hf_nr_rrc_maxNroIndexesToReport = -1; /* INTEGER_1_maxNroIndexesToReport */
+static int hf_nr_rrc_onlyReportBeamIds = -1; /* BOOLEAN */
+static int hf_nr_rrc_reportAddNeighMeas = -1; /* NULL */
+static int hf_nr_rrc_rsType_01 = -1; /* T_rsType_01 */
+static int hf_nr_rrc_reportAmount_01 = -1; /* T_reportAmount_01 */
+static int hf_nr_rrc_maxNroRsIndexesToReport = -1; /* INTEGER_1_maxNroIndexesToReport */
+static int hf_nr_rrc_rsrp = -1; /* RSRPRange */
+static int hf_nr_rrc_rsrq = -1; /* RSRQRange */
+static int hf_nr_rrc_sinr = -1; /* SINRRange */
+static int hf_nr_rrc_rsrp_01 = -1; /* INTEGER_0 */
+static int hf_nr_rrc_rsrq_01 = -1; /* INTEGER_0 */
+static int hf_nr_rrc_sinr_01 = -1; /* INTEGER_0 */
+static int hf_nr_rrc_rsrp_02 = -1; /* BOOLEAN */
+static int hf_nr_rrc_rsrq_02 = -1; /* BOOLEAN */
+static int hf_nr_rrc_sinr_02 = -1; /* BOOLEAN */
+static int hf_nr_rrc_ReportConfigToAddModList_item = -1; /* ReportConfigToAddMod */
+static int hf_nr_rrc_reportConfig = -1; /* T_reportConfig */
+static int hf_nr_rrc_reportConfigNR = -1; /* ReportConfigNR */
+static int hf_nr_rrc_reportConfigEUTRA = -1; /* ReportConfigEUTRA */
+static int hf_nr_rrc_am = -1; /* T_am */
+static int hf_nr_rrc_ul_AM_RLC = -1; /* UL_AM_RLC */
+static int hf_nr_rrc_dl_AM_RLC = -1; /* DL_AM_RLC */
+static int hf_nr_rrc_um_Bi_Directional = -1; /* T_um_Bi_Directional */
+static int hf_nr_rrc_ul_UM_RLC = -1; /* UL_UM_RLC */
+static int hf_nr_rrc_dl_UM_RLC = -1; /* DL_UM_RLC */
+static int hf_nr_rrc_um_Uni_Directional_UL = -1; /* T_um_Uni_Directional_UL */
+static int hf_nr_rrc_um_Uni_Directional_DL = -1; /* T_um_Uni_Directional_DL */
+static int hf_nr_rrc_sn_FieldLength = -1; /* SN_FieldLength_AM */
+static int hf_nr_rrc_t_PollRetransmit = -1; /* T_PollRetransmit */
+static int hf_nr_rrc_pollPDU = -1; /* PollPDU */
+static int hf_nr_rrc_pollByte = -1; /* PollByte */
+static int hf_nr_rrc_maxRetxThreshold = -1; /* T_maxRetxThreshold */
+static int hf_nr_rrc_t_Reassembly = -1; /* T_Reassembly */
+static int hf_nr_rrc_t_StatusProhibit = -1; /* T_StatusProhibit */
+static int hf_nr_rrc_sn_FieldLength_01 = -1; /* SN_FieldLength_UM */
+static int hf_nr_rrc_schedulingRequestToAddModList = -1; /* SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestToAddMod */
+static int hf_nr_rrc_schedulingRequestToAddModList_item = -1; /* SchedulingRequestToAddMod */
+static int hf_nr_rrc_schedulingRequestToReleaseList = -1; /* SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestId */
+static int hf_nr_rrc_schedulingRequestToReleaseList_item = -1; /* SchedulingRequestId */
+static int hf_nr_rrc_schedulingRequestID = -1; /* SchedulingRequestId */
+static int hf_nr_rrc_sr_prohibitTimer = -1; /* T_sr_prohibitTimer */
+static int hf_nr_rrc_sr_TransMax = -1; /* T_sr_TransMax */
+static int hf_nr_rrc_pduSession = -1; /* PDUsessionID */
+static int hf_nr_rrc_sdap_Header_DL = -1; /* T_sdap_Header_DL */
+static int hf_nr_rrc_sdap_Header_UL = -1; /* T_sdap_Header_UL */
+static int hf_nr_rrc_defaultDRB = -1; /* BOOLEAN */
+static int hf_nr_rrc_reflectiveQoS = -1; /* BOOLEAN */
+static int hf_nr_rrc_mappedQoSflows = -1; /* SEQUENCE_SIZE_0_maxNrofQFIs_OF_QFI */
+static int hf_nr_rrc_mappedQoSflows_item = -1; /* QFI */
+static int hf_nr_rrc_cipheringAlgorithm = -1; /* CipheringAlgorithm */
+static int hf_nr_rrc_integrityProtAlgorithm = -1; /* IntegrityProtAlgorithm */
+static int hf_nr_rrc_frequencyInfoDL = -1; /* T_frequencyInfoDL */
+static int hf_nr_rrc_carrierFreqDL = -1; /* ARFCN_ValueNR */
+static int hf_nr_rrc_carrierBandwidthDL = -1; /* CarrierBandwidthNR */
+static int hf_nr_rrc_frequencyInfoUL = -1; /* FrequencyInfoUL */
+static int hf_nr_rrc_supplementaryUplink = -1; /* T_supplementaryUplink */
+static int hf_nr_rrc_subcarrierSpacingCommon = -1; /* SubcarrierSpacing */
+static int hf_nr_rrc_ssb_subcarrier_offset = -1; /* INTEGER_1_11 */
+static int hf_nr_rrc_ssb_PositionsInBurst = -1; /* T_ssb_PositionsInBurst */
+static int hf_nr_rrc_ssb_periodicityServingCell = -1; /* T_ssb_periodicityServingCell */
+static int hf_nr_rrc_dmrs_TypeA_Position_01 = -1; /* T_dmrs_TypeA_Position_01 */
+static int hf_nr_rrc_subcarrierSpacingSSB = -1; /* SubcarrierSpacingSSB */
+static int hf_nr_rrc_tdd_UL_DL_configurationCommon = -1; /* T_tdd_UL_DL_configurationCommon */
+static int hf_nr_rrc_dl_UL_TransmissionPeriodicity = -1; /* T_dl_UL_TransmissionPeriodicity */
+static int hf_nr_rrc_nrofDownlinkSlots = -1; /* INTEGER_0_160 */
+static int hf_nr_rrc_nrofDownlinkSymbols = -1; /* INTEGER_0_maxSymbolIndex */
+static int hf_nr_rrc_nrofUplinkSlots = -1; /* INTEGER_0_160 */
+static int hf_nr_rrc_nrofUplinkSymbols = -1; /* INTEGER_0_maxSymbolIndex */
+static int hf_nr_rrc_ss_PBCH_BlockPower = -1; /* INTEGER_M60_50 */
+static int hf_nr_rrc_rach_ConfigCommon = -1; /* RACH_ConfigCommon */
+static int hf_nr_rrc_tdd_UL_DL_configurationDedicated = -1; /* T_tdd_UL_DL_configurationDedicated */
+static int hf_nr_rrc_slotSpecificConfigurations = -1; /* T_slotSpecificConfigurations */
+static int hf_nr_rrc_slotSpecificConfigurations_item = -1; /* T_slotSpecificConfigurations_item */
+static int hf_nr_rrc_slotIndex = -1; /* INTEGER_0_160 */
+static int hf_nr_rrc_bandwidthParts = -1; /* BandwidthParts */
+static int hf_nr_rrc_dataScramblingIdentity = -1; /* NULL */
+static int hf_nr_rrc_pdcch_Config = -1; /* PDCCH_Config */
+static int hf_nr_rrc_pdsch_Config = -1; /* PDSCH_Config */
+static int hf_nr_rrc_csi_MeasConfig = -1; /* CSI_MeasConfig */
+static int hf_nr_rrc_pucch_Config = -1; /* PUCCH_Config */
+static int hf_nr_rrc_pusch_Config = -1; /* PUSCH_Config */
+static int hf_nr_rrc_srs_Config = -1; /* SRS_Config */
+static int hf_nr_rrc_sps_Config = -1; /* SPS_Config */
+static int hf_nr_rrc_crossCarrierSchedulingConfig = -1; /* CrossCarrierSchedulingConfig */
+static int hf_nr_rrc_ue_BeamLockFunction = -1; /* T_ue_BeamLockFunction */
+static int hf_nr_rrc_pathlossReferenceLinking = -1; /* T_pathlossReferenceLinking */
+static int hf_nr_rrc_uplink = -1; /* T_uplink */
+static int hf_nr_rrc_periodicity = -1; /* NULL */
+static int hf_nr_rrc_powerControl = -1; /* NULL */
+static int hf_nr_rrc_transformPrecoder_01 = -1; /* T_transformPrecoder_01 */
+static int hf_nr_rrc_nrofHARQ_processes = -1; /* INTEGER_1_1 */
+static int hf_nr_rrc_repK_RV = -1; /* T_repK_RV */
+static int hf_nr_rrc_priodicity = -1; /* T_priodicity */
+static int hf_nr_rrc_rrcConfiguredUplinkGrant = -1; /* T_rrcConfiguredUplinkGrant */
+static int hf_nr_rrc_setup_16 = -1; /* T_setup_12 */
+static int hf_nr_rrc_timeDomainOffset = -1; /* NULL */
+static int hf_nr_rrc_timeDomainAllocation = -1; /* NULL */
+static int hf_nr_rrc_frequencyDomainAllocation = -1; /* NULL */
+static int hf_nr_rrc_dmrs = -1; /* NULL */
+static int hf_nr_rrc_mcsAndTBS = -1; /* NULL */
+static int hf_nr_rrc_repK = -1; /* NULL */
+static int hf_nr_rrc_srs_ResourceSetToReleaseList = -1; /* SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSetId */
+static int hf_nr_rrc_srs_ResourceSetToReleaseList_item = -1; /* SRS_ResourceSetId */
+static int hf_nr_rrc_srs_ResourceSetToAddModList = -1; /* SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSet */
+static int hf_nr_rrc_srs_ResourceSetToAddModList_item = -1; /* SRS_ResourceSet */
+static int hf_nr_rrc_srs_ResourceToReleaseList = -1; /* SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_ResourceId */
+static int hf_nr_rrc_srs_ResourceToReleaseList_item = -1; /* SRS_ResourceId */
+static int hf_nr_rrc_srs_ResourceToAddModList = -1; /* SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_Resource */
+static int hf_nr_rrc_srs_ResourceToAddModList_item = -1; /* SRS_Resource */
+static int hf_nr_rrc_tpc_SRS_RNTI = -1; /* BIT_STRING_SIZE_16 */
+static int hf_nr_rrc_srs_ResourceSetId = -1; /* SRS_ResourceSetId */
+static int hf_nr_rrc_srs_ResourcesIds = -1; /* SEQUENCE_SIZE_1_maxNrofSRS_ResourcesPerSet_OF_SRS_ResourceId */
+static int hf_nr_rrc_srs_ResourcesIds_item = -1; /* SRS_ResourceId */
+static int hf_nr_rrc_aperiodicSRS_ResourceTrigger = -1; /* NULL */
+static int hf_nr_rrc_srs_ResourceId = -1; /* SRS_ResourceId */
+static int hf_nr_rrc_nrofSRS_Ports = -1; /* T_nrofSRS_Ports */
+static int hf_nr_rrc_transmissionComb = -1; /* T_transmissionComb */
+static int hf_nr_rrc_freqDomainPosition = -1; /* NULL */
+static int hf_nr_rrc_freqHopping = -1; /* INTEGER_0_63 */
+static int hf_nr_rrc_groupOrSequenceHopping = -1; /* INTEGER_0_2 */
+static int hf_nr_rrc_resourceType_01 = -1; /* T_resourceType_01 */
+static int hf_nr_rrc_aperiodic_02 = -1; /* T_aperiodic_01 */
+static int hf_nr_rrc_semi_persistent = -1; /* T_semi_persistent */
+static int hf_nr_rrc_periodic_02 = -1; /* T_periodic_01 */
+static int hf_nr_rrc_periodicityAndOffset_02 = -1; /* T_periodicityAndOffset_02 */
+static int hf_nr_rrc_sequenceId = -1; /* NULL */
+static int hf_nr_rrc_antennaSwitching = -1; /* NULL */
+static int hf_nr_rrc_carrierSwitching = -1; /* NULL */
+static int hf_nr_rrc_cyclicShift = -1; /* INTEGER_0_12 */
+static int hf_nr_rrc_spatialRelationInfo = -1; /* T_spatialRelationInfo */
+static int hf_nr_rrc_start = -1; /* PhysCellId */
+static int hf_nr_rrc_range = -1; /* T_range */
+
+/*--- End of included file: packet-nr-rrc-hf.c ---*/
+#line 40 "./asn1/nr-rrc/packet-nr-rrc-template.c"
+
+/* Initialize the subtree pointers */
+static gint ett_nr_rrc = -1;
+
+/*--- Included file: packet-nr-rrc-ett.c ---*/
+#line 1 "./asn1/nr-rrc/packet-nr-rrc-ett.c"
+static gint ett_nr_rrc_BCCH_BCH_Message = -1;
+static gint ett_nr_rrc_BCCH_BCH_MessageType = -1;
+static gint ett_nr_rrc_T_messageClassExtension = -1;
+static gint ett_nr_rrc_DL_DCCH_Message = -1;
+static gint ett_nr_rrc_DL_DCCH_MessageType = -1;
+static gint ett_nr_rrc_T_c1 = -1;
+static gint ett_nr_rrc_T_messageClassExtension_01 = -1;
+static gint ett_nr_rrc_UL_DCCH_Message = -1;
+static gint ett_nr_rrc_UL_DCCH_MessageType = -1;
+static gint ett_nr_rrc_T_c1_01 = -1;
+static gint ett_nr_rrc_T_messageClassExtension_02 = -1;
+static gint ett_nr_rrc_MIB = -1;
+static gint ett_nr_rrc_MeasurementReport = -1;
+static gint ett_nr_rrc_T_criticalExtensions = -1;
+static gint ett_nr_rrc_T_criticalExtensionsFuture = -1;
+static gint ett_nr_rrc_MeasurementReport_IEs = -1;
+static gint ett_nr_rrc_RRCReconfiguration = -1;
+static gint ett_nr_rrc_T_criticalExtensions_01 = -1;
+static gint ett_nr_rrc_T_criticalExtensionsFuture_01 = -1;
+static gint ett_nr_rrc_RRCReconfiguration_IEs = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupConfig = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupId = -1;
+static gint ett_nr_rrc_T_nonCriticalExtension = -1;
+static gint ett_nr_rrc_RRCReconfigurationComplete = -1;
+static gint ett_nr_rrc_T_criticalExtensions_02 = -1;
+static gint ett_nr_rrc_T_criticalExtensionsFuture_02 = -1;
+static gint ett_nr_rrc_RRCReconfigurationComplete_IEs = -1;
+static gint ett_nr_rrc_BandwidthPart = -1;
+static gint ett_nr_rrc_CellGroupConfig = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxLCH_OF_LCH_Config = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxLCH_OF_LogicalChannelIdentity = -1;
+static gint ett_nr_rrc_LCH_Config = -1;
+static gint ett_nr_rrc_PhysicalCellGroupConfig = -1;
+static gint ett_nr_rrc_SpCellConfig = -1;
+static gint ett_nr_rrc_T_reconfigurationWithSync = -1;
+static gint ett_nr_rrc_SCellToReleaseList = -1;
+static gint ett_nr_rrc_SCellToAddModList = -1;
+static gint ett_nr_rrc_SCellConfig = -1;
+static gint ett_nr_rrc_CellIndexList = -1;
+static gint ett_nr_rrc_CrossCarrierSchedulingConfig = -1;
+static gint ett_nr_rrc_T_schedulingCellInfo = -1;
+static gint ett_nr_rrc_T_own = -1;
+static gint ett_nr_rrc_T_other = -1;
+static gint ett_nr_rrc_CSI_MeasConfig = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_ResourceConfigurations_OF_CSI_ResourceConfig = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_Reports_OF_CSI_ReportConfig = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_MeasId_OF_CSI_MeasIdToAddMod = -1;
+static gint ett_nr_rrc_T_reportTrigger = -1;
+static gint ett_nr_rrc_CSI_ResourceConfig = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_ResourceSets_OF_CSI_ResourceSet = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSSB_Resources_1_OF_CSI_SSB_Resource = -1;
+static gint ett_nr_rrc_T_resourceType = -1;
+static gint ett_nr_rrc_CSI_ResourceSet = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesPerSet_OF_NZP_CSI_RS_Resource = -1;
+static gint ett_nr_rrc_NZP_CSI_RS_Resource = -1;
+static gint ett_nr_rrc_T_csi_RS_timeConfig = -1;
+static gint ett_nr_rrc_CSI_SSB_Resource = -1;
+static gint ett_nr_rrc_CSI_ReportConfig = -1;
+static gint ett_nr_rrc_T_reportConfigType = -1;
+static gint ett_nr_rrc_T_periodic = -1;
+static gint ett_nr_rrc_T_reportSlotConfig = -1;
+static gint ett_nr_rrc_T_semiPersistent = -1;
+static gint ett_nr_rrc_T_reportSlotConfig_01 = -1;
+static gint ett_nr_rrc_T_aperiodic = -1;
+static gint ett_nr_rrc_T_reportQuantity = -1;
+static gint ett_nr_rrc_T_cRI_RI_i1_CQI = -1;
+static gint ett_nr_rrc_T_reportFreqConfiguration = -1;
+static gint ett_nr_rrc_T_groupBasedBeamReporting = -1;
+static gint ett_nr_rrc_T_enabled = -1;
+static gint ett_nr_rrc_T_disabled = -1;
+static gint ett_nr_rrc_CodebookConfig = -1;
+static gint ett_nr_rrc_T_codebookType = -1;
+static gint ett_nr_rrc_T_type1 = -1;
+static gint ett_nr_rrc_T_codebookSubsetRestrictionType1 = -1;
+static gint ett_nr_rrc_T_ri_Restriction = -1;
+static gint ett_nr_rrc_T_type2 = -1;
+static gint ett_nr_rrc_T_ri_Restriction_01 = -1;
+static gint ett_nr_rrc_CSI_MeasIdToAddMod = -1;
+static gint ett_nr_rrc_FrequencyInfoUL = -1;
+static gint ett_nr_rrc_LogicalChannelConfig = -1;
+static gint ett_nr_rrc_T_ul_SpecificParameters = -1;
+static gint ett_nr_rrc_MAC_CellGroupConfig = -1;
+static gint ett_nr_rrc_DRX_Config = -1;
+static gint ett_nr_rrc_T_setup = -1;
+static gint ett_nr_rrc_T_drx_LongCycleStartOffset = -1;
+static gint ett_nr_rrc_T_shortDRX = -1;
+static gint ett_nr_rrc_PHR_Config = -1;
+static gint ett_nr_rrc_T_setup_01 = -1;
+static gint ett_nr_rrc_TAG_Config = -1;
+static gint ett_nr_rrc_TAG_ToReleaseList = -1;
+static gint ett_nr_rrc_TAG_ToAddModList = -1;
+static gint ett_nr_rrc_TAG_ToAddMod = -1;
+static gint ett_nr_rrc_BSR_Config = -1;
+static gint ett_nr_rrc_MeasConfig = -1;
+static gint ett_nr_rrc_T_s_MeasureConfig = -1;
+static gint ett_nr_rrc_MeasObjectToRemoveList = -1;
+static gint ett_nr_rrc_MeasIdToRemoveList = -1;
+static gint ett_nr_rrc_ReportConfigToRemoveList = -1;
+static gint ett_nr_rrc_MeasIdToAddModList = -1;
+static gint ett_nr_rrc_MeasIdToAddMod = -1;
+static gint ett_nr_rrc_MeasObjectNR = -1;
+static gint ett_nr_rrc_ReferenceSignalConfig = -1;
+static gint ett_nr_rrc_T_ssbPresence = -1;
+static gint ett_nr_rrc_T_present = -1;
+static gint ett_nr_rrc_T_notPresent = -1;
+static gint ett_nr_rrc_SSB_MeasurementTimingConfiguration = -1;
+static gint ett_nr_rrc_T_smtc1 = -1;
+static gint ett_nr_rrc_T_periodicityAndOffset = -1;
+static gint ett_nr_rrc_T_ssb_ToMeasure = -1;
+static gint ett_nr_rrc_T_setup_02 = -1;
+static gint ett_nr_rrc_T_smtc2 = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofPCIsPerSMTC_OF_PhysicalCellId = -1;
+static gint ett_nr_rrc_CSI_RS_ResourceConfig_Mobility = -1;
+static gint ett_nr_rrc_T_csi_rs_MeasurementBW = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesRRM_OF_CSI_RS_Resource_Mobility = -1;
+static gint ett_nr_rrc_CSI_RS_Resource_Mobility = -1;
+static gint ett_nr_rrc_T_slotConfig = -1;
+static gint ett_nr_rrc_Q_OffsetRangeList = -1;
+static gint ett_nr_rrc_ThresholdNR = -1;
+static gint ett_nr_rrc_CellsToAddModList = -1;
+static gint ett_nr_rrc_CellsToAddMod = -1;
+static gint ett_nr_rrc_BlackCellsToAddModList = -1;
+static gint ett_nr_rrc_BlackCellsToAddMod = -1;
+static gint ett_nr_rrc_WhiteCellsToAddModList = -1;
+static gint ett_nr_rrc_WhiteCellsToAddMod = -1;
+static gint ett_nr_rrc_MeasObjectToAddModList = -1;
+static gint ett_nr_rrc_MeasObjectToAddMod = -1;
+static gint ett_nr_rrc_T_measObject = -1;
+static gint ett_nr_rrc_MeasResults = -1;
+static gint ett_nr_rrc_T_measResultNeighCells = -1;
+static gint ett_nr_rrc_MeasResultServFreqList = -1;
+static gint ett_nr_rrc_MeasResultServFreq = -1;
+static gint ett_nr_rrc_MeasResultListNR = -1;
+static gint ett_nr_rrc_MeasResultNR = -1;
+static gint ett_nr_rrc_T_measResult = -1;
+static gint ett_nr_rrc_T_cellResults = -1;
+static gint ett_nr_rrc_T_rsIndexResults = -1;
+static gint ett_nr_rrc_ResultsSSBCell = -1;
+static gint ett_nr_rrc_ResultsCSI_RSCell = -1;
+static gint ett_nr_rrc_ResultsPerSSBIndexList = -1;
+static gint ett_nr_rrc_ResultsPerSSBIndex = -1;
+static gint ett_nr_rrc_ResultsPerCSI_RSIndexList = -1;
+static gint ett_nr_rrc_ResultsPerCSI_RSIndex = -1;
+static gint ett_nr_rrc_PDCCH_Config = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceSet = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceId = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpace = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpaceId = -1;
+static gint ett_nr_rrc_T_timing = -1;
+static gint ett_nr_rrc_ControlResourceSet = -1;
+static gint ett_nr_rrc_SearchSpace = -1;
+static gint ett_nr_rrc_T_monitoringSlotPeriodicityAndOffset = -1;
+static gint ett_nr_rrc_T_nrofCandidates = -1;
+static gint ett_nr_rrc_T_searchSpaceType = -1;
+static gint ett_nr_rrc_T_common = -1;
+static gint ett_nr_rrc_T_ue_Specific = -1;
+static gint ett_nr_rrc_SFI_PDCCH = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofAggregatedCellsPerCellGroup_OF_CellToSFI = -1;
+static gint ett_nr_rrc_CellToSFI = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSlotFormatCombinations_OF_SlotFormatCombination = -1;
+static gint ett_nr_rrc_SlotFormatCombination = -1;
+static gint ett_nr_rrc_PDCP_Config = -1;
+static gint ett_nr_rrc_T_drb = -1;
+static gint ett_nr_rrc_T_headerCompression = -1;
+static gint ett_nr_rrc_T_rohc = -1;
+static gint ett_nr_rrc_T_profiles = -1;
+static gint ett_nr_rrc_T_uplinkOnlyROHC = -1;
+static gint ett_nr_rrc_T_profiles_01 = -1;
+static gint ett_nr_rrc_T_moreThanOneRLC = -1;
+static gint ett_nr_rrc_T_primaryPath = -1;
+static gint ett_nr_rrc_T_ul_DataSplitThreshold = -1;
+static gint ett_nr_rrc_PDSCH_Config = -1;
+static gint ett_nr_rrc_T_phaseTracking_RS = -1;
+static gint ett_nr_rrc_T_rateMatchResourcesPDSCH = -1;
+static gint ett_nr_rrc_T_rateMatchPatterns = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofRateMatchPatterns_OF_RateMatchPattern = -1;
+static gint ett_nr_rrc_T_lte_CRS_ToMatchAround = -1;
+static gint ett_nr_rrc_T_setup_04 = -1;
+static gint ett_nr_rrc_Downlink_PTRS_Config = -1;
+static gint ett_nr_rrc_RateMatchPattern = -1;
+static gint ett_nr_rrc_T_periodicityAndOffset_01 = -1;
+static gint ett_nr_rrc_PUCCH_Config = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_1_OF_PUCCH_ResourceSet = -1;
+static gint ett_nr_rrc_T_format1 = -1;
+static gint ett_nr_rrc_T_setup_05 = -1;
+static gint ett_nr_rrc_T_format2 = -1;
+static gint ett_nr_rrc_T_setup_06 = -1;
+static gint ett_nr_rrc_T_format3 = -1;
+static gint ett_nr_rrc_T_setup_07 = -1;
+static gint ett_nr_rrc_T_format4 = -1;
+static gint ett_nr_rrc_T_setup_08 = -1;
+static gint ett_nr_rrc_T_schedulingRequestResources = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSchedulingRequestResoruces_OF_SchedulingRequestResource_Config = -1;
+static gint ett_nr_rrc_PUCCH_ResourceSet = -1;
+static gint ett_nr_rrc_PUSCH_Config = -1;
+static gint ett_nr_rrc_T_phaseTracking_RS_01 = -1;
+static gint ett_nr_rrc_T_uci_on_PUSCH = -1;
+static gint ett_nr_rrc_T_setup_09 = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_4_OF_BetaOffsets = -1;
+static gint ett_nr_rrc_Uplink_PTRS_Config = -1;
+static gint ett_nr_rrc_T_cp_OFDM = -1;
+static gint ett_nr_rrc_T_setup_10 = -1;
+static gint ett_nr_rrc_T_dft_S_OFDM = -1;
+static gint ett_nr_rrc_T_setup_11 = -1;
+static gint ett_nr_rrc_BetaOffsets = -1;
+static gint ett_nr_rrc_QuantityConfig = -1;
+static gint ett_nr_rrc_QuantityConfigRS = -1;
+static gint ett_nr_rrc_RACH_ConfigCommon = -1;
+static gint ett_nr_rrc_T_groupBconfigured = -1;
+static gint ett_nr_rrc_T_prach_RootSequenceIndex = -1;
+static gint ett_nr_rrc_CBRA_SSB_ResourceList = -1;
+static gint ett_nr_rrc_CBRA_SSB_Resource = -1;
+static gint ett_nr_rrc_RACH_ConfigDedicated = -1;
+static gint ett_nr_rrc_CFRA_Resources = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxRAssbResources_OF_CFRA_SSB_Resource = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxRAcsirsResources_OF_CFRA_CSIRS_Resource = -1;
+static gint ett_nr_rrc_CFRA_SSB_Resource = -1;
+static gint ett_nr_rrc_CFRA_CSIRS_Resource = -1;
+static gint ett_nr_rrc_RadioBearerConfig = -1;
+static gint ett_nr_rrc_SRB_ToAddModList = -1;
+static gint ett_nr_rrc_SRB_ToAddMod = -1;
+static gint ett_nr_rrc_DRB_ToAddModList = -1;
+static gint ett_nr_rrc_DRB_ToAddMod = -1;
+static gint ett_nr_rrc_T_cnAssociation = -1;
+static gint ett_nr_rrc_DRB_ToReleaseList = -1;
+static gint ett_nr_rrc_SecurityConfig = -1;
+static gint ett_nr_rrc_ReportConfigNR = -1;
+static gint ett_nr_rrc_T_reportType = -1;
+static gint ett_nr_rrc_EventTriggerConfig = -1;
+static gint ett_nr_rrc_T_eventId = -1;
+static gint ett_nr_rrc_T_eventA1 = -1;
+static gint ett_nr_rrc_T_eventA2 = -1;
+static gint ett_nr_rrc_T_eventA3 = -1;
+static gint ett_nr_rrc_T_eventA4 = -1;
+static gint ett_nr_rrc_T_eventA5 = -1;
+static gint ett_nr_rrc_T_eventA6 = -1;
+static gint ett_nr_rrc_PeriodicalReportConfig = -1;
+static gint ett_nr_rrc_MeasTriggerQuantity = -1;
+static gint ett_nr_rrc_MeasTriggerQuantityOffset = -1;
+static gint ett_nr_rrc_MeasReportQuantity = -1;
+static gint ett_nr_rrc_ReportConfigToAddModList = -1;
+static gint ett_nr_rrc_ReportConfigToAddMod = -1;
+static gint ett_nr_rrc_T_reportConfig = -1;
+static gint ett_nr_rrc_RLC_Config = -1;
+static gint ett_nr_rrc_T_am = -1;
+static gint ett_nr_rrc_T_um_Bi_Directional = -1;
+static gint ett_nr_rrc_T_um_Uni_Directional_UL = -1;
+static gint ett_nr_rrc_T_um_Uni_Directional_DL = -1;
+static gint ett_nr_rrc_UL_AM_RLC = -1;
+static gint ett_nr_rrc_DL_AM_RLC = -1;
+static gint ett_nr_rrc_UL_UM_RLC = -1;
+static gint ett_nr_rrc_DL_UM_RLC = -1;
+static gint ett_nr_rrc_RLF_TimersAndConstants = -1;
+static gint ett_nr_rrc_SchedulingRequestConfig = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestToAddMod = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestId = -1;
+static gint ett_nr_rrc_SchedulingRequestToAddMod = -1;
+static gint ett_nr_rrc_SDAP_Config = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_0_maxNrofQFIs_OF_QFI = -1;
+static gint ett_nr_rrc_SecurityAlgorithmConfig = -1;
+static gint ett_nr_rrc_ServingCellConfigCommon = -1;
+static gint ett_nr_rrc_T_frequencyInfoDL = -1;
+static gint ett_nr_rrc_T_supplementaryUplink = -1;
+static gint ett_nr_rrc_T_ssb_PositionsInBurst = -1;
+static gint ett_nr_rrc_T_tdd_UL_DL_configurationCommon = -1;
+static gint ett_nr_rrc_ServingCellConfigDedicated = -1;
+static gint ett_nr_rrc_T_tdd_UL_DL_configurationDedicated = -1;
+static gint ett_nr_rrc_T_slotSpecificConfigurations = -1;
+static gint ett_nr_rrc_T_slotSpecificConfigurations_item = -1;
+static gint ett_nr_rrc_SPS_Config = -1;
+static gint ett_nr_rrc_T_uplink = -1;
+static gint ett_nr_rrc_T_rrcConfiguredUplinkGrant = -1;
+static gint ett_nr_rrc_T_setup_12 = -1;
+static gint ett_nr_rrc_SRS_Config = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSetId = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSet = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_ResourceId = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_Resource = -1;
+static gint ett_nr_rrc_SRS_ResourceSet = -1;
+static gint ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_ResourcesPerSet_OF_SRS_ResourceId = -1;
+static gint ett_nr_rrc_SRS_Resource = -1;
+static gint ett_nr_rrc_T_resourceType_01 = -1;
+static gint ett_nr_rrc_T_aperiodic_01 = -1;
+static gint ett_nr_rrc_T_semi_persistent = -1;
+static gint ett_nr_rrc_T_periodic_01 = -1;
+static gint ett_nr_rrc_T_periodicityAndOffset_02 = -1;
+static gint ett_nr_rrc_MeasGapConfig = -1;
+static gint ett_nr_rrc_MeasObjectEUTRA = -1;
+static gint ett_nr_rrc_MeasResultListEUTRA = -1;
+static gint ett_nr_rrc_PhysCellIdRange = -1;
+static gint ett_nr_rrc_RA_Resources = -1;
+static gint ett_nr_rrc_ReportConfigEUTRA = -1;
+static gint ett_nr_rrc_SchedulingRequestResource_Config = -1;
+
+/*--- End of included file: packet-nr-rrc-ett.c ---*/
+#line 44 "./asn1/nr-rrc/packet-nr-rrc-template.c"
+static gint ett_nr_rrc_UECapabilityInformation = -1;
+
+#if 0
+/* Forward declarations */
+static int dissect_UE_NR_Capability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_UE_MRDC_Capability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+
+typedef struct {
+ guint8 rat_type;
+} nr_rrc_private_data_t;
+
+/* Helper function to get or create a struct that will be actx->private_data */
+static nr_rrc_private_data_t* nr_rrc_get_private_data(asn1_ctx_t *actx)
+{
+ if (actx->private_data == NULL) {
+ actx->private_data = wmem_new0(wmem_packet_scope(), nr_rrc_private_data_t);
+ }
+ return (nr_rrc_private_data_t*)actx->private_data;
+}
+
+static guint8 private_data_get_rat_type(asn1_ctx_t *actx)
+{
+ nr_rrc_private_data_t *private_data = (nr_rrc_private_data_t*)nr_rrc_get_private_data(actx);
+ return private_data->rat_type;
+}
+
+static void private_data_set_rat_type(asn1_ctx_t *actx, guint8 rat_type)
+{
+ nr_rrc_private_data_t *private_data = (nr_rrc_private_data_t*)nr_rrc_get_private_data(actx);
+ private_data->rat_type = rat_type;
+}
+#endif
+
+
+/*--- Included file: packet-nr-rrc-fn.c ---*/
+#line 1 "./asn1/nr-rrc/packet-nr-rrc-fn.c"
+
+
+static int
+dissect_nr_rrc_INTEGER_1_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 7U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_halfFrameIndex_vals[] = {
+ { 0, "firstHalf" },
+ { 1, "secondHalf" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_halfFrameIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BIT_STRING_SIZE_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 10, 10, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_SubcarrierSpacing_vals[] = {
+ { 0, "kHz15" },
+ { 1, "kHz30" },
+ { 2, "kHz60" },
+ { 3, "kHz120" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_SubcarrierSpacing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 11U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_dmrs_TypeA_Position_vals[] = {
+ { 0, "pos2" },
+ { 1, "pos3" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_dmrs_TypeA_Position(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_cellBarred_vals[] = {
+ { 0, "barred" },
+ { 1, "notBarred" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_cellBarred(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_intraFreqReselection_vals[] = {
+ { 0, "allowed" },
+ { 1, "notAllowed" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_intraFreqReselection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BIT_STRING_SIZE_0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 0, 0, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t MIB_sequence[] = {
+ { &hf_nr_rrc_ssb_IndexExplicit, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_1_7 },
+ { &hf_nr_rrc_halfFrameIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_halfFrameIndex },
+ { &hf_nr_rrc_systemFrameNumber, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BIT_STRING_SIZE_10 },
+ { &hf_nr_rrc_subCarrierSpacingCommon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SubcarrierSpacing },
+ { &hf_nr_rrc_ssb_subcarrierOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_0_11 },
+ { &hf_nr_rrc_dmrs_TypeA_Position, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_dmrs_TypeA_Position },
+ { &hf_nr_rrc_pdcchConfigSIB1, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_0_255 },
+ { &hf_nr_rrc_cellBarred , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_cellBarred },
+ { &hf_nr_rrc_intraFreqReselection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_intraFreqReselection },
+ { &hf_nr_rrc_spare , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BIT_STRING_SIZE_0 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MIB(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MIB");
+
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MIB, MIB_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_messageClassExtension_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_messageClassExtension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_messageClassExtension, T_messageClassExtension_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_BCCH_BCH_MessageType_vals[] = {
+ { 0, "mib" },
+ { 1, "messageClassExtension" },
+ { 0, NULL }
+};
+
+static const per_choice_t BCCH_BCH_MessageType_choice[] = {
+ { 0, &hf_nr_rrc_mib , ASN1_NO_EXTENSIONS , dissect_nr_rrc_MIB },
+ { 1, &hf_nr_rrc_messageClassExtension, ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_messageClassExtension },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_BCCH_BCH_MessageType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_BCCH_BCH_MessageType, BCCH_BCH_MessageType_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t BCCH_BCH_Message_sequence[] = {
+ { &hf_nr_rrc_message , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BCCH_BCH_MessageType },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_BCCH_BCH_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ proto_item *ti;
+
+ col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "NR RRC");
+ col_clear(actx->pinfo->cinfo, COL_INFO);
+
+ ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA);
+ tree = proto_item_add_subtree(ti, ett_nr_rrc);
+
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_BCCH_BCH_Message, BCCH_BCH_Message_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_RRC_TransactionIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 3U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_SRB_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 3U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reestablishPDCP_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_reestablishPDCP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_discardTimer_vals[] = {
+ { 0, "ms10" },
+ { 1, "ms20" },
+ { 2, "ms30" },
+ { 3, "ms40" },
+ { 4, "ms50" },
+ { 5, "ms60" },
+ { 6, "ms75" },
+ { 7, "ms100" },
+ { 8, "ms150" },
+ { 9, "ms200" },
+ { 10, "ms250" },
+ { 11, "ms300" },
+ { 12, "ms500" },
+ { 13, "ms750" },
+ { 14, "ms1500" },
+ { 15, "infinity" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_discardTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 16, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_pdcp_SN_Size_UL_vals[] = {
+ { 0, "len12bits" },
+ { 1, "len18bits" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_pdcp_SN_Size_UL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_pdcp_SN_Size_DL_vals[] = {
+ { 0, "len12bits" },
+ { 1, "len18bits" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_pdcp_SN_Size_DL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_16383(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 16383U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_profiles_sequence[] = {
+ { &hf_nr_rrc_profile0x0001, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_profile0x0002, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_profile0x0003, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_profile0x0004, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_profile0x0006, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_profile0x0101, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_profile0x0102, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_profile0x0103, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_profile0x0104, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_profiles(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_profiles, T_profiles_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_profiles_01_sequence[] = {
+ { &hf_nr_rrc_profile0x0006, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_profiles_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_profiles_01, T_profiles_01_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_uplinkOnlyROHC_sequence[] = {
+ { &hf_nr_rrc_maxCID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_1_16383 },
+ { &hf_nr_rrc_profiles_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_profiles_01 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_uplinkOnlyROHC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_uplinkOnlyROHC, T_uplinkOnlyROHC_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_rohc_sequence[] = {
+ { &hf_nr_rrc_maxCID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_1_16383 },
+ { &hf_nr_rrc_profiles , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_profiles },
+ { &hf_nr_rrc_uplinkOnlyROHC, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_uplinkOnlyROHC },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_rohc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_rohc, T_rohc_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_headerCompression_vals[] = {
+ { 0, "notUsed" },
+ { 1, "rohc" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_headerCompression_choice[] = {
+ { 0, &hf_nr_rrc_notUsed , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_rohc , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_rohc },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_headerCompression(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_headerCompression, T_headerCompression_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_drb_sequence[] = {
+ { &hf_nr_rrc_discardTimer , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_discardTimer },
+ { &hf_nr_rrc_pdcp_SN_Size_UL, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_pdcp_SN_Size_UL },
+ { &hf_nr_rrc_pdcp_SN_Size_DL, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_pdcp_SN_Size_DL },
+ { &hf_nr_rrc_headerCompression, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_headerCompression },
+ { &hf_nr_rrc_integrityProtection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_statusReportRequired, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_drb(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_drb, T_drb_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_CellGroupId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxSCellGroups, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_LogicalChannelIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 32U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_primaryPath_sequence[] = {
+ { &hf_nr_rrc_cellGroup , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CellGroupId },
+ { &hf_nr_rrc_logicalChannel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_LogicalChannelIdentity },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_primaryPath(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_primaryPath, T_primaryPath_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_setup_03_vals[] = {
+ { 0, "b0" },
+ { 1, "b100" },
+ { 2, "b200" },
+ { 3, "b400" },
+ { 4, "b800" },
+ { 5, "b1600" },
+ { 6, "b3200" },
+ { 7, "b6400" },
+ { 8, "b12800" },
+ { 9, "b25600" },
+ { 10, "b51200" },
+ { 11, "b102400" },
+ { 12, "b204800" },
+ { 13, "b409600" },
+ { 14, "b819200" },
+ { 15, "b1228800" },
+ { 16, "b1638400" },
+ { 17, "b2457600" },
+ { 18, "b3276800" },
+ { 19, "b4096000" },
+ { 20, "b4915200" },
+ { 21, "b5734400" },
+ { 22, "b6553600" },
+ { 23, "infinity" },
+ { 24, "spare8" },
+ { 25, "spare7" },
+ { 26, "spare6" },
+ { 27, "spare5" },
+ { 28, "spare4" },
+ { 29, "spare3" },
+ { 30, "spare2" },
+ { 31, "spare1" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_setup_03_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_setup_03_vals);
+
+
+static int
+dissect_nr_rrc_T_setup_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 32, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_ul_DataSplitThreshold_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_ul_DataSplitThreshold_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_03 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_03 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_ul_DataSplitThreshold(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_ul_DataSplitThreshold, T_ul_DataSplitThreshold_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_moreThanOneRLC_sequence[] = {
+ { &hf_nr_rrc_primaryPath , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_primaryPath },
+ { &hf_nr_rrc_ul_DataSplitThreshold, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_ul_DataSplitThreshold },
+ { &hf_nr_rrc_ul_Duplication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_moreThanOneRLC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_moreThanOneRLC, T_moreThanOneRLC_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_t_Reordering_vals[] = {
+ { 0, "ms0" },
+ { 1, "ms5" },
+ { 2, "ms10" },
+ { 3, "ms15" },
+ { 4, "ms20" },
+ { 5, "ms30" },
+ { 6, "ms40" },
+ { 7, "ms60" },
+ { 8, "ms50" },
+ { 9, "ms80" },
+ { 10, "ms100" },
+ { 11, "ms120" },
+ { 12, "ms140" },
+ { 13, "ms160" },
+ { 14, "ms180" },
+ { 15, "ms200" },
+ { 16, "ms220" },
+ { 17, "ms240" },
+ { 18, "ms260" },
+ { 19, "ms280" },
+ { 20, "ms300" },
+ { 21, "ms500" },
+ { 22, "ms750" },
+ { 23, "ms1000" },
+ { 24, "ms1250" },
+ { 25, "ms1500" },
+ { 26, "ms1750" },
+ { 27, "ms2000" },
+ { 28, "ms2250" },
+ { 29, "ms2500" },
+ { 30, "ms2750" },
+ { 31, "ms3000" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_t_Reordering_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_t_Reordering_vals);
+
+
+static int
+dissect_nr_rrc_T_t_Reordering(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 32, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t PDCP_Config_sequence[] = {
+ { &hf_nr_rrc_drb , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_drb },
+ { &hf_nr_rrc_moreThanOneRLC, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_moreThanOneRLC },
+ { &hf_nr_rrc_t_Reordering , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_t_Reordering },
+ { &hf_nr_rrc_outOfOrderDelivery, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_PDCP_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_PDCP_Config, PDCP_Config_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SRB_ToAddMod_sequence[] = {
+ { &hf_nr_rrc_srb_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SRB_Identity },
+ { &hf_nr_rrc_reestablishPDCP, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_reestablishPDCP },
+ { &hf_nr_rrc_pdcp_Config , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_PDCP_Config },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SRB_ToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SRB_ToAddMod, SRB_ToAddMod_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SRB_ToAddModList_sequence_of[1] = {
+ { &hf_nr_rrc_SRB_ToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SRB_ToAddMod },
+};
+
+static int
+dissect_nr_rrc_SRB_ToAddModList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SRB_ToAddModList, SRB_ToAddModList_sequence_of,
+ 1, 2, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 3U, 3U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 15U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_PDUsessionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_sdap_Header_DL_vals[] = {
+ { 0, "present" },
+ { 1, "absent" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_sdap_Header_DL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_sdap_Header_UL_vals[] = {
+ { 0, "present" },
+ { 1, "absent" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_sdap_Header_UL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_QFI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxQFI, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_0_maxNrofQFIs_OF_QFI_sequence_of[1] = {
+ { &hf_nr_rrc_mappedQoSflows_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_QFI },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_0_maxNrofQFIs_OF_QFI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_0_maxNrofQFIs_OF_QFI, SEQUENCE_SIZE_0_maxNrofQFIs_OF_QFI_sequence_of,
+ 0, maxNrofQFIs, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SDAP_Config_sequence[] = {
+ { &hf_nr_rrc_pduSession , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_PDUsessionID },
+ { &hf_nr_rrc_sdap_Header_DL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_sdap_Header_DL },
+ { &hf_nr_rrc_sdap_Header_UL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_sdap_Header_UL },
+ { &hf_nr_rrc_defaultDRB , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_reflectiveQoS, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_mappedQoSflows, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_0_maxNrofQFIs_OF_QFI },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SDAP_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SDAP_Config, SDAP_Config_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_cnAssociation_vals[] = {
+ { 0, "eps-BearerIdentity" },
+ { 1, "sdap-Config" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_cnAssociation_choice[] = {
+ { 0, &hf_nr_rrc_eps_BearerIdentity, ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_15 },
+ { 1, &hf_nr_rrc_sdap_Config , ASN1_NO_EXTENSIONS , dissect_nr_rrc_SDAP_Config },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_cnAssociation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_cnAssociation, T_cnAssociation_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_DRB_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 4U, 32U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reestablishPDCP_01_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_reestablishPDCP_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_recoverPDCP_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_recoverPDCP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t DRB_ToAddMod_sequence[] = {
+ { &hf_nr_rrc_cnAssociation, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_cnAssociation },
+ { &hf_nr_rrc_drb_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_DRB_Identity },
+ { &hf_nr_rrc_reestablishPDCP_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_reestablishPDCP_01 },
+ { &hf_nr_rrc_recoverPDCP , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_recoverPDCP },
+ { &hf_nr_rrc_pdcp_Config , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_PDCP_Config },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_DRB_ToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_DRB_ToAddMod, DRB_ToAddMod_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t DRB_ToAddModList_sequence_of[1] = {
+ { &hf_nr_rrc_DRB_ToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_DRB_ToAddMod },
+};
+
+static int
+dissect_nr_rrc_DRB_ToAddModList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_DRB_ToAddModList, DRB_ToAddModList_sequence_of,
+ 1, maxDRB, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t DRB_ToReleaseList_sequence_of[1] = {
+ { &hf_nr_rrc_DRB_ToReleaseList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_DRB_Identity },
+};
+
+static int
+dissect_nr_rrc_DRB_ToReleaseList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_DRB_ToReleaseList, DRB_ToReleaseList_sequence_of,
+ 1, maxDRB, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_CipheringAlgorithm_vals[] = {
+ { 0, "nea0" },
+ { 1, "nea1" },
+ { 2, "nea2" },
+ { 3, "nea3" },
+ { 4, "spare4" },
+ { 5, "spare3" },
+ { 6, "spare2" },
+ { 7, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_CipheringAlgorithm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, TRUE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_IntegrityProtAlgorithm_vals[] = {
+ { 0, "nia0" },
+ { 1, "nia1" },
+ { 2, "nia2" },
+ { 3, "nia3" },
+ { 4, "spare4" },
+ { 5, "spare3" },
+ { 6, "spare2" },
+ { 7, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_IntegrityProtAlgorithm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, TRUE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SecurityAlgorithmConfig_sequence[] = {
+ { &hf_nr_rrc_cipheringAlgorithm, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CipheringAlgorithm },
+ { &hf_nr_rrc_integrityProtAlgorithm, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_IntegrityProtAlgorithm },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SecurityAlgorithmConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SecurityAlgorithmConfig, SecurityAlgorithmConfig_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_keyToUse_vals[] = {
+ { 0, "keNB" },
+ { 1, "s-KgNB" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_keyToUse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SecurityConfig_sequence[] = {
+ { &hf_nr_rrc_securityAlgorithmConfig, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_SecurityAlgorithmConfig },
+ { &hf_nr_rrc_keyToUse , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_keyToUse },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SecurityConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SecurityConfig, SecurityConfig_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RadioBearerConfig_sequence[] = {
+ { &hf_nr_rrc_srb_ToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SRB_ToAddModList },
+ { &hf_nr_rrc_srb_ToReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_3 },
+ { &hf_nr_rrc_drb_ToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_DRB_ToAddModList },
+ { &hf_nr_rrc_drb_ToReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_DRB_ToReleaseList },
+ { &hf_nr_rrc_securityConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SecurityConfig },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_RadioBearerConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_RadioBearerConfig, RadioBearerConfig_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 32U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reestablishRLC_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_reestablishRLC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_SN_FieldLength_AM_vals[] = {
+ { 0, "size12" },
+ { 1, "size18" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_SN_FieldLength_AM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_PollRetransmit_vals[] = {
+ { 0, "ms5" },
+ { 1, "ms10" },
+ { 2, "ms15" },
+ { 3, "ms20" },
+ { 4, "ms25" },
+ { 5, "ms30" },
+ { 6, "ms35" },
+ { 7, "ms40" },
+ { 8, "ms45" },
+ { 9, "ms50" },
+ { 10, "ms55" },
+ { 11, "ms60" },
+ { 12, "ms65" },
+ { 13, "ms70" },
+ { 14, "ms75" },
+ { 15, "ms80" },
+ { 16, "ms85" },
+ { 17, "ms90" },
+ { 18, "ms95" },
+ { 19, "ms100" },
+ { 20, "ms105" },
+ { 21, "ms110" },
+ { 22, "ms115" },
+ { 23, "ms120" },
+ { 24, "ms125" },
+ { 25, "ms130" },
+ { 26, "ms135" },
+ { 27, "ms140" },
+ { 28, "ms145" },
+ { 29, "ms150" },
+ { 30, "ms155" },
+ { 31, "ms160" },
+ { 32, "ms165" },
+ { 33, "ms170" },
+ { 34, "ms175" },
+ { 35, "ms180" },
+ { 36, "ms185" },
+ { 37, "ms190" },
+ { 38, "ms195" },
+ { 39, "ms200" },
+ { 40, "ms205" },
+ { 41, "ms210" },
+ { 42, "ms215" },
+ { 43, "ms220" },
+ { 44, "ms225" },
+ { 45, "ms230" },
+ { 46, "ms235" },
+ { 47, "ms240" },
+ { 48, "ms245" },
+ { 49, "ms250" },
+ { 50, "ms300" },
+ { 51, "ms350" },
+ { 52, "ms400" },
+ { 53, "ms450" },
+ { 54, "ms500" },
+ { 55, "ms800" },
+ { 56, "ms1000" },
+ { 57, "ms2000" },
+ { 58, "ms4000" },
+ { 59, "spare5" },
+ { 60, "spare4" },
+ { 61, "spare3" },
+ { 62, "spare2" },
+ { 63, "spare1" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_PollRetransmit_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_PollRetransmit_vals);
+
+
+static int
+dissect_nr_rrc_T_PollRetransmit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 64, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_PollPDU_vals[] = {
+ { 0, "p4" },
+ { 1, "p8" },
+ { 2, "p16" },
+ { 3, "p32" },
+ { 4, "p64" },
+ { 5, "p128" },
+ { 6, "p256" },
+ { 7, "p512" },
+ { 8, "p1024" },
+ { 9, "p2048" },
+ { 10, "p4096" },
+ { 11, "p6144" },
+ { 12, "p8192" },
+ { 13, "p12288" },
+ { 14, "p16384" },
+ { 15, "p20480" },
+ { 16, "p24576" },
+ { 17, "p28672" },
+ { 18, "p32768" },
+ { 19, "p40960" },
+ { 20, "p49152" },
+ { 21, "p57344" },
+ { 22, "p65536" },
+ { 23, "infinity" },
+ { 24, "spare8" },
+ { 25, "spare7" },
+ { 26, "spare6" },
+ { 27, "spare5" },
+ { 28, "spare4" },
+ { 29, "spare3" },
+ { 30, "spare2" },
+ { 31, "spare1" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_PollPDU_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_PollPDU_vals);
+
+
+static int
+dissect_nr_rrc_PollPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 32, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_PollByte_vals[] = {
+ { 0, "kB1" },
+ { 1, "kB2" },
+ { 2, "kB5" },
+ { 3, "kB8" },
+ { 4, "kB10" },
+ { 5, "kB15" },
+ { 6, "kB25" },
+ { 7, "kB50" },
+ { 8, "kB75" },
+ { 9, "kB100" },
+ { 10, "kB125" },
+ { 11, "kB250" },
+ { 12, "kB375" },
+ { 13, "kB500" },
+ { 14, "kB750" },
+ { 15, "kB1000" },
+ { 16, "kB1250" },
+ { 17, "kB1500" },
+ { 18, "kB2000" },
+ { 19, "kB3000" },
+ { 20, "kB4000" },
+ { 21, "kB4500" },
+ { 22, "kB5000" },
+ { 23, "kB5500" },
+ { 24, "kB6000" },
+ { 25, "kB6500" },
+ { 26, "kB7000" },
+ { 27, "kB7500" },
+ { 28, "mB8" },
+ { 29, "mB9" },
+ { 30, "mB10" },
+ { 31, "mB11" },
+ { 32, "mB12" },
+ { 33, "mB13" },
+ { 34, "mB14" },
+ { 35, "mB15" },
+ { 36, "mB16" },
+ { 37, "mB17" },
+ { 38, "mB18" },
+ { 39, "mB20" },
+ { 40, "mB25" },
+ { 41, "mB30" },
+ { 42, "mB40" },
+ { 43, "infinity" },
+ { 44, "spare20" },
+ { 45, "spare19" },
+ { 46, "spare18" },
+ { 47, "spare17" },
+ { 48, "spare16" },
+ { 49, "spare15" },
+ { 50, "spare14" },
+ { 51, "spare13" },
+ { 52, "spare12" },
+ { 53, "spare11" },
+ { 54, "spare10" },
+ { 55, "spare9" },
+ { 56, "spare8" },
+ { 57, "spare7" },
+ { 58, "spare6" },
+ { 59, "spare5" },
+ { 60, "spare4" },
+ { 61, "spare3" },
+ { 62, "spare2" },
+ { 63, "spare1" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_PollByte_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_PollByte_vals);
+
+
+static int
+dissect_nr_rrc_PollByte(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 64, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_maxRetxThreshold_vals[] = {
+ { 0, "t1" },
+ { 1, "t2" },
+ { 2, "t3" },
+ { 3, "t4" },
+ { 4, "t6" },
+ { 5, "t8" },
+ { 6, "t16" },
+ { 7, "t32" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_maxRetxThreshold(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UL_AM_RLC_sequence[] = {
+ { &hf_nr_rrc_sn_FieldLength, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SN_FieldLength_AM },
+ { &hf_nr_rrc_t_PollRetransmit, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_PollRetransmit },
+ { &hf_nr_rrc_pollPDU , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_PollPDU },
+ { &hf_nr_rrc_pollByte , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_PollByte },
+ { &hf_nr_rrc_maxRetxThreshold, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_maxRetxThreshold },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_UL_AM_RLC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_UL_AM_RLC, UL_AM_RLC_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_Reassembly_vals[] = {
+ { 0, "ms0" },
+ { 1, "ms5" },
+ { 2, "ms10" },
+ { 3, "ms15" },
+ { 4, "ms20" },
+ { 5, "ms25" },
+ { 6, "ms30" },
+ { 7, "ms35" },
+ { 8, "ms40" },
+ { 9, "ms45" },
+ { 10, "ms50" },
+ { 11, "ms55" },
+ { 12, "ms60" },
+ { 13, "ms65" },
+ { 14, "ms70" },
+ { 15, "ms75" },
+ { 16, "ms80" },
+ { 17, "ms85" },
+ { 18, "ms90" },
+ { 19, "ms95" },
+ { 20, "ms100" },
+ { 21, "ms110" },
+ { 22, "ms120" },
+ { 23, "ms130" },
+ { 24, "ms140" },
+ { 25, "ms150" },
+ { 26, "ms160" },
+ { 27, "ms170" },
+ { 28, "ms180" },
+ { 29, "ms190" },
+ { 30, "ms200" },
+ { 31, "spare1" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_Reassembly_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_Reassembly_vals);
+
+
+static int
+dissect_nr_rrc_T_Reassembly(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 32, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_StatusProhibit_vals[] = {
+ { 0, "ms0" },
+ { 1, "ms5" },
+ { 2, "ms10" },
+ { 3, "ms15" },
+ { 4, "ms20" },
+ { 5, "ms25" },
+ { 6, "ms30" },
+ { 7, "ms35" },
+ { 8, "ms40" },
+ { 9, "ms45" },
+ { 10, "ms50" },
+ { 11, "ms55" },
+ { 12, "ms60" },
+ { 13, "ms65" },
+ { 14, "ms70" },
+ { 15, "ms75" },
+ { 16, "ms80" },
+ { 17, "ms85" },
+ { 18, "ms90" },
+ { 19, "ms95" },
+ { 20, "ms100" },
+ { 21, "ms105" },
+ { 22, "ms110" },
+ { 23, "ms115" },
+ { 24, "ms120" },
+ { 25, "ms125" },
+ { 26, "ms130" },
+ { 27, "ms135" },
+ { 28, "ms140" },
+ { 29, "ms145" },
+ { 30, "ms150" },
+ { 31, "ms155" },
+ { 32, "ms160" },
+ { 33, "ms165" },
+ { 34, "ms170" },
+ { 35, "ms175" },
+ { 36, "ms180" },
+ { 37, "ms185" },
+ { 38, "ms190" },
+ { 39, "ms195" },
+ { 40, "ms200" },
+ { 41, "ms205" },
+ { 42, "ms210" },
+ { 43, "ms215" },
+ { 44, "ms220" },
+ { 45, "ms225" },
+ { 46, "ms230" },
+ { 47, "ms235" },
+ { 48, "ms240" },
+ { 49, "ms245" },
+ { 50, "ms250" },
+ { 51, "ms300" },
+ { 52, "ms350" },
+ { 53, "ms400" },
+ { 54, "ms450" },
+ { 55, "ms500" },
+ { 56, "ms800" },
+ { 57, "ms1000" },
+ { 58, "ms1200" },
+ { 59, "ms1600" },
+ { 60, "ms2000" },
+ { 61, "ms2400" },
+ { 62, "spare2" },
+ { 63, "spare1" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_StatusProhibit_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_StatusProhibit_vals);
+
+
+static int
+dissect_nr_rrc_T_StatusProhibit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 64, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t DL_AM_RLC_sequence[] = {
+ { &hf_nr_rrc_sn_FieldLength, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SN_FieldLength_AM },
+ { &hf_nr_rrc_t_Reassembly , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_Reassembly },
+ { &hf_nr_rrc_t_StatusProhibit, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_StatusProhibit },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_DL_AM_RLC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_DL_AM_RLC, DL_AM_RLC_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_am_sequence[] = {
+ { &hf_nr_rrc_ul_AM_RLC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_UL_AM_RLC },
+ { &hf_nr_rrc_dl_AM_RLC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_DL_AM_RLC },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_am(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_am, T_am_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_SN_FieldLength_UM_vals[] = {
+ { 0, "size6" },
+ { 1, "size12" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_SN_FieldLength_UM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UL_UM_RLC_sequence[] = {
+ { &hf_nr_rrc_sn_FieldLength_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SN_FieldLength_UM },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_UL_UM_RLC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_UL_UM_RLC, UL_UM_RLC_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t DL_UM_RLC_sequence[] = {
+ { &hf_nr_rrc_sn_FieldLength_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SN_FieldLength_UM },
+ { &hf_nr_rrc_t_Reassembly , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_Reassembly },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_DL_UM_RLC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_DL_UM_RLC, DL_UM_RLC_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_um_Bi_Directional_sequence[] = {
+ { &hf_nr_rrc_ul_UM_RLC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_UL_UM_RLC },
+ { &hf_nr_rrc_dl_UM_RLC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_DL_UM_RLC },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_um_Bi_Directional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_um_Bi_Directional, T_um_Bi_Directional_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_um_Uni_Directional_UL_sequence[] = {
+ { &hf_nr_rrc_ul_UM_RLC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_UL_UM_RLC },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_um_Uni_Directional_UL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_um_Uni_Directional_UL, T_um_Uni_Directional_UL_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_um_Uni_Directional_DL_sequence[] = {
+ { &hf_nr_rrc_dl_UM_RLC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_DL_UM_RLC },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_um_Uni_Directional_DL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_um_Uni_Directional_DL, T_um_Uni_Directional_DL_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_RLC_Config_vals[] = {
+ { 0, "am" },
+ { 1, "um-Bi-Directional" },
+ { 2, "um-Uni-Directional-UL" },
+ { 3, "um-Uni-Directional-DL" },
+ { 0, NULL }
+};
+
+static const per_choice_t RLC_Config_choice[] = {
+ { 0, &hf_nr_rrc_am , ASN1_EXTENSION_ROOT , dissect_nr_rrc_T_am },
+ { 1, &hf_nr_rrc_um_Bi_Directional, ASN1_EXTENSION_ROOT , dissect_nr_rrc_T_um_Bi_Directional },
+ { 2, &hf_nr_rrc_um_Uni_Directional_UL, ASN1_EXTENSION_ROOT , dissect_nr_rrc_T_um_Uni_Directional_UL },
+ { 3, &hf_nr_rrc_um_Uni_Directional_DL, ASN1_EXTENSION_ROOT , dissect_nr_rrc_T_um_Uni_Directional_DL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_RLC_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_RLC_Config, RLC_Config_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 16U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_prioritisedBitRate_vals[] = {
+ { 0, "kBps0" },
+ { 1, "kBps8" },
+ { 2, "kBps16" },
+ { 3, "kBps32" },
+ { 4, "kBps64" },
+ { 5, "kBps128" },
+ { 6, "kBps256" },
+ { 7, "kBps512" },
+ { 8, "kBps1024" },
+ { 9, "kBps2048" },
+ { 10, "kBps4096" },
+ { 11, "kBps8192" },
+ { 12, "kBps16384" },
+ { 13, "kBps32768" },
+ { 14, "kBps65536" },
+ { 15, "infinity" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_prioritisedBitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 16, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_bucketSizeDuration_vals[] = {
+ { 0, "ms50" },
+ { 1, "ms100" },
+ { 2, "ms150" },
+ { 3, "ms300" },
+ { 4, "ms500" },
+ { 5, "ms1000" },
+ { 6, "spare2" },
+ { 7, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_bucketSizeDuration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_maxLCid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxLCid, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_ul_SpecificParameters_sequence[] = {
+ { &hf_nr_rrc_priority , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_1_16 },
+ { &hf_nr_rrc_prioritisedBitRate, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_prioritisedBitRate },
+ { &hf_nr_rrc_bucketSizeDuration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_bucketSizeDuration },
+ { &hf_nr_rrc_allowedSubCarrierSpacing, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SubcarrierSpacing },
+ { &hf_nr_rrc_allowedTiming, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_logicalChannelGroup, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_maxLCid },
+ { &hf_nr_rrc_logicalChannelSR_Mask, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_logicalChannelSR_DelayTimerApplied, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_ul_SpecificParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_ul_SpecificParameters, T_ul_SpecificParameters_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LogicalChannelConfig_sequence[] = {
+ { &hf_nr_rrc_ul_SpecificParameters, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_ul_SpecificParameters },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_LogicalChannelConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_LogicalChannelConfig, LogicalChannelConfig_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LCH_Config_sequence[] = {
+ { &hf_nr_rrc_logicalChannelIdentity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_LogicalChannelIdentity },
+ { &hf_nr_rrc_servedRadioBearer, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_1_32 },
+ { &hf_nr_rrc_reestablishRLC, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_reestablishRLC },
+ { &hf_nr_rrc_rlc_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RLC_Config },
+ { &hf_nr_rrc_mac_LogicalChannelConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_LogicalChannelConfig },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_LCH_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_LCH_Config, LCH_Config_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxLCH_OF_LCH_Config_sequence_of[1] = {
+ { &hf_nr_rrc_rlc_BearerToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_LCH_Config },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxLCH_OF_LCH_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxLCH_OF_LCH_Config, SEQUENCE_SIZE_1_maxLCH_OF_LCH_Config_sequence_of,
+ 1, maxLCH, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxLCH_OF_LogicalChannelIdentity_sequence_of[1] = {
+ { &hf_nr_rrc_rlc_BearerToReleaseList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_LogicalChannelIdentity },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxLCH_OF_LogicalChannelIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxLCH_OF_LogicalChannelIdentity, SEQUENCE_SIZE_1_maxLCH_OF_LogicalChannelIdentity_sequence_of,
+ 1, maxLCH, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_drx_onDurationTimer_vals[] = {
+ { 0, "ms1-32" },
+ { 1, "ms2-32" },
+ { 2, "ms3-32" },
+ { 3, "ms4-32" },
+ { 4, "ms5-32" },
+ { 5, "ms6-32" },
+ { 6, "ms7-32" },
+ { 7, "ms8-32" },
+ { 8, "ms9-32" },
+ { 9, "ms10-32" },
+ { 10, "ms11-32" },
+ { 11, "ms12-32" },
+ { 12, "ms13-32" },
+ { 13, "ms14-32" },
+ { 14, "ms15-32" },
+ { 15, "ms16-32" },
+ { 16, "ms17-32" },
+ { 17, "ms18-32" },
+ { 18, "ms19-32" },
+ { 19, "ms-20-32" },
+ { 20, "ms21-32" },
+ { 21, "ms22-32" },
+ { 22, "ms23-32" },
+ { 23, "ms24-32" },
+ { 24, "ms25-32" },
+ { 25, "ms26-32" },
+ { 26, "ms27-32" },
+ { 27, "ms28-32" },
+ { 28, "ms29-32" },
+ { 29, "ms30-32" },
+ { 30, "ms31-32" },
+ { 31, "ms1" },
+ { 32, "ms2" },
+ { 33, "ms3" },
+ { 34, "ms4" },
+ { 35, "ms5" },
+ { 36, "ms6" },
+ { 37, "ms8" },
+ { 38, "ms10" },
+ { 39, "ms20" },
+ { 40, "ms30" },
+ { 41, "ms40" },
+ { 42, "ms50" },
+ { 43, "ms60" },
+ { 44, "ms80" },
+ { 45, "ms100" },
+ { 46, "ms200" },
+ { 47, "ms300" },
+ { 48, "ms400" },
+ { 49, "ms500" },
+ { 50, "ms600" },
+ { 51, "ms800" },
+ { 52, "ms1000" },
+ { 53, "ms1200" },
+ { 54, "ms1600" },
+ { 55, "spare9" },
+ { 56, "spare8" },
+ { 57, "spare7" },
+ { 58, "spare6" },
+ { 59, "spare5" },
+ { 60, "spare4" },
+ { 61, "spare3" },
+ { 62, "spare2" },
+ { 63, "spare1" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_drx_onDurationTimer_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_drx_onDurationTimer_vals);
+
+
+static int
+dissect_nr_rrc_T_drx_onDurationTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 64, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_drx_InactivityTimer_vals[] = {
+ { 0, "ms0" },
+ { 1, "ms1" },
+ { 2, "ms2" },
+ { 3, "ms3" },
+ { 4, "ms4" },
+ { 5, "ms5" },
+ { 6, "ms6" },
+ { 7, "ms8" },
+ { 8, "ms10" },
+ { 9, "ms20" },
+ { 10, "ms30" },
+ { 11, "ms40" },
+ { 12, "ms50" },
+ { 13, "ms60" },
+ { 14, "ms80" },
+ { 15, "ms100" },
+ { 16, "ms200" },
+ { 17, "ms300" },
+ { 18, "ms500" },
+ { 19, "ms750" },
+ { 20, "ms1280" },
+ { 21, "ms1920" },
+ { 22, "ms2560" },
+ { 23, "spare9" },
+ { 24, "spare8" },
+ { 25, "spare7" },
+ { 26, "spare6" },
+ { 27, "spare5" },
+ { 28, "spare4" },
+ { 29, "spare3" },
+ { 30, "spare2" },
+ { 31, "spare1" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_drx_InactivityTimer_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_drx_InactivityTimer_vals);
+
+
+static int
+dissect_nr_rrc_T_drx_InactivityTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 32, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_56(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 56U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_drx_RetransmissionTimerDL_vals[] = {
+ { 0, "sl0" },
+ { 1, "sl1" },
+ { 2, "sl2" },
+ { 3, "sl4" },
+ { 4, "sl6" },
+ { 5, "sl8" },
+ { 6, "sl16" },
+ { 7, "sl24" },
+ { 8, "sl33" },
+ { 9, "sl40" },
+ { 10, "sl64" },
+ { 11, "sl80" },
+ { 12, "sl96" },
+ { 13, "sl112" },
+ { 14, "sl128" },
+ { 15, "spare15" },
+ { 16, "spare14" },
+ { 17, "spare13" },
+ { 18, "spare12" },
+ { 19, "spare11" },
+ { 20, "spare10" },
+ { 21, "spare9" },
+ { 22, "spare8" },
+ { 23, "spare7" },
+ { 24, "spare6" },
+ { 25, "spare5" },
+ { 26, "spare4" },
+ { 27, "spare3" },
+ { 28, "spare2" },
+ { 29, "spare1" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_drx_RetransmissionTimerDL_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_drx_RetransmissionTimerDL_vals);
+
+
+static int
+dissect_nr_rrc_T_drx_RetransmissionTimerDL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 30, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_drx_RetransmissionTimerUL_vals[] = {
+ { 0, "sl0" },
+ { 1, "sl1" },
+ { 2, "sl2" },
+ { 3, "sl4" },
+ { 4, "sl6" },
+ { 5, "sl8" },
+ { 6, "sl16" },
+ { 7, "sl24" },
+ { 8, "sl33" },
+ { 9, "sl40" },
+ { 10, "sl64" },
+ { 11, "sl80" },
+ { 12, "sl96" },
+ { 13, "sl112" },
+ { 14, "sl1128" },
+ { 15, "u160sl160" },
+ { 16, "u320sl320" },
+ { 17, "spare15" },
+ { 18, "spare14" },
+ { 19, "spare13" },
+ { 20, "spare12" },
+ { 21, "spare11" },
+ { 22, "spare10" },
+ { 23, "spare9" },
+ { 24, "spare8" },
+ { 25, "spare7" },
+ { 26, "spare6" },
+ { 27, "spare5" },
+ { 28, "spare4" },
+ { 29, "spare3" },
+ { 30, "spare2" },
+ { 31, "spare1" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_drx_RetransmissionTimerUL_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_drx_RetransmissionTimerUL_vals);
+
+
+static int
+dissect_nr_rrc_T_drx_RetransmissionTimerUL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 32, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 9U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 19U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 31U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_39(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 39U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 59U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 63U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_69(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 69U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_79(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 79U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 127U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_159(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 159U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_319(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 319U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_511(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 511U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_639(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 639U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_1023(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 1023U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_1279(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 1279U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 2047U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_2559(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 2559U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_5119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 5119U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_10239(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 10239U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_drx_LongCycleStartOffset_vals[] = {
+ { 0, "ms10" },
+ { 1, "ms20" },
+ { 2, "ms32" },
+ { 3, "ms40" },
+ { 4, "ms60" },
+ { 5, "ms64" },
+ { 6, "ms70" },
+ { 7, "ms80" },
+ { 8, "ms128" },
+ { 9, "ms160" },
+ { 10, "ms256" },
+ { 11, "ms320" },
+ { 12, "ms512" },
+ { 13, "ms640" },
+ { 14, "ms1024" },
+ { 15, "ms1280" },
+ { 16, "ms2048" },
+ { 17, "ms2560" },
+ { 18, "ms5120" },
+ { 19, "ms10240" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_drx_LongCycleStartOffset_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_drx_LongCycleStartOffset_vals);
+
+static const per_choice_t T_drx_LongCycleStartOffset_choice[] = {
+ { 0, &hf_nr_rrc_ms10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_9 },
+ { 1, &hf_nr_rrc_ms20 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_19 },
+ { 2, &hf_nr_rrc_ms32 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_31 },
+ { 3, &hf_nr_rrc_ms40 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_39 },
+ { 4, &hf_nr_rrc_ms60 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_59 },
+ { 5, &hf_nr_rrc_ms64 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_63 },
+ { 6, &hf_nr_rrc_ms70 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_69 },
+ { 7, &hf_nr_rrc_ms80 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_79 },
+ { 8, &hf_nr_rrc_ms128 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_127 },
+ { 9, &hf_nr_rrc_ms160 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_159 },
+ { 10, &hf_nr_rrc_ms256 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_255 },
+ { 11, &hf_nr_rrc_ms320 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_319 },
+ { 12, &hf_nr_rrc_ms512 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_511 },
+ { 13, &hf_nr_rrc_ms640 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_639 },
+ { 14, &hf_nr_rrc_ms1024 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_1023 },
+ { 15, &hf_nr_rrc_ms1280 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_1279 },
+ { 16, &hf_nr_rrc_ms2048 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_2047 },
+ { 17, &hf_nr_rrc_ms2560 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_2559 },
+ { 18, &hf_nr_rrc_ms5120 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_5119 },
+ { 19, &hf_nr_rrc_ms10240 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_10239 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_drx_LongCycleStartOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_drx_LongCycleStartOffset, T_drx_LongCycleStartOffset_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_drx_ShortCycle_vals[] = {
+ { 0, "ms2" },
+ { 1, "ms3" },
+ { 2, "ms4" },
+ { 3, "ms5" },
+ { 4, "ms6" },
+ { 5, "ms7" },
+ { 6, "ms8" },
+ { 7, "ms10" },
+ { 8, "ms14" },
+ { 9, "ms16" },
+ { 10, "ms20" },
+ { 11, "ms30" },
+ { 12, "ms32" },
+ { 13, "ms35" },
+ { 14, "ms40" },
+ { 15, "ms64" },
+ { 16, "ms80" },
+ { 17, "ms128" },
+ { 18, "ms160" },
+ { 19, "ms256" },
+ { 20, "ms320" },
+ { 21, "ms512" },
+ { 22, "ms640" },
+ { 23, "spare9" },
+ { 24, "spare8" },
+ { 25, "spare7" },
+ { 26, "spare6" },
+ { 27, "spare5" },
+ { 28, "spare4" },
+ { 29, "spare3" },
+ { 30, "spare2" },
+ { 31, "spare1" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_drx_ShortCycle_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_drx_ShortCycle_vals);
+
+
+static int
+dissect_nr_rrc_T_drx_ShortCycle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 32, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_shortDRX_sequence[] = {
+ { &hf_nr_rrc_drx_ShortCycle, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_drx_ShortCycle },
+ { &hf_nr_rrc_drx_ShortCycleTimer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_1_16 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_shortDRX(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_shortDRX, T_shortDRX_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_drx_SlotOffset_vals[] = {
+ { 0, "ms0" },
+ { 1, "ms1-32" },
+ { 2, "ms2-32" },
+ { 3, "ms3-32" },
+ { 4, "ms4-32" },
+ { 5, "ms5-32" },
+ { 6, "ms6-32" },
+ { 7, "ms7-32" },
+ { 8, "ms8-32" },
+ { 9, "ms9-32" },
+ { 10, "ms10-32" },
+ { 11, "ms11-32" },
+ { 12, "ms12-32" },
+ { 13, "ms13-32" },
+ { 14, "ms14-32" },
+ { 15, "ms15-32" },
+ { 16, "ms16-32" },
+ { 17, "ms17-32" },
+ { 18, "ms18-32" },
+ { 19, "ms19-32" },
+ { 20, "ms-20-32" },
+ { 21, "ms21-32" },
+ { 22, "ms22-32" },
+ { 23, "ms23-32" },
+ { 24, "ms24-32" },
+ { 25, "ms25-32" },
+ { 26, "ms26-32" },
+ { 27, "ms27-32" },
+ { 28, "ms28-32" },
+ { 29, "ms29-32" },
+ { 30, "ms30-32" },
+ { 31, "ms31-32" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_drx_SlotOffset_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_drx_SlotOffset_vals);
+
+
+static int
+dissect_nr_rrc_T_drx_SlotOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 32, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_setup_sequence[] = {
+ { &hf_nr_rrc_drx_onDurationTimer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_drx_onDurationTimer },
+ { &hf_nr_rrc_drx_InactivityTimer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_drx_InactivityTimer },
+ { &hf_nr_rrc_drx_HARQ_RTT_TimerDL, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_0_56 },
+ { &hf_nr_rrc_drx_HARQ_RTT_TimerUL, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_0_56 },
+ { &hf_nr_rrc_drx_RetransmissionTimerDL, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_drx_RetransmissionTimerDL },
+ { &hf_nr_rrc_drx_RetransmissionTimerUL, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_drx_RetransmissionTimerUL },
+ { &hf_nr_rrc_drx_LongCycleStartOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_drx_LongCycleStartOffset },
+ { &hf_nr_rrc_shortDRX , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_shortDRX },
+ { &hf_nr_rrc_drx_SlotOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_drx_SlotOffset },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup, T_setup_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_DRX_Config_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t DRX_Config_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_DRX_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_DRX_Config, DRX_Config_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_SchedulingRequestId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_sr_prohibitTimer_vals[] = {
+ { 0, "ms1" },
+ { 1, "ms2" },
+ { 2, "ms4" },
+ { 3, "ms8" },
+ { 4, "ms16" },
+ { 5, "ms32" },
+ { 6, "ms64" },
+ { 7, "ms128" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_sr_prohibitTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_sr_TransMax_vals[] = {
+ { 0, "n4" },
+ { 1, "n8" },
+ { 2, "n16" },
+ { 3, "n32" },
+ { 4, "n64" },
+ { 5, "spare3" },
+ { 6, "spare2" },
+ { 7, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_sr_TransMax(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SchedulingRequestToAddMod_sequence[] = {
+ { &hf_nr_rrc_schedulingRequestID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SchedulingRequestId },
+ { &hf_nr_rrc_sr_prohibitTimer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_sr_prohibitTimer },
+ { &hf_nr_rrc_sr_TransMax , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_sr_TransMax },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SchedulingRequestToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SchedulingRequestToAddMod, SchedulingRequestToAddMod_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestToAddMod_sequence_of[1] = {
+ { &hf_nr_rrc_schedulingRequestToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SchedulingRequestToAddMod },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestToAddMod, SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestToAddMod_sequence_of,
+ 1, maxNrofSR_ConfigPerCellGroup, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestId_sequence_of[1] = {
+ { &hf_nr_rrc_schedulingRequestToReleaseList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SchedulingRequestId },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestId, SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestId_sequence_of,
+ 1, maxNrofSR_ConfigPerCellGroup, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SchedulingRequestConfig_sequence[] = {
+ { &hf_nr_rrc_schedulingRequestToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestToAddMod },
+ { &hf_nr_rrc_schedulingRequestToReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestId },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SchedulingRequestConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SchedulingRequestConfig, SchedulingRequestConfig_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_periodicBSR_Timer_vals[] = {
+ { 0, "sf1" },
+ { 1, "sf5" },
+ { 2, "sf10" },
+ { 3, "sf16" },
+ { 4, "sf20" },
+ { 5, "sf32" },
+ { 6, "sf40" },
+ { 7, "sf64" },
+ { 8, "sf80" },
+ { 9, "sf128" },
+ { 10, "sf160" },
+ { 11, "sf320" },
+ { 12, "sf640" },
+ { 13, "sf1280" },
+ { 14, "sf2560" },
+ { 15, "infinity" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_periodicBSR_Timer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 16, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_retxBSR_Timer_vals[] = {
+ { 0, "sf10" },
+ { 1, "sf20" },
+ { 2, "sf40" },
+ { 3, "sf80" },
+ { 4, "sf160" },
+ { 5, "sf320" },
+ { 6, "sf640" },
+ { 7, "sf1280" },
+ { 8, "sf2560" },
+ { 9, "sf5120" },
+ { 10, "sf10240" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_retxBSR_Timer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 11, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_logicaChannelSR_DelayTimer_vals[] = {
+ { 0, "sf20" },
+ { 1, "sf40" },
+ { 2, "sf64" },
+ { 3, "sf128" },
+ { 4, "sf512" },
+ { 5, "sf1024" },
+ { 6, "sf2560" },
+ { 7, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_logicaChannelSR_DelayTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t BSR_Config_sequence[] = {
+ { &hf_nr_rrc_periodicBSR_Timer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_periodicBSR_Timer },
+ { &hf_nr_rrc_retxBSR_Timer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_retxBSR_Timer },
+ { &hf_nr_rrc_logicaChannelSR_DelayTimer, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_logicaChannelSR_DelayTimer },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_BSR_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_BSR_Config, BSR_Config_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BSR_Configuration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_nr_rrc_BSR_Config(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_TAG_Id(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofTAGs_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t TAG_ToReleaseList_sequence_of[1] = {
+ { &hf_nr_rrc_TAG_ToReleaseList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_TAG_Id },
+};
+
+static int
+dissect_nr_rrc_TAG_ToReleaseList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_TAG_ToReleaseList, TAG_ToReleaseList_sequence_of,
+ 1, maxNrofTAGs, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_TimeAlignmentTimer_vals[] = {
+ { 0, "ms500" },
+ { 1, "ms750" },
+ { 2, "ms1280" },
+ { 3, "ms1920" },
+ { 4, "ms2560" },
+ { 5, "ms5120" },
+ { 6, "ms10240" },
+ { 7, "infinity" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_TimeAlignmentTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t TAG_ToAddMod_sequence[] = {
+ { &hf_nr_rrc_tag_Id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_TAG_Id },
+ { &hf_nr_rrc_timeAlignmentTimer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_TimeAlignmentTimer },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_TAG_ToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_TAG_ToAddMod, TAG_ToAddMod_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t TAG_ToAddModList_sequence_of[1] = {
+ { &hf_nr_rrc_TAG_ToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_TAG_ToAddMod },
+};
+
+static int
+dissect_nr_rrc_TAG_ToAddModList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_TAG_ToAddModList, TAG_ToAddModList_sequence_of,
+ 1, maxNrofTAGs, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t TAG_Config_sequence[] = {
+ { &hf_nr_rrc_tag_ToReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_TAG_ToReleaseList },
+ { &hf_nr_rrc_tag_ToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_TAG_ToAddModList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_TAG_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_TAG_Config, TAG_Config_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_TAG_Configuration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_nr_rrc_TAG_Config(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_phr_PeriodicTimer_vals[] = {
+ { 0, "sf10" },
+ { 1, "sf20" },
+ { 2, "sf50" },
+ { 3, "sf100" },
+ { 4, "sf200" },
+ { 5, "sf500" },
+ { 6, "sf1000" },
+ { 7, "infinity" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_phr_PeriodicTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_phr_ProhibitTimer_vals[] = {
+ { 0, "sf0" },
+ { 1, "sf10" },
+ { 2, "sf20" },
+ { 3, "sf50" },
+ { 4, "sf100" },
+ { 5, "sf200" },
+ { 6, "sf500" },
+ { 7, "sf1000" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_phr_ProhibitTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_phr_Tx_PowerFactorChange_vals[] = {
+ { 0, "dB1" },
+ { 1, "dB3" },
+ { 2, "dB6" },
+ { 3, "infinity" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_phr_Tx_PowerFactorChange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_phr_ModeOtherCG_vals[] = {
+ { 0, "real" },
+ { 1, "virtual" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_phr_ModeOtherCG(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_setup_01_sequence[] = {
+ { &hf_nr_rrc_phr_PeriodicTimer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_phr_PeriodicTimer },
+ { &hf_nr_rrc_phr_ProhibitTimer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_phr_ProhibitTimer },
+ { &hf_nr_rrc_phr_Tx_PowerFactorChange, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_phr_Tx_PowerFactorChange },
+ { &hf_nr_rrc_multiplePHR , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_phr_Type2PCell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_phr_Type2OtherCell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_phr_ModeOtherCG, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_phr_ModeOtherCG },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup_01, T_setup_01_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_PHR_Config_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t PHR_Config_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_01 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_01 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_PHR_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_PHR_Config, PHR_Config_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_sCellDeactivationTimer_vals[] = {
+ { 0, "ms20" },
+ { 1, "ms40" },
+ { 2, "ms80" },
+ { 3, "ms160" },
+ { 4, "ms200" },
+ { 5, "ms240" },
+ { 6, "ms320" },
+ { 7, "ms400" },
+ { 8, "ms480" },
+ { 9, "ms520" },
+ { 10, "ms640" },
+ { 11, "ms720" },
+ { 12, "ms840" },
+ { 13, "ms1280" },
+ { 14, "spare2" },
+ { 15, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_sCellDeactivationTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 16, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t MAC_CellGroupConfig_sequence[] = {
+ { &hf_nr_rrc_drx_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_DRX_Config },
+ { &hf_nr_rrc_schedulingRequestConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SchedulingRequestConfig },
+ { &hf_nr_rrc_bsr_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BSR_Configuration },
+ { &hf_nr_rrc_tag_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_TAG_Configuration },
+ { &hf_nr_rrc_phr_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_PHR_Config },
+ { &hf_nr_rrc_sCellDeactivationTimer, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_sCellDeactivationTimer },
+ { &hf_nr_rrc_skipUplinkTxDynamic, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MAC_CellGroupConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MAC_CellGroupConfig, MAC_CellGroupConfig_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RLF_TimersAndConstants_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_RLF_TimersAndConstants(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_RLF_TimersAndConstants, RLF_TimersAndConstants_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_harq_ACK_Spatial_Bundling_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_harq_ACK_Spatial_Bundling(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t PhysicalCellGroupConfig_sequence[] = {
+ { &hf_nr_rrc_harq_ACK_Spatial_Bundling, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_harq_ACK_Spatial_Bundling },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_PhysicalCellGroupConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_PhysicalCellGroupConfig, PhysicalCellGroupConfig_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_PhysCellId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 1007U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_ARFCN_ValueNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_CarrierBandwidthNR_vals[] = {
+ { 0, "ffs" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_CarrierBandwidthNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_frequencyInfoDL_sequence[] = {
+ { &hf_nr_rrc_carrierFreqDL, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ARFCN_ValueNR },
+ { &hf_nr_rrc_carrierBandwidthDL, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CarrierBandwidthNR },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_frequencyInfoDL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_frequencyInfoDL, T_frequencyInfoDL_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_AdditionalSpectrumEmission(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 32U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_P_Max(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -30, 33U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_frequencyShift7p5khz_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_frequencyShift7p5khz(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BandwidthPartId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofBandwidthParts_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_maxNrofPhysicalResourceBlocksTimes4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofPhysicalResourceBlocksTimes4, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_maxNrofPhysicalResourceBlocks(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxNrofPhysicalResourceBlocks, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_subcarrierSpacing_vals[] = {
+ { 0, "n0" },
+ { 1, "n1" },
+ { 2, "n2" },
+ { 3, "n3" },
+ { 4, "n4" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_subcarrierSpacing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 5, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_cyclicPrefix_vals[] = {
+ { 0, "extended" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_cyclicPrefix(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_3299(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 3299U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t BandwidthPart_sequence[] = {
+ { &hf_nr_rrc_bandwidthPartId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BandwidthPartId },
+ { &hf_nr_rrc_location , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_maxNrofPhysicalResourceBlocksTimes4 },
+ { &hf_nr_rrc_bandwidth , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_1_maxNrofPhysicalResourceBlocks },
+ { &hf_nr_rrc_subcarrierSpacing, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_subcarrierSpacing },
+ { &hf_nr_rrc_cyclicPrefix , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_cyclicPrefix },
+ { &hf_nr_rrc_directCurrentLocation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_3299 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_BandwidthPart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_BandwidthPart, BandwidthPart_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t FrequencyInfoUL_sequence[] = {
+ { &hf_nr_rrc_carrierFreqUL, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ARFCN_ValueNR },
+ { &hf_nr_rrc_carrierBandwidthUL, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_CarrierBandwidthNR },
+ { &hf_nr_rrc_additionalSpectrumEmission, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_AdditionalSpectrumEmission },
+ { &hf_nr_rrc_p_Max , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_P_Max },
+ { &hf_nr_rrc_frequencyShift7p5khz, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_frequencyShift7p5khz },
+ { &hf_nr_rrc_initialUplinkBandwidthPart, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BandwidthPart },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_FrequencyInfoUL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_FrequencyInfoUL, FrequencyInfoUL_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_supplementaryUplink_sequence[] = {
+ { &hf_nr_rrc_frequencyInfoUL, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_FrequencyInfoUL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_supplementaryUplink(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_supplementaryUplink, T_supplementaryUplink_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 11U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BIT_STRING_SIZE_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 4, 4, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BIT_STRING_SIZE_8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 8, 8, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BIT_STRING_SIZE_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 64, 64, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_ssb_PositionsInBurst_vals[] = {
+ { 0, "shortBitmap" },
+ { 1, "mediumBitmap" },
+ { 2, "longBitmap" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_ssb_PositionsInBurst_choice[] = {
+ { 0, &hf_nr_rrc_shortBitmap , ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_4 },
+ { 1, &hf_nr_rrc_mediumBitmap , ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_8 },
+ { 2, &hf_nr_rrc_longBitmap , ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_64 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_ssb_PositionsInBurst(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_ssb_PositionsInBurst, T_ssb_PositionsInBurst_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_ssb_periodicityServingCell_vals[] = {
+ { 0, "ms5" },
+ { 1, "ms10" },
+ { 2, "ms20" },
+ { 3, "ms40" },
+ { 4, "ms80" },
+ { 5, "ms160" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_ssb_periodicityServingCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 6, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_dmrs_TypeA_Position_01_vals[] = {
+ { 0, "pos2" },
+ { 1, "pos3" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_dmrs_TypeA_Position_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_SubcarrierSpacingSSB_vals[] = {
+ { 0, "kHz15" },
+ { 1, "kHz30" },
+ { 2, "kHz120" },
+ { 3, "kHz240" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_SubcarrierSpacingSSB(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_dl_UL_TransmissionPeriodicity_vals[] = {
+ { 0, "ms0dot5" },
+ { 1, "ms1" },
+ { 2, "ms2" },
+ { 3, "ms5" },
+ { 4, "ms10" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_dl_UL_TransmissionPeriodicity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 5, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_160(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 160U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_maxSymbolIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxSymbolIndex, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tdd_UL_DL_configurationCommon_sequence[] = {
+ { &hf_nr_rrc_dl_UL_TransmissionPeriodicity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_dl_UL_TransmissionPeriodicity },
+ { &hf_nr_rrc_nrofDownlinkSlots, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_160 },
+ { &hf_nr_rrc_nrofDownlinkSymbols, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_maxSymbolIndex },
+ { &hf_nr_rrc_nrofUplinkSlots, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_160 },
+ { &hf_nr_rrc_nrofUplinkSymbols, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_maxSymbolIndex },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_tdd_UL_DL_configurationCommon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_tdd_UL_DL_configurationCommon, T_tdd_UL_DL_configurationCommon_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_M60_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -60, 50U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_ra_Msg3SizeGroupA_vals[] = {
+ { 0, "b56" },
+ { 1, "b144" },
+ { 2, "b208" },
+ { 3, "b256" },
+ { 4, "b282" },
+ { 5, "b480" },
+ { 6, "b640" },
+ { 7, "b800" },
+ { 8, "b1000" },
+ { 9, "spare7" },
+ { 10, "spare6" },
+ { 11, "spare5" },
+ { 12, "spare4" },
+ { 13, "spare3" },
+ { 14, "spare2" },
+ { 15, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_ra_Msg3SizeGroupA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 16, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_messagePowerOffsetGroupB_vals[] = {
+ { 0, "minusinfinity" },
+ { 1, "dB0" },
+ { 2, "dB5" },
+ { 3, "dB8" },
+ { 4, "dB10" },
+ { 5, "dB12" },
+ { 6, "dB15" },
+ { 7, "dB18" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_messagePowerOffsetGroupB(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_groupBconfigured_sequence[] = {
+ { &hf_nr_rrc_ra_Msg3SizeGroupA, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_ra_Msg3SizeGroupA },
+ { &hf_nr_rrc_messagePowerOffsetGroupB, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_messagePowerOffsetGroupB },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_groupBconfigured(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_groupBconfigured, T_groupBconfigured_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_SSB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 7U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_PreambleStartIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxRA_PreambleIndex, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_NumberofRA_Preambles(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxNrOfRA_PreamblesPerSSB, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_NumberOfRA_Preambles(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_nr_rrc_NumberofRA_Preambles(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const per_sequence_t RA_Resources_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_RA_Resources(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_RA_Resources, RA_Resources_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CBRA_SSB_Resource_sequence[] = {
+ { &hf_nr_rrc_ssb , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SSB_ID },
+ { &hf_nr_rrc_startIndexRA_PreambleGroupA, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_PreambleStartIndex },
+ { &hf_nr_rrc_numberofRA_PreamblesGroupA, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NumberOfRA_Preambles },
+ { &hf_nr_rrc_numberOfRA_Preambles, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NumberOfRA_Preambles },
+ { &hf_nr_rrc_ra_Resources , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_RA_Resources },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CBRA_SSB_Resource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CBRA_SSB_Resource, CBRA_SSB_Resource_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CBRA_SSB_ResourceList_sequence_of[1] = {
+ { &hf_nr_rrc_CBRA_SSB_ResourceList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CBRA_SSB_Resource },
+};
+
+static int
+dissect_nr_rrc_CBRA_SSB_ResourceList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CBRA_SSB_ResourceList, CBRA_SSB_ResourceList_sequence_of,
+ 1, maxRAssbResources, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_ra_ContentionResolutionTimer_vals[] = {
+ { 0, "sf8" },
+ { 1, "sf16" },
+ { 2, "sf24" },
+ { 3, "sf32" },
+ { 4, "sf40" },
+ { 5, "sf48" },
+ { 6, "sf56" },
+ { 7, "sf64" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_ra_ContentionResolutionTimer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_837(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 837U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_137(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 137U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_prach_RootSequenceIndex_vals[] = {
+ { 0, "l839" },
+ { 1, "l139" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_prach_RootSequenceIndex_choice[] = {
+ { 0, &hf_nr_rrc_l839 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_837 },
+ { 1, &hf_nr_rrc_l139 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_137 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_prach_RootSequenceIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_prach_RootSequenceIndex, T_prach_RootSequenceIndex_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_restrictedSetConfig_vals[] = {
+ { 0, "unrestricted" },
+ { 1, "restrictedToTypeA" },
+ { 2, "restrictedToTypeB" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_restrictedSetConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_preambleReceivedTargetPower_vals[] = {
+ { 0, "dBm-120" },
+ { 1, "dBm-118" },
+ { 2, "dBm-116" },
+ { 3, "dBm-114" },
+ { 4, "dBm-112" },
+ { 5, "dBm-110" },
+ { 6, "dBm-108" },
+ { 7, "dBm-106" },
+ { 8, "dBm-104" },
+ { 9, "dBm-102" },
+ { 10, "dBm-100" },
+ { 11, "dBm-98" },
+ { 12, "dBm-96" },
+ { 13, "dBm-94" },
+ { 14, "dBm-92" },
+ { 15, "dBm-90" },
+ { 16, "dBm-88" },
+ { 17, "dBm-86" },
+ { 18, "dBm-84" },
+ { 19, "dBm-82" },
+ { 20, "dBm-80" },
+ { 21, "dBm-78" },
+ { 22, "dBm-76" },
+ { 23, "dBm-74" },
+ { 24, "dBm-72" },
+ { 25, "dBm-70" },
+ { 26, "dBm-68" },
+ { 27, "dBm-66" },
+ { 28, "dBm-64" },
+ { 29, "dBm-62" },
+ { 30, "dBm-60" },
+ { 31, "dBm-58" },
+ { 32, "dBm-56" },
+ { 33, "dBm-54" },
+ { 34, "dBm-52" },
+ { 35, "dBm-50" },
+ { 36, "dBm-48" },
+ { 37, "dBm-46" },
+ { 38, "dBm-44" },
+ { 39, "dBm-42" },
+ { 40, "dBm-42" },
+ { 41, "dBm-40" },
+ { 42, "dBm-38" },
+ { 43, "dBm-36" },
+ { 44, "dBm-34" },
+ { 45, "dBm-32" },
+ { 46, "dBm-30" },
+ { 47, "dBm-28" },
+ { 48, "dBm-26" },
+ { 49, "dBm-24" },
+ { 50, "dBm-22" },
+ { 51, "dBm-20" },
+ { 52, "dBm-18" },
+ { 53, "dBm-16" },
+ { 54, "dBm-14" },
+ { 55, "dBm-12" },
+ { 56, "dBm-10" },
+ { 57, "dBm-8" },
+ { 58, "dBm-6" },
+ { 59, "dBm-4" },
+ { 60, "dBm-2" },
+ { 61, "dBm-0" },
+ { 62, "dBm2" },
+ { 63, "dBm4" },
+ { 64, "dBm6" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_preambleReceivedTargetPower_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_preambleReceivedTargetPower_vals);
+
+
+static int
+dissect_nr_rrc_T_preambleReceivedTargetPower(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 65, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_powerRampingStep_vals[] = {
+ { 0, "dB0" },
+ { 1, "dB2" },
+ { 2, "dB4" },
+ { 3, "dB6" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_powerRampingStep(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_preambleTransMax_vals[] = {
+ { 0, "n3" },
+ { 1, "n4" },
+ { 2, "n5" },
+ { 3, "n6" },
+ { 4, "n7" },
+ { 5, "n8" },
+ { 6, "n10" },
+ { 7, "n20" },
+ { 8, "n50" },
+ { 9, "n100" },
+ { 10, "n200" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_preambleTransMax(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 11, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_msg3_transformPrecoding_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_msg3_transformPrecoding(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RACH_ConfigCommon_sequence[] = {
+ { &hf_nr_rrc_groupBconfigured, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_groupBconfigured },
+ { &hf_nr_rrc_cbra_SSB_ResourceList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CBRA_SSB_ResourceList },
+ { &hf_nr_rrc_ra_ContentionResolutionTimer, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_ra_ContentionResolutionTimer },
+ { &hf_nr_rrc_ssb_Threshold, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_sul_RSRP_Threshold, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_prach_ConfigurationIndex, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_255 },
+ { &hf_nr_rrc_prach_RootSequenceIndex, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_prach_RootSequenceIndex },
+ { &hf_nr_rrc_zeroCorrelationZoneConfig, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_0_15 },
+ { &hf_nr_rrc_restrictedSetConfig, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_restrictedSetConfig },
+ { &hf_nr_rrc_preambleReceivedTargetPower, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_preambleReceivedTargetPower },
+ { &hf_nr_rrc_powerRampingStep, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_powerRampingStep },
+ { &hf_nr_rrc_preambleTransMax, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_preambleTransMax },
+ { &hf_nr_rrc_ra_ResponseWindow, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_msg2_SubcarrierSpacing, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SubcarrierSpacing },
+ { &hf_nr_rrc_rach_ControlResourceSet, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_msg3_SubcarrierSpacing, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SubcarrierSpacing },
+ { &hf_nr_rrc_msg3_transformPrecoding, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_msg3_transformPrecoding },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_RACH_ConfigCommon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_RACH_ConfigCommon, RACH_ConfigCommon_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ServingCellConfigCommon_sequence[] = {
+ { &hf_nr_rrc_physCellId , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_PhysCellId },
+ { &hf_nr_rrc_frequencyInfoDL, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_frequencyInfoDL },
+ { &hf_nr_rrc_frequencyInfoUL, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_FrequencyInfoUL },
+ { &hf_nr_rrc_supplementaryUplink, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_supplementaryUplink },
+ { &hf_nr_rrc_subcarrierSpacingCommon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SubcarrierSpacing },
+ { &hf_nr_rrc_ssb_subcarrier_offset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_1_11 },
+ { &hf_nr_rrc_ssb_PositionsInBurst, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_ssb_PositionsInBurst },
+ { &hf_nr_rrc_ssb_periodicityServingCell, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_ssb_periodicityServingCell },
+ { &hf_nr_rrc_dmrs_TypeA_Position_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_dmrs_TypeA_Position_01 },
+ { &hf_nr_rrc_subcarrierSpacingSSB, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SubcarrierSpacingSSB },
+ { &hf_nr_rrc_tdd_UL_DL_configurationCommon, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_tdd_UL_DL_configurationCommon },
+ { &hf_nr_rrc_ss_PBCH_BlockPower, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_M60_50 },
+ { &hf_nr_rrc_rach_ConfigCommon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_RACH_ConfigCommon },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ServingCellConfigCommon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ServingCellConfigCommon, ServingCellConfigCommon_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_C_RNTI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 16, 16, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_t304_vals[] = {
+ { 0, "ms50" },
+ { 1, "ms100" },
+ { 2, "ms150" },
+ { 3, "ms200" },
+ { 4, "ms500" },
+ { 5, "ms1000" },
+ { 6, "ms2000" },
+ { 7, "ms10000-v1310" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_t304(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 0U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t CFRA_SSB_Resource_sequence[] = {
+ { &hf_nr_rrc_ssb , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SSB_ID },
+ { &hf_nr_rrc_ra_PreambleIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_0_0 },
+ { &hf_nr_rrc_ra_Resources , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_RA_Resources },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CFRA_SSB_Resource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CFRA_SSB_Resource, CFRA_SSB_Resource_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxRAssbResources_OF_CFRA_SSB_Resource_sequence_of[1] = {
+ { &hf_nr_rrc_cfra_ssb_ResourceList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CFRA_SSB_Resource },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxRAssbResources_OF_CFRA_SSB_Resource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxRAssbResources_OF_CFRA_SSB_Resource, SEQUENCE_SIZE_1_maxRAssbResources_OF_CFRA_SSB_Resource_sequence_of,
+ 1, maxRAssbResources, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_CSIRS_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CFRA_CSIRS_Resource_sequence[] = {
+ { &hf_nr_rrc_csirs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSIRS_ID },
+ { &hf_nr_rrc_ra_PreambleIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_0_0 },
+ { &hf_nr_rrc_ra_Resources , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_RA_Resources },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CFRA_CSIRS_Resource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CFRA_CSIRS_Resource, CFRA_CSIRS_Resource_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxRAcsirsResources_OF_CFRA_CSIRS_Resource_sequence_of[1] = {
+ { &hf_nr_rrc_cfra_csirs_ResourceList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CFRA_CSIRS_Resource },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxRAcsirsResources_OF_CFRA_CSIRS_Resource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxRAcsirsResources_OF_CFRA_CSIRS_Resource, SEQUENCE_SIZE_1_maxRAcsirsResources_OF_CFRA_CSIRS_Resource_sequence_of,
+ 1, maxRAcsirsResources, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_CFRA_Resources_vals[] = {
+ { 0, "cfra-ssb-ResourceList" },
+ { 1, "cfra-csirs-ResourceList" },
+ { 0, NULL }
+};
+
+static const per_choice_t CFRA_Resources_choice[] = {
+ { 0, &hf_nr_rrc_cfra_ssb_ResourceList, ASN1_NO_EXTENSIONS , dissect_nr_rrc_SEQUENCE_SIZE_1_maxRAssbResources_OF_CFRA_SSB_Resource },
+ { 1, &hf_nr_rrc_cfra_csirs_ResourceList, ASN1_NO_EXTENSIONS , dissect_nr_rrc_SEQUENCE_SIZE_1_maxRAcsirsResources_OF_CFRA_CSIRS_Resource },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CFRA_Resources(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CFRA_Resources, CFRA_Resources_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RACH_ConfigDedicated_sequence[] = {
+ { &hf_nr_rrc_cfra_Resources, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CFRA_Resources },
+ { &hf_nr_rrc_rar_SubcarrierSpacing, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SubcarrierSpacing },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_RACH_ConfigDedicated(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_RACH_ConfigDedicated, RACH_ConfigDedicated_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_reconfigurationWithSync_sequence[] = {
+ { &hf_nr_rrc_spCellConfigCommon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ServingCellConfigCommon },
+ { &hf_nr_rrc_newUE_Identity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_C_RNTI },
+ { &hf_nr_rrc_t304 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_t304 },
+ { &hf_nr_rrc_rach_ConfigDedicated, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RACH_ConfigDedicated },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_reconfigurationWithSync(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_reconfigurationWithSync, T_reconfigurationWithSync_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_slotSpecificConfigurations_item_sequence[] = {
+ { &hf_nr_rrc_slotIndex , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_0_160 },
+ { &hf_nr_rrc_nrofDownlinkSymbols, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_maxSymbolIndex },
+ { &hf_nr_rrc_nrofUplinkSymbols, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_maxSymbolIndex },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_slotSpecificConfigurations_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_slotSpecificConfigurations_item, T_slotSpecificConfigurations_item_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_slotSpecificConfigurations_sequence_of[1] = {
+ { &hf_nr_rrc_slotSpecificConfigurations_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_slotSpecificConfigurations_item },
+};
+
+static int
+dissect_nr_rrc_T_slotSpecificConfigurations(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_slotSpecificConfigurations, T_slotSpecificConfigurations_sequence_of,
+ 0, 160, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tdd_UL_DL_configurationDedicated_sequence[] = {
+ { &hf_nr_rrc_slotSpecificConfigurations, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_slotSpecificConfigurations },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_tdd_UL_DL_configurationDedicated(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_tdd_UL_DL_configurationDedicated, T_tdd_UL_DL_configurationDedicated_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BandwidthParts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_nr_rrc_BandwidthPart(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_ControlResourceSetId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofControlResourceSets_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_maxCoReSetStartSymbol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxCoReSetStartSymbol, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_maxCoReSetDuration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxCoReSetDuration, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reg_BundleSize_vals[] = {
+ { 0, "n2" },
+ { 1, "n3" },
+ { 2, "n6" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_reg_BundleSize(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_cce_reg_MappingType_vals[] = {
+ { 0, "interleaved" },
+ { 1, "nonInterleaved" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_cce_reg_MappingType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_interleaverRows_vals[] = {
+ { 0, "n2" },
+ { 1, "n3" },
+ { 2, "n6" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_interleaverRows(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t ControlResourceSet_sequence[] = {
+ { &hf_nr_rrc_controlResourceSetId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ControlResourceSetId },
+ { &hf_nr_rrc_frequencyDomainResources, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_startSymbol , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_0_maxCoReSetStartSymbol },
+ { &hf_nr_rrc_duration_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_1_maxCoReSetDuration },
+ { &hf_nr_rrc_reg_BundleSize, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_reg_BundleSize },
+ { &hf_nr_rrc_cce_reg_MappingType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_cce_reg_MappingType },
+ { &hf_nr_rrc_precoderGranularity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_interleaverRows, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_interleaverRows },
+ { &hf_nr_rrc_shiftIndex , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_tci_StateRefId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_pdcch_DMRS_ScramblingID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ControlResourceSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ControlResourceSet, ControlResourceSet_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceSet_sequence_of[1] = {
+ { &hf_nr_rrc_controlResourceSetToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ControlResourceSet },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceSet, SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceSet_sequence_of,
+ 1, maxNrofControlResourceSets, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_ControlResourceId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_nr_rrc_ControlResourceSetId(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceId_sequence_of[1] = {
+ { &hf_nr_rrc_controlResourceSetToReleaseList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ControlResourceId },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceId, SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceId_sequence_of,
+ 1, maxNrofControlResourceSets, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_SearchSpaceId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxNrofSearchSpaces, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 1U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 4U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_monitoringSlotPeriodicityAndOffset_vals[] = {
+ { 0, "sl1" },
+ { 1, "sl2" },
+ { 2, "sl5" },
+ { 3, "sl10" },
+ { 4, "sl20" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_monitoringSlotPeriodicityAndOffset_choice[] = {
+ { 0, &hf_nr_rrc_sl1 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_sl2 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_1 },
+ { 2, &hf_nr_rrc_sl5 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_4 },
+ { 3, &hf_nr_rrc_sl10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_9 },
+ { 4, &hf_nr_rrc_sl20 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_19 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_monitoringSlotPeriodicityAndOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_monitoringSlotPeriodicityAndOffset, T_monitoringSlotPeriodicityAndOffset_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BIT_STRING_SIZE_14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 14, 14, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_aggregationLevel1_vals[] = {
+ { 0, "n0" },
+ { 1, "n1" },
+ { 2, "n2" },
+ { 3, "n3" },
+ { 4, "n4" },
+ { 5, "n5" },
+ { 6, "n6" },
+ { 7, "n8" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_aggregationLevel1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_aggregationLevel2_vals[] = {
+ { 0, "n0" },
+ { 1, "n1" },
+ { 2, "n2" },
+ { 3, "n3" },
+ { 4, "n4" },
+ { 5, "n5" },
+ { 6, "n6" },
+ { 7, "n8" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_aggregationLevel2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_aggregationLevel4_vals[] = {
+ { 0, "n0" },
+ { 1, "n1" },
+ { 2, "n2" },
+ { 3, "n3" },
+ { 4, "n4" },
+ { 5, "n5" },
+ { 6, "n6" },
+ { 7, "n8" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_aggregationLevel4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_aggregationLevel8_vals[] = {
+ { 0, "n0" },
+ { 1, "n1" },
+ { 2, "n2" },
+ { 3, "n3" },
+ { 4, "n4" },
+ { 5, "n5" },
+ { 6, "n6" },
+ { 7, "n8" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_aggregationLevel8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nrofCandidates_sequence[] = {
+ { &hf_nr_rrc_aggregationLevel1, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_aggregationLevel1 },
+ { &hf_nr_rrc_aggregationLevel2, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_aggregationLevel2 },
+ { &hf_nr_rrc_aggregationLevel4, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_aggregationLevel4 },
+ { &hf_nr_rrc_aggregationLevel8, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_aggregationLevel8 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_nrofCandidates(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_nrofCandidates, T_nrofCandidates_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_monitoringPeriodicity_vals[] = {
+ { 0, "sl1" },
+ { 1, "sl2" },
+ { 2, "sl5" },
+ { 3, "sl10" },
+ { 4, "sl20" },
+ { 5, "spare3" },
+ { 6, "spare2" },
+ { 7, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_monitoringPeriodicity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_SlotFormatCombinationId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofSlotFormatCombinations_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SlotFormatCombination_sequence[] = {
+ { &hf_nr_rrc_slotFormatCombinationId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SlotFormatCombinationId },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SlotFormatCombination(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SlotFormatCombination, SlotFormatCombination_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofSlotFormatCombinations_OF_SlotFormatCombination_sequence_of[1] = {
+ { &hf_nr_rrc_slotFormatCombinations_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SlotFormatCombination },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSlotFormatCombinations_OF_SlotFormatCombination(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSlotFormatCombinations_OF_SlotFormatCombination, SEQUENCE_SIZE_1_maxNrofSlotFormatCombinations_OF_SlotFormatCombination_sequence_of,
+ 1, maxNrofSlotFormatCombinations, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t CellToSFI_sequence[] = {
+ { &hf_nr_rrc_slotFormatCombinations, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSlotFormatCombinations_OF_SlotFormatCombination },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CellToSFI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CellToSFI, CellToSFI_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofAggregatedCellsPerCellGroup_OF_CellToSFI_sequence_of[1] = {
+ { &hf_nr_rrc_sfi_CellToSFI_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CellToSFI },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofAggregatedCellsPerCellGroup_OF_CellToSFI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofAggregatedCellsPerCellGroup_OF_CellToSFI, SEQUENCE_SIZE_1_maxNrofAggregatedCellsPerCellGroup_OF_CellToSFI_sequence_of,
+ 1, maxNrofAggregatedCellsPerCellGroup, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_nrofPDCCH_Candidates_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_nrofPDCCH_Candidates(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_aggregationLevel_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 2, "n4" },
+ { 3, "n8" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_aggregationLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BIT_STRING_SIZE_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 16, 16, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 1U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SFI_PDCCH_sequence[] = {
+ { &hf_nr_rrc_monitoringPeriodicity_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_monitoringPeriodicity },
+ { &hf_nr_rrc_sfi_CellToSFI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofAggregatedCellsPerCellGroup_OF_CellToSFI },
+ { &hf_nr_rrc_nrofPDCCH_Candidates, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_nrofPDCCH_Candidates },
+ { &hf_nr_rrc_aggregationLevel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_aggregationLevel },
+ { &hf_nr_rrc_sfi_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BIT_STRING_SIZE_16 },
+ { &hf_nr_rrc_dci_PayloadLength, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_searchSpace , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_sfi_PositionInDCI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_1_1 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SFI_PDCCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SFI_PDCCH, SFI_PDCCH_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_int_TF_vals[] = {
+ { 0, "set0" },
+ { 1, "set1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_int_TF(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_common_sequence[] = {
+ { &hf_nr_rrc_sfi_PDCCH , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SFI_PDCCH },
+ { &hf_nr_rrc_preemp_DL , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_int_RNTI , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BIT_STRING_SIZE_16 },
+ { &hf_nr_rrc_int_TF , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_int_TF },
+ { &hf_nr_rrc_monitoringPeriodicity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_common(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_common, T_common_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_ue_Specific_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_ue_Specific(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_ue_Specific, T_ue_Specific_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_searchSpaceType_vals[] = {
+ { 0, "common" },
+ { 1, "ue-Specific" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_searchSpaceType_choice[] = {
+ { 0, &hf_nr_rrc_common , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_common },
+ { 1, &hf_nr_rrc_ue_Specific , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_ue_Specific },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_searchSpaceType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_searchSpaceType, T_searchSpaceType_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SearchSpace_sequence[] = {
+ { &hf_nr_rrc_searchSpaceId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SearchSpaceId },
+ { &hf_nr_rrc_controlResourceSetId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ControlResourceSetId },
+ { &hf_nr_rrc_monitoringSlotPeriodicityAndOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_monitoringSlotPeriodicityAndOffset },
+ { &hf_nr_rrc_monitoringSymbolsWithinSlot, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BIT_STRING_SIZE_14 },
+ { &hf_nr_rrc_nrofCandidates, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_nrofCandidates },
+ { &hf_nr_rrc_searchSpaceType, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_searchSpaceType },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SearchSpace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SearchSpace, SearchSpace_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpace_sequence_of[1] = {
+ { &hf_nr_rrc_searchSpacesToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SearchSpace },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpace, SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpace_sequence_of,
+ 1, maxNrofSearchSpaces, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpaceId_sequence_of[1] = {
+ { &hf_nr_rrc_searchSpacesToReleaseList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SearchSpaceId },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpaceId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpaceId, SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpaceId_sequence_of,
+ 1, maxNrofSearchSpaces, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_timing_sequence[] = {
+ { &hf_nr_rrc_dl_assignment_to_DL_data, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_ul_assignment_to_UL_data, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_dl_data_to_UL_ACK, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_timing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_timing, T_timing_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t PDCCH_Config_sequence[] = {
+ { &hf_nr_rrc_controlResourceSetToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceSet },
+ { &hf_nr_rrc_controlResourceSetToReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceId },
+ { &hf_nr_rrc_searchSpacesToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpace },
+ { &hf_nr_rrc_searchSpacesToReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpaceId },
+ { &hf_nr_rrc_timing , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_timing },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_PDCCH_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_PDCCH_Config, PDCCH_Config_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_maxCodeBlockGroupsPerTransportBlock_vals[] = {
+ { 0, "n2" },
+ { 1, "n4" },
+ { 2, "n6" },
+ { 3, "n8" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_maxCodeBlockGroupsPerTransportBlock(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_dmrs_Type_vals[] = {
+ { 0, "type1" },
+ { 1, "type2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_dmrs_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_dmrs_AdditionalPosition_vals[] = {
+ { 0, "pos0" },
+ { 1, "pos1" },
+ { 2, "pos2" },
+ { 3, "pos3" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_dmrs_AdditionalPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_nrofPorts_01_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_nrofPorts_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t Downlink_PTRS_Config_sequence[] = {
+ { &hf_nr_rrc_frequencyDensity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_timeDensity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_nrofPorts_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_nrofPorts_01 },
+ { &hf_nr_rrc_epre_Ratio , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_resourceElementOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_Downlink_PTRS_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_Downlink_PTRS_Config, Downlink_PTRS_Config_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_phaseTracking_RS_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_phaseTracking_RS_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_04 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_Downlink_PTRS_Config },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_phaseTracking_RS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_phaseTracking_RS, T_phaseTracking_RS_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_tci_PresentInDCI_vals[] = {
+ { 0, "enabled" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_tci_PresentInDCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_xOverhead_vals[] = {
+ { 0, "n0" },
+ { 1, "n6" },
+ { 2, "n12" },
+ { 3, "n18" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_xOverhead(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BIT_STRING_SIZE_275(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 275, 275, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_periodicityAndOffset_01_vals[] = {
+ { 0, "n5" },
+ { 1, "n10" },
+ { 2, "n20" },
+ { 3, "n40" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_periodicityAndOffset_01_choice[] = {
+ { 0, &hf_nr_rrc_n5 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_4 },
+ { 1, &hf_nr_rrc_n10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_9 },
+ { 2, &hf_nr_rrc_n20 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_19 },
+ { 3, &hf_nr_rrc_n40 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_39 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_periodicityAndOffset_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_periodicityAndOffset_01, T_periodicityAndOffset_01_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RateMatchPattern_sequence[] = {
+ { &hf_nr_rrc_resourceBlocks, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BIT_STRING_SIZE_275 },
+ { &hf_nr_rrc_symbolsInResourceBlock, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BIT_STRING_SIZE_14 },
+ { &hf_nr_rrc_periodicityAndOffset_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_periodicityAndOffset_01 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_RateMatchPattern(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_RateMatchPattern, RateMatchPattern_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofRateMatchPatterns_OF_RateMatchPattern_sequence_of[1] = {
+ { &hf_nr_rrc_setup_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_RateMatchPattern },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofRateMatchPatterns_OF_RateMatchPattern(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofRateMatchPatterns_OF_RateMatchPattern, SEQUENCE_SIZE_1_maxNrofRateMatchPatterns_OF_RateMatchPattern_sequence_of,
+ 1, maxNrofRateMatchPatterns, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_rateMatchPatterns_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_rateMatchPatterns_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_05 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofRateMatchPatterns_OF_RateMatchPattern },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_rateMatchPatterns(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_rateMatchPatterns, T_rateMatchPatterns_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_nrofCRS_Ports_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 2, "n4" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_nrofCRS_Ports(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_v_Shift_vals[] = {
+ { 0, "n0" },
+ { 1, "n1" },
+ { 2, "n2" },
+ { 3, "n3" },
+ { 4, "n4" },
+ { 5, "n5" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_v_Shift(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 6, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_setup_04_sequence[] = {
+ { &hf_nr_rrc_nrofCRS_Ports, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_nrofCRS_Ports },
+ { &hf_nr_rrc_v_Shift , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_v_Shift },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup_04, T_setup_04_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_lte_CRS_ToMatchAround_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_lte_CRS_ToMatchAround_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_06 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_04 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_lte_CRS_ToMatchAround(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_lte_CRS_ToMatchAround, T_lte_CRS_ToMatchAround_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_rateMatchResourcesPDSCH_sequence[] = {
+ { &hf_nr_rrc_rateMatchPatterns, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_rateMatchPatterns },
+ { &hf_nr_rrc_lte_CRS_ToMatchAround, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_lte_CRS_ToMatchAround },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_rateMatchResourcesPDSCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_rateMatchResourcesPDSCH, T_rateMatchResourcesPDSCH_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_rbg_Size_vals[] = {
+ { 0, "config1" },
+ { 1, "config2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_rbg_Size(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_mcs_Table_vals[] = {
+ { 0, "dl-64QAM" },
+ { 1, "dl-256QAM" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_mcs_Table(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_maxNrofCodeWordsScheduledByDCI_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_maxNrofCodeWordsScheduledByDCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_harq_ACK_Codebook_vals[] = {
+ { 0, "semiStatic" },
+ { 1, "dynamic" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_harq_ACK_Codebook(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t PDSCH_Config_sequence[] = {
+ { &hf_nr_rrc_codeBlockGroupTransmission, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_maxCodeBlockGroupsPerTransportBlock, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_maxCodeBlockGroupsPerTransportBlock },
+ { &hf_nr_rrc_codeBlockGroupFlushIndicator, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_dmrs_Type , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_dmrs_Type },
+ { &hf_nr_rrc_dmrs_AdditionalPosition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_dmrs_AdditionalPosition },
+ { &hf_nr_rrc_dmrs_group1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_dmrs_group2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_phaseTracking_RS, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_phaseTracking_RS },
+ { &hf_nr_rrc_tci_States , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_tci_rs_SetConfig, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_tci_PresentInDCI, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_tci_PresentInDCI },
+ { &hf_nr_rrc_xOverhead , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_xOverhead },
+ { &hf_nr_rrc_pdsch_symbolAllocation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_rateMatchResourcesPDSCH, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_rateMatchResourcesPDSCH },
+ { &hf_nr_rrc_rbg_Size , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_rbg_Size },
+ { &hf_nr_rrc_mcs_Table , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_mcs_Table },
+ { &hf_nr_rrc_maxNrofCodeWordsScheduledByDCI, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_maxNrofCodeWordsScheduledByDCI },
+ { &hf_nr_rrc_nrofHARQ_processesForPDSCH, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_harq_ACK_Codebook, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_harq_ACK_Codebook },
+ { &hf_nr_rrc_pdsch_BundleSize, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_prbBundlingEnabled, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_PDSCH_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_PDSCH_Config, PDSCH_Config_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_CSI_ResourceConfigId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofCSI_ResourceConfigurations_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_CSI_ResourceSetId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofCSI_ResourceSets_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_NZP_CSI_RS_ResourceId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofNZP_CSI_RS_Resources_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_nrofPorts_vals[] = {
+ { 0, "p1" },
+ { 1, "p2" },
+ { 2, "p4" },
+ { 3, "p8" },
+ { 4, "p12" },
+ { 5, "p16" },
+ { 6, "p24" },
+ { 7, "p32" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_nrofPorts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_cdm_Value_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 2, "n4" },
+ { 3, "n8" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_cdm_Value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_cdm_Pattern_vals[] = {
+ { 0, "freqOnly" },
+ { 1, "timeAndFreq" },
+ { 2, "timeOnly" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_cdm_Pattern(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_csi_RS_Density_vals[] = {
+ { 0, "dot5" },
+ { 1, "one" },
+ { 2, "three" },
+ { 3, "spare" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_csi_RS_Density(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 0U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_csi_RS_timeConfig_vals[] = {
+ { 0, "sl5" },
+ { 1, "sl10" },
+ { 2, "sl20" },
+ { 3, "sl40" },
+ { 4, "sl80" },
+ { 5, "sl160" },
+ { 6, "sl320" },
+ { 7, "sl640" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_csi_RS_timeConfig_choice[] = {
+ { 0, &hf_nr_rrc_sl5 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_4 },
+ { 1, &hf_nr_rrc_sl10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_9 },
+ { 2, &hf_nr_rrc_sl20 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_19 },
+ { 3, &hf_nr_rrc_sl40 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_39 },
+ { 4, &hf_nr_rrc_sl80 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_79 },
+ { 5, &hf_nr_rrc_sl160 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_159 },
+ { 6, &hf_nr_rrc_sl320 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_319 },
+ { 7, &hf_nr_rrc_sl640 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_639 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_csi_RS_timeConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_csi_RS_timeConfig, T_csi_RS_timeConfig_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t NZP_CSI_RS_Resource_sequence[] = {
+ { &hf_nr_rrc_nzp_csi_rs_ResourceId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NZP_CSI_RS_ResourceId },
+ { &hf_nr_rrc_nrofPorts , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_nrofPorts },
+ { &hf_nr_rrc_resourceMapping, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_cdm_Value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_cdm_Value },
+ { &hf_nr_rrc_cdm_Pattern , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_cdm_Pattern },
+ { &hf_nr_rrc_csi_RS_Density, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_csi_RS_Density },
+ { &hf_nr_rrc_csi_RS_FreqBand, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_powerControlOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_powerControlOffsetSS, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_scramblingID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_0 },
+ { &hf_nr_rrc_csi_RS_timeConfig, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_csi_RS_timeConfig },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_NZP_CSI_RS_Resource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_NZP_CSI_RS_Resource, NZP_CSI_RS_Resource_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesPerSet_OF_NZP_CSI_RS_Resource_sequence_of[1] = {
+ { &hf_nr_rrc_csi_rs_Resources_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NZP_CSI_RS_Resource },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesPerSet_OF_NZP_CSI_RS_Resource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesPerSet_OF_NZP_CSI_RS_Resource, SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesPerSet_OF_NZP_CSI_RS_Resource_sequence_of,
+ 1, maxNrofCSI_RS_ResourcesPerSet, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t CSI_ResourceSet_sequence[] = {
+ { &hf_nr_rrc_csi_ResourceSetId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_ResourceSetId },
+ { &hf_nr_rrc_csi_rs_Resources, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesPerSet_OF_NZP_CSI_RS_Resource },
+ { &hf_nr_rrc_repetition , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CSI_ResourceSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CSI_ResourceSet, CSI_ResourceSet_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofCSI_ResourceSets_OF_CSI_ResourceSet_sequence_of[1] = {
+ { &hf_nr_rrc_csi_ResourceSets_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_ResourceSet },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_ResourceSets_OF_CSI_ResourceSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_ResourceSets_OF_CSI_ResourceSet, SEQUENCE_SIZE_1_maxNrofCSI_ResourceSets_OF_CSI_ResourceSet_sequence_of,
+ 1, maxNrofCSI_ResourceSets, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t CSI_SSB_Resource_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CSI_SSB_Resource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CSI_SSB_Resource, CSI_SSB_Resource_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofSSB_Resources_1_OF_CSI_SSB_Resource_sequence_of[1] = {
+ { &hf_nr_rrc_ssb_Resources_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_SSB_Resource },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSSB_Resources_1_OF_CSI_SSB_Resource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSSB_Resources_1_OF_CSI_SSB_Resource, SEQUENCE_SIZE_1_maxNrofSSB_Resources_1_OF_CSI_SSB_Resource_sequence_of,
+ 1, maxNrofSSB_Resources_1, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_resourceType_vals[] = {
+ { 0, "aperiodic" },
+ { 1, "semiPersistent" },
+ { 2, "periodic" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_resourceType_choice[] = {
+ { 0, &hf_nr_rrc_aperiodic , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_semiPersistent, ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 2, &hf_nr_rrc_periodic , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_resourceType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_resourceType, T_resourceType_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CSI_ResourceConfig_sequence[] = {
+ { &hf_nr_rrc_csi_ResourceConfigId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_ResourceConfigId },
+ { &hf_nr_rrc_csi_ResourceSets, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_ResourceSets_OF_CSI_ResourceSet },
+ { &hf_nr_rrc_ssb_Resources, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSSB_Resources_1_OF_CSI_SSB_Resource },
+ { &hf_nr_rrc_resourceType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_resourceType },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CSI_ResourceConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CSI_ResourceConfig, CSI_ResourceConfig_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofCSI_ResourceConfigurations_OF_CSI_ResourceConfig_sequence_of[1] = {
+ { &hf_nr_rrc_csi_ResourceConfigs_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_ResourceConfig },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_ResourceConfigurations_OF_CSI_ResourceConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_ResourceConfigurations_OF_CSI_ResourceConfig, SEQUENCE_SIZE_1_maxNrofCSI_ResourceConfigurations_OF_CSI_ResourceConfig_sequence_of,
+ 1, maxNrofCSI_ResourceConfigurations, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_CSI_ReportConfigId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofCSI_ReportConfig_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reportSlotConfig_vals[] = {
+ { 0, "sl5" },
+ { 1, "sl10" },
+ { 2, "sl20" },
+ { 3, "sl40" },
+ { 4, "sl80" },
+ { 5, "sl160" },
+ { 6, "sl320" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_reportSlotConfig_choice[] = {
+ { 0, &hf_nr_rrc_sl5 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_4 },
+ { 1, &hf_nr_rrc_sl10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_9 },
+ { 2, &hf_nr_rrc_sl20 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_19 },
+ { 3, &hf_nr_rrc_sl40 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_39 },
+ { 4, &hf_nr_rrc_sl80 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_79 },
+ { 5, &hf_nr_rrc_sl160 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_159 },
+ { 6, &hf_nr_rrc_sl320 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_319 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_reportSlotConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_reportSlotConfig, T_reportSlotConfig_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_periodic_sequence[] = {
+ { &hf_nr_rrc_reportSlotConfig, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_reportSlotConfig },
+ { &hf_nr_rrc_pucch_CSI_ResourceIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_periodic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_periodic, T_periodic_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reportSlotConfig_01_vals[] = {
+ { 0, "sl5" },
+ { 1, "sl10" },
+ { 2, "sl20" },
+ { 3, "sl40" },
+ { 4, "sl80" },
+ { 5, "sl160" },
+ { 6, "sl320" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_reportSlotConfig_01_choice[] = {
+ { 0, &hf_nr_rrc_sl5 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_4 },
+ { 1, &hf_nr_rrc_sl10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_9 },
+ { 2, &hf_nr_rrc_sl20 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_19 },
+ { 3, &hf_nr_rrc_sl40 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_39 },
+ { 4, &hf_nr_rrc_sl80 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_79 },
+ { 5, &hf_nr_rrc_sl160 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_159 },
+ { 6, &hf_nr_rrc_sl320 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_319 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_reportSlotConfig_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_reportSlotConfig_01, T_reportSlotConfig_01_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_semiPersistent_sequence[] = {
+ { &hf_nr_rrc_reportSlotConfig_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_reportSlotConfig_01 },
+ { &hf_nr_rrc_pucch_CSI_ResourceIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_semiPersistent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_semiPersistent, T_semiPersistent_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_aperiodic_sequence[] = {
+ { &hf_nr_rrc_aperiodicReportSlotOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_aperiodic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_aperiodic, T_aperiodic_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reportConfigType_vals[] = {
+ { 0, "periodic" },
+ { 1, "semiPersistent" },
+ { 2, "aperiodic" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_reportConfigType_choice[] = {
+ { 0, &hf_nr_rrc_periodic_01 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_periodic },
+ { 1, &hf_nr_rrc_semiPersistent_01, ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_semiPersistent },
+ { 2, &hf_nr_rrc_aperiodic_01 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_aperiodic },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_reportConfigType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_reportConfigType, T_reportConfigType_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_pdsch_BundleSizeForCSI_vals[] = {
+ { 0, "n2" },
+ { 1, "n4" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_pdsch_BundleSizeForCSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_cRI_RI_i1_CQI_sequence[] = {
+ { &hf_nr_rrc_pdsch_BundleSizeForCSI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_pdsch_BundleSizeForCSI },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_cRI_RI_i1_CQI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_cRI_RI_i1_CQI, T_cRI_RI_i1_CQI_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reportQuantity_vals[] = {
+ { 0, "cRI-RI-PMI-CQI" },
+ { 1, "cRI-RI-i1" },
+ { 2, "cRI-RI-i1-CQI" },
+ { 3, "cRI-RI-CQI" },
+ { 4, "cRI" },
+ { 5, "cRI-RSRP" },
+ { 6, "spare1" },
+ { 7, "spare0" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_reportQuantity_choice[] = {
+ { 0, &hf_nr_rrc_cRI_RI_PMI_CQI, ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_cRI_RI_i1 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 2, &hf_nr_rrc_cRI_RI_i1_CQI, ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_cRI_RI_i1_CQI },
+ { 3, &hf_nr_rrc_cRI_RI_CQI , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 4, &hf_nr_rrc_cRI , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 5, &hf_nr_rrc_cRI_RSRP , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 6, &hf_nr_rrc_spare1 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 7, &hf_nr_rrc_spare0 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_reportQuantity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_reportQuantity, T_reportQuantity_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_cqi_FormatIndicator_vals[] = {
+ { 0, "widebandCQI" },
+ { 1, "subbandCQI" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_cqi_FormatIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_pmi_FormatIndicator_vals[] = {
+ { 0, "widebandPMI" },
+ { 1, "subbandPMI" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_pmi_FormatIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_T_csi_ReportingBand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_reportFreqConfiguration_sequence[] = {
+ { &hf_nr_rrc_cqi_FormatIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_cqi_FormatIndicator },
+ { &hf_nr_rrc_pmi_FormatIndicator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_pmi_FormatIndicator },
+ { &hf_nr_rrc_csi_ReportingBand, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_csi_ReportingBand },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_reportFreqConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_reportFreqConfiguration, T_reportFreqConfiguration_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_codebookConfig_N1_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 2, "n3" },
+ { 3, "n4" },
+ { 4, "n6" },
+ { 5, "n8" },
+ { 6, "n12" },
+ { 7, "n16" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_codebookConfig_N1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 8, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_codebookConfig_N2_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 2, "n3" },
+ { 3, "n4" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_codebookConfig_N2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_subType_vals[] = {
+ { 0, "typeI-SinglePanel" },
+ { 1, "typeI-MultiPanel" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_subType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_codebookMode_vals[] = {
+ { 0, "config1" },
+ { 1, "config2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_codebookMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_numberOfPanels_vals[] = {
+ { 0, "panels2" },
+ { 1, "panels4" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_numberOfPanels(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_T_singlePanel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BIT_STRING_SIZE_6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 6, 6, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_T_multiPanel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_codebookSubsetRestrictionType1_vals[] = {
+ { 0, "singlePanel" },
+ { 1, "singlePanel2TX" },
+ { 2, "multiPanel" },
+ { 3, "singlePanelCodebookSubsetRestriction-i2" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_codebookSubsetRestrictionType1_choice[] = {
+ { 0, &hf_nr_rrc_singlePanel , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_singlePanel },
+ { 1, &hf_nr_rrc_singlePanel2TX, ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_6 },
+ { 2, &hf_nr_rrc_multiPanel , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_multiPanel },
+ { 3, &hf_nr_rrc_singlePanelCodebookSubsetRestriction_i2, ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_16 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_codebookSubsetRestrictionType1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_codebookSubsetRestrictionType1, T_codebookSubsetRestrictionType1_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_ri_Restriction_vals[] = {
+ { 0, "typeI-SinglePanelRI-Restriction" },
+ { 1, "typeI-MultiPanelRI-Restriction" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_ri_Restriction_choice[] = {
+ { 0, &hf_nr_rrc_typeI_SinglePanelRI_Restriction, ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_8 },
+ { 1, &hf_nr_rrc_typeI_MultiPanelRI_Restriction, ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_4 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_ri_Restriction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_ri_Restriction, T_ri_Restriction_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_type1_sequence[] = {
+ { &hf_nr_rrc_subType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_subType },
+ { &hf_nr_rrc_codebookMode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_codebookMode },
+ { &hf_nr_rrc_numberOfPanels, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_numberOfPanels },
+ { &hf_nr_rrc_codebookSubsetRestrictionType1, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_codebookSubsetRestrictionType1 },
+ { &hf_nr_rrc_ri_Restriction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_ri_Restriction },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_type1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_type1, T_type1_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_subType_01_vals[] = {
+ { 0, "typeII" },
+ { 1, "typeII-PortSelection" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_subType_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_phaseAlphabetSize_vals[] = {
+ { 0, "n4" },
+ { 1, "n8" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_phaseAlphabetSize(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_numberOfBeams_vals[] = {
+ { 0, "beams2" },
+ { 1, "beams3" },
+ { 2, "beams4" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_numberOfBeams(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_portSelectionSamplingSize_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 2, "n3" },
+ { 3, "n4" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_portSelectionSamplingSize(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_T_codebookSubsetRestrictionType2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_BIT_STRING_SIZE_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 2, 2, FALSE, NULL, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_ri_Restriction_01_vals[] = {
+ { 0, "typeII-RI-Restriction" },
+ { 1, "typeII-PortSelectionRI-Restriction" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_ri_Restriction_01_choice[] = {
+ { 0, &hf_nr_rrc_typeII_RI_Restriction, ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_2 },
+ { 1, &hf_nr_rrc_typeII_PortSelectionRI_Restriction, ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_2 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_ri_Restriction_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_ri_Restriction_01, T_ri_Restriction_01_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_type2_sequence[] = {
+ { &hf_nr_rrc_subType_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_subType_01 },
+ { &hf_nr_rrc_phaseAlphabetSize, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_phaseAlphabetSize },
+ { &hf_nr_rrc_subbandAmplitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_numberOfBeams, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_numberOfBeams },
+ { &hf_nr_rrc_portSelectionSamplingSize, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_portSelectionSamplingSize },
+ { &hf_nr_rrc_codebookSubsetRestrictionType2, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_codebookSubsetRestrictionType2 },
+ { &hf_nr_rrc_ri_Restriction_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_ri_Restriction_01 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_type2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_type2, T_type2_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_codebookType_vals[] = {
+ { 0, "type1" },
+ { 1, "type2" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_codebookType_choice[] = {
+ { 0, &hf_nr_rrc_type1 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_type1 },
+ { 1, &hf_nr_rrc_type2 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_type2 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_codebookType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_codebookType, T_codebookType_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CodebookConfig_sequence[] = {
+ { &hf_nr_rrc_codebookConfig_N1, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_codebookConfig_N1 },
+ { &hf_nr_rrc_codebookConfig_N2, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_codebookConfig_N2 },
+ { &hf_nr_rrc_codebookType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_codebookType },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CodebookConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CodebookConfig, CodebookConfig_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_nrofCQIsPerReport_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_nrofCQIsPerReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_2_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 2U, 4U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_enabled_sequence[] = {
+ { &hf_nr_rrc_nrofBeamsToReport, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_2_4 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_enabled(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_enabled, T_enabled_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_nrofReportedRS_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 2, "n3" },
+ { 3, "n4" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_nrofReportedRS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_disabled_sequence[] = {
+ { &hf_nr_rrc_nrofReportedRS, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_nrofReportedRS },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_disabled(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_disabled, T_disabled_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_groupBasedBeamReporting_vals[] = {
+ { 0, "enabled" },
+ { 1, "disabled" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_groupBasedBeamReporting_choice[] = {
+ { 0, &hf_nr_rrc_enabled , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_enabled },
+ { 1, &hf_nr_rrc_disabled , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_disabled },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_groupBasedBeamReporting(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_groupBasedBeamReporting, T_groupBasedBeamReporting_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_cqi_Table_vals[] = {
+ { 0, "dl-64QAM" },
+ { 1, "dl-256QAM" },
+ { 2, "urllc1" },
+ { 3, "urllc2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_cqi_Table(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_subbandSize_vals[] = {
+ { 0, "value1" },
+ { 1, "value2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_subbandSize(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_bler_Target_vals[] = {
+ { 0, "v0dot1" },
+ { 1, "spare3" },
+ { 2, "space2" },
+ { 3, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_bler_Target(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CSI_ReportConfig_sequence[] = {
+ { &hf_nr_rrc_reportConfigId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_ReportConfigId },
+ { &hf_nr_rrc_reportConfigType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_reportConfigType },
+ { &hf_nr_rrc_reportQuantity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_reportQuantity },
+ { &hf_nr_rrc_reportFreqConfiguration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_reportFreqConfiguration },
+ { &hf_nr_rrc_measRestrictionTimeForChannel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_measRestrictionTimeForInterference, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_codebookConfig, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CodebookConfig },
+ { &hf_nr_rrc_nrofCQIsPerReport, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_nrofCQIsPerReport },
+ { &hf_nr_rrc_groupBasedBeamReporting, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_groupBasedBeamReporting },
+ { &hf_nr_rrc_cqi_Table , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_cqi_Table },
+ { &hf_nr_rrc_subbandSize , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_subbandSize },
+ { &hf_nr_rrc_bler_Target , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_bler_Target },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CSI_ReportConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CSI_ReportConfig, CSI_ReportConfig_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofCSI_Reports_OF_CSI_ReportConfig_sequence_of[1] = {
+ { &hf_nr_rrc_csi_ReportConfigs_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_ReportConfig },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_Reports_OF_CSI_ReportConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_Reports_OF_CSI_ReportConfig, SEQUENCE_SIZE_1_maxNrofCSI_Reports_OF_CSI_ReportConfig_sequence_of,
+ 1, maxNrofCSI_Reports, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_CSI_MeasId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofCSI_MeasId_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_CSI_RS_ConfigurationId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_measQuantity_vals[] = {
+ { 0, "channel" },
+ { 1, "interference" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_measQuantity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CSI_MeasIdToAddMod_sequence[] = {
+ { &hf_nr_rrc_csi_measId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_MeasId },
+ { &hf_nr_rrc_csi_RS_resourceConfigId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_RS_ConfigurationId },
+ { &hf_nr_rrc_csi_reportConfigId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_ReportConfigId },
+ { &hf_nr_rrc_measQuantity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_measQuantity },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CSI_MeasIdToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CSI_MeasIdToAddMod, CSI_MeasIdToAddMod_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofCSI_MeasId_OF_CSI_MeasIdToAddMod_sequence_of[1] = {
+ { &hf_nr_rrc_csi_MeasIdToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_MeasIdToAddMod },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_MeasId_OF_CSI_MeasIdToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_MeasId_OF_CSI_MeasIdToAddMod, SEQUENCE_SIZE_1_maxNrofCSI_MeasId_OF_CSI_MeasIdToAddMod_sequence_of,
+ 1, maxNrofCSI_MeasId, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 6U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_reportTrigger_sequence[] = {
+ { &hf_nr_rrc_reportTriggerSize, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_6 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_reportTrigger(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_reportTrigger, T_reportTrigger_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CSI_MeasConfig_sequence[] = {
+ { &hf_nr_rrc_csi_ResourceConfigs, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_ResourceConfigurations_OF_CSI_ResourceConfig },
+ { &hf_nr_rrc_csi_ReportConfigs, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_Reports_OF_CSI_ReportConfig },
+ { &hf_nr_rrc_csi_MeasIdToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_MeasId_OF_CSI_MeasIdToAddMod },
+ { &hf_nr_rrc_reportTrigger, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_reportTrigger },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CSI_MeasConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CSI_MeasConfig, CSI_MeasConfig_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t PUCCH_ResourceSet_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_PUCCH_ResourceSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_PUCCH_ResourceSet, PUCCH_ResourceSet_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_1_OF_PUCCH_ResourceSet_sequence_of[1] = {
+ { &hf_nr_rrc_resourceSets_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_PUCCH_ResourceSet },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_1_OF_PUCCH_ResourceSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_1_OF_PUCCH_ResourceSet, SEQUENCE_SIZE_1_1_OF_PUCCH_ResourceSet_sequence_of,
+ 1, 1, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_interslotFrequencyHopping_vals[] = {
+ { 0, "enabled" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_interslotFrequencyHopping(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_nrofSlots_vals[] = {
+ { 0, "n1" },
+ { 1, "ny1" },
+ { 2, "y2" },
+ { 3, "y3" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_nrofSlots(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_setup_05_sequence[] = {
+ { &hf_nr_rrc_interslotFrequencyHopping, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_interslotFrequencyHopping },
+ { &hf_nr_rrc_nrofSlots , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_nrofSlots },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup_05, T_setup_05_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_format1_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_format1_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_07 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_05 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_format1, T_format1_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 7U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_simultaneousHARQ_ACK_CSI_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_simultaneousHARQ_ACK_CSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_setup_06_sequence[] = {
+ { &hf_nr_rrc_maxCodeRate , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_7 },
+ { &hf_nr_rrc_nrofPRBs , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_1_16 },
+ { &hf_nr_rrc_simultaneousHARQ_ACK_CSI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_simultaneousHARQ_ACK_CSI },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup_06, T_setup_06_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_format2_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_format2_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_08 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_06 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_format2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_format2, T_format2_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_interslotFrequencyHopping_01_vals[] = {
+ { 0, "enabled" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_interslotFrequencyHopping_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_additionalDMRS_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_additionalDMRS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_nrofSlots_01_vals[] = {
+ { 0, "n1" },
+ { 1, "y1" },
+ { 2, "y2" },
+ { 3, "y3" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_nrofSlots_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_pi2PBSK_vals[] = {
+ { 0, "enabled" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_pi2PBSK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_setup_07_sequence[] = {
+ { &hf_nr_rrc_interslotFrequencyHopping_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_interslotFrequencyHopping_01 },
+ { &hf_nr_rrc_additionalDMRS, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_additionalDMRS },
+ { &hf_nr_rrc_maxCodeRate , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_7 },
+ { &hf_nr_rrc_nrofSlots_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_nrofSlots_01 },
+ { &hf_nr_rrc_pi2PBSK , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_pi2PBSK },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup_07, T_setup_07_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_format3_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_format3_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_09 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_07 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_format3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_format3, T_format3_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_interslotFrequencyHopping_02_vals[] = {
+ { 0, "enabled" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_interslotFrequencyHopping_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_additionalDMRS_01_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_additionalDMRS_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_nrofSlots_02_vals[] = {
+ { 0, "n1" },
+ { 1, "y1" },
+ { 2, "y2" },
+ { 3, "y3" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_nrofSlots_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_pi2PBSK_01_vals[] = {
+ { 0, "enabled" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_pi2PBSK_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_setup_08_sequence[] = {
+ { &hf_nr_rrc_interslotFrequencyHopping_02, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_interslotFrequencyHopping_02 },
+ { &hf_nr_rrc_additionalDMRS_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_additionalDMRS_01 },
+ { &hf_nr_rrc_maxCodeRate , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_7 },
+ { &hf_nr_rrc_nrofSlots_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_nrofSlots_02 },
+ { &hf_nr_rrc_pi2PBSK_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_pi2PBSK_01 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup_08, T_setup_08_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_format4_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_format4_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_08 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_format4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_format4, T_format4_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SchedulingRequestResource_Config_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SchedulingRequestResource_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SchedulingRequestResource_Config, SchedulingRequestResource_Config_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofSchedulingRequestResoruces_OF_SchedulingRequestResource_Config_sequence_of[1] = {
+ { &hf_nr_rrc_setup_item_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SchedulingRequestResource_Config },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSchedulingRequestResoruces_OF_SchedulingRequestResource_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSchedulingRequestResoruces_OF_SchedulingRequestResource_Config, SEQUENCE_SIZE_1_maxNrofSchedulingRequestResoruces_OF_SchedulingRequestResource_Config_sequence_of,
+ 1, maxNrofSchedulingRequestResoruces, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_schedulingRequestResources_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_schedulingRequestResources_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_11 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSchedulingRequestResoruces_OF_SchedulingRequestResource_Config },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_schedulingRequestResources(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_schedulingRequestResources, T_schedulingRequestResources_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t PUCCH_Config_sequence[] = {
+ { &hf_nr_rrc_resourceSets , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_1_OF_PUCCH_ResourceSet },
+ { &hf_nr_rrc_format1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_format1 },
+ { &hf_nr_rrc_format2 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_format2 },
+ { &hf_nr_rrc_format3 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_format3 },
+ { &hf_nr_rrc_format4 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_format4 },
+ { &hf_nr_rrc_schedulingRequestResources, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_schedulingRequestResources },
+ { &hf_nr_rrc_tpc_PUCCH_RNTI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BIT_STRING_SIZE_16 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_PUCCH_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_PUCCH_Config, PUCCH_Config_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_codeBlockGroupTransmission_vals[] = {
+ { 0, "true" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_codeBlockGroupTransmission(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_maxCodeBlockGroupsPerTransportBlock_01_vals[] = {
+ { 0, "n2" },
+ { 1, "n4" },
+ { 2, "n6" },
+ { 3, "n8" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_maxCodeBlockGroupsPerTransportBlock_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_dmrs_Type_01_vals[] = {
+ { 0, "type1" },
+ { 1, "type2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_dmrs_Type_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_dmrs_AdditionalPosition_01_vals[] = {
+ { 0, "pos0" },
+ { 1, "pos1" },
+ { 2, "pos2" },
+ { 3, "pos3" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_dmrs_AdditionalPosition_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_nrofPorts_02_vals[] = {
+ { 0, "n1" },
+ { 1, "n2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_nrofPorts_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_setup_10_sequence[] = {
+ { &hf_nr_rrc_frequencyDensity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_timeDensity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_nrofPorts_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_nrofPorts_02 },
+ { &hf_nr_rrc_resourceElementOffset, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup_10, T_setup_10_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_cp_OFDM_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_cp_OFDM_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_14 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_10 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_cp_OFDM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_cp_OFDM, T_cp_OFDM_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_timeDensity_vals[] = {
+ { 0, "d1" },
+ { 1, "d2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_timeDensity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_setup_11_sequence[] = {
+ { &hf_nr_rrc_sampleDensity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_timeDensity_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_timeDensity },
+ { &hf_nr_rrc_sequence , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup_11, T_setup_11_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_dft_S_OFDM_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_dft_S_OFDM_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_15 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_11 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_dft_S_OFDM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_dft_S_OFDM, T_dft_S_OFDM_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t Uplink_PTRS_Config_sequence[] = {
+ { &hf_nr_rrc_cp_OFDM , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_cp_OFDM },
+ { &hf_nr_rrc_dft_S_OFDM , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_dft_S_OFDM },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_Uplink_PTRS_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_Uplink_PTRS_Config, Uplink_PTRS_Config_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_phaseTracking_RS_01_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_phaseTracking_RS_01_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_12 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_Uplink_PTRS_Config },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_phaseTracking_RS_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_phaseTracking_RS_01, T_phaseTracking_RS_01_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_tpcAccumulation_vals[] = {
+ { 0, "enabled" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_tpcAccumulation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_frequencyHopping_vals[] = {
+ { 0, "mode1" },
+ { 1, "mode2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_frequencyHopping(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_rateMatching_vals[] = {
+ { 0, "fullBufferRM" },
+ { 1, "limitedBufferRM" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_rateMatching(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_mcs_Table_01_vals[] = {
+ { 0, "ul-64QAM" },
+ { 1, "ul-256QAM" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_mcs_Table_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_mcs_TableTransformPrecoder_vals[] = {
+ { 0, "ul-64QAM" },
+ { 1, "ul-256QAM" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_mcs_TableTransformPrecoder(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_transformPrecoder_vals[] = {
+ { 0, "enabled" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_transformPrecoder(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_rbg_Size_01_vals[] = {
+ { 0, "config1" },
+ { 1, "config2" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_rbg_Size_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t BetaOffsets_sequence[] = {
+ { &hf_nr_rrc_betaOffsetACK_Index1, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_31 },
+ { &hf_nr_rrc_betaOffsetACK_Index2, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_31 },
+ { &hf_nr_rrc_betaOffsetACK_Index3, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_31 },
+ { &hf_nr_rrc_betaOffsetCSI_part1_Index1, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_31 },
+ { &hf_nr_rrc_betaOffsetCSI_part1_Index2, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_31 },
+ { &hf_nr_rrc_betaOffsetCSI_part2_Index1, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_31 },
+ { &hf_nr_rrc_betaOffsetCSI_part2_Index2, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_31 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_BetaOffsets(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_BetaOffsets, BetaOffsets_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_4_OF_BetaOffsets_sequence_of[1] = {
+ { &hf_nr_rrc_dynamic_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BetaOffsets },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_4_OF_BetaOffsets(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_4_OF_BetaOffsets, SEQUENCE_SIZE_1_4_OF_BetaOffsets_sequence_of,
+ 1, 4, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_setup_09_vals[] = {
+ { 0, "dynamic" },
+ { 1, "semiStatic" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_setup_09_choice[] = {
+ { 0, &hf_nr_rrc_dynamic , ASN1_NO_EXTENSIONS , dissect_nr_rrc_SEQUENCE_SIZE_1_4_OF_BetaOffsets },
+ { 1, &hf_nr_rrc_semiStatic , ASN1_NO_EXTENSIONS , dissect_nr_rrc_BetaOffsets },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup_09, T_setup_09_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_uci_on_PUSCH_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_uci_on_PUSCH_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_13 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_09 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_uci_on_PUSCH(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_uci_on_PUSCH, T_uci_on_PUSCH_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_xOverhead_01_vals[] = {
+ { 0, "n0" },
+ { 1, "n6" },
+ { 2, "n12" },
+ { 3, "n18" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_xOverhead_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t PUSCH_Config_sequence[] = {
+ { &hf_nr_rrc_codeBlockGroupTransmission_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_codeBlockGroupTransmission },
+ { &hf_nr_rrc_maxCodeBlockGroupsPerTransportBlock_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_maxCodeBlockGroupsPerTransportBlock_01 },
+ { &hf_nr_rrc_dmrs_Type_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_dmrs_Type_01 },
+ { &hf_nr_rrc_dmrs_AdditionalPosition_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_dmrs_AdditionalPosition_01 },
+ { &hf_nr_rrc_phaseTracking_RS_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_phaseTracking_RS_01 },
+ { &hf_nr_rrc_tpcAccumulation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_tpcAccumulation },
+ { &hf_nr_rrc_tcp_PUSCH_RNTI, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_BIT_STRING_SIZE_16 },
+ { &hf_nr_rrc_frequencyHopping, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_frequencyHopping },
+ { &hf_nr_rrc_rateMatching , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_rateMatching },
+ { &hf_nr_rrc_rateMatchResources, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_symbolAllocationIndexs, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_mcs_Table_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_mcs_Table_01 },
+ { &hf_nr_rrc_mcs_TableTransformPrecoder, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_mcs_TableTransformPrecoder },
+ { &hf_nr_rrc_transformPrecoder, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_transformPrecoder },
+ { &hf_nr_rrc_rbg_Size_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_rbg_Size_01 },
+ { &hf_nr_rrc_uci_on_PUSCH , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_uci_on_PUSCH },
+ { &hf_nr_rrc_xOverhead_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nr_rrc_T_xOverhead_01 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_PUSCH_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_PUSCH_Config, PUSCH_Config_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_SRS_ResourceSetId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofSRS_ResourceSets_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSetId_sequence_of[1] = {
+ { &hf_nr_rrc_srs_ResourceSetToReleaseList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SRS_ResourceSetId },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSetId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSetId, SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSetId_sequence_of,
+ 0, maxNrofSRS_ResourceSets, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_SRS_ResourceId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofSRS_Resources_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofSRS_ResourcesPerSet_OF_SRS_ResourceId_sequence_of[1] = {
+ { &hf_nr_rrc_srs_ResourcesIds_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SRS_ResourceId },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_ResourcesPerSet_OF_SRS_ResourceId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_ResourcesPerSet_OF_SRS_ResourceId, SEQUENCE_SIZE_1_maxNrofSRS_ResourcesPerSet_OF_SRS_ResourceId_sequence_of,
+ 1, maxNrofSRS_ResourcesPerSet, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SRS_ResourceSet_sequence[] = {
+ { &hf_nr_rrc_srs_ResourceSetId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SRS_ResourceSetId },
+ { &hf_nr_rrc_srs_ResourcesIds, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_ResourcesPerSet_OF_SRS_ResourceId },
+ { &hf_nr_rrc_aperiodicSRS_ResourceTrigger, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SRS_ResourceSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SRS_ResourceSet, SRS_ResourceSet_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSet_sequence_of[1] = {
+ { &hf_nr_rrc_srs_ResourceSetToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SRS_ResourceSet },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSet, SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSet_sequence_of,
+ 0, maxNrofSRS_ResourceSets, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_ResourceId_sequence_of[1] = {
+ { &hf_nr_rrc_srs_ResourceToReleaseList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SRS_ResourceId },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_ResourceId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_ResourceId, SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_ResourceId_sequence_of,
+ 1, maxNrofSRS_Resources, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_nrofSRS_Ports_vals[] = {
+ { 0, "port1" },
+ { 1, "ports2" },
+ { 2, "ports4" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_nrofSRS_Ports(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_transmissionComb_vals[] = {
+ { 0, "n2" },
+ { 1, "n4" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_transmissionComb(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 2U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_aperiodic_01_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_aperiodic_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_aperiodic_01, T_aperiodic_01_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_semi_persistent_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_semi_persistent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_semi_persistent, T_semi_persistent_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_periodic_01_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_periodic_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_periodic_01, T_periodic_01_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_resourceType_01_vals[] = {
+ { 0, "aperiodic" },
+ { 1, "semi-persistent" },
+ { 2, "periodic" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_resourceType_01_choice[] = {
+ { 0, &hf_nr_rrc_aperiodic_02 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_aperiodic_01 },
+ { 1, &hf_nr_rrc_semi_persistent, ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_semi_persistent },
+ { 2, &hf_nr_rrc_periodic_02 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_periodic_01 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_resourceType_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_resourceType_01, T_resourceType_01_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_periodicityAndOffset_02_vals[] = {
+ { 0, "sl2" },
+ { 1, "sl5" },
+ { 2, "sl10" },
+ { 3, "sl20" },
+ { 4, "sl40" },
+ { 5, "sl80" },
+ { 6, "sl160" },
+ { 7, "sl320" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_periodicityAndOffset_02_choice[] = {
+ { 0, &hf_nr_rrc_sl2 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_1 },
+ { 1, &hf_nr_rrc_sl5 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_4 },
+ { 2, &hf_nr_rrc_sl10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_9 },
+ { 3, &hf_nr_rrc_sl20 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_19 },
+ { 4, &hf_nr_rrc_sl40 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_39 },
+ { 5, &hf_nr_rrc_sl80 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_79 },
+ { 6, &hf_nr_rrc_sl160 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_159 },
+ { 7, &hf_nr_rrc_sl320 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_319 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_periodicityAndOffset_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_periodicityAndOffset_02, T_periodicityAndOffset_02_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_0_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 12U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_spatialRelationInfo_vals[] = {
+ { 0, "ssb-pbch" },
+ { 1, "csi-rs" },
+ { 2, "srs" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_spatialRelationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SRS_Resource_sequence[] = {
+ { &hf_nr_rrc_srs_ResourceId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SRS_ResourceId },
+ { &hf_nr_rrc_nrofSRS_Ports, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_nrofSRS_Ports },
+ { &hf_nr_rrc_transmissionComb, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_transmissionComb },
+ { &hf_nr_rrc_resourceMapping, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_freqDomainPosition, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_freqHopping , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_0_63 },
+ { &hf_nr_rrc_groupOrSequenceHopping, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_2 },
+ { &hf_nr_rrc_resourceType_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_resourceType_01 },
+ { &hf_nr_rrc_periodicityAndOffset_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_periodicityAndOffset_02 },
+ { &hf_nr_rrc_sequenceId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_antennaSwitching, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_carrierSwitching, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_cyclicShift , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_0_12 },
+ { &hf_nr_rrc_spatialRelationInfo, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_spatialRelationInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SRS_Resource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SRS_Resource, SRS_Resource_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_Resource_sequence_of[1] = {
+ { &hf_nr_rrc_srs_ResourceToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SRS_Resource },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_Resource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_Resource, SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_Resource_sequence_of,
+ 1, maxNrofSRS_Resources, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SRS_Config_sequence[] = {
+ { &hf_nr_rrc_srs_ResourceSetToReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSetId },
+ { &hf_nr_rrc_srs_ResourceSetToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSet },
+ { &hf_nr_rrc_srs_ResourceToReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_ResourceId },
+ { &hf_nr_rrc_srs_ResourceToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_Resource },
+ { &hf_nr_rrc_tpc_SRS_RNTI , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BIT_STRING_SIZE_16 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SRS_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SRS_Config, SRS_Config_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_transformPrecoder_01_vals[] = {
+ { 0, "enabled" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_transformPrecoder_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_repK_RV_vals[] = {
+ { 0, "s1-0231" },
+ { 1, "s2-0303" },
+ { 2, "s3-0000" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_repK_RV(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 3, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_priodicity_vals[] = {
+ { 0, "sym2" },
+ { 1, "sym7" },
+ { 2, "ms0dot125" },
+ { 3, "ms0dot25" },
+ { 4, "ms0dot5" },
+ { 5, "ms1" },
+ { 6, "ms2" },
+ { 7, "ms5" },
+ { 8, "ms10" },
+ { 9, "ms20" },
+ { 10, "ms32" },
+ { 11, "ms40" },
+ { 12, "ms64" },
+ { 13, "ms80" },
+ { 14, "ms128" },
+ { 15, "ms160" },
+ { 16, "ms320" },
+ { 17, "ms640" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_T_priodicity_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_T_priodicity_vals);
+
+
+static int
+dissect_nr_rrc_T_priodicity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 18, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_setup_12_sequence[] = {
+ { &hf_nr_rrc_timeDomainOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_timeDomainAllocation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_frequencyDomainAllocation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_dmrs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_mcsAndTBS , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_repK , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup_12, T_setup_12_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_rrcConfiguredUplinkGrant_vals[] = {
+ { 0, "setup" },
+ { 1, "release" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_rrcConfiguredUplinkGrant_choice[] = {
+ { 0, &hf_nr_rrc_setup_16 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_12 },
+ { 1, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_rrcConfiguredUplinkGrant(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_rrcConfiguredUplinkGrant, T_rrcConfiguredUplinkGrant_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_uplink_sequence[] = {
+ { &hf_nr_rrc_periodicity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_powerControl , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_transformPrecoder_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_transformPrecoder_01 },
+ { &hf_nr_rrc_nrofHARQ_processes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_1_1 },
+ { &hf_nr_rrc_repK_RV , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_repK_RV },
+ { &hf_nr_rrc_priodicity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_priodicity },
+ { &hf_nr_rrc_rrcConfiguredUplinkGrant, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_rrcConfiguredUplinkGrant },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_uplink(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_uplink, T_uplink_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SPS_Config_sequence[] = {
+ { &hf_nr_rrc_uplink , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_uplink },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SPS_Config(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SPS_Config, SPS_Config_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_own_sequence[] = {
+ { &hf_nr_rrc_cif_Presence , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_own(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_own, T_own_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_ServCellIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 16U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 4U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_other_sequence[] = {
+ { &hf_nr_rrc_schedulingCellId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ServCellIndex },
+ { &hf_nr_rrc_pdsch_Start , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_1_4 },
+ { &hf_nr_rrc_cif_InSchedulingCell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_1_7 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_other(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_other, T_other_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_schedulingCellInfo_vals[] = {
+ { 0, "own" },
+ { 1, "other" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_schedulingCellInfo_choice[] = {
+ { 0, &hf_nr_rrc_own , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_own },
+ { 1, &hf_nr_rrc_other , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_other },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_schedulingCellInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_schedulingCellInfo, T_schedulingCellInfo_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CrossCarrierSchedulingConfig_sequence[] = {
+ { &hf_nr_rrc_schedulingCellInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_schedulingCellInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CrossCarrierSchedulingConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CrossCarrierSchedulingConfig, CrossCarrierSchedulingConfig_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_ue_BeamLockFunction_vals[] = {
+ { 0, "enabled" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_ue_BeamLockFunction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_pathlossReferenceLinking_vals[] = {
+ { 0, "pCell" },
+ { 1, "sCell" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_pathlossReferenceLinking(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t ServingCellConfigDedicated_sequence[] = {
+ { &hf_nr_rrc_tdd_UL_DL_configurationDedicated, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_tdd_UL_DL_configurationDedicated },
+ { &hf_nr_rrc_bandwidthParts, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BandwidthParts },
+ { &hf_nr_rrc_dataScramblingIdentity, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_pdcch_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_PDCCH_Config },
+ { &hf_nr_rrc_pdsch_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_PDSCH_Config },
+ { &hf_nr_rrc_csi_MeasConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_CSI_MeasConfig },
+ { &hf_nr_rrc_pucch_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_PUCCH_Config },
+ { &hf_nr_rrc_pusch_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_PUSCH_Config },
+ { &hf_nr_rrc_srs_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SRS_Config },
+ { &hf_nr_rrc_sps_Config , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SPS_Config },
+ { &hf_nr_rrc_crossCarrierSchedulingConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_CrossCarrierSchedulingConfig },
+ { &hf_nr_rrc_tag_Id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_TAG_Id },
+ { &hf_nr_rrc_ue_BeamLockFunction, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_ue_BeamLockFunction },
+ { &hf_nr_rrc_pathlossReferenceLinking, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_pathlossReferenceLinking },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ServingCellConfigDedicated(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ServingCellConfigDedicated, ServingCellConfigDedicated_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SpCellConfig_sequence[] = {
+ { &hf_nr_rrc_reconfigurationWithSync, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_reconfigurationWithSync },
+ { &hf_nr_rrc_spCellConfigDedicated, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ServingCellConfigDedicated },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SpCellConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SpCellConfig, SpCellConfig_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_SCellIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 31U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SCellConfig_sequence[] = {
+ { &hf_nr_rrc_sCellIndex , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SCellIndex },
+ { &hf_nr_rrc_sCellConfigCommon, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ServingCellConfigCommon },
+ { &hf_nr_rrc_sCellConfigDedicated, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ServingCellConfigDedicated },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SCellConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SCellConfig, SCellConfig_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SCellToAddModList_sequence_of[1] = {
+ { &hf_nr_rrc_SCellToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SCellConfig },
+};
+
+static int
+dissect_nr_rrc_SCellToAddModList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SCellToAddModList, SCellToAddModList_sequence_of,
+ 1, maxNrofSCells, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SCellToReleaseList_sequence_of[1] = {
+ { &hf_nr_rrc_SCellToReleaseList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SCellIndex },
+};
+
+static int
+dissect_nr_rrc_SCellToReleaseList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SCellToReleaseList, SCellToReleaseList_sequence_of,
+ 1, maxNrofSCells, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t CellGroupConfig_sequence[] = {
+ { &hf_nr_rrc_cellGroupId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CellGroupId },
+ { &hf_nr_rrc_rlc_BearerToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxLCH_OF_LCH_Config },
+ { &hf_nr_rrc_rlc_BearerToReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxLCH_OF_LogicalChannelIdentity },
+ { &hf_nr_rrc_mac_CellGroupConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_MAC_CellGroupConfig },
+ { &hf_nr_rrc_rlf_TimersAndConstants, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RLF_TimersAndConstants },
+ { &hf_nr_rrc_physical_CellGroupConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_PhysicalCellGroupConfig },
+ { &hf_nr_rrc_spCellConfig , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SpCellConfig },
+ { &hf_nr_rrc_sCellToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SCellToAddModList },
+ { &hf_nr_rrc_sCellToReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SCellToReleaseList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CellGroupConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CellGroupConfig, CellGroupConfig_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupConfig_sequence_of[1] = {
+ { &hf_nr_rrc_secondaryCellGroupToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CellGroupConfig },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupConfig, SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupConfig_sequence_of,
+ 1, maxSCellGroups, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupId_sequence_of[1] = {
+ { &hf_nr_rrc_secondaryCellGroupToReleaseList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CellGroupId },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupId, SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupId_sequence_of,
+ 1, maxSCellGroups, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_MeasObjectId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxNrofObjectId, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasObjectToRemoveList_sequence_of[1] = {
+ { &hf_nr_rrc_MeasObjectToRemoveList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasObjectId },
+};
+
+static int
+dissect_nr_rrc_MeasObjectToRemoveList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasObjectToRemoveList, MeasObjectToRemoveList_sequence_of,
+ 1, maxNrofObjectId, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_periodicityAndOffset_vals[] = {
+ { 0, "sf5" },
+ { 1, "sf10" },
+ { 2, "sf20" },
+ { 3, "sf40" },
+ { 4, "sf80" },
+ { 5, "sf160" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_periodicityAndOffset_choice[] = {
+ { 0, &hf_nr_rrc_sf5 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_4 },
+ { 1, &hf_nr_rrc_sf10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_9 },
+ { 2, &hf_nr_rrc_sf20 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_19 },
+ { 3, &hf_nr_rrc_sf40 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_39 },
+ { 4, &hf_nr_rrc_sf80 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_79 },
+ { 5, &hf_nr_rrc_sf160 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_159 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_periodicityAndOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_periodicityAndOffset, T_periodicityAndOffset_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_duration_vals[] = {
+ { 0, "sf1" },
+ { 1, "sf5" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_duration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_setup_02_vals[] = {
+ { 0, "shortBitmap" },
+ { 1, "mediumBitmap" },
+ { 2, "longBitmap" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_setup_02_choice[] = {
+ { 0, &hf_nr_rrc_shortBitmap , ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_4 },
+ { 1, &hf_nr_rrc_mediumBitmap , ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_8 },
+ { 2, &hf_nr_rrc_longBitmap , ASN1_NO_EXTENSIONS , dissect_nr_rrc_BIT_STRING_SIZE_64 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_setup_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_setup_02, T_setup_02_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_ssb_ToMeasure_vals[] = {
+ { 0, "release" },
+ { 1, "setup" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_ssb_ToMeasure_choice[] = {
+ { 0, &hf_nr_rrc_release , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 1, &hf_nr_rrc_setup_02 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_setup_02 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_ssb_ToMeasure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_ssb_ToMeasure, T_ssb_ToMeasure_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_smtc1_sequence[] = {
+ { &hf_nr_rrc_periodicityAndOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_periodicityAndOffset },
+ { &hf_nr_rrc_duration , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_duration },
+ { &hf_nr_rrc_ssb_ToMeasure, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_ssb_ToMeasure },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_smtc1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_smtc1, T_smtc1_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_PhysicalCellId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_nr_rrc_PhysCellId(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofPCIsPerSMTC_OF_PhysicalCellId_sequence_of[1] = {
+ { &hf_nr_rrc_pci_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_PhysicalCellId },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofPCIsPerSMTC_OF_PhysicalCellId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofPCIsPerSMTC_OF_PhysicalCellId, SEQUENCE_SIZE_1_maxNrofPCIsPerSMTC_OF_PhysicalCellId_sequence_of,
+ 1, maxNrofPCIsPerSMTC, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_smtc2_sequence[] = {
+ { &hf_nr_rrc_pci_List , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofPCIsPerSMTC_OF_PhysicalCellId },
+ { &hf_nr_rrc_periodicty , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_smtc2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_smtc2, T_smtc2_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SSB_MeasurementTimingConfiguration_sequence[] = {
+ { &hf_nr_rrc_smtc1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_smtc1 },
+ { &hf_nr_rrc_smtc2 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_smtc2 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_SSB_MeasurementTimingConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SSB_MeasurementTimingConfiguration, SSB_MeasurementTimingConfiguration_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_present_sequence[] = {
+ { &hf_nr_rrc_frequencyOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_subcarrierSpacing_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SubcarrierSpacing },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_present(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_present, T_present_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_notPresent_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_notPresent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_notPresent, T_notPresent_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_ssbPresence_vals[] = {
+ { 0, "present" },
+ { 1, "notPresent" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_ssbPresence_choice[] = {
+ { 0, &hf_nr_rrc_present , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_present },
+ { 1, &hf_nr_rrc_notPresent , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_notPresent },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_ssbPresence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_ssbPresence, T_ssbPresence_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_csi_rs_measurementBW_size_vals[] = {
+ { 0, "size24" },
+ { 1, "size48" },
+ { 2, "size96" },
+ { 3, "size192" },
+ { 4, "size268" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_csi_rs_measurementBW_size(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 5, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_csi_rs_measurement_BW_start_vals[] = {
+ { 0, "ffsTypeAndValue" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_csi_rs_measurement_BW_start(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_associated_SSB_vals[] = {
+ { 0, "ffsTypeAndValue" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_associated_SSB(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_csi_rs_MeasurementBW_sequence[] = {
+ { &hf_nr_rrc_csi_rs_measurementBW_size, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_csi_rs_measurementBW_size },
+ { &hf_nr_rrc_csi_rs_measurement_BW_start, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_csi_rs_measurement_BW_start },
+ { &hf_nr_rrc_associated_SSB, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_associated_SSB },
+ { &hf_nr_rrc_qcled_SSB , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_isServingCellMO, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_csi_rs_MeasurementBW(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_csi_rs_MeasurementBW, T_csi_rs_MeasurementBW_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_CSI_RS_ResourceId_RRM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, maxNrofCSI_RS_ResourcesRRM_1, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_slotConfig_vals[] = {
+ { 0, "ms5" },
+ { 1, "ms10" },
+ { 2, "ms20" },
+ { 3, "ms40" },
+ { 4, "ms80" },
+ { 5, "ms160" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_slotConfig_choice[] = {
+ { 0, &hf_nr_rrc_ms5 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_4 },
+ { 1, &hf_nr_rrc_ms10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_9 },
+ { 2, &hf_nr_rrc_ms20 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_19 },
+ { 3, &hf_nr_rrc_ms40 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_39 },
+ { 4, &hf_nr_rrc_ms80 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_79 },
+ { 5, &hf_nr_rrc_ms160 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0_159 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_slotConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_slotConfig, T_slotConfig_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CSI_RS_Resource_Mobility_sequence[] = {
+ { &hf_nr_rrc_csi_rs_ResourceId_RRM, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_RS_ResourceId_RRM },
+ { &hf_nr_rrc_cellId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_PhysicalCellId },
+ { &hf_nr_rrc_slotConfig , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_slotConfig },
+ { &hf_nr_rrc_resourceElementMappingPattern, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_sequenceGenerationConfig, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CSI_RS_Resource_Mobility(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CSI_RS_Resource_Mobility, CSI_RS_Resource_Mobility_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesRRM_OF_CSI_RS_Resource_Mobility_sequence_of[1] = {
+ { &hf_nr_rrc_csi_rs_ResourceList_Mobility_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_RS_Resource_Mobility },
+};
+
+static int
+dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesRRM_OF_CSI_RS_Resource_Mobility(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesRRM_OF_CSI_RS_Resource_Mobility, SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesRRM_OF_CSI_RS_Resource_Mobility_sequence_of,
+ 1, maxNrofCSI_RS_ResourcesRRM, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t CSI_RS_ResourceConfig_Mobility_sequence[] = {
+ { &hf_nr_rrc_csi_rs_MeasurementBW, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_csi_rs_MeasurementBW },
+ { &hf_nr_rrc_subcarrierSpacing_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SubcarrierSpacing },
+ { &hf_nr_rrc_csi_rs_ResourceList_Mobility, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesRRM_OF_CSI_RS_Resource_Mobility },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CSI_RS_ResourceConfig_Mobility(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CSI_RS_ResourceConfig_Mobility, CSI_RS_ResourceConfig_Mobility_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ReferenceSignalConfig_sequence[] = {
+ { &hf_nr_rrc_ssb_MeasurementTimingConfiguration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SSB_MeasurementTimingConfiguration },
+ { &hf_nr_rrc_ssbPresence , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_ssbPresence },
+ { &hf_nr_rrc_csi_rs_ResourceConfig_Mobility, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_CSI_RS_ResourceConfig_Mobility },
+ { &hf_nr_rrc_useServingCellTimingForSync, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ReferenceSignalConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ReferenceSignalConfig, ReferenceSignalConfig_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_RSRP_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 97U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_RSRQ_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 34U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_SINR_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 127U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t ThresholdNR_sequence[] = {
+ { &hf_nr_rrc_threshold_RSRP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RSRP_Range },
+ { &hf_nr_rrc_threshold_RSRQ, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RSRQ_Range },
+ { &hf_nr_rrc_threshold_SINR, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SINR_Range },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ThresholdNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ThresholdNR, ThresholdNR_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_2_maxNroSS_BlocksToAverage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 2U, maxNroSS_BlocksToAverage, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_2_maxNroCSI_RS_ResourcesToAverage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 2U, maxNroCSI_RS_ResourcesToAverage, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_maxQuantityConfigId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxQuantityConfigId, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_Q_OffsetRange_vals[] = {
+ { 0, "dB-24" },
+ { 1, "dB-22" },
+ { 2, "dB-20" },
+ { 3, "dB-18" },
+ { 4, "dB-16" },
+ { 5, "dB-14" },
+ { 6, "dB-12" },
+ { 7, "dB-10" },
+ { 8, "dB-8" },
+ { 9, "dB-6" },
+ { 10, "dB-5" },
+ { 11, "dB-4" },
+ { 12, "dB-3" },
+ { 13, "dB-2" },
+ { 14, "dB-1" },
+ { 15, "dB0" },
+ { 16, "dB1" },
+ { 17, "dB2" },
+ { 18, "dB3" },
+ { 19, "dB4" },
+ { 20, "dB5" },
+ { 21, "dB6" },
+ { 22, "dB8" },
+ { 23, "dB10" },
+ { 24, "dB12" },
+ { 25, "dB14" },
+ { 26, "dB16" },
+ { 27, "dB18" },
+ { 28, "dB20" },
+ { 29, "dB22" },
+ { 30, "dB24" },
+ { 0, NULL }
+};
+
+static value_string_ext nr_rrc_Q_OffsetRange_vals_ext = VALUE_STRING_EXT_INIT(nr_rrc_Q_OffsetRange_vals);
+
+
+static int
+dissect_nr_rrc_Q_OffsetRange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 31, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t Q_OffsetRangeList_sequence[] = {
+ { &hf_nr_rrc_rsrpOffsetSSB, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_Q_OffsetRange },
+ { &hf_nr_rrc_rsrqOffsetSSB, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_Q_OffsetRange },
+ { &hf_nr_rrc_sinrOffsetSSB, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_Q_OffsetRange },
+ { &hf_nr_rrc_rsrpOffsetCSI_RS, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_Q_OffsetRange },
+ { &hf_nr_rrc_rsrqOffsetCSI_RS, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_Q_OffsetRange },
+ { &hf_nr_rrc_sinrOffsetCSI_RS, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_Q_OffsetRange },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_Q_OffsetRangeList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_Q_OffsetRangeList, Q_OffsetRangeList_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_CellIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxNrofCellMeas, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t CellIndexList_sequence_of[1] = {
+ { &hf_nr_rrc_CellIndexList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CellIndex },
+};
+
+static int
+dissect_nr_rrc_CellIndexList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CellIndexList, CellIndexList_sequence_of,
+ 1, maxNrofCellMeas, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_maxNrofCellMeas(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxNrofCellMeas, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t CellsToAddMod_sequence[] = {
+ { &hf_nr_rrc_cellIndex , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_1_maxNrofCellMeas },
+ { &hf_nr_rrc_physCellId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_PhysCellId },
+ { &hf_nr_rrc_cellIndividualOffset, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_Q_OffsetRangeList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_CellsToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CellsToAddMod, CellsToAddMod_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CellsToAddModList_sequence_of[1] = {
+ { &hf_nr_rrc_CellsToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CellsToAddMod },
+};
+
+static int
+dissect_nr_rrc_CellsToAddModList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_CellsToAddModList, CellsToAddModList_sequence_of,
+ 1, maxNrofCellMeas, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_range_vals[] = {
+ { 0, "n4" },
+ { 1, "n8" },
+ { 2, "n12" },
+ { 3, "n16" },
+ { 4, "n24" },
+ { 5, "n32" },
+ { 6, "n48" },
+ { 7, "n64" },
+ { 8, "n84" },
+ { 9, "n96" },
+ { 10, "n128" },
+ { 11, "n168" },
+ { 12, "n252" },
+ { 13, "n504" },
+ { 14, "spare2" },
+ { 15, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 16, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t PhysCellIdRange_sequence[] = {
+ { &hf_nr_rrc_start , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_PhysCellId },
+ { &hf_nr_rrc_range , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_range },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_PhysCellIdRange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_PhysCellIdRange, PhysCellIdRange_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t BlackCellsToAddMod_sequence[] = {
+ { &hf_nr_rrc_cellIndex , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_1_maxNrofCellMeas },
+ { &hf_nr_rrc_physCellIdRange, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_PhysCellIdRange },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_BlackCellsToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_BlackCellsToAddMod, BlackCellsToAddMod_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t BlackCellsToAddModList_sequence_of[1] = {
+ { &hf_nr_rrc_BlackCellsToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BlackCellsToAddMod },
+};
+
+static int
+dissect_nr_rrc_BlackCellsToAddModList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_BlackCellsToAddModList, BlackCellsToAddModList_sequence_of,
+ 1, maxNrofCellMeas, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t WhiteCellsToAddMod_sequence[] = {
+ { &hf_nr_rrc_cellIndex , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_1_maxNrofCellMeas },
+ { &hf_nr_rrc_physCellIdRange, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_PhysCellIdRange },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_WhiteCellsToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_WhiteCellsToAddMod, WhiteCellsToAddMod_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t WhiteCellsToAddModList_sequence_of[1] = {
+ { &hf_nr_rrc_WhiteCellsToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_WhiteCellsToAddMod },
+};
+
+static int
+dissect_nr_rrc_WhiteCellsToAddModList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_WhiteCellsToAddModList, WhiteCellsToAddModList_sequence_of,
+ 1, maxNrofCellMeas, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasObjectNR_sequence[] = {
+ { &hf_nr_rrc_carrierFreq , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ARFCN_ValueNR },
+ { &hf_nr_rrc_referenceSignalConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ReferenceSignalConfig },
+ { &hf_nr_rrc_absThreshSS_BlocksConsolidation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ThresholdNR },
+ { &hf_nr_rrc_absThreshCSI_RS_Consolidation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ThresholdNR },
+ { &hf_nr_rrc_nroSS_BlocksToAverage, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_2_maxNroSS_BlocksToAverage },
+ { &hf_nr_rrc_nroCSI_RS_ResourcesToAverage, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_2_maxNroCSI_RS_ResourcesToAverage },
+ { &hf_nr_rrc_quantityConfigIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_1_maxQuantityConfigId },
+ { &hf_nr_rrc_offsetFreq , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_Q_OffsetRangeList },
+ { &hf_nr_rrc_cellsToRemoveList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_CellIndexList },
+ { &hf_nr_rrc_cellsToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_CellsToAddModList },
+ { &hf_nr_rrc_blackCellsToRemoveList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_CellIndexList },
+ { &hf_nr_rrc_blackCellsToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BlackCellsToAddModList },
+ { &hf_nr_rrc_whiteCellsToRemoveList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_CellIndexList },
+ { &hf_nr_rrc_whiteCellsToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_WhiteCellsToAddModList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasObjectNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasObjectNR, MeasObjectNR_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasObjectEUTRA_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasObjectEUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasObjectEUTRA, MeasObjectEUTRA_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_measObject_vals[] = {
+ { 0, "measObjectNR" },
+ { 1, "measObjectEUTRA" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_measObject_choice[] = {
+ { 0, &hf_nr_rrc_measObjectNR , ASN1_NO_EXTENSIONS , dissect_nr_rrc_MeasObjectNR },
+ { 1, &hf_nr_rrc_measObjectEUTRA, ASN1_NO_EXTENSIONS , dissect_nr_rrc_MeasObjectEUTRA },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_measObject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_measObject, T_measObject_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasObjectToAddMod_sequence[] = {
+ { &hf_nr_rrc_measObjectId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasObjectId },
+ { &hf_nr_rrc_measObject , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_measObject },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasObjectToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasObjectToAddMod, MeasObjectToAddMod_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasObjectToAddModList_sequence_of[1] = {
+ { &hf_nr_rrc_MeasObjectToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasObjectToAddMod },
+};
+
+static int
+dissect_nr_rrc_MeasObjectToAddModList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasObjectToAddModList, MeasObjectToAddModList_sequence_of,
+ 1, maxNrofObjectId, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_ReportConfigId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxNrofReportConfigId, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t ReportConfigToRemoveList_sequence_of[1] = {
+ { &hf_nr_rrc_ReportConfigToRemoveList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ReportConfigId },
+};
+
+static int
+dissect_nr_rrc_ReportConfigToRemoveList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ReportConfigToRemoveList, ReportConfigToRemoveList_sequence_of,
+ 1, maxNrofReportConfigId, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_rsType_01_vals[] = {
+ { 0, "ssb" },
+ { 1, "csi-rs" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_rsType_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_ReportInterval_vals[] = {
+ { 0, "ms120" },
+ { 1, "ms240" },
+ { 2, "ms480" },
+ { 3, "ms640" },
+ { 4, "ms1024" },
+ { 5, "ms2048" },
+ { 6, "ms5120" },
+ { 7, "ms10240" },
+ { 8, "min1" },
+ { 9, "min6" },
+ { 10, "min12" },
+ { 11, "min30" },
+ { 12, "min60" },
+ { 13, "spare3" },
+ { 14, "spare2" },
+ { 15, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_ReportInterval(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 16, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reportAmount_01_vals[] = {
+ { 0, "ffs" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_reportAmount_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasReportQuantity_sequence[] = {
+ { &hf_nr_rrc_rsrp_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_rsrq_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_sinr_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasReportQuantity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasReportQuantity, MeasReportQuantity_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_maxCellReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxCellReport, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_INTEGER_1_maxNroIndexesToReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxNroIndexesToReport, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t PeriodicalReportConfig_sequence[] = {
+ { &hf_nr_rrc_rsType_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_rsType_01 },
+ { &hf_nr_rrc_reportInterval, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ReportInterval },
+ { &hf_nr_rrc_reportAmount_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_reportAmount_01 },
+ { &hf_nr_rrc_reportQuantityCell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasReportQuantity },
+ { &hf_nr_rrc_maxReportCells, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_1_maxCellReport },
+ { &hf_nr_rrc_reportQuantityRsIndexes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_MeasReportQuantity },
+ { &hf_nr_rrc_maxNroRsIndexesToReport, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_1_maxNroIndexesToReport },
+ { &hf_nr_rrc_onlyReportBeamIds, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_PeriodicalReportConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_PeriodicalReportConfig, PeriodicalReportConfig_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_RSRPRange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_nr_rrc_RSRP_Range(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_RSRQRange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_nr_rrc_RSRQ_Range(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_SINRRange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_nr_rrc_SINR_Range(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_MeasTriggerQuantity_vals[] = {
+ { 0, "rsrp" },
+ { 1, "rsrq" },
+ { 2, "sinr" },
+ { 0, NULL }
+};
+
+static const per_choice_t MeasTriggerQuantity_choice[] = {
+ { 0, &hf_nr_rrc_rsrp , ASN1_NO_EXTENSIONS , dissect_nr_rrc_RSRPRange },
+ { 1, &hf_nr_rrc_rsrq , ASN1_NO_EXTENSIONS , dissect_nr_rrc_RSRQRange },
+ { 2, &hf_nr_rrc_sinr , ASN1_NO_EXTENSIONS , dissect_nr_rrc_SINRRange },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasTriggerQuantity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasTriggerQuantity, MeasTriggerQuantity_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_Hysteresis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 30U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_TimeToTrigger_vals[] = {
+ { 0, "ms0" },
+ { 1, "ms40" },
+ { 2, "ms64" },
+ { 3, "ms80" },
+ { 4, "ms100" },
+ { 5, "ms128" },
+ { 6, "ms160" },
+ { 7, "ms256" },
+ { 8, "ms320" },
+ { 9, "ms480" },
+ { 10, "ms512" },
+ { 11, "ms640" },
+ { 12, "ms1024" },
+ { 13, "ms1280" },
+ { 14, "ms2560" },
+ { 15, "ms5120" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_TimeToTrigger(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 16, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_eventA1_sequence[] = {
+ { &hf_nr_rrc_a1_Threshold , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasTriggerQuantity },
+ { &hf_nr_rrc_reportOnLeave, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_Hysteresis },
+ { &hf_nr_rrc_timeToTrigger, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_TimeToTrigger },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_eventA1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_eventA1, T_eventA1_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_eventA2_sequence[] = {
+ { &hf_nr_rrc_a2_Threshold , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasTriggerQuantity },
+ { &hf_nr_rrc_reportOnLeave, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_Hysteresis },
+ { &hf_nr_rrc_timeToTrigger, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_TimeToTrigger },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_eventA2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_eventA2, T_eventA2_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_MeasTriggerQuantityOffset_vals[] = {
+ { 0, "rsrp" },
+ { 1, "rsrq" },
+ { 2, "sinr" },
+ { 0, NULL }
+};
+
+static const per_choice_t MeasTriggerQuantityOffset_choice[] = {
+ { 0, &hf_nr_rrc_rsrp_01 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0 },
+ { 1, &hf_nr_rrc_rsrq_01 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0 },
+ { 2, &hf_nr_rrc_sinr_01 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_INTEGER_0 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasTriggerQuantityOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasTriggerQuantityOffset, MeasTriggerQuantityOffset_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_eventA3_sequence[] = {
+ { &hf_nr_rrc_a3_Offset , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasTriggerQuantityOffset },
+ { &hf_nr_rrc_reportOnLeave, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_Hysteresis },
+ { &hf_nr_rrc_timeToTrigger, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_TimeToTrigger },
+ { &hf_nr_rrc_useWhiteCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_eventA3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_eventA3, T_eventA3_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_eventA4_sequence[] = {
+ { &hf_nr_rrc_a4_Threshold , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasTriggerQuantity },
+ { &hf_nr_rrc_reportOnLeave, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_Hysteresis },
+ { &hf_nr_rrc_timeToTrigger, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_TimeToTrigger },
+ { &hf_nr_rrc_useWhiteCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_eventA4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_eventA4, T_eventA4_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_eventA5_sequence[] = {
+ { &hf_nr_rrc_a5_Threshold1, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasTriggerQuantity },
+ { &hf_nr_rrc_a5_Threshold2, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasTriggerQuantity },
+ { &hf_nr_rrc_reportOnLeave, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_Hysteresis },
+ { &hf_nr_rrc_timeToTrigger, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_TimeToTrigger },
+ { &hf_nr_rrc_useWhiteCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_eventA5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_eventA5, T_eventA5_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_eventA6_sequence[] = {
+ { &hf_nr_rrc_a6_Offset , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasTriggerQuantityOffset },
+ { &hf_nr_rrc_reportOnLeave, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_hysteresis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_Hysteresis },
+ { &hf_nr_rrc_timeToTrigger, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_TimeToTrigger },
+ { &hf_nr_rrc_useWhiteCellList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_eventA6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_eventA6, T_eventA6_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_eventId_vals[] = {
+ { 0, "eventA1" },
+ { 1, "eventA2" },
+ { 2, "eventA3" },
+ { 3, "eventA4" },
+ { 4, "eventA5" },
+ { 5, "eventA6" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_eventId_choice[] = {
+ { 0, &hf_nr_rrc_eventA1 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_eventA1 },
+ { 1, &hf_nr_rrc_eventA2 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_eventA2 },
+ { 2, &hf_nr_rrc_eventA3 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_eventA3 },
+ { 3, &hf_nr_rrc_eventA4 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_eventA4 },
+ { 4, &hf_nr_rrc_eventA5 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_eventA5 },
+ { 5, &hf_nr_rrc_eventA6 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_eventA6 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_eventId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_eventId, T_eventId_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_rsType_vals[] = {
+ { 0, "ss" },
+ { 1, "csi-rs" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_rsType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reportAmount_vals[] = {
+ { 0, "ffs" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_T_reportAmount(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 1, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t EventTriggerConfig_sequence[] = {
+ { &hf_nr_rrc_eventId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_eventId },
+ { &hf_nr_rrc_rsType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_rsType },
+ { &hf_nr_rrc_reportInterval, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ReportInterval },
+ { &hf_nr_rrc_reportAmount , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_reportAmount },
+ { &hf_nr_rrc_reportQuantityCell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasReportQuantity },
+ { &hf_nr_rrc_maxReportCells, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_INTEGER_1_maxCellReport },
+ { &hf_nr_rrc_reportQuantityRsIndexes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_MeasReportQuantity },
+ { &hf_nr_rrc_maxNroIndexesToReport, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_INTEGER_1_maxNroIndexesToReport },
+ { &hf_nr_rrc_onlyReportBeamIds, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_BOOLEAN },
+ { &hf_nr_rrc_reportAddNeighMeas, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_EventTriggerConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_EventTriggerConfig, EventTriggerConfig_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reportType_vals[] = {
+ { 0, "periodical" },
+ { 1, "eventTriggered" },
+ { 2, "reportCGI" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_reportType_choice[] = {
+ { 0, &hf_nr_rrc_periodical , ASN1_EXTENSION_ROOT , dissect_nr_rrc_PeriodicalReportConfig },
+ { 1, &hf_nr_rrc_eventTriggered, ASN1_EXTENSION_ROOT , dissect_nr_rrc_EventTriggerConfig },
+ { 2, &hf_nr_rrc_reportCGI , ASN1_EXTENSION_ROOT , dissect_nr_rrc_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_reportType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_reportType, T_reportType_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t ReportConfigNR_sequence[] = {
+ { &hf_nr_rrc_reportType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_reportType },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ReportConfigNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ReportConfigNR, ReportConfigNR_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ReportConfigEUTRA_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ReportConfigEUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ReportConfigEUTRA, ReportConfigEUTRA_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_reportConfig_vals[] = {
+ { 0, "reportConfigNR" },
+ { 1, "reportConfigEUTRA" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_reportConfig_choice[] = {
+ { 0, &hf_nr_rrc_reportConfigNR, ASN1_NO_EXTENSIONS , dissect_nr_rrc_ReportConfigNR },
+ { 1, &hf_nr_rrc_reportConfigEUTRA, ASN1_NO_EXTENSIONS , dissect_nr_rrc_ReportConfigEUTRA },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_reportConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_reportConfig, T_reportConfig_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t ReportConfigToAddMod_sequence[] = {
+ { &hf_nr_rrc_reportConfigId_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ReportConfigId },
+ { &hf_nr_rrc_reportConfig , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_reportConfig },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ReportConfigToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ReportConfigToAddMod, ReportConfigToAddMod_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ReportConfigToAddModList_sequence_of[1] = {
+ { &hf_nr_rrc_ReportConfigToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ReportConfigToAddMod },
+};
+
+static int
+dissect_nr_rrc_ReportConfigToAddModList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ReportConfigToAddModList, ReportConfigToAddModList_sequence_of,
+ 1, maxReportConfigId, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_MeasId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, maxNrofMeasId, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasIdToRemoveList_sequence_of[1] = {
+ { &hf_nr_rrc_MeasIdToRemoveList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasId },
+};
+
+static int
+dissect_nr_rrc_MeasIdToRemoveList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasIdToRemoveList, MeasIdToRemoveList_sequence_of,
+ 1, maxNrofMeasId, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasIdToAddMod_sequence[] = {
+ { &hf_nr_rrc_measId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasId },
+ { &hf_nr_rrc_measObjectId , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_MeasObjectId },
+ { &hf_nr_rrc_reportConfigId_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ReportConfigId },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasIdToAddMod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasIdToAddMod, MeasIdToAddMod_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasIdToAddModList_sequence_of[1] = {
+ { &hf_nr_rrc_MeasIdToAddModList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasIdToAddMod },
+};
+
+static int
+dissect_nr_rrc_MeasIdToAddModList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasIdToAddModList, MeasIdToAddModList_sequence_of,
+ 1, maxNrofMeasId, FALSE);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_s_MeasureConfig_vals[] = {
+ { 0, "ssb-rsrp" },
+ { 1, "csi-rsrp" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_s_MeasureConfig_choice[] = {
+ { 0, &hf_nr_rrc_ssb_rsrp , ASN1_NO_EXTENSIONS , dissect_nr_rrc_RSRP_Range },
+ { 1, &hf_nr_rrc_csi_rsrp , ASN1_NO_EXTENSIONS , dissect_nr_rrc_RSRP_Range },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_s_MeasureConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_s_MeasureConfig, T_s_MeasureConfig_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_FilterCoefficient_vals[] = {
+ { 0, "fc0" },
+ { 1, "fc1" },
+ { 2, "fc2" },
+ { 3, "fc3" },
+ { 4, "fc4" },
+ { 5, "fc5" },
+ { 6, "fc6" },
+ { 7, "fc7" },
+ { 8, "fc8" },
+ { 9, "fc9" },
+ { 10, "fc11" },
+ { 11, "fc13" },
+ { 12, "fc15" },
+ { 13, "fc17" },
+ { 14, "fc19" },
+ { 15, "spare1" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_nr_rrc_FilterCoefficient(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 16, NULL, TRUE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t QuantityConfigRS_sequence[] = {
+ { &hf_nr_rrc_ssbFilterCoefficientRSRP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_FilterCoefficient },
+ { &hf_nr_rrc_ssbFilterCoefficientRSRQ, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_FilterCoefficient },
+ { &hf_nr_rrc_ssbFilterCoefficientRS_SINR, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_FilterCoefficient },
+ { &hf_nr_rrc_csi_rsFilterCoefficientRSRP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_FilterCoefficient },
+ { &hf_nr_rrc_csi_rsFilterCoefficientRSRQ, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_FilterCoefficient },
+ { &hf_nr_rrc_csi_rsFilterCoefficientRS_SINR, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_FilterCoefficient },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_QuantityConfigRS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_QuantityConfigRS, QuantityConfigRS_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t QuantityConfig_sequence[] = {
+ { &hf_nr_rrc_quantityConfigRSindex, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_QuantityConfigRS },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_QuantityConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_QuantityConfig, QuantityConfig_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasGapConfig_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasGapConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasGapConfig, MeasGapConfig_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasConfig_sequence[] = {
+ { &hf_nr_rrc_measObjectToRemoveList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_MeasObjectToRemoveList },
+ { &hf_nr_rrc_measObjectToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_MeasObjectToAddModList },
+ { &hf_nr_rrc_reportConfigToRemoveList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ReportConfigToRemoveList },
+ { &hf_nr_rrc_reportConfigToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ReportConfigToAddModList },
+ { &hf_nr_rrc_measIdToRemoveList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_MeasIdToRemoveList },
+ { &hf_nr_rrc_measIdToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_MeasIdToAddModList },
+ { &hf_nr_rrc_s_MeasureConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_s_MeasureConfig },
+ { &hf_nr_rrc_quantityConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_QuantityConfig },
+ { &hf_nr_rrc_measGapConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_MeasGapConfig },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasConfig, MeasConfig_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_nonCriticalExtension_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_nonCriticalExtension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_nonCriticalExtension, T_nonCriticalExtension_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RRCReconfiguration_IEs_sequence[] = {
+ { &hf_nr_rrc_radioBearerConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RadioBearerConfig },
+ { &hf_nr_rrc_masterCellGroupConfig, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_CellGroupConfig },
+ { &hf_nr_rrc_secondaryCellGroupToAddModList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupConfig },
+ { &hf_nr_rrc_secondaryCellGroupToReleaseList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupId },
+ { &hf_nr_rrc_measConfig , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_MeasConfig },
+ { &hf_nr_rrc_lateNonCriticalExtension, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_OCTET_STRING },
+ { &hf_nr_rrc_nonCriticalExtension, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_nonCriticalExtension },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_RRCReconfiguration_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_RRCReconfiguration_IEs, RRCReconfiguration_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensionsFuture_01_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_criticalExtensionsFuture_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_criticalExtensionsFuture_01, T_criticalExtensionsFuture_01_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_criticalExtensions_01_vals[] = {
+ { 0, "rrcReconfiguration" },
+ { 1, "criticalExtensionsFuture" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_01_choice[] = {
+ { 0, &hf_nr_rrc_rrcReconfiguration_01, ASN1_NO_EXTENSIONS , dissect_nr_rrc_RRCReconfiguration_IEs },
+ { 1, &hf_nr_rrc_criticalExtensionsFuture_01, ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_criticalExtensionsFuture_01 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_criticalExtensions_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_criticalExtensions_01, T_criticalExtensions_01_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RRCReconfiguration_sequence[] = {
+ { &hf_nr_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_RRC_TransactionIdentifier },
+ { &hf_nr_rrc_criticalExtensions_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_criticalExtensions_01 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_RRCReconfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RRC Reconfiguration");
+
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_RRCReconfiguration, RRCReconfiguration_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_c1_vals[] = {
+ { 0, "rrcReconfiguration" },
+ { 1, "spare15" },
+ { 2, "spare14" },
+ { 3, "spare13" },
+ { 4, "spare12" },
+ { 5, "spare11" },
+ { 6, "spare10" },
+ { 7, "spare9" },
+ { 8, "spare8" },
+ { 9, "spare7" },
+ { 10, "spare6" },
+ { 11, "spare5" },
+ { 12, "spare4" },
+ { 13, "spare3" },
+ { 14, "spare2" },
+ { 15, "spare1" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_c1_choice[] = {
+ { 0, &hf_nr_rrc_rrcReconfiguration, ASN1_NO_EXTENSIONS , dissect_nr_rrc_RRCReconfiguration },
+ { 1, &hf_nr_rrc_spare15 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 2, &hf_nr_rrc_spare14 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 3, &hf_nr_rrc_spare13 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 4, &hf_nr_rrc_spare12 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 5, &hf_nr_rrc_spare11 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 6, &hf_nr_rrc_spare10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 7, &hf_nr_rrc_spare9 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 8, &hf_nr_rrc_spare8 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 9, &hf_nr_rrc_spare7 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 10, &hf_nr_rrc_spare6 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 11, &hf_nr_rrc_spare5 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 12, &hf_nr_rrc_spare4 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 13, &hf_nr_rrc_spare3 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 14, &hf_nr_rrc_spare2 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 15, &hf_nr_rrc_spare1 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_c1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_c1, T_c1_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_messageClassExtension_01_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_messageClassExtension_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_messageClassExtension_01, T_messageClassExtension_01_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_DL_DCCH_MessageType_vals[] = {
+ { 0, "c1" },
+ { 1, "messageClassExtension" },
+ { 0, NULL }
+};
+
+static const per_choice_t DL_DCCH_MessageType_choice[] = {
+ { 0, &hf_nr_rrc_c1 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_c1 },
+ { 1, &hf_nr_rrc_messageClassExtension_01, ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_messageClassExtension_01 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_DL_DCCH_MessageType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_DL_DCCH_MessageType, DL_DCCH_MessageType_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t DL_DCCH_Message_sequence[] = {
+ { &hf_nr_rrc_message_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_DL_DCCH_MessageType },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_DL_DCCH_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ proto_item *ti;
+
+ col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "NR RRC");
+ col_clear(actx->pinfo->cinfo, COL_INFO);
+
+ ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA);
+ tree = proto_item_add_subtree(ti, ett_nr_rrc);
+
+ actx->pinfo->link_dir = P2P_DIR_DL;
+
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_DL_DCCH_Message, DL_DCCH_Message_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ResultsSSBCell_sequence[] = {
+ { &hf_nr_rrc_ssb_Cellrsrp , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RSRP_Range },
+ { &hf_nr_rrc_ssb_Cellrsrq , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RSRQ_Range },
+ { &hf_nr_rrc_ssb_Cellsinr , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SINR_Range },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ResultsSSBCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ResultsSSBCell, ResultsSSBCell_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ResultsCSI_RSCell_sequence[] = {
+ { &hf_nr_rrc_csi_rs_Cellrsrp, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RSRP_Range },
+ { &hf_nr_rrc_csi_rs_Cellrsrq, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RSRQ_Range },
+ { &hf_nr_rrc_csi_rs_Cellsinr, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SINR_Range },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ResultsCSI_RSCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ResultsCSI_RSCell, ResultsCSI_RSCell_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_cellResults_sequence[] = {
+ { &hf_nr_rrc_resultsSSBCell, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ResultsSSBCell },
+ { &hf_nr_rrc_resultsCSI_RSCell, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ResultsCSI_RSCell },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_cellResults(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_cellResults, T_cellResults_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_SSB_Index(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 7U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t ResultsPerSSBIndex_sequence[] = {
+ { &hf_nr_rrc_ssb_Index , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_SSB_Index },
+ { &hf_nr_rrc_ss_rsrp , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RSRP_Range },
+ { &hf_nr_rrc_ss_rsrq , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RSRQ_Range },
+ { &hf_nr_rrc_ss_sinr , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SINR_Range },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ResultsPerSSBIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ResultsPerSSBIndex, ResultsPerSSBIndex_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ResultsPerSSBIndexList_sequence_of[1] = {
+ { &hf_nr_rrc_ResultsPerSSBIndexList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ResultsPerSSBIndex },
+};
+
+static int
+dissect_nr_rrc_ResultsPerSSBIndexList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ResultsPerSSBIndexList, ResultsPerSSBIndexList_sequence_of,
+ 1, maxNroSSBs, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_nr_rrc_CSI_RSIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t ResultsPerCSI_RSIndex_sequence[] = {
+ { &hf_nr_rrc_csi_rsIndex , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_CSI_RSIndex },
+ { &hf_nr_rrc_csi_rsrp , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RSRP_Range },
+ { &hf_nr_rrc_csi_rsrq , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_RSRQ_Range },
+ { &hf_nr_rrc_csi_sinr , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_SINR_Range },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_ResultsPerCSI_RSIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ResultsPerCSI_RSIndex, ResultsPerCSI_RSIndex_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ResultsPerCSI_RSIndexList_sequence_of[1] = {
+ { &hf_nr_rrc_ResultsPerCSI_RSIndexList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_ResultsPerCSI_RSIndex },
+};
+
+static int
+dissect_nr_rrc_ResultsPerCSI_RSIndexList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_ResultsPerCSI_RSIndexList, ResultsPerCSI_RSIndexList_sequence_of,
+ 1, maxNroCSI_RS, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_rsIndexResults_sequence[] = {
+ { &hf_nr_rrc_resultsSSBIndexes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ResultsPerSSBIndexList },
+ { &hf_nr_rrc_resultsCSI_RSIndexes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ResultsPerCSI_RSIndexList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_rsIndexResults(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_rsIndexResults, T_rsIndexResults_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_measResult_sequence[] = {
+ { &hf_nr_rrc_cellResults , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_cellResults },
+ { &hf_nr_rrc_rsIndexResults, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_rsIndexResults },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_measResult(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_measResult, T_measResult_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasResultNR_sequence[] = {
+ { &hf_nr_rrc_physCellId , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_PhysCellId },
+ { &hf_nr_rrc_cgi_Info , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_NULL },
+ { &hf_nr_rrc_measResult , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_measResult },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasResultNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasResultNR, MeasResultNR_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasResultServFreq_sequence[] = {
+ { &hf_nr_rrc_servFreqId , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_ServCellIndex },
+ { &hf_nr_rrc_measResultServingCell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasResultNR },
+ { &hf_nr_rrc_measResultBestNeighCell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasResultNR },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasResultServFreq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasResultServFreq, MeasResultServFreq_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasResultServFreqList_sequence_of[1] = {
+ { &hf_nr_rrc_MeasResultServFreqList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasResultServFreq },
+};
+
+static int
+dissect_nr_rrc_MeasResultServFreqList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasResultServFreqList, MeasResultServFreqList_sequence_of,
+ 1, maxServCell, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasResultListNR_sequence_of[1] = {
+ { &hf_nr_rrc_MeasResultListNR_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasResultNR },
+};
+
+static int
+dissect_nr_rrc_MeasResultListNR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasResultListNR, MeasResultListNR_sequence_of,
+ 1, maxCellReport, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasResultListEUTRA_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasResultListEUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasResultListEUTRA, MeasResultListEUTRA_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_measResultNeighCells_vals[] = {
+ { 0, "measResultListNR" },
+ { 1, "measResultListEUTRA" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_measResultNeighCells_choice[] = {
+ { 0, &hf_nr_rrc_measResultListNR, ASN1_EXTENSION_ROOT , dissect_nr_rrc_MeasResultListNR },
+ { 1, &hf_nr_rrc_measResultListEUTRA, ASN1_EXTENSION_ROOT , dissect_nr_rrc_MeasResultListEUTRA },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_measResultNeighCells(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_measResultNeighCells, T_measResultNeighCells_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasResults_sequence[] = {
+ { &hf_nr_rrc_measId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasId },
+ { &hf_nr_rrc_measResultServingFreqList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasResultServFreqList },
+ { &hf_nr_rrc_measResultNeighCells, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_nr_rrc_T_measResultNeighCells },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasResults(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasResults, MeasResults_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasurementReport_IEs_sequence[] = {
+ { &hf_nr_rrc_measResults , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_MeasResults },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasurementReport_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasurementReport_IEs, MeasurementReport_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensionsFuture_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_criticalExtensionsFuture(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_criticalExtensionsFuture, T_criticalExtensionsFuture_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_criticalExtensions_vals[] = {
+ { 0, "measurementReport" },
+ { 1, "criticalExtensionsFuture" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_choice[] = {
+ { 0, &hf_nr_rrc_measurementReport_01, ASN1_NO_EXTENSIONS , dissect_nr_rrc_MeasurementReport_IEs },
+ { 1, &hf_nr_rrc_criticalExtensionsFuture, ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_criticalExtensionsFuture },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_criticalExtensions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_criticalExtensions, T_criticalExtensions_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t MeasurementReport_sequence[] = {
+ { &hf_nr_rrc_criticalExtensions, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_criticalExtensions },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_MeasurementReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Measurement Report");
+
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_MeasurementReport, MeasurementReport_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RRCReconfigurationComplete_IEs_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_RRCReconfigurationComplete_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_RRCReconfigurationComplete_IEs, RRCReconfigurationComplete_IEs_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_criticalExtensionsFuture_02_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_criticalExtensionsFuture_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_criticalExtensionsFuture_02, T_criticalExtensionsFuture_02_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_criticalExtensions_02_vals[] = {
+ { 0, "rrcReconfigurationComplete" },
+ { 1, "criticalExtensionsFuture" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_criticalExtensions_02_choice[] = {
+ { 0, &hf_nr_rrc_rrcReconfigurationComplete_01, ASN1_NO_EXTENSIONS , dissect_nr_rrc_RRCReconfigurationComplete_IEs },
+ { 1, &hf_nr_rrc_criticalExtensionsFuture_02, ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_criticalExtensionsFuture_02 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_criticalExtensions_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_criticalExtensions_02, T_criticalExtensions_02_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RRCReconfigurationComplete_sequence[] = {
+ { &hf_nr_rrc_rrc_TransactionIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_RRC_TransactionIdentifier },
+ { &hf_nr_rrc_criticalExtensions_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_T_criticalExtensions_02 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_RRCReconfigurationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RRC Reconfiguration Complete");
+
+
+
+
+
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_RRCReconfigurationComplete, RRCReconfigurationComplete_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_T_c1_01_vals[] = {
+ { 0, "measurementReport" },
+ { 1, "rrcReconfigurationComplete" },
+ { 2, "spare14" },
+ { 3, "spare13" },
+ { 4, "spare12" },
+ { 5, "spare11" },
+ { 6, "spare10" },
+ { 7, "spare9" },
+ { 8, "spare8" },
+ { 9, "spare7" },
+ { 10, "spare6" },
+ { 11, "spare5" },
+ { 12, "spare4" },
+ { 13, "spare3" },
+ { 14, "spare2" },
+ { 15, "spare1" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_c1_01_choice[] = {
+ { 0, &hf_nr_rrc_measurementReport, ASN1_NO_EXTENSIONS , dissect_nr_rrc_MeasurementReport },
+ { 1, &hf_nr_rrc_rrcReconfigurationComplete, ASN1_NO_EXTENSIONS , dissect_nr_rrc_RRCReconfigurationComplete },
+ { 2, &hf_nr_rrc_spare14 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 3, &hf_nr_rrc_spare13 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 4, &hf_nr_rrc_spare12 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 5, &hf_nr_rrc_spare11 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 6, &hf_nr_rrc_spare10 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 7, &hf_nr_rrc_spare9 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 8, &hf_nr_rrc_spare8 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 9, &hf_nr_rrc_spare7 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 10, &hf_nr_rrc_spare6 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 11, &hf_nr_rrc_spare5 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 12, &hf_nr_rrc_spare4 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 13, &hf_nr_rrc_spare3 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 14, &hf_nr_rrc_spare2 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 15, &hf_nr_rrc_spare1 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_c1_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_c1_01, T_c1_01_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_messageClassExtension_02_sequence[] = {
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_T_messageClassExtension_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_T_messageClassExtension_02, T_messageClassExtension_02_sequence);
+
+ return offset;
+}
+
+
+static const value_string nr_rrc_UL_DCCH_MessageType_vals[] = {
+ { 0, "c1" },
+ { 1, "messageClassExtension" },
+ { 0, NULL }
+};
+
+static const per_choice_t UL_DCCH_MessageType_choice[] = {
+ { 0, &hf_nr_rrc_c1_01 , ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_c1_01 },
+ { 1, &hf_nr_rrc_messageClassExtension_02, ASN1_NO_EXTENSIONS , dissect_nr_rrc_T_messageClassExtension_02 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_UL_DCCH_MessageType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_UL_DCCH_MessageType, UL_DCCH_MessageType_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t UL_DCCH_Message_sequence[] = {
+ { &hf_nr_rrc_message_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nr_rrc_UL_DCCH_MessageType },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_nr_rrc_UL_DCCH_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ proto_item *ti;
+
+ col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "NR RRC");
+ col_clear(actx->pinfo->cinfo, COL_INFO);
+
+ ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA);
+ tree = proto_item_add_subtree(ti, ett_nr_rrc);
+
+ actx->pinfo->link_dir = P2P_DIR_UL;
+
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_nr_rrc_UL_DCCH_Message, UL_DCCH_Message_sequence);
+
+ return offset;
+}
+
+/*--- PDUs ---*/
+
+static int dissect_BCCH_BCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
+ offset = dissect_nr_rrc_BCCH_BCH_Message(tvb, offset, &asn1_ctx, tree, hf_nr_rrc_BCCH_BCH_Message_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
+static int dissect_DL_DCCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
+ offset = dissect_nr_rrc_DL_DCCH_Message(tvb, offset, &asn1_ctx, tree, hf_nr_rrc_DL_DCCH_Message_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
+static int dissect_UL_DCCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
+ offset = dissect_nr_rrc_UL_DCCH_Message(tvb, offset, &asn1_ctx, tree, hf_nr_rrc_UL_DCCH_Message_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
+
+
+/*--- End of included file: packet-nr-rrc-fn.c ---*/
+#line 78 "./asn1/nr-rrc/packet-nr-rrc-template.c"
+
+void proto_register_nr_rrc(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+
+
+/*--- Included file: packet-nr-rrc-hfarr.c ---*/
+#line 1 "./asn1/nr-rrc/packet-nr-rrc-hfarr.c"
+ { &hf_nr_rrc_BCCH_BCH_Message_PDU,
+ { "BCCH-BCH-Message", "nr-rrc.BCCH_BCH_Message_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_DL_DCCH_Message_PDU,
+ { "DL-DCCH-Message", "nr-rrc.DL_DCCH_Message_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_UL_DCCH_Message_PDU,
+ { "UL-DCCH-Message", "nr-rrc.UL_DCCH_Message_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_message,
+ { "message", "nr-rrc.message",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_BCCH_BCH_MessageType_vals), 0,
+ "BCCH_BCH_MessageType", HFILL }},
+ { &hf_nr_rrc_mib,
+ { "mib", "nr-rrc.mib_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_messageClassExtension,
+ { "messageClassExtension", "nr-rrc.messageClassExtension_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_message_01,
+ { "message", "nr-rrc.message",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_DL_DCCH_MessageType_vals), 0,
+ "DL_DCCH_MessageType", HFILL }},
+ { &hf_nr_rrc_c1,
+ { "c1", "nr-rrc.c1",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_c1_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rrcReconfiguration,
+ { "rrcReconfiguration", "nr-rrc.rrcReconfiguration_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare15,
+ { "spare15", "nr-rrc.spare15_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare14,
+ { "spare14", "nr-rrc.spare14_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare13,
+ { "spare13", "nr-rrc.spare13_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare12,
+ { "spare12", "nr-rrc.spare12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare11,
+ { "spare11", "nr-rrc.spare11_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare10,
+ { "spare10", "nr-rrc.spare10_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare9,
+ { "spare9", "nr-rrc.spare9_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare8,
+ { "spare8", "nr-rrc.spare8_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare7,
+ { "spare7", "nr-rrc.spare7_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare6,
+ { "spare6", "nr-rrc.spare6_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare5,
+ { "spare5", "nr-rrc.spare5_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare4,
+ { "spare4", "nr-rrc.spare4_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare3,
+ { "spare3", "nr-rrc.spare3_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare2,
+ { "spare2", "nr-rrc.spare2_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare1,
+ { "spare1", "nr-rrc.spare1_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_messageClassExtension_01,
+ { "messageClassExtension", "nr-rrc.messageClassExtension_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_messageClassExtension_01", HFILL }},
+ { &hf_nr_rrc_message_02,
+ { "message", "nr-rrc.message",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_UL_DCCH_MessageType_vals), 0,
+ "UL_DCCH_MessageType", HFILL }},
+ { &hf_nr_rrc_c1_01,
+ { "c1", "nr-rrc.c1",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_c1_01_vals), 0,
+ "T_c1_01", HFILL }},
+ { &hf_nr_rrc_measurementReport,
+ { "measurementReport", "nr-rrc.measurementReport_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rrcReconfigurationComplete,
+ { "rrcReconfigurationComplete", "nr-rrc.rrcReconfigurationComplete_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_messageClassExtension_02,
+ { "messageClassExtension", "nr-rrc.messageClassExtension_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_messageClassExtension_02", HFILL }},
+ { &hf_nr_rrc_ssb_IndexExplicit,
+ { "ssb-IndexExplicit", "nr-rrc.ssb_IndexExplicit",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_7", HFILL }},
+ { &hf_nr_rrc_halfFrameIndex,
+ { "halfFrameIndex", "nr-rrc.halfFrameIndex",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_halfFrameIndex_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_systemFrameNumber,
+ { "systemFrameNumber", "nr-rrc.systemFrameNumber",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_10", HFILL }},
+ { &hf_nr_rrc_subCarrierSpacingCommon,
+ { "subCarrierSpacingCommon", "nr-rrc.subCarrierSpacingCommon",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_SubcarrierSpacing_vals), 0,
+ "SubcarrierSpacing", HFILL }},
+ { &hf_nr_rrc_ssb_subcarrierOffset,
+ { "ssb-subcarrierOffset", "nr-rrc.ssb_subcarrierOffset",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_11", HFILL }},
+ { &hf_nr_rrc_dmrs_TypeA_Position,
+ { "dmrs-TypeA-Position", "nr-rrc.dmrs_TypeA_Position",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_dmrs_TypeA_Position_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pdcchConfigSIB1,
+ { "pdcchConfigSIB1", "nr-rrc.pdcchConfigSIB1",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_255", HFILL }},
+ { &hf_nr_rrc_cellBarred,
+ { "cellBarred", "nr-rrc.cellBarred",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_cellBarred_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_intraFreqReselection,
+ { "intraFreqReselection", "nr-rrc.intraFreqReselection",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_intraFreqReselection_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare,
+ { "spare", "nr-rrc.spare",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_0", HFILL }},
+ { &hf_nr_rrc_criticalExtensions,
+ { "criticalExtensions", "nr-rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_criticalExtensions_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measurementReport_01,
+ { "measurementReport", "nr-rrc.measurementReport_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MeasurementReport_IEs", HFILL }},
+ { &hf_nr_rrc_criticalExtensionsFuture,
+ { "criticalExtensionsFuture", "nr-rrc.criticalExtensionsFuture_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measResults,
+ { "measResults", "nr-rrc.measResults_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rrc_TransactionIdentifier,
+ { "rrc-TransactionIdentifier", "nr-rrc.rrc_TransactionIdentifier",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_criticalExtensions_01,
+ { "criticalExtensions", "nr-rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_criticalExtensions_01_vals), 0,
+ "T_criticalExtensions_01", HFILL }},
+ { &hf_nr_rrc_rrcReconfiguration_01,
+ { "rrcReconfiguration", "nr-rrc.rrcReconfiguration_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRCReconfiguration_IEs", HFILL }},
+ { &hf_nr_rrc_criticalExtensionsFuture_01,
+ { "criticalExtensionsFuture", "nr-rrc.criticalExtensionsFuture_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensionsFuture_01", HFILL }},
+ { &hf_nr_rrc_radioBearerConfig,
+ { "radioBearerConfig", "nr-rrc.radioBearerConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_masterCellGroupConfig,
+ { "masterCellGroupConfig", "nr-rrc.masterCellGroupConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CellGroupConfig", HFILL }},
+ { &hf_nr_rrc_secondaryCellGroupToAddModList,
+ { "secondaryCellGroupToAddModList", "nr-rrc.secondaryCellGroupToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupConfig", HFILL }},
+ { &hf_nr_rrc_secondaryCellGroupToAddModList_item,
+ { "CellGroupConfig", "nr-rrc.CellGroupConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_secondaryCellGroupToReleaseList,
+ { "secondaryCellGroupToReleaseList", "nr-rrc.secondaryCellGroupToReleaseList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupId", HFILL }},
+ { &hf_nr_rrc_secondaryCellGroupToReleaseList_item,
+ { "CellGroupId", "nr-rrc.CellGroupId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measConfig,
+ { "measConfig", "nr-rrc.measConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_lateNonCriticalExtension,
+ { "lateNonCriticalExtension", "nr-rrc.lateNonCriticalExtension",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING", HFILL }},
+ { &hf_nr_rrc_nonCriticalExtension,
+ { "nonCriticalExtension", "nr-rrc.nonCriticalExtension_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_criticalExtensions_02,
+ { "criticalExtensions", "nr-rrc.criticalExtensions",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_criticalExtensions_02_vals), 0,
+ "T_criticalExtensions_02", HFILL }},
+ { &hf_nr_rrc_rrcReconfigurationComplete_01,
+ { "rrcReconfigurationComplete", "nr-rrc.rrcReconfigurationComplete_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRCReconfigurationComplete_IEs", HFILL }},
+ { &hf_nr_rrc_criticalExtensionsFuture_02,
+ { "criticalExtensionsFuture", "nr-rrc.criticalExtensionsFuture_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_criticalExtensionsFuture_02", HFILL }},
+ { &hf_nr_rrc_bandwidthPartId,
+ { "bandwidthPartId", "nr-rrc.bandwidthPartId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_location,
+ { "location", "nr-rrc.location",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_maxNrofPhysicalResourceBlocksTimes4", HFILL }},
+ { &hf_nr_rrc_bandwidth,
+ { "bandwidth", "nr-rrc.bandwidth",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_maxNrofPhysicalResourceBlocks", HFILL }},
+ { &hf_nr_rrc_subcarrierSpacing,
+ { "subcarrierSpacing", "nr-rrc.subcarrierSpacing",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_subcarrierSpacing_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cyclicPrefix,
+ { "cyclicPrefix", "nr-rrc.cyclicPrefix",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_cyclicPrefix_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_directCurrentLocation,
+ { "directCurrentLocation", "nr-rrc.directCurrentLocation",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_3299", HFILL }},
+ { &hf_nr_rrc_cellGroupId,
+ { "cellGroupId", "nr-rrc.cellGroupId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rlc_BearerToAddModList,
+ { "rlc-BearerToAddModList", "nr-rrc.rlc_BearerToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxLCH_OF_LCH_Config", HFILL }},
+ { &hf_nr_rrc_rlc_BearerToAddModList_item,
+ { "LCH-Config", "nr-rrc.LCH_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rlc_BearerToReleaseList,
+ { "rlc-BearerToReleaseList", "nr-rrc.rlc_BearerToReleaseList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxLCH_OF_LogicalChannelIdentity", HFILL }},
+ { &hf_nr_rrc_rlc_BearerToReleaseList_item,
+ { "LogicalChannelIdentity", "nr-rrc.LogicalChannelIdentity",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_mac_CellGroupConfig,
+ { "mac-CellGroupConfig", "nr-rrc.mac_CellGroupConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rlf_TimersAndConstants,
+ { "rlf-TimersAndConstants", "nr-rrc.rlf_TimersAndConstants_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_physical_CellGroupConfig,
+ { "physical-CellGroupConfig", "nr-rrc.physical_CellGroupConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PhysicalCellGroupConfig", HFILL }},
+ { &hf_nr_rrc_spCellConfig,
+ { "spCellConfig", "nr-rrc.spCellConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sCellToAddModList,
+ { "sCellToAddModList", "nr-rrc.sCellToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sCellToReleaseList,
+ { "sCellToReleaseList", "nr-rrc.sCellToReleaseList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_logicalChannelIdentity,
+ { "logicalChannelIdentity", "nr-rrc.logicalChannelIdentity",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_servedRadioBearer,
+ { "servedRadioBearer", "nr-rrc.servedRadioBearer",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_32", HFILL }},
+ { &hf_nr_rrc_reestablishRLC,
+ { "reestablishRLC", "nr-rrc.reestablishRLC",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reestablishRLC_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rlc_Config,
+ { "rlc-Config", "nr-rrc.rlc_Config",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_RLC_Config_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_mac_LogicalChannelConfig,
+ { "mac-LogicalChannelConfig", "nr-rrc.mac_LogicalChannelConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "LogicalChannelConfig", HFILL }},
+ { &hf_nr_rrc_harq_ACK_Spatial_Bundling,
+ { "harq-ACK-Spatial-Bundling", "nr-rrc.harq_ACK_Spatial_Bundling",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_harq_ACK_Spatial_Bundling_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reconfigurationWithSync,
+ { "reconfigurationWithSync", "nr-rrc.reconfigurationWithSync_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spCellConfigCommon,
+ { "spCellConfigCommon", "nr-rrc.spCellConfigCommon_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ServingCellConfigCommon", HFILL }},
+ { &hf_nr_rrc_newUE_Identity,
+ { "newUE-Identity", "nr-rrc.newUE_Identity",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "C_RNTI", HFILL }},
+ { &hf_nr_rrc_t304,
+ { "t304", "nr-rrc.t304",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_t304_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rach_ConfigDedicated,
+ { "rach-ConfigDedicated", "nr-rrc.rach_ConfigDedicated_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spCellConfigDedicated,
+ { "spCellConfigDedicated", "nr-rrc.spCellConfigDedicated_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ServingCellConfigDedicated", HFILL }},
+ { &hf_nr_rrc_SCellToReleaseList_item,
+ { "SCellIndex", "nr-rrc.SCellIndex",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_SCellToAddModList_item,
+ { "SCellConfig", "nr-rrc.SCellConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sCellIndex,
+ { "sCellIndex", "nr-rrc.sCellIndex",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sCellConfigCommon,
+ { "sCellConfigCommon", "nr-rrc.sCellConfigCommon_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ServingCellConfigCommon", HFILL }},
+ { &hf_nr_rrc_sCellConfigDedicated,
+ { "sCellConfigDedicated", "nr-rrc.sCellConfigDedicated_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ServingCellConfigDedicated", HFILL }},
+ { &hf_nr_rrc_CellIndexList_item,
+ { "CellIndex", "nr-rrc.CellIndex",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_schedulingCellInfo,
+ { "schedulingCellInfo", "nr-rrc.schedulingCellInfo",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_schedulingCellInfo_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_own,
+ { "own", "nr-rrc.own_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cif_Presence,
+ { "cif-Presence", "nr-rrc.cif_Presence",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_other,
+ { "other", "nr-rrc.other_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_schedulingCellId,
+ { "schedulingCellId", "nr-rrc.schedulingCellId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ServCellIndex", HFILL }},
+ { &hf_nr_rrc_pdsch_Start,
+ { "pdsch-Start", "nr-rrc.pdsch_Start",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_4", HFILL }},
+ { &hf_nr_rrc_cif_InSchedulingCell,
+ { "cif-InSchedulingCell", "nr-rrc.cif_InSchedulingCell",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_7", HFILL }},
+ { &hf_nr_rrc_csi_ResourceConfigs,
+ { "csi-ResourceConfigs", "nr-rrc.csi_ResourceConfigs",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofCSI_ResourceConfigurations_OF_CSI_ResourceConfig", HFILL }},
+ { &hf_nr_rrc_csi_ResourceConfigs_item,
+ { "CSI-ResourceConfig", "nr-rrc.CSI_ResourceConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_ReportConfigs,
+ { "csi-ReportConfigs", "nr-rrc.csi_ReportConfigs",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofCSI_Reports_OF_CSI_ReportConfig", HFILL }},
+ { &hf_nr_rrc_csi_ReportConfigs_item,
+ { "CSI-ReportConfig", "nr-rrc.CSI_ReportConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_MeasIdToAddModList,
+ { "csi-MeasIdToAddModList", "nr-rrc.csi_MeasIdToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofCSI_MeasId_OF_CSI_MeasIdToAddMod", HFILL }},
+ { &hf_nr_rrc_csi_MeasIdToAddModList_item,
+ { "CSI-MeasIdToAddMod", "nr-rrc.CSI_MeasIdToAddMod_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportTrigger,
+ { "reportTrigger", "nr-rrc.reportTrigger_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportTriggerSize,
+ { "reportTriggerSize", "nr-rrc.reportTriggerSize",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_6", HFILL }},
+ { &hf_nr_rrc_csi_ResourceConfigId,
+ { "csi-ResourceConfigId", "nr-rrc.csi_ResourceConfigId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_ResourceSets,
+ { "csi-ResourceSets", "nr-rrc.csi_ResourceSets",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofCSI_ResourceSets_OF_CSI_ResourceSet", HFILL }},
+ { &hf_nr_rrc_csi_ResourceSets_item,
+ { "CSI-ResourceSet", "nr-rrc.CSI_ResourceSet_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ssb_Resources,
+ { "ssb-Resources", "nr-rrc.ssb_Resources",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofSSB_Resources_1_OF_CSI_SSB_Resource", HFILL }},
+ { &hf_nr_rrc_ssb_Resources_item,
+ { "CSI-SSB-Resource", "nr-rrc.CSI_SSB_Resource_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_resourceType,
+ { "resourceType", "nr-rrc.resourceType",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_resourceType_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_aperiodic,
+ { "aperiodic", "nr-rrc.aperiodic_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_semiPersistent,
+ { "semiPersistent", "nr-rrc.semiPersistent_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_periodic,
+ { "periodic", "nr-rrc.periodic_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_ResourceSetId,
+ { "csi-ResourceSetId", "nr-rrc.csi_ResourceSetId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_rs_Resources,
+ { "csi-rs-Resources", "nr-rrc.csi_rs_Resources",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesPerSet_OF_NZP_CSI_RS_Resource", HFILL }},
+ { &hf_nr_rrc_csi_rs_Resources_item,
+ { "NZP-CSI-RS-Resource", "nr-rrc.NZP_CSI_RS_Resource_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_repetition,
+ { "repetition", "nr-rrc.repetition",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_nzp_csi_rs_ResourceId,
+ { "nzp-csi-rs-ResourceId", "nr-rrc.nzp_csi_rs_ResourceId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_nrofPorts,
+ { "nrofPorts", "nr-rrc.nrofPorts",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_nrofPorts_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_resourceMapping,
+ { "resourceMapping", "nr-rrc.resourceMapping_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cdm_Value,
+ { "cdm-Value", "nr-rrc.cdm_Value",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_cdm_Value_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cdm_Pattern,
+ { "cdm-Pattern", "nr-rrc.cdm_Pattern",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_cdm_Pattern_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_RS_Density,
+ { "csi-RS-Density", "nr-rrc.csi_RS_Density",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_csi_RS_Density_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_RS_FreqBand,
+ { "csi-RS-FreqBand", "nr-rrc.csi_RS_FreqBand_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_powerControlOffset,
+ { "powerControlOffset", "nr-rrc.powerControlOffset_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_powerControlOffsetSS,
+ { "powerControlOffsetSS", "nr-rrc.powerControlOffsetSS_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_scramblingID,
+ { "scramblingID", "nr-rrc.scramblingID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0", HFILL }},
+ { &hf_nr_rrc_csi_RS_timeConfig,
+ { "csi-RS-timeConfig", "nr-rrc.csi_RS_timeConfig",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_csi_RS_timeConfig_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sl5,
+ { "sl5", "nr-rrc.sl5",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_4", HFILL }},
+ { &hf_nr_rrc_sl10,
+ { "sl10", "nr-rrc.sl10",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_9", HFILL }},
+ { &hf_nr_rrc_sl20,
+ { "sl20", "nr-rrc.sl20",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_19", HFILL }},
+ { &hf_nr_rrc_sl40,
+ { "sl40", "nr-rrc.sl40",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_39", HFILL }},
+ { &hf_nr_rrc_sl80,
+ { "sl80", "nr-rrc.sl80",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_79", HFILL }},
+ { &hf_nr_rrc_sl160,
+ { "sl160", "nr-rrc.sl160",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_159", HFILL }},
+ { &hf_nr_rrc_sl320,
+ { "sl320", "nr-rrc.sl320",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_319", HFILL }},
+ { &hf_nr_rrc_sl640,
+ { "sl640", "nr-rrc.sl640",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_639", HFILL }},
+ { &hf_nr_rrc_reportConfigId,
+ { "reportConfigId", "nr-rrc.reportConfigId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "CSI_ReportConfigId", HFILL }},
+ { &hf_nr_rrc_reportConfigType,
+ { "reportConfigType", "nr-rrc.reportConfigType",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reportConfigType_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_periodic_01,
+ { "periodic", "nr-rrc.periodic_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportSlotConfig,
+ { "reportSlotConfig", "nr-rrc.reportSlotConfig",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reportSlotConfig_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pucch_CSI_ResourceIndex,
+ { "pucch-CSI-ResourceIndex", "nr-rrc.pucch_CSI_ResourceIndex_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_semiPersistent_01,
+ { "semiPersistent", "nr-rrc.semiPersistent_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportSlotConfig_01,
+ { "reportSlotConfig", "nr-rrc.reportSlotConfig",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reportSlotConfig_01_vals), 0,
+ "T_reportSlotConfig_01", HFILL }},
+ { &hf_nr_rrc_aperiodic_01,
+ { "aperiodic", "nr-rrc.aperiodic_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_aperiodicReportSlotOffset,
+ { "aperiodicReportSlotOffset", "nr-rrc.aperiodicReportSlotOffset_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportQuantity,
+ { "reportQuantity", "nr-rrc.reportQuantity",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reportQuantity_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cRI_RI_PMI_CQI,
+ { "cRI-RI-PMI-CQI", "nr-rrc.cRI_RI_PMI_CQI_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cRI_RI_i1,
+ { "cRI-RI-i1", "nr-rrc.cRI_RI_i1_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cRI_RI_i1_CQI,
+ { "cRI-RI-i1-CQI", "nr-rrc.cRI_RI_i1_CQI_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pdsch_BundleSizeForCSI,
+ { "pdsch-BundleSizeForCSI", "nr-rrc.pdsch_BundleSizeForCSI",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_pdsch_BundleSizeForCSI_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cRI_RI_CQI,
+ { "cRI-RI-CQI", "nr-rrc.cRI_RI_CQI_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cRI,
+ { "cRI", "nr-rrc.cRI_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cRI_RSRP,
+ { "cRI-RSRP", "nr-rrc.cRI_RSRP_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_spare0,
+ { "spare0", "nr-rrc.spare0_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportFreqConfiguration,
+ { "reportFreqConfiguration", "nr-rrc.reportFreqConfiguration_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cqi_FormatIndicator,
+ { "cqi-FormatIndicator", "nr-rrc.cqi_FormatIndicator",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_cqi_FormatIndicator_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pmi_FormatIndicator,
+ { "pmi-FormatIndicator", "nr-rrc.pmi_FormatIndicator",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_pmi_FormatIndicator_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_ReportingBand,
+ { "csi-ReportingBand", "nr-rrc.csi_ReportingBand",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measRestrictionTimeForChannel,
+ { "measRestrictionTimeForChannel", "nr-rrc.measRestrictionTimeForChannel_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measRestrictionTimeForInterference,
+ { "measRestrictionTimeForInterference", "nr-rrc.measRestrictionTimeForInterference_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_codebookConfig,
+ { "codebookConfig", "nr-rrc.codebookConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_nrofCQIsPerReport,
+ { "nrofCQIsPerReport", "nr-rrc.nrofCQIsPerReport",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_nrofCQIsPerReport_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_groupBasedBeamReporting,
+ { "groupBasedBeamReporting", "nr-rrc.groupBasedBeamReporting",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_groupBasedBeamReporting_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_enabled,
+ { "enabled", "nr-rrc.enabled_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_nrofBeamsToReport,
+ { "nrofBeamsToReport", "nr-rrc.nrofBeamsToReport",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_2_4", HFILL }},
+ { &hf_nr_rrc_disabled,
+ { "disabled", "nr-rrc.disabled_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_nrofReportedRS,
+ { "nrofReportedRS", "nr-rrc.nrofReportedRS",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_nrofReportedRS_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cqi_Table,
+ { "cqi-Table", "nr-rrc.cqi_Table",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_cqi_Table_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_subbandSize,
+ { "subbandSize", "nr-rrc.subbandSize",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_subbandSize_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_bler_Target,
+ { "bler-Target", "nr-rrc.bler_Target",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_bler_Target_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_codebookConfig_N1,
+ { "codebookConfig-N1", "nr-rrc.codebookConfig_N1",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_codebookConfig_N1_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_codebookConfig_N2,
+ { "codebookConfig-N2", "nr-rrc.codebookConfig_N2",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_codebookConfig_N2_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_codebookType,
+ { "codebookType", "nr-rrc.codebookType",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_codebookType_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_type1,
+ { "type1", "nr-rrc.type1_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_subType,
+ { "subType", "nr-rrc.subType",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_subType_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_codebookMode,
+ { "codebookMode", "nr-rrc.codebookMode",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_codebookMode_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_numberOfPanels,
+ { "numberOfPanels", "nr-rrc.numberOfPanels",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_numberOfPanels_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_codebookSubsetRestrictionType1,
+ { "codebookSubsetRestrictionType1", "nr-rrc.codebookSubsetRestrictionType1",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_codebookSubsetRestrictionType1_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_singlePanel,
+ { "singlePanel", "nr-rrc.singlePanel",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_singlePanel2TX,
+ { "singlePanel2TX", "nr-rrc.singlePanel2TX",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_6", HFILL }},
+ { &hf_nr_rrc_multiPanel,
+ { "multiPanel", "nr-rrc.multiPanel",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_singlePanelCodebookSubsetRestriction_i2,
+ { "singlePanelCodebookSubsetRestriction-i2", "nr-rrc.singlePanelCodebookSubsetRestriction_i2",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_16", HFILL }},
+ { &hf_nr_rrc_ri_Restriction,
+ { "ri-Restriction", "nr-rrc.ri_Restriction",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_ri_Restriction_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_typeI_SinglePanelRI_Restriction,
+ { "typeI-SinglePanelRI-Restriction", "nr-rrc.typeI_SinglePanelRI_Restriction",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_8", HFILL }},
+ { &hf_nr_rrc_typeI_MultiPanelRI_Restriction,
+ { "typeI-MultiPanelRI-Restriction", "nr-rrc.typeI_MultiPanelRI_Restriction",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_4", HFILL }},
+ { &hf_nr_rrc_type2,
+ { "type2", "nr-rrc.type2_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_subType_01,
+ { "subType", "nr-rrc.subType",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_subType_01_vals), 0,
+ "T_subType_01", HFILL }},
+ { &hf_nr_rrc_phaseAlphabetSize,
+ { "phaseAlphabetSize", "nr-rrc.phaseAlphabetSize",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_phaseAlphabetSize_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_subbandAmplitude,
+ { "subbandAmplitude", "nr-rrc.subbandAmplitude",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_numberOfBeams,
+ { "numberOfBeams", "nr-rrc.numberOfBeams",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_numberOfBeams_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_portSelectionSamplingSize,
+ { "portSelectionSamplingSize", "nr-rrc.portSelectionSamplingSize",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_portSelectionSamplingSize_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_codebookSubsetRestrictionType2,
+ { "codebookSubsetRestrictionType2", "nr-rrc.codebookSubsetRestrictionType2",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ri_Restriction_01,
+ { "ri-Restriction", "nr-rrc.ri_Restriction",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_ri_Restriction_01_vals), 0,
+ "T_ri_Restriction_01", HFILL }},
+ { &hf_nr_rrc_typeII_RI_Restriction,
+ { "typeII-RI-Restriction", "nr-rrc.typeII_RI_Restriction",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_2", HFILL }},
+ { &hf_nr_rrc_typeII_PortSelectionRI_Restriction,
+ { "typeII-PortSelectionRI-Restriction", "nr-rrc.typeII_PortSelectionRI_Restriction",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_2", HFILL }},
+ { &hf_nr_rrc_csi_measId,
+ { "csi-measId", "nr-rrc.csi_measId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_RS_resourceConfigId,
+ { "csi-RS-resourceConfigId", "nr-rrc.csi_RS_resourceConfigId",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "CSI_RS_ConfigurationId", HFILL }},
+ { &hf_nr_rrc_csi_reportConfigId,
+ { "csi-reportConfigId", "nr-rrc.csi_reportConfigId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measQuantity,
+ { "measQuantity", "nr-rrc.measQuantity",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_measQuantity_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_carrierFreqUL,
+ { "carrierFreqUL", "nr-rrc.carrierFreqUL",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ARFCN_ValueNR", HFILL }},
+ { &hf_nr_rrc_carrierBandwidthUL,
+ { "carrierBandwidthUL", "nr-rrc.carrierBandwidthUL",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_CarrierBandwidthNR_vals), 0,
+ "CarrierBandwidthNR", HFILL }},
+ { &hf_nr_rrc_additionalSpectrumEmission,
+ { "additionalSpectrumEmission", "nr-rrc.additionalSpectrumEmission",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_p_Max,
+ { "p-Max", "nr-rrc.p_Max",
+ FT_INT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_frequencyShift7p5khz,
+ { "frequencyShift7p5khz", "nr-rrc.frequencyShift7p5khz",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_frequencyShift7p5khz_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_initialUplinkBandwidthPart,
+ { "initialUplinkBandwidthPart", "nr-rrc.initialUplinkBandwidthPart_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "BandwidthPart", HFILL }},
+ { &hf_nr_rrc_ul_SpecificParameters,
+ { "ul-SpecificParameters", "nr-rrc.ul_SpecificParameters_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_priority,
+ { "priority", "nr-rrc.priority",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_16", HFILL }},
+ { &hf_nr_rrc_prioritisedBitRate,
+ { "prioritisedBitRate", "nr-rrc.prioritisedBitRate",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_prioritisedBitRate_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_bucketSizeDuration,
+ { "bucketSizeDuration", "nr-rrc.bucketSizeDuration",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_bucketSizeDuration_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_allowedSubCarrierSpacing,
+ { "allowedSubCarrierSpacing", "nr-rrc.allowedSubCarrierSpacing",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_SubcarrierSpacing_vals), 0,
+ "SubcarrierSpacing", HFILL }},
+ { &hf_nr_rrc_allowedTiming,
+ { "allowedTiming", "nr-rrc.allowedTiming_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_logicalChannelGroup,
+ { "logicalChannelGroup", "nr-rrc.logicalChannelGroup",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_maxLCid", HFILL }},
+ { &hf_nr_rrc_logicalChannelSR_Mask,
+ { "logicalChannelSR-Mask", "nr-rrc.logicalChannelSR_Mask",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_logicalChannelSR_DelayTimerApplied,
+ { "logicalChannelSR-DelayTimerApplied", "nr-rrc.logicalChannelSR_DelayTimerApplied",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_drx_Config,
+ { "drx-Config", "nr-rrc.drx_Config",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_DRX_Config_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_schedulingRequestConfig,
+ { "schedulingRequestConfig", "nr-rrc.schedulingRequestConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_bsr_Config,
+ { "bsr-Config", "nr-rrc.bsr_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "BSR_Configuration", HFILL }},
+ { &hf_nr_rrc_tag_Config,
+ { "tag-Config", "nr-rrc.tag_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TAG_Configuration", HFILL }},
+ { &hf_nr_rrc_phr_Config,
+ { "phr-Config", "nr-rrc.phr_Config",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_PHR_Config_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sCellDeactivationTimer,
+ { "sCellDeactivationTimer", "nr-rrc.sCellDeactivationTimer",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_sCellDeactivationTimer_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_skipUplinkTxDynamic,
+ { "skipUplinkTxDynamic", "nr-rrc.skipUplinkTxDynamic",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_release,
+ { "release", "nr-rrc.release_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_drx_onDurationTimer,
+ { "drx-onDurationTimer", "nr-rrc.drx_onDurationTimer",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_drx_onDurationTimer_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_drx_InactivityTimer,
+ { "drx-InactivityTimer", "nr-rrc.drx_InactivityTimer",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_drx_InactivityTimer_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_drx_HARQ_RTT_TimerDL,
+ { "drx-HARQ-RTT-TimerDL", "nr-rrc.drx_HARQ_RTT_TimerDL",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_56", HFILL }},
+ { &hf_nr_rrc_drx_HARQ_RTT_TimerUL,
+ { "drx-HARQ-RTT-TimerUL", "nr-rrc.drx_HARQ_RTT_TimerUL",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_56", HFILL }},
+ { &hf_nr_rrc_drx_RetransmissionTimerDL,
+ { "drx-RetransmissionTimerDL", "nr-rrc.drx_RetransmissionTimerDL",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_drx_RetransmissionTimerDL_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_drx_RetransmissionTimerUL,
+ { "drx-RetransmissionTimerUL", "nr-rrc.drx_RetransmissionTimerUL",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_drx_RetransmissionTimerUL_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_drx_LongCycleStartOffset,
+ { "drx-LongCycleStartOffset", "nr-rrc.drx_LongCycleStartOffset",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_drx_LongCycleStartOffset_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ms10,
+ { "ms10", "nr-rrc.ms10",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_9", HFILL }},
+ { &hf_nr_rrc_ms20,
+ { "ms20", "nr-rrc.ms20",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_19", HFILL }},
+ { &hf_nr_rrc_ms32,
+ { "ms32", "nr-rrc.ms32",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_31", HFILL }},
+ { &hf_nr_rrc_ms40,
+ { "ms40", "nr-rrc.ms40",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_39", HFILL }},
+ { &hf_nr_rrc_ms60,
+ { "ms60", "nr-rrc.ms60",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_59", HFILL }},
+ { &hf_nr_rrc_ms64,
+ { "ms64", "nr-rrc.ms64",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_63", HFILL }},
+ { &hf_nr_rrc_ms70,
+ { "ms70", "nr-rrc.ms70",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_69", HFILL }},
+ { &hf_nr_rrc_ms80,
+ { "ms80", "nr-rrc.ms80",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_79", HFILL }},
+ { &hf_nr_rrc_ms128,
+ { "ms128", "nr-rrc.ms128",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_127", HFILL }},
+ { &hf_nr_rrc_ms160,
+ { "ms160", "nr-rrc.ms160",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_159", HFILL }},
+ { &hf_nr_rrc_ms256,
+ { "ms256", "nr-rrc.ms256",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_255", HFILL }},
+ { &hf_nr_rrc_ms320,
+ { "ms320", "nr-rrc.ms320",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_319", HFILL }},
+ { &hf_nr_rrc_ms512,
+ { "ms512", "nr-rrc.ms512",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_511", HFILL }},
+ { &hf_nr_rrc_ms640,
+ { "ms640", "nr-rrc.ms640",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_639", HFILL }},
+ { &hf_nr_rrc_ms1024,
+ { "ms1024", "nr-rrc.ms1024",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_1023", HFILL }},
+ { &hf_nr_rrc_ms1280,
+ { "ms1280", "nr-rrc.ms1280",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_1279", HFILL }},
+ { &hf_nr_rrc_ms2048,
+ { "ms2048", "nr-rrc.ms2048",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_2047", HFILL }},
+ { &hf_nr_rrc_ms2560,
+ { "ms2560", "nr-rrc.ms2560",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_2559", HFILL }},
+ { &hf_nr_rrc_ms5120,
+ { "ms5120", "nr-rrc.ms5120",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_5119", HFILL }},
+ { &hf_nr_rrc_ms10240,
+ { "ms10240", "nr-rrc.ms10240",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_10239", HFILL }},
+ { &hf_nr_rrc_shortDRX,
+ { "shortDRX", "nr-rrc.shortDRX_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_drx_ShortCycle,
+ { "drx-ShortCycle", "nr-rrc.drx_ShortCycle",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_drx_ShortCycle_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_drx_ShortCycleTimer,
+ { "drx-ShortCycleTimer", "nr-rrc.drx_ShortCycleTimer",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_16", HFILL }},
+ { &hf_nr_rrc_drx_SlotOffset,
+ { "drx-SlotOffset", "nr-rrc.drx_SlotOffset",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_drx_SlotOffset_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_01,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_setup_01", HFILL }},
+ { &hf_nr_rrc_phr_PeriodicTimer,
+ { "phr-PeriodicTimer", "nr-rrc.phr_PeriodicTimer",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_phr_PeriodicTimer_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_phr_ProhibitTimer,
+ { "phr-ProhibitTimer", "nr-rrc.phr_ProhibitTimer",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_phr_ProhibitTimer_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_phr_Tx_PowerFactorChange,
+ { "phr-Tx-PowerFactorChange", "nr-rrc.phr_Tx_PowerFactorChange",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_phr_Tx_PowerFactorChange_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_multiplePHR,
+ { "multiplePHR", "nr-rrc.multiplePHR",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_phr_Type2PCell,
+ { "phr-Type2PCell", "nr-rrc.phr_Type2PCell",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_phr_Type2OtherCell,
+ { "phr-Type2OtherCell", "nr-rrc.phr_Type2OtherCell",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_phr_ModeOtherCG,
+ { "phr-ModeOtherCG", "nr-rrc.phr_ModeOtherCG",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_phr_ModeOtherCG_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_tag_ToReleaseList,
+ { "tag-ToReleaseList", "nr-rrc.tag_ToReleaseList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_tag_ToAddModList,
+ { "tag-ToAddModList", "nr-rrc.tag_ToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_TAG_ToReleaseList_item,
+ { "TAG-Id", "nr-rrc.TAG_Id",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_TAG_ToAddModList_item,
+ { "TAG-ToAddMod", "nr-rrc.TAG_ToAddMod_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_tag_Id,
+ { "tag-Id", "nr-rrc.tag_Id",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_timeAlignmentTimer,
+ { "timeAlignmentTimer", "nr-rrc.timeAlignmentTimer",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_TimeAlignmentTimer_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_periodicBSR_Timer,
+ { "periodicBSR-Timer", "nr-rrc.periodicBSR_Timer",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_periodicBSR_Timer_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_retxBSR_Timer,
+ { "retxBSR-Timer", "nr-rrc.retxBSR_Timer",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_retxBSR_Timer_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_logicaChannelSR_DelayTimer,
+ { "logicaChannelSR-DelayTimer", "nr-rrc.logicaChannelSR_DelayTimer",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_logicaChannelSR_DelayTimer_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measObjectToRemoveList,
+ { "measObjectToRemoveList", "nr-rrc.measObjectToRemoveList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measObjectToAddModList,
+ { "measObjectToAddModList", "nr-rrc.measObjectToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportConfigToRemoveList,
+ { "reportConfigToRemoveList", "nr-rrc.reportConfigToRemoveList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportConfigToAddModList,
+ { "reportConfigToAddModList", "nr-rrc.reportConfigToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measIdToRemoveList,
+ { "measIdToRemoveList", "nr-rrc.measIdToRemoveList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measIdToAddModList,
+ { "measIdToAddModList", "nr-rrc.measIdToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_s_MeasureConfig,
+ { "s-MeasureConfig", "nr-rrc.s_MeasureConfig",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_s_MeasureConfig_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ssb_rsrp,
+ { "ssb-rsrp", "nr-rrc.ssb_rsrp",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRP_Range", HFILL }},
+ { &hf_nr_rrc_csi_rsrp,
+ { "csi-rsrp", "nr-rrc.csi_rsrp",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRP_Range", HFILL }},
+ { &hf_nr_rrc_quantityConfig,
+ { "quantityConfig", "nr-rrc.quantityConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measGapConfig,
+ { "measGapConfig", "nr-rrc.measGapConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_MeasObjectToRemoveList_item,
+ { "MeasObjectId", "nr-rrc.MeasObjectId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_MeasIdToRemoveList_item,
+ { "MeasId", "nr-rrc.MeasId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ReportConfigToRemoveList_item,
+ { "ReportConfigId", "nr-rrc.ReportConfigId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_MeasIdToAddModList_item,
+ { "MeasIdToAddMod", "nr-rrc.MeasIdToAddMod_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measId,
+ { "measId", "nr-rrc.measId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measObjectId,
+ { "measObjectId", "nr-rrc.measObjectId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportConfigId_01,
+ { "reportConfigId", "nr-rrc.reportConfigId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_carrierFreq,
+ { "carrierFreq", "nr-rrc.carrierFreq",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ARFCN_ValueNR", HFILL }},
+ { &hf_nr_rrc_referenceSignalConfig,
+ { "referenceSignalConfig", "nr-rrc.referenceSignalConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_absThreshSS_BlocksConsolidation,
+ { "absThreshSS-BlocksConsolidation", "nr-rrc.absThreshSS_BlocksConsolidation_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ThresholdNR", HFILL }},
+ { &hf_nr_rrc_absThreshCSI_RS_Consolidation,
+ { "absThreshCSI-RS-Consolidation", "nr-rrc.absThreshCSI_RS_Consolidation_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ThresholdNR", HFILL }},
+ { &hf_nr_rrc_nroSS_BlocksToAverage,
+ { "nroSS-BlocksToAverage", "nr-rrc.nroSS_BlocksToAverage",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_2_maxNroSS_BlocksToAverage", HFILL }},
+ { &hf_nr_rrc_nroCSI_RS_ResourcesToAverage,
+ { "nroCSI-RS-ResourcesToAverage", "nr-rrc.nroCSI_RS_ResourcesToAverage",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_2_maxNroCSI_RS_ResourcesToAverage", HFILL }},
+ { &hf_nr_rrc_quantityConfigIndex,
+ { "quantityConfigIndex", "nr-rrc.quantityConfigIndex",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_maxQuantityConfigId", HFILL }},
+ { &hf_nr_rrc_offsetFreq,
+ { "offsetFreq", "nr-rrc.offsetFreq_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Q_OffsetRangeList", HFILL }},
+ { &hf_nr_rrc_cellsToRemoveList,
+ { "cellsToRemoveList", "nr-rrc.cellsToRemoveList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "CellIndexList", HFILL }},
+ { &hf_nr_rrc_cellsToAddModList,
+ { "cellsToAddModList", "nr-rrc.cellsToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_blackCellsToRemoveList,
+ { "blackCellsToRemoveList", "nr-rrc.blackCellsToRemoveList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "CellIndexList", HFILL }},
+ { &hf_nr_rrc_blackCellsToAddModList,
+ { "blackCellsToAddModList", "nr-rrc.blackCellsToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_whiteCellsToRemoveList,
+ { "whiteCellsToRemoveList", "nr-rrc.whiteCellsToRemoveList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "CellIndexList", HFILL }},
+ { &hf_nr_rrc_whiteCellsToAddModList,
+ { "whiteCellsToAddModList", "nr-rrc.whiteCellsToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ssb_MeasurementTimingConfiguration,
+ { "ssb-MeasurementTimingConfiguration", "nr-rrc.ssb_MeasurementTimingConfiguration_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ssbPresence,
+ { "ssbPresence", "nr-rrc.ssbPresence",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_ssbPresence_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_present,
+ { "present", "nr-rrc.present_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_frequencyOffset,
+ { "frequencyOffset", "nr-rrc.frequencyOffset_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_subcarrierSpacing_01,
+ { "subcarrierSpacing", "nr-rrc.subcarrierSpacing",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_SubcarrierSpacing_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_notPresent,
+ { "notPresent", "nr-rrc.notPresent_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_rs_ResourceConfig_Mobility,
+ { "csi-rs-ResourceConfig-Mobility", "nr-rrc.csi_rs_ResourceConfig_Mobility_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_useServingCellTimingForSync,
+ { "useServingCellTimingForSync", "nr-rrc.useServingCellTimingForSync",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_smtc1,
+ { "smtc1", "nr-rrc.smtc1_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_periodicityAndOffset,
+ { "periodicityAndOffset", "nr-rrc.periodicityAndOffset",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_periodicityAndOffset_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sf5,
+ { "sf5", "nr-rrc.sf5",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_4", HFILL }},
+ { &hf_nr_rrc_sf10,
+ { "sf10", "nr-rrc.sf10",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_9", HFILL }},
+ { &hf_nr_rrc_sf20,
+ { "sf20", "nr-rrc.sf20",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_19", HFILL }},
+ { &hf_nr_rrc_sf40,
+ { "sf40", "nr-rrc.sf40",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_39", HFILL }},
+ { &hf_nr_rrc_sf80,
+ { "sf80", "nr-rrc.sf80",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_79", HFILL }},
+ { &hf_nr_rrc_sf160,
+ { "sf160", "nr-rrc.sf160",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_159", HFILL }},
+ { &hf_nr_rrc_duration,
+ { "duration", "nr-rrc.duration",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_duration_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ssb_ToMeasure,
+ { "ssb-ToMeasure", "nr-rrc.ssb_ToMeasure",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_ssb_ToMeasure_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_02,
+ { "setup", "nr-rrc.setup",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_setup_02_vals), 0,
+ "T_setup_02", HFILL }},
+ { &hf_nr_rrc_shortBitmap,
+ { "shortBitmap", "nr-rrc.shortBitmap",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_4", HFILL }},
+ { &hf_nr_rrc_mediumBitmap,
+ { "mediumBitmap", "nr-rrc.mediumBitmap",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_8", HFILL }},
+ { &hf_nr_rrc_longBitmap,
+ { "longBitmap", "nr-rrc.longBitmap",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_64", HFILL }},
+ { &hf_nr_rrc_smtc2,
+ { "smtc2", "nr-rrc.smtc2_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pci_List,
+ { "pci-List", "nr-rrc.pci_List",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofPCIsPerSMTC_OF_PhysicalCellId", HFILL }},
+ { &hf_nr_rrc_pci_List_item,
+ { "PhysicalCellId", "nr-rrc.PhysicalCellId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_periodicty,
+ { "periodicty", "nr-rrc.periodicty_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_rs_MeasurementBW,
+ { "csi-rs-MeasurementBW", "nr-rrc.csi_rs_MeasurementBW_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_rs_measurementBW_size,
+ { "csi-rs-measurementBW-size", "nr-rrc.csi_rs_measurementBW_size",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_csi_rs_measurementBW_size_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_rs_measurement_BW_start,
+ { "csi-rs-measurement-BW-start", "nr-rrc.csi_rs_measurement_BW_start",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_csi_rs_measurement_BW_start_vals), 0,
+ "T_csi_rs_measurement_BW_start", HFILL }},
+ { &hf_nr_rrc_associated_SSB,
+ { "associated-SSB", "nr-rrc.associated_SSB",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_associated_SSB_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_qcled_SSB,
+ { "qcled-SSB", "nr-rrc.qcled_SSB",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_isServingCellMO,
+ { "isServingCellMO", "nr-rrc.isServingCellMO",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_csi_rs_ResourceList_Mobility,
+ { "csi-rs-ResourceList-Mobility", "nr-rrc.csi_rs_ResourceList_Mobility",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesRRM_OF_CSI_RS_Resource_Mobility", HFILL }},
+ { &hf_nr_rrc_csi_rs_ResourceList_Mobility_item,
+ { "CSI-RS-Resource-Mobility", "nr-rrc.CSI_RS_Resource_Mobility_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_rs_ResourceId_RRM,
+ { "csi-rs-ResourceId-RRM", "nr-rrc.csi_rs_ResourceId_RRM",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cellId,
+ { "cellId", "nr-rrc.cellId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "PhysicalCellId", HFILL }},
+ { &hf_nr_rrc_slotConfig,
+ { "slotConfig", "nr-rrc.slotConfig",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_slotConfig_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ms5,
+ { "ms5", "nr-rrc.ms5",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_4", HFILL }},
+ { &hf_nr_rrc_resourceElementMappingPattern,
+ { "resourceElementMappingPattern", "nr-rrc.resourceElementMappingPattern_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sequenceGenerationConfig,
+ { "sequenceGenerationConfig", "nr-rrc.sequenceGenerationConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rsrpOffsetSSB,
+ { "rsrpOffsetSSB", "nr-rrc.rsrpOffsetSSB",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_Q_OffsetRange_vals_ext, 0,
+ "Q_OffsetRange", HFILL }},
+ { &hf_nr_rrc_rsrqOffsetSSB,
+ { "rsrqOffsetSSB", "nr-rrc.rsrqOffsetSSB",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_Q_OffsetRange_vals_ext, 0,
+ "Q_OffsetRange", HFILL }},
+ { &hf_nr_rrc_sinrOffsetSSB,
+ { "sinrOffsetSSB", "nr-rrc.sinrOffsetSSB",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_Q_OffsetRange_vals_ext, 0,
+ "Q_OffsetRange", HFILL }},
+ { &hf_nr_rrc_rsrpOffsetCSI_RS,
+ { "rsrpOffsetCSI-RS", "nr-rrc.rsrpOffsetCSI_RS",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_Q_OffsetRange_vals_ext, 0,
+ "Q_OffsetRange", HFILL }},
+ { &hf_nr_rrc_rsrqOffsetCSI_RS,
+ { "rsrqOffsetCSI-RS", "nr-rrc.rsrqOffsetCSI_RS",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_Q_OffsetRange_vals_ext, 0,
+ "Q_OffsetRange", HFILL }},
+ { &hf_nr_rrc_sinrOffsetCSI_RS,
+ { "sinrOffsetCSI-RS", "nr-rrc.sinrOffsetCSI_RS",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_Q_OffsetRange_vals_ext, 0,
+ "Q_OffsetRange", HFILL }},
+ { &hf_nr_rrc_threshold_RSRP,
+ { "threshold-RSRP", "nr-rrc.threshold_RSRP",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRP_Range", HFILL }},
+ { &hf_nr_rrc_threshold_RSRQ,
+ { "threshold-RSRQ", "nr-rrc.threshold_RSRQ",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRQ_Range", HFILL }},
+ { &hf_nr_rrc_threshold_SINR,
+ { "threshold-SINR", "nr-rrc.threshold_SINR",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SINR_Range", HFILL }},
+ { &hf_nr_rrc_CellsToAddModList_item,
+ { "CellsToAddMod", "nr-rrc.CellsToAddMod_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cellIndex,
+ { "cellIndex", "nr-rrc.cellIndex",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_maxNrofCellMeas", HFILL }},
+ { &hf_nr_rrc_physCellId,
+ { "physCellId", "nr-rrc.physCellId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cellIndividualOffset,
+ { "cellIndividualOffset", "nr-rrc.cellIndividualOffset_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Q_OffsetRangeList", HFILL }},
+ { &hf_nr_rrc_BlackCellsToAddModList_item,
+ { "BlackCellsToAddMod", "nr-rrc.BlackCellsToAddMod_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_physCellIdRange,
+ { "physCellIdRange", "nr-rrc.physCellIdRange_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_WhiteCellsToAddModList_item,
+ { "WhiteCellsToAddMod", "nr-rrc.WhiteCellsToAddMod_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_MeasObjectToAddModList_item,
+ { "MeasObjectToAddMod", "nr-rrc.MeasObjectToAddMod_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measObject,
+ { "measObject", "nr-rrc.measObject",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_measObject_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measObjectNR,
+ { "measObjectNR", "nr-rrc.measObjectNR_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measObjectEUTRA,
+ { "measObjectEUTRA", "nr-rrc.measObjectEUTRA_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measResultServingFreqList,
+ { "measResultServingFreqList", "nr-rrc.measResultServingFreqList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MeasResultServFreqList", HFILL }},
+ { &hf_nr_rrc_measResultNeighCells,
+ { "measResultNeighCells", "nr-rrc.measResultNeighCells",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_measResultNeighCells_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measResultListNR,
+ { "measResultListNR", "nr-rrc.measResultListNR",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measResultListEUTRA,
+ { "measResultListEUTRA", "nr-rrc.measResultListEUTRA_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_MeasResultServFreqList_item,
+ { "MeasResultServFreq", "nr-rrc.MeasResultServFreq_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_servFreqId,
+ { "servFreqId", "nr-rrc.servFreqId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ServCellIndex", HFILL }},
+ { &hf_nr_rrc_measResultServingCell,
+ { "measResultServingCell", "nr-rrc.measResultServingCell_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MeasResultNR", HFILL }},
+ { &hf_nr_rrc_measResultBestNeighCell,
+ { "measResultBestNeighCell", "nr-rrc.measResultBestNeighCell_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MeasResultNR", HFILL }},
+ { &hf_nr_rrc_MeasResultListNR_item,
+ { "MeasResultNR", "nr-rrc.MeasResultNR_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cgi_Info,
+ { "cgi-Info", "nr-rrc.cgi_Info_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_measResult,
+ { "measResult", "nr-rrc.measResult_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cellResults,
+ { "cellResults", "nr-rrc.cellResults_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_resultsSSBCell,
+ { "resultsSSBCell", "nr-rrc.resultsSSBCell_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_resultsCSI_RSCell,
+ { "resultsCSI-RSCell", "nr-rrc.resultsCSI_RSCell_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rsIndexResults,
+ { "rsIndexResults", "nr-rrc.rsIndexResults_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_resultsSSBIndexes,
+ { "resultsSSBIndexes", "nr-rrc.resultsSSBIndexes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ResultsPerSSBIndexList", HFILL }},
+ { &hf_nr_rrc_resultsCSI_RSIndexes,
+ { "resultsCSI-RSIndexes", "nr-rrc.resultsCSI_RSIndexes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ResultsPerCSI_RSIndexList", HFILL }},
+ { &hf_nr_rrc_ssb_Cellrsrp,
+ { "ssb-Cellrsrp", "nr-rrc.ssb_Cellrsrp",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRP_Range", HFILL }},
+ { &hf_nr_rrc_ssb_Cellrsrq,
+ { "ssb-Cellrsrq", "nr-rrc.ssb_Cellrsrq",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRQ_Range", HFILL }},
+ { &hf_nr_rrc_ssb_Cellsinr,
+ { "ssb-Cellsinr", "nr-rrc.ssb_Cellsinr",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SINR_Range", HFILL }},
+ { &hf_nr_rrc_csi_rs_Cellrsrp,
+ { "csi-rs-Cellrsrp", "nr-rrc.csi_rs_Cellrsrp",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRP_Range", HFILL }},
+ { &hf_nr_rrc_csi_rs_Cellrsrq,
+ { "csi-rs-Cellrsrq", "nr-rrc.csi_rs_Cellrsrq",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRQ_Range", HFILL }},
+ { &hf_nr_rrc_csi_rs_Cellsinr,
+ { "csi-rs-Cellsinr", "nr-rrc.csi_rs_Cellsinr",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SINR_Range", HFILL }},
+ { &hf_nr_rrc_ResultsPerSSBIndexList_item,
+ { "ResultsPerSSBIndex", "nr-rrc.ResultsPerSSBIndex_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ssb_Index,
+ { "ssb-Index", "nr-rrc.ssb_Index",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ss_rsrp,
+ { "ss-rsrp", "nr-rrc.ss_rsrp",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRP_Range", HFILL }},
+ { &hf_nr_rrc_ss_rsrq,
+ { "ss-rsrq", "nr-rrc.ss_rsrq",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRQ_Range", HFILL }},
+ { &hf_nr_rrc_ss_sinr,
+ { "ss-sinr", "nr-rrc.ss_sinr",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SINR_Range", HFILL }},
+ { &hf_nr_rrc_ResultsPerCSI_RSIndexList_item,
+ { "ResultsPerCSI-RSIndex", "nr-rrc.ResultsPerCSI_RSIndex_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_rsIndex,
+ { "csi-rsIndex", "nr-rrc.csi_rsIndex",
+ FT_INT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_rsrq,
+ { "csi-rsrq", "nr-rrc.csi_rsrq",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRQ_Range", HFILL }},
+ { &hf_nr_rrc_csi_sinr,
+ { "csi-sinr", "nr-rrc.csi_sinr",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SINR_Range", HFILL }},
+ { &hf_nr_rrc_controlResourceSetToAddModList,
+ { "controlResourceSetToAddModList", "nr-rrc.controlResourceSetToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceSet", HFILL }},
+ { &hf_nr_rrc_controlResourceSetToAddModList_item,
+ { "ControlResourceSet", "nr-rrc.ControlResourceSet_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_controlResourceSetToReleaseList,
+ { "controlResourceSetToReleaseList", "nr-rrc.controlResourceSetToReleaseList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceId", HFILL }},
+ { &hf_nr_rrc_controlResourceSetToReleaseList_item,
+ { "ControlResourceId", "nr-rrc.ControlResourceId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_searchSpacesToAddModList,
+ { "searchSpacesToAddModList", "nr-rrc.searchSpacesToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpace", HFILL }},
+ { &hf_nr_rrc_searchSpacesToAddModList_item,
+ { "SearchSpace", "nr-rrc.SearchSpace_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_searchSpacesToReleaseList,
+ { "searchSpacesToReleaseList", "nr-rrc.searchSpacesToReleaseList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpaceId", HFILL }},
+ { &hf_nr_rrc_searchSpacesToReleaseList_item,
+ { "SearchSpaceId", "nr-rrc.SearchSpaceId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_timing,
+ { "timing", "nr-rrc.timing_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_dl_assignment_to_DL_data,
+ { "dl-assignment-to-DL-data", "nr-rrc.dl_assignment_to_DL_data_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ul_assignment_to_UL_data,
+ { "ul-assignment-to-UL-data", "nr-rrc.ul_assignment_to_UL_data_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_dl_data_to_UL_ACK,
+ { "dl-data-to-UL-ACK", "nr-rrc.dl_data_to_UL_ACK_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_controlResourceSetId,
+ { "controlResourceSetId", "nr-rrc.controlResourceSetId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_frequencyDomainResources,
+ { "frequencyDomainResources", "nr-rrc.frequencyDomainResources_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_startSymbol,
+ { "startSymbol", "nr-rrc.startSymbol",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_maxCoReSetStartSymbol", HFILL }},
+ { &hf_nr_rrc_duration_01,
+ { "duration", "nr-rrc.duration",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_maxCoReSetDuration", HFILL }},
+ { &hf_nr_rrc_reg_BundleSize,
+ { "reg-BundleSize", "nr-rrc.reg_BundleSize",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reg_BundleSize_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cce_reg_MappingType,
+ { "cce-reg-MappingType", "nr-rrc.cce_reg_MappingType",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_cce_reg_MappingType_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_precoderGranularity,
+ { "precoderGranularity", "nr-rrc.precoderGranularity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_interleaverRows,
+ { "interleaverRows", "nr-rrc.interleaverRows",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_interleaverRows_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_shiftIndex,
+ { "shiftIndex", "nr-rrc.shiftIndex_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_tci_StateRefId,
+ { "tci-StateRefId", "nr-rrc.tci_StateRefId_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pdcch_DMRS_ScramblingID,
+ { "pdcch-DMRS-ScramblingID", "nr-rrc.pdcch_DMRS_ScramblingID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_searchSpaceId,
+ { "searchSpaceId", "nr-rrc.searchSpaceId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_monitoringSlotPeriodicityAndOffset,
+ { "monitoringSlotPeriodicityAndOffset", "nr-rrc.monitoringSlotPeriodicityAndOffset",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_monitoringSlotPeriodicityAndOffset_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sl1,
+ { "sl1", "nr-rrc.sl1_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sl2,
+ { "sl2", "nr-rrc.sl2",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_1", HFILL }},
+ { &hf_nr_rrc_monitoringSymbolsWithinSlot,
+ { "monitoringSymbolsWithinSlot", "nr-rrc.monitoringSymbolsWithinSlot",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_14", HFILL }},
+ { &hf_nr_rrc_nrofCandidates,
+ { "nrofCandidates", "nr-rrc.nrofCandidates_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_aggregationLevel1,
+ { "aggregationLevel1", "nr-rrc.aggregationLevel1",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_aggregationLevel1_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_aggregationLevel2,
+ { "aggregationLevel2", "nr-rrc.aggregationLevel2",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_aggregationLevel2_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_aggregationLevel4,
+ { "aggregationLevel4", "nr-rrc.aggregationLevel4",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_aggregationLevel4_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_aggregationLevel8,
+ { "aggregationLevel8", "nr-rrc.aggregationLevel8",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_aggregationLevel8_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_searchSpaceType,
+ { "searchSpaceType", "nr-rrc.searchSpaceType",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_searchSpaceType_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_common,
+ { "common", "nr-rrc.common_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sfi_PDCCH,
+ { "sfi-PDCCH", "nr-rrc.sfi_PDCCH_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_preemp_DL,
+ { "preemp-DL", "nr-rrc.preemp_DL",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_int_RNTI,
+ { "int-RNTI", "nr-rrc.int_RNTI",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_16", HFILL }},
+ { &hf_nr_rrc_int_TF,
+ { "int-TF", "nr-rrc.int_TF",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_int_TF_vals), 0,
+ "T_int_TF", HFILL }},
+ { &hf_nr_rrc_monitoringPeriodicity,
+ { "monitoringPeriodicity", "nr-rrc.monitoringPeriodicity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ue_Specific,
+ { "ue-Specific", "nr-rrc.ue_Specific_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_monitoringPeriodicity_01,
+ { "monitoringPeriodicity", "nr-rrc.monitoringPeriodicity",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_monitoringPeriodicity_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sfi_CellToSFI,
+ { "sfi-CellToSFI", "nr-rrc.sfi_CellToSFI",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofAggregatedCellsPerCellGroup_OF_CellToSFI", HFILL }},
+ { &hf_nr_rrc_sfi_CellToSFI_item,
+ { "CellToSFI", "nr-rrc.CellToSFI_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_nrofPDCCH_Candidates,
+ { "nrofPDCCH-Candidates", "nr-rrc.nrofPDCCH_Candidates",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_nrofPDCCH_Candidates_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_aggregationLevel,
+ { "aggregationLevel", "nr-rrc.aggregationLevel",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_aggregationLevel_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sfi_RNTI,
+ { "sfi-RNTI", "nr-rrc.sfi_RNTI",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_16", HFILL }},
+ { &hf_nr_rrc_dci_PayloadLength,
+ { "dci-PayloadLength", "nr-rrc.dci_PayloadLength_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_searchSpace,
+ { "searchSpace", "nr-rrc.searchSpace_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sfi_PositionInDCI,
+ { "sfi-PositionInDCI", "nr-rrc.sfi_PositionInDCI",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_1", HFILL }},
+ { &hf_nr_rrc_slotFormatCombinations,
+ { "slotFormatCombinations", "nr-rrc.slotFormatCombinations",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofSlotFormatCombinations_OF_SlotFormatCombination", HFILL }},
+ { &hf_nr_rrc_slotFormatCombinations_item,
+ { "SlotFormatCombination", "nr-rrc.SlotFormatCombination_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_slotFormatCombinationId,
+ { "slotFormatCombinationId", "nr-rrc.slotFormatCombinationId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_drb,
+ { "drb", "nr-rrc.drb_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_discardTimer,
+ { "discardTimer", "nr-rrc.discardTimer",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_discardTimer_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pdcp_SN_Size_UL,
+ { "pdcp-SN-Size-UL", "nr-rrc.pdcp_SN_Size_UL",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_pdcp_SN_Size_UL_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pdcp_SN_Size_DL,
+ { "pdcp-SN-Size-DL", "nr-rrc.pdcp_SN_Size_DL",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_pdcp_SN_Size_DL_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_headerCompression,
+ { "headerCompression", "nr-rrc.headerCompression",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_headerCompression_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_notUsed,
+ { "notUsed", "nr-rrc.notUsed_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rohc,
+ { "rohc", "nr-rrc.rohc_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_maxCID,
+ { "maxCID", "nr-rrc.maxCID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_16383", HFILL }},
+ { &hf_nr_rrc_profiles,
+ { "profiles", "nr-rrc.profiles_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_profile0x0001,
+ { "profile0x0001", "nr-rrc.profile0x0001",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_profile0x0002,
+ { "profile0x0002", "nr-rrc.profile0x0002",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_profile0x0003,
+ { "profile0x0003", "nr-rrc.profile0x0003",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_profile0x0004,
+ { "profile0x0004", "nr-rrc.profile0x0004",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_profile0x0006,
+ { "profile0x0006", "nr-rrc.profile0x0006",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_profile0x0101,
+ { "profile0x0101", "nr-rrc.profile0x0101",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_profile0x0102,
+ { "profile0x0102", "nr-rrc.profile0x0102",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_profile0x0103,
+ { "profile0x0103", "nr-rrc.profile0x0103",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_profile0x0104,
+ { "profile0x0104", "nr-rrc.profile0x0104",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_uplinkOnlyROHC,
+ { "uplinkOnlyROHC", "nr-rrc.uplinkOnlyROHC_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_profiles_01,
+ { "profiles", "nr-rrc.profiles_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_profiles_01", HFILL }},
+ { &hf_nr_rrc_integrityProtection,
+ { "integrityProtection", "nr-rrc.integrityProtection",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_statusReportRequired,
+ { "statusReportRequired", "nr-rrc.statusReportRequired",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_moreThanOneRLC,
+ { "moreThanOneRLC", "nr-rrc.moreThanOneRLC_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_primaryPath,
+ { "primaryPath", "nr-rrc.primaryPath_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cellGroup,
+ { "cellGroup", "nr-rrc.cellGroup",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "CellGroupId", HFILL }},
+ { &hf_nr_rrc_logicalChannel,
+ { "logicalChannel", "nr-rrc.logicalChannel",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "LogicalChannelIdentity", HFILL }},
+ { &hf_nr_rrc_ul_DataSplitThreshold,
+ { "ul-DataSplitThreshold", "nr-rrc.ul_DataSplitThreshold",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_ul_DataSplitThreshold_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_03,
+ { "setup", "nr-rrc.setup",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_setup_03_vals_ext, 0,
+ "T_setup_03", HFILL }},
+ { &hf_nr_rrc_ul_Duplication,
+ { "ul-Duplication", "nr-rrc.ul_Duplication",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_t_Reordering,
+ { "t-Reordering", "nr-rrc.t_Reordering",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_t_Reordering_vals_ext, 0,
+ "T_t_Reordering", HFILL }},
+ { &hf_nr_rrc_outOfOrderDelivery,
+ { "outOfOrderDelivery", "nr-rrc.outOfOrderDelivery",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_codeBlockGroupTransmission,
+ { "codeBlockGroupTransmission", "nr-rrc.codeBlockGroupTransmission",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_maxCodeBlockGroupsPerTransportBlock,
+ { "maxCodeBlockGroupsPerTransportBlock", "nr-rrc.maxCodeBlockGroupsPerTransportBlock",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_maxCodeBlockGroupsPerTransportBlock_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_codeBlockGroupFlushIndicator,
+ { "codeBlockGroupFlushIndicator", "nr-rrc.codeBlockGroupFlushIndicator",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_dmrs_Type,
+ { "dmrs-Type", "nr-rrc.dmrs_Type",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_dmrs_Type_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_dmrs_AdditionalPosition,
+ { "dmrs-AdditionalPosition", "nr-rrc.dmrs_AdditionalPosition",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_dmrs_AdditionalPosition_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_dmrs_group1,
+ { "dmrs-group1", "nr-rrc.dmrs_group1_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_dmrs_group2,
+ { "dmrs-group2", "nr-rrc.dmrs_group2_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_phaseTracking_RS,
+ { "phaseTracking-RS", "nr-rrc.phaseTracking_RS",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_phaseTracking_RS_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_04,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Downlink_PTRS_Config", HFILL }},
+ { &hf_nr_rrc_tci_States,
+ { "tci-States", "nr-rrc.tci_States_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_tci_rs_SetConfig,
+ { "tci-rs-SetConfig", "nr-rrc.tci_rs_SetConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_tci_PresentInDCI,
+ { "tci-PresentInDCI", "nr-rrc.tci_PresentInDCI",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_tci_PresentInDCI_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_xOverhead,
+ { "xOverhead", "nr-rrc.xOverhead",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_xOverhead_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pdsch_symbolAllocation,
+ { "pdsch-symbolAllocation", "nr-rrc.pdsch_symbolAllocation_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rateMatchResourcesPDSCH,
+ { "rateMatchResourcesPDSCH", "nr-rrc.rateMatchResourcesPDSCH_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rateMatchPatterns,
+ { "rateMatchPatterns", "nr-rrc.rateMatchPatterns",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_rateMatchPatterns_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_05,
+ { "setup", "nr-rrc.setup",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofRateMatchPatterns_OF_RateMatchPattern", HFILL }},
+ { &hf_nr_rrc_setup_item,
+ { "RateMatchPattern", "nr-rrc.RateMatchPattern_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_lte_CRS_ToMatchAround,
+ { "lte-CRS-ToMatchAround", "nr-rrc.lte_CRS_ToMatchAround",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_lte_CRS_ToMatchAround_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_06,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_setup_04", HFILL }},
+ { &hf_nr_rrc_nrofCRS_Ports,
+ { "nrofCRS-Ports", "nr-rrc.nrofCRS_Ports",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_nrofCRS_Ports_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_v_Shift,
+ { "v-Shift", "nr-rrc.v_Shift",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_v_Shift_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rbg_Size,
+ { "rbg-Size", "nr-rrc.rbg_Size",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_rbg_Size_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_mcs_Table,
+ { "mcs-Table", "nr-rrc.mcs_Table",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_mcs_Table_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_maxNrofCodeWordsScheduledByDCI,
+ { "maxNrofCodeWordsScheduledByDCI", "nr-rrc.maxNrofCodeWordsScheduledByDCI",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_maxNrofCodeWordsScheduledByDCI_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_nrofHARQ_processesForPDSCH,
+ { "nrofHARQ-processesForPDSCH", "nr-rrc.nrofHARQ_processesForPDSCH_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_harq_ACK_Codebook,
+ { "harq-ACK-Codebook", "nr-rrc.harq_ACK_Codebook",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_harq_ACK_Codebook_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pdsch_BundleSize,
+ { "pdsch-BundleSize", "nr-rrc.pdsch_BundleSize_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_prbBundlingEnabled,
+ { "prbBundlingEnabled", "nr-rrc.prbBundlingEnabled",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_frequencyDensity,
+ { "frequencyDensity", "nr-rrc.frequencyDensity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_timeDensity,
+ { "timeDensity", "nr-rrc.timeDensity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_nrofPorts_01,
+ { "nrofPorts", "nr-rrc.nrofPorts",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_nrofPorts_01_vals), 0,
+ "T_nrofPorts_01", HFILL }},
+ { &hf_nr_rrc_epre_Ratio,
+ { "epre-Ratio", "nr-rrc.epre_Ratio_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_resourceElementOffset,
+ { "resourceElementOffset", "nr-rrc.resourceElementOffset_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_resourceBlocks,
+ { "resourceBlocks", "nr-rrc.resourceBlocks",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_275", HFILL }},
+ { &hf_nr_rrc_symbolsInResourceBlock,
+ { "symbolsInResourceBlock", "nr-rrc.symbolsInResourceBlock",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_14", HFILL }},
+ { &hf_nr_rrc_periodicityAndOffset_01,
+ { "periodicityAndOffset", "nr-rrc.periodicityAndOffset",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_periodicityAndOffset_01_vals), 0,
+ "T_periodicityAndOffset_01", HFILL }},
+ { &hf_nr_rrc_n5,
+ { "n5", "nr-rrc.n5",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_4", HFILL }},
+ { &hf_nr_rrc_n10,
+ { "n10", "nr-rrc.n10",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_9", HFILL }},
+ { &hf_nr_rrc_n20,
+ { "n20", "nr-rrc.n20",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_19", HFILL }},
+ { &hf_nr_rrc_n40,
+ { "n40", "nr-rrc.n40",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_39", HFILL }},
+ { &hf_nr_rrc_resourceSets,
+ { "resourceSets", "nr-rrc.resourceSets",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_1_OF_PUCCH_ResourceSet", HFILL }},
+ { &hf_nr_rrc_resourceSets_item,
+ { "PUCCH-ResourceSet", "nr-rrc.PUCCH_ResourceSet_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_format1,
+ { "format1", "nr-rrc.format1",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_format1_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_07,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_setup_05", HFILL }},
+ { &hf_nr_rrc_interslotFrequencyHopping,
+ { "interslotFrequencyHopping", "nr-rrc.interslotFrequencyHopping",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_interslotFrequencyHopping_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_nrofSlots,
+ { "nrofSlots", "nr-rrc.nrofSlots",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_nrofSlots_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_format2,
+ { "format2", "nr-rrc.format2",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_format2_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_08,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_setup_06", HFILL }},
+ { &hf_nr_rrc_maxCodeRate,
+ { "maxCodeRate", "nr-rrc.maxCodeRate",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_7", HFILL }},
+ { &hf_nr_rrc_nrofPRBs,
+ { "nrofPRBs", "nr-rrc.nrofPRBs",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_16", HFILL }},
+ { &hf_nr_rrc_simultaneousHARQ_ACK_CSI,
+ { "simultaneousHARQ-ACK-CSI", "nr-rrc.simultaneousHARQ_ACK_CSI",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_simultaneousHARQ_ACK_CSI_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_format3,
+ { "format3", "nr-rrc.format3",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_format3_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_09,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_setup_07", HFILL }},
+ { &hf_nr_rrc_interslotFrequencyHopping_01,
+ { "interslotFrequencyHopping", "nr-rrc.interslotFrequencyHopping",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_interslotFrequencyHopping_01_vals), 0,
+ "T_interslotFrequencyHopping_01", HFILL }},
+ { &hf_nr_rrc_additionalDMRS,
+ { "additionalDMRS", "nr-rrc.additionalDMRS",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_additionalDMRS_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_nrofSlots_01,
+ { "nrofSlots", "nr-rrc.nrofSlots",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_nrofSlots_01_vals), 0,
+ "T_nrofSlots_01", HFILL }},
+ { &hf_nr_rrc_pi2PBSK,
+ { "pi2PBSK", "nr-rrc.pi2PBSK",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_pi2PBSK_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_format4,
+ { "format4", "nr-rrc.format4",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_format4_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_10,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_setup_08", HFILL }},
+ { &hf_nr_rrc_interslotFrequencyHopping_02,
+ { "interslotFrequencyHopping", "nr-rrc.interslotFrequencyHopping",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_interslotFrequencyHopping_02_vals), 0,
+ "T_interslotFrequencyHopping_02", HFILL }},
+ { &hf_nr_rrc_additionalDMRS_01,
+ { "additionalDMRS", "nr-rrc.additionalDMRS",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_additionalDMRS_01_vals), 0,
+ "T_additionalDMRS_01", HFILL }},
+ { &hf_nr_rrc_nrofSlots_02,
+ { "nrofSlots", "nr-rrc.nrofSlots",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_nrofSlots_02_vals), 0,
+ "T_nrofSlots_02", HFILL }},
+ { &hf_nr_rrc_pi2PBSK_01,
+ { "pi2PBSK", "nr-rrc.pi2PBSK",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_pi2PBSK_01_vals), 0,
+ "T_pi2PBSK_01", HFILL }},
+ { &hf_nr_rrc_schedulingRequestResources,
+ { "schedulingRequestResources", "nr-rrc.schedulingRequestResources",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_schedulingRequestResources_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_11,
+ { "setup", "nr-rrc.setup",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofSchedulingRequestResoruces_OF_SchedulingRequestResource_Config", HFILL }},
+ { &hf_nr_rrc_setup_item_01,
+ { "SchedulingRequestResource-Config", "nr-rrc.SchedulingRequestResource_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_tpc_PUCCH_RNTI,
+ { "tpc-PUCCH-RNTI", "nr-rrc.tpc_PUCCH_RNTI",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_16", HFILL }},
+ { &hf_nr_rrc_codeBlockGroupTransmission_01,
+ { "codeBlockGroupTransmission", "nr-rrc.codeBlockGroupTransmission",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_codeBlockGroupTransmission_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_maxCodeBlockGroupsPerTransportBlock_01,
+ { "maxCodeBlockGroupsPerTransportBlock", "nr-rrc.maxCodeBlockGroupsPerTransportBlock",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_maxCodeBlockGroupsPerTransportBlock_01_vals), 0,
+ "T_maxCodeBlockGroupsPerTransportBlock_01", HFILL }},
+ { &hf_nr_rrc_dmrs_Type_01,
+ { "dmrs-Type", "nr-rrc.dmrs_Type",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_dmrs_Type_01_vals), 0,
+ "T_dmrs_Type_01", HFILL }},
+ { &hf_nr_rrc_dmrs_AdditionalPosition_01,
+ { "dmrs-AdditionalPosition", "nr-rrc.dmrs_AdditionalPosition",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_dmrs_AdditionalPosition_01_vals), 0,
+ "T_dmrs_AdditionalPosition_01", HFILL }},
+ { &hf_nr_rrc_phaseTracking_RS_01,
+ { "phaseTracking-RS", "nr-rrc.phaseTracking_RS",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_phaseTracking_RS_01_vals), 0,
+ "T_phaseTracking_RS_01", HFILL }},
+ { &hf_nr_rrc_setup_12,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Uplink_PTRS_Config", HFILL }},
+ { &hf_nr_rrc_tpcAccumulation,
+ { "tpcAccumulation", "nr-rrc.tpcAccumulation",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_tpcAccumulation_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_tcp_PUSCH_RNTI,
+ { "tcp-PUSCH-RNTI", "nr-rrc.tcp_PUSCH_RNTI",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_16", HFILL }},
+ { &hf_nr_rrc_frequencyHopping,
+ { "frequencyHopping", "nr-rrc.frequencyHopping",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_frequencyHopping_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rateMatching,
+ { "rateMatching", "nr-rrc.rateMatching",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_rateMatching_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rateMatchResources,
+ { "rateMatchResources", "nr-rrc.rateMatchResources_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_symbolAllocationIndexs,
+ { "symbolAllocationIndexs", "nr-rrc.symbolAllocationIndexs_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_mcs_Table_01,
+ { "mcs-Table", "nr-rrc.mcs_Table",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_mcs_Table_01_vals), 0,
+ "T_mcs_Table_01", HFILL }},
+ { &hf_nr_rrc_mcs_TableTransformPrecoder,
+ { "mcs-TableTransformPrecoder", "nr-rrc.mcs_TableTransformPrecoder",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_mcs_TableTransformPrecoder_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_transformPrecoder,
+ { "transformPrecoder", "nr-rrc.transformPrecoder",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_transformPrecoder_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rbg_Size_01,
+ { "rbg-Size", "nr-rrc.rbg_Size",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_rbg_Size_01_vals), 0,
+ "T_rbg_Size_01", HFILL }},
+ { &hf_nr_rrc_uci_on_PUSCH,
+ { "uci-on-PUSCH", "nr-rrc.uci_on_PUSCH",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_uci_on_PUSCH_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_13,
+ { "setup", "nr-rrc.setup",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_setup_09_vals), 0,
+ "T_setup_09", HFILL }},
+ { &hf_nr_rrc_dynamic,
+ { "dynamic", "nr-rrc.dynamic",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_4_OF_BetaOffsets", HFILL }},
+ { &hf_nr_rrc_dynamic_item,
+ { "BetaOffsets", "nr-rrc.BetaOffsets_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_semiStatic,
+ { "semiStatic", "nr-rrc.semiStatic_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "BetaOffsets", HFILL }},
+ { &hf_nr_rrc_xOverhead_01,
+ { "xOverhead", "nr-rrc.xOverhead",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_xOverhead_01_vals), 0,
+ "T_xOverhead_01", HFILL }},
+ { &hf_nr_rrc_cp_OFDM,
+ { "cp-OFDM", "nr-rrc.cp_OFDM",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_cp_OFDM_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_14,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_setup_10", HFILL }},
+ { &hf_nr_rrc_nrofPorts_02,
+ { "nrofPorts", "nr-rrc.nrofPorts",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_nrofPorts_02_vals), 0,
+ "T_nrofPorts_02", HFILL }},
+ { &hf_nr_rrc_dft_S_OFDM,
+ { "dft-S-OFDM", "nr-rrc.dft_S_OFDM",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_dft_S_OFDM_vals), 0,
+ "T_dft_S_OFDM", HFILL }},
+ { &hf_nr_rrc_setup_15,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_setup_11", HFILL }},
+ { &hf_nr_rrc_sampleDensity,
+ { "sampleDensity", "nr-rrc.sampleDensity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_timeDensity_01,
+ { "timeDensity", "nr-rrc.timeDensity",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_timeDensity_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sequence,
+ { "sequence", "nr-rrc.sequence_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_betaOffsetACK_Index1,
+ { "betaOffsetACK-Index1", "nr-rrc.betaOffsetACK_Index1",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_31", HFILL }},
+ { &hf_nr_rrc_betaOffsetACK_Index2,
+ { "betaOffsetACK-Index2", "nr-rrc.betaOffsetACK_Index2",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_31", HFILL }},
+ { &hf_nr_rrc_betaOffsetACK_Index3,
+ { "betaOffsetACK-Index3", "nr-rrc.betaOffsetACK_Index3",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_31", HFILL }},
+ { &hf_nr_rrc_betaOffsetCSI_part1_Index1,
+ { "betaOffsetCSI-part1-Index1", "nr-rrc.betaOffsetCSI_part1_Index1",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_31", HFILL }},
+ { &hf_nr_rrc_betaOffsetCSI_part1_Index2,
+ { "betaOffsetCSI-part1-Index2", "nr-rrc.betaOffsetCSI_part1_Index2",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_31", HFILL }},
+ { &hf_nr_rrc_betaOffsetCSI_part2_Index1,
+ { "betaOffsetCSI-part2-Index1", "nr-rrc.betaOffsetCSI_part2_Index1",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_31", HFILL }},
+ { &hf_nr_rrc_betaOffsetCSI_part2_Index2,
+ { "betaOffsetCSI-part2-Index2", "nr-rrc.betaOffsetCSI_part2_Index2",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_31", HFILL }},
+ { &hf_nr_rrc_quantityConfigRSindex,
+ { "quantityConfigRSindex", "nr-rrc.quantityConfigRSindex_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "QuantityConfigRS", HFILL }},
+ { &hf_nr_rrc_ssbFilterCoefficientRSRP,
+ { "ssbFilterCoefficientRSRP", "nr-rrc.ssbFilterCoefficientRSRP",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_FilterCoefficient_vals), 0,
+ "FilterCoefficient", HFILL }},
+ { &hf_nr_rrc_ssbFilterCoefficientRSRQ,
+ { "ssbFilterCoefficientRSRQ", "nr-rrc.ssbFilterCoefficientRSRQ",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_FilterCoefficient_vals), 0,
+ "FilterCoefficient", HFILL }},
+ { &hf_nr_rrc_ssbFilterCoefficientRS_SINR,
+ { "ssbFilterCoefficientRS-SINR", "nr-rrc.ssbFilterCoefficientRS_SINR",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_FilterCoefficient_vals), 0,
+ "FilterCoefficient", HFILL }},
+ { &hf_nr_rrc_csi_rsFilterCoefficientRSRP,
+ { "csi-rsFilterCoefficientRSRP", "nr-rrc.csi_rsFilterCoefficientRSRP",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_FilterCoefficient_vals), 0,
+ "FilterCoefficient", HFILL }},
+ { &hf_nr_rrc_csi_rsFilterCoefficientRSRQ,
+ { "csi-rsFilterCoefficientRSRQ", "nr-rrc.csi_rsFilterCoefficientRSRQ",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_FilterCoefficient_vals), 0,
+ "FilterCoefficient", HFILL }},
+ { &hf_nr_rrc_csi_rsFilterCoefficientRS_SINR,
+ { "csi-rsFilterCoefficientRS-SINR", "nr-rrc.csi_rsFilterCoefficientRS_SINR",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_FilterCoefficient_vals), 0,
+ "FilterCoefficient", HFILL }},
+ { &hf_nr_rrc_groupBconfigured,
+ { "groupBconfigured", "nr-rrc.groupBconfigured_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ra_Msg3SizeGroupA,
+ { "ra-Msg3SizeGroupA", "nr-rrc.ra_Msg3SizeGroupA",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_ra_Msg3SizeGroupA_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_messagePowerOffsetGroupB,
+ { "messagePowerOffsetGroupB", "nr-rrc.messagePowerOffsetGroupB",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_messagePowerOffsetGroupB_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cbra_SSB_ResourceList,
+ { "cbra-SSB-ResourceList", "nr-rrc.cbra_SSB_ResourceList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ra_ContentionResolutionTimer,
+ { "ra-ContentionResolutionTimer", "nr-rrc.ra_ContentionResolutionTimer",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_ra_ContentionResolutionTimer_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ssb_Threshold,
+ { "ssb-Threshold", "nr-rrc.ssb_Threshold_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sul_RSRP_Threshold,
+ { "sul-RSRP-Threshold", "nr-rrc.sul_RSRP_Threshold_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_prach_ConfigurationIndex,
+ { "prach-ConfigurationIndex", "nr-rrc.prach_ConfigurationIndex",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_255", HFILL }},
+ { &hf_nr_rrc_prach_RootSequenceIndex,
+ { "prach-RootSequenceIndex", "nr-rrc.prach_RootSequenceIndex",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_prach_RootSequenceIndex_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_l839,
+ { "l839", "nr-rrc.l839",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_837", HFILL }},
+ { &hf_nr_rrc_l139,
+ { "l139", "nr-rrc.l139",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_137", HFILL }},
+ { &hf_nr_rrc_zeroCorrelationZoneConfig,
+ { "zeroCorrelationZoneConfig", "nr-rrc.zeroCorrelationZoneConfig",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_15", HFILL }},
+ { &hf_nr_rrc_restrictedSetConfig,
+ { "restrictedSetConfig", "nr-rrc.restrictedSetConfig",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_restrictedSetConfig_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_preambleReceivedTargetPower,
+ { "preambleReceivedTargetPower", "nr-rrc.preambleReceivedTargetPower",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_preambleReceivedTargetPower_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_powerRampingStep,
+ { "powerRampingStep", "nr-rrc.powerRampingStep",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_powerRampingStep_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_preambleTransMax,
+ { "preambleTransMax", "nr-rrc.preambleTransMax",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_preambleTransMax_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ra_ResponseWindow,
+ { "ra-ResponseWindow", "nr-rrc.ra_ResponseWindow_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_msg2_SubcarrierSpacing,
+ { "msg2-SubcarrierSpacing", "nr-rrc.msg2_SubcarrierSpacing",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_SubcarrierSpacing_vals), 0,
+ "SubcarrierSpacing", HFILL }},
+ { &hf_nr_rrc_rach_ControlResourceSet,
+ { "rach-ControlResourceSet", "nr-rrc.rach_ControlResourceSet_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_msg3_SubcarrierSpacing,
+ { "msg3-SubcarrierSpacing", "nr-rrc.msg3_SubcarrierSpacing",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_SubcarrierSpacing_vals), 0,
+ "SubcarrierSpacing", HFILL }},
+ { &hf_nr_rrc_msg3_transformPrecoding,
+ { "msg3-transformPrecoding", "nr-rrc.msg3_transformPrecoding",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_msg3_transformPrecoding_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_CBRA_SSB_ResourceList_item,
+ { "CBRA-SSB-Resource", "nr-rrc.CBRA_SSB_Resource_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ssb,
+ { "ssb", "nr-rrc.ssb",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SSB_ID", HFILL }},
+ { &hf_nr_rrc_startIndexRA_PreambleGroupA,
+ { "startIndexRA-PreambleGroupA", "nr-rrc.startIndexRA_PreambleGroupA",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "PreambleStartIndex", HFILL }},
+ { &hf_nr_rrc_numberofRA_PreamblesGroupA,
+ { "numberofRA-PreamblesGroupA", "nr-rrc.numberofRA_PreamblesGroupA",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "NumberOfRA_Preambles", HFILL }},
+ { &hf_nr_rrc_numberOfRA_Preambles,
+ { "numberOfRA-Preambles", "nr-rrc.numberOfRA_Preambles",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ra_Resources,
+ { "ra-Resources", "nr-rrc.ra_Resources_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cfra_Resources,
+ { "cfra-Resources", "nr-rrc.cfra_Resources",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_CFRA_Resources_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rar_SubcarrierSpacing,
+ { "rar-SubcarrierSpacing", "nr-rrc.rar_SubcarrierSpacing",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_SubcarrierSpacing_vals), 0,
+ "SubcarrierSpacing", HFILL }},
+ { &hf_nr_rrc_cfra_ssb_ResourceList,
+ { "cfra-ssb-ResourceList", "nr-rrc.cfra_ssb_ResourceList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxRAssbResources_OF_CFRA_SSB_Resource", HFILL }},
+ { &hf_nr_rrc_cfra_ssb_ResourceList_item,
+ { "CFRA-SSB-Resource", "nr-rrc.CFRA_SSB_Resource_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cfra_csirs_ResourceList,
+ { "cfra-csirs-ResourceList", "nr-rrc.cfra_csirs_ResourceList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxRAcsirsResources_OF_CFRA_CSIRS_Resource", HFILL }},
+ { &hf_nr_rrc_cfra_csirs_ResourceList_item,
+ { "CFRA-CSIRS-Resource", "nr-rrc.CFRA_CSIRS_Resource_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ra_PreambleIndex,
+ { "ra-PreambleIndex", "nr-rrc.ra_PreambleIndex",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_0", HFILL }},
+ { &hf_nr_rrc_csirs,
+ { "csirs", "nr-rrc.csirs",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "CSIRS_ID", HFILL }},
+ { &hf_nr_rrc_srb_ToAddModList,
+ { "srb-ToAddModList", "nr-rrc.srb_ToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_srb_ToReleaseList,
+ { "srb-ToReleaseList", "nr-rrc.srb_ToReleaseList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_3", HFILL }},
+ { &hf_nr_rrc_drb_ToAddModList,
+ { "drb-ToAddModList", "nr-rrc.drb_ToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_drb_ToReleaseList,
+ { "drb-ToReleaseList", "nr-rrc.drb_ToReleaseList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_securityConfig,
+ { "securityConfig", "nr-rrc.securityConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_SRB_ToAddModList_item,
+ { "SRB-ToAddMod", "nr-rrc.SRB_ToAddMod_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_srb_Identity,
+ { "srb-Identity", "nr-rrc.srb_Identity",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reestablishPDCP,
+ { "reestablishPDCP", "nr-rrc.reestablishPDCP",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reestablishPDCP_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pdcp_Config,
+ { "pdcp-Config", "nr-rrc.pdcp_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_DRB_ToAddModList_item,
+ { "DRB-ToAddMod", "nr-rrc.DRB_ToAddMod_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cnAssociation,
+ { "cnAssociation", "nr-rrc.cnAssociation",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_cnAssociation_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_eps_BearerIdentity,
+ { "eps-BearerIdentity", "nr-rrc.eps_BearerIdentity",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_15", HFILL }},
+ { &hf_nr_rrc_sdap_Config,
+ { "sdap-Config", "nr-rrc.sdap_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_drb_Identity,
+ { "drb-Identity", "nr-rrc.drb_Identity",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reestablishPDCP_01,
+ { "reestablishPDCP", "nr-rrc.reestablishPDCP",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reestablishPDCP_01_vals), 0,
+ "T_reestablishPDCP_01", HFILL }},
+ { &hf_nr_rrc_recoverPDCP,
+ { "recoverPDCP", "nr-rrc.recoverPDCP",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_recoverPDCP_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_DRB_ToReleaseList_item,
+ { "DRB-Identity", "nr-rrc.DRB_Identity",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_securityAlgorithmConfig,
+ { "securityAlgorithmConfig", "nr-rrc.securityAlgorithmConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_keyToUse,
+ { "keyToUse", "nr-rrc.keyToUse",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_keyToUse_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportType,
+ { "reportType", "nr-rrc.reportType",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reportType_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_periodical,
+ { "periodical", "nr-rrc.periodical_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PeriodicalReportConfig", HFILL }},
+ { &hf_nr_rrc_eventTriggered,
+ { "eventTriggered", "nr-rrc.eventTriggered_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EventTriggerConfig", HFILL }},
+ { &hf_nr_rrc_reportCGI,
+ { "reportCGI", "nr-rrc.reportCGI_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_eventId,
+ { "eventId", "nr-rrc.eventId",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_eventId_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_eventA1,
+ { "eventA1", "nr-rrc.eventA1_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_a1_Threshold,
+ { "a1-Threshold", "nr-rrc.a1_Threshold",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_MeasTriggerQuantity_vals), 0,
+ "MeasTriggerQuantity", HFILL }},
+ { &hf_nr_rrc_reportOnLeave,
+ { "reportOnLeave", "nr-rrc.reportOnLeave",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_hysteresis,
+ { "hysteresis", "nr-rrc.hysteresis",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_timeToTrigger,
+ { "timeToTrigger", "nr-rrc.timeToTrigger",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_TimeToTrigger_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_eventA2,
+ { "eventA2", "nr-rrc.eventA2_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_a2_Threshold,
+ { "a2-Threshold", "nr-rrc.a2_Threshold",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_MeasTriggerQuantity_vals), 0,
+ "MeasTriggerQuantity", HFILL }},
+ { &hf_nr_rrc_eventA3,
+ { "eventA3", "nr-rrc.eventA3_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_a3_Offset,
+ { "a3-Offset", "nr-rrc.a3_Offset",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_MeasTriggerQuantityOffset_vals), 0,
+ "MeasTriggerQuantityOffset", HFILL }},
+ { &hf_nr_rrc_useWhiteCellList,
+ { "useWhiteCellList", "nr-rrc.useWhiteCellList",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_eventA4,
+ { "eventA4", "nr-rrc.eventA4_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_a4_Threshold,
+ { "a4-Threshold", "nr-rrc.a4_Threshold",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_MeasTriggerQuantity_vals), 0,
+ "MeasTriggerQuantity", HFILL }},
+ { &hf_nr_rrc_eventA5,
+ { "eventA5", "nr-rrc.eventA5_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_a5_Threshold1,
+ { "a5-Threshold1", "nr-rrc.a5_Threshold1",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_MeasTriggerQuantity_vals), 0,
+ "MeasTriggerQuantity", HFILL }},
+ { &hf_nr_rrc_a5_Threshold2,
+ { "a5-Threshold2", "nr-rrc.a5_Threshold2",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_MeasTriggerQuantity_vals), 0,
+ "MeasTriggerQuantity", HFILL }},
+ { &hf_nr_rrc_eventA6,
+ { "eventA6", "nr-rrc.eventA6_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_a6_Offset,
+ { "a6-Offset", "nr-rrc.a6_Offset",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_MeasTriggerQuantityOffset_vals), 0,
+ "MeasTriggerQuantityOffset", HFILL }},
+ { &hf_nr_rrc_rsType,
+ { "rsType", "nr-rrc.rsType",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_rsType_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportInterval,
+ { "reportInterval", "nr-rrc.reportInterval",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_ReportInterval_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportAmount,
+ { "reportAmount", "nr-rrc.reportAmount",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reportAmount_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportQuantityCell,
+ { "reportQuantityCell", "nr-rrc.reportQuantityCell_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MeasReportQuantity", HFILL }},
+ { &hf_nr_rrc_maxReportCells,
+ { "maxReportCells", "nr-rrc.maxReportCells",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_maxCellReport", HFILL }},
+ { &hf_nr_rrc_reportQuantityRsIndexes,
+ { "reportQuantityRsIndexes", "nr-rrc.reportQuantityRsIndexes_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MeasReportQuantity", HFILL }},
+ { &hf_nr_rrc_maxNroIndexesToReport,
+ { "maxNroIndexesToReport", "nr-rrc.maxNroIndexesToReport",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_maxNroIndexesToReport", HFILL }},
+ { &hf_nr_rrc_onlyReportBeamIds,
+ { "onlyReportBeamIds", "nr-rrc.onlyReportBeamIds",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_reportAddNeighMeas,
+ { "reportAddNeighMeas", "nr-rrc.reportAddNeighMeas_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rsType_01,
+ { "rsType", "nr-rrc.rsType",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_rsType_01_vals), 0,
+ "T_rsType_01", HFILL }},
+ { &hf_nr_rrc_reportAmount_01,
+ { "reportAmount", "nr-rrc.reportAmount",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reportAmount_01_vals), 0,
+ "T_reportAmount_01", HFILL }},
+ { &hf_nr_rrc_maxNroRsIndexesToReport,
+ { "maxNroRsIndexesToReport", "nr-rrc.maxNroRsIndexesToReport",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_maxNroIndexesToReport", HFILL }},
+ { &hf_nr_rrc_rsrp,
+ { "rsrp", "nr-rrc.rsrp",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRPRange", HFILL }},
+ { &hf_nr_rrc_rsrq,
+ { "rsrq", "nr-rrc.rsrq",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RSRQRange", HFILL }},
+ { &hf_nr_rrc_sinr,
+ { "sinr", "nr-rrc.sinr",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SINRRange", HFILL }},
+ { &hf_nr_rrc_rsrp_01,
+ { "rsrp", "nr-rrc.rsrp",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0", HFILL }},
+ { &hf_nr_rrc_rsrq_01,
+ { "rsrq", "nr-rrc.rsrq",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0", HFILL }},
+ { &hf_nr_rrc_sinr_01,
+ { "sinr", "nr-rrc.sinr",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0", HFILL }},
+ { &hf_nr_rrc_rsrp_02,
+ { "rsrp", "nr-rrc.rsrp",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_rsrq_02,
+ { "rsrq", "nr-rrc.rsrq",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_sinr_02,
+ { "sinr", "nr-rrc.sinr",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_ReportConfigToAddModList_item,
+ { "ReportConfigToAddMod", "nr-rrc.ReportConfigToAddMod_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportConfig,
+ { "reportConfig", "nr-rrc.reportConfig",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_reportConfig_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportConfigNR,
+ { "reportConfigNR", "nr-rrc.reportConfigNR_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_reportConfigEUTRA,
+ { "reportConfigEUTRA", "nr-rrc.reportConfigEUTRA_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_am,
+ { "am", "nr-rrc.am_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ul_AM_RLC,
+ { "ul-AM-RLC", "nr-rrc.ul_AM_RLC_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_dl_AM_RLC,
+ { "dl-AM-RLC", "nr-rrc.dl_AM_RLC_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_um_Bi_Directional,
+ { "um-Bi-Directional", "nr-rrc.um_Bi_Directional_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ul_UM_RLC,
+ { "ul-UM-RLC", "nr-rrc.ul_UM_RLC_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_dl_UM_RLC,
+ { "dl-UM-RLC", "nr-rrc.dl_UM_RLC_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_um_Uni_Directional_UL,
+ { "um-Uni-Directional-UL", "nr-rrc.um_Uni_Directional_UL_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_um_Uni_Directional_DL,
+ { "um-Uni-Directional-DL", "nr-rrc.um_Uni_Directional_DL_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sn_FieldLength,
+ { "sn-FieldLength", "nr-rrc.sn_FieldLength",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_SN_FieldLength_AM_vals), 0,
+ "SN_FieldLength_AM", HFILL }},
+ { &hf_nr_rrc_t_PollRetransmit,
+ { "t-PollRetransmit", "nr-rrc.t_PollRetransmit",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_PollRetransmit_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pollPDU,
+ { "pollPDU", "nr-rrc.pollPDU",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_PollPDU_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pollByte,
+ { "pollByte", "nr-rrc.pollByte",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_PollByte_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_maxRetxThreshold,
+ { "maxRetxThreshold", "nr-rrc.maxRetxThreshold",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_maxRetxThreshold_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_t_Reassembly,
+ { "t-Reassembly", "nr-rrc.t_Reassembly",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_Reassembly_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_t_StatusProhibit,
+ { "t-StatusProhibit", "nr-rrc.t_StatusProhibit",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_StatusProhibit_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sn_FieldLength_01,
+ { "sn-FieldLength", "nr-rrc.sn_FieldLength",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_SN_FieldLength_UM_vals), 0,
+ "SN_FieldLength_UM", HFILL }},
+ { &hf_nr_rrc_schedulingRequestToAddModList,
+ { "schedulingRequestToAddModList", "nr-rrc.schedulingRequestToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestToAddMod", HFILL }},
+ { &hf_nr_rrc_schedulingRequestToAddModList_item,
+ { "SchedulingRequestToAddMod", "nr-rrc.SchedulingRequestToAddMod_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_schedulingRequestToReleaseList,
+ { "schedulingRequestToReleaseList", "nr-rrc.schedulingRequestToReleaseList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestId", HFILL }},
+ { &hf_nr_rrc_schedulingRequestToReleaseList_item,
+ { "SchedulingRequestId", "nr-rrc.SchedulingRequestId",
+ FT_INT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_schedulingRequestID,
+ { "schedulingRequestID", "nr-rrc.schedulingRequestID",
+ FT_INT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sr_prohibitTimer,
+ { "sr-prohibitTimer", "nr-rrc.sr_prohibitTimer",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_sr_prohibitTimer_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sr_TransMax,
+ { "sr-TransMax", "nr-rrc.sr_TransMax",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_sr_TransMax_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pduSession,
+ { "pduSession", "nr-rrc.pduSession",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "PDUsessionID", HFILL }},
+ { &hf_nr_rrc_sdap_Header_DL,
+ { "sdap-Header-DL", "nr-rrc.sdap_Header_DL",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_sdap_Header_DL_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sdap_Header_UL,
+ { "sdap-Header-UL", "nr-rrc.sdap_Header_UL",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_sdap_Header_UL_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_defaultDRB,
+ { "defaultDRB", "nr-rrc.defaultDRB",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_reflectiveQoS,
+ { "reflectiveQoS", "nr-rrc.reflectiveQoS",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_nr_rrc_mappedQoSflows,
+ { "mappedQoSflows", "nr-rrc.mappedQoSflows",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_0_maxNrofQFIs_OF_QFI", HFILL }},
+ { &hf_nr_rrc_mappedQoSflows_item,
+ { "QFI", "nr-rrc.QFI",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cipheringAlgorithm,
+ { "cipheringAlgorithm", "nr-rrc.cipheringAlgorithm",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_CipheringAlgorithm_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_integrityProtAlgorithm,
+ { "integrityProtAlgorithm", "nr-rrc.integrityProtAlgorithm",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_IntegrityProtAlgorithm_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_frequencyInfoDL,
+ { "frequencyInfoDL", "nr-rrc.frequencyInfoDL_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_carrierFreqDL,
+ { "carrierFreqDL", "nr-rrc.carrierFreqDL",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ARFCN_ValueNR", HFILL }},
+ { &hf_nr_rrc_carrierBandwidthDL,
+ { "carrierBandwidthDL", "nr-rrc.carrierBandwidthDL",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_CarrierBandwidthNR_vals), 0,
+ "CarrierBandwidthNR", HFILL }},
+ { &hf_nr_rrc_frequencyInfoUL,
+ { "frequencyInfoUL", "nr-rrc.frequencyInfoUL_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_supplementaryUplink,
+ { "supplementaryUplink", "nr-rrc.supplementaryUplink_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_subcarrierSpacingCommon,
+ { "subcarrierSpacingCommon", "nr-rrc.subcarrierSpacingCommon",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_SubcarrierSpacing_vals), 0,
+ "SubcarrierSpacing", HFILL }},
+ { &hf_nr_rrc_ssb_subcarrier_offset,
+ { "ssb-subcarrier-offset", "nr-rrc.ssb_subcarrier_offset",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_11", HFILL }},
+ { &hf_nr_rrc_ssb_PositionsInBurst,
+ { "ssb-PositionsInBurst", "nr-rrc.ssb_PositionsInBurst",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_ssb_PositionsInBurst_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ssb_periodicityServingCell,
+ { "ssb-periodicityServingCell", "nr-rrc.ssb_periodicityServingCell",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_ssb_periodicityServingCell_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_dmrs_TypeA_Position_01,
+ { "dmrs-TypeA-Position", "nr-rrc.dmrs_TypeA_Position",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_dmrs_TypeA_Position_01_vals), 0,
+ "T_dmrs_TypeA_Position_01", HFILL }},
+ { &hf_nr_rrc_subcarrierSpacingSSB,
+ { "subcarrierSpacingSSB", "nr-rrc.subcarrierSpacingSSB",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_SubcarrierSpacingSSB_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_tdd_UL_DL_configurationCommon,
+ { "tdd-UL-DL-configurationCommon", "nr-rrc.tdd_UL_DL_configurationCommon_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_dl_UL_TransmissionPeriodicity,
+ { "dl-UL-TransmissionPeriodicity", "nr-rrc.dl_UL_TransmissionPeriodicity",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_dl_UL_TransmissionPeriodicity_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_nrofDownlinkSlots,
+ { "nrofDownlinkSlots", "nr-rrc.nrofDownlinkSlots",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_160", HFILL }},
+ { &hf_nr_rrc_nrofDownlinkSymbols,
+ { "nrofDownlinkSymbols", "nr-rrc.nrofDownlinkSymbols",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_maxSymbolIndex", HFILL }},
+ { &hf_nr_rrc_nrofUplinkSlots,
+ { "nrofUplinkSlots", "nr-rrc.nrofUplinkSlots",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_160", HFILL }},
+ { &hf_nr_rrc_nrofUplinkSymbols,
+ { "nrofUplinkSymbols", "nr-rrc.nrofUplinkSymbols",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_maxSymbolIndex", HFILL }},
+ { &hf_nr_rrc_ss_PBCH_BlockPower,
+ { "ss-PBCH-BlockPower", "nr-rrc.ss_PBCH_BlockPower",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER_M60_50", HFILL }},
+ { &hf_nr_rrc_rach_ConfigCommon,
+ { "rach-ConfigCommon", "nr-rrc.rach_ConfigCommon_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_tdd_UL_DL_configurationDedicated,
+ { "tdd-UL-DL-configurationDedicated", "nr-rrc.tdd_UL_DL_configurationDedicated_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_slotSpecificConfigurations,
+ { "slotSpecificConfigurations", "nr-rrc.slotSpecificConfigurations",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_slotSpecificConfigurations_item,
+ { "slotSpecificConfigurations item", "nr-rrc.slotSpecificConfigurations_item_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_slotIndex,
+ { "slotIndex", "nr-rrc.slotIndex",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_160", HFILL }},
+ { &hf_nr_rrc_bandwidthParts,
+ { "bandwidthParts", "nr-rrc.bandwidthParts_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_dataScramblingIdentity,
+ { "dataScramblingIdentity", "nr-rrc.dataScramblingIdentity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pdcch_Config,
+ { "pdcch-Config", "nr-rrc.pdcch_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pdsch_Config,
+ { "pdsch-Config", "nr-rrc.pdsch_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_csi_MeasConfig,
+ { "csi-MeasConfig", "nr-rrc.csi_MeasConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pucch_Config,
+ { "pucch-Config", "nr-rrc.pucch_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pusch_Config,
+ { "pusch-Config", "nr-rrc.pusch_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_srs_Config,
+ { "srs-Config", "nr-rrc.srs_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_sps_Config,
+ { "sps-Config", "nr-rrc.sps_Config_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_crossCarrierSchedulingConfig,
+ { "crossCarrierSchedulingConfig", "nr-rrc.crossCarrierSchedulingConfig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_ue_BeamLockFunction,
+ { "ue-BeamLockFunction", "nr-rrc.ue_BeamLockFunction",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_ue_BeamLockFunction_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_pathlossReferenceLinking,
+ { "pathlossReferenceLinking", "nr-rrc.pathlossReferenceLinking",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_pathlossReferenceLinking_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_uplink,
+ { "uplink", "nr-rrc.uplink_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_periodicity,
+ { "periodicity", "nr-rrc.periodicity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_powerControl,
+ { "powerControl", "nr-rrc.powerControl_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_transformPrecoder_01,
+ { "transformPrecoder", "nr-rrc.transformPrecoder",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_transformPrecoder_01_vals), 0,
+ "T_transformPrecoder_01", HFILL }},
+ { &hf_nr_rrc_nrofHARQ_processes,
+ { "nrofHARQ-processes", "nr-rrc.nrofHARQ_processes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_1", HFILL }},
+ { &hf_nr_rrc_repK_RV,
+ { "repK-RV", "nr-rrc.repK_RV",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_repK_RV_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_priodicity,
+ { "priodicity", "nr-rrc.priodicity",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &nr_rrc_T_priodicity_vals_ext, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_rrcConfiguredUplinkGrant,
+ { "rrcConfiguredUplinkGrant", "nr-rrc.rrcConfiguredUplinkGrant",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_rrcConfiguredUplinkGrant_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_setup_16,
+ { "setup", "nr-rrc.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_setup_12", HFILL }},
+ { &hf_nr_rrc_timeDomainOffset,
+ { "timeDomainOffset", "nr-rrc.timeDomainOffset_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_timeDomainAllocation,
+ { "timeDomainAllocation", "nr-rrc.timeDomainAllocation_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_frequencyDomainAllocation,
+ { "frequencyDomainAllocation", "nr-rrc.frequencyDomainAllocation_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_dmrs,
+ { "dmrs", "nr-rrc.dmrs_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_mcsAndTBS,
+ { "mcsAndTBS", "nr-rrc.mcsAndTBS_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_repK,
+ { "repK", "nr-rrc.repK_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_srs_ResourceSetToReleaseList,
+ { "srs-ResourceSetToReleaseList", "nr-rrc.srs_ResourceSetToReleaseList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSetId", HFILL }},
+ { &hf_nr_rrc_srs_ResourceSetToReleaseList_item,
+ { "SRS-ResourceSetId", "nr-rrc.SRS_ResourceSetId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_srs_ResourceSetToAddModList,
+ { "srs-ResourceSetToAddModList", "nr-rrc.srs_ResourceSetToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSet", HFILL }},
+ { &hf_nr_rrc_srs_ResourceSetToAddModList_item,
+ { "SRS-ResourceSet", "nr-rrc.SRS_ResourceSet_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_srs_ResourceToReleaseList,
+ { "srs-ResourceToReleaseList", "nr-rrc.srs_ResourceToReleaseList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_ResourceId", HFILL }},
+ { &hf_nr_rrc_srs_ResourceToReleaseList_item,
+ { "SRS-ResourceId", "nr-rrc.SRS_ResourceId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_srs_ResourceToAddModList,
+ { "srs-ResourceToAddModList", "nr-rrc.srs_ResourceToAddModList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_Resource", HFILL }},
+ { &hf_nr_rrc_srs_ResourceToAddModList_item,
+ { "SRS-Resource", "nr-rrc.SRS_Resource_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_tpc_SRS_RNTI,
+ { "tpc-SRS-RNTI", "nr-rrc.tpc_SRS_RNTI",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_16", HFILL }},
+ { &hf_nr_rrc_srs_ResourceSetId,
+ { "srs-ResourceSetId", "nr-rrc.srs_ResourceSetId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_srs_ResourcesIds,
+ { "srs-ResourcesIds", "nr-rrc.srs_ResourcesIds",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_maxNrofSRS_ResourcesPerSet_OF_SRS_ResourceId", HFILL }},
+ { &hf_nr_rrc_srs_ResourcesIds_item,
+ { "SRS-ResourceId", "nr-rrc.SRS_ResourceId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_aperiodicSRS_ResourceTrigger,
+ { "aperiodicSRS-ResourceTrigger", "nr-rrc.aperiodicSRS_ResourceTrigger_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_srs_ResourceId,
+ { "srs-ResourceId", "nr-rrc.srs_ResourceId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_nrofSRS_Ports,
+ { "nrofSRS-Ports", "nr-rrc.nrofSRS_Ports",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_nrofSRS_Ports_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_transmissionComb,
+ { "transmissionComb", "nr-rrc.transmissionComb",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_transmissionComb_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_freqDomainPosition,
+ { "freqDomainPosition", "nr-rrc.freqDomainPosition_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_freqHopping,
+ { "freqHopping", "nr-rrc.freqHopping",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_63", HFILL }},
+ { &hf_nr_rrc_groupOrSequenceHopping,
+ { "groupOrSequenceHopping", "nr-rrc.groupOrSequenceHopping",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_2", HFILL }},
+ { &hf_nr_rrc_resourceType_01,
+ { "resourceType", "nr-rrc.resourceType",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_resourceType_01_vals), 0,
+ "T_resourceType_01", HFILL }},
+ { &hf_nr_rrc_aperiodic_02,
+ { "aperiodic", "nr-rrc.aperiodic_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_aperiodic_01", HFILL }},
+ { &hf_nr_rrc_semi_persistent,
+ { "semi-persistent", "nr-rrc.semi_persistent_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_periodic_02,
+ { "periodic", "nr-rrc.periodic_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_periodic_01", HFILL }},
+ { &hf_nr_rrc_periodicityAndOffset_02,
+ { "periodicityAndOffset", "nr-rrc.periodicityAndOffset",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_periodicityAndOffset_02_vals), 0,
+ "T_periodicityAndOffset_02", HFILL }},
+ { &hf_nr_rrc_sequenceId,
+ { "sequenceId", "nr-rrc.sequenceId_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_antennaSwitching,
+ { "antennaSwitching", "nr-rrc.antennaSwitching_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_carrierSwitching,
+ { "carrierSwitching", "nr-rrc.carrierSwitching_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_cyclicShift,
+ { "cyclicShift", "nr-rrc.cyclicShift",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_12", HFILL }},
+ { &hf_nr_rrc_spatialRelationInfo,
+ { "spatialRelationInfo", "nr-rrc.spatialRelationInfo",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_spatialRelationInfo_vals), 0,
+ NULL, HFILL }},
+ { &hf_nr_rrc_start,
+ { "start", "nr-rrc.start",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "PhysCellId", HFILL }},
+ { &hf_nr_rrc_range,
+ { "range", "nr-rrc.range",
+ FT_UINT32, BASE_DEC, VALS(nr_rrc_T_range_vals), 0,
+ NULL, HFILL }},
+
+/*--- End of included file: packet-nr-rrc-hfarr.c ---*/
+#line 85 "./asn1/nr-rrc/packet-nr-rrc-template.c"
+
+ };
+
+ static gint *ett[] = {
+ &ett_nr_rrc,
+
+/*--- Included file: packet-nr-rrc-ettarr.c ---*/
+#line 1 "./asn1/nr-rrc/packet-nr-rrc-ettarr.c"
+ &ett_nr_rrc_BCCH_BCH_Message,
+ &ett_nr_rrc_BCCH_BCH_MessageType,
+ &ett_nr_rrc_T_messageClassExtension,
+ &ett_nr_rrc_DL_DCCH_Message,
+ &ett_nr_rrc_DL_DCCH_MessageType,
+ &ett_nr_rrc_T_c1,
+ &ett_nr_rrc_T_messageClassExtension_01,
+ &ett_nr_rrc_UL_DCCH_Message,
+ &ett_nr_rrc_UL_DCCH_MessageType,
+ &ett_nr_rrc_T_c1_01,
+ &ett_nr_rrc_T_messageClassExtension_02,
+ &ett_nr_rrc_MIB,
+ &ett_nr_rrc_MeasurementReport,
+ &ett_nr_rrc_T_criticalExtensions,
+ &ett_nr_rrc_T_criticalExtensionsFuture,
+ &ett_nr_rrc_MeasurementReport_IEs,
+ &ett_nr_rrc_RRCReconfiguration,
+ &ett_nr_rrc_T_criticalExtensions_01,
+ &ett_nr_rrc_T_criticalExtensionsFuture_01,
+ &ett_nr_rrc_RRCReconfiguration_IEs,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupConfig,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxSCellGroups_OF_CellGroupId,
+ &ett_nr_rrc_T_nonCriticalExtension,
+ &ett_nr_rrc_RRCReconfigurationComplete,
+ &ett_nr_rrc_T_criticalExtensions_02,
+ &ett_nr_rrc_T_criticalExtensionsFuture_02,
+ &ett_nr_rrc_RRCReconfigurationComplete_IEs,
+ &ett_nr_rrc_BandwidthPart,
+ &ett_nr_rrc_CellGroupConfig,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxLCH_OF_LCH_Config,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxLCH_OF_LogicalChannelIdentity,
+ &ett_nr_rrc_LCH_Config,
+ &ett_nr_rrc_PhysicalCellGroupConfig,
+ &ett_nr_rrc_SpCellConfig,
+ &ett_nr_rrc_T_reconfigurationWithSync,
+ &ett_nr_rrc_SCellToReleaseList,
+ &ett_nr_rrc_SCellToAddModList,
+ &ett_nr_rrc_SCellConfig,
+ &ett_nr_rrc_CellIndexList,
+ &ett_nr_rrc_CrossCarrierSchedulingConfig,
+ &ett_nr_rrc_T_schedulingCellInfo,
+ &ett_nr_rrc_T_own,
+ &ett_nr_rrc_T_other,
+ &ett_nr_rrc_CSI_MeasConfig,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_ResourceConfigurations_OF_CSI_ResourceConfig,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_Reports_OF_CSI_ReportConfig,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_MeasId_OF_CSI_MeasIdToAddMod,
+ &ett_nr_rrc_T_reportTrigger,
+ &ett_nr_rrc_CSI_ResourceConfig,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_ResourceSets_OF_CSI_ResourceSet,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSSB_Resources_1_OF_CSI_SSB_Resource,
+ &ett_nr_rrc_T_resourceType,
+ &ett_nr_rrc_CSI_ResourceSet,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesPerSet_OF_NZP_CSI_RS_Resource,
+ &ett_nr_rrc_NZP_CSI_RS_Resource,
+ &ett_nr_rrc_T_csi_RS_timeConfig,
+ &ett_nr_rrc_CSI_SSB_Resource,
+ &ett_nr_rrc_CSI_ReportConfig,
+ &ett_nr_rrc_T_reportConfigType,
+ &ett_nr_rrc_T_periodic,
+ &ett_nr_rrc_T_reportSlotConfig,
+ &ett_nr_rrc_T_semiPersistent,
+ &ett_nr_rrc_T_reportSlotConfig_01,
+ &ett_nr_rrc_T_aperiodic,
+ &ett_nr_rrc_T_reportQuantity,
+ &ett_nr_rrc_T_cRI_RI_i1_CQI,
+ &ett_nr_rrc_T_reportFreqConfiguration,
+ &ett_nr_rrc_T_groupBasedBeamReporting,
+ &ett_nr_rrc_T_enabled,
+ &ett_nr_rrc_T_disabled,
+ &ett_nr_rrc_CodebookConfig,
+ &ett_nr_rrc_T_codebookType,
+ &ett_nr_rrc_T_type1,
+ &ett_nr_rrc_T_codebookSubsetRestrictionType1,
+ &ett_nr_rrc_T_ri_Restriction,
+ &ett_nr_rrc_T_type2,
+ &ett_nr_rrc_T_ri_Restriction_01,
+ &ett_nr_rrc_CSI_MeasIdToAddMod,
+ &ett_nr_rrc_FrequencyInfoUL,
+ &ett_nr_rrc_LogicalChannelConfig,
+ &ett_nr_rrc_T_ul_SpecificParameters,
+ &ett_nr_rrc_MAC_CellGroupConfig,
+ &ett_nr_rrc_DRX_Config,
+ &ett_nr_rrc_T_setup,
+ &ett_nr_rrc_T_drx_LongCycleStartOffset,
+ &ett_nr_rrc_T_shortDRX,
+ &ett_nr_rrc_PHR_Config,
+ &ett_nr_rrc_T_setup_01,
+ &ett_nr_rrc_TAG_Config,
+ &ett_nr_rrc_TAG_ToReleaseList,
+ &ett_nr_rrc_TAG_ToAddModList,
+ &ett_nr_rrc_TAG_ToAddMod,
+ &ett_nr_rrc_BSR_Config,
+ &ett_nr_rrc_MeasConfig,
+ &ett_nr_rrc_T_s_MeasureConfig,
+ &ett_nr_rrc_MeasObjectToRemoveList,
+ &ett_nr_rrc_MeasIdToRemoveList,
+ &ett_nr_rrc_ReportConfigToRemoveList,
+ &ett_nr_rrc_MeasIdToAddModList,
+ &ett_nr_rrc_MeasIdToAddMod,
+ &ett_nr_rrc_MeasObjectNR,
+ &ett_nr_rrc_ReferenceSignalConfig,
+ &ett_nr_rrc_T_ssbPresence,
+ &ett_nr_rrc_T_present,
+ &ett_nr_rrc_T_notPresent,
+ &ett_nr_rrc_SSB_MeasurementTimingConfiguration,
+ &ett_nr_rrc_T_smtc1,
+ &ett_nr_rrc_T_periodicityAndOffset,
+ &ett_nr_rrc_T_ssb_ToMeasure,
+ &ett_nr_rrc_T_setup_02,
+ &ett_nr_rrc_T_smtc2,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofPCIsPerSMTC_OF_PhysicalCellId,
+ &ett_nr_rrc_CSI_RS_ResourceConfig_Mobility,
+ &ett_nr_rrc_T_csi_rs_MeasurementBW,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofCSI_RS_ResourcesRRM_OF_CSI_RS_Resource_Mobility,
+ &ett_nr_rrc_CSI_RS_Resource_Mobility,
+ &ett_nr_rrc_T_slotConfig,
+ &ett_nr_rrc_Q_OffsetRangeList,
+ &ett_nr_rrc_ThresholdNR,
+ &ett_nr_rrc_CellsToAddModList,
+ &ett_nr_rrc_CellsToAddMod,
+ &ett_nr_rrc_BlackCellsToAddModList,
+ &ett_nr_rrc_BlackCellsToAddMod,
+ &ett_nr_rrc_WhiteCellsToAddModList,
+ &ett_nr_rrc_WhiteCellsToAddMod,
+ &ett_nr_rrc_MeasObjectToAddModList,
+ &ett_nr_rrc_MeasObjectToAddMod,
+ &ett_nr_rrc_T_measObject,
+ &ett_nr_rrc_MeasResults,
+ &ett_nr_rrc_T_measResultNeighCells,
+ &ett_nr_rrc_MeasResultServFreqList,
+ &ett_nr_rrc_MeasResultServFreq,
+ &ett_nr_rrc_MeasResultListNR,
+ &ett_nr_rrc_MeasResultNR,
+ &ett_nr_rrc_T_measResult,
+ &ett_nr_rrc_T_cellResults,
+ &ett_nr_rrc_T_rsIndexResults,
+ &ett_nr_rrc_ResultsSSBCell,
+ &ett_nr_rrc_ResultsCSI_RSCell,
+ &ett_nr_rrc_ResultsPerSSBIndexList,
+ &ett_nr_rrc_ResultsPerSSBIndex,
+ &ett_nr_rrc_ResultsPerCSI_RSIndexList,
+ &ett_nr_rrc_ResultsPerCSI_RSIndex,
+ &ett_nr_rrc_PDCCH_Config,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceSet,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofControlResourceSets_OF_ControlResourceId,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpace,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSearchSpaces_OF_SearchSpaceId,
+ &ett_nr_rrc_T_timing,
+ &ett_nr_rrc_ControlResourceSet,
+ &ett_nr_rrc_SearchSpace,
+ &ett_nr_rrc_T_monitoringSlotPeriodicityAndOffset,
+ &ett_nr_rrc_T_nrofCandidates,
+ &ett_nr_rrc_T_searchSpaceType,
+ &ett_nr_rrc_T_common,
+ &ett_nr_rrc_T_ue_Specific,
+ &ett_nr_rrc_SFI_PDCCH,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofAggregatedCellsPerCellGroup_OF_CellToSFI,
+ &ett_nr_rrc_CellToSFI,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSlotFormatCombinations_OF_SlotFormatCombination,
+ &ett_nr_rrc_SlotFormatCombination,
+ &ett_nr_rrc_PDCP_Config,
+ &ett_nr_rrc_T_drb,
+ &ett_nr_rrc_T_headerCompression,
+ &ett_nr_rrc_T_rohc,
+ &ett_nr_rrc_T_profiles,
+ &ett_nr_rrc_T_uplinkOnlyROHC,
+ &ett_nr_rrc_T_profiles_01,
+ &ett_nr_rrc_T_moreThanOneRLC,
+ &ett_nr_rrc_T_primaryPath,
+ &ett_nr_rrc_T_ul_DataSplitThreshold,
+ &ett_nr_rrc_PDSCH_Config,
+ &ett_nr_rrc_T_phaseTracking_RS,
+ &ett_nr_rrc_T_rateMatchResourcesPDSCH,
+ &ett_nr_rrc_T_rateMatchPatterns,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofRateMatchPatterns_OF_RateMatchPattern,
+ &ett_nr_rrc_T_lte_CRS_ToMatchAround,
+ &ett_nr_rrc_T_setup_04,
+ &ett_nr_rrc_Downlink_PTRS_Config,
+ &ett_nr_rrc_RateMatchPattern,
+ &ett_nr_rrc_T_periodicityAndOffset_01,
+ &ett_nr_rrc_PUCCH_Config,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_1_OF_PUCCH_ResourceSet,
+ &ett_nr_rrc_T_format1,
+ &ett_nr_rrc_T_setup_05,
+ &ett_nr_rrc_T_format2,
+ &ett_nr_rrc_T_setup_06,
+ &ett_nr_rrc_T_format3,
+ &ett_nr_rrc_T_setup_07,
+ &ett_nr_rrc_T_format4,
+ &ett_nr_rrc_T_setup_08,
+ &ett_nr_rrc_T_schedulingRequestResources,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSchedulingRequestResoruces_OF_SchedulingRequestResource_Config,
+ &ett_nr_rrc_PUCCH_ResourceSet,
+ &ett_nr_rrc_PUSCH_Config,
+ &ett_nr_rrc_T_phaseTracking_RS_01,
+ &ett_nr_rrc_T_uci_on_PUSCH,
+ &ett_nr_rrc_T_setup_09,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_4_OF_BetaOffsets,
+ &ett_nr_rrc_Uplink_PTRS_Config,
+ &ett_nr_rrc_T_cp_OFDM,
+ &ett_nr_rrc_T_setup_10,
+ &ett_nr_rrc_T_dft_S_OFDM,
+ &ett_nr_rrc_T_setup_11,
+ &ett_nr_rrc_BetaOffsets,
+ &ett_nr_rrc_QuantityConfig,
+ &ett_nr_rrc_QuantityConfigRS,
+ &ett_nr_rrc_RACH_ConfigCommon,
+ &ett_nr_rrc_T_groupBconfigured,
+ &ett_nr_rrc_T_prach_RootSequenceIndex,
+ &ett_nr_rrc_CBRA_SSB_ResourceList,
+ &ett_nr_rrc_CBRA_SSB_Resource,
+ &ett_nr_rrc_RACH_ConfigDedicated,
+ &ett_nr_rrc_CFRA_Resources,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxRAssbResources_OF_CFRA_SSB_Resource,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxRAcsirsResources_OF_CFRA_CSIRS_Resource,
+ &ett_nr_rrc_CFRA_SSB_Resource,
+ &ett_nr_rrc_CFRA_CSIRS_Resource,
+ &ett_nr_rrc_RadioBearerConfig,
+ &ett_nr_rrc_SRB_ToAddModList,
+ &ett_nr_rrc_SRB_ToAddMod,
+ &ett_nr_rrc_DRB_ToAddModList,
+ &ett_nr_rrc_DRB_ToAddMod,
+ &ett_nr_rrc_T_cnAssociation,
+ &ett_nr_rrc_DRB_ToReleaseList,
+ &ett_nr_rrc_SecurityConfig,
+ &ett_nr_rrc_ReportConfigNR,
+ &ett_nr_rrc_T_reportType,
+ &ett_nr_rrc_EventTriggerConfig,
+ &ett_nr_rrc_T_eventId,
+ &ett_nr_rrc_T_eventA1,
+ &ett_nr_rrc_T_eventA2,
+ &ett_nr_rrc_T_eventA3,
+ &ett_nr_rrc_T_eventA4,
+ &ett_nr_rrc_T_eventA5,
+ &ett_nr_rrc_T_eventA6,
+ &ett_nr_rrc_PeriodicalReportConfig,
+ &ett_nr_rrc_MeasTriggerQuantity,
+ &ett_nr_rrc_MeasTriggerQuantityOffset,
+ &ett_nr_rrc_MeasReportQuantity,
+ &ett_nr_rrc_ReportConfigToAddModList,
+ &ett_nr_rrc_ReportConfigToAddMod,
+ &ett_nr_rrc_T_reportConfig,
+ &ett_nr_rrc_RLC_Config,
+ &ett_nr_rrc_T_am,
+ &ett_nr_rrc_T_um_Bi_Directional,
+ &ett_nr_rrc_T_um_Uni_Directional_UL,
+ &ett_nr_rrc_T_um_Uni_Directional_DL,
+ &ett_nr_rrc_UL_AM_RLC,
+ &ett_nr_rrc_DL_AM_RLC,
+ &ett_nr_rrc_UL_UM_RLC,
+ &ett_nr_rrc_DL_UM_RLC,
+ &ett_nr_rrc_RLF_TimersAndConstants,
+ &ett_nr_rrc_SchedulingRequestConfig,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestToAddMod,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSR_ConfigPerCellGroup_OF_SchedulingRequestId,
+ &ett_nr_rrc_SchedulingRequestToAddMod,
+ &ett_nr_rrc_SDAP_Config,
+ &ett_nr_rrc_SEQUENCE_SIZE_0_maxNrofQFIs_OF_QFI,
+ &ett_nr_rrc_SecurityAlgorithmConfig,
+ &ett_nr_rrc_ServingCellConfigCommon,
+ &ett_nr_rrc_T_frequencyInfoDL,
+ &ett_nr_rrc_T_supplementaryUplink,
+ &ett_nr_rrc_T_ssb_PositionsInBurst,
+ &ett_nr_rrc_T_tdd_UL_DL_configurationCommon,
+ &ett_nr_rrc_ServingCellConfigDedicated,
+ &ett_nr_rrc_T_tdd_UL_DL_configurationDedicated,
+ &ett_nr_rrc_T_slotSpecificConfigurations,
+ &ett_nr_rrc_T_slotSpecificConfigurations_item,
+ &ett_nr_rrc_SPS_Config,
+ &ett_nr_rrc_T_uplink,
+ &ett_nr_rrc_T_rrcConfiguredUplinkGrant,
+ &ett_nr_rrc_T_setup_12,
+ &ett_nr_rrc_SRS_Config,
+ &ett_nr_rrc_SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSetId,
+ &ett_nr_rrc_SEQUENCE_SIZE_0_maxNrofSRS_ResourceSets_OF_SRS_ResourceSet,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_ResourceId,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_Resources_OF_SRS_Resource,
+ &ett_nr_rrc_SRS_ResourceSet,
+ &ett_nr_rrc_SEQUENCE_SIZE_1_maxNrofSRS_ResourcesPerSet_OF_SRS_ResourceId,
+ &ett_nr_rrc_SRS_Resource,
+ &ett_nr_rrc_T_resourceType_01,
+ &ett_nr_rrc_T_aperiodic_01,
+ &ett_nr_rrc_T_semi_persistent,
+ &ett_nr_rrc_T_periodic_01,
+ &ett_nr_rrc_T_periodicityAndOffset_02,
+ &ett_nr_rrc_MeasGapConfig,
+ &ett_nr_rrc_MeasObjectEUTRA,
+ &ett_nr_rrc_MeasResultListEUTRA,
+ &ett_nr_rrc_PhysCellIdRange,
+ &ett_nr_rrc_RA_Resources,
+ &ett_nr_rrc_ReportConfigEUTRA,
+ &ett_nr_rrc_SchedulingRequestResource_Config,
+
+/*--- End of included file: packet-nr-rrc-ettarr.c ---*/
+#line 91 "./asn1/nr-rrc/packet-nr-rrc-template.c"
+ &ett_nr_rrc_UECapabilityInformation
+ };
+
+ /* Register protocol */
+ proto_nr_rrc = proto_register_protocol(PNAME, PSNAME, PFNAME);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_nr_rrc, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* Register the dissectors defined in nr-rrc.cnf */
+
+/*--- Included file: packet-nr-rrc-dis-reg.c ---*/
+#line 1 "./asn1/nr-rrc/packet-nr-rrc-dis-reg.c"
+ register_dissector("nr-rrc.bcch.bch", dissect_BCCH_BCH_Message_PDU, proto_nr_rrc);
+ register_dissector("nr-rrc.dl.dcch", dissect_DL_DCCH_Message_PDU, proto_nr_rrc);
+ register_dissector("nr-rrc.ul.dcch", dissect_UL_DCCH_Message_PDU, proto_nr_rrc);
+
+
+/*--- End of included file: packet-nr-rrc-dis-reg.c ---*/
+#line 103 "./asn1/nr-rrc/packet-nr-rrc-template.c"
+}
+
+void
+proto_reg_handoff_nr_rrc(void)
+{
+}
diff --git a/tools/extract_asn1_from_spec.pl b/tools/extract_asn1_from_spec.pl
index 43db8f8748..3152b584d9 100755
--- a/tools/extract_asn1_from_spec.pl
+++ b/tools/extract_asn1_from_spec.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl
#
-# This script extracts the ASN1 definition from and TS 36.331/36.355/25.331
+# This script extracts the ASN1 definition from and TS 36.331/36.355/25.331/38.331
# and generates asn files that can be processed by asn2wrs
# First download the specification from 3gpp.org as a word document and open it
# Then in "view" menu, select normal, draft or web layout (any kind that removes page header and footers)
@@ -47,7 +47,7 @@ close(INPUT_FILE);
sub extract_spec_version {
my $line;
while($line = <INPUT_FILE>){
- if($line =~ m/3GPP TS ((25|36)\.331|36\.355) V/){
+ if($line =~ m/3GPP TS ((25|36|38)\.331|36\.355) V/){
$version = $line;
return;
}