summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/lpp
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/asn1/lpp')
-rw-r--r--epan/dissectors/asn1/lpp/CMakeLists.txt40
-rw-r--r--epan/dissectors/asn1/lpp/LPP-Broadcast-Definitions.asn61
-rw-r--r--epan/dissectors/asn1/lpp/LPP-PDU-Definitions.asn6992
-rw-r--r--epan/dissectors/asn1/lpp/lpp.cnf1952
-rw-r--r--epan/dissectors/asn1/lpp/packet-lpp-template.c2156
-rw-r--r--epan/dissectors/asn1/lpp/packet-lpp-template.h68
6 files changed, 11269 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/lpp/CMakeLists.txt b/epan/dissectors/asn1/lpp/CMakeLists.txt
new file mode 100644
index 00000000..1b648249
--- /dev/null
+++ b/epan/dissectors/asn1/lpp/CMakeLists.txt
@@ -0,0 +1,40 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+set( PROTOCOL_NAME lpp )
+
+set( PROTO_OPT )
+
+set( EXPORT_FILES
+ ${PROTOCOL_NAME}-exp.cnf
+)
+
+set( EXT_ASN_FILE_LIST
+)
+
+set( ASN_FILE_LIST
+ LPP-PDU-Definitions.asn
+ LPP-Broadcast-Definitions.asn
+)
+
+set( EXTRA_DIST
+ ${ASN_FILE_LIST}
+ packet-${PROTOCOL_NAME}-template.c
+ packet-${PROTOCOL_NAME}-template.h
+ ${PROTOCOL_NAME}.cnf
+)
+
+set( SRC_FILES
+ ${EXTRA_DIST}
+ ${EXT_ASN_FILE_LIST}
+)
+
+set( A2W_FLAGS )
+
+ASN2WRS()
diff --git a/epan/dissectors/asn1/lpp/LPP-Broadcast-Definitions.asn b/epan/dissectors/asn1/lpp/LPP-Broadcast-Definitions.asn
new file mode 100644
index 00000000..cb5df311
--- /dev/null
+++ b/epan/dissectors/asn1/lpp/LPP-Broadcast-Definitions.asn
@@ -0,0 +1,61 @@
+-- 3GPP TS 37.355 V17.5.0 (2023-06)
+
+LPP-Broadcast-Definitions
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ OTDOA-ReferenceCellInfo,
+ OTDOA-NeighbourCellInfoList,
+ NR-TRP-LocationInfo-r16,
+ NR-DL-PRS-BeamInfo-r16,
+ NR-RTD-Info-r16
+FROM LPP-PDU-Definitions;
+
+
+AssistanceDataSIBelement-r15 ::= SEQUENCE {
+ valueTag-r15 INTEGER (0..63) OPTIONAL, -- Need OP
+ expirationTime-r15 UTCTime OPTIONAL, -- Need OP
+ cipheringKeyData-r15 CipheringKeyData-r15 OPTIONAL, -- Need OP
+ segmentationInfo-r15 SegmentationInfo-r15 OPTIONAL, -- Need OP
+ assistanceDataElement-r15 OCTET STRING,
+ ...
+}
+
+CipheringKeyData-r15 ::= SEQUENCE {
+ cipherSetID-r15 INTEGER (0..65535),
+ d0-r15 BIT STRING (SIZE (1..128)),
+ ...
+}
+
+SegmentationInfo-r15 ::= SEQUENCE {
+ segmentationOption-r15 ENUMERATED {pseudo-seg, octet-string-seg},
+ assistanceDataSegmentType-r15 ENUMERATED {notLastSegment, lastSegment},
+ assistanceDataSegmentNumber-r15 INTEGER (0..63),
+ ...
+}
+
+
+OTDOA-UE-Assisted-r15 ::= SEQUENCE {
+ otdoa-ReferenceCellInfo-r15 OTDOA-ReferenceCellInfo,
+ otdoa-NeighbourCellInfo-r15 OTDOA-NeighbourCellInfoList,
+ ...
+}
+
+
+NR-UEB-TRP-LocationData-r16 ::= SEQUENCE {
+ nr-trp-LocationInfo-r16 NR-TRP-LocationInfo-r16,
+ nr-dl-prs-BeamInfo-r16 NR-DL-PRS-BeamInfo-r16 OPTIONAL, -- Need ON
+ ...
+}
+
+
+NR-UEB-TRP-RTD-Info-r16 ::= SEQUENCE {
+ nr-rtd-Info-r16 NR-RTD-Info-r16,
+ ...
+}
+
+
+END
diff --git a/epan/dissectors/asn1/lpp/LPP-PDU-Definitions.asn b/epan/dissectors/asn1/lpp/LPP-PDU-Definitions.asn
new file mode 100644
index 00000000..d7bf0b1d
--- /dev/null
+++ b/epan/dissectors/asn1/lpp/LPP-PDU-Definitions.asn
@@ -0,0 +1,6992 @@
+-- 3GPP TS 37.355 V17.5.0 (2023-06)
+
+LPP-PDU-Definitions
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+
+LPP-Message ::= SEQUENCE {
+ transactionID LPP-TransactionID OPTIONAL, -- Need ON
+ endTransaction BOOLEAN,
+ sequenceNumber SequenceNumber OPTIONAL, -- Need ON
+ acknowledgement Acknowledgement OPTIONAL, -- Need ON
+ lpp-MessageBody LPP-MessageBody OPTIONAL -- Need ON
+}
+
+SequenceNumber ::= INTEGER (0..255)
+
+Acknowledgement ::= SEQUENCE {
+ ackRequested BOOLEAN,
+ ackIndicator SequenceNumber OPTIONAL
+}
+
+
+LPP-MessageBody ::= CHOICE {
+ c1 CHOICE {
+ requestCapabilities RequestCapabilities,
+ provideCapabilities ProvideCapabilities,
+ requestAssistanceData RequestAssistanceData,
+ provideAssistanceData ProvideAssistanceData,
+ requestLocationInformation RequestLocationInformation,
+ provideLocationInformation ProvideLocationInformation,
+ abort Abort,
+ error Error,
+ spare7 NULL, spare6 NULL, spare5 NULL, spare4 NULL,
+ spare3 NULL, spare2 NULL, spare1 NULL, spare0 NULL
+ },
+ messageClassExtension SEQUENCE {}
+}
+
+
+LPP-TransactionID ::= SEQUENCE {
+ initiator Initiator,
+ transactionNumber TransactionNumber,
+ ...
+}
+
+Initiator ::= ENUMERATED {
+ locationServer,
+ targetDevice,
+ ...
+}
+
+TransactionNumber ::= INTEGER (0..255)
+
+
+RequestCapabilities ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ c1 CHOICE {
+ requestCapabilities-r9 RequestCapabilities-r9-IEs,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+RequestCapabilities-r9-IEs ::= SEQUENCE {
+ commonIEsRequestCapabilities CommonIEsRequestCapabilities OPTIONAL, -- Need ON
+ a-gnss-RequestCapabilities A-GNSS-RequestCapabilities OPTIONAL, -- Need ON
+ otdoa-RequestCapabilities OTDOA-RequestCapabilities OPTIONAL, -- Need ON
+ ecid-RequestCapabilities ECID-RequestCapabilities OPTIONAL, -- Need ON
+ epdu-RequestCapabilities EPDU-Sequence OPTIONAL, -- Need ON
+ ...,
+ [[ sensor-RequestCapabilities-r13 Sensor-RequestCapabilities-r13 OPTIONAL, -- Need ON
+ tbs-RequestCapabilities-r13 TBS-RequestCapabilities-r13 OPTIONAL, -- Need ON
+ wlan-RequestCapabilities-r13 WLAN-RequestCapabilities-r13 OPTIONAL, -- Need ON
+ bt-RequestCapabilities-r13 BT-RequestCapabilities-r13 OPTIONAL -- Need ON
+ ]],
+ [[ nr-ECID-RequestCapabilities-r16 NR-ECID-RequestCapabilities-r16 OPTIONAL, -- Need ON
+ nr-Multi-RTT-RequestCapabilities-r16
+ NR-Multi-RTT-RequestCapabilities-r16
+ OPTIONAL, -- Need ON
+ nr-DL-AoD-RequestCapabilities-r16
+ NR-DL-AoD-RequestCapabilities-r16 OPTIONAL, -- Need ON
+ nr-DL-TDOA-RequestCapabilities-r16
+ NR-DL-TDOA-RequestCapabilities-r16 OPTIONAL, -- Need ON
+ nr-UL-RequestCapabilities-r16 NR-UL-RequestCapabilities-r16 OPTIONAL -- Need ON
+ ]]
+}
+
+
+ProvideCapabilities ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ c1 CHOICE {
+ provideCapabilities-r9 ProvideCapabilities-r9-IEs,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+ProvideCapabilities-r9-IEs ::= SEQUENCE {
+ commonIEsProvideCapabilities CommonIEsProvideCapabilities OPTIONAL,
+ a-gnss-ProvideCapabilities A-GNSS-ProvideCapabilities OPTIONAL,
+ otdoa-ProvideCapabilities OTDOA-ProvideCapabilities OPTIONAL,
+ ecid-ProvideCapabilities ECID-ProvideCapabilities OPTIONAL,
+ epdu-ProvideCapabilities EPDU-Sequence OPTIONAL,
+ ...,
+ [[ sensor-ProvideCapabilities-r13 Sensor-ProvideCapabilities-r13 OPTIONAL,
+ tbs-ProvideCapabilities-r13 TBS-ProvideCapabilities-r13 OPTIONAL,
+ wlan-ProvideCapabilities-r13 WLAN-ProvideCapabilities-r13 OPTIONAL,
+ bt-ProvideCapabilities-r13 BT-ProvideCapabilities-r13 OPTIONAL
+ ]],
+ [[ nr-ECID-ProvideCapabilities-r16 NR-ECID-ProvideCapabilities-r16 OPTIONAL,
+ nr-Multi-RTT-ProvideCapabilities-r16
+ NR-Multi-RTT-ProvideCapabilities-r16 OPTIONAL,
+ nr-DL-AoD-ProvideCapabilities-r16
+ NR-DL-AoD-ProvideCapabilities-r16 OPTIONAL,
+ nr-DL-TDOA-ProvideCapabilities-r16
+ NR-DL-TDOA-ProvideCapabilities-r16 OPTIONAL,
+ nr-UL-ProvideCapabilities-r16 NR-UL-ProvideCapabilities-r16 OPTIONAL
+ ]]
+}
+
+
+RequestAssistanceData ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ c1 CHOICE {
+ requestAssistanceData-r9 RequestAssistanceData-r9-IEs,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+RequestAssistanceData-r9-IEs ::= SEQUENCE {
+ commonIEsRequestAssistanceData CommonIEsRequestAssistanceData OPTIONAL,
+ a-gnss-RequestAssistanceData A-GNSS-RequestAssistanceData OPTIONAL,
+ otdoa-RequestAssistanceData OTDOA-RequestAssistanceData OPTIONAL,
+ epdu-RequestAssistanceData EPDU-Sequence OPTIONAL,
+ ...,
+ [[ sensor-RequestAssistanceData-r14
+ Sensor-RequestAssistanceData-r14 OPTIONAL,
+ tbs-RequestAssistanceData-r14 TBS-RequestAssistanceData-r14 OPTIONAL,
+ wlan-RequestAssistanceData-r14 WLAN-RequestAssistanceData-r14 OPTIONAL
+ ]],
+ [[ nr-Multi-RTT-RequestAssistanceData-r16 NR-Multi-RTT-RequestAssistanceData-r16 OPTIONAL,
+ nr-DL-AoD-RequestAssistanceData-r16 NR-DL-AoD-RequestAssistanceData-r16 OPTIONAL,
+ nr-DL-TDOA-RequestAssistanceData-r16 NR-DL-TDOA-RequestAssistanceData-r16 OPTIONAL
+ ]]
+}
+
+
+ProvideAssistanceData ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ c1 CHOICE {
+ provideAssistanceData-r9 ProvideAssistanceData-r9-IEs,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+ProvideAssistanceData-r9-IEs ::= SEQUENCE {
+ commonIEsProvideAssistanceData CommonIEsProvideAssistanceData OPTIONAL, -- Need ON
+ a-gnss-ProvideAssistanceData A-GNSS-ProvideAssistanceData OPTIONAL, -- Need ON
+ otdoa-ProvideAssistanceData OTDOA-ProvideAssistanceData OPTIONAL, -- Need ON
+ epdu-Provide-Assistance-Data EPDU-Sequence OPTIONAL, -- Need ON
+ ...,
+ [[
+ sensor-ProvideAssistanceData-r14 Sensor-ProvideAssistanceData-r14 OPTIONAL, -- Need ON
+ tbs-ProvideAssistanceData-r14 TBS-ProvideAssistanceData-r14 OPTIONAL, -- Need ON
+ wlan-ProvideAssistanceData-r14 WLAN-ProvideAssistanceData-r14 OPTIONAL -- Need ON
+ ]],
+ [[ nr-Multi-RTT-ProvideAssistanceData-r16
+ NR-Multi-RTT-ProvideAssistanceData-r16
+ OPTIONAL, -- Need ON
+ nr-DL-AoD-ProvideAssistanceData-r16
+ NR-DL-AoD-ProvideAssistanceData-r16 OPTIONAL, -- Need ON
+ nr-DL-TDOA-ProvideAssistanceData-r16
+ NR-DL-TDOA-ProvideAssistanceData-r16
+ OPTIONAL -- Need ON
+ ]]
+}
+
+
+RequestLocationInformation ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ c1 CHOICE {
+ requestLocationInformation-r9 RequestLocationInformation-r9-IEs,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+RequestLocationInformation-r9-IEs ::= SEQUENCE {
+ commonIEsRequestLocationInformation
+ CommonIEsRequestLocationInformation OPTIONAL, -- Need ON
+ a-gnss-RequestLocationInformation A-GNSS-RequestLocationInformation OPTIONAL, -- Need ON
+ otdoa-RequestLocationInformation OTDOA-RequestLocationInformation OPTIONAL, -- Need ON
+ ecid-RequestLocationInformation ECID-RequestLocationInformation OPTIONAL, -- Need ON
+ epdu-RequestLocationInformation EPDU-Sequence OPTIONAL, -- Need ON
+ ...,
+ [[
+ sensor-RequestLocationInformation-r13
+ Sensor-RequestLocationInformation-r13
+ OPTIONAL, -- Need ON
+ tbs-RequestLocationInformation-r13 TBS-RequestLocationInformation-r13 OPTIONAL, -- Need ON
+ wlan-RequestLocationInformation-r13 WLAN-RequestLocationInformation-r13 OPTIONAL, -- Need ON
+ bt-RequestLocationInformation-r13 BT-RequestLocationInformation-r13 OPTIONAL -- Need ON
+ ]],
+ [[ nr-ECID-RequestLocationInformation-r16
+ NR-ECID-RequestLocationInformation-r16
+ OPTIONAL, -- Need ON
+ nr-Multi-RTT-RequestLocationInformation-r16
+ NR-Multi-RTT-RequestLocationInformation-r16
+ OPTIONAL, -- Need ON
+ nr-DL-AoD-RequestLocationInformation-r16
+ NR-DL-AoD-RequestLocationInformation-r16
+ OPTIONAL, -- Need ON
+ nr-DL-TDOA-RequestLocationInformation-r16
+ NR-DL-TDOA-RequestLocationInformation-r16
+ OPTIONAL -- Need ON
+ ]]
+}
+
+
+ProvideLocationInformation ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ c1 CHOICE {
+ provideLocationInformation-r9 ProvideLocationInformation-r9-IEs,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+ProvideLocationInformation-r9-IEs ::= SEQUENCE {
+ commonIEsProvideLocationInformation
+ CommonIEsProvideLocationInformation OPTIONAL,
+ a-gnss-ProvideLocationInformation A-GNSS-ProvideLocationInformation OPTIONAL,
+ otdoa-ProvideLocationInformation OTDOA-ProvideLocationInformation OPTIONAL,
+ ecid-ProvideLocationInformation ECID-ProvideLocationInformation OPTIONAL,
+ epdu-ProvideLocationInformation EPDU-Sequence OPTIONAL,
+ ...,
+ [[
+ sensor-ProvideLocationInformation-r13
+ Sensor-ProvideLocationInformation-r13
+ OPTIONAL,
+ tbs-ProvideLocationInformation-r13 TBS-ProvideLocationInformation-r13 OPTIONAL,
+ wlan-ProvideLocationInformation-r13 WLAN-ProvideLocationInformation-r13 OPTIONAL,
+ bt-ProvideLocationInformation-r13 BT-ProvideLocationInformation-r13 OPTIONAL
+ ]],
+ [[ nr-ECID-ProvideLocationInformation-r16
+ NR-ECID-ProvideLocationInformation-r16 OPTIONAL,
+ nr-Multi-RTT-ProvideLocationInformation-r16
+ NR-Multi-RTT-ProvideLocationInformation-r16 OPTIONAL,
+ nr-DL-AoD-ProvideLocationInformation-r16
+ NR-DL-AoD-ProvideLocationInformation-r16 OPTIONAL,
+ nr-DL-TDOA-ProvideLocationInformation-r16
+ NR-DL-TDOA-ProvideLocationInformation-r16 OPTIONAL
+ ]]
+}
+
+
+Abort ::= SEQUENCE {
+ criticalExtensions CHOICE {
+ c1 CHOICE {
+ abort-r9 Abort-r9-IEs,
+ spare3 NULL, spare2 NULL, spare1 NULL
+ },
+ criticalExtensionsFuture SEQUENCE {}
+ }
+}
+
+Abort-r9-IEs ::= SEQUENCE {
+ commonIEsAbort CommonIEsAbort OPTIONAL, -- Need ON
+ ...,
+ epdu-Abort EPDU-Sequence OPTIONAL -- Need ON
+}
+
+
+Error ::= CHOICE {
+ error-r9 Error-r9-IEs,
+ criticalExtensionsFuture SEQUENCE {}
+}
+
+Error-r9-IEs ::= SEQUENCE {
+ commonIEsError CommonIEsError OPTIONAL, -- Need ON
+ ...,
+ epdu-Error EPDU-Sequence OPTIONAL -- Need ON
+}
+
+AccessTypes ::= SEQUENCE {
+ accessTypes BIT STRING { eutra (0),
+ utra (1),
+ gsm (2),
+ nb-iot (3),
+ nr-v1510 (4) } (SIZE (1..8)),
+ ...
+}
+
+
+ARFCN-ValueEUTRA ::= INTEGER (0..maxEARFCN)
+
+ARFCN-ValueEUTRA-v9a0 ::= INTEGER (maxEARFCN-Plus1..maxEARFCN2)
+
+ARFCN-ValueEUTRA-r14 ::= INTEGER (0..maxEARFCN2)
+
+
+ARFCN-ValueNR-r15 ::= INTEGER (0..3279165)
+
+
+ARFCN-ValueUTRA ::= INTEGER (0..16383)
+
+
+CarrierFreq-NB-r14 ::= SEQUENCE {
+ carrierFreq-r14 ARFCN-ValueEUTRA-r14,
+ carrierFreqOffset-r14 CarrierFreqOffsetNB-r14 OPTIONAL,
+ ...
+}
+
+
+CarrierFreqOffsetNB-r14 ::= ENUMERATED {
+ v-10, v-9, v-8, v-7, v-6, v-5, v-4, v-3, v-2, v-1, v-0dot5,
+ v0, v1, v2, v3, v4, v5, v6, v7, v8, v9
+ }
+
+
+CellGlobalIdEUTRA-AndUTRA ::= SEQUENCE {
+ plmn-Identity SEQUENCE {
+ mcc SEQUENCE (SIZE (3)) OF INTEGER (0..9),
+ mnc SEQUENCE (SIZE (2..3)) OF INTEGER (0..9)
+ },
+ cellIdentity CHOICE {
+ eutra BIT STRING (SIZE (28)),
+ utra BIT STRING (SIZE (32))
+ },
+ ...
+}
+
+
+CellGlobalIdGERAN ::= SEQUENCE {
+ plmn-Identity SEQUENCE {
+ mcc SEQUENCE (SIZE (3)) OF INTEGER (0..9),
+ mnc SEQUENCE (SIZE (2..3)) OF INTEGER (0..9)
+ },
+ locationAreaCode BIT STRING (SIZE (16)),
+ cellIdentity BIT STRING (SIZE (16)),
+ ...
+}
+
+
+ECGI ::= SEQUENCE {
+ mcc SEQUENCE (SIZE (3)) OF INTEGER (0..9),
+ mnc SEQUENCE (SIZE (2..3)) OF INTEGER (0..9),
+ cellidentity BIT STRING (SIZE (28))
+}
+
+
+Ellipsoid-Point ::= SEQUENCE {
+ latitudeSign ENUMERATED {north, south},
+ degreesLatitude INTEGER (0..8388607), -- 23 bit field
+ degreesLongitude INTEGER (-8388608..8388607) -- 24 bit field
+}
+
+
+Ellipsoid-PointWithUncertaintyCircle ::= SEQUENCE {
+ latitudeSign ENUMERATED {north, south},
+ degreesLatitude INTEGER (0..8388607), -- 23 bit field
+ degreesLongitude INTEGER (-8388608..8388607), -- 24 bit field
+ uncertainty INTEGER (0..127)
+}
+
+
+EllipsoidPointWithUncertaintyEllipse ::= SEQUENCE {
+ latitudeSign ENUMERATED {north, south},
+ degreesLatitude INTEGER (0..8388607), -- 23 bit field
+ degreesLongitude INTEGER (-8388608..8388607), -- 24 bit field
+ uncertaintySemiMajor INTEGER (0..127),
+ uncertaintySemiMinor INTEGER (0..127),
+ orientationMajorAxis INTEGER (0..179),
+ confidence INTEGER (0..100)
+}
+
+
+EllipsoidPointWithAltitude ::= SEQUENCE {
+ latitudeSign ENUMERATED {north, south},
+ degreesLatitude INTEGER (0..8388607), -- 23 bit field
+ degreesLongitude INTEGER (-8388608..8388607), -- 24 bit field
+ altitudeDirection ENUMERATED {height, depth},
+ altitude INTEGER (0..32767) -- 15 bit field
+}
+
+
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid ::= SEQUENCE {
+ latitudeSign ENUMERATED {north, south},
+ degreesLatitude INTEGER (0..8388607), -- 23 bit field
+ degreesLongitude INTEGER (-8388608..8388607), -- 24 bit field
+ altitudeDirection ENUMERATED {height, depth},
+ altitude INTEGER (0..32767), -- 15 bit field
+ uncertaintySemiMajor INTEGER (0..127),
+ uncertaintySemiMinor INTEGER (0..127),
+ orientationMajorAxis INTEGER (0..179),
+ uncertaintyAltitude INTEGER (0..127),
+ confidence INTEGER (0..100)
+}
+
+
+EllipsoidArc ::= SEQUENCE {
+ latitudeSign ENUMERATED {north, south},
+ degreesLatitude INTEGER (0..8388607), -- 23 bit field
+ degreesLongitude INTEGER (-8388608..8388607), -- 24 bit field
+ innerRadius INTEGER (0..65535), -- 16 bit field,
+ uncertaintyRadius INTEGER (0..127),
+ offsetAngle INTEGER (0..179),
+ includedAngle INTEGER (0..179),
+ confidence INTEGER (0..100)
+}
+
+
+EPDU-Sequence ::= SEQUENCE (SIZE (1..maxEPDU)) OF EPDU
+
+maxEPDU INTEGER ::= 16
+
+EPDU ::= SEQUENCE {
+ ePDU-Identifier EPDU-Identifier,
+ ePDU-Body EPDU-Body
+}
+
+EPDU-Identifier ::= SEQUENCE {
+ ePDU-ID EPDU-ID,
+ ePDU-Name EPDU-Name OPTIONAL,
+ ...
+}
+
+EPDU-ID ::= INTEGER (1..256)
+
+EPDU-Name ::= VisibleString (SIZE (1..32))
+
+EPDU-Body ::= OCTET STRING
+
+
+FreqBandIndicatorNR-r16 ::= INTEGER (1..1024)
+
+
+HA-EllipsoidPointWithAltitudeAndScalableUncertaintyEllipsoid-r16 ::= SEQUENCE {
+ degreesLatitude-r16 INTEGER(-2147483648..2147483647),
+ degreesLongitude-r16 INTEGER(-2147483648..2147483647),
+ altitude-r16 INTEGER(-64000..1280000),
+ uncertaintySemiMajor-r16 INTEGER (0..255),
+ uncertaintySemiMinor-r16 INTEGER (0..255),
+ orientationMajorAxis-r16 INTEGER (0..179),
+ horizontalConfidence-r16 INTEGER (0..100),
+ uncertaintyAltitude-r16 INTEGER (0..255),
+ verticalConfidence-r16 INTEGER (0..100),
+ ha-HorizontalExtendedRangeUsed-r16 BOOLEAN,
+ ha-VerticalExtendedRangeUsed-r16 BOOLEAN
+}
+
+
+HA-EllipsoidPointWithScalableUncertaintyEllipse-r16 ::= SEQUENCE {
+ degreesLatitude-r16 INTEGER(-2147483648..2147483647),
+ degreesLongitude-r16 INTEGER(-2147483648..2147483647),
+ uncertaintySemiMajor-r16 INTEGER (0..255),
+ uncertaintySemiMinor-r16 INTEGER (0..255),
+ orientationMajorAxis-r16 INTEGER (0..179),
+ confidence-r16 INTEGER (0..100),
+ ha-ExtendedUncertaintyRangeUsed-r16 BOOLEAN
+}
+
+
+HighAccuracyEllipsoidPointWithUncertaintyEllipse-r15 ::= SEQUENCE {
+ degreesLatitude-r15 INTEGER(-2147483648..2147483647),
+ degreesLongitude-r15 INTEGER(-2147483648..2147483647),
+ uncertaintySemiMajor-r15 INTEGER (0..255),
+ uncertaintySemiMinor-r15 INTEGER (0..255),
+ orientationMajorAxis-r15 INTEGER (0..179),
+ confidence-r15 INTEGER (0..100)
+}
+
+
+HighAccuracyEllipsoidPointWithAltitudeAndUncertaintyEllipsoid-r15 ::= SEQUENCE {
+ degreesLatitude-r15 INTEGER(-2147483648..2147483647),
+ degreesLongitude-r15 INTEGER(-2147483648..2147483647),
+ altitude-r15 INTEGER(-64000..1280000),
+ uncertaintySemiMajor-r15 INTEGER (0..255),
+ uncertaintySemiMinor-r15 INTEGER (0..255),
+ orientationMajorAxis-r15 INTEGER (0..179),
+ horizontalConfidence-r15 INTEGER (0..100),
+ uncertaintyAltitude-r15 INTEGER (0..255),
+ verticalConfidence-r15 INTEGER (0..100)
+}
+
+
+HorizontalVelocity ::= SEQUENCE {
+ bearing INTEGER(0..359),
+ horizontalSpeed INTEGER(0..2047)
+}
+
+
+HorizontalWithVerticalVelocity ::= SEQUENCE {
+ bearing INTEGER(0..359),
+ horizontalSpeed INTEGER(0..2047),
+ verticalDirection ENUMERATED{upward, downward},
+ verticalSpeed INTEGER(0..255)
+}
+
+
+HorizontalVelocityWithUncertainty ::= SEQUENCE {
+ bearing INTEGER(0..359),
+ horizontalSpeed INTEGER(0..2047),
+ uncertaintySpeed INTEGER(0..255)
+}
+
+
+HorizontalWithVerticalVelocityAndUncertainty ::= SEQUENCE {
+ bearing INTEGER(0..359),
+ horizontalSpeed INTEGER(0..2047),
+ verticalDirection ENUMERATED{upward, downward},
+ verticalSpeed INTEGER(0..255),
+ horizontalUncertaintySpeed INTEGER(0..255),
+ verticalUncertaintySpeed INTEGER(0..255)
+}
+
+
+LocationCoordinateTypes ::= SEQUENCE {
+ ellipsoidPoint BOOLEAN,
+ ellipsoidPointWithUncertaintyCircle BOOLEAN,
+ ellipsoidPointWithUncertaintyEllipse BOOLEAN,
+ polygon BOOLEAN,
+ ellipsoidPointWithAltitude BOOLEAN,
+ ellipsoidPointWithAltitudeAndUncertaintyEllipsoid BOOLEAN,
+ ellipsoidArc BOOLEAN,
+ ...,
+ [[
+ highAccuracyEllipsoidPointWithUncertaintyEllipse-r15
+ BOOLEAN OPTIONAL, -- Need ON
+ highAccuracyEllipsoidPointWithAltitudeAndUncertaintyEllipsoid-r15
+ BOOLEAN OPTIONAL -- Need ON
+ ]],
+ [[
+ ha-EllipsoidPointWithScalableUncertaintyEllipse-r16
+ BOOLEAN OPTIONAL, -- Need ON
+ ha-EllipsoidPointWithAltitudeAndScalableUncertaintyEllipsoid-r16
+ BOOLEAN OPTIONAL -- Need ON
+ ]]
+}
+
+
+NCGI-r15 ::= SEQUENCE {
+ mcc-r15 SEQUENCE (SIZE (3)) OF INTEGER (0..9),
+ mnc-r15 SEQUENCE (SIZE (2..3)) OF INTEGER (0..9),
+ nr-cellidentity-r15 BIT STRING (SIZE (36))
+}
+
+
+NR-PhysCellID-r16 ::= INTEGER (0..1007)
+
+
+PeriodicAssistanceDataControlParameters-r15 ::= SEQUENCE {
+ periodicSessionID-r15 PeriodicSessionID-r15,
+ ...,
+ [[
+ updateCapabilities-r15 UpdateCapabilities-r15 OPTIONAL -- Need ON
+ ]]
+}
+
+PeriodicSessionID-r15 ::= SEQUENCE {
+ periodicSessionInitiator-r15 ENUMERATED { locationServer, targetDevice, ... },
+ periodicSessionNumber-r15 INTEGER (0..255),
+ ...
+}
+
+UpdateCapabilities-r15 ::= BIT STRING {primaryCellID-r15 (0)} (SIZE(1..8))
+
+
+Polygon ::= SEQUENCE (SIZE (3..15)) OF PolygonPoints
+
+PolygonPoints ::= SEQUENCE {
+ latitudeSign ENUMERATED {north, south},
+ degreesLatitude INTEGER (0..8388607), -- 23 bit field
+ degreesLongitude INTEGER (-8388608..8388607) -- 24 bit field
+}
+
+
+PositioningModes ::= SEQUENCE {
+ posModes BIT STRING { standalone (0),
+ ue-based (1),
+ ue-assisted (2)
+ } (SIZE (1..8)),
+ ...
+}
+
+
+ScheduledLocationTimeSupport-r17 ::= SEQUENCE {
+ utcTime-r17 ENUMERATED { supported } OPTIONAL,
+ gnssTime-r17 GNSS-ID-Bitmap OPTIONAL,
+ e-utraTime-r17 ENUMERATED { supported } OPTIONAL,
+ nrTime-r17 ENUMERATED { supported } OPTIONAL,
+ relativeTime-r17 ENUMERATED { supported } OPTIONAL,
+ ...
+}
+
+
+ScheduledLocationTimeSupportPerMode-r17 ::= SEQUENCE {
+ utcTime-r17 PositioningModes OPTIONAL,
+ gnssTime-r17 SEQUENCE {
+ posModes-r17 PositioningModes,
+ gnss-TimeIDs-r17 GNSS-ID-Bitmap
+ } OPTIONAL,
+ e-utraTime-r17 PositioningModes OPTIONAL,
+ nrTime-r17 PositioningModes OPTIONAL,
+ relativeTime-r17 PositioningModes OPTIONAL,
+ ...
+}
+
+
+SegmentationInfo-r14 ::= ENUMERATED { noMoreMessages, moreMessagesOnTheWay }
+
+
+VelocityTypes ::= SEQUENCE {
+ horizontalVelocity BOOLEAN,
+ horizontalWithVerticalVelocity BOOLEAN,
+ horizontalVelocityWithUncertainty BOOLEAN,
+ horizontalWithVerticalVelocityAndUncertainty BOOLEAN,
+ ...
+}
+
+
+CommonIEsRequestCapabilities ::= SEQUENCE {
+ ...,
+ [[
+ lpp-message-segmentation-req-r14 BIT STRING { serverToTarget (0),
+ targetToServer (1) } OPTIONAL -- Need ON
+ ]]
+}
+
+
+CommonIEsProvideCapabilities ::= SEQUENCE {
+ ...,
+ [[
+ segmentationInfo-r14 SegmentationInfo-r14 OPTIONAL, -- Cond Segmentation
+ lpp-message-segmentation-r14 BIT STRING { serverToTarget (0),
+ targetToServer (1) } OPTIONAL
+ ]]
+}
+
+
+CommonIEsRequestAssistanceData ::= SEQUENCE {
+ primaryCellID ECGI OPTIONAL, -- Cond EUTRA
+ ...,
+ [[
+ segmentationInfo-r14 SegmentationInfo-r14 OPTIONAL -- Cond Segmentation
+ ]],
+ [[
+ periodicAssistanceDataReq-r15
+ PeriodicAssistanceDataControlParameters-r15
+ OPTIONAL, -- Cond PerADreq
+ primaryCellID-r15 NCGI-r15 OPTIONAL -- Cond NR
+ ]]
+}
+
+
+CommonIEsProvideAssistanceData ::= SEQUENCE {
+ ...,
+ [[
+ segmentationInfo-r14 SegmentationInfo-r14 OPTIONAL -- Need ON
+ ]],
+ [[
+ periodicAssistanceData-r15 PeriodicAssistanceDataControlParameters-r15
+ OPTIONAL -- Cond PerAD
+ ]]
+}
+
+
+CommonIEsRequestLocationInformation ::= SEQUENCE {
+ locationInformationType LocationInformationType,
+ triggeredReporting TriggeredReportingCriteria OPTIONAL, -- Cond ECID
+ periodicalReporting PeriodicalReportingCriteria OPTIONAL, -- Need ON
+ additionalInformation AdditionalInformation OPTIONAL, -- Need ON
+ qos QoS OPTIONAL, -- Need ON
+ environment Environment OPTIONAL, -- Need ON
+ locationCoordinateTypes LocationCoordinateTypes OPTIONAL, -- Need ON
+ velocityTypes VelocityTypes OPTIONAL, -- Need ON
+ ...,
+ [[
+ messageSizeLimitNB-r14 MessageSizeLimitNB-r14 OPTIONAL -- Need ON
+ ]],
+ [[
+ segmentationInfo-r14 SegmentationInfo-r14 OPTIONAL -- Need ON
+ ]],
+ [[
+ scheduledLocationTime-r17
+ ScheduledLocationTime-r17 OPTIONAL, -- Need ON
+ targetIntegrityRisk-r17
+ TargetIntegrityRisk-r17 OPTIONAL -- Need ON
+ ]]
+}
+
+LocationInformationType ::= ENUMERATED {
+ locationEstimateRequired,
+ locationMeasurementsRequired,
+ locationEstimatePreferred,
+ locationMeasurementsPreferred,
+ ...
+}
+
+PeriodicalReportingCriteria ::= SEQUENCE {
+ reportingAmount ENUMERATED {
+ ra1, ra2, ra4, ra8, ra16, ra32,
+ ra64, ra-Infinity
+ } DEFAULT ra-Infinity,
+ reportingInterval ENUMERATED {
+ noPeriodicalReporting, ri0-25,
+ ri0-5, ri1, ri2, ri4, ri8, ri16, ri32, ri64
+ }
+}
+
+TriggeredReportingCriteria ::= SEQUENCE {
+ cellChange BOOLEAN,
+ reportingDuration ReportingDuration,
+ ...
+}
+
+ReportingDuration ::= INTEGER (0..255)
+
+AdditionalInformation ::= ENUMERATED {
+ onlyReturnInformationRequested,
+ mayReturnAdditionalInformation,
+ ...
+}
+
+QoS ::= SEQUENCE {
+ horizontalAccuracy HorizontalAccuracy OPTIONAL, -- Need ON
+ verticalCoordinateRequest BOOLEAN,
+ verticalAccuracy VerticalAccuracy OPTIONAL, -- Need ON
+ responseTime ResponseTime OPTIONAL, -- Need ON
+ velocityRequest BOOLEAN,
+ ...,
+ [[ responseTimeNB-r14 ResponseTimeNB-r14 OPTIONAL -- Need ON
+ ]],
+ [[ horizontalAccuracyExt-r15 HorizontalAccuracyExt-r15 OPTIONAL, -- Need ON
+ verticalAccuracyExt-r15 VerticalAccuracyExt-r15 OPTIONAL -- Need ON
+ ]]
+}
+
+HorizontalAccuracy ::= SEQUENCE {
+ accuracy INTEGER(0..127),
+ confidence INTEGER(0..100),
+ ...
+}
+
+VerticalAccuracy ::= SEQUENCE {
+ accuracy INTEGER(0..127),
+ confidence INTEGER(0..100),
+ ...
+}
+
+HorizontalAccuracyExt-r15 ::= SEQUENCE {
+ accuracyExt-r15 INTEGER(0..255),
+ confidence-r15 INTEGER(0..100),
+ ...
+}
+
+VerticalAccuracyExt-r15 ::= SEQUENCE {
+ accuracyExt-r15 INTEGER(0..255),
+ confidence-r15 INTEGER(0..100),
+ ...
+}
+
+ResponseTime ::= SEQUENCE {
+ time INTEGER (1..128),
+ ...,
+ [[ responseTimeEarlyFix-r12 INTEGER (1..128) OPTIONAL -- Need ON
+ ]],
+ [[ unit-r15 ENUMERATED { ten-seconds, ... , ten-milli-seconds-v1700 }
+ OPTIONAL -- Need ON
+ ]]
+}
+
+ResponseTimeNB-r14 ::= SEQUENCE {
+ timeNB-r14 INTEGER (1..512),
+ responseTimeEarlyFixNB-r14 INTEGER (1..512) OPTIONAL, -- Need ON
+ ...,
+ [[ unitNB-r15 ENUMERATED { ten-seconds, ... } OPTIONAL -- Need ON
+ ]]
+}
+
+Environment ::= ENUMERATED {
+ badArea,
+ notBadArea,
+ mixedArea,
+ ...
+}
+
+MessageSizeLimitNB-r14 ::= SEQUENCE {
+ measurementLimit-r14 INTEGER (1..512) OPTIONAL, -- Need ON
+ ...
+}
+
+ScheduledLocationTime-r17 ::= SEQUENCE {
+ utcTime-r17 UTCTime OPTIONAL, -- Need ON
+ gnssTime-r17 SEQUENCE {
+ gnss-TOD-msec-r17 INTEGER (0..3599999),
+ gnss-TimeID-r17 GNSS-ID
+ } OPTIONAL, -- Need ON
+ networkTime-r17 CHOICE {
+ e-utraTime-r17 SEQUENCE {
+ lte-PhysCellId-r17 INTEGER (0..503),
+ lte-ArfcnEUTRA-r17 ARFCN-ValueEUTRA,
+ lte-CellGlobalId-r17 CellGlobalIdEUTRA-AndUTRA
+ OPTIONAL, -- Need ON
+ lte-SystemFrameNumber-r17 INTEGER (0..1023)
+ },
+ nrTime-r17 SEQUENCE {
+ nr-PhysCellID-r17 NR-PhysCellID-r16,
+ nr-ARFCN-r17 ARFCN-ValueNR-r15,
+ nr-CellGlobalID-r17 NCGI-r15 OPTIONAL, -- Need ON
+ nr-SFN-r17 INTEGER (0..1023),
+ nr-Slot-r17 CHOICE {
+ scs15-r17 INTEGER (0..9),
+ scs30-r17 INTEGER (0..19),
+ scs60-r17 INTEGER (0..39),
+ scs120-r17 INTEGER (0..79)
+ } OPTIONAL -- Need ON
+ },
+ ...
+ } OPTIONAL, -- Need ON
+ relativeTime-r17 INTEGER (1..1024) OPTIONAL -- Need ON
+}
+
+TargetIntegrityRisk-r17 ::= INTEGER (10..90)
+
+
+CommonIEsProvideLocationInformation ::= SEQUENCE {
+ locationEstimate LocationCoordinates OPTIONAL,
+ velocityEstimate Velocity OPTIONAL,
+ locationError LocationError OPTIONAL,
+ ...,
+ [[ earlyFixReport-r12 EarlyFixReport-r12 OPTIONAL
+ ]],
+ [[ locationSource-r13 LocationSource-r13 OPTIONAL,
+ locationTimestamp-r13 UTCTime OPTIONAL
+ ]],
+ [[
+ segmentationInfo-r14 SegmentationInfo-r14 OPTIONAL -- Cond Segmentation
+ ]],
+ [[
+ integrityInfo-r17 IntegrityInfo-r17 OPTIONAL
+ ]]
+}
+
+LocationCoordinates ::= CHOICE {
+ ellipsoidPoint Ellipsoid-Point,
+ ellipsoidPointWithUncertaintyCircle Ellipsoid-PointWithUncertaintyCircle,
+ ellipsoidPointWithUncertaintyEllipse EllipsoidPointWithUncertaintyEllipse,
+ polygon Polygon,
+ ellipsoidPointWithAltitude EllipsoidPointWithAltitude,
+ ellipsoidPointWithAltitudeAndUncertaintyEllipsoid
+ EllipsoidPointWithAltitudeAndUncertaintyEllipsoid,
+ ellipsoidArc EllipsoidArc,
+ ...,
+ highAccuracyEllipsoidPointWithUncertaintyEllipse-v1510
+ HighAccuracyEllipsoidPointWithUncertaintyEllipse-r15,
+ highAccuracyEllipsoidPointWithAltitudeAndUncertaintyEllipsoid-v1510
+ HighAccuracyEllipsoidPointWithAltitudeAndUncertaintyEllipsoid-r15,
+ ha-EllipsoidPointWithScalableUncertaintyEllipse-v1680 HA-EllipsoidPointWithScalableUncertaintyEllipse-r16,
+ ha-EllipsoidPointWithAltitudeAndScalableUncertaintyEllipsoid-v1680
+ HA-EllipsoidPointWithAltitudeAndScalableUncertaintyEllipsoid-r16
+}
+
+Velocity ::= CHOICE {
+ horizontalVelocity HorizontalVelocity,
+ horizontalWithVerticalVelocity HorizontalWithVerticalVelocity,
+ horizontalVelocityWithUncertainty HorizontalVelocityWithUncertainty,
+ horizontalWithVerticalVelocityAndUncertainty
+ HorizontalWithVerticalVelocityAndUncertainty,
+ ...
+}
+
+LocationError ::= SEQUENCE {
+ locationfailurecause LocationFailureCause,
+ ...
+}
+
+LocationFailureCause ::= ENUMERATED {
+ undefined,
+ requestedMethodNotSupported,
+ positionMethodFailure,
+ periodicLocationMeasurementsNotAvailable,
+ ...
+}
+
+EarlyFixReport-r12 ::= ENUMERATED {
+ noMoreMessages,
+ moreMessagesOnTheWay
+}
+
+LocationSource-r13 ::= BIT STRING { a-gnss (0),
+ wlan (1),
+ bt (2),
+ tbs (3),
+ sensor (4),
+ ha-gnss-v1510 (5),
+ motion-sensor-v1550 (6),
+ dl-tdoa-r16 (7),
+ dl-aod-r16 (8) } (SIZE(1..16))
+
+IntegrityInfo-r17 ::= SEQUENCE {
+ horizontalProtectionLevel-r17 INTEGER (0..50000),
+ verticalProtectionLevel-r17 INTEGER (0..50000) OPTIONAL,
+ achievableTargetIntegrityRisk-r17 INTEGER (10..90) OPTIONAL,
+ ...
+}
+
+
+CommonIEsAbort ::= SEQUENCE {
+ abortCause ENUMERATED {
+ undefined,
+ stopPeriodicReporting,
+ targetDeviceAbort,
+ networkAbort,
+ ...,
+ stopPeriodicAssistanceDataDelivery-v1510
+ }
+}
+
+
+CommonIEsError ::= SEQUENCE {
+ errorCause ENUMERATED {
+ undefined,
+ lppMessageHeaderError,
+ lppMessageBodyError,
+ epduError,
+ incorrectDataValue,
+ ...,
+ lppSegmentationError-v1450
+ }
+}
+
+
+AreaID-CellList-r17 ::= SEQUENCE (SIZE(1..maxCellIDsPerArea-r17)) OF NR-Cell-IDs-r17
+
+NR-Cell-IDs-r17 ::= SEQUENCE {
+ nr-CellGlobalID-r17 NCGI-r15 OPTIONAL, -- Need ON
+ nr-PhysCellID-r17 NR-PhysCellID-r16 OPTIONAL, -- Need ON
+ nr-ARFCN-r17 ARFCN-ValueNR-r15 OPTIONAL, -- Need ON
+ ...
+}
+
+
+DL-PRS-ID-Info-r16 ::= SEQUENCE {
+ dl-PRS-ID-r16 INTEGER (0..255),
+ nr-DL-PRS-ResourceID-List-r16 SEQUENCE (SIZE (1..nrMaxResourceIDs-r16)) OF
+ NR-DL-PRS-ResourceID-r16
+ OPTIONAL, -- Need ON
+ nr-DL-PRS-ResourceSetID-r16 NR-DL-PRS-ResourceSetID-r16
+ OPTIONAL -- Need ON
+}
+
+
+LCS-GCS-TranslationParameter-r16 ::= SEQUENCE {
+ alpha-r16 INTEGER (0..359),
+ alpha-fine-r16 INTEGER (0..9) OPTIONAL, -- Cond AzElFine
+ beta-r16 INTEGER (0..359),
+ beta-fine-r16 INTEGER (0..9) OPTIONAL, -- Cond AzElFine
+ gamma-r16 INTEGER (0..359),
+ gamma-fine-r16 INTEGER (0..9) OPTIONAL, -- Cond AzElFine
+ ...
+}
+
+
+LOS-NLOS-Indicator-r17 ::= SEQUENCE {
+ indicator-r17 CHOICE {
+ soft-r17 INTEGER (0..10),
+ hard-r17 BOOLEAN
+ },
+ ...
+}
+
+
+LOS-NLOS-IndicatorGranularity1-r17 ::= ENUMERATED { trpspecific, resourcespecific }
+
+
+LOS-NLOS-IndicatorGranularity2-r17 ::= ENUMERATED { trpspecific, resourcespecific, both }
+
+
+LOS-NLOS-IndicatorType1-r17 ::= ENUMERATED { hardvalue, softvalue }
+
+
+LOS-NLOS-IndicatorType2-r17 ::= ENUMERATED { hardvalue, hardAndsoftvalue }
+
+
+NR-AdditionalPathList-r16 ::= SEQUENCE (SIZE(1..2)) OF NR-AdditionalPath-r16
+
+NR-AdditionalPathListExt-r17 ::= SEQUENCE (SIZE(1..8)) OF NR-AdditionalPath-r16
+
+NR-AdditionalPath-r16 ::= SEQUENCE {
+ nr-RelativeTimeDifference-r16 CHOICE {
+ k0-r16 INTEGER(0..16351),
+ k1-r16 INTEGER(0..8176),
+ k2-r16 INTEGER(0..4088),
+ k3-r16 INTEGER(0..2044),
+ k4-r16 INTEGER(0..1022),
+ k5-r16 INTEGER(0..511),
+ ...
+ },
+ nr-PathQuality-r16 NR-TimingQuality-r16 OPTIONAL,
+ ...,
+ [[
+ nr-DL-PRS-RSRPP-r17 INTEGER (0..126) OPTIONAL
+ ]]
+}
+
+
+NR-DL-PRS-AssistanceData-r16 ::= SEQUENCE {
+ nr-DL-PRS-ReferenceInfo-r16 DL-PRS-ID-Info-r16,
+ nr-DL-PRS-AssistanceDataList-r16 SEQUENCE (SIZE (1..nrMaxFreqLayers-r16)) OF
+ NR-DL-PRS-AssistanceDataPerFreq-r16,
+ nr-SSB-Config-r16 SEQUENCE (SIZE (1..nrMaxTRPs-r16)) OF
+ NR-SSB-Config-r16 OPTIONAL, -- Need ON
+ ...
+}
+
+NR-DL-PRS-AssistanceDataPerFreq-r16 ::= SEQUENCE {
+ nr-DL-PRS-PositioningFrequencyLayer-r16
+ NR-DL-PRS-PositioningFrequencyLayer-r16,
+ nr-DL-PRS-AssistanceDataPerFreq-r16 SEQUENCE (SIZE (1..nrMaxTRPsPerFreq-r16)) OF
+ NR-DL-PRS-AssistanceDataPerTRP-r16,
+ ...
+}
+
+NR-DL-PRS-AssistanceDataPerTRP-r16 ::= SEQUENCE {
+ dl-PRS-ID-r16 INTEGER (0..255),
+ nr-PhysCellID-r16 NR-PhysCellID-r16 OPTIONAL, -- Need ON
+ nr-CellGlobalID-r16 NCGI-r15 OPTIONAL, -- Need ON
+ nr-ARFCN-r16 ARFCN-ValueNR-r15 OPTIONAL, -- Need ON
+ nr-DL-PRS-SFN0-Offset-r16 NR-DL-PRS-SFN0-Offset-r16,
+ nr-DL-PRS-ExpectedRSTD-r16 INTEGER (-3841..3841),
+ nr-DL-PRS-ExpectedRSTD-Uncertainty-r16
+ INTEGER (0..246),
+ nr-DL-PRS-Info-r16 NR-DL-PRS-Info-r16,
+ ...,
+ [[
+ prs-OnlyTP-r16 ENUMERATED { true } OPTIONAL -- Need ON
+ ]],
+ [[
+ nr-DL-PRS-ExpectedAoD-or-AoA-r17
+ NR-DL-PRS-ExpectedAoD-or-AoA-r17 OPTIONAL -- Need ON
+ ]]
+}
+
+NR-DL-PRS-PositioningFrequencyLayer-r16 ::= SEQUENCE {
+ dl-PRS-SubcarrierSpacing-r16 ENUMERATED {kHz15, kHz30, kHz60, kHz120, ...},
+ dl-PRS-ResourceBandwidth-r16 INTEGER (1..63),
+ dl-PRS-StartPRB-r16 INTEGER (0..2176),
+ dl-PRS-PointA-r16 ARFCN-ValueNR-r15,
+ dl-PRS-CombSizeN-r16 ENUMERATED {n2, n4, n6, n12, ...},
+ dl-PRS-CyclicPrefix-r16 ENUMERATED {normal, extended, ...},
+ ...
+}
+
+NR-DL-PRS-SFN0-Offset-r16 ::= SEQUENCE {
+ sfn-Offset-r16 INTEGER (0..1023),
+ integerSubframeOffset-r16 INTEGER (0..9),
+ ...
+}
+
+NR-DL-PRS-ExpectedAoD-or-AoA-r17 ::= CHOICE {
+ expectedAoD-r17 SEQUENCE {
+ expectedDL-AzimuthAoD-r17 INTEGER (0..359),
+ expectedDL-AzimuthAoD-Unc-r17 INTEGER (0..60) OPTIONAL, -- Need OP
+ expectedDL-ZenithAoD-r17 INTEGER (0..180),
+ expectedDL-ZenithAoD-Unc-r17 INTEGER (0..30) OPTIONAL -- Need OP
+ },
+ expectedAoA-r17 SEQUENCE {
+ expectedDL-AzimuthAoA-r17 INTEGER (0..359),
+ expectedDL-AzimuthAoA-Unc-r17 INTEGER (0..60) OPTIONAL, -- Need OP
+ expectedDL-ZenithAoA-r17 INTEGER (0..180),
+ expectedDL-ZenithAoA-Unc-r17 INTEGER (0..30) OPTIONAL -- Need OP
+ }
+}
+
+
+NR-DL-PRS-BeamInfo-r16 ::= SEQUENCE (SIZE (1..nrMaxFreqLayers-r16)) OF
+ NR-DL-PRS-BeamInfoPerFreqLayer-r16
+
+NR-DL-PRS-BeamInfoPerFreqLayer-r16 ::= SEQUENCE (SIZE (1..nrMaxTRPsPerFreq-r16)) OF
+ NR-DL-PRS-BeamInfoPerTRP-r16
+
+NR-DL-PRS-BeamInfoPerTRP-r16 ::= SEQUENCE {
+ dl-PRS-ID-r16 INTEGER (0..255),
+ nr-PhysCellID-r16 NR-PhysCellID-r16 OPTIONAL, -- Need ON
+ nr-CellGlobalID-r16 NCGI-r15 OPTIONAL, -- Need ON
+ nr-ARFCN-r16 ARFCN-ValueNR-r15 OPTIONAL, -- Need ON
+ associated-DL-PRS-ID-r16 INTEGER (0..255) OPTIONAL, -- Need OP
+ lcs-GCS-TranslationParameter-r16 LCS-GCS-TranslationParameter-r16
+ OPTIONAL, -- Need OP
+ dl-PRS-BeamInfoSet-r16 DL-PRS-BeamInfoSet-r16 OPTIONAL, -- Need OP
+ ...
+}
+
+DL-PRS-BeamInfoSet-r16 ::= SEQUENCE (SIZE(1..nrMaxSetsPerTrpPerFreqLayer-r16)) OF
+ DL-PRS-BeamInfoResourceSet-r16
+
+DL-PRS-BeamInfoResourceSet-r16 ::= SEQUENCE (SIZE(1..nrMaxResourcesPerSet-r16)) OF
+ DL-PRS-BeamInfoElement-r16
+
+DL-PRS-BeamInfoElement-r16 ::= SEQUENCE {
+ dl-PRS-Azimuth-r16 INTEGER (0..359),
+ dl-PRS-Azimuth-fine-r16 INTEGER (0..9) OPTIONAL, -- Need ON
+ dl-PRS-Elevation-r16 INTEGER (0..180) OPTIONAL, -- Need ON
+ dl-PRS-Elevation-fine-r16 INTEGER (0..9) OPTIONAL, -- Need ON
+ ...
+}
+
+
+NR-DL-PRS-ExpectedLOS-NLOS-Assistance-r17 ::= SEQUENCE (SIZE (1..nrMaxFreqLayers-r16)) OF
+ NR-DL-PRS-ExpectedLOS-NLOS-AssistancePerFreqLayer-r17
+
+NR-DL-PRS-ExpectedLOS-NLOS-AssistancePerFreqLayer-r17 ::=
+ SEQUENCE (SIZE (1..nrMaxTRPsPerFreq-r16)) OF
+ NR-DL-PRS-ExpectedLOS-NLOS-AssistancePerTRP-r17
+
+NR-DL-PRS-ExpectedLOS-NLOS-AssistancePerTRP-r17 ::= SEQUENCE {
+ dl-PRS-ID-r17 INTEGER (0..255),
+ nr-PhysCellID-r17 NR-PhysCellID-r16 OPTIONAL, -- Need ON
+ nr-CellGlobalID-r17 NCGI-r15 OPTIONAL, -- Need ON
+ nr-ARFCN-r17 ARFCN-ValueNR-r15 OPTIONAL, -- Need ON
+ nr-los-nlos-indicator-r17 CHOICE {
+ perTrp-r17 LOS-NLOS-Indicator-r17,
+ perResource-r17 SEQUENCE (SIZE (1..nrMaxSetsPerTrpPerFreqLayer-r16)) OF
+ NR-DL-PRS-ExpectedLOS-NLOS-AssistancePerResource-r17 },
+ ...
+}
+
+NR-DL-PRS-ExpectedLOS-NLOS-AssistancePerResource-r17 ::=
+ SEQUENCE (SIZE (1..nrMaxResourcesPerSet-r16)) OF
+ LOS-NLOS-Indicator-r17
+
+
+NR-DL-PRS-Info-r16 ::= SEQUENCE {
+ nr-DL-PRS-ResourceSetList-r16 SEQUENCE (SIZE (1..nrMaxSetsPerTrpPerFreqLayer-r16)) OF
+ NR-DL-PRS-ResourceSet-r16,
+ ...
+}
+
+NR-DL-PRS-ResourceSet-r16 ::= SEQUENCE {
+ nr-DL-PRS-ResourceSetID-r16 NR-DL-PRS-ResourceSetID-r16,
+ dl-PRS-Periodicity-and-ResourceSetSlotOffset-r16
+ NR-DL-PRS-Periodicity-and-ResourceSetSlotOffset-r16,
+ dl-PRS-ResourceRepetitionFactor-r16 ENUMERATED {n2, n4, n6, n8, n16, n32, ...}
+ OPTIONAL, -- Need OP
+ dl-PRS-ResourceTimeGap-r16 ENUMERATED {s1, s2, s4, s8, s16, s32, ...}
+ OPTIONAL, -- Cond Rep
+ dl-PRS-NumSymbols-r16 ENUMERATED {n2, n4, n6, n12, ...},
+ dl-PRS-MutingOption1-r16 DL-PRS-MutingOption1-r16 OPTIONAL, -- Need OP
+ dl-PRS-MutingOption2-r16 DL-PRS-MutingOption2-r16 OPTIONAL, -- Need OP
+ dl-PRS-ResourcePower-r16 INTEGER (-60..50),
+ dl-PRS-ResourceList-r16 SEQUENCE (SIZE (1..nrMaxResourcesPerSet-r16)) OF
+ NR-DL-PRS-Resource-r16,
+ ...
+}
+
+DL-PRS-MutingOption1-r16 ::= SEQUENCE {
+ dl-prs-MutingBitRepetitionFactor-r16
+ ENUMERATED { n1, n2, n4, n8, ... } OPTIONAL, -- Need OP
+ nr-option1-muting-r16 NR-MutingPattern-r16,
+ ...
+}
+
+DL-PRS-MutingOption2-r16 ::= SEQUENCE {
+ nr-option2-muting-r16 NR-MutingPattern-r16,
+ ...
+}
+
+NR-MutingPattern-r16 ::= CHOICE {
+ po2-r16 BIT STRING (SIZE(2)),
+ po4-r16 BIT STRING (SIZE(4)),
+ po6-r16 BIT STRING (SIZE(6)),
+ po8-r16 BIT STRING (SIZE(8)),
+ po16-r16 BIT STRING (SIZE(16)),
+ po32-r16 BIT STRING (SIZE(32)),
+ ...
+}
+
+NR-DL-PRS-Resource-r16 ::= SEQUENCE {
+ nr-DL-PRS-ResourceID-r16 NR-DL-PRS-ResourceID-r16,
+ dl-PRS-SequenceID-r16 INTEGER (0.. 4095),
+ dl-PRS-CombSizeN-AndReOffset-r16 CHOICE {
+ n2-r16 INTEGER (0..1),
+ n4-r16 INTEGER (0..3),
+ n6-r16 INTEGER (0..5),
+ n12-r16 INTEGER (0..11),
+ ...
+ },
+ dl-PRS-ResourceSlotOffset-r16 INTEGER (0..nrMaxResourceOffsetValue-1-r16),
+ dl-PRS-ResourceSymbolOffset-r16 INTEGER (0..12),
+ dl-PRS-QCL-Info-r16 DL-PRS-QCL-Info-r16 OPTIONAL, --Need ON
+ ...,
+ [[
+ dl-PRS-ResourcePrioritySubset-r17 DL-PRS-ResourcePrioritySubset-r17 OPTIONAL -- Need ON
+ ]]
+}
+
+DL-PRS-QCL-Info-r16 ::= CHOICE {
+ ssb-r16 SEQUENCE {
+ pci-r16 NR-PhysCellID-r16,
+ ssb-Index-r16 INTEGER (0..63),
+ rs-Type-r16 ENUMERATED {typeC, typeD, typeC-plus-typeD}
+ },
+ dl-PRS-r16 SEQUENCE {
+ qcl-DL-PRS-ResourceID-r16 NR-DL-PRS-ResourceID-r16,
+ qcl-DL-PRS-ResourceSetID-r16 NR-DL-PRS-ResourceSetID-r16
+ }
+}
+
+NR-DL-PRS-Periodicity-and-ResourceSetSlotOffset-r16 ::= CHOICE {
+ scs15-r16 CHOICE {
+ n4-r16 INTEGER (0..3),
+ n5-r16 INTEGER (0..4),
+ n8-r16 INTEGER (0..7),
+ n10-r16 INTEGER (0..9),
+ n16-r16 INTEGER (0..15),
+ n20-r16 INTEGER (0..19),
+ n32-r16 INTEGER (0..31),
+ n40-r16 INTEGER (0..39),
+ n64-r16 INTEGER (0..63),
+ n80-r16 INTEGER (0..79),
+ n160-r16 INTEGER (0..159),
+ n320-r16 INTEGER (0..319),
+ n640-r16 INTEGER (0..639),
+ n1280-r16 INTEGER (0..1279),
+ n2560-r16 INTEGER (0..2559),
+ n5120-r16 INTEGER (0..5119),
+ n10240-r16 INTEGER (0..10239),
+ ...
+ },
+ scs30-r16 CHOICE {
+ n8-r16 INTEGER (0..7),
+ n10-r16 INTEGER (0..9),
+ n16-r16 INTEGER (0..15),
+ n20-r16 INTEGER (0..19),
+ n32-r16 INTEGER (0..31),
+ n40-r16 INTEGER (0..39),
+ n64-r16 INTEGER (0..63),
+ n80-r16 INTEGER (0..79),
+ n128-r16 INTEGER (0..127),
+ n160-r16 INTEGER (0..159),
+ n320-r16 INTEGER (0..319),
+ n640-r16 INTEGER (0..639),
+ n1280-r16 INTEGER (0..1279),
+ n2560-r16 INTEGER (0..2559),
+ n5120-r16 INTEGER (0..5119),
+ n10240-r16 INTEGER (0..10239),
+ n20480-r16 INTEGER (0..20479),
+ ...
+ },
+ scs60-r16 CHOICE {
+ n16-r16 INTEGER (0..15),
+ n20-r16 INTEGER (0..19),
+ n32-r16 INTEGER (0..31),
+ n40-r16 INTEGER (0..39),
+ n64-r16 INTEGER (0..63),
+ n80-r16 INTEGER (0..79),
+ n128-r16 INTEGER (0..127),
+ n160-r16 INTEGER (0..159),
+ n256-r16 INTEGER (0..255),
+ n320-r16 INTEGER (0..319),
+ n640-r16 INTEGER (0..639),
+ n1280-r16 INTEGER (0..1279),
+ n2560-r16 INTEGER (0..2559),
+ n5120-r16 INTEGER (0..5119),
+ n10240-r16 INTEGER (0..10239),
+ n20480-r16 INTEGER (0..20479),
+ n40960-r16 INTEGER (0..40959),
+ ...
+ },
+ scs120-r16 CHOICE {
+ n32-r16 INTEGER (0..31),
+ n40-r16 INTEGER (0..39),
+ n64-r16 INTEGER (0..63),
+ n80-r16 INTEGER (0..79),
+ n128-r16 INTEGER (0..127),
+ n160-r16 INTEGER (0..159),
+ n256-r16 INTEGER (0..255),
+ n320-r16 INTEGER (0..319),
+ n512-r16 INTEGER (0..511),
+ n640-r16 INTEGER (0..639),
+ n1280-r16 INTEGER (0..1279),
+ n2560-r16 INTEGER (0..2559),
+ n5120-r16 INTEGER (0..5119),
+ n10240-r16 INTEGER (0..10239),
+ n20480-r16 INTEGER (0..20479),
+ n40960-r16 INTEGER (0..40959),
+ n81920-r16 INTEGER (0..81919),
+ ...
+ },
+ ...
+}
+
+DL-PRS-ResourcePrioritySubset-r17 ::= SEQUENCE (SIZE (1..maxNumPrioResources-r17)) OF
+ NR-DL-PRSResourcePriorityItem-r17
+
+NR-DL-PRSResourcePriorityItem-r17 ::= SEQUENCE {
+ nr-DL-PRS-PrioResourceSetID-r17 NR-DL-PRS-ResourceSetID-r16 OPTIONAL, -- Cond NotSame
+ nr-DL-PRS-PrioResourceID-r17 NR-DL-PRS-ResourceID-r16,
+ ...
+}
+
+
+NR-DL-PRS-ProcessingCapability-r16 ::= SEQUENCE {
+ prs-ProcessingCapabilityBandList-r16 SEQUENCE (SIZE (1..nrMaxBands-r16)) OF
+ PRS-ProcessingCapabilityPerBand-r16,
+ maxSupportedFreqLayers-r16 INTEGER (1..4),
+ simulLTE-NR-PRS-r16 ENUMERATED { supported } OPTIONAL,
+ ...,
+ [[
+ dummy ENUMERATED { m1, m2, ... } OPTIONAL
+ ]]
+}
+
+PRS-ProcessingCapabilityPerBand-r16 ::= SEQUENCE {
+ freqBandIndicatorNR-r16 FreqBandIndicatorNR-r16,
+ supportedBandwidthPRS-r16 CHOICE {
+ fr1 ENUMERATED {mhz5, mhz10, mhz20, mhz40,
+ mhz50, mhz80, mhz100},
+ fr2 ENUMERATED {mhz50, mhz100, mhz200, mhz400},
+ ...
+ },
+ dl-PRS-BufferType-r16 ENUMERATED {type1, type2, ...},
+ durationOfPRS-Processing-r16 SEQUENCE {
+ durationOfPRS-ProcessingSymbols-r16 ENUMERATED {nDot125, nDot25, nDot5, n1,
+ n2, n4, n6, n8, n12, n16, n20, n25,
+ n30, n32, n35, n40, n45, n50},
+ durationOfPRS-ProcessingSymbolsInEveryTms-r16
+ ENUMERATED {n8, n16, n20, n30, n40, n80,
+ n160,n320, n640, n1280},
+ ...
+ },
+ maxNumOfDL-PRS-ResProcessedPerSlot-r16 SEQUENCE {
+ scs15-r16 ENUMERATED {n1, n2, n4, n8, n16, n24, n32,
+ n48, n64} OPTIONAL,
+ scs30-r16 ENUMERATED {n1, n2, n4, n8, n16, n24, n32,
+ n48, n64} OPTIONAL,
+ scs60-r16 ENUMERATED {n1, n2, n4, n8, n16, n24, n32,
+ n48, n64} OPTIONAL,
+ scs120-r16 ENUMERATED {n1, n2, n4, n8, n16, n24, n32,
+ n48, n64} OPTIONAL,
+ ...,
+ [[
+ scs15-v1690 ENUMERATED {n6, n12} OPTIONAL,
+ scs30-v1690 ENUMERATED {n6, n12} OPTIONAL,
+ scs60-v1690 ENUMERATED {n6, n12} OPTIONAL,
+ scs120-v1690 ENUMERATED {n6, n12} OPTIONAL
+ ]]
+ },
+ ...,
+ [[
+ supportedDL-PRS-ProcessingSamples-RRC-CONNECTED-r17 ENUMERATED { supported } OPTIONAL,
+ prs-ProcessingWindowType1A-r17 ENUMERATED { option1, option2, option3} OPTIONAL,
+ prs-ProcessingWindowType1B-r17 ENUMERATED { option1, option2, option3} OPTIONAL,
+ prs-ProcessingWindowType2-r17 ENUMERATED { option1, option2, option3} OPTIONAL,
+ prs-ProcessingCapabilityOutsideMGinPPW-r17
+ SEQUENCE (SIZE(1..3)) OF
+ PRS-ProcessingCapabilityOutsideMGinPPWperType-r17
+ OPTIONAL,
+ dl-PRS-BufferType-RRC-Inactive-r17 ENUMERATED { type1, type2, ... } OPTIONAL,
+ durationOfPRS-Processing-RRC-Inactive-r17 SEQUENCE {
+ durationOfPRS-ProcessingSymbols-r17 ENUMERATED {nDot125, nDot25, nDot5, n1,
+ n2, n4, n6, n8, n12, n16, n20, n25,
+ n30, n32, n35, n40, n45, n50},
+ durationOfPRS-ProcessingSymbolsInEveryTms-r17
+ ENUMERATED {n8, n16, n20, n30, n40, n80,
+ n160,n320, n640, n1280},
+ ...
+ } OPTIONAL,
+ maxNumOfDL-PRS-ResProcessedPerSlot-RRC-Inactive-r17 SEQUENCE {
+ scs15-r17 ENUMERATED {n1, n2, n4, n6, n8, n12, n16, n24,
+ n32, n48, n64} OPTIONAL,
+ scs30-r17 ENUMERATED {n1, n2, n4, n6, n8, n12, n16, n24,
+ n32, n48, n64} OPTIONAL,
+ scs60-r17 ENUMERATED {n1, n2, n4, n6, n8, n12, n16, n24,
+ n32, n48, n64} OPTIONAL,
+ scs120-r17 ENUMERATED {n1, n2, n4, n6, n8, n12, n16, n24,
+ n32, n48, n64} OPTIONAL,
+ ...
+ } OPTIONAL,
+ supportedLowerRxBeamSweepingFactor-FR2-r17 ENUMERATED { n1, n2, n4, n6 } OPTIONAL
+ ]],
+ [[
+ supportedDL-PRS-ProcessingSamples-RRC-Inactive-r17 ENUMERATED { supported } OPTIONAL
+ ]],
+ [[
+ prs-MeasurementWithoutMG-r17 ENUMERATED {cp, symbolDot25, symbolDot5,
+ slotDot5} OPTIONAL
+ ]]
+}
+
+PRS-ProcessingCapabilityOutsideMGinPPWperType-r17 ::= SEQUENCE {
+ prsProcessingType-r17 ENUMERATED { type1A, type1B, type2 },
+ ppw-dl-PRS-BufferType-r17 ENUMERATED { type1, type2, ... },
+ ppw-durationOfPRS-Processing1-r17 SEQUENCE {
+ ppw-durationOfPRS-ProcessingSymbolsN-r17
+ ENUMERATED { msDot125, msDot25, msDot5, ms1, ms2, ms4,
+ ms6, ms8, ms12, ms16, ms20, ms25, ms30, ms32, ms35,
+ ms40, ms45, ms50 },
+ ppw-durationOfPRS-ProcessingSymbolsT-r17
+ ENUMERATED { ms1, ms2, ms4, ms8, ms16, ms20, ms30, ms40, ms80,
+ ms160, ms320, ms640, ms1280 }
+ } OPTIONAL,
+ ppw-durationOfPRS-Processing2-r17 SEQUENCE {
+ ppw-durationOfPRS-ProcessingSymbolsN2-r17
+ ENUMERATED { msDot125, msDot25, msDot5, ms1, ms2, ms3, ms4, ms5,
+ ms6, ms8, ms12 },
+ ppw-durationOfPRS-ProcessingSymbolsT2-r17
+ ENUMERATED { ms4, ms5, ms6, ms8 }
+ } OPTIONAL,
+ ppw-maxNumOfDL-PRS-ResProcessedPerSlot-r17 SEQUENCE {
+ scs15-r17 ENUMERATED {n1, n2, n4, n6, n8, n12,
+ n16, n24, n32, n48, n64 }
+ OPTIONAL,
+ scs30-r17 ENUMERATED {n1, n2, n4, n6, n8, n12,
+ n16, n24, n32, n48, n64 }
+ OPTIONAL,
+ scs60-r17 ENUMERATED {n1, n2, n4, n6, n8, n12,
+ n16, n24, n32, n48, n64 }
+ OPTIONAL,
+ scs120-r17 ENUMERATED {n1, n2, n4, n6, n8, n12,
+ n16, n24, n32, n48, n64 }
+ OPTIONAL,
+ ...
+ },
+ ...,
+ [[
+ ppw-maxNumOfDL-Bandwidth-r17 CHOICE {
+ fr1 ENUMERATED {mhz5, mhz10, mhz20, mhz40,
+ mhz50, mhz80, mhz100},
+ fr2 ENUMERATED {mhz50, mhz100, mhz200, mhz400}
+ } OPTIONAL
+ ]]
+}
+
+
+NR-DL-PRS-QCL-ProcessingCapability-r16 ::= SEQUENCE {
+ dl-PRS-QCL-ProcessingCapabilityBandList-r16 SEQUENCE (SIZE (1..nrMaxBands-r16)) OF
+ DL-PRS-QCL-ProcessingCapabilityPerBand-r16,
+ ...
+}
+
+DL-PRS-QCL-ProcessingCapabilityPerBand-r16 ::= SEQUENCE {
+ freqBandIndicatorNR-r16 FreqBandIndicatorNR-r16,
+ ssb-FromNeighCellAsQCL-r16 ENUMERATED { supported} OPTIONAL,
+ prs-FromServNeighCellAsQCL-r16 ENUMERATED { supported} OPTIONAL,
+ ...
+}
+
+
+NR-DL-PRS-ResourceID-r16 ::= INTEGER (0..nrMaxNumDL-PRS-ResourcesPerSet-1-r16)
+
+
+NR-DL-PRS-ResourcesCapability-r16 ::= SEQUENCE {
+ maxNrOfDL-PRS-ResourceSetPerTrpPerFrequencyLayer-r16
+ INTEGER (1..2),
+ maxNrOfTRP-AcrossFreqs-r16 ENUMERATED { n4, n6, n12, n16, n32,
+ n64, n128, n256, ..., n24-v1690},
+ maxNrOfPosLayer-r16 INTEGER (1..4),
+ dl-PRS-ResourcesCapabilityBandList-r16 SEQUENCE (SIZE (1..nrMaxBands-r16)) OF
+ DL-PRS-ResourcesCapabilityPerBand-r16,
+ dl-PRS-ResourcesBandCombinationList-r16 DL-PRS-ResourcesBandCombinationList-r16,
+ ...
+}
+
+DL-PRS-ResourcesCapabilityPerBand-r16 ::= SEQUENCE {
+ freqBandIndicatorNR-r16 FreqBandIndicatorNR-r16,
+ maxNrOfDL-PRS-ResourcesPerResourceSet-r16 ENUMERATED { n1, n2, n4, n8, n16, n32, n64, ...},
+ maxNrOfDL-PRS-ResourcesPerPositioningFrequencylayer-r16
+ ENUMERATED { n6, n24, n32, n64, n96, n128,
+ n256, n512, n1024, ...},
+ ...
+}
+
+DL-PRS-ResourcesBandCombinationList-r16 ::= SEQUENCE (SIZE (1..maxBandComb-r16)) OF
+ DL-PRS-ResourcesBandCombination-r16
+
+DL-PRS-ResourcesBandCombination-r16 ::= SEQUENCE {
+ bandList-r16 SEQUENCE (SIZE (1..maxSimultaneousBands-r16)) OF
+ FreqBandIndicatorNR-r16,
+ maxNrOfDL-PRS-ResourcesAcrossAllFL-TRP-ResourceSet-r16
+ CHOICE {
+ fr1-Only-r16 ENUMERATED {n6, n24, n64, n128, n192,
+ n256, n512, n1024, n2048},
+ fr2-Only-r16 ENUMERATED {n24, n64, n96, n128, n192,
+ n256, n512, n1024, n2048},
+ fr1-FR2Mix-r16 SEQUENCE {
+ fr1-r16 ENUMERATED {n6, n24, n64, n96, n128,
+ n192, n256, n512, n1024, n2048},
+ fr2-r16 ENUMERATED {n24, n64, n96, n128, n192,
+ n256, n512, n1024, n2048},
+ ...
+ },
+ ...
+ },
+ ...
+}
+
+
+NR-DL-PRS-ResourceSetID-r16 ::= INTEGER (0..nrMaxNumDL-PRS-ResourceSetsPerTRP-1-r16)
+
+
+NR-DL-PRS-TRP-TEG-Info-r17 ::= SEQUENCE (SIZE (1..nrMaxFreqLayers-r16)) OF
+ NR-DL-PRS-TRP-TEG-InfoPerFreqLayer-r17
+
+NR-DL-PRS-TRP-TEG-InfoPerFreqLayer-r17 ::= SEQUENCE (SIZE (1..nrMaxTRPsPerFreq-r16)) OF
+ NR-DL-PRS-TRP-TEG-InfoPerTRP-r17
+
+NR-DL-PRS-TRP-TEG-InfoPerTRP-r17 ::= SEQUENCE {
+ dl-PRS-ID-r17 INTEGER (0..255),
+ nr-PhysCellID-r17 NR-PhysCellID-r16 OPTIONAL, -- Need ON
+ nr-CellGlobalID-r17 NCGI-r15 OPTIONAL, -- Need ON
+ nr-ARFCN-r17 ARFCN-ValueNR-r15 OPTIONAL, -- Need ON
+ dl-PRS-TEG-InfoSet-r17 SEQUENCE (SIZE(1..nrMaxSetsPerTrpPerFreqLayer-r16)) OF
+ DL-PRS-TEG-InfoPerResourceSet-r17,
+ ...,
+ [[
+ nr-TRP-TxTEG-TimingErrorMargin-r17 TEG-TimingErrorMargin-r17 OPTIONAL -- Need ON
+ ]]
+}
+
+DL-PRS-TEG-InfoPerResourceSet-r17 ::= SEQUENCE (SIZE(1..nrMaxResourcesPerSet-r16)) OF
+ DL-PRS-TEG-InfoElement-r17
+
+DL-PRS-TEG-InfoElement-r17 ::= SEQUENCE {
+ dl-prs-trp-Tx-TEG-ID-r17 INTEGER (0..maxNumOfTRP-TxTEGs-1-r17),
+ ...
+}
+
+
+NR-On-Demand-DL-PRS-Configurations-r17 ::= SEQUENCE {
+ on-demand-dl-prs-configuration-list-r17 SEQUENCE (SIZE (1..maxOD-DL-PRS-Configs-r17)) OF
+ On-Demand-DL-PRS-Configuration-r17,
+ ...
+}
+
+On-Demand-DL-PRS-Configuration-r17 ::= SEQUENCE {
+ dl-prs-configuration-id-r17 DL-PRS-Configuration-ID-r17,
+ nr-DL-PRS-PositioningFrequencyLayer-r17 NR-DL-PRS-PositioningFrequencyLayer-r16,
+ nr-DL-PRS-Info-r17 NR-DL-PRS-Info-r16,
+ ...
+}
+
+DL-PRS-Configuration-ID-r17 ::= SEQUENCE {
+ nr-dl-prs-configuration-id-r17 INTEGER (1..maxOD-DL-PRS-Configs-r17),
+ ...
+}
+
+
+NR-On-Demand-DL-PRS-Information-r17 ::= SEQUENCE (SIZE (1..nrMaxFreqLayers-r16)) OF
+ NR-On-Demand-DL-PRS-PerFreqLayer-r17
+
+NR-On-Demand-DL-PRS-PerFreqLayer-r17 ::= SEQUENCE {
+ dl-prs-FrequencyRangeReq-r17 ENUMERATED { fr1, fr2, ...},
+ dl-prs-ResourceSetPeriodicityReq-r17 ENUMERATED { p4, p5, p8, p10, p16, p20, p32, p40,
+ p64, p80, p160, p320, p640, p1280, p2560,
+ p5120, p10240, p20480, p40960, p81920, ...}
+ OPTIONAL,
+ dl-prs-ResourceBandwidthReq-r17 INTEGER (1..63) OPTIONAL,
+ dl-prs-ResourceRepetitionFactorReq-r17 ENUMERATED {n2, n4, n6, n8, n16, n32, ...}
+ OPTIONAL,
+ dl-prs-NumSymbolsReq-r17 ENUMERATED {n2, n4, n6, n12, ...} OPTIONAL,
+ dl-prs-CombSizeN-Req-r17 ENUMERATED {n2, n4, n6, n12, ...} OPTIONAL,
+ dl-prs-QCL-InformationReqTRPlist-r17 DL-PRS-QCL-InformationReqTRPlist-r17 OPTIONAL,
+ ...
+}
+
+DL-PRS-QCL-InformationReqTRPlist-r17 ::= SEQUENCE (SIZE (1..nrMaxTRPsPerFreq-r16)) OF
+ DL-PRS-QCL-InformationReqPerTRP-r17
+
+DL-PRS-QCL-InformationReqPerTRP-r17 ::= SEQUENCE {
+ dl-PRS-ID-r17 INTEGER (0..255),
+ nr-PhysCellID-r17 NR-PhysCellID-r16 OPTIONAL,
+ nr-CellGlobalID-r17 NCGI-r15 OPTIONAL,
+ nr-ARFCN-r17 ARFCN-ValueNR-r15 OPTIONAL,
+ dl-prs-QCL-InformationReqSet-r17 SEQUENCE (SIZE (1..nrMaxSetsPerTrpPerFreqLayer-r16)) OF
+ DL-PRS-QCL-InfoReq-r17,
+ ...
+}
+
+DL-PRS-QCL-InfoReq-r17 ::= SEQUENCE {
+ nr-DL-PRS-ResourceSetID-r17 NR-DL-PRS-ResourceSetID-r16,
+ dl-prs-QCL-InformationReq-r17 CHOICE {
+ dl-prs-QCL-InfoRecPerResourceSet-r17 DL-PRS-QCL-Info-r16,
+ dl-prs-QCL-Info-requested-r17 NULL
+ },
+ ...,
+ [[
+ dl-prs-QCL-InfoRecPerResource-r17 SEQUENCE (SIZE (1..nrMaxResourcesPerSet-r16)) OF
+ DL-PRS-QCL-Info-r16 OPTIONAL
+ ]]
+}
+
+
+NR-On-Demand-DL-PRS-Request-r17 ::= SEQUENCE {
+ dl-prs-StartTime-and-Duration-r17 DL-PRS-StartTime-and-Duration-r17 OPTIONAL,
+ nr-on-demand-DL-PRS-Information-r17 NR-On-Demand-DL-PRS-Information-r17 OPTIONAL,
+ dl-prs-configuration-id-PrefList-r17 SEQUENCE (SIZE (1..maxOD-DL-PRS-Configs-r17)) OF
+ DL-PRS-Configuration-ID-r17 OPTIONAL,
+ ...
+}
+
+DL-PRS-StartTime-and-Duration-r17 ::= SEQUENCE {
+ dl-prs-start-time-r17 INTEGER (1..1024) OPTIONAL,
+ dl-prs-duration-r17 SEQUENCE {
+ seconds-r17 INTEGER (0..59) OPTIONAL,
+ minutes-r17 INTEGER (0..59) OPTIONAL,
+ hours-r17 INTEGER (0..23) OPTIONAL,
+ ...
+ } OPTIONAL,
+ ...
+}
+
+
+NR-On-Demand-DL-PRS-Configurations-Selected-IndexList-r17 ::=
+ SEQUENCE (SIZE (1..maxOD-DL-PRS-Configs-r17)) OF
+ DL-PRS-Configuration-ID-r17
+
+
+NR-On-Demand-DL-PRS-Support-r17 ::= SEQUENCE {
+ nr-on-demand-DL-PRS-InformationSup-r17 ENUMERATED { supported } OPTIONAL,
+ nr-on-demand-DL-PRS-ConfigurationsSup-r17 ENUMERATED { supported } OPTIONAL,
+ ...
+}
+
+NR-PositionCalculationAssistance-r16 ::= SEQUENCE {
+ nr-TRP-LocationInfo-r16 NR-TRP-LocationInfo-r16 OPTIONAL, -- Need ON
+ nr-DL-PRS-BeamInfo-r16 NR-DL-PRS-BeamInfo-r16 OPTIONAL, -- Need ON
+ nr-RTD-Info-r16 NR-RTD-Info-r16 OPTIONAL, -- Need ON
+ ...,
+ [[
+ nr-TRP-BeamAntennaInfo-r17 NR-TRP-BeamAntennaInfo-r17 OPTIONAL, -- Need ON
+ nr-DL-PRS-Expected-LOS-NLOS-Assistance-r17
+ NR-DL-PRS-ExpectedLOS-NLOS-Assistance-r17
+ OPTIONAL, -- Need ON
+ nr-DL-PRS-TRP-TEG-Info-r17 NR-DL-PRS-TRP-TEG-Info-r17 OPTIONAL -- Need ON
+ ]]
+}
+
+NR-RTD-Info-r16 ::= SEQUENCE {
+ referenceTRP-RTD-Info-r16 ReferenceTRP-RTD-Info-r16,
+ rtd-InfoList-r16 RTD-InfoList-r16,
+ ...
+}
+
+ReferenceTRP-RTD-Info-r16 ::= SEQUENCE {
+ dl-PRS-ID-Ref-r16 INTEGER (0..255),
+ nr-PhysCellID-Ref-r16 NR-PhysCellID-r16 OPTIONAL, -- Need ON
+ nr-CellGlobalID-Ref-r16 NCGI-r15 OPTIONAL, -- Need ON
+ nr-ARFCN-Ref-r16 ARFCN-ValueNR-r15 OPTIONAL, -- Need ON
+ refTime-r16 CHOICE {
+ systemFrameNumber-r16 BIT STRING (SIZE (10)),
+ utc-r16 UTCTime,
+ ...
+ },
+ rtd-RefQuality-r16 NR-TimingQuality-r16 OPTIONAL, -- Need ON
+ ...
+}
+
+RTD-InfoList-r16 ::= SEQUENCE (SIZE (1..nrMaxFreqLayers-r16)) OF RTD-InfoListPerFreqLayer-r16
+
+RTD-InfoListPerFreqLayer-r16 ::= SEQUENCE (SIZE(1..nrMaxTRPsPerFreq-r16)) OF RTD-InfoElement-r16
+
+RTD-InfoElement-r16 ::= SEQUENCE {
+ dl-PRS-ID-r16 INTEGER (0..255),
+ nr-PhysCellID-r16 NR-PhysCellID-r16 OPTIONAL, -- Need ON
+ nr-CellGlobalID-r16 NCGI-r15 OPTIONAL, -- Need ON
+ nr-ARFCN-r16 ARFCN-ValueNR-r15 OPTIONAL, -- Need ON
+ subframeOffset-r16 INTEGER (0..1966079),
+ rtd-Quality-r16 NR-TimingQuality-r16,
+ ...
+}
+
+
+NR-SelectedDL-PRS-IndexList-r16 ::= SEQUENCE (SIZE (1..nrMaxFreqLayers-r16)) OF
+ NR-SelectedDL-PRS-PerFreq-r16
+
+NR-SelectedDL-PRS-PerFreq-r16 ::= SEQUENCE {
+ nr-SelectedDL-PRS-FrequencyLayerIndex-r16 INTEGER (0..nrMaxFreqLayers-1-r16),
+ nr-SelectedDL-PRS-IndexListPerFreq-r16 SEQUENCE (SIZE (1..nrMaxTRPsPerFreq-r16)) OF
+ NR-SelectedDL-PRS-IndexPerTRP-r16
+ OPTIONAL, --Need OP
+ ...
+}
+
+NR-SelectedDL-PRS-IndexPerTRP-r16 ::= SEQUENCE {
+ nr-SelectedTRP-Index-r16 INTEGER (0..nrMaxTRPsPerFreq-1-r16),
+ dl-SelectedPRS-ResourceSetIndexList-r16 SEQUENCE (SIZE (1..nrMaxSetsPerTrpPerFreqLayer-r16))
+ OF DL-SelectedPRS-ResourceSetIndex-r16
+ OPTIONAL, --Need OP
+ ...
+}
+
+DL-SelectedPRS-ResourceSetIndex-r16 ::= SEQUENCE {
+ nr-DL-SelectedPRS-ResourceSetIndex-r16 INTEGER (0..nrMaxSetsPerTrpPerFreqLayer-1-r16),
+ dl-SelectedPRS-ResourceIndexList-r16 SEQUENCE (SIZE (1..nrMaxResourcesPerSet-r16)) OF
+ DL-SelectedPRS-ResourceIndex-r16
+ OPTIONAL --Need OP
+}
+
+DL-SelectedPRS-ResourceIndex-r16 ::= SEQUENCE {
+ nr-DL-SelectedPRS-ResourceIdIndex-r16 INTEGER (0..nrMaxNumDL-PRS-ResourcesPerSet-1-r16),
+ ...
+}
+
+
+NR-SSB-Config-r16 ::= SEQUENCE {
+ nr-PhysCellID-r16 NR-PhysCellID-r16,
+ nr-ARFCN-r16 ARFCN-ValueNR-r15,
+ ss-PBCH-BlockPower-r16 INTEGER (-60..50),
+ halfFrameIndex-r16 INTEGER (0..1),
+ ssb-periodicity-r16 ENUMERATED { ms5, ms10, ms20, ms40, ms80, ms160, ...},
+ ssb-PositionsInBurst-r16 CHOICE {
+ shortBitmap-r16 BIT STRING (SIZE (4)),
+ mediumBitmap-r16 BIT STRING (SIZE (8)),
+ longBitmap-r16 BIT STRING (SIZE (64))
+ } OPTIONAL, --Need OR
+ ssb-SubcarrierSpacing-r16 ENUMERATED {kHz15, kHz30, kHz60, kHz120, kHz240, ...},
+ sfn-SSB-Offset-r16 INTEGER (0..15),
+ ...
+}
+
+
+NR-TimeStamp-r16 ::= SEQUENCE {
+ dl-PRS-ID-r16 INTEGER (0..255),
+ nr-PhysCellID-r16 NR-PhysCellID-r16 OPTIONAL, -- Need ON
+ nr-CellGlobalID-r16 NCGI-r15 OPTIONAL, -- Need ON
+ nr-ARFCN-r16 ARFCN-ValueNR-r15 OPTIONAL, -- Need ON
+ nr-SFN-r16 INTEGER (0..1023),
+ nr-Slot-r16 CHOICE {
+ scs15-r16 INTEGER (0..9),
+ scs30-r16 INTEGER (0..19),
+ scs60-r16 INTEGER (0..39),
+ scs120-r16 INTEGER (0..79)
+ },
+ ...
+}
+
+
+NR-TimingQuality-r16 ::= SEQUENCE {
+ timingQualityValue-r16 INTEGER (0..31),
+ timingQualityResolution-r16 ENUMERATED {mdot1, m1, m10, m30, ...},
+ ...
+}
+
+
+NR-TRP-BeamAntennaInfo-r17 ::= SEQUENCE (SIZE (1..nrMaxFreqLayers-r16)) OF
+ NR-TRP-BeamAntennaInfoPerFreqLayer-r17
+
+NR-TRP-BeamAntennaInfoPerFreqLayer-r17 ::= SEQUENCE (SIZE (1..nrMaxTRPsPerFreq-r16)) OF
+ NR-TRP-BeamAntennaInfoPerTRP-r17
+
+NR-TRP-BeamAntennaInfoPerTRP-r17 ::= SEQUENCE {
+ dl-PRS-ID-r17 INTEGER (0..255),
+ nr-PhysCellID-r17 NR-PhysCellID-r16 OPTIONAL, -- Need ON
+ nr-CellGlobalID-r17 NCGI-r15 OPTIONAL, -- Need ON
+ nr-ARFCN-r17 ARFCN-ValueNR-r15 OPTIONAL, -- Need ON
+ associated-DL-PRS-ID-r17 INTEGER (0..255) OPTIONAL, -- Need OP
+ lcs-GCS-TranslationParameter-r17 LCS-GCS-TranslationParameter-r16 OPTIONAL, -- Need OP
+ nr-TRP-BeamAntennaAngles-r17 NR-TRP-BeamAntennaAngles-r17 OPTIONAL, -- Need OP
+ ...
+}
+
+NR-TRP-BeamAntennaAngles-r17 ::= SEQUENCE (SIZE(1..3600)) OF
+ NR-TRP-BeamAntennaInfoAzimuthElevation-r17
+
+NR-TRP-BeamAntennaInfoAzimuthElevation-r17 ::= SEQUENCE {
+ azimuth-r17 INTEGER (0..359) OPTIONAL, -- Cond Az
+ azimuth-fine-r17 INTEGER (0..9) OPTIONAL, -- Cond AzOpt
+ elevationList-r17 SEQUENCE (SIZE(1..1801)) OF ElevationElement-R17,
+ ...
+}
+
+ElevationElement-R17 ::= SEQUENCE {
+ elevation-r17 INTEGER (0..180) OPTIONAL, -- Cond El
+ elevation-fine-r17 INTEGER (0..9) OPTIONAL, -- Cond ElOpt
+ beamPowerList-r17 SEQUENCE (SIZE (2..maxNumResourcesPerAngle-r17)) OF
+ BeamPowerElement-r17,
+ ...
+}
+
+BeamPowerElement-r17 ::= SEQUENCE {
+ nr-dl-prs-ResourceSetID-r17 NR-DL-PRS-ResourceSetID-r16 OPTIONAL, -- Need OP
+ nr-dl-prs-ResourceID-r17 NR-DL-PRS-ResourceID-r16,
+ nr-dl-prs-RelativePower-r17 INTEGER (0..30),
+ nr-dl-prs-RelativePowerFine-r17 INTEGER (0..9) OPTIONAL, -- Need ON
+ ...
+}
+
+
+NR-TRP-LocationInfo-r16 ::= SEQUENCE (SIZE (1..nrMaxFreqLayers-r16)) OF
+ NR-TRP-LocationInfoPerFreqLayer-r16
+
+NR-TRP-LocationInfoPerFreqLayer-r16 ::= SEQUENCE {
+ referencePoint-r16 ReferencePoint-r16 OPTIONAL, -- Cond NotSameAsPrev
+ trp-LocationInfoList-r16 SEQUENCE (SIZE (1..nrMaxTRPsPerFreq-r16)) OF
+ TRP-LocationInfoElement-r16,
+ ...
+}
+
+TRP-LocationInfoElement-r16 ::= SEQUENCE {
+ dl-PRS-ID-r16 INTEGER (0..255),
+ nr-PhysCellID-r16 NR-PhysCellID-r16 OPTIONAL, -- Need ON
+ nr-CellGlobalID-r16 NCGI-r15 OPTIONAL, -- Need ON
+ nr-ARFCN-r16 ARFCN-ValueNR-r15 OPTIONAL, -- Need ON
+ associated-DL-PRS-ID-r16 INTEGER (0..255) OPTIONAL, -- Need OP
+ trp-Location-r16 RelativeLocation-r16 OPTIONAL, -- Need OP
+ trp-DL-PRS-ResourceSets-r16 SEQUENCE (SIZE(1..nrMaxSetsPerTrpPerFreqLayer-r16)) OF
+ DL-PRS-ResourceSets-TRP-Element-r16 OPTIONAL, -- Need OP
+ ...
+}
+
+DL-PRS-ResourceSets-TRP-Element-r16 ::= SEQUENCE {
+ dl-PRS-ResourceSetARP-r16 RelativeLocation-r16 OPTIONAL, -- Need OP
+ dl-PRS-Resource-ARP-List-r16 SEQUENCE (SIZE(1..nrMaxResourcesPerSet-r16)) OF
+ DL-PRS-Resource-ARP-Element-r16 OPTIONAL, -- Need OP
+ ...
+}
+
+DL-PRS-Resource-ARP-Element-r16 ::= SEQUENCE {
+ dl-PRS-Resource-ARP-location-r16 RelativeLocation-r16 OPTIONAL, -- Need OP
+ ...
+}
+
+
+NR-UE-TEG-Capability-r17 ::= SEQUENCE {
+ nr-UE-TEG-ID-CapabilityBandList-r17 SEQUENCE (SIZE (1..nrMaxBands-r16)) OF
+ NR-UE-TEG-ID-CapabilityPerBand-r17 OPTIONAL,
+ ...
+}
+
+NR-UE-TEG-ID-CapabilityPerBand-r17 ::= SEQUENCE {
+ freqBandIndicatorNR-r17 FreqBandIndicatorNR-r16,
+ nr-UE-RxTEG-ID-MaxSupport-r17 ENUMERATED {n1, n2, n3, n4, n6, n8} OPTIONAL,
+ nr-UE-TxTEG-ID-MaxSupport-r17 ENUMERATED {n1, n2, n3, n4, n6, n8} OPTIONAL,
+ nr-UE-RxTxTEG-ID-MaxSupport-r17 ENUMERATED {n1, n2, n4, n6, n8, n12, n16,
+ n24, n32, n36, n48, n64} OPTIONAL,
+ measureSameDL-PRS-ResourceWithDifferentRxTEGs-r17
+ ENUMERATED {n2, n3, n4, n6, n8} OPTIONAL,
+ measureSameDL-PRS-ResourceWithDifferentRxTEGsSimul-r17
+ ENUMERATED {n1, n2, n3, n4, n6, n8} OPTIONAL,
+ ...
+}
+
+
+NR-UL-SRS-Capability-r16 ::= SEQUENCE {
+ srs-CapabilityBandList-r16 SEQUENCE (SIZE (1..nrMaxBands-r16)) OF
+ SRS-CapabilityPerBand-r16,
+ srs-PosResourceConfigCA-BandList-r16 SEQUENCE (SIZE (1..nrMaxConfiguredBands-r16)) OF
+ SRS-PosResourcesPerBand-r16 OPTIONAL,
+ maxNumberSRS-PosPathLossEstimateAllServingCells-r16
+ ENUMERATED {n1, n4, n8, n16} OPTIONAL,
+ maxNumberSRS-PosSpatialRelationsAllServingCells-r16
+ ENUMERATED {n0, n1, n2, n4, n8, n16} OPTIONAL,
+ ...
+}
+
+SRS-CapabilityPerBand-r16 ::= SEQUENCE {
+ freqBandIndicatorNR-r16 FreqBandIndicatorNR-r16,
+ olpc-SRS-Pos-r16 OLPC-SRS-Pos-r16 OPTIONAL,
+ spatialRelationsSRS-Pos-r16 SpatialRelationsSRS-Pos-r16 OPTIONAL,
+ ...,
+ [[
+ posSRS-RRC-Inactive-InInitialUL-BWP-r17 PosSRS-RRC-Inactive-InInitialUL-BWP-r17 OPTIONAL,
+ posSRS-RRC-Inactive-OutsideInitialUL-BWP-r17
+ PosSRS-RRC-Inactive-OutsideInitialUL-BWP-r17
+ OPTIONAL,
+ olpc-SRS-PosRRC-Inactive-r17 OLPC-SRS-Pos-r16 OPTIONAL,
+ spatialRelationsSRS-PosRRC-Inactive-r17 SpatialRelationsSRS-Pos-r16 OPTIONAL
+ ]],
+ [[
+ posSRS-SP-RRC-Inactive-InInitialUL-BWP-r17 PosSRS-SP-RRC-Inactive-InInitialUL-BWP-r17
+ OPTIONAL
+ ]]
+}
+
+OLPC-SRS-Pos-r16 ::= SEQUENCE {
+ olpc-SRS-PosBasedOnPRS-Serving-r16 ENUMERATED {supported} OPTIONAL,
+ olpc-SRS-PosBasedOnSSB-Neigh-r16 ENUMERATED {supported} OPTIONAL,
+ olpc-SRS-PosBasedOnPRS-Neigh-r16 ENUMERATED {supported} OPTIONAL,
+ maxNumberPathLossEstimatePerServing-r16 ENUMERATED {n1, n4, n8, n16} OPTIONAL,
+ ...
+}
+
+SpatialRelationsSRS-Pos-r16 ::= SEQUENCE {
+ spatialRelation-SRS-PosBasedOnSSB-Serving-r16 ENUMERATED {supported} OPTIONAL,
+ spatialRelation-SRS-PosBasedOnCSI-RS-Serving-r16 ENUMERATED {supported} OPTIONAL,
+ spatialRelation-SRS-PosBasedOnPRS-Serving-r16 ENUMERATED {supported} OPTIONAL,
+ spatialRelation-SRS-PosBasedOnSRS-r16 ENUMERATED {supported} OPTIONAL,
+ spatialRelation-SRS-PosBasedOnSSB-Neigh-r16 ENUMERATED {supported} OPTIONAL,
+ spatialRelation-SRS-PosBasedOnPRS-Neigh-r16 ENUMERATED {supported} OPTIONAL,
+ ...
+}
+
+SRS-PosResourcesPerBand-r16 ::= SEQUENCE {
+ freqBandIndicatorNR-r16 FreqBandIndicatorNR-r16,
+ maxNumberSRS-PosResourceSetsPerBWP-r16 ENUMERATED {n1, n2, n4, n8, n12, n16},
+ maxNumberSRS-PosResourcesPerBWP-r16 ENUMERATED {n1, n2, n4, n8, n16, n32, n64},
+ maxNumberPeriodicSRS-PosResourcesPerBWP-r16 ENUMERATED {n1, n2, n4, n8, n16, n32, n64},
+ maxNumberAP-SRS-PosResourcesPerBWP-r16 ENUMERATED {n1, n2, n4, n8, n16, n32, n64}
+ OPTIONAL,
+ maxNumberSP-SRS-PosResourcesPerBWP-r16 ENUMERATED {n1, n2, n4, n8, n16, n32, n64}
+ OPTIONAL,
+ ...
+}
+
+PosSRS-RRC-Inactive-InInitialUL-BWP-r17 ::= SEQUENCE {
+ maxNumOfSRSposResourceSets-r17 ENUMERATED {n1, n2, n4, n8, n12, n16 } OPTIONAL,
+ maxNumOfPeriodicAndSemiPersistentSRSposResources-r17
+ ENUMERATED {n1, n2, n4, n8, n16, n32, n64 }
+ OPTIONAL,
+ maxNumOfPeriodicAndSemiPersistentSRSposResourcesPerSlot-r17
+ ENUMERATED {n1, n2, n3, n4, n5, n6, n8, n10, n12, n14}
+ OPTIONAL,
+ maxNumOfPeriodicSRSposResources-r17
+ ENUMERATED {n1, n2, n4, n8, n16, n32, n64 }
+ OPTIONAL,
+ maxNumOfPeriodicSRSposResourcesPerSlot-r17
+ ENUMERATED {n1, n2, n3, n4, n5, n6, n8, n10, n12, n14}
+ OPTIONAL,
+ dummy1 ENUMERATED {n1, n2, n4, n8, n16, n32, n64} OPTIONAL,
+ dummy2 ENUMERATED { n1, n2, n3, n4, n5, n6, n8, n10, n12, n14 }
+ OPTIONAL,
+ ...
+}
+
+PosSRS-RRC-Inactive-OutsideInitialUL-BWP-r17 ::= SEQUENCE {
+ maxSRSposBandwidthForEachSCS-withinCC-FR1-r17
+ ENUMERATED { mhz5, mhz10, mhz15, mhz20, mhz25, mhz30,
+ mhz35, mhz40, mhz45, mhz50, mhz60, mhz70,
+ mhz80, mhz90, mhz100 } OPTIONAL,
+ maxSRSposBandwidthForEachSCS-withinCC-FR2-r17
+ ENUMERATED {mhz50, mhz100, mhz200, mhz400} OPTIONAL,
+ maxNumOfSRSposResourceSets-r17 ENUMERATED { n1, n2, n4, n8, n12, n16 } OPTIONAL,
+ maxNumOfPeriodicSRSposResources-r17 ENUMERATED { n1, n2, n4, n8, n16, n32, n64 }
+ OPTIONAL,
+ maxNumOfPeriodicSRSposResourcesPerSlot-r17
+ ENUMERATED { n1, n2, n3, n4, n5, n6, n8, n10, n12, n14 }
+ OPTIONAL,
+ differentNumerologyBetweenSRSposAndInitialBWP-r17
+ ENUMERATED { supported } OPTIONAL,
+ srsPosWithoutRestrictionOnBWP-r17
+ ENUMERATED { supported } OPTIONAL,
+ maxNumOfPeriodicAndSemiPersistentSRSposResources-r17
+ ENUMERATED {n1, n2, n4, n8, n16, n32, n64} OPTIONAL,
+ maxNumOfPeriodicAndSemiPersistentSRSposResourcesPerSlot-r17
+ ENUMERATED { n1, n2, n3, n4, n5, n6, n8, n10,
+ n12, n14 } OPTIONAL,
+ differentCenterFreqBetweenSRSposAndInitialBWP-r17
+ ENUMERATED { supported } OPTIONAL,
+ maxNumOfSemiPersistentSRSposResources-r17
+ ENUMERATED { n1, n2, n4, n8, n16, n32, n64 }
+ OPTIONAL,
+ maxNumOfSemiPersistentSRSposResourcesPerSlot-r17
+ ENUMERATED { n1, n2, n3, n4, n5, n6, n8, n10,
+ n12, n14 } OPTIONAL,
+ switchingTimeSRS-TX-OtherTX-r17 ENUMERATED { us100, us140, us200, us300, us500 }
+ OPTIONAL,
+ ...
+}
+
+PosSRS-SP-RRC-Inactive-InInitialUL-BWP-r17 ::= SEQUENCE {
+ maxNumOfSemiPersistentSRSposResources-r17
+ ENUMERATED {n1, n2, n4, n8, n16, n32, n64} OPTIONAL,
+ maxNumOfSemiPersistentSRSposResourcesPerSlot-r17
+ ENUMERATED {n1, n2, n3, n4, n5, n6, n8, n10, n12, n14}
+ OPTIONAL,
+ ...
+}
+
+
+ReferencePoint-r16 ::= SEQUENCE {
+ referencePointGeographicLocation-r16 CHOICE {
+ location3D-r16 EllipsoidPointWithAltitudeAndUncertaintyEllipsoid,
+ ha-location3D-r16 HighAccuracyEllipsoidPointWithAltitudeAndUncertaintyEllipsoid-r15,
+ ...
+ },
+ ...
+}
+
+
+RelativeLocation-r16 ::= SEQUENCE {
+ milli-arc-second-units-r16 ENUMERATED { mas0-03, mas0-3, mas3, mas30, ...},
+ height-units-r16 ENUMERATED {mm, cm, m, ...},
+ delta-latitude-r16 Delta-Latitude-r16,
+ delta-longitude-r16 Delta-Longitude-r16,
+ delta-height-r16 Delta-Height-r16,
+ locationUNC-r16 LocationUncertainty-r16 OPTIONAL, -- Need OP
+ ...
+}
+
+Delta-Latitude-r16 ::= SEQUENCE {
+ delta-Latitude-r16 INTEGER (-1024..1023),
+ coarse-delta-Latitude-r16 INTEGER (0..4095) OPTIONAL, -- Need OP
+ ...
+}
+
+Delta-Longitude-r16 ::= SEQUENCE {
+ delta-Longitude-r16 INTEGER (-1024..1023),
+ coarse-delta-Longitude-r16 INTEGER (0..4095) OPTIONAL, -- Need OP
+ ...
+}
+
+Delta-Height-r16 ::= SEQUENCE {
+ delta-Height-r16 INTEGER (-1024..1023),
+ coarse-delta-Height-r16 INTEGER (0..4095) OPTIONAL, -- Need OP
+ ...
+}
+
+LocationUncertainty-r16 ::= SEQUENCE {
+ horizontalUncertainty-r16 INTEGER (0..255),
+ horizontalConfidence-r16 INTEGER (0..100),
+ verticalUncertainty-r16 INTEGER (0..255),
+ verticalConfidence-r16 INTEGER (0..100)
+}
+
+
+TEG-TimingErrorMargin-r17 ::= ENUMERATED { tc0, tc2, tc4, tc6, tc8, tc12, tc16, tc20, tc24,
+ tc32, tc40, tc48, tc56, tc64, tc72, tc80 }
+
+
+RxTxTEG-TimingErrorMargin-r17 ::= ENUMERATED { tc0-5, tc1, tc2, tc4, tc8, tc12, tc16, tc20,
+ tc24, tc32, tc40, tc48, tc64, tc80, tc96, tc128 }
+
+
+OTDOA-ProvideAssistanceData ::= SEQUENCE {
+ otdoa-ReferenceCellInfo OTDOA-ReferenceCellInfo OPTIONAL, -- Need ON
+ otdoa-NeighbourCellInfo OTDOA-NeighbourCellInfoList OPTIONAL, -- Need ON
+ otdoa-Error OTDOA-Error OPTIONAL, -- Need ON
+ ...,
+ [[
+ otdoa-ReferenceCellInfoNB-r14 OTDOA-ReferenceCellInfoNB-r14 OPTIONAL, -- Need ON
+ otdoa-NeighbourCellInfoNB-r14 OTDOA-NeighbourCellInfoListNB-r14 OPTIONAL -- Need ON
+ ]]
+}
+
+
+OTDOA-ReferenceCellInfo ::= SEQUENCE {
+ physCellId INTEGER (0..503),
+ cellGlobalId ECGI OPTIONAL, -- Need ON
+ earfcnRef ARFCN-ValueEUTRA OPTIONAL, -- Cond NotSameAsServ0
+ antennaPortConfig ENUMERATED {ports1-or-2, ports4, ... }
+ OPTIONAL, -- Cond NotSameAsServ1
+ cpLength ENUMERATED { normal, extended, ... },
+ prsInfo PRS-Info OPTIONAL, -- Cond PRS
+ ...,
+ [[ earfcnRef-v9a0 ARFCN-ValueEUTRA-v9a0 OPTIONAL -- Cond NotSameAsServ2
+ ]],
+ [[ tpId-r14 INTEGER (0..4095) OPTIONAL, -- Need ON
+ cpLengthCRS-r14 ENUMERATED { normal, extended, ... }
+ OPTIONAL, -- Cond CRS
+ sameMBSFNconfigRef-r14 BOOLEAN OPTIONAL, -- Need ON
+ dlBandwidth-r14 ENUMERATED {n6, n15, n25, n50, n75, n100}
+ OPTIONAL, -- Cond NotSameAsServ3
+ addPRSconfigRef-r14 SEQUENCE (SIZE (1..maxAddPRSconfig-r14)) OF PRS-Info
+ OPTIONAL -- Need ON
+ ]],
+ [[
+ nr-LTE-SFN-Offset-r15 INTEGER (0..1023) OPTIONAL -- Cond NR
+ ]],
+ [[
+ tdd-config-v1520 TDD-Config-v1520 OPTIONAL, -- Need ON
+ nr-LTE-fineTiming-Offset-r15 INTEGER (0..19) OPTIONAL -- Cond FineOffset
+ ]]
+}
+
+maxAddPRSconfig-r14 INTEGER ::= 2
+
+
+PRS-Info ::= SEQUENCE {
+ prs-Bandwidth ENUMERATED { n6, n15, n25, n50, n75, n100, ... },
+ prs-ConfigurationIndex INTEGER (0..4095),
+ numDL-Frames ENUMERATED {sf-1, sf-2, sf-4, sf-6, ..., sf-add-v1420},
+ ...,
+ prs-MutingInfo-r9 CHOICE {
+ po2-r9 BIT STRING (SIZE(2)),
+ po4-r9 BIT STRING (SIZE(4)),
+ po8-r9 BIT STRING (SIZE(8)),
+ po16-r9 BIT STRING (SIZE(16)),
+ ...,
+ po32-v1420 BIT STRING (SIZE(32)),
+ po64-v1420 BIT STRING (SIZE(64)),
+ po128-v1420 BIT STRING (SIZE(128)),
+ po256-v1420 BIT STRING (SIZE(256)),
+ po512-v1420 BIT STRING (SIZE(512)),
+ po1024-v1420 BIT STRING (SIZE(1024))
+ } OPTIONAL, -- Need OP
+ [[ prsID-r14 INTEGER (0..4095) OPTIONAL, -- Need ON
+ add-numDL-Frames-r14 INTEGER (1..160) OPTIONAL, -- Cond sf-add
+ prsOccGroupLen-r14 ENUMERATED {g2, g4, g8, g16, g32, g64, g128,... }
+ OPTIONAL, -- Cond Occ-Grp
+ prsHoppingInfo-r14 CHOICE {
+ nb2-r14 INTEGER (0.. maxAvailNarrowBands-Minus1-r14),
+ nb4-r14 SEQUENCE (SIZE (3))
+ OF INTEGER (0.. maxAvailNarrowBands-Minus1-r14)
+ } OPTIONAL -- Cond PRS-FH
+ ]]
+}
+
+maxAvailNarrowBands-Minus1-r14 INTEGER ::= 15 -- Maximum number of narrowbands minus 1
+
+
+TDD-Config-v1520 ::= SEQUENCE {
+ subframeAssignment-v1520 ENUMERATED { sa0, sa1, sa2, sa3, sa4, sa5, sa6 },
+ ...
+}
+
+
+OTDOA-NeighbourCellInfoList ::= SEQUENCE (SIZE (1..maxFreqLayers)) OF OTDOA-NeighbourFreqInfo
+OTDOA-NeighbourFreqInfo ::= SEQUENCE (SIZE (1..24)) OF OTDOA-NeighbourCellInfoElement
+
+OTDOA-NeighbourCellInfoElement ::= SEQUENCE {
+ physCellId INTEGER (0..503),
+ cellGlobalId ECGI OPTIONAL, -- Need ON
+ earfcn ARFCN-ValueEUTRA OPTIONAL, -- Cond NotSameAsRef0
+ cpLength ENUMERATED {normal, extended, ...}
+ OPTIONAL, -- Cond NotSameAsRef1
+ prsInfo PRS-Info OPTIONAL, -- Cond NotSameAsRef2
+ antennaPortConfig ENUMERATED {ports-1-or-2, ports-4, ...}
+ OPTIONAL, -- Cond NotsameAsRef3
+ slotNumberOffset INTEGER (0..19) OPTIONAL, -- Cond NotSameAsRef4
+ prs-SubframeOffset INTEGER (0..1279) OPTIONAL, -- Cond InterFreq
+ expectedRSTD INTEGER (0..16383),
+ expectedRSTD-Uncertainty INTEGER (0..1023),
+ ...,
+ [[ earfcn-v9a0 ARFCN-ValueEUTRA-v9a0 OPTIONAL -- Cond NotSameAsRef5
+ ]],
+ [[ tpId-r14 INTEGER (0..4095) OPTIONAL, -- Need ON
+ prs-only-tp-r14 ENUMERATED { true } OPTIONAL, -- Cond TBS
+ cpLengthCRS-r14 ENUMERATED { normal, extended, ... }
+ OPTIONAL, -- Cond CRS
+ sameMBSFNconfigNeighbour-r14 BOOLEAN OPTIONAL, -- Need ON
+ dlBandwidth-r14 ENUMERATED {n6, n15, n25, n50, n75, n100}
+ OPTIONAL, -- Cond NotSameAsRef6
+ addPRSconfigNeighbour-r14 SEQUENCE (SIZE (1..maxAddPRSconfig-r14)) OF
+ Add-PRSconfigNeighbourElement-r14
+ OPTIONAL -- Need ON
+ ]],
+ [[
+ tdd-config-v1520 TDD-Config-v1520 OPTIONAL -- Need ON
+ ]]
+}
+
+Add-PRSconfigNeighbourElement-r14 ::= SEQUENCE {
+ add-prsInfo-r14 PRS-Info OPTIONAL, -- Cond NotSameAsRef7
+ ...
+}
+
+maxFreqLayers INTEGER ::= 3
+
+
+OTDOA-ReferenceCellInfoNB-r14 ::= SEQUENCE {
+ physCellIdNB-r14 INTEGER (0..503) OPTIONAL, -- Cond NoPRS-AD1
+ cellGlobalIdNB-r14 ECGI OPTIONAL, -- Cond NoPRS-AD2
+ carrierFreqRef-r14 CarrierFreq-NB-r14 OPTIONAL, -- Cond NotSameAsServ1
+ earfcn-r14 ARFCN-ValueEUTRA-r14 OPTIONAL, -- Cond Inband
+ eutra-NumCRS-Ports-r14 ENUMERATED {ports1-or-2, ports4}
+ OPTIONAL, -- Cond NoPRS-AD3
+ otdoa-SIB1-NB-repetitions-r14 ENUMERATED { r4, r8, r16 } OPTIONAL, -- Cond NotSameAsServ2
+ nprsInfo-r14 PRS-Info-NB-r14 OPTIONAL, -- Cond NPRS-Type1
+ ...,
+ [[
+ nprsInfo-Type2-v1470 PRS-Info-NB-r14 OPTIONAL -- Cond NPRS-Type2
+ ]],
+ [[ tdd-config-r15 TDD-Config-v1520 OPTIONAL -- Need ON
+ ]]
+}
+
+
+PRS-Info-NB-r14 ::= SEQUENCE (SIZE (1..maxCarrier-r14)) OF NPRS-Info-r14
+
+NPRS-Info-r14 ::= SEQUENCE {
+ operationModeInfoNPRS-r14 ENUMERATED { inband, standalone },
+ nprs-carrier-r14 CarrierFreq-NB-r14 OPTIONAL, -- Cond Standalone/Guardband
+ nprsSequenceInfo-r14 INTEGER (0..174) OPTIONAL, -- Cond Inband
+ nprsID-r14 INTEGER (0..4095) OPTIONAL, -- Cond NPRS-ID
+ partA-r14 SEQUENCE {
+ nprsBitmap-r14 CHOICE {
+ subframePattern10-r14 BIT STRING (SIZE (10)),
+ subframePattern40-r14 BIT STRING (SIZE (40))
+ },
+ nprs-MutingInfoA-r14 CHOICE {
+ po2-r14 BIT STRING (SIZE(2)),
+ po4-r14 BIT STRING (SIZE(4)),
+ po8-r14 BIT STRING (SIZE(8)),
+ po16-r14 BIT STRING (SIZE(16)),
+ ...
+ } OPTIONAL, -- Cond MutingA
+ ...
+ } OPTIONAL, -- Cond PartA
+ partB-r14 SEQUENCE {
+ nprs-Period-r14 ENUMERATED { ms160, ms320, ms640, ms1280, ... , ms2560-v1510},
+ nprs-startSF-r14 ENUMERATED { zero, one-eighth, two-eighths, three-eighths,
+ four-eighths, five-eighths, six-eighths,
+ seven-eighths, ...},
+ nprs-NumSF-r14 ENUMERATED { sf10, sf20, sf40, sf80, sf160, sf320,
+ sf640, sf1280, ... , sf2560-v1510},
+ nprs-MutingInfoB-r14 CHOICE {
+ po2-r14 BIT STRING (SIZE(2)),
+ po4-r14 BIT STRING (SIZE(4)),
+ po8-r14 BIT STRING (SIZE(8)),
+ po16-r14 BIT STRING (SIZE(16)),
+ ...
+ } OPTIONAL, -- Cond MutingB
+ ...,
+ [[ sib1-SF-TDD-r15 ENUMERATED {sf0, sf4, sf0and5} OPTIONAL -- Cond SIB1-TDD
+ ]]
+ } OPTIONAL, -- Cond PartB
+ ...,
+ [[
+ partA-TDD-r15 SEQUENCE {
+ nprsBitmap-r15 CHOICE {
+ subframePattern10-TDD-r15 BIT STRING (SIZE (8)),
+ subframePattern40-TDD-r15 BIT STRING (SIZE (32)),
+ ...
+ },
+ nprs-MutingInfoA-r15 CHOICE {
+ po2-r15 BIT STRING (SIZE(2)),
+ po4-r15 BIT STRING (SIZE(4)),
+ po8-r15 BIT STRING (SIZE(8)),
+ po16-r15 BIT STRING (SIZE(16)),
+ ...
+ } OPTIONAL, -- Cond MutingA
+ ...
+ } OPTIONAL -- Cond PartA-TDD
+ ]]
+}
+
+maxCarrier-r14 INTEGER ::= 5
+
+
+OTDOA-NeighbourCellInfoListNB-r14 ::= SEQUENCE (SIZE (1..maxCells-r14)) OF
+ OTDOA-NeighbourCellInfoNB-r14
+
+OTDOA-NeighbourCellInfoNB-r14 ::= SEQUENCE {
+ physCellIdNB-r14 INTEGER (0..503) OPTIONAL, -- Cond NoPRS-AD1
+ cellGlobalIdNB-r14 ECGI OPTIONAL, -- Cond NoPRS-AD2
+ carrierFreq-r14 CarrierFreq-NB-r14 OPTIONAL, -- Cond NotSameAsRef1
+ earfcn-r14 ARFCN-ValueEUTRA-r14 OPTIONAL, -- Cond Inband
+ eutra-NumCRS-Ports-r14 ENUMERATED {ports-1-or-2, ports-4, ...}
+ OPTIONAL, -- Cond NotsameAsRef2
+ otdoa-SIB1-NB-repetitions-r14 ENUMERATED { r4, r8, r16 }
+ OPTIONAL, -- Cond NotSameAsRef3
+ nprsInfo-r14 PRS-Info-NB-r14 OPTIONAL, -- Cond NotsameAsRef4
+ nprs-slotNumberOffset-r14 INTEGER (0..19) OPTIONAL, -- Cond NotsameAsRef5
+ nprs-SFN-Offset-r14 INTEGER (0..63) OPTIONAL, -- Cond NotsameAsRef6
+ nprs-SubframeOffset-r14 INTEGER (0..1279) OPTIONAL, -- Need OP
+ expectedRSTD-r14 INTEGER (0..16383) OPTIONAL, -- Cond NoPRS-AD3
+ expectedRSTD-Uncertainty-r14 INTEGER (0..1023) OPTIONAL, -- Cond NoPRS-AD3
+ prsNeighbourCellIndex-r14 INTEGER (1..72) OPTIONAL, -- Cond PRS-AD
+ ...,
+ [[
+ nprsInfo-Type2-v1470 PRS-Info-NB-r14 OPTIONAL -- Cond NotSameAsRef4
+ ]],
+ [[ tdd-config-r15 TDD-Config-v1520 OPTIONAL -- Need ON
+ ]]
+}
+
+maxCells-r14 INTEGER ::= 72
+
+
+OTDOA-RequestAssistanceData ::= SEQUENCE {
+ physCellId INTEGER (0..503),
+ ...,
+ [[
+ adType-r14 BIT STRING { prs (0), nprs (1) } (SIZE (1..8)) OPTIONAL
+ ]],
+ [[
+ nrPhysCellId-r15 INTEGER (0..1007) OPTIONAL
+ ]]
+}
+
+
+OTDOA-ProvideLocationInformation ::= SEQUENCE {
+ otdoaSignalMeasurementInformation OTDOA-SignalMeasurementInformation OPTIONAL,
+ otdoa-Error OTDOA-Error OPTIONAL,
+ ...,
+ [[
+ otdoaSignalMeasurementInformation-NB-r14 OTDOA-SignalMeasurementInformation-NB-r14
+ OPTIONAL
+ ]]
+}
+
+
+OTDOA-SignalMeasurementInformation ::= SEQUENCE {
+ systemFrameNumber BIT STRING (SIZE (10)),
+ physCellIdRef INTEGER (0..503),
+ cellGlobalIdRef ECGI OPTIONAL,
+ earfcnRef ARFCN-ValueEUTRA OPTIONAL, -- Cond NotSameAsRef0
+ referenceQuality OTDOA-MeasQuality OPTIONAL,
+ neighbourMeasurementList NeighbourMeasurementList,
+ ...,
+ [[ earfcnRef-v9a0 ARFCN-ValueEUTRA-v9a0 OPTIONAL -- Cond NotSameAsRef1
+ ]],
+ [[ tpIdRef-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer0
+ prsIdRef-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer1
+ additionalPathsRef-r14
+ AdditionalPathList-r14 OPTIONAL,
+ nprsIdRef-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer2
+ carrierFreqOffsetNB-Ref-r14
+ CarrierFreqOffsetNB-r14 OPTIONAL, -- Cond NB-IoT
+ hyperSFN-r14 BIT STRING (SIZE (10)) OPTIONAL -- Cond H-SFN
+ ]],
+ [[
+ motionTimeSource-r15 MotionTimeSource-r15 OPTIONAL
+ ]]
+}
+
+NeighbourMeasurementList ::= SEQUENCE (SIZE(1..24)) OF NeighbourMeasurementElement
+
+NeighbourMeasurementElement ::= SEQUENCE {
+ physCellIdNeighbour INTEGER (0..503),
+ cellGlobalIdNeighbour ECGI OPTIONAL,
+ earfcnNeighbour ARFCN-ValueEUTRA OPTIONAL, -- Cond NotSameAsRef2
+ rstd INTEGER (0..12711),
+ rstd-Quality OTDOA-MeasQuality,
+ ...,
+ [[ earfcnNeighbour-v9a0 ARFCN-ValueEUTRA-v9a0 OPTIONAL -- Cond NotSameAsRef3
+ ]],
+ [[ tpIdNeighbour-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer0
+ prsIdNeighbour-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer1
+ delta-rstd-r14 INTEGER (0..5) OPTIONAL,
+ additionalPathsNeighbour-r14
+ AdditionalPathList-r14 OPTIONAL,
+ nprsIdNeighbour-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer2
+ carrierFreqOffsetNB-Neighbour-r14
+ CarrierFreqOffsetNB-r14 OPTIONAL -- Cond NB-IoT
+ ]],
+ [[
+ delta-SFN-r15 INTEGER (-8192..8191) OPTIONAL
+ ]]
+}
+
+AdditionalPathList-r14 ::= SEQUENCE (SIZE(1..maxPaths-r14)) OF AdditionalPath-r14
+
+maxPaths-r14 INTEGER ::= 2
+
+MotionTimeSource-r15 ::= SEQUENCE {
+ timeSource-r15 ENUMERATED {servingCell, referenceCell, gnss, mixed,
+ other, none, ...}
+}
+
+
+OTDOA-SignalMeasurementInformation-NB-r14 ::= SEQUENCE {
+ systemFrameNumber-r14 BIT STRING (SIZE (10)),
+ physCellIdRef-r14 INTEGER (0..503),
+ cellGlobalIdRef-r14 ECGI OPTIONAL,
+ earfcnRef-r14 ARFCN-ValueEUTRA-r14 OPTIONAL, -- Cond NotSameAsRef0
+ referenceQuality-r14 OTDOA-MeasQuality OPTIONAL,
+ neighbourMeasurementList-r14 NeighbourMeasurementList-NB-r14,
+ tpIdRef-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer0
+ prsIdRef-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer1
+ additionalPathsRef-r14 AdditionalPathList-r14 OPTIONAL,
+ nprsIdRef-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer2
+ carrierFreqOffsetNB-Ref-r14 CarrierFreqOffsetNB-r14 OPTIONAL, -- Cond NB-IoT
+ hyperSFN-r14 BIT STRING (SIZE (10)) OPTIONAL, -- Cond H-SFN
+ ...
+}
+
+NeighbourMeasurementList-NB-r14 ::= SEQUENCE (SIZE(1..24)) OF NeighbourMeasurementElement-NB-r14
+
+NeighbourMeasurementElement-NB-r14 ::= SEQUENCE {
+ physCellIdNeighbour-r14 INTEGER (0..503),
+ cellGlobalIdNeighbour-r14 ECGI OPTIONAL,
+ earfcnNeighbour-r14 ARFCN-ValueEUTRA-r14 OPTIONAL, -- Cond NotSameAsRef2
+ rstd-r14 INTEGER (0..12711),
+ rstd-Quality-r14 OTDOA-MeasQuality,
+ tpIdNeighbour-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer0
+ prsIdNeighbour-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer1
+ delta-rstd-r14 INTEGER (0..5) OPTIONAL,
+ additionalPathsNeighbour-r14
+ AdditionalPathList-r14 OPTIONAL,
+ nprsIdNeighbour-r14 INTEGER (0..4095) OPTIONAL, -- Cond ProvidedByServer2
+ carrierFreqOffsetNB-Neighbour-r14
+ CarrierFreqOffsetNB-r14 OPTIONAL, -- Cond NB-IoT
+ ...
+}
+
+
+OTDOA-MeasQuality ::= SEQUENCE {
+ error-Resolution BIT STRING (SIZE (2)),
+ error-Value BIT STRING (SIZE (5)),
+ error-NumSamples BIT STRING (SIZE (3)) OPTIONAL,
+ ...
+}
+
+
+AdditionalPath-r14 ::= SEQUENCE {
+ relativeTimeDifference-r14 INTEGER (-256..255),
+ path-Quality-r14 OTDOA-MeasQuality OPTIONAL,
+ ...
+}
+
+
+OTDOA-RequestLocationInformation ::= SEQUENCE {
+ assistanceAvailability BOOLEAN,
+ ...,
+ [[
+ multipathRSTD-r14 ENUMERATED { requested } OPTIONAL, -- Need ON
+ maxNoOfRSTDmeas-r14 INTEGER (1..32) OPTIONAL -- Need ON
+ ]],
+ [[
+ motionMeasurements-r15 ENUMERATED { requested } OPTIONAL -- Need ON
+ ]]
+}
+
+
+OTDOA-ProvideCapabilities ::= SEQUENCE {
+ otdoa-Mode BIT STRING { ue-assisted (0),
+ ue-assisted-NB-r14 (1),
+ ue-assisted-NB-TDD-r15 (2) } (SIZE (1..8)),
+ ...,
+ supportedBandListEUTRA SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA OPTIONAL,
+ supportedBandListEUTRA-v9a0 SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA-v9a0
+ OPTIONAL,
+ interFreqRSTDmeasurement-r10 ENUMERATED { supported } OPTIONAL,
+ additionalNeighbourCellInfoList-r10 ENUMERATED { supported } OPTIONAL,
+ prs-id-r14 ENUMERATED { supported } OPTIONAL,
+ tp-separation-via-muting-r14 ENUMERATED { supported } OPTIONAL,
+ additional-prs-config-r14 ENUMERATED { supported } OPTIONAL,
+ prs-based-tbs-r14 ENUMERATED { supported } OPTIONAL,
+ additionalPathsReport-r14 ENUMERATED { supported } OPTIONAL,
+ densePrsConfig-r14 ENUMERATED { supported } OPTIONAL,
+ maxSupportedPrsBandwidth-r14 ENUMERATED { n6, n15, n25, n50, n75, n100, ...} OPTIONAL,
+ prsOccGroup-r14 ENUMERATED { supported } OPTIONAL,
+ prsFrequencyHopping-r14 ENUMERATED { supported } OPTIONAL,
+ maxSupportedPrsConfigs-r14 ENUMERATED { c2, c3 } OPTIONAL,
+ periodicalReporting-r14 ENUMERATED { supported } OPTIONAL,
+ multiPrbNprs-r14 ENUMERATED { supported } OPTIONAL,
+ idleStateForMeasurements-r14 ENUMERATED { required } OPTIONAL,
+ numberOfRXantennas-r14 ENUMERATED { rx1, ... } OPTIONAL,
+ motionMeasurements-r15 ENUMERATED { supported } OPTIONAL,
+ interRAT-RSTDmeasurement-r15 ENUMERATED { supported } OPTIONAL,
+ scheduledLocationRequestSupported-r17 ScheduledLocationTimeSupport-r17 OPTIONAL
+}
+
+maxBands INTEGER ::= 64
+
+SupportedBandEUTRA ::= SEQUENCE {
+ bandEUTRA INTEGER (1..maxFBI)
+}
+
+SupportedBandEUTRA-v9a0 ::= SEQUENCE {
+ bandEUTRA-v9a0 INTEGER (maxFBI-Plus1..maxFBI2) OPTIONAL
+}
+
+maxFBI INTEGER ::= 64 -- Maximum value of frequency band indicator
+maxFBI-Plus1 INTEGER ::= 65 -- lowest value extended FBI range
+maxFBI2 INTEGER ::= 256 -- highest value extended FBI range
+
+
+OTDOA-RequestCapabilities ::= SEQUENCE {
+ ...
+}
+
+
+OTDOA-Error ::= CHOICE {
+ locationServerErrorCauses OTDOA-LocationServerErrorCauses,
+ targetDeviceErrorCauses OTDOA-TargetDeviceErrorCauses,
+ ...
+}
+
+
+OTDOA-LocationServerErrorCauses ::= SEQUENCE {
+ cause ENUMERATED { undefined,
+ assistanceDataNotSupportedByServer,
+ assistanceDataSupportedButCurrentlyNotAvailableByServer,
+ ...
+ },
+ ...
+}
+
+
+OTDOA-TargetDeviceErrorCauses ::= SEQUENCE {
+ cause ENUMERATED { undefined,
+ assistance-data-missing,
+ unableToMeasureReferenceCell,
+ unableToMeasureAnyNeighbourCell,
+ attemptedButUnableToMeasureSomeNeighbourCells,
+ ...
+ },
+ ...
+}
+
+
+A-GNSS-ProvideAssistanceData ::= SEQUENCE {
+ gnss-CommonAssistData GNSS-CommonAssistData OPTIONAL, -- Need ON
+ gnss-GenericAssistData GNSS-GenericAssistData OPTIONAL, -- Need ON
+ gnss-Error A-GNSS-Error OPTIONAL, -- Need ON
+ ...,
+ [[
+ gnss-PeriodicAssistData-r15 GNSS-PeriodicAssistData-r15 OPTIONAL -- Cond CtrTrans
+ ]]
+}
+
+
+GNSS-CommonAssistData ::= SEQUENCE {
+ gnss-ReferenceTime GNSS-ReferenceTime OPTIONAL, -- Need ON
+ gnss-ReferenceLocation GNSS-ReferenceLocation OPTIONAL, -- Need ON
+ gnss-IonosphericModel GNSS-IonosphericModel OPTIONAL, -- Need ON
+ gnss-EarthOrientationParameters GNSS-EarthOrientationParameters OPTIONAL, -- Need ON
+ ...,
+ [[
+ gnss-RTK-ReferenceStationInfo-r15
+ GNSS-RTK-ReferenceStationInfo-r15 OPTIONAL, -- Need ON
+ gnss-RTK-CommonObservationInfo-r15
+ GNSS-RTK-CommonObservationInfo-r15 OPTIONAL, -- Cond RTK
+ gnss-RTK-AuxiliaryStationData-r15
+ GNSS-RTK-AuxiliaryStationData-r15 OPTIONAL -- Need ON
+ ]],
+ [[
+ gnss-SSR-CorrectionPoints-r16
+ GNSS-SSR-CorrectionPoints-r16 OPTIONAL -- Need ON
+ ]],
+ [[
+ gnss-Integrity-ServiceParameters-r17
+ GNSS-Integrity-ServiceParameters-r17 OPTIONAL, -- Need ON
+ gnss-Integrity-ServiceAlert-r17
+ GNSS-Integrity-ServiceAlert-r17 OPTIONAL -- Need OR
+ ]]
+}
+
+
+GNSS-GenericAssistData ::= SEQUENCE (SIZE (1..16)) OF GNSS-GenericAssistDataElement
+
+GNSS-GenericAssistDataElement ::= SEQUENCE {
+ gnss-ID GNSS-ID,
+ sbas-ID SBAS-ID OPTIONAL, -- Cond GNSS-ID-SBAS
+ gnss-TimeModels GNSS-TimeModelList OPTIONAL, -- Need ON
+ gnss-DifferentialCorrections GNSS-DifferentialCorrections OPTIONAL, -- Need ON
+ gnss-NavigationModel GNSS-NavigationModel OPTIONAL, -- Need ON
+ gnss-RealTimeIntegrity GNSS-RealTimeIntegrity OPTIONAL, -- Need ON
+ gnss-DataBitAssistance GNSS-DataBitAssistance OPTIONAL, -- Need ON
+ gnss-AcquisitionAssistance GNSS-AcquisitionAssistance OPTIONAL, -- Need ON
+ gnss-Almanac GNSS-Almanac OPTIONAL, -- Need ON
+ gnss-UTC-Model GNSS-UTC-Model OPTIONAL, -- Need ON
+ gnss-AuxiliaryInformation GNSS-AuxiliaryInformation OPTIONAL, -- Need ON
+ ...,
+ [[
+ bds-DifferentialCorrections-r12
+ BDS-DifferentialCorrections-r12 OPTIONAL, -- Cond GNSS-ID-BDS
+ bds-GridModel-r12 BDS-GridModelParameter-r12 OPTIONAL -- Cond GNSS-ID-BDS
+ ]],
+ [[
+ gnss-RTK-Observations-r15 GNSS-RTK-Observations-r15 OPTIONAL, -- Need ON
+ glo-RTK-BiasInformation-r15 GLO-RTK-BiasInformation-r15 OPTIONAL, -- Cond GNSS-ID-GLO
+ gnss-RTK-MAC-CorrectionDifferences-r15
+ GNSS-RTK-MAC-CorrectionDifferences-r15
+ OPTIONAL, -- Need ON
+ gnss-RTK-Residuals-r15 GNSS-RTK-Residuals-r15 OPTIONAL, -- Need ON
+ gnss-RTK-FKP-Gradients-r15 GNSS-RTK-FKP-Gradients-r15 OPTIONAL, -- Need ON
+ gnss-SSR-OrbitCorrections-r15
+ GNSS-SSR-OrbitCorrections-r15 OPTIONAL, -- Need ON
+ gnss-SSR-ClockCorrections-r15
+ GNSS-SSR-ClockCorrections-r15 OPTIONAL, -- Need ON
+ gnss-SSR-CodeBias-r15 GNSS-SSR-CodeBias-r15 OPTIONAL -- Need ON
+ ]],
+ [[
+ gnss-SSR-URA-r16 GNSS-SSR-URA-r16 OPTIONAL, -- Need ON
+ gnss-SSR-PhaseBias-r16 GNSS-SSR-PhaseBias-r16 OPTIONAL, -- Need ON
+ gnss-SSR-STEC-Correction-r16 GNSS-SSR-STEC-Correction-r16
+ OPTIONAL, -- Need ON
+ gnss-SSR-GriddedCorrection-r16 GNSS-SSR-GriddedCorrection-r16
+ OPTIONAL, -- Need ON
+ navic-DifferentialCorrections-r16 NavIC-DifferentialCorrections-r16
+ OPTIONAL, -- Cond GNSS-ID-NavIC
+ navic-GridModel-r16 NavIC-GridModelParameter-r16
+ OPTIONAL -- Cond GNSS-ID-NavIC
+ ]]
+}
+
+
+GNSS-PeriodicAssistData-r15 ::= SEQUENCE {
+ gnss-RTK-PeriodicObservations-r15 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Need ON
+ glo-RTK-PeriodicBiasInformation-r15 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Need ON
+ gnss-RTK-MAC-PeriodicCorrectionDifferences-r15
+ GNSS-PeriodicControlParam-r15 OPTIONAL, -- Need ON
+ gnss-RTK-PeriodicResiduals-r15 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Need ON
+ gnss-RTK-FKP-PeriodicGradients-r15 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Need ON
+ gnss-SSR-PeriodicOrbitCorrections-r15
+ GNSS-PeriodicControlParam-r15 OPTIONAL, -- Need ON
+ gnss-SSR-PeriodicClockCorrections-r15
+ GNSS-PeriodicControlParam-r15 OPTIONAL, -- Need ON
+ gnss-SSR-PeriodicCodeBias-r15 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Need ON
+ ...,
+ [[
+ gnss-SSR-PeriodicURA-r16 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Need ON
+ gnss-SSR-PeriodicPhaseBias-r16 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Need ON
+ gnss-SSR-PeriodicSTEC-Correction-r16 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Need ON
+ gnss-SSR-PeriodicGriddedCorrection-r16 GNSS-PeriodicControlParam-r15 OPTIONAL -- Need ON
+ ]],
+ [[
+ gnss-Integrity-PeriodicServiceAlert-r17 GNSS-PeriodicControlParam-r15 OPTIONAL -- Need ON
+ ]]
+}
+
+
+GNSS-ReferenceTime ::= SEQUENCE {
+ gnss-SystemTime GNSS-SystemTime,
+ referenceTimeUnc INTEGER (0..127) OPTIONAL, -- Cond noFTA
+ gnss-ReferenceTimeForCells SEQUENCE (SIZE (1..16)) OF
+ GNSS-ReferenceTimeForOneCell OPTIONAL, -- Need ON
+ ...
+}
+
+GNSS-ReferenceTimeForOneCell ::= SEQUENCE {
+ networkTime NetworkTime,
+ referenceTimeUnc INTEGER (0..127),
+ bsAlign ENUMERATED {true} OPTIONAL,
+ ...
+}
+
+
+GNSS-SystemTime ::= SEQUENCE {
+ gnss-TimeID GNSS-ID,
+ gnss-DayNumber INTEGER (0..32767),
+ gnss-TimeOfDay INTEGER (0..86399),
+ gnss-TimeOfDayFrac-msec INTEGER (0..999) OPTIONAL, -- Need ON
+ notificationOfLeapSecond BIT STRING (SIZE(2)) OPTIONAL, -- Cond gnss-TimeID-glonass
+ gps-TOW-Assist GPS-TOW-Assist OPTIONAL, -- Cond gnss-TimeID-gps
+ ...
+}
+
+
+GPS-TOW-Assist ::= SEQUENCE (SIZE(1..64)) OF GPS-TOW-AssistElement
+
+GPS-TOW-AssistElement ::= SEQUENCE {
+ satelliteID INTEGER (1..64),
+ tlmWord INTEGER (0..16383),
+ antiSpoof INTEGER (0..1),
+ alert INTEGER (0..1),
+ tlmRsvdBits INTEGER (0..3),
+ ...
+}
+
+
+NetworkTime ::= SEQUENCE {
+ secondsFromFrameStructureStart INTEGER(0..12533),
+ fractionalSecondsFromFrameStructureStart INTEGER(0..3999999),
+ frameDrift INTEGER (-64..63) OPTIONAL, -- Cond GNSSsynch
+ cellID CHOICE {
+ eUTRA SEQUENCE {
+ physCellId INTEGER (0..503),
+ cellGlobalIdEUTRA CellGlobalIdEUTRA-AndUTRA OPTIONAL, -- Need ON
+ earfcn ARFCN-ValueEUTRA,
+ ...,
+ [[ earfcn-v9a0 ARFCN-ValueEUTRA-v9a0 OPTIONAL -- Cond EARFCN-max
+ ]]
+ },
+ uTRA SEQUENCE {
+ mode CHOICE {
+ fdd SEQUENCE {
+ primary-CPICH-Info INTEGER (0..511),
+ ...
+ },
+ tdd SEQUENCE {
+ cellParameters INTEGER (0..127),
+ ...
+ }
+ },
+ cellGlobalIdUTRA CellGlobalIdEUTRA-AndUTRA OPTIONAL, -- Need ON
+ uarfcn ARFCN-ValueUTRA,
+ ...
+ },
+ gSM SEQUENCE {
+ bcchCarrier INTEGER (0..1023),
+ bsic INTEGER (0..63),
+ cellGlobalIdGERAN CellGlobalIdGERAN OPTIONAL, -- Need ON
+ ...
+ },
+ ...,
+ nBIoT-r14 SEQUENCE {
+ nbPhysCellId-r14 INTEGER (0..503),
+ nbCellGlobalId-r14 ECGI OPTIONAL, -- Need ON
+ nbCarrierFreq-r14 CarrierFreq-NB-r14,
+ ...
+ },
+ nr-r15 SEQUENCE {
+ nrPhysCellId-r15 INTEGER (0..1007),
+ nrCellGlobalID-r15 NCGI-r15 OPTIONAL, -- Need ON
+ nrARFCN-r15 ARFCN-ValueNR-r15,
+ ...
+ }
+ },
+ ...
+}
+
+
+GNSS-ReferenceLocation ::= SEQUENCE {
+ threeDlocation EllipsoidPointWithAltitudeAndUncertaintyEllipsoid,
+ ...
+}
+
+
+GNSS-IonosphericModel ::= SEQUENCE {
+ klobucharModel KlobucharModelParameter OPTIONAL, -- Need ON
+ neQuickModel NeQuickModelParameter OPTIONAL, -- Need ON
+ ...,
+ [[ klobucharModel2-r16 KlobucharModel2Parameter-r16 OPTIONAL -- Need ON
+ ]]
+
+}
+
+
+KlobucharModelParameter ::= SEQUENCE {
+ dataID BIT STRING (SIZE (2)),
+ alfa0 INTEGER (-128..127),
+ alfa1 INTEGER (-128..127),
+ alfa2 INTEGER (-128..127),
+ alfa3 INTEGER (-128..127),
+ beta0 INTEGER (-128..127),
+ beta1 INTEGER (-128..127),
+ beta2 INTEGER (-128..127),
+ beta3 INTEGER (-128..127),
+ ...
+}
+
+
+KlobucharModel2Parameter-r16 ::= SEQUENCE {
+ alfa1-r16 INTEGER (0..1023),
+ alfa2-r16 INTEGER (-128..127),
+ alfa3-r16 INTEGER (0..255),
+ alfa4-r16 INTEGER (0..255),
+ alfa5-r16 INTEGER (0..255),
+ alfa6-r16 INTEGER (-128..127),
+ alfa7-r16 INTEGER (-128..127),
+ alfa8-r16 INTEGER (-128..127),
+ alfa9-r16 INTEGER (-128..127),
+ ...
+}
+
+
+NeQuickModelParameter ::= SEQUENCE {
+ ai0 INTEGER (0..2047),
+ ai1 INTEGER (-1024..1023),
+ ai2 INTEGER (-8192..8191),
+ ionoStormFlag1 INTEGER (0..1) OPTIONAL, -- Need OP
+ ionoStormFlag2 INTEGER (0..1) OPTIONAL, -- Need OP
+ ionoStormFlag3 INTEGER (0..1) OPTIONAL, -- Need OP
+ ionoStormFlag4 INTEGER (0..1) OPTIONAL, -- Need OP
+ ionoStormFlag5 INTEGER (0..1) OPTIONAL, -- Need OP
+ ...
+}
+
+
+GNSS-EarthOrientationParameters ::= SEQUENCE {
+ teop INTEGER (0..65535),
+ pmX INTEGER (-1048576..1048575),
+ pmXdot INTEGER (-16384..16383),
+ pmY INTEGER (-1048576..1048575),
+ pmYdot INTEGER (-16384..16383),
+ deltaUT1 INTEGER (-1073741824..1073741823),
+ deltaUT1dot INTEGER (-262144..262143),
+ ...
+}
+
+
+GNSS-RTK-ReferenceStationInfo-r15 ::= SEQUENCE {
+ referenceStationID-r15 GNSS-ReferenceStationID-r15,
+ referenceStationIndicator-r15 ENUMERATED {physical, non-physical},
+ antenna-reference-point-ECEF-X-r15 INTEGER (-137438953472..137438953471),
+ antenna-reference-point-ECEF-Y-r15 INTEGER (-137438953472..137438953471),
+ antenna-reference-point-ECEF-Z-r15 INTEGER (-137438953472..137438953471),
+ antennaHeight-r15 INTEGER (0..65535) OPTIONAL, -- Need ON
+ antennaDescription-r15 AntennaDescription-r15 OPTIONAL, -- Need ON
+ antenna-reference-point-unc-r15 AntennaReferencePointUnc-r15 OPTIONAL, -- Need ON
+ physical-reference-station-info-r15 PhysicalReferenceStationInfo-r15 OPTIONAL, -- Cond NP
+ ...,
+ [[
+ equalIntegerAmbiguityLevel-r16 EqualIntegerAmbiguityLevel-r16 OPTIONAL -- Need ON
+ ]]
+}
+
+AntennaDescription-r15 ::= SEQUENCE {
+ antennaDescriptor-r15 VisibleString (SIZE (1..256)),
+ antennaSetUpID-r15 ENUMERATED { non-zero } OPTIONAL, -- Need OP
+ ...
+}
+
+AntennaReferencePointUnc-r15 ::= SEQUENCE {
+ uncertainty-X-r15 INTEGER (0..255),
+ confidence-X-r15 INTEGER (0..100),
+ uncertainty-Y-r15 INTEGER (0..255),
+ confidence-Y-r15 INTEGER (0..100),
+ uncertainty-Z-r15 INTEGER (0..255),
+ confidence-Z-r15 INTEGER (0..100),
+ ...
+}
+
+PhysicalReferenceStationInfo-r15 ::= SEQUENCE {
+ physicalReferenceStationID-r15 GNSS-ReferenceStationID-r15,
+ physical-ARP-ECEF-X-r15 INTEGER (-137438953472..137438953471),
+ physical-ARP-ECEF-Y-r15 INTEGER (-137438953472..137438953471),
+ physical-ARP-ECEF-Z-r15 INTEGER (-137438953472..137438953471),
+ physical-ARP-unc-r15 AntennaReferencePointUnc-r15 OPTIONAL, -- Need ON
+ ...
+}
+
+EqualIntegerAmbiguityLevel-r16 ::= CHOICE {
+ allReferenceStations-r16 NULL,
+ referenceStationList-r16 ReferenceStationList-r16
+}
+
+ReferenceStationList-r16 ::= SEQUENCE (SIZE(1..16)) OF GNSS-ReferenceStationID-r15
+
+
+GNSS-RTK-CommonObservationInfo-r15 ::= SEQUENCE {
+ referenceStationID-r15 GNSS-ReferenceStationID-r15,
+ clockSteeringIndicator-r15 INTEGER (0..3),
+ externalClockIndicator-r15 INTEGER (0..3),
+ smoothingIndicator-r15 BIT STRING (SIZE(1)),
+ smoothingInterval-r15 BIT STRING (SIZE(3)),
+ ...
+}
+
+
+GNSS-RTK-AuxiliaryStationData-r15 ::= SEQUENCE {
+ networkID-r15 GNSS-NetworkID-r15,
+ subNetworkID-r15 GNSS-SubNetworkID-r15 OPTIONAL, -- Need ON
+ master-referenceStationID-r15 GNSS-ReferenceStationID-r15,
+ auxiliaryStationList-r15 AuxiliaryStationList-r15,
+ ...
+}
+
+AuxiliaryStationList-r15 ::= SEQUENCE (SIZE (1..32)) OF AuxiliaryStationElement-r15
+
+AuxiliaryStationElement-r15 ::= SEQUENCE {
+ aux-referenceStationID-r15 GNSS-ReferenceStationID-r15,
+ aux-master-delta-latitude-r15 INTEGER (-524288..524287),
+ aux-master-delta-longitude-r15 INTEGER (-1048576..1048575),
+ aux-master-delta-height-r15 INTEGER (-4194304..4194303),
+ aux-ARP-unc-r15 Aux-ARP-Unc-r15 OPTIONAL, -- Need ON
+ ...
+}
+
+Aux-ARP-Unc-r15 ::= SEQUENCE {
+ horizontalUncertainty-r15 INTEGER (0..255),
+ horizontalConfidence-r15 INTEGER (0..100),
+ verticalUncertainty-r15 INTEGER (0..255) OPTIONAL, -- Need ON
+ verticalConfidence-r15 INTEGER (0..100) OPTIONAL, -- Need ON
+ ...
+}
+
+
+GNSS-SSR-CorrectionPoints-r16 ::= SEQUENCE {
+ correctionPointSetID-r16 INTEGER (0..16383),
+ correctionPoints-r16 CHOICE {
+ listOfCorrectionPoints-r16 GNSS-SSR-ListOfCorrectionPoints-r16,
+ arrayOfCorrectionPoints-r16 GNSS-SSR-ArrayOfCorrectionPoints-r16
+ },
+ ...
+}
+
+GNSS-SSR-ListOfCorrectionPoints-r16 ::= SEQUENCE {
+ referencePointLatitude-r16 INTEGER (-16384..16383),
+ referencePointLongitude-r16 INTEGER (-32768..32767),
+ relativeLocationsList-r16 SEQUENCE (SIZE (0..63)) OF RelativeLocationElement-r16,
+ ...
+}
+
+RelativeLocationElement-r16 ::= SEQUENCE {
+ deltaLatitude-r16 INTEGER (-512..511),
+ deltaLongitude-r16 INTEGER (-1024..1023),
+ ...
+}
+
+GNSS-SSR-ArrayOfCorrectionPoints-r16 ::=SEQUENCE {
+ referencePointLatitude-r16 INTEGER (-16384..16383),
+ referencePointLongitude-r16 INTEGER (-32768..32767),
+ numberOfStepsLatitude-r16 INTEGER (0..63),
+ numberOfStepsLongitude-r16 INTEGER (0..63),
+ stepOfLatitude-r16 INTEGER (1..511),
+ stepOfLongitude-r16 INTEGER (1..1023),
+ bitmaskOfGrids-r16 BIT STRING (SIZE(64)) OPTIONAL, -- Need OP
+ ...
+}
+
+
+GNSS-Integrity-ServiceParameters-r17 ::= SEQUENCE {
+ irMinimum-r17 INTEGER (0..255),
+ irMaximum-r17 INTEGER (0..255),
+ ...
+}
+
+
+GNSS-Integrity-ServiceAlert-r17 ::= SEQUENCE {
+ ionosphereDoNotUse-r17 BOOLEAN,
+ troposphereDoNotUse-r17 BOOLEAN,
+ ...
+}
+
+
+GNSS-TimeModelList ::= SEQUENCE (SIZE (1..15)) OF GNSS-TimeModelElement
+
+GNSS-TimeModelElement ::= SEQUENCE {
+ gnss-TimeModelRefTime INTEGER (0..65535),
+ tA0 INTEGER (-67108864..67108863),
+ tA1 INTEGER (-4096..4095) OPTIONAL, -- Need ON
+ tA2 INTEGER (-64..63) OPTIONAL, -- Need ON
+ gnss-TO-ID INTEGER (1..15),
+ weekNumber INTEGER (0..8191) OPTIONAL, -- Need ON
+ deltaT INTEGER (-128..127) OPTIONAL, -- Need ON
+ ...
+}
+
+
+GNSS-DifferentialCorrections ::= SEQUENCE {
+ dgnss-RefTime INTEGER (0..3599),
+ dgnss-SgnTypeList DGNSS-SgnTypeList,
+ ...
+}
+
+DGNSS-SgnTypeList ::= SEQUENCE (SIZE (1..3)) OF DGNSS-SgnTypeElement
+
+DGNSS-SgnTypeElement ::= SEQUENCE {
+ gnss-SignalID GNSS-SignalID,
+ gnss-StatusHealth INTEGER (0..7),
+ dgnss-SatList DGNSS-SatList,
+ ...
+}
+
+DGNSS-SatList ::= SEQUENCE (SIZE (1..64)) OF DGNSS-CorrectionsElement
+
+DGNSS-CorrectionsElement ::= SEQUENCE {
+ svID SV-ID,
+ iod BIT STRING (SIZE(11)),
+ udre INTEGER (0..3),
+ pseudoRangeCor INTEGER (-2047..2047),
+ rangeRateCor INTEGER (-127..127),
+ udreGrowthRate INTEGER (0..7) OPTIONAL, -- Need ON
+ udreValidityTime INTEGER (0..7) OPTIONAL, -- Need ON
+ ...
+}
+
+
+GNSS-NavigationModel ::= SEQUENCE {
+ nonBroadcastIndFlag INTEGER (0..1),
+ gnss-SatelliteList GNSS-NavModelSatelliteList,
+ ...
+}
+
+GNSS-NavModelSatelliteList ::= SEQUENCE (SIZE(1..64)) OF GNSS-NavModelSatelliteElement
+
+GNSS-NavModelSatelliteElement ::= SEQUENCE {
+ svID SV-ID,
+ svHealth BIT STRING (SIZE(8)),
+ iod BIT STRING (SIZE(11)),
+ gnss-ClockModel GNSS-ClockModel,
+ gnss-OrbitModel GNSS-OrbitModel,
+ ...,
+ [[ svHealthExt-v1240 BIT STRING (SIZE(4)) OPTIONAL -- Need ON
+ ]]
+}
+
+GNSS-ClockModel ::= CHOICE {
+ standardClockModelList StandardClockModelList, -- Model-1
+ nav-ClockModel NAV-ClockModel, -- Model-2
+ cnav-ClockModel CNAV-ClockModel, -- Model-3
+ glonass-ClockModel GLONASS-ClockModel, -- Model-4
+ sbas-ClockModel SBAS-ClockModel, -- Model-5
+ ...,
+ bds-ClockModel-r12 BDS-ClockModel-r12, -- Model-6
+ bds-ClockModel2-r16 BDS-ClockModel2-r16, -- Model-7
+ navic-ClockModel-r16 NavIC-ClockModel-r16 -- Model-8
+}
+
+GNSS-OrbitModel ::= CHOICE {
+ keplerianSet NavModelKeplerianSet, -- Model-1
+ nav-KeplerianSet NavModelNAV-KeplerianSet, -- Model-2
+ cnav-KeplerianSet NavModelCNAV-KeplerianSet, -- Model-3
+ glonass-ECEF NavModel-GLONASS-ECEF, -- Model-4
+ sbas-ECEF NavModel-SBAS-ECEF, -- Model-5
+ ...,
+ bds-KeplerianSet-r12 NavModel-BDS-KeplerianSet-r12, -- Model-6
+ bds-KeplerianSet2-r16 NavModel-BDS-KeplerianSet2-r16, -- Model-7
+ navic-KeplerianSet-r16 NavModel-NavIC-KeplerianSet-r16 -- Model-8
+}
+
+
+StandardClockModelList ::= SEQUENCE (SIZE(1..2)) OF StandardClockModelElement
+
+StandardClockModelElement ::= SEQUENCE {
+ stanClockToc INTEGER (0..16383),
+ stanClockAF2 INTEGER (-32..31),
+ stanClockAF1 INTEGER (-1048576..1048575),
+ stanClockAF0 INTEGER (-1073741824..1073741823),
+ stanClockTgd INTEGER (-512..511) OPTIONAL, -- Need ON
+ sisa INTEGER (0..255),
+ stanModelID INTEGER (0..1) OPTIONAL, -- Need ON
+ ...
+}
+
+
+NAV-ClockModel ::= SEQUENCE {
+ navToc INTEGER (0..37799),
+ navaf2 INTEGER (-128..127),
+ navaf1 INTEGER (-32768..32767),
+ navaf0 INTEGER (-2097152..2097151),
+ navTgd INTEGER (-128..127),
+ ...
+}
+
+
+CNAV-ClockModel ::= SEQUENCE {
+ cnavToc INTEGER (0..2015),
+ cnavTop INTEGER (0..2015),
+ cnavURA0 INTEGER (-16..15),
+ cnavURA1 INTEGER (0..7),
+ cnavURA2 INTEGER (0..7),
+ cnavAf2 INTEGER (-512..511),
+ cnavAf1 INTEGER (-524288..524287),
+ cnavAf0 INTEGER (-33554432..33554431),
+ cnavTgd INTEGER (-4096..4095),
+ cnavISCl1cp INTEGER (-4096..4095) OPTIONAL, -- Need ON
+ cnavISCl1cd INTEGER (-4096..4095) OPTIONAL, -- Need ON
+ cnavISCl1ca INTEGER (-4096..4095) OPTIONAL, -- Need ON
+ cnavISCl2c INTEGER (-4096..4095) OPTIONAL, -- Need ON
+ cnavISCl5i5 INTEGER (-4096..4095) OPTIONAL, -- Need ON
+ cnavISCl5q5 INTEGER (-4096..4095) OPTIONAL, -- Need ON
+ ...
+}
+
+
+GLONASS-ClockModel ::= SEQUENCE {
+ gloTau INTEGER (-2097152..2097151),
+ gloGamma INTEGER (-1024..1023),
+ gloDeltaTau INTEGER (-16..15) OPTIONAL, -- Need ON
+ ...
+}
+
+
+SBAS-ClockModel ::= SEQUENCE {
+ sbasTo INTEGER (0..5399),
+ sbasAgfo INTEGER (-2048..2047),
+ sbasAgf1 INTEGER (-128..127),
+ ...
+}
+
+
+BDS-ClockModel-r12 ::= SEQUENCE {
+ bdsAODC-r12 INTEGER (0..31),
+ bdsToc-r12 INTEGER (0..131071),
+ bdsA0-r12 INTEGER (-8388608..8388607),
+ bdsA1-r12 INTEGER (-2097152..2097151),
+ bdsA2-r12 INTEGER (-1024..1023),
+ bdsTgd1-r12 INTEGER (-512..511),
+ ...,
+ [[ bdsTgd2-r16 INTEGER (-512..511) OPTIONAL -- Need ON
+ ]]
+}
+
+
+BDS-ClockModel2-r16 ::= SEQUENCE {
+ bdsToc-r16 INTEGER (0..2047),
+ bdsA0-r16 INTEGER (-16777216..16777215),
+ bdsA1-r16 INTEGER (-2097152..2097151),
+ bdsA2-r16 INTEGER (-1024..1023),
+ bdsTgdB1Cp-r16 INTEGER (-2048..2047),
+ bdsIscB1Cd-r16 INTEGER (-2048..2047),
+ ...,
+ [[ bdsTgdB2ap-r17 INTEGER (-2048..2047) OPTIONAL, -- Need ON
+ bdsIscB2ad-r17 INTEGER (-2048..2047) OPTIONAL -- Need ON
+ ]]
+}
+
+
+NavIC-ClockModel-r16 ::= SEQUENCE {
+ navic-Toc-r16 INTEGER (0..65535),
+ navic-af2-r16 INTEGER (-128..127),
+ navic-af1-r16 INTEGER (-32768..32767),
+ navic-af0-r16 INTEGER (-2097152..2097151),
+ navic-Tgd-r16 INTEGER (-128..127),
+ ...
+}
+
+
+NavModelKeplerianSet ::= SEQUENCE {
+ keplerToe INTEGER (0 .. 16383),
+ keplerW INTEGER (-2147483648..2147483647),
+ keplerDeltaN INTEGER (-32768..32767),
+ keplerM0 INTEGER (-2147483648..2147483647),
+ keplerOmegaDot INTEGER (-8388608.. 8388607),
+ keplerE INTEGER (0..4294967295),
+ keplerIDot INTEGER (-8192..8191),
+ keplerAPowerHalf INTEGER (0.. 4294967295),
+ keplerI0 INTEGER (-2147483648..2147483647),
+ keplerOmega0 INTEGER (-2147483648..2147483647),
+ keplerCrs INTEGER (-32768..32767),
+ keplerCis INTEGER (-32768..32767),
+ keplerCus INTEGER (-32768..32767),
+ keplerCrc INTEGER (-32768..32767),
+ keplerCic INTEGER (-32768..32767),
+ keplerCuc INTEGER (-32768..32767),
+ ...
+}
+
+
+NavModelNAV-KeplerianSet ::= SEQUENCE {
+ navURA INTEGER (0..15),
+ navFitFlag INTEGER (0..1),
+ navToe INTEGER (0..37799),
+ navOmega INTEGER (-2147483648..2147483647),
+ navDeltaN INTEGER (-32768..32767),
+ navM0 INTEGER (-2147483648..2147483647),
+ navOmegaADot INTEGER (-8388608..8388607),
+ navE INTEGER (0..4294967295),
+ navIDot INTEGER (-8192..8191),
+ navAPowerHalf INTEGER (0..4294967295),
+ navI0 INTEGER (-2147483648..2147483647),
+ navOmegaA0 INTEGER (-2147483648..2147483647),
+ navCrs INTEGER (-32768..32767),
+ navCis INTEGER (-32768..32767),
+ navCus INTEGER (-32768..32767),
+ navCrc INTEGER (-32768..32767),
+ navCic INTEGER (-32768..32767),
+ navCuc INTEGER (-32768..32767),
+ addNAVparam SEQUENCE {
+ ephemCodeOnL2 INTEGER (0..3),
+ ephemL2Pflag INTEGER (0..1),
+ ephemSF1Rsvd SEQUENCE {
+ reserved1 INTEGER (0..8388607), -- 23-bit field
+ reserved2 INTEGER (0..16777215), -- 24-bit field
+ reserved3 INTEGER (0..16777215), -- 24-bit field
+ reserved4 INTEGER (0..65535) -- 16-bit field
+ },
+ ephemAODA INTEGER (0..31)
+ } OPTIONAL, -- Need ON
+ ...
+}
+
+
+NavModelCNAV-KeplerianSet ::= SEQUENCE {
+ cnavTop INTEGER (0..2015),
+ cnavURAindex INTEGER (-16..15),
+ cnavDeltaA INTEGER (-33554432..33554431),
+ cnavAdot INTEGER (-16777216..16777215),
+ cnavDeltaNo INTEGER (-65536..65535),
+ cnavDeltaNoDot INTEGER (-4194304..4194303),
+ cnavMo INTEGER (-4294967296..4294967295),
+ cnavE INTEGER (0..8589934591),
+ cnavOmega INTEGER (-4294967296..4294967295),
+ cnavOMEGA0 INTEGER (-4294967296..4294967295),
+ cnavDeltaOmegaDot INTEGER (-65536..65535),
+ cnavIo INTEGER (-4294967296..4294967295),
+ cnavIoDot INTEGER (-16384..16383),
+ cnavCis INTEGER (-32768..32767),
+ cnavCic INTEGER (-32768..32767),
+ cnavCrs INTEGER (-8388608..8388607),
+ cnavCrc INTEGER (-8388608..8388607),
+ cnavCus INTEGER (-1048576..1048575),
+ cnavCuc INTEGER (-1048576..1048575),
+ ...
+}
+
+
+NavModel-GLONASS-ECEF ::= SEQUENCE {
+ gloEn INTEGER (0..31),
+ gloP1 BIT STRING (SIZE(2)),
+ gloP2 BOOLEAN,
+ gloM INTEGER (0..3),
+ gloX INTEGER (-67108864..67108863),
+ gloXdot INTEGER (-8388608..8388607),
+ gloXdotdot INTEGER (-16..15),
+ gloY INTEGER (-67108864..67108863),
+ gloYdot INTEGER (-8388608..8388607),
+ gloYdotdot INTEGER (-16..15),
+ gloZ INTEGER (-67108864..67108863),
+ gloZdot INTEGER (-8388608..8388607),
+ gloZdotdot INTEGER (-16..15),
+ ...
+}
+
+
+NavModel-SBAS-ECEF ::= SEQUENCE {
+ sbasTo INTEGER (0..5399) OPTIONAL, -- Cond ClockModel
+ sbasAccuracy BIT STRING (SIZE(4)),
+ sbasXg INTEGER (-536870912..536870911),
+ sbasYg INTEGER (-536870912..536870911),
+ sbasZg INTEGER (-16777216..16777215),
+ sbasXgDot INTEGER (-65536..65535),
+ sbasYgDot INTEGER (-65536..65535),
+ sbasZgDot INTEGER (-131072..131071),
+ sbasXgDotDot INTEGER (-512..511),
+ sbagYgDotDot INTEGER (-512..511),
+ sbasZgDotDot INTEGER (-512..511),
+ ...
+}
+
+
+NavModel-BDS-KeplerianSet-r12 ::= SEQUENCE {
+ bdsAODE-r12 INTEGER (0..31),
+ bdsURAI-r12 INTEGER (0..15),
+ bdsToe-r12 INTEGER (0..131071),
+ bdsAPowerHalf-r12 INTEGER (0..4294967295),
+ bdsE-r12 INTEGER (0..4294967295),
+ bdsW-r12 INTEGER (-2147483648..2147483647),
+ bdsDeltaN-r12 INTEGER (-32768..32767),
+ bdsM0-r12 INTEGER (-2147483648..2147483647),
+ bdsOmega0-r12 INTEGER (-2147483648..2147483647),
+ bdsOmegaDot-r12 INTEGER (-8388608..8388607),
+ bdsI0-r12 INTEGER (-2147483648..2147483647),
+ bdsIDot-r12 INTEGER (-8192..8191),
+ bdsCuc-r12 INTEGER (-131072..131071),
+ bdsCus-r12 INTEGER (-131072..131071),
+ bdsCrc-r12 INTEGER (-131072..131071),
+ bdsCrs-r12 INTEGER (-131072..131071),
+ bdsCic-r12 INTEGER (-131072..131071),
+ bdsCis-r12 INTEGER (-131072..131071),
+ ...
+}
+
+
+NavModel-BDS-KeplerianSet2-r16 ::= SEQUENCE {
+ bdsIODE-r16 INTEGER (0..255),
+ bdsToe-r16 INTEGER (0..2047),
+ bdsDeltaA-r16 INTEGER (-33554432..33554431),
+ bdsAdot-r16 INTEGER (-16777216..16777216),
+ bdsDeltaN0-r16 INTEGER (-65536..65535),
+ bdsDeltaN0dot-r16 INTEGER (-4194304..4194303),
+ bdsM0-r16 INTEGER (-4294967296..4294967295),
+ bdsE-r16 INTEGER (0..8589934591),
+ bdsOmega-r16 INTEGER (-4294967296..4294967295),
+ bdsOmega0-r16 INTEGER (-4294967296..4294967295),
+ bdsI0-r16 INTEGER (-4294967296..4294967295),
+ bdsOmegaDot-r16 INTEGER (-262144..262143),
+ bdsI0Dot-r16 INTEGER (-16384..16383),
+ bdsCuc-r16 INTEGER (-1048576..1048575),
+ bdsCus-r16 INTEGER (-1048576..1048575),
+ bdsCrc-r16 INTEGER (-8388608..8388607),
+ bdsCrs-r16 INTEGER (-8388608..8388607),
+ bdsCic-r16 INTEGER (-32768..32767),
+ bdsCis-r16 INTEGER (-32768..32767),
+ ...
+}
+
+
+NavModel-NavIC-KeplerianSet-r16 ::= SEQUENCE {
+ navic-Toe-r16 INTEGER (0..65536),
+ navic-URAI-r16 INTEGER (0..15),
+ navic-W-r16 INTEGER (-2147483648..2147483647),
+ navic-DeltaN-r16 INTEGER (-2097152..2097151),
+ navic-M0-r16 INTEGER (-2147483648..2147483647),
+ navic-OmegaDot-r16 INTEGER (-2147483648..2147483647),
+ navic-E-r16 INTEGER (0..4294967295),
+ navic-IDot-r16 INTEGER (-8192..8191),
+ navic-APowerHalf-r16 INTEGER (0.. 4294967295),
+ navic-I0-r16 INTEGER (-2147483648..2147483647),
+ navic-Omega0-r16 INTEGER (-2147483648..2147483647),
+ navic-Crs-r16 INTEGER (-32768..32767),
+ navic-Cis-r16 INTEGER (-32768..32767),
+ navic-Cus-r16 INTEGER (-32768..32767),
+ navic-Crc-r16 INTEGER (-32768..32767),
+ navic-Cic-r16 INTEGER (-32768..32767),
+ navic-Cuc-r16 INTEGER (-32768..32767),
+ ...
+}
+
+
+GNSS-RealTimeIntegrity ::= SEQUENCE {
+ gnss-BadSignalList GNSS-BadSignalList,
+ ...
+}
+
+GNSS-BadSignalList ::= SEQUENCE (SIZE(1..64)) OF BadSignalElement
+
+BadSignalElement ::= SEQUENCE {
+ badSVID SV-ID,
+ badSignalID GNSS-SignalIDs OPTIONAL, -- Need OP
+ ...
+}
+
+
+GNSS-DataBitAssistance ::= SEQUENCE {
+ gnss-TOD INTEGER (0..3599),
+ gnss-TODfrac INTEGER (0..999) OPTIONAL, -- Need ON
+ gnss-DataBitsSatList GNSS-DataBitsSatList,
+ ...
+}
+
+GNSS-DataBitsSatList ::= SEQUENCE (SIZE(1..64))OF GNSS-DataBitsSatElement
+
+GNSS-DataBitsSatElement ::= SEQUENCE {
+ svID SV-ID,
+ gnss-DataBitsSgnList GNSS-DataBitsSgnList,
+ ...
+}
+
+GNSS-DataBitsSgnList ::= SEQUENCE (SIZE(1..8)) OF GNSS-DataBitsSgnElement
+
+GNSS-DataBitsSgnElement ::= SEQUENCE {
+ gnss-SignalType GNSS-SignalID,
+ gnss-DataBits BIT STRING (SIZE (1..1024)),
+ ...
+}
+
+
+GNSS-AcquisitionAssistance ::= SEQUENCE {
+ gnss-SignalID GNSS-SignalID,
+ gnss-AcquisitionAssistList GNSS-AcquisitionAssistList,
+ ...,
+ confidence-r10 INTEGER (0..100) OPTIONAL -- Need ON
+}
+
+GNSS-AcquisitionAssistList ::= SEQUENCE (SIZE(1..64)) OF GNSS-AcquisitionAssistElement
+
+GNSS-AcquisitionAssistElement ::= SEQUENCE {
+ svID SV-ID,
+ doppler0 INTEGER (-2048..2047),
+ doppler1 INTEGER (0..63),
+ dopplerUncertainty INTEGER (0..4),
+ codePhase INTEGER (0..1022),
+ intCodePhase INTEGER (0..127),
+ codePhaseSearchWindow INTEGER (0..31),
+ azimuth INTEGER (0..511),
+ elevation INTEGER (0..127),
+ ...,
+ codePhase1023 BOOLEAN OPTIONAL, -- Need OP
+ dopplerUncertaintyExt-r10 ENUMERATED { d60,
+ d80,
+ d100,
+ d120,
+ noInformation, ... } OPTIONAL -- Need ON
+}
+
+
+GNSS-Almanac ::= SEQUENCE {
+ weekNumber INTEGER (0..255) OPTIONAL, -- Need ON
+ toa INTEGER (0..255) OPTIONAL, -- Need ON
+ ioda INTEGER (0..3) OPTIONAL, -- Need ON
+ completeAlmanacProvided BOOLEAN,
+ gnss-AlmanacList GNSS-AlmanacList,
+ ...,
+ [[ toa-ext-v1240 INTEGER (256..1023) OPTIONAL, -- Need ON
+ ioda-ext-v1240 INTEGER (4..15) OPTIONAL -- Need ON
+ ]],
+ [[
+ weekNumber-ext-r16 INTEGER (256..8191) OPTIONAL, -- Need ON
+ toa-ext2-r16 INTEGER (256..65535) OPTIONAL -- Need ON
+ ]]
+}
+
+GNSS-AlmanacList ::= SEQUENCE (SIZE(1..64)) OF GNSS-AlmanacElement
+
+GNSS-AlmanacElement ::= CHOICE {
+ keplerianAlmanacSet AlmanacKeplerianSet, -- Model-1
+ keplerianNAV-Almanac AlmanacNAV-KeplerianSet, -- Model-2
+ keplerianReducedAlmanac AlmanacReducedKeplerianSet, -- Model-3
+ keplerianMidiAlmanac AlmanacMidiAlmanacSet, -- Model-4
+ keplerianGLONASS AlmanacGLONASS-AlmanacSet, -- Model-5
+ ecef-SBAS-Almanac AlmanacECEF-SBAS-AlmanacSet,-- Model-6
+ ...,
+ keplerianBDS-Almanac-r12 AlmanacBDS-AlmanacSet-r12, -- Model-7
+ keplerianNavIC-Almanac-r16 AlmanacNavIC-AlmanacSet-r16 -- Model-8
+}
+
+
+AlmanacKeplerianSet ::= SEQUENCE {
+ svID SV-ID,
+ kepAlmanacE INTEGER (0..2047),
+ kepAlmanacDeltaI INTEGER (-1024..1023),
+ kepAlmanacOmegaDot INTEGER (-1024..1023),
+ kepSV-StatusINAV BIT STRING (SIZE (4)),
+ kepSV-StatusFNAV BIT STRING (SIZE (2)) OPTIONAL, -- Need ON
+ kepAlmanacAPowerHalf INTEGER (-4096..4095),
+ kepAlmanacOmega0 INTEGER (-32768..32767),
+ kepAlmanacW INTEGER (-32768..32767),
+ kepAlmanacM0 INTEGER (-32768..32767),
+ kepAlmanacAF0 INTEGER (-32768..32767),
+ kepAlmanacAF1 INTEGER (-4096..4095),
+ ...
+}
+
+
+AlmanacNAV-KeplerianSet ::= SEQUENCE {
+ svID SV-ID,
+ navAlmE INTEGER (0..65535),
+ navAlmDeltaI INTEGER (-32768..32767),
+ navAlmOMEGADOT INTEGER (-32768..32767),
+ navAlmSVHealth INTEGER (0..255),
+ navAlmSqrtA INTEGER (0..16777215),
+ navAlmOMEGAo INTEGER (-8388608..8388607),
+ navAlmOmega INTEGER (-8388608..8388607),
+ navAlmMo INTEGER (-8388608..8388607),
+ navAlmaf0 INTEGER (-1024..1023),
+ navAlmaf1 INTEGER (-1024..1023),
+ ...
+}
+
+
+AlmanacReducedKeplerianSet ::= SEQUENCE {
+ svID SV-ID,
+ redAlmDeltaA INTEGER (-128..127),
+ redAlmOmega0 INTEGER (-64..63),
+ redAlmPhi0 INTEGER (-64..63),
+ redAlmL1Health BOOLEAN,
+ redAlmL2Health BOOLEAN,
+ redAlmL5Health BOOLEAN,
+ ...
+}
+
+
+AlmanacMidiAlmanacSet ::= SEQUENCE {
+ svID SV-ID,
+ midiAlmE INTEGER (0..2047),
+ midiAlmDeltaI INTEGER (-1024..1023),
+ midiAlmOmegaDot INTEGER (-1024..1023),
+ midiAlmSqrtA INTEGER (0..131071),
+ midiAlmOmega0 INTEGER (-32768..32767),
+ midiAlmOmega INTEGER (-32768..32767),
+ midiAlmMo INTEGER (-32768..32767),
+ midiAlmaf0 INTEGER (-1024..1023),
+ midiAlmaf1 INTEGER (-512..511),
+ midiAlmL1Health BOOLEAN,
+ midiAlmL2Health BOOLEAN,
+ midiAlmL5Health BOOLEAN,
+ ...
+}
+
+
+AlmanacGLONASS-AlmanacSet ::= SEQUENCE {
+ gloAlm-NA INTEGER (1..1461),
+ gloAlmnA INTEGER (1..24),
+ gloAlmHA INTEGER (0..31),
+ gloAlmLambdaA INTEGER (-1048576..1048575),
+ gloAlmtlambdaA INTEGER (0..2097151),
+ gloAlmDeltaIa INTEGER (-131072..131071),
+ gloAlmDeltaTA INTEGER (-2097152..2097151),
+ gloAlmDeltaTdotA INTEGER (-64..63),
+ gloAlmEpsilonA INTEGER (0..32767),
+ gloAlmOmegaA INTEGER (-32768..32767),
+ gloAlmTauA INTEGER (-512..511),
+ gloAlmCA INTEGER (0..1),
+ gloAlmMA BIT STRING (SIZE(2)) OPTIONAL, -- Need ON
+ ...
+}
+
+
+AlmanacECEF-SBAS-AlmanacSet ::= SEQUENCE {
+ sbasAlmDataID INTEGER (0..3),
+ svID SV-ID,
+ sbasAlmHealth BIT STRING (SIZE(8)),
+ sbasAlmXg INTEGER (-16384..16383),
+ sbasAlmYg INTEGER (-16384..16383),
+ sbasAlmZg INTEGER (-256..255),
+ sbasAlmXgdot INTEGER (-4..3),
+ sbasAlmYgDot INTEGER (-4..3),
+ sbasAlmZgDot INTEGER (-8..7),
+ sbasAlmTo INTEGER (0..2047),
+ ...
+}
+
+
+AlmanacBDS-AlmanacSet-r12 ::= SEQUENCE {
+ svID SV-ID,
+ bdsAlmToa-r12 INTEGER (0..255) OPTIONAL, -- Cond NotSameForAllSV
+ bdsAlmSqrtA-r12 INTEGER (0..16777215),
+ bdsAlmE-r12 INTEGER (0..131071),
+ bdsAlmW-r12 INTEGER (-8388608..8388607),
+ bdsAlmM0-r12 INTEGER (-8388608..8388607),
+ bdsAlmOmega0-r12 INTEGER (-8388608..8388607),
+ bdsAlmOmegaDot-r12 INTEGER (-65536..65535),
+ bdsAlmDeltaI-r12 INTEGER (-32768..32767),
+ bdsAlmA0-r12 INTEGER (-1024..1023),
+ bdsAlmA1-r12 INTEGER (-1024..1023),
+ bdsSvHealth-r12 BIT STRING (SIZE(9)) OPTIONAL, -- Cond SV-ID
+ ...
+}
+
+
+AlmanacNavIC-AlmanacSet-r16 ::= SEQUENCE {
+ svID-r16 SV-ID,
+ navic-AlmToa-r16 INTEGER (0..65535) OPTIONAL, -- Cond NotSameForAllSV
+ navic-AlmE-r16 INTEGER (0..65535),
+ navic-AlmOMEGADOT-r16 INTEGER (-32768..32767),
+ navic-AlmSqrtA-r16 INTEGER (0..16777215),
+ navic-AlmOMEGAo-r16 INTEGER (-8388608..8388607),
+ navic-AlmOmega-r16 INTEGER (-8388608..8388607),
+ navic-AlmMo-r16 INTEGER (-8388608..8388607),
+ navic-Almaf0-r16 INTEGER (-1024..1023),
+ navic-Almaf1-r16 INTEGER (-1024..1023),
+ ...
+}
+
+
+GNSS-UTC-Model ::= CHOICE {
+ utcModel1 UTC-ModelSet1, -- Model-1
+ utcModel2 UTC-ModelSet2, -- Model-2
+ utcModel3 UTC-ModelSet3, -- Model-3
+ utcModel4 UTC-ModelSet4, -- Model-4
+ ...,
+ utcModel5-r12 UTC-ModelSet5-r12 -- Model-5
+}
+
+
+UTC-ModelSet1 ::= SEQUENCE {
+ gnss-Utc-A1 INTEGER (-8388608..8388607),
+ gnss-Utc-A0 INTEGER (-2147483648..2147483647),
+ gnss-Utc-Tot INTEGER (0..255),
+ gnss-Utc-WNt INTEGER (0..255),
+ gnss-Utc-DeltaTls INTEGER (-128..127),
+ gnss-Utc-WNlsf INTEGER (0..255),
+ gnss-Utc-DN INTEGER (-128..127),
+ gnss-Utc-DeltaTlsf INTEGER (-128..127),
+ ...
+}
+
+
+UTC-ModelSet2 ::= SEQUENCE {
+ utcA0 INTEGER (-32768..32767),
+ utcA1 INTEGER (-4096..4095),
+ utcA2 INTEGER (-64..63),
+ utcDeltaTls INTEGER (-128..127),
+ utcTot INTEGER (0..65535),
+ utcWNot INTEGER (0..8191),
+ utcWNlsf INTEGER (0..255),
+ utcDN BIT STRING (SIZE(4)),
+ utcDeltaTlsf INTEGER (-128..127),
+ ...,
+ [[
+ utcWNlsf-ext-r16 INTEGER (256..8191) OPTIONAL -- Need ON
+ ]]
+}
+
+
+UTC-ModelSet3 ::= SEQUENCE {
+ nA INTEGER (1..1461),
+ tauC INTEGER (-2147483648..2147483647),
+ b1 INTEGER (-1024..1023) OPTIONAL, -- Cond GLONASS-M
+ b2 INTEGER (-512..511) OPTIONAL, -- Cond GLONASS-M
+ kp BIT STRING (SIZE(2)) OPTIONAL, -- Cond GLONASS-M
+ ...
+}
+
+
+UTC-ModelSet4 ::= SEQUENCE {
+ utcA1wnt INTEGER (-8388608..8388607),
+ utcA0wnt INTEGER (-2147483648..2147483647),
+ utcTot INTEGER (0..255),
+ utcWNt INTEGER (0..255),
+ utcDeltaTls INTEGER (-128..127),
+ utcWNlsf INTEGER (0..255),
+ utcDN INTEGER (-128..127),
+ utcDeltaTlsf INTEGER (-128..127),
+ utcStandardID INTEGER (0..7),
+ ...
+}
+
+
+UTC-ModelSet5-r12 ::= SEQUENCE {
+ utcA0-r12 INTEGER (-2147483648..2147483647),
+ utcA1-r12 INTEGER (-8388608..8388607),
+ utcDeltaTls-r12 INTEGER (-128..127),
+ utcWNlsf-r12 INTEGER (0..255),
+ utcDN-r12 INTEGER (0..255),
+ utcDeltaTlsf-r12 INTEGER (-128..127),
+ ...
+}
+
+
+GNSS-AuxiliaryInformation ::= CHOICE {
+ gnss-ID-GPS GNSS-ID-GPS,
+ gnss-ID-GLONASS GNSS-ID-GLONASS,
+ ...,
+ [[ gnss-ID-BDS-r16 GNSS-ID-BDS-r16
+ ]]
+}
+
+GNSS-ID-GPS ::= SEQUENCE (SIZE(1..64)) OF GNSS-ID-GPS-SatElement
+
+GNSS-ID-GPS-SatElement ::= SEQUENCE {
+ svID SV-ID,
+ signalsAvailable GNSS-SignalIDs,
+ ...
+}
+
+GNSS-ID-GLONASS ::= SEQUENCE (SIZE(1..64)) OF GNSS-ID-GLONASS-SatElement
+
+GNSS-ID-GLONASS-SatElement ::= SEQUENCE {
+ svID SV-ID,
+ signalsAvailable GNSS-SignalIDs,
+ channelNumber INTEGER (-7..13) OPTIONAL, -- Cond FDMA
+ ...
+}
+
+GNSS-ID-BDS-r16 ::= SEQUENCE (SIZE(1..64)) OF GNSS-ID-BDS-SatElement-r16
+
+GNSS-ID-BDS-SatElement-r16 ::= SEQUENCE {
+ svID-r16 SV-ID,
+ satType-r16 INTEGER (0..3),
+ ...
+}
+
+
+BDS-DifferentialCorrections-r12 ::= SEQUENCE {
+ dbds-RefTime-r12 INTEGER (0..3599),
+ bds-SgnTypeList-r12 BDS-SgnTypeList-r12,
+ ...
+}
+
+BDS-SgnTypeList-r12 ::= SEQUENCE (SIZE (1..3)) OF BDS-SgnTypeElement-r12
+
+BDS-SgnTypeElement-r12 ::= SEQUENCE {
+ gnss-SignalID GNSS-SignalID OPTIONAL, -- Need ON
+ dbds-CorrectionList-r12 DBDS-CorrectionList-r12,
+ ...
+}
+
+DBDS-CorrectionList-r12 ::= SEQUENCE (SIZE (1..64)) OF DBDS-CorrectionElement-r12
+
+DBDS-CorrectionElement-r12 ::= SEQUENCE {
+ svID SV-ID,
+ bds-UDREI-r12 INTEGER (0..15),
+ bds-RURAI-r12 INTEGER (0..15),
+ bds-ECC-DeltaT-r12 INTEGER (-4096..4095),
+ ...
+}
+
+
+BDS-GridModelParameter-r12 ::= SEQUENCE {
+ bds-RefTime-r12 INTEGER (0..3599),
+ gridIonList-r12 GridIonList-r12,
+ ...
+}
+
+GridIonList-r12 ::= SEQUENCE (SIZE (1..320)) OF GridIonElement-r12
+
+GridIonElement-r12 ::= SEQUENCE {
+ igp-ID-r12 INTEGER (1..320),
+ dt-r12 INTEGER (0..511),
+ givei-r12 INTEGER (0..15) ,
+ ...
+}
+
+
+GNSS-RTK-Observations-r15 ::= SEQUENCE {
+ epochTime-r15 GNSS-SystemTime,
+ gnss-ObservationList-r15 GNSS-ObservationList-r15,
+ ...
+}
+
+GNSS-ObservationList-r15 ::= SEQUENCE (SIZE(1..64)) OF GNSS-RTK-SatelliteDataElement-r15
+
+GNSS-RTK-SatelliteDataElement-r15 ::= SEQUENCE{
+ svID-r15 SV-ID,
+ integer-ms-r15 INTEGER (0..254) OPTIONAL, -- Need ON
+ rough-range-r15 INTEGER (0..1023),
+ rough-phase-range-rate-r15 INTEGER (-8192..8191) OPTIONAL, -- Need ON
+ gnss-rtk-SatelliteSignalDataList-r15 GNSS-RTK-SatelliteSignalDataList-r15,
+ ...
+}
+
+GNSS-RTK-SatelliteSignalDataList-r15 ::= SEQUENCE (SIZE(1..24)) OF
+ GNSS-RTK-SatelliteSignalDataElement-r15
+
+
+GNSS-RTK-SatelliteSignalDataElement-r15 ::= SEQUENCE {
+ gnss-SignalID-r15 GNSS-SignalID,
+ fine-PseudoRange-r15 INTEGER (-524288..524287),
+ fine-PhaseRange-r15 INTEGER (-8388608..8388607),
+ lockTimeIndicator-r15 INTEGER (0..1023),
+ halfCycleAmbiguityIndicator-r15 BIT STRING (SIZE (1)),
+ carrier-to-noise-ratio-r15 INTEGER (0..1023) OPTIONAL, -- Need ON
+ fine-PhaseRangeRate-r15 INTEGER (-16384..16383) OPTIONAL, -- Need ON
+ ...
+}
+
+
+GLO-RTK-BiasInformation-r15 ::= SEQUENCE{
+ referenceStationID-r15 GNSS-ReferenceStationID-r15,
+ cpbIndicator-r15 BIT STRING (SIZE(1)),
+ l1-ca-cpBias-r15 INTEGER (-32768..32767) OPTIONAL, -- Need ON
+ l1-p-cpBias-r15 INTEGER (-32768..32767) OPTIONAL, -- Need ON
+ l2-ca-cpBias-r15 INTEGER (-32768..32767) OPTIONAL, -- Need ON
+ l2-p-cpBias-r15 INTEGER (-32768..32767) OPTIONAL, -- Need ON
+ ...
+}
+
+
+GNSS-RTK-MAC-CorrectionDifferences-r15 ::= SEQUENCE {
+ networkID-r15 GNSS-NetworkID-r15,
+ subNetworkID-r15 GNSS-SubNetworkID-r15 OPTIONAL, -- Need ON
+ master-ReferenceStationID-r15 GNSS-ReferenceStationID-r15,
+ l1-r15 GNSS-FrequencyID-r15 OPTIONAL, -- Need OP
+ l2-r15 GNSS-FrequencyID-r15 OPTIONAL, -- Need OP
+ rtkCorrectionDifferencesList-r15 RTK-CorrectionDifferencesList-r15,
+ ...
+}
+
+RTK-CorrectionDifferencesList-r15 ::= SEQUENCE (SIZE (1..32)) OF
+ RTK-CorrectionDifferencesElement-r15
+
+RTK-CorrectionDifferencesElement-r15 ::= SEQUENCE {
+ epochTime-r15 GNSS-SystemTime,
+ auxiliary-referenceStationID-r15 GNSS-ReferenceStationID-r15,
+ geometric-ionospheric-corrections-differences-r15
+ Geometric-Ionospheric-Corrections-Differences-r15,
+ ...
+}
+
+Geometric-Ionospheric-Corrections-Differences-r15 ::= SEQUENCE (SIZE(1..64)) OF
+ Geometric-Ionospheric-Corrections-Differences-Element-r15
+
+Geometric-Ionospheric-Corrections-Differences-Element-r15 ::= SEQUENCE {
+ svID-r15 SV-ID,
+ ambiguityStatusFlag-r15 INTEGER (0..3),
+ non-synch-count-r15 INTEGER (0..7),
+ geometricCarrierPhaseCorrectionDifference-r15 INTEGER (-65536..65535),
+ iod-r15 BIT STRING (SIZE(11)),
+ ionosphericCarrierPhaseCorrectionDifference-r15 INTEGER (-65536..65535),
+ ...
+}
+
+
+GNSS-RTK-Residuals-r15 ::= SEQUENCE {
+ epochTime-r15 GNSS-SystemTime,
+ referenceStationID-r15 GNSS-ReferenceStationID-r15,
+ n-Refs-r15 INTEGER (0..127),
+ l1-r15 GNSS-FrequencyID-r15 OPTIONAL, -- Need OP
+ l2-r15 GNSS-FrequencyID-r15 OPTIONAL, -- Need OP
+ rtk-residuals-list-r15 RTK-Residuals-List-r15,
+ ...
+}
+
+RTK-Residuals-List-r15 ::= SEQUENCE (SIZE(1..64)) OF RTK-Residuals-Element-r15
+
+RTK-Residuals-Element-r15 ::= SEQUENCE {
+ svID-r15 SV-ID,
+ s-oc-r15 INTEGER (0..255),
+ s-od-r15 INTEGER (0..511),
+ s-oh-r15 INTEGER (0..63),
+ s-lc-r15 INTEGER (0..1023),
+ s-ld-r15 INTEGER (0..1023),
+ ...
+}
+
+
+GNSS-RTK-FKP-Gradients-r15 ::= SEQUENCE {
+ referenceStationID-r15 GNSS-ReferenceStationID-r15,
+ epochTime-r15 GNSS-SystemTime,
+ l1-r15 GNSS-FrequencyID-r15 OPTIONAL, -- Need OP
+ l2-r15 GNSS-FrequencyID-r15 OPTIONAL, -- Need OP
+ fkp-gradients-list-r15 FKP-Gradients-List-r15,
+ ...
+}
+
+FKP-Gradients-List-r15 ::= SEQUENCE (SIZE(1..64)) OF FKP-Gradients-Element-r15
+
+FKP-Gradients-Element-r15 ::= SEQUENCE {
+ svID-r15 SV-ID,
+ iod-r15 BIT STRING (SIZE(11)),
+ north-geometric-gradient-r15 INTEGER (-2048..2047),
+ east-geometric-gradient-r15 INTEGER (-2048..2047),
+ north-ionospheric-gradient-r15 INTEGER (-8192..8191),
+ east-ionospheric-gradient-r15 INTEGER (-8192..8191),
+ ...
+}
+
+
+GNSS-SSR-OrbitCorrections-r15 ::= SEQUENCE {
+ epochTime-r15 GNSS-SystemTime,
+ ssrUpdateInterval-r15 INTEGER (0..15),
+ satelliteReferenceDatum-r15 ENUMERATED { itrf, regional, ... },
+ iod-ssr-r15 INTEGER (0..15),
+ ssr-OrbitCorrectionList-r15 SSR-OrbitCorrectionList-r15,
+ ...,
+ [[
+ orbit-IntegrityParameters-r17 ORBIT-IntegrityParameters-r17 OPTIONAL -- Need OR
+ ]]
+}
+
+SSR-OrbitCorrectionList-r15 ::= SEQUENCE (SIZE(1..64)) OF SSR-OrbitCorrectionSatelliteElement-r15
+
+SSR-OrbitCorrectionSatelliteElement-r15 ::= SEQUENCE {
+ svID-r15 SV-ID,
+ iod-r15 BIT STRING (SIZE(11)),
+ delta-radial-r15 INTEGER (-2097152..2097151),
+ delta-AlongTrack-r15 INTEGER (-524288..524287),
+ delta-CrossTrack-r15 INTEGER (-524288..524287),
+ dot-delta-radial-r15 INTEGER (-1048576..1048575) OPTIONAL, -- Need ON
+ dot-delta-AlongTrack-r15 INTEGER (-262144..262143) OPTIONAL, -- Need ON
+ dot-delta-CrossTrack-r15 INTEGER (-262144..262143) OPTIONAL, -- Need ON
+ ...,
+ [[
+ ssr-IntegrityOrbitBounds-r17 SSR-IntegrityOrbitBounds-r17 OPTIONAL -- Cond Integrity1
+ ]]
+}
+
+ORBIT-IntegrityParameters-r17 ::= SEQUENCE {
+ probOnsetConstFault-r17 INTEGER (0..255),
+ meanConstFaultDuration-r17 INTEGER (1..3600),
+ probOnsetSatFault-r17 INTEGER (0..255),
+ meanSatFaultDuration-r17 INTEGER (1..3600),
+ orbitRangeErrorCorrelationTime-r17 INTEGER (0..255) OPTIONAL, -- Need OR
+ orbitRangeRateErrorCorrelationTime-r17 INTEGER (0..255) OPTIONAL, -- Cond Integrity2
+ ...
+}
+
+SSR-IntegrityOrbitBounds-r17 ::= SEQUENCE {
+ meanOrbitError-r17 RAC-OrbitalErrorComponents-r17,
+ stdDevOrbitError-r17 RAC-OrbitalErrorComponents-r17,
+ meanOrbitRateError-r17 RAC-OrbitalErrorComponents-r17,
+ stdDevOrbitRateError-r17 RAC-OrbitalErrorComponents-r17,
+ ...
+}
+
+RAC-OrbitalErrorComponents-r17 ::= SEQUENCE {
+ radial-r17 INTEGER (0..255),
+ alongTrack-r17 INTEGER (0..255),
+ crossTrack-r17 INTEGER (0..255)
+}
+
+
+GNSS-SSR-ClockCorrections-r15 ::= SEQUENCE {
+ epochTime-r15 GNSS-SystemTime,
+ ssrUpdateInterval-r15 INTEGER (0..15),
+ iod-ssr-r15 INTEGER (0..15),
+ ssr-ClockCorrectionList-r15 SSR-ClockCorrectionList-r15,
+ ...,
+ [[
+ clock-IntegrityParameters-r17 CLOCK-IntegrityParameters-r17 OPTIONAL -- Need OR
+ ]]
+}
+
+SSR-ClockCorrectionList-r15 ::= SEQUENCE (SIZE(1..64)) OF SSR-ClockCorrectionSatelliteElement-r15
+
+SSR-ClockCorrectionSatelliteElement-r15 ::= SEQUENCE {
+ svID-r15 SV-ID,
+ delta-Clock-C0-r15 INTEGER (-2097152..2097151),
+ delta-Clock-C1-r15 INTEGER (-1048576..1048575) OPTIONAL, -- Need ON
+ delta-Clock-C2-r15 INTEGER (-67108864..67108863) OPTIONAL, -- Need ON
+ ...,
+ [[
+ ssr-IntegrityClockBounds-r17 SSR-IntegrityClockBounds-r17 OPTIONAL -- Need OR
+ ]]
+}
+
+CLOCK-IntegrityParameters-r17 ::= SEQUENCE {
+ clockRangeErrorCorrelationTime-r17 INTEGER (0..255),
+ clockRangeRateErrorCorrelationTime-r17 INTEGER (0..255),
+ ...
+}
+
+SSR-IntegrityClockBounds-r17 ::= SEQUENCE {
+ meanClock-r17 INTEGER (0..255),
+ stdDevClock-r17 INTEGER (0..255),
+ meanClockRate-r17 INTEGER (0..255),
+ stdDevClockRate-r17 INTEGER (0..255),
+ ...
+}
+
+
+GNSS-SSR-CodeBias-r15 ::= SEQUENCE {
+ epochTime-r15 GNSS-SystemTime,
+ ssrUpdateInterval-r15 INTEGER (0..15),
+ iod-ssr-r15 INTEGER (0..15),
+ ssr-CodeBiasSatList-r15 SSR-CodeBiasSatList-r15,
+ ...
+}
+
+SSR-CodeBiasSatList-r15 ::= SEQUENCE (SIZE(1..64)) OF SSR-CodeBiasSatElement-r15
+
+SSR-CodeBiasSatElement-r15 ::= SEQUENCE {
+ svID-r15 SV-ID,
+ ssr-CodeBiasSignalList-r15 SSR-CodeBiasSignalList-r15,
+ ...
+}
+
+SSR-CodeBiasSignalList-r15 ::= SEQUENCE (SIZE(1..16)) OF SSR-CodeBiasSignalElement-r15
+
+SSR-CodeBiasSignalElement-r15 ::= SEQUENCE {
+ signal-and-tracking-mode-ID-r15 GNSS-SignalID,
+ codeBias-r15 INTEGER (-8192..8191),
+ ...,
+ [[
+ ssr-IntegrityCodeBiasBounds-r17 SSR-IntegrityCodeBiasBounds-r17 OPTIONAL -- Need OR
+ ]]
+}
+
+SSR-IntegrityCodeBiasBounds-r17 ::= SEQUENCE {
+ meanCodeBias-r17 INTEGER (0..255),
+ stdDevCodeBias-r17 INTEGER (0..255),
+ meanCodeBiasRate-r17 INTEGER (0..255),
+ stdDevCodeBiasRate-r17 INTEGER (0..255),
+ ...
+}
+
+
+GNSS-SSR-URA-r16 ::= SEQUENCE {
+ epochTime-r16 GNSS-SystemTime,
+ ssrUpdateInterval-r16 INTEGER (0..15),
+ iod-ssr-r16 INTEGER (0..15),
+ ssr-URA-SatList-r16 SSR-URA-SatList-r16,
+ ...
+}
+
+SSR-URA-SatList-r16 ::= SEQUENCE (SIZE(1..64)) OF SSR-URA-SatElement-r16
+
+SSR-URA-SatElement-r16 ::= SEQUENCE {
+ svID-r16 SV-ID,
+ ssr-URA-r16 BIT STRING (SIZE (6)),
+ ...
+}
+
+
+GNSS-SSR-PhaseBias-r16 ::= SEQUENCE {
+ epochTime-r16 GNSS-SystemTime,
+ ssrUpdateInterval-r16 INTEGER (0..15),
+ iod-ssr-r16 INTEGER (0..15),
+ ssr-PhaseBiasSatList-r16 SSR-PhaseBiasSatList-r16,
+ ...
+}
+
+SSR-PhaseBiasSatList-r16 ::= SEQUENCE (SIZE(1..64)) OF SSR-PhaseBiasSatElement-r16
+
+SSR-PhaseBiasSatElement-r16 ::= SEQUENCE {
+ svID-r16 SV-ID,
+ ssr-PhaseBiasSignalList-r16 SSR-PhaseBiasSignalList-r16,
+ ...
+}
+
+SSR-PhaseBiasSignalList-r16 ::= SEQUENCE (SIZE(1..16)) OF SSR-PhaseBiasSignalElement-r16
+
+SSR-PhaseBiasSignalElement-r16 ::= SEQUENCE {
+ signal-and-tracking-mode-ID-r16 GNSS-SignalID,
+ phaseBias-r16 INTEGER (-16384..16383),
+ phaseDiscontinuityIndicator-r16 INTEGER (0..3),
+ phaseBiasIntegerIndicator-r16 INTEGER (0..3) OPTIONAL, -- Need OP
+ ...,
+ [[
+ ssr-IntegrityPhaseBiasBounds-r17 SSR-IntegrityPhaseBiasBounds-r17 OPTIONAL -- Need OR
+ ]]
+}
+
+SSR-IntegrityPhaseBiasBounds-r17 ::= SEQUENCE {
+ meanPhaseBias-r17 INTEGER (0..255),
+ stdDevPhaseBias-r17 INTEGER (0..255),
+ meanPhaseBiasRate-r17 INTEGER (0..255),
+ stdDevPhaseBiasRate-r17 INTEGER (0..255),
+ ...
+}
+
+
+GNSS-SSR-STEC-Correction-r16 ::= SEQUENCE {
+ epochTime-r16 GNSS-SystemTime,
+ ssrUpdateInterval-r16 INTEGER (0..15),
+ iod-ssr-r16 INTEGER (0..15),
+ correctionPointSetID-r16 INTEGER (0..16383),
+ stec-SatList-r16 STEC-SatList-r16,
+ ...,
+ [[
+ stec-IntegrityParameters-r17 STEC-IntegrityParameters-r17 OPTIONAL -- Need OR
+ ]]
+}
+
+STEC-SatList-r16 ::= SEQUENCE (SIZE(1..64)) OF STEC-SatElement-r16
+
+STEC-SatElement-r16 ::= SEQUENCE {
+ svID-r16 SV-ID,
+ stecQualityIndicator-r16 BIT STRING (SIZE(6)),
+ stec-C00-r16 INTEGER (-8192..8191),
+ stec-C01-r16 INTEGER (-2048..2047) OPTIONAL, -- Need ON
+ stec-C10-r16 INTEGER (-2048..2047) OPTIONAL, -- Need ON
+ stec-C11-r16 INTEGER (-512..511) OPTIONAL, -- Need ON
+ ...,
+ [[
+ stec-IntegrityErrorBounds-r17 STEC-IntegrityErrorBounds-r17 OPTIONAL -- Cond Integrity1
+ ]]
+}
+
+STEC-IntegrityParameters-r17 ::= SEQUENCE {
+ probOnsetIonoFault-r17 INTEGER (0..255),
+ meanIonoFaultDuration-r17 INTEGER (1..256),
+ ionoRangeErrorCorrelationTime-r17 INTEGER (1..255) OPTIONAL, -- Need OR
+ ionoRangeRateErrorCorrelationTime-r17 INTEGER (1..255) OPTIONAL, -- Cond Integrity2
+ ...
+}
+
+STEC-IntegrityErrorBounds-r17 ::= SEQUENCE {
+ meanIonosphere-r17 INTEGER (0..255),
+ stdDevIonosphere-r17 INTEGER (0..255),
+ meanIonosphereRate-r17 INTEGER (0..255),
+ stdDevIonosphereRate-r17 INTEGER (0..255),
+ ...
+}
+
+
+GNSS-SSR-GriddedCorrection-r16 ::= SEQUENCE {
+ epochTime-r16 GNSS-SystemTime,
+ ssrUpdateInterval-r16 INTEGER (0..15),
+ iod-ssr-r16 INTEGER (0..15),
+ troposphericDelayQualityIndicator-r16 BIT STRING (SIZE(6)) OPTIONAL, -- Cond Tropo
+ correctionPointSetID-r16 INTEGER (0..16383),
+ gridList-r16 GridList-r16,
+ ...,
+ [[
+ ssr-GriddedCorrectionIntegrityParameters-r17
+ SSR-GriddedCorrectionIntegrityParameters-r17
+ OPTIONAL -- Need OR
+ ]]
+}
+
+GridList-r16 ::= SEQUENCE (SIZE(1..64)) OF GridElement-r16
+
+GridElement-r16 ::= SEQUENCE {
+ tropospericDelayCorrection-r16 TropospericDelayCorrection-r16 OPTIONAL, -- Need ON
+ stec-ResidualSatList-r16 STEC-ResidualSatList-r16 OPTIONAL, -- Need ON
+ ...
+}
+
+TropospericDelayCorrection-r16 ::= SEQUENCE {
+ tropoHydroStaticVerticalDelay-r16 INTEGER (-256..255),
+ tropoWetVerticalDelay-r16 INTEGER (-128..127),
+ ...,
+ [[
+ tropoDelayIntegrityErrorBounds-r17 TropoDelayIntegrityErrorBounds-r17
+ OPTIONAL -- Cond Integrity1
+ ]]
+}
+
+STEC-ResidualSatList-r16 ::= SEQUENCE (SIZE(1..64)) OF STEC-ResidualSatElement-r16
+
+STEC-ResidualSatElement-r16 ::= SEQUENCE {
+ svID-r16 SV-ID,
+ stecResidualCorrection-r16 CHOICE {
+ b7-r16 INTEGER (-64..63),
+ b16-r16 INTEGER (-32768..32767)
+ },
+ ...
+}
+
+SSR-GriddedCorrectionIntegrityParameters-r17 ::= SEQUENCE {
+ probOnsetTroposphereFault-r17 INTEGER (0..255),
+ meanTroposphereFaultDuration-r17 INTEGER (1..256),
+ troposphereRangeErrorCorrelationTime-r17 INTEGER (1..255) OPTIONAL, -- Need OR
+ troposphereRangeRateErrorCorrelationTime-r17 INTEGER (1..255) OPTIONAL, -- Cond Integrity2
+ ...
+}
+
+TropoDelayIntegrityErrorBounds-r17 ::= SEQUENCE {
+ meanTroposphereVerticalHydroStaticDelay-r17 INTEGER (0..255),
+ stdDevTroposphereVerticalHydroStaticDelay-r17 INTEGER (0..255),
+ meanTroposphereVerticalWetDelay-r17 INTEGER (0..255),
+ stdDevTroposphereVerticalWetDelay-r17 INTEGER (0..255),
+ meanTroposphereVerticalHydroStaticDelayRate-r17 INTEGER (0..255),
+ stdDevTroposphereVerticalHydroStaticDelayRate-r17 INTEGER (0..255),
+ meanTroposphereVerticalWetDelayRate-r17 INTEGER (0..255),
+ stdDevTroposphereVerticalWetDelayRate-r17 INTEGER (0..255),
+ ...
+}
+
+
+NavIC-DifferentialCorrections-r16 ::= SEQUENCE {
+ navic-RefTOWC-r16 INTEGER (0..50400),
+ navic-CorrectionListAutoNav-r16 NavIC-CorrectionListAutoNav-r16,
+ ...
+}
+
+NavIC-CorrectionListAutoNav-r16 ::= SEQUENCE (SIZE (1..64)) OF NavIC-CorrectionElementAutoNav-r16
+
+NavIC-CorrectionElementAutoNav-r16 ::= SEQUENCE {
+ svID SV-ID,
+ navic-Tod-r16 INTEGER (0..65535),
+ navic-iodec-r16 INTEGER (0..255),
+ navic-UDRAI-r16 INTEGER (-16..15),
+ navic-UDRArateI-r16 INTEGER (-16..15),
+ navic-EDC-r16 NavIC-EDC-r16,
+ navic-CDC-r16 NavIC-CDC-r16,
+ ...
+}
+
+NavIC-EDC-r16 ::= SEQUENCE {
+ navic-AlphaEDC-r16 INTEGER (-8192..8191),
+ navic-BetaEDC-r16 INTEGER (-8192..8191),
+ navic-GammaEDC-r16 INTEGER (-16384..16383),
+ navic-AoIcorrection-r16 INTEGER (-2048..2047),
+ navic-AoRAcorrection-r16 INTEGER (-2048..2047),
+ navic-SemiMajorcorrection-r16 INTEGER (-2048..2047),
+ ...
+}
+
+NavIC-CDC-r16 ::= SEQUENCE {
+ navic-ClockBiasCorrection-r16 INTEGER (-4096..4095),
+ navic-ClockDriftCorrection-r16 INTEGER (-128..127),
+ ...
+}
+
+
+NavIC-GridModelParameter-r16 ::= SEQUENCE {
+ navic-RefTOWC-r16 INTEGER (0..50400),
+ regionMasked-r16 INTEGER (0..1023),
+ regionIgpList-r16 RegionIgpList-r16,
+ ...
+}
+
+RegionIgpList-r16 ::= SEQUENCE (SIZE (1..16)) OF RegionIgpElement-r16
+
+RegionIgpElement-r16 ::= SEQUENCE {
+ regionID-r16 INTEGER (0..15),
+ givei1-r16 INTEGER (0..15),
+ givd1-r16 INTEGER (0..511),
+ givei2-r16 INTEGER (0..15),
+ givd2-r16 INTEGER (0..511),
+ givei3-r16 INTEGER (0..15),
+ givd3-r16 INTEGER (0..511),
+ givei4-r16 INTEGER (0..15),
+ givd4-r16 INTEGER (0..511),
+ givei5-r16 INTEGER (0..15),
+ givd5-r16 INTEGER (0..511),
+ givei6-r16 INTEGER (0..15),
+ givd6-r16 INTEGER (0..511),
+ givei7-r16 INTEGER (0..15),
+ givd7-r16 INTEGER (0..511),
+ givei8-r16 INTEGER (0..15),
+ givd8-r16 INTEGER (0..511),
+ givei9-r16 INTEGER (0..15),
+ givd9-r16 INTEGER (0..511),
+ givei10-r16 INTEGER (0..15),
+ givd10-r16 INTEGER (0..511),
+ givei11-r16 INTEGER (0..15),
+ givd11-r16 INTEGER (0..511),
+ givei12-r16 INTEGER (0..15),
+ givd12-r16 INTEGER (0..511),
+ givei13-r16 INTEGER (0..15),
+ givd13-r16 INTEGER (0..511),
+ givei14-r16 INTEGER (0..15),
+ givd14-r16 INTEGER (0..511),
+ givei15-r16 INTEGER (0..15),
+ givd15-r16 INTEGER (0..511),
+ ...
+}
+
+
+A-GNSS-RequestAssistanceData ::= SEQUENCE {
+ gnss-CommonAssistDataReq GNSS-CommonAssistDataReq OPTIONAL, -- Cond CommonADReq
+ gnss-GenericAssistDataReq GNSS-GenericAssistDataReq OPTIONAL, -- Cond GenADReq
+ ...,
+ [[
+ gnss-PeriodicAssistDataReq-r15
+ GNSS-PeriodicAssistDataReq-r15 OPTIONAL -- Cond PerADReq
+ ]]
+}
+
+
+GNSS-CommonAssistDataReq ::= SEQUENCE {
+ gnss-ReferenceTimeReq GNSS-ReferenceTimeReq
+ OPTIONAL, -- Cond RefTimeReq
+ gnss-ReferenceLocationReq GNSS-ReferenceLocationReq
+ OPTIONAL, -- Cond RefLocReq
+ gnss-IonosphericModelReq GNSS-IonosphericModelReq
+ OPTIONAL, -- Cond IonoModReq
+ gnss-EarthOrientationParametersReq GNSS-EarthOrientationParametersReq
+ OPTIONAL, -- Cond EOPReq
+ ...,
+ [[
+ gnss-RTK-ReferenceStationInfoReq-r15
+ GNSS-RTK-ReferenceStationInfoReq-r15
+ OPTIONAL, -- Cond ARPReq
+ gnss-RTK-AuxiliaryStationDataReq-r15
+ GNSS-RTK-AuxiliaryStationDataReq-r15
+ OPTIONAL -- Cond AuxARPReq
+ ]],
+ [[
+ gnss-SSR-CorrectionPointsReq-r16
+ GNSS-SSR-CorrectionPointsReq-r16
+ OPTIONAL -- Cond PointsReq
+ ]],
+ [[
+ gnss-Integrity-ServiceParametersReq-r17
+ GNSS-Integrity-ServiceParametersReq-r17
+ OPTIONAL, -- Cond IntServiceReq
+ gnss-Integrity-ServiceAlertReq-r17
+ GNSS-Integrity-ServiceAlertReq-r17
+ OPTIONAL -- Cond IntAlertReq
+ ]]
+}
+
+
+GNSS-GenericAssistDataReq ::= SEQUENCE (SIZE (1..16)) OF GNSS-GenericAssistDataReqElement
+
+GNSS-GenericAssistDataReqElement ::= SEQUENCE {
+ gnss-ID GNSS-ID,
+ sbas-ID SBAS-ID OPTIONAL, -- Cond GNSS-ID-SBAS
+ gnss-TimeModelsReq GNSS-TimeModelListReq OPTIONAL, -- Cond TimeModReq
+ gnss-DifferentialCorrectionsReq GNSS-DifferentialCorrectionsReq OPTIONAL, -- Cond DGNSS-Req
+ gnss-NavigationModelReq GNSS-NavigationModelReq OPTIONAL, -- Cond NavModReq
+ gnss-RealTimeIntegrityReq GNSS-RealTimeIntegrityReq OPTIONAL, -- Cond RTIReq
+ gnss-DataBitAssistanceReq GNSS-DataBitAssistanceReq OPTIONAL, -- Cond DataBitsReq
+ gnss-AcquisitionAssistanceReq GNSS-AcquisitionAssistanceReq OPTIONAL, -- Cond AcquAssistReq
+ gnss-AlmanacReq GNSS-AlmanacReq OPTIONAL, -- Cond AlmanacReq
+ gnss-UTCModelReq GNSS-UTC-ModelReq OPTIONAL, -- Cond UTCModReq
+ gnss-AuxiliaryInformationReq GNSS-AuxiliaryInformationReq OPTIONAL, -- Cond AuxInfoReq
+ ...,
+ [[
+ bds-DifferentialCorrectionsReq-r12
+ BDS-DifferentialCorrectionsReq-r12
+ OPTIONAL, -- Cond DBDS-Req
+ bds-GridModelReq-r12 BDS-GridModelReq-r12 OPTIONAL -- Cond BDS-GridModReq
+ ]],
+ [[
+ gnss-RTK-ObservationsReq-r15
+ GNSS-RTK-ObservationsReq-r15 OPTIONAL, -- Cond RTK-OSR-Req
+ glo-RTK-BiasInformationReq-r15
+ GLO-RTK-BiasInformationReq-r15 OPTIONAL, -- Cond GLO-CPB-Req
+ gnss-RTK-MAC-CorrectionDifferencesReq-r15
+ GNSS-RTK-MAC-CorrectionDifferencesReq-r15
+ OPTIONAL, -- Cond MAC-Req
+ gnss-RTK-ResidualsReq-r15 GNSS-RTK-ResidualsReq-r15 OPTIONAL, -- Cond Res-Req
+ gnss-RTK-FKP-GradientsReq-r15
+ GNSS-RTK-FKP-GradientsReq-r15 OPTIONAL, -- Cond FKP-Req
+ gnss-SSR-OrbitCorrectionsReq-r15
+ GNSS-SSR-OrbitCorrectionsReq-r15
+ OPTIONAL, -- Cond OC-Req
+ gnss-SSR-ClockCorrectionsReq-r15
+ GNSS-SSR-ClockCorrectionsReq-r15
+ OPTIONAL, -- Cond CC-Req
+ gnss-SSR-CodeBiasReq-r15 GNSS-SSR-CodeBiasReq-r15 OPTIONAL -- Cond CB-Req
+ ]],
+ [[
+ gnss-SSR-URA-Req-r16 GNSS-SSR-URA-Req-r16 OPTIONAL, -- Cond URA-Req
+ gnss-SSR-PhaseBiasReq-r16 GNSS-SSR-PhaseBiasReq-r16 OPTIONAL, -- Cond PB-Req
+ gnss-SSR-STEC-CorrectionReq-r16
+ GNSS-SSR-STEC-CorrectionReq-r16 OPTIONAL, -- Cond STEC-Req
+ gnss-SSR-GriddedCorrectionReq-r16 GNSS-SSR-GriddedCorrectionReq-r16
+ OPTIONAL, -- Cond Grid-Req
+ navic-DifferentialCorrectionsReq-r16
+ NavIC-DifferentialCorrectionsReq-r16
+ OPTIONAL, -- Cond DNavIC-Req
+ navic-GridModelReq-r16 NavIC-GridModelReq-r16 OPTIONAL -- Cond NavIC-GridModReq
+ ]]
+}
+
+
+GNSS-PeriodicAssistDataReq-r15 ::= SEQUENCE {
+ gnss-RTK-PeriodicObservationsReq-r15 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Cond pOSR
+ glo-RTK-PeriodicBiasInformationReq-r15 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Cond pCPB
+ gnss-RTK-MAC-PeriodicCorrectionDifferencesReq-r15
+ GNSS-PeriodicControlParam-r15 OPTIONAL, -- Cond pMAC
+ gnss-RTK-PeriodicResidualsReq-r15 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Cond pRes
+ gnss-RTK-FKP-PeriodicGradientsReq-r15 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Cond pFKP
+ gnss-SSR-PeriodicOrbitCorrectionsReq-r15
+ GNSS-PeriodicControlParam-r15 OPTIONAL, -- Cond pOC
+ gnss-SSR-PeriodicClockCorrectionsReq-r15
+ GNSS-PeriodicControlParam-r15 OPTIONAL, -- Cond pCC
+ gnss-SSR-PeriodicCodeBiasReq-r15 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Cond pCB
+ ...,
+ [[
+ gnss-SSR-PeriodicURA-Req-r16 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Cond pURA
+ gnss-SSR-PeriodicPhaseBiasReq-r16 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Cond pPB
+ gnss-SSR-PeriodicSTEC-CorrectionReq-r16 GNSS-PeriodicControlParam-r15 OPTIONAL, -- Cond pSTEC
+ gnss-SSR-PeriodicGriddedCorrectionReq-r16
+ GNSS-PeriodicControlParam-r15 OPTIONAL -- Cond pGrid
+ ]],
+ [[
+ gnss-Integrity-PeriodicServiceAlertReq-r17
+ GNSS-PeriodicControlParam-r15 OPTIONAL -- Cond pDNU
+ ]]
+}
+
+
+GNSS-ReferenceTimeReq ::= SEQUENCE {
+ gnss-TimeReqPrefList SEQUENCE (SIZE (1..8)) OF GNSS-ID,
+ gps-TOW-assistReq BOOLEAN OPTIONAL, -- Cond gps
+ notOfLeapSecReq BOOLEAN OPTIONAL, -- Cond glonass
+ ...
+}
+
+
+GNSS-ReferenceLocationReq ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-IonosphericModelReq ::= SEQUENCE {
+ klobucharModelReq BIT STRING (SIZE(2)) OPTIONAL, -- Cond klobuchar
+ neQuickModelReq NULL OPTIONAL, -- Cond nequick
+ ...,
+ [[ klobucharModel2Req-r16 NULL OPTIONAL -- Cond klobuchar2
+ ]]
+
+}
+
+
+GNSS-EarthOrientationParametersReq ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-RTK-ReferenceStationInfoReq-r15 ::= SEQUENCE {
+ antennaDescriptionReq-r15 BOOLEAN,
+ antennaHeightReq-r15 BOOLEAN,
+ physicalReferenceStationReq-r15 BOOLEAN,
+ stationID-r15 GNSS-ReferenceStationID-r15 OPTIONAL,
+ ...
+}
+
+
+GNSS-RTK-AuxiliaryStationDataReq-r15 ::= SEQUENCE {
+ master-referenceStationID-r15 GNSS-ReferenceStationID-r15 OPTIONAL,
+ ...
+}
+
+
+GNSS-SSR-CorrectionPointsReq-r16 ::= SEQUENCE {
+ correctionPointSetID-Req-r16 INTEGER (0..16383) OPTIONAL,
+ ...
+}
+
+
+GNSS-Integrity-ServiceParametersReq-r17 ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-Integrity-ServiceAlertReq-r17 ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-TimeModelListReq ::= SEQUENCE (SIZE(1..15)) OF GNSS-TimeModelElementReq
+
+GNSS-TimeModelElementReq ::= SEQUENCE {
+ gnss-TO-IDsReq INTEGER (1..15),
+ deltaTreq BOOLEAN,
+ ...
+}
+
+
+GNSS-DifferentialCorrectionsReq ::= SEQUENCE {
+ dgnss-SignalsReq GNSS-SignalIDs,
+ dgnss-ValidityTimeReq BOOLEAN,
+ ...
+}
+
+
+GNSS-NavigationModelReq ::= CHOICE {
+ storedNavList StoredNavListInfo,
+ reqNavList ReqNavListInfo,
+ ...
+}
+
+
+StoredNavListInfo ::= SEQUENCE {
+ gnss-WeekOrDay INTEGER (0..4095),
+ gnss-Toe INTEGER (0..255),
+ t-toeLimit INTEGER (0..15),
+ satListRelatedDataList SatListRelatedDataList OPTIONAL,
+ ...
+}
+
+SatListRelatedDataList ::= SEQUENCE (SIZE (1..64)) OF SatListRelatedDataElement
+
+SatListRelatedDataElement ::= SEQUENCE {
+ svID SV-ID,
+ iod BIT STRING (SIZE(11)),
+ clockModelID INTEGER (1..8) OPTIONAL,
+orbitModelID INTEGER (1..8) OPTIONAL,
+ ...
+}
+
+ReqNavListInfo ::= SEQUENCE {
+ svReqList BIT STRING (SIZE (64)),
+ clockModelID-PrefList SEQUENCE (SIZE (1..8)) OF INTEGER (1..8) OPTIONAL,
+ orbitModelID-PrefList SEQUENCE (SIZE (1..8)) OF INTEGER (1..8) OPTIONAL,
+ addNavparamReq BOOLEAN OPTIONAL, -- Cond orbitModelID-2
+ ...
+}
+
+
+
+GNSS-RealTimeIntegrityReq ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-DataBitAssistanceReq ::= SEQUENCE {
+ gnss-TOD-Req INTEGER (0..3599),
+ gnss-TOD-FracReq INTEGER (0..999) OPTIONAL,
+ dataBitInterval INTEGER (0..15),
+ gnss-SignalType GNSS-SignalIDs,
+ gnss-DataBitsReq GNSS-DataBitsReqSatList OPTIONAL,
+ ...
+}
+
+GNSS-DataBitsReqSatList ::= SEQUENCE (SIZE(1..64)) OF GNSS-DataBitsReqSatElement
+
+GNSS-DataBitsReqSatElement ::= SEQUENCE {
+ svID SV-ID,
+ ...
+}
+
+
+GNSS-AcquisitionAssistanceReq ::= SEQUENCE {
+ gnss-SignalID-Req GNSS-SignalID,
+ ...
+}
+
+
+GNSS-AlmanacReq ::= SEQUENCE {
+ modelID INTEGER(1..8) OPTIONAL,
+ ...
+}
+
+
+GNSS-UTC-ModelReq ::= SEQUENCE {
+ modelID INTEGER(1..8) OPTIONAL,
+ ...
+}
+
+
+GNSS-AuxiliaryInformationReq ::= SEQUENCE {
+ ...
+}
+
+
+BDS-DifferentialCorrectionsReq-r12 ::= SEQUENCE {
+ dgnss-SignalsReq GNSS-SignalIDs,
+ ...
+}
+
+
+BDS-GridModelReq-r12 ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-RTK-ObservationsReq-r15::= SEQUENCE {
+ gnss-RTK-SignalsReq-r15 GNSS-SignalIDs,
+ gnss-RTK-Integer-ms-Req-r15 BOOLEAN,
+ gnss-RTK-PhaseRangeRateReq-r15 BOOLEAN,
+ gnss-RTK-CNR-Req-r15 BOOLEAN,
+ stationID-r15 GNSS-ReferenceStationID-r15 OPTIONAL,
+ ...
+}
+
+
+GLO-RTK-BiasInformationReq-r15 ::= SEQUENCE {
+ stationID-r15 GNSS-ReferenceStationID-r15 OPTIONAL,
+ ...
+}
+
+
+GNSS-RTK-MAC-CorrectionDifferencesReq-r15 ::= SEQUENCE {
+ master-ReferenceStationID-r15 GNSS-ReferenceStationID-r15 OPTIONAL,
+ aux-ReferenceStationList-r15 AUX-ReferenceStationList-r15 OPTIONAL,
+ linkCombinations-PrefList-r15 GNSS-Link-CombinationsList-r15 OPTIONAL,
+ ...
+}
+
+AUX-ReferenceStationList-r15 ::= SEQUENCE (SIZE (1..32)) OF AUX-ReferenceStationID-Element-r15
+
+AUX-ReferenceStationID-Element-r15 ::= SEQUENCE {
+ aux-stationID-r15 GNSS-ReferenceStationID-r15,
+ ...
+}
+
+
+GNSS-RTK-ResidualsReq-r15 ::= SEQUENCE {
+ stationID-r15 GNSS-ReferenceStationID-r15 OPTIONAL,
+ linkCombinations-PrefList-r15 GNSS-Link-CombinationsList-r15 OPTIONAL,
+ ...
+}
+
+
+GNSS-RTK-FKP-GradientsReq-r15 ::= SEQUENCE {
+ stationID-r15 GNSS-ReferenceStationID-r15 OPTIONAL,
+ linkCombinations-PrefList-r15 GNSS-Link-CombinationsList-r15 OPTIONAL,
+ ...
+}
+
+
+GNSS-SSR-OrbitCorrectionsReq-r15 ::= SEQUENCE {
+ storedNavList-r15 GNSS-NavListInfo-r15 OPTIONAL,
+ ...,
+ [[
+ orbit-IntegrityReq-r17 BIT STRING { correlationTimeReq (0)
+ } (SIZE(1..8)) OPTIONAL
+ ]]
+}
+
+
+GNSS-SSR-ClockCorrectionsReq-r15 ::= SEQUENCE {
+ storedNavList-r15 GNSS-NavListInfo-r15 OPTIONAL,
+ ...,
+ [[
+ clock-IntegrityParametersReq-r17 ENUMERATED { true } OPTIONAL,
+ ssr-IntegrityClockBoundsReq-r17 ENUMERATED { true } OPTIONAL
+ ]]
+}
+
+
+GNSS-SSR-CodeBiasReq-r15 ::= SEQUENCE {
+ signal-and-tracking-mode-ID-Map-r15 GNSS-SignalIDs,
+ storedNavList-r15 GNSS-NavListInfo-r15 OPTIONAL,
+ ...,
+ [[
+ ssr-IntegrityCodeBiasBoundsReq-r17 ENUMERATED { requested } OPTIONAL
+ ]]
+}
+
+
+GNSS-SSR-URA-Req-r16 ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-SSR-PhaseBiasReq-r16 ::= SEQUENCE {
+ signal-and-tracking-mode-ID-Map-r16 GNSS-SignalIDs,
+ storedNavList-r16 GNSS-NavListInfo-r15 OPTIONAL,
+ ...,
+ [[
+ ssr-IntegrityPhaseBiasBoundsReq-r17 ENUMERATED { requested } OPTIONAL
+ ]]
+}
+
+
+GNSS-SSR-STEC-CorrectionReq-r16 ::= SEQUENCE {
+ ...,
+ [[
+ stec-IntegrityReq-r17 BIT STRING { correlationTimeReq (0)
+ } (SIZE(1..8)) OPTIONAL
+ ]]
+}
+
+
+GNSS-SSR-GriddedCorrectionReq-r16 ::= SEQUENCE {
+ ...,
+ [[
+ griddedCorrectionIntegrityReq-r17 ENUMERATED { requested } OPTIONAL
+ ]]
+}
+
+
+NavIC-DifferentialCorrectionsReq-r16 ::= SEQUENCE {
+ dgnss-SignalsReq-r16 GNSS-SignalIDs,
+ ...
+}
+
+
+NavIC-GridModelReq-r16 ::= SEQUENCE {
+ ...
+}
+
+
+A-GNSS-ProvideLocationInformation ::= SEQUENCE {
+ gnss-SignalMeasurementInformation GNSS-SignalMeasurementInformation OPTIONAL,
+ gnss-LocationInformation GNSS-LocationInformation OPTIONAL,
+ gnss-Error A-GNSS-Error OPTIONAL,
+ ...
+}
+
+
+GNSS-SignalMeasurementInformation ::= SEQUENCE {
+ measurementReferenceTime MeasurementReferenceTime,
+ gnss-MeasurementList GNSS-MeasurementList,
+ ...
+}
+
+
+MeasurementReferenceTime ::= SEQUENCE {
+ gnss-TOD-msec INTEGER (0..3599999),
+ gnss-TOD-frac INTEGER (0..3999) OPTIONAL,
+ gnss-TOD-unc INTEGER (0..127) OPTIONAL,
+ gnss-TimeID GNSS-ID,
+ networkTime CHOICE {
+ eUTRA SEQUENCE {
+ physCellId INTEGER (0..503),
+ cellGlobalId CellGlobalIdEUTRA-AndUTRA OPTIONAL,
+ systemFrameNumber BIT STRING (SIZE (10)),
+ ...
+ },
+ uTRA SEQUENCE {
+ mode CHOICE {
+ fdd SEQUENCE {
+ primary-CPICH-Info INTEGER (0..511),
+ ...
+ },
+ tdd SEQUENCE {
+ cellParameters INTEGER (0..127),
+ ...
+ }
+ },
+ cellGlobalId CellGlobalIdEUTRA-AndUTRA OPTIONAL,
+ referenceSystemFrameNumber
+ INTEGER (0..4095),
+ ...
+ },
+ gSM SEQUENCE {
+ bcchCarrier INTEGER (0..1023),
+ bsic INTEGER (0..63),
+ cellGlobalId CellGlobalIdGERAN OPTIONAL,
+ referenceFrame SEQUENCE {
+ referenceFN INTEGER (0..65535),
+ referenceFNMSB INTEGER (0..63) OPTIONAL,
+ ...
+ },
+ deltaGNSS-TOD INTEGER (0 .. 127) OPTIONAL,
+ ...
+ },
+ ...,
+ nbIoT-r14
+ SEQUENCE {
+ nbPhysCellId-r14 INTEGER (0..503),
+ nbCellGlobalId-r14 ECGI OPTIONAL,
+ sfn-r14 BIT STRING (SIZE (10)),
+ hyperSFN-r14 BIT STRING (SIZE (10)) OPTIONAL,
+ ...
+ },
+ nr-r15 SEQUENCE {
+ nrPhysCellId-r15 INTEGER (0..1007),
+ nrCellGlobalID-r15 NCGI-r15 OPTIONAL,
+ nr-sfn-r15 BIT STRING (SIZE (10)),
+ ...
+ }
+ } OPTIONAL,
+ ...
+}
+
+
+GNSS-MeasurementList ::= SEQUENCE (SIZE(1..16)) OF GNSS-MeasurementForOneGNSS
+
+GNSS-MeasurementForOneGNSS ::= SEQUENCE {
+ gnss-ID GNSS-ID,
+ gnss-SgnMeasList GNSS-SgnMeasList,
+ ...
+}
+
+GNSS-SgnMeasList ::= SEQUENCE (SIZE(1..8)) OF GNSS-SgnMeasElement
+
+GNSS-SgnMeasElement ::= SEQUENCE {
+ gnss-SignalID GNSS-SignalID,
+ gnss-CodePhaseAmbiguity INTEGER (0..127) OPTIONAL,
+ gnss-SatMeasList GNSS-SatMeasList,
+ ...
+}
+
+GNSS-SatMeasList ::= SEQUENCE (SIZE(1..64)) OF GNSS-SatMeasElement
+
+GNSS-SatMeasElement ::= SEQUENCE {
+ svID SV-ID,
+ cNo INTEGER (0..63),
+ mpathDet ENUMERATED {notMeasured (0), low (1), medium (2), high (3), ...},
+ carrierQualityInd INTEGER (0..3) OPTIONAL,
+ codePhase INTEGER (0..2097151),
+ integerCodePhase INTEGER (0..127) OPTIONAL,
+ codePhaseRMSError INTEGER (0..63),
+ doppler INTEGER (-32768..32767) OPTIONAL,
+ adr INTEGER (0..33554431) OPTIONAL,
+ ...,
+ [[
+ adrMSB-r15 INTEGER (0..15) OPTIONAL,
+ adrSign-r15 ENUMERATED {positive, negative} OPTIONAL,
+ adrRMSerror-r15 INTEGER (0..127) OPTIONAL,
+ delta-codePhase-r15 INTEGER (0..7) OPTIONAL
+ ]]
+}
+
+
+GNSS-LocationInformation ::= SEQUENCE {
+ measurementReferenceTime MeasurementReferenceTime,
+ agnss-List GNSS-ID-Bitmap,
+ ...,
+ [[
+ ha-GNSS-Metrics-r17 HA-GNSS-Metrics-r17 OPTIONAL
+ ]]
+}
+
+
+HA-GNSS-Metrics-r17 ::= SEQUENCE {
+ nrOfUsedSatellites-r17 INTEGER (0..64),
+ hdopi-r17 INTEGER (1..256) OPTIONAL,
+ pdopi-r17 INTEGER (1..256) OPTIONAL,
+ age-r17 INTEGER (0..99) OPTIONAL,
+ fixType-r17 ENUMERATED {carrier-phase-float,
+ carrier-phase-fix, ...} OPTIONAL,
+ ...
+}
+
+
+A-GNSS-RequestLocationInformation ::= SEQUENCE {
+ gnss-PositioningInstructions GNSS-PositioningInstructions,
+ ...
+}
+
+
+GNSS-PositioningInstructions ::= SEQUENCE {
+ gnss-Methods GNSS-ID-Bitmap,
+ fineTimeAssistanceMeasReq BOOLEAN,
+ adrMeasReq BOOLEAN,
+ multiFreqMeasReq BOOLEAN,
+ assistanceAvailability BOOLEAN,
+ ...,
+ [[
+ ha-GNSS-Req-r15 ENUMERATED { true } OPTIONAL -- Cond UEB
+ ]],
+ [[
+ ha-GNSS-MetricsReq-r17 ENUMERATED { true } OPTIONAL -- Cond UEB
+ ]]
+}
+
+
+A-GNSS-ProvideCapabilities ::= SEQUENCE {
+ gnss-SupportList GNSS-SupportList OPTIONAL,
+ assistanceDataSupportList AssistanceDataSupportList OPTIONAL,
+ locationCoordinateTypes LocationCoordinateTypes OPTIONAL,
+ velocityTypes VelocityTypes OPTIONAL,
+ ...,
+ [[ periodicalReportingNotSupported-r14
+ PositioningModes OPTIONAL,
+ idleStateForMeasurements-r14
+ ENUMERATED { required } OPTIONAL
+ ]],
+ [[ periodicAssistanceData-r15
+ BIT STRING { solicited (0),
+ unsolicited (1) } (SIZE (1..8)) OPTIONAL
+ ]],
+ [[ scheduledLocationRequestSupported-r17
+ ScheduledLocationTimeSupportPerMode-r17 OPTIONAL
+ ]]
+}
+
+GNSS-SupportList ::= SEQUENCE (SIZE(1..16)) OF GNSS-SupportElement
+
+GNSS-SupportElement ::= SEQUENCE {
+ gnss-ID GNSS-ID,
+ sbas-IDs SBAS-IDs OPTIONAL, -- Cond GNSS-ID-SBAS
+ agnss-Modes PositioningModes,
+ gnss-Signals GNSS-SignalIDs,
+ fta-MeasSupport SEQUENCE {
+ cellTime AccessTypes,
+ mode PositioningModes,
+ ...
+ } OPTIONAL, -- Cond fta
+ adr-Support BOOLEAN,
+ velocityMeasurementSupport BOOLEAN,
+ ...,
+ [[
+ adrEnhancementsSupport-r15 ENUMERATED { true } OPTIONAL,
+ ha-gnss-Modes-r15 PositioningModes OPTIONAL
+ ]],
+ [[
+ ha-gnss-MetricsSupport-r17 ENUMERATED { true } OPTIONAL
+ ]]
+}
+
+AssistanceDataSupportList ::= SEQUENCE {
+ gnss-CommonAssistanceDataSupport GNSS-CommonAssistanceDataSupport,
+ gnss-GenericAssistanceDataSupport GNSS-GenericAssistanceDataSupport,
+ ...
+}
+
+
+
+GNSS-CommonAssistanceDataSupport ::= SEQUENCE {
+ gnss-ReferenceTimeSupport GNSS-ReferenceTimeSupport
+ OPTIONAL, -- Cond RefTimeSup
+ gnss-ReferenceLocationSupport GNSS-ReferenceLocationSupport
+ OPTIONAL, -- Cond RefLocSup
+ gnss-IonosphericModelSupport GNSS-IonosphericModelSupport
+ OPTIONAL, -- Cond IonoModSup
+ gnss-EarthOrientationParametersSupport GNSS-EarthOrientationParametersSupport
+ OPTIONAL, -- Cond EOPSup
+ ...,
+ [[
+ gnss-RTK-ReferenceStationInfoSupport-r15
+ GNSS-RTK-ReferenceStationInfoSupport-r15
+ OPTIONAL, -- Cond ARPSup
+ gnss-RTK-AuxiliaryStationDataSupport-r15
+ GNSS-RTK-AuxiliaryStationDataSupport-r15
+ OPTIONAL -- Cond AuxARPSup
+ ]],
+ [[
+ gnss-Integrity-ServiceParametersSupport-r17
+ GNSS-Integrity-ServiceParametersSupport-r17
+ OPTIONAL, -- Cond IntServiceSup
+ gnss-Integrity-ServiceAlertSupport-r17
+ GNSS-Integrity-ServiceAlertSupport-r17
+ OPTIONAL -- Cond IntAlertSup
+ ]]
+}
+
+
+GNSS-ReferenceTimeSupport ::= SEQUENCE {
+ gnss-SystemTime GNSS-ID-Bitmap,
+ fta-Support AccessTypes OPTIONAL, -- Cond fta
+ ...
+}
+
+
+GNSS-ReferenceLocationSupport ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-IonosphericModelSupport ::= SEQUENCE {
+ ionoModel BIT STRING { klobuchar (0),
+ neQuick (1),
+ klobuchar2-r16 (2) } (SIZE (1..8)),
+ ...
+}
+
+
+GNSS-EarthOrientationParametersSupport ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-RTK-ReferenceStationInfoSupport-r15 ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-RTK-AuxiliaryStationDataSupport-r15 ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-Integrity-ServiceParametersSupport-r17 ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-Integrity-ServiceAlertSupport-r17 ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-GenericAssistanceDataSupport ::=
+ SEQUENCE (SIZE (1..16)) OF GNSS-GenericAssistDataSupportElement
+
+GNSS-GenericAssistDataSupportElement ::= SEQUENCE {
+ gnss-ID GNSS-ID,
+ sbas-ID SBAS-ID OPTIONAL, -- Cond GNSS‑ID‑SBAS
+ gnss-TimeModelsSupport GNSS-TimeModelListSupport
+ OPTIONAL, -- Cond TimeModSup
+ gnss-DifferentialCorrectionsSupport GNSS-DifferentialCorrectionsSupport
+ OPTIONAL, -- Cond DGNSS-Sup
+ gnss-NavigationModelSupport GNSS-NavigationModelSupport
+ OPTIONAL, -- Cond NavModSup
+ gnss-RealTimeIntegritySupport GNSS-RealTimeIntegritySupport
+ OPTIONAL, -- Cond RTISup
+ gnss-DataBitAssistanceSupport GNSS-DataBitAssistanceSupport
+ OPTIONAL, -- Cond DataBitsSup
+ gnss-AcquisitionAssistanceSupport GNSS-AcquisitionAssistanceSupport
+ OPTIONAL, -- Cond AcquAssistSup
+ gnss-AlmanacSupport GNSS-AlmanacSupport
+ OPTIONAL, -- Cond AlmanacSup
+ gnss-UTC-ModelSupport GNSS-UTC-ModelSupport
+ OPTIONAL, -- Cond UTCModSup
+ gnss-AuxiliaryInformationSupport GNSS-AuxiliaryInformationSupport
+ OPTIONAL, -- Cond AuxInfoSup
+ ...,
+ [[
+ bds-DifferentialCorrectionsSupport-r12
+ BDS-DifferentialCorrectionsSupport-r12
+ OPTIONAL, -- Cond DBDS-Sup
+ bds-GridModelSupport-r12 BDS-GridModelSupport-r12
+ OPTIONAL -- Cond BDS-GridModSup
+ ]],
+ [[
+ gnss-RTK-ObservationsSupport-r15
+ GNSS-RTK-ObservationsSupport-r15
+ OPTIONAL, -- Cond RTK-OSR-Sup
+ glo-RTK-BiasInformationSupport-r15
+ GLO-RTK-BiasInformationSupport-r15
+ OPTIONAL, -- Cond GLO-CPB-Sup
+ gnss-RTK-MAC-CorrectionDifferencesSupport-r15
+ GNSS-RTK-MAC-CorrectionDifferencesSupport-r15
+ OPTIONAL, -- Cond MAC-Sup
+ gnss-RTK-ResidualsSupport-r15 GNSS-RTK-ResidualsSupport-r15
+ OPTIONAL, -- Cond Res-Sup
+ gnss-RTK-FKP-GradientsSupport-r15
+ GNSS-RTK-FKP-GradientsSupport-r15
+ OPTIONAL, -- Cond FKP-Sup
+ gnss-SSR-OrbitCorrectionsSupport-r15
+ GNSS-SSR-OrbitCorrectionsSupport-r15
+ OPTIONAL, -- Cond OC-Sup
+ gnss-SSR-ClockCorrectionsSupport-r15
+ GNSS-SSR-ClockCorrectionsSupport-r15
+ OPTIONAL, -- Cond CC-Sup
+ gnss-SSR-CodeBiasSupport-r15 GNSS-SSR-CodeBiasSupport-r15
+ OPTIONAL -- Cond CB-Sup
+ ]],
+ [[
+ gnss-SSR-URA-Support-r16 GNSS-SSR-URA-Support-r16 OPTIONAL, -- Cond URA-Sup
+ gnss-SSR-PhaseBiasSupport-r16 GNSS-SSR-PhaseBiasSupport-r16
+ OPTIONAL, -- Cond PB-Sup
+ gnss-SSR-STEC-CorrectionSupport-r16
+ GNSS-SSR-STEC-CorrectionSupport-r16
+ OPTIONAL, -- Cond STEC-Sup
+ gnss-SSR-GriddedCorrectionSupport-r16
+ GNSS-SSR-GriddedCorrectionSupport-r16
+ OPTIONAL, -- Cond Grid-Sup
+ navic-DifferentialCorrectionsSupport-r16
+ NavIC-DifferentialCorrectionsSupport-r16
+ OPTIONAL, -- Cond DNavIC-Sup
+ navic-GridModelSupport-r16 NavIC-GridModelSupport-r16
+ OPTIONAL -- Cond NavIC-GridModSup
+ ]]
+}
+
+
+GNSS-TimeModelListSupport ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-DifferentialCorrectionsSupport ::= SEQUENCE {
+ gnssSignalIDs GNSS-SignalIDs,
+ dgnss-ValidityTimeSup BOOLEAN,
+ ...
+}
+
+
+GNSS-NavigationModelSupport ::= SEQUENCE {
+ clockModel BIT STRING { model-1 (0),
+ model-2 (1),
+ model-3 (2),
+ model-4 (3),
+ model-5 (4),
+ model-6 (5),
+ model-7-r16 (6),
+ model-8-r16 (7) } (SIZE (1..8)) OPTIONAL,
+ orbitModel BIT STRING { model-1 (0),
+ model-2 (1),
+ model-3 (2),
+ model-4 (3),
+ model-5 (4),
+ model-6 (5),
+ model-7-r16 (6),
+ model-8-r16 (7) } (SIZE (1..8)) OPTIONAL,
+ ...
+}
+
+
+GNSS-RealTimeIntegritySupport ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-DataBitAssistanceSupport ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-AcquisitionAssistanceSupport ::= SEQUENCE {
+ ...,
+ confidenceSupport-r10 ENUMERATED { true } OPTIONAL,
+ dopplerUncertaintyExtSupport-r10 ENUMERATED { true } OPTIONAL
+}
+
+
+GNSS-AlmanacSupport ::= SEQUENCE {
+ almanacModel BIT STRING { model-1 (0),
+ model-2 (1),
+ model-3 (2),
+ model-4 (3),
+ model-5 (4),
+ model-6 (5),
+ model-7 (6) } (SIZE (1..8)) OPTIONAL,
+ ...
+}
+
+
+GNSS-UTC-ModelSupport ::= SEQUENCE {
+ utc-Model BIT STRING { model-1 (0),
+ model-2 (1),
+ model-3 (2),
+ model-4 (3),
+ model-5 (4) } (SIZE (1..8)) OPTIONAL,
+ ...
+}
+
+
+GNSS-AuxiliaryInformationSupport ::= SEQUENCE {
+ ...
+}
+
+
+BDS-DifferentialCorrectionsSupport-r12 ::= SEQUENCE {
+ gnssSignalIDs GNSS-SignalIDs,
+ ...
+}
+
+
+BDS-GridModelSupport-r12 ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-RTK-ObservationsSupport-r15 ::= SEQUENCE {
+ gnssSignalIDs-r15 GNSS-SignalIDs,
+ ...
+}
+
+
+GLO-RTK-BiasInformationSupport-r15 ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-RTK-MAC-CorrectionDifferencesSupport-r15 ::= SEQUENCE {
+ link-combinations-support-r15 GNSS-Link-CombinationsList-r15,
+ ...
+}
+
+
+GNSS-RTK-ResidualsSupport-r15 ::= SEQUENCE {
+ link-combinations-support-r15 GNSS-Link-CombinationsList-r15,
+ ...
+}
+
+
+GNSS-RTK-FKP-GradientsSupport-r15 ::= SEQUENCE {
+ link-combinations-support-r15 GNSS-Link-CombinationsList-r15,
+ ...
+}
+
+
+GNSS-SSR-OrbitCorrectionsSupport-r15 ::= SEQUENCE {
+ ...,
+ [[
+ orbit-IntegritySup-r17 BIT STRING { correlationTimeSup (0)
+ } (SIZE(1..8)) OPTIONAL
+ ]]
+}
+
+
+GNSS-SSR-ClockCorrectionsSupport-r15 ::= SEQUENCE {
+ ...,
+ [[
+ clock-IntegrityParameterSupport-r17 ENUMERATED { supported } OPTIONAL,
+ ssr-IntegrityClockBoundsSupport-r17 ENUMERATED { supported } OPTIONAL
+ ]]
+}
+
+
+GNSS-SSR-CodeBiasSupport-r15 ::= SEQUENCE {
+ signal-and-tracking-mode-ID-Sup-r15 GNSS-SignalIDs,
+ ...,
+ [[
+ ssr-IntegrityCodeBiasBoundsSup-r17 ENUMERATED { supported } OPTIONAL
+ ]]
+}
+
+
+GNSS-SSR-URA-Support-r16 ::= SEQUENCE {
+ ...
+}
+
+
+GNSS-SSR-PhaseBiasSupport-r16 ::= SEQUENCE {
+ signal-and-tracking-mode-ID-Sup-r16 GNSS-SignalIDs,
+ ...,
+ [[
+ ssr-IntegrityPhaseBiasBoundsSup-r17 ENUMERATED { supported } OPTIONAL
+ ]]
+}
+
+
+GNSS-SSR-STEC-CorrectionSupport-r16 ::= SEQUENCE {
+ ...,
+ [[
+ stec-IntegritySup-r17 BIT STRING { correlationTimeSup (0)
+ } (SIZE(1..8)) OPTIONAL
+ ]]
+}
+
+
+GNSS-SSR-GriddedCorrectionSupport-r16 ::= SEQUENCE {
+ ...,
+ [[
+ griddedCorrectionIntegritySup-r17 ENUMERATED { supported } OPTIONAL
+ ]]
+}
+
+
+NavIC-DifferentialCorrectionsSupport-r16 ::= SEQUENCE {
+ gnssSignalIDs-r16 GNSS-SignalIDs,
+ ...
+}
+
+
+NavIC-GridModelSupport-r16 ::= SEQUENCE {
+ ...
+}
+
+
+A-GNSS-RequestCapabilities ::= SEQUENCE {
+ gnss-SupportListReq BOOLEAN,
+ assistanceDataSupportListReq BOOLEAN,
+ locationVelocityTypesReq BOOLEAN,
+ ...
+}
+
+
+A-GNSS-Error ::= CHOICE {
+ locationServerErrorCauses GNSS-LocationServerErrorCauses,
+ targetDeviceErrorCauses GNSS-TargetDeviceErrorCauses,
+ ...
+}
+
+
+GNSS-LocationServerErrorCauses ::= SEQUENCE {
+ cause ENUMERATED {
+ undefined,
+ undeliveredAssistanceDataIsNotSupportedByServer,
+ undeliveredAssistanceDataIsSupportedButCurrentlyNotAvailableByServer, undeliveredAssistanceDataIsPartlyNotSupportedAndPartlyNotAvailableByServer,
+ ...,
+ unconfirmedPeriodicAssistanceDataIsNotSupported-v1510,
+ unconfirmedPeriodicAssistanceDataIsSupportedButCurrentlyNotAvailable-v1510,
+ unconfirmedPeriodicAssistanceDataIsPartlyNotSupportedAndPartlyNotAvailable-v1510,
+ undeliveredPeriodicAssistanceDataIsCurrentlyNotAvailable-v1510
+ },
+ ...
+}
+
+
+GNSS-TargetDeviceErrorCauses ::= SEQUENCE {
+ cause ENUMERATED { undefined,
+ thereWereNotEnoughSatellitesReceived,
+ assistanceDataMissing,
+ notAllRequestedMeasurementsPossible,
+ ...
+ },
+ fineTimeAssistanceMeasurementsNotPossible NULL OPTIONAL,
+ adrMeasurementsNotPossible NULL OPTIONAL,
+ multiFrequencyMeasurementsNotPossible NULL OPTIONAL,
+ ...
+}
+
+
+GNSS-FrequencyID-r15 ::= SEQUENCE {
+ gnss-FrequencyID-r15 INTEGER (0 .. 7),
+ ...
+}
+
+
+GNSS-ID ::= SEQUENCE {
+ gnss-id ENUMERATED{ gps, sbas, qzss, galileo, glonass, ..., bds, navic-v1610 },
+ ...
+}
+
+
+GNSS-ID-Bitmap ::= SEQUENCE {
+ gnss-ids BIT STRING { gps (0),
+ sbas (1),
+ qzss (2),
+ galileo (3),
+ glonass (4),
+ bds (5),
+ navic-v1610 (6) } (SIZE (1..16)),
+ ...
+}
+
+
+GNSS-Link-CombinationsList-r15 ::= SEQUENCE (SIZE(1..8)) OF GNSS-Link-Combinations-r15
+
+GNSS-Link-Combinations-r15 ::= SEQUENCE {
+ l1-r15 GNSS-FrequencyID-r15,
+ l2-r15 GNSS-FrequencyID-r15,
+ ...
+}
+
+
+GNSS-NavListInfo-r15 ::= SEQUENCE (SIZE (1..64)) OF SatListElement-r15
+
+SatListElement-r15 ::= SEQUENCE {
+ svID-r15 SV-ID,
+ iod-r15 BIT STRING (SIZE(11)),
+ ...
+}
+
+
+GNSS-NetworkID-r15 ::= SEQUENCE {
+ networkID-r15 INTEGER (0..255),
+ ...
+}
+
+
+GNSS-PeriodicControlParam-r15 ::= SEQUENCE {
+ deliveryAmount-r15 INTEGER (1..32),
+ deliveryInterval-r15 INTEGER (1..64),
+ ...
+}
+
+
+GNSS-ReferenceStationID-r15 ::= SEQUENCE {
+ referenceStationID-r15 INTEGER (0..65535),
+ providerName-r15 VisibleString (SIZE (1..32)) OPTIONAL, -- Need ON
+ ...
+}
+
+
+GNSS-SignalID ::= SEQUENCE {
+ gnss-SignalID INTEGER (0 .. 7),
+ ...,
+ [[
+ gnss-SignalID-Ext-r15 INTEGER (8..23) OPTIONAL -- Need ON
+ ]]
+}
+
+
+GNSS-SignalIDs ::= SEQUENCE {
+ gnss-SignalIDs BIT STRING (SIZE(8)),
+ ...,
+ [[
+ gnss-SignalIDs-Ext-r15 BIT STRING (SIZE(16)) OPTIONAL -- Need ON
+ ]]
+}
+
+
+GNSS-SubNetworkID-r15 ::= SEQUENCE {
+ subNetworkID-r15 INTEGER (0..15),
+ ...
+}
+
+
+SBAS-ID ::= SEQUENCE {
+ sbas-id ENUMERATED { waas, egnos, msas, gagan, ...},
+ ...
+}
+
+
+SBAS-IDs ::= SEQUENCE {
+ sbas-IDs BIT STRING { waas (0),
+ egnos (1),
+ msas (2),
+ gagan (3) } (SIZE (1..8)),
+ ...
+}
+
+
+SV-ID ::= SEQUENCE {
+ satellite-id INTEGER(0..63),
+ ...
+}
+
+
+ECID-ProvideLocationInformation ::= SEQUENCE {
+ ecid-SignalMeasurementInformation ECID-SignalMeasurementInformation OPTIONAL,
+ ecid-Error ECID-Error OPTIONAL,
+ ...
+}
+
+
+ECID-SignalMeasurementInformation ::= SEQUENCE {
+ primaryCellMeasuredResults MeasuredResultsElement OPTIONAL,
+ measuredResultsList MeasuredResultsList,
+ ...
+}
+
+MeasuredResultsList ::= SEQUENCE (SIZE(1..32)) OF MeasuredResultsElement
+
+MeasuredResultsElement ::= SEQUENCE {
+ physCellId INTEGER (0..503),
+ cellGlobalId CellGlobalIdEUTRA-AndUTRA OPTIONAL,
+ arfcnEUTRA ARFCN-ValueEUTRA,
+ systemFrameNumber BIT STRING (SIZE (10)) OPTIONAL,
+ rsrp-Result INTEGER (0..97) OPTIONAL,
+ rsrq-Result INTEGER (0..34) OPTIONAL,
+ ue-RxTxTimeDiff INTEGER (0..4095) OPTIONAL,
+ ...,
+ [[ arfcnEUTRA-v9a0 ARFCN-ValueEUTRA-v9a0 OPTIONAL -- Cond EARFCN-max
+ ]],
+ [[ nrsrp-Result-r14 INTEGER (0..113) OPTIONAL,
+ nrsrq-Result-r14 INTEGER (0..74) OPTIONAL,
+ carrierFreqOffsetNB-r14 CarrierFreqOffsetNB-r14 OPTIONAL, -- Cond NB-IoT
+ hyperSFN-r14 BIT STRING (SIZE (10)) OPTIONAL
+ ]],
+ [[
+ rsrp-Result-v1470 INTEGER (-17..-1) OPTIONAL,
+ rsrq-Result-v1470 INTEGER (-30..46) OPTIONAL
+ ]]
+}
+
+
+ECID-RequestLocationInformation ::= SEQUENCE {
+ requestedMeasurements BIT STRING { rsrpReq (0),
+ rsrqReq (1),
+ ueRxTxReq (2),
+ nrsrpReq-r14 (3),
+ nrsrqReq-r14 (4)} (SIZE(1..8)),
+ ...
+}
+
+
+ECID-ProvideCapabilities ::= SEQUENCE {
+ ecid-MeasSupported BIT STRING { rsrpSup (0),
+ rsrqSup (1),
+ ueRxTxSup (2),
+ nrsrpSup-r14 (3),
+ nrsrqSup-r14 (4)} (SIZE(1..8)),
+ ...,
+ [[ ueRxTxSupTDD-r13 ENUMERATED { true } OPTIONAL
+ ]],
+ [[ periodicalReporting-r14 ENUMERATED { supported } OPTIONAL,
+ triggeredReporting-r14 ENUMERATED { supported } OPTIONAL,
+ idleStateForMeasurements-r14 ENUMERATED { required } OPTIONAL
+ ]],
+ [[ scheduledLocationRequestSupported-r17 ScheduledLocationTimeSupport-r17 OPTIONAL
+ ]]
+}
+
+
+ECID-RequestCapabilities ::= SEQUENCE {
+ ...
+}
+
+
+ECID-Error ::= CHOICE {
+ locationServerErrorCauses ECID-LocationServerErrorCauses,
+ targetDeviceErrorCauses ECID-TargetDeviceErrorCauses,
+ ...
+}
+
+
+ECID-LocationServerErrorCauses ::= SEQUENCE {
+ cause ENUMERATED { undefined,
+ ...
+ },
+ ...
+}
+
+
+ECID-TargetDeviceErrorCauses ::= SEQUENCE {
+ cause ENUMERATED { undefined,
+ requestedMeasurementNotAvailable,
+ notAllrequestedMeasurementsPossible,
+ ...
+ },
+ rsrpMeasurementNotPossible NULL OPTIONAL,
+ rsrqMeasurementNotPossible NULL OPTIONAL,
+ ueRxTxMeasurementNotPossible NULL OPTIONAL,
+ ...,
+ [[
+ nrsrpMeasurementNotPossible-r14 NULL OPTIONAL,
+ nrsrqMeasurementNotPossible-r14 NULL OPTIONAL
+ ]]
+}
+
+
+TBS-ProvideLocationInformation-r13 ::= SEQUENCE {
+ tbs-MeasurementInformation-r13 TBS-MeasurementInformation-r13 OPTIONAL,
+ tbs-Error-r13 TBS-Error-r13 OPTIONAL,
+ ...
+}
+
+
+TBS-MeasurementInformation-r13 ::= SEQUENCE {
+ measurementReferenceTime-r13 UTCTime OPTIONAL,
+ mbs-SgnMeasList-r13 MBS-BeaconMeasList-r13 OPTIONAL, -- Cond MBS
+ ...
+}
+
+
+MBS-BeaconMeasList-r13 ::= SEQUENCE (SIZE(1..64)) OF MBS-BeaconMeasElement-r13
+
+MBS-BeaconMeasElement-r13 ::= SEQUENCE {
+ transmitterID-r13 INTEGER (0..32767),
+ codePhase-r13 INTEGER (0..2097151),
+ codePhaseRMSError-r13 INTEGER (0..63),
+ ...,
+ [[ rssi-r14 INTEGER (-130..-30) OPTIONAL
+ ]]
+}
+
+
+TBS-RequestLocationInformation-r13 ::= SEQUENCE {
+ mbsSgnMeasListReq-r13 BOOLEAN,
+ ...,
+ [[ mbsAssistanceAvailability-r14 BOOLEAN OPTIONAL, -- Need ON
+ mbsRequestedMeasurements-r14 BIT STRING {
+ rssi (0)} (SIZE(1..8)) OPTIONAL -- Need ON
+ ]]
+}
+
+
+TBS-ProvideCapabilities-r13 ::= SEQUENCE {
+ tbs-Modes-r13 BIT STRING { standalone (0),
+ ue-assisted (1),
+ ue-based (2)} (SIZE (1..8)),
+ ...,
+ [[ mbs-AssistanceDataSupportList-r14 MBS-AssistanceDataSupportList-r14 OPTIONAL,
+ periodicalReportingSupported-r14 PositioningModes OPTIONAL,
+ mbs-ConfigSupport-r14 BIT STRING { tb1 (0),
+ tb2 (1),
+ tb3 (2),
+ tb4 (3)} (SIZE (1..8)) OPTIONAL,
+ mbs-IdleStateForMeasurements-r14 ENUMERATED { required } OPTIONAL
+ ]],
+ [[ scheduledLocationRequestSupported-r17 ScheduledLocationTimeSupportPerMode-r17 OPTIONAL
+ ]]
+}
+
+
+MBS-AssistanceDataSupportList-r14 ::= SEQUENCE {
+ mbs-AcquisitionAssistanceDataSupport-r14 BOOLEAN,
+ mbs-AlmanacAssistanceDataSupport-r14 BOOLEAN,
+ ...
+}
+
+
+TBS-RequestCapabilities-r13 ::= SEQUENCE {
+ ...
+}
+
+
+TBS-Error-r13 ::= CHOICE {
+ locationServerErrorCauses-r13 TBS-LocationServerErrorCauses-r13,
+ targetDeviceErrorCauses-r13 TBS-TargetDeviceErrorCauses-r13,
+ ...
+}
+
+
+TBS-LocationServerErrorCauses-r13 ::= SEQUENCE {
+ cause-r13 ENUMERATED { undefined,
+ ...,
+ assistanceDataNotSupportedByServer-v1420,
+ assistanceDataSupportedButCurrentlyNotAvailableByServer-v1420
+ },
+ ...
+}
+
+
+TBS-TargetDeviceErrorCauses-r13 ::= SEQUENCE {
+ cause-r13 ENUMERATED { undefined,
+ thereWereNotEnoughMBSBeaconsReceived,
+ ...,
+ assistanceDataMissing-v1420
+ },
+ ...
+}
+
+
+TBS-ProvideAssistanceData-r14 ::= SEQUENCE {
+ tbs-AssistanceDataList-r14 TBS-AssistanceDataList-r14 OPTIONAL, -- Need ON
+ tbs-Error-r14 TBS-Error-r13 OPTIONAL, -- Need ON
+ ...
+}
+
+
+TBS-AssistanceDataList-r14 ::= SEQUENCE {
+ mbs-AssistanceDataList-r14 MBS-AssistanceDataList-r14 OPTIONAL, -- Need ON
+ ...
+}
+
+MBS-AssistanceDataList-r14 ::= SEQUENCE (SIZE (1..maxMBS-r14)) OF MBS-AssistanceDataElement-r14
+
+MBS-AssistanceDataElement-r14 ::= SEQUENCE {
+ mbs-AlmanacAssistance-r14 MBS-AlmanacAssistance-r14 OPTIONAL, -- Need ON
+ mbs-AcquisitionAssistance-r14 MBS-AcquisitionAssistance-r14 OPTIONAL, -- Need ON
+ ...
+}
+
+
+MBS-AlmanacAssistance-r14 ::= SEQUENCE {
+ transmitterID-r14 INTEGER (0..32767),
+ transmitterLatitude-r14 BIT STRING (SIZE (26)),
+ transmitterLongitude-r14 BIT STRING (SIZE (27)),
+ transmitterAltitude-r14 BIT STRING (SIZE (15)),
+ timeCorrection-r14 INTEGER (0..25) OPTIONAL, -- Need ON
+ ...
+}
+
+
+MBS-AcquisitionAssistance-r14 ::= SEQUENCE {
+ transmitterID-r14 INTEGER (0..32767) OPTIONAL, -- Need ON
+ mbsConfiguration-r14 ENUMERATED {tb1, tb2, tb3, tb4, ...} OPTIONAL, -- Need ON
+ pnCodeIndex-r14 INTEGER (1..128) OPTIONAL, -- Need ON
+ freq-r14 INTEGER (919750000..927250000) OPTIONAL, -- Need ON
+ ...
+}
+
+
+TBS-RequestAssistanceData-r14 ::= SEQUENCE {
+ mbs-AlmanacAssistanceDataReq-r14 BOOLEAN,
+ mbs-AcquisitionAssistanceDataReq-r14 BOOLEAN,
+ ...
+}
+
+
+Sensor-ProvideLocationInformation-r13 ::= SEQUENCE {
+ sensor-MeasurementInformation-r13 Sensor-MeasurementInformation-r13 OPTIONAL,
+ sensor-Error-r13 Sensor-Error-r13 OPTIONAL,
+ ...,
+ [[
+ sensor-MotionInformation-r15 Sensor-MotionInformation-r15 OPTIONAL
+ ]]
+}
+
+
+Sensor-MeasurementInformation-r13 ::= SEQUENCE {
+ measurementReferenceTime-r13 UTCTime OPTIONAL,
+ uncompensatedBarometricPressure-r13 INTEGER (30000..115000) OPTIONAL, -- Cond Barometer
+ ...,
+ [[
+ uncertainty-r14 SEQUENCE {
+ range-r14 INTEGER (0..1000),
+ confidence-r14 INTEGER (1..100)
+ } OPTIONAL
+ ]],
+ [[ adjustment-r16 INTEGER (-5000..5000) OPTIONAL
+ ]]
+}
+
+
+Sensor-MotionInformation-r15 ::= SEQUENCE {
+ refTime-r15 DisplacementTimeStamp-r15,
+ displacementInfoList-r15 DisplacementInfoList-r15,
+ ...
+}
+
+DisplacementInfoList-r15 ::= SEQUENCE (SIZE (1..128)) OF DisplacementInfoListElement-r15
+
+DisplacementInfoListElement-r15 ::= SEQUENCE {
+ deltaTimeStamp-r15 DeltaTime-r15,
+ displacement-r15 Displacement-r15 OPTIONAL,
+ ...
+}
+
+DisplacementTimeStamp-r15 ::= CHOICE {
+ utcTime-r15 UTC-Time-r15,
+ gnssTime-r15 MeasurementReferenceTime,
+ systemFrameNumber-r15 SFN-r15,
+ measurementSFN-r15 INTEGER(-8192..9214),
+ ...
+}
+
+DeltaTime-r15 ::= CHOICE {
+ deltaTimeSec-r15 INTEGER (1..16384),
+ deltaTimeSFN-r15 INTEGER (1..4096),
+ ...
+}
+
+SFN-r15 ::= SEQUENCE {
+ sfn-r15 BIT STRING (SIZE (10)),
+ hyperSFN-r15 BIT STRING (SIZE (10)) OPTIONAL,
+ ...
+}
+
+Displacement-r15 ::= SEQUENCE {
+ bearing-r15 INTEGER (0..3599),
+ bearingUncConfidence-r15 INTEGER (0..100) OPTIONAL,
+ bearingRef-r15 ENUMERATED { geographicNorth, magneticNorth, local },
+ horizontalDistance-r15 INTEGER (0..8191),
+ horizontalDistanceUnc-r15 INTEGER (0..255) OPTIONAL,
+ horizontalUncConfidence-r15 INTEGER (0..100) OPTIONAL,
+ verticalDirection-r15 ENUMERATED{upward, downward} OPTIONAL,
+ verticalDistance-r15 INTEGER(0..8191) OPTIONAL,
+ verticalDistanceUnc-r15 INTEGER (0..255) OPTIONAL,
+ verticalUncConfidence-r15 INTEGER (0..100) OPTIONAL,
+ ...
+}
+
+UTC-Time-r15 ::= SEQUENCE {
+ utcTime-r15 UTCTime,
+ utcTime-ms-r15 INTEGER (0..999),
+ ...
+}
+
+
+Sensor-RequestLocationInformation-r13 ::= SEQUENCE {
+ uncompensatedBarometricPressureReq-r13 BOOLEAN,
+ ...,
+ [[ assistanceAvailability-r14 BOOLEAN OPTIONAL -- Need ON
+ ]],
+ [[ sensor-MotionInformationReq-r15 BOOLEAN OPTIONAL -- Need ON
+ ]],
+ [[ adjustmentReq-r16 BOOLEAN OPTIONAL -- Need ON
+ ]]
+}
+
+
+Sensor-ProvideCapabilities-r13 ::= SEQUENCE {
+ sensor-Modes-r13 BIT STRING { standalone (0),
+ ue-assisted (1),
+ ue-based (2)} (SIZE (1..8)),
+ ...,
+ [[ sensor-AssistanceDataSupportList-r14 Sensor-AssistanceDataSupportList-r14 OPTIONAL,
+ periodicalReportingSupported-r14 PositioningModes OPTIONAL,
+ idleStateForMeasurements-r14 ENUMERATED { required } OPTIONAL
+ ]],
+ [[ sensor-MotionInformationSup-r15 ENUMERATED { true } OPTIONAL
+ ]],
+ [[ adjustmentSupported-r16 ENUMERATED { true } OPTIONAL
+ ]],
+ [[ scheduledLocationRequestSupported-r17 ScheduledLocationTimeSupportPerMode-r17 OPTIONAL
+ ]]
+}
+
+Sensor-AssistanceDataSupportList-r14 ::= SEQUENCE {
+ ...,
+ [[ validityPeriodSupported-v1520 ENUMERATED { true } OPTIONAL,
+ validityAreaSupported-v1520 ENUMERATED { true } OPTIONAL
+ ]]
+}
+
+
+Sensor-RequestCapabilities-r13 ::= SEQUENCE {
+ ...
+}
+
+
+Sensor-Error-r13 ::= CHOICE {
+ locationServerErrorCauses-r13 Sensor-LocationServerErrorCauses-r13,
+ targetDeviceErrorCauses-r13 Sensor-TargetDeviceErrorCauses-r13,
+ ...
+}
+
+
+Sensor-LocationServerErrorCauses-r13 ::= SEQUENCE {
+ cause-r13 ENUMERATED { undefined,
+ ...,
+ assistanceDataNotSupportedByServer-v1420,
+ assistanceDataSupportedButCurrentlyNotAvailableByServer-v1420
+ },
+ ...
+}
+
+
+Sensor-TargetDeviceErrorCauses-r13 ::= SEQUENCE {
+ cause-r13 ENUMERATED { undefined,
+ ...,
+ assistanceDataMissing-v1420
+ },
+ ...
+}
+
+
+Sensor-ProvideAssistanceData-r14 ::= SEQUENCE {
+ sensor-AssistanceDataList-r14 Sensor-AssistanceDataList-r14 OPTIONAL, -- Need ON
+ sensor-Error-r14 Sensor-Error-r13 OPTIONAL, -- Need ON
+ ...
+}
+
+
+Sensor-AssistanceDataList-r14::= SEQUENCE {
+ refPressure-r14 INTEGER (-20000..10000),
+ refPosition-r14 EllipsoidPointWithAltitudeAndUncertaintyEllipsoid OPTIONAL, -- Need ON
+ refTemperature-r14 INTEGER (-64..63) OPTIONAL, -- Need ON
+ ...,
+ [[
+ period-v1520 SEQUENCE {
+ pressureValidityPeriod-v1520 PressureValidityPeriod-v1520,
+ referencePressureRate-v1520 INTEGER (-128..127) OPTIONAL, -- Need ON
+ ...
+ } OPTIONAL, -- Need ON
+ area-v1520 SEQUENCE {
+ pressureValidityArea-v1520 PressureValidityArea-v1520,
+ gN-pressure-v1520 INTEGER (-1024..1023) OPTIONAL, -- Need ON
+ gE-pressure-v1520 INTEGER (-1024..1023) OPTIONAL, -- Need ON
+ ...
+ } OPTIONAL -- Need ON
+ ]]
+}
+
+PressureValidityArea-v1520 ::= SEQUENCE {
+ centerPoint-v1520 Ellipsoid-Point,
+ validityAreaWidth-v1520 INTEGER (1..128),
+ validityAreaHeight-v1520 INTEGER (1..128),
+ ...
+}
+
+PressureValidityPeriod-v1520 ::= SEQUENCE {
+ beginTime-v1520 GNSS-SystemTime,
+ beginTimeAlt-v1520 INTEGER (0..2881) OPTIONAL, -- Need ON
+ duration-v1520 INTEGER (1..2881),
+ ...
+}
+
+
+Sensor-RequestAssistanceData-r14 ::= SEQUENCE {
+ ...
+}
+
+
+WLAN-ProvideLocationInformation-r13 ::= SEQUENCE {
+ wlan-MeasurementInformation-r13 WLAN-MeasurementInformation-r13 OPTIONAL,
+ wlan-Error-r13 WLAN-Error-r13 OPTIONAL,
+ ...
+}
+
+
+WLAN-MeasurementInformation-r13 ::= SEQUENCE {
+ measurementReferenceTime-r13 UTCTime OPTIONAL,
+ wlan-MeasurementList-r13 WLAN-MeasurementList-r13 OPTIONAL,
+ ...
+}
+
+WLAN-MeasurementList-r13 ::= SEQUENCE (SIZE(1..maxWLAN-AP-r13)) OF WLAN-MeasurementElement-r13
+
+WLAN-MeasurementElement-r13 ::= SEQUENCE {
+ wlan-AP-Identifier-r13 WLAN-AP-Identifier-r13,
+ rssi-r13 INTEGER (-127..128) OPTIONAL,
+ rtt-r13 WLAN-RTT-r13 OPTIONAL,
+ apChannelFrequency-r13 INTEGER (0..256) OPTIONAL,
+ servingFlag-r13 BOOLEAN OPTIONAL,
+ ...
+}
+
+WLAN-AP-Identifier-r13 ::= SEQUENCE {
+ bssid-r13 OCTET STRING (SIZE (6)),
+ ssid-r13 OCTET STRING (SIZE (1..32)) OPTIONAL,
+ ...
+}
+
+WLAN-RTT-r13 ::= SEQUENCE {
+ rttValue-r13 INTEGER (0..16777215),
+ rttUnits-r13 ENUMERATED { microseconds,
+ hundredsofnanoseconds,
+ tensofnanoseconds,
+ nanoseconds,
+ tenthsofnanoseconds,
+ ... },
+ rttAccuracy-r13 INTEGER (0..255) OPTIONAL,
+ ...
+}
+
+
+WLAN-RequestLocationInformation-r13 ::= SEQUENCE {
+ requestedMeasurements-r13 BIT STRING {
+ rssi (0),
+ rtt (1)} (SIZE(1..8)),
+ ...,
+ [[ assistanceAvailability-r14 BOOLEAN OPTIONAL -- Need ON
+ ]]
+}
+
+
+WLAN-ProvideCapabilities-r13 ::= SEQUENCE {
+ wlan-Modes-r13 BIT STRING { standalone (0),
+ ue-assisted (1),
+ ue-based (2)} (SIZE (1..8)),
+ wlan-MeasSupported-r13 BIT STRING {
+ rssi-r13 (0),
+ rtt-r13 (1)} (SIZE(1..8)),
+ ... ,
+ [[ wlan-AP-AD-Supported-r14
+ BIT STRING { ap-identifier (0),
+ ap-location (1)} (SIZE (1..8))
+ OPTIONAL,
+ periodicalReportingSupported-r14 PositioningModes OPTIONAL,
+ idleStateForMeasurements-r14
+ ENUMERATED { required } OPTIONAL
+ ]],
+ [[ scheduledLocationRequestSupported-r17 ScheduledLocationTimeSupportPerMode-r17 OPTIONAL
+ ]]
+}
+
+
+WLAN-RequestCapabilities-r13 ::= SEQUENCE {
+ ...
+}
+
+
+WLAN-Error-r13 ::= CHOICE {
+ locationServerErrorCauses-r13 WLAN-LocationServerErrorCauses-r13,
+ targetDeviceErrorCauses-r13 WLAN-TargetDeviceErrorCauses-r13,
+ ...
+}
+
+
+WLAN-LocationServerErrorCauses-r13 ::= SEQUENCE {
+ cause-r13 ENUMERATED {undefined,
+ ...,
+ requestedADNotAvailable-v1420,
+ notAllrequestedADAvailable-v1420
+ },
+ ...,
+ [[ apLocationDataUnavailable-r14 NULL OPTIONAL -- Need ON
+ ]]
+}
+
+
+WLAN-TargetDeviceErrorCauses-r13 ::= SEQUENCE {
+ cause-r13 ENUMERATED {undefined,
+ requestedMeasurementsNotAvailable,
+ notAllrequestedMeasurementsPossible,
+ ...
+ },
+ wlan-AP-RSSI-MeasurementNotPossible-r13 NULL OPTIONAL,
+ wlan-AP-RTT-MeasurementNotPossible-r13 NULL OPTIONAL,
+ ...
+}
+
+
+WLAN-ProvideAssistanceData-r14 ::= SEQUENCE {
+ wlan-DataSet-r14 SEQUENCE (SIZE (1..maxWLAN-DataSets-r14)) OF WLAN-DataSet-r14
+ OPTIONAL, -- Need ON
+ wlan-Error-r14 WLAN-Error-r13 OPTIONAL, -- Need ON
+ ...
+}
+
+
+WLAN-DataSet-r14 ::= SEQUENCE {
+ wlan-AP-List-r14 SEQUENCE (SIZE (1..maxWLAN-AP-r14)) OF WLAN-AP-Data-r14,
+ supportedChannels-11a-r14 SupportedChannels-11a-r14 OPTIONAL, -- Need ON
+ supportedChannels-11bg-r14 SupportedChannels-11bg-r14 OPTIONAL, -- Need ON
+ ...
+}
+
+SupportedChannels-11a-r14 ::= SEQUENCE {
+ ch34-r14 BOOLEAN,
+ ch36-r14 BOOLEAN,
+ ch38-r14 BOOLEAN,
+ ch40-r14 BOOLEAN,
+ ch42-r14 BOOLEAN,
+ ch44-r14 BOOLEAN,
+ ch46-r14 BOOLEAN,
+ ch48-r14 BOOLEAN,
+ ch52-r14 BOOLEAN,
+ ch56-r14 BOOLEAN,
+ ch60-r14 BOOLEAN,
+ ch64-r14 BOOLEAN,
+ ch149-r14 BOOLEAN,
+ ch153-r14 BOOLEAN,
+ ch157-r14 BOOLEAN,
+ ch161-r14 BOOLEAN
+}
+
+SupportedChannels-11bg-r14 ::= SEQUENCE {
+ ch1-r14 BOOLEAN,
+ ch2-r14 BOOLEAN,
+ ch3-r14 BOOLEAN,
+ ch4-r14 BOOLEAN,
+ ch5-r14 BOOLEAN,
+ ch6-r14 BOOLEAN,
+ ch7-r14 BOOLEAN,
+ ch8-r14 BOOLEAN,
+ ch9-r14 BOOLEAN,
+ ch10-r14 BOOLEAN,
+ ch11-r14 BOOLEAN,
+ ch12-r14 BOOLEAN,
+ ch13-r14 BOOLEAN,
+ ch14-r14 BOOLEAN
+}
+
+
+WLAN-AP-Data-r14 ::= SEQUENCE {
+ wlan-AP-Identifier-r14 WLAN-AP-Identifier-r13,
+ wlan-AP-Location-r14 WLAN-AP-Location-r14 OPTIONAL, -- Need ON
+ ...
+}
+
+WLAN-AP-Location-r14 ::= SEQUENCE {
+ locationDataLCI-r14 LocationDataLCI-r14,
+ ...
+}
+
+LocationDataLCI-r14 ::= SEQUENCE {
+ latitudeUncertainty-r14 BIT STRING (SIZE (6)),
+ latitude-r14 BIT STRING (SIZE (34)),
+ longitudeUncertainty-r14 BIT STRING (SIZE (6)),
+ longitude-r14 BIT STRING (SIZE (34)),
+ altitudeUncertainty-r14 BIT STRING (SIZE (6)) OPTIONAL, -- Need ON
+ altitude-r14 BIT STRING (SIZE (30)) OPTIONAL, -- Need ON
+ datum-r14 BIT STRING (SIZE (8)),
+ ...
+}
+
+
+WLAN-RequestAssistanceData-r14 ::= SEQUENCE {
+ requestedAD-r14 BIT STRING { ap-identifier (0),
+ ap-location (1)} (SIZE (1..8)),
+ visibleAPs-r14 SEQUENCE (SIZE (1..maxVisibleAPs-r14)) OF WLAN-AP-Identifier-r13 OPTIONAL,
+ wlan-AP-StoredData-r14 SEQUENCE (SIZE (1..maxKnownAPs-r14)) OF WLAN-AP-Identifier-r13 OPTIONAL,
+ ...
+}
+
+
+BT-ProvideLocationInformation-r13 ::= SEQUENCE {
+ bt-MeasurementInformation-r13 BT-MeasurementInformation-r13 OPTIONAL,
+ bt-Error-r13 BT-Error-r13 OPTIONAL,
+ ...
+}
+
+
+BT-MeasurementInformation-r13 ::= SEQUENCE {
+ measurementReferenceTime-r13 UTCTime OPTIONAL,
+ bt-MeasurementList-r13 BT-MeasurementList-r13 OPTIONAL,
+ ...
+}
+
+BT-MeasurementList-r13 ::= SEQUENCE (SIZE(1..maxBT-Beacon-r13)) OF BT-MeasurementElement-r13
+
+
+BT-MeasurementElement-r13 ::= SEQUENCE {
+ btAddr-r13 BIT STRING (SIZE (48)),
+ rssi-r13 INTEGER (-128..127) OPTIONAL,
+ ...
+}
+
+
+BT-RequestLocationInformation-r13 ::= SEQUENCE {
+ requestedMeasurements-r13 BIT STRING {
+ rssi (0)} (SIZE(1..8)),
+ ...
+}
+
+
+BT-ProvideCapabilities-r13 ::= SEQUENCE {
+ bt-Modes-r13 BIT STRING { standalone (0),
+ ue-assisted (1)} (SIZE (1..8)),
+ bt-MeasSupported-r13 BIT STRING { rssi-r13 (0)} (SIZE (1..8)),
+ ...,
+ [[
+ idleStateForMeasurements-r14
+ ENUMERATED { required } OPTIONAL,
+ periodicalReportingSupported-r14
+ PositioningModes OPTIONAL
+ ]],
+ [[ scheduledLocationRequestSupported-r17 ScheduledLocationTimeSupportPerMode-r17 OPTIONAL
+ ]]
+}
+
+
+BT-RequestCapabilities-r13 ::= SEQUENCE {
+ ...
+}
+
+
+BT-Error-r13 ::= CHOICE {
+ locationServerErrorCauses-r13 BT-LocationServerErrorCauses-r13,
+ targetDeviceErrorCauses-r13 BT-TargetDeviceErrorCauses-r13,
+ ...
+}
+
+
+BT-LocationServerErrorCauses-r13 ::= SEQUENCE {
+ cause-r13 ENUMERATED {undefined, ...},
+ ...
+}
+
+
+BT-TargetDeviceErrorCauses-r13 ::= SEQUENCE {
+ cause-r13 ENUMERATED {undefined,
+ requestedMeasurementsNotAvailable,
+ notAllrequestedMeasurementsPossible,
+ ...
+ },
+ bt-Beacon-rssiMeasurementNotPossible-r13 NULL OPTIONAL,
+ ...
+}
+
+
+NR-UL-ProvideCapabilities-r16 ::= SEQUENCE {
+ nr-UL-SRS-Capability-r16 NR-UL-SRS-Capability-r16,
+ ...,
+ [[
+ nr-UE-TEG-Capability-r17 NR-UE-TEG-Capability-r17 OPTIONAL
+ ]]
+}
+
+
+NR-UL-RequestCapabilities-r16 ::= SEQUENCE {
+ ...
+}
+
+NR-ECID-ProvideLocationInformation-r16 ::= SEQUENCE {
+ nr-ECID-SignalMeasurementInformation-r16 NR-ECID-SignalMeasurementInformation-r16 OPTIONAL,
+ nr-ECID-Error-r16 NR-ECID-Error-r16 OPTIONAL,
+ ...
+}
+
+
+NR-ECID-SignalMeasurementInformation-r16 ::= SEQUENCE {
+ nr-PrimaryCellMeasuredResults-r16 NR-MeasuredResultsElement-r16,
+ nr-MeasuredResultsList-r16 NR-MeasuredResultsList-r16 OPTIONAL,
+ ...
+}
+
+NR-MeasuredResultsList-r16 ::= SEQUENCE (SIZE(1..32)) OF NR-MeasuredResultsElement-r16
+
+NR-MeasuredResultsElement-r16 ::= SEQUENCE {
+ nr-PhysCellID-r16 NR-PhysCellID-r16,
+ nr-ARFCN-r16 CHOICE {
+ ssb-ARFCN-r16 ARFCN-ValueNR-r15,
+ csi-RS-pointA-r16 ARFCN-ValueNR-r15
+ },
+ nr-CellGlobalID-r16 NCGI-r15 OPTIONAL,
+ systemFrameNumber-r16 BIT STRING (SIZE (10)) OPTIONAL, resultsSSB-Cell-r16 MeasQuantityResults-r16 OPTIONAL,
+ resultsCSI-RS-Cell-r16 MeasQuantityResults-r16 OPTIONAL,
+ resultsSSB-Indexes-r16 ResultsPerSSB-IndexList-r16 OPTIONAL,
+ resultsCSI-RS-Indexes-r16 ResultsPerCSI-RS-IndexList-r16 OPTIONAL,
+ ...
+}
+
+MeasQuantityResults-r16 ::= SEQUENCE {
+ nr-RSRP-r16 INTEGER (0..127) OPTIONAL,
+ nr-RSRQ-r16 INTEGER (0..127) OPTIONAL
+}
+
+ResultsPerSSB-IndexList-r16::= SEQUENCE (SIZE (1..64)) OF ResultsPerSSB-Index-r16
+
+ResultsPerSSB-Index-r16 ::= SEQUENCE {
+ ssb-Index-r16 INTEGER (0..63),
+ ssb-Results-r16 MeasQuantityResults-r16
+}
+
+ResultsPerCSI-RS-IndexList-r16::= SEQUENCE (SIZE (1..64)) OF ResultsPerCSI-RS-Index-r16
+
+ResultsPerCSI-RS-Index-r16 ::= SEQUENCE {
+ csi-RS-Index-r16 INTEGER (0..95),
+ csi-RS-Results-r16 MeasQuantityResults-r16
+}
+
+
+NR-ECID-RequestLocationInformation-r16 ::= SEQUENCE {
+ requestedMeasurements-r16 BIT STRING { ssrsrpReq (0),
+ ssrsrqReq (1),
+ csirsrpReq (2),
+ csirsrqReq (3)} (SIZE(1..8)),
+ ...
+}
+
+
+NR-ECID-ProvideCapabilities-r16 ::= SEQUENCE {
+ nr-ECID-MeasSupported-r16 BIT STRING { ssrsrpSup (0),
+ ssrsrqSup (1),
+ csirsrpSup (2),
+ csirsrqSup (3)} (SIZE(1..8)),
+ periodicalReporting-r16 ENUMERATED { supported } OPTIONAL,
+ triggeredReporting-r16 ENUMERATED { supported } OPTIONAL,
+ ...,
+ [[
+ ten-ms-unit-ResponseTime-r17 ENUMERATED { supported } OPTIONAL,
+ scheduledLocationRequestSupported-r17
+ ScheduledLocationTimeSupport-r17 OPTIONAL
+ ]]
+}
+
+
+NR-ECID-RequestCapabilities-r16 ::= SEQUENCE {
+ ...
+}
+
+
+NR-ECID-Error-r16 ::= CHOICE {
+ locationServerErrorCauses-r16 NR-ECID-LocationServerErrorCauses-r16,
+ targetDeviceErrorCauses-r16 NR-ECID-TargetDeviceErrorCauses-r16,
+ ...
+}
+
+
+NR-ECID-LocationServerErrorCauses-r16 ::= SEQUENCE {
+ cause-r16 ENUMERATED { undefined,
+ ...
+ },
+ ...
+}
+
+
+NR-ECID-TargetDeviceErrorCauses-r16 ::= SEQUENCE {
+ cause-r16 ENUMERATED { undefined,
+ requestedMeasurementNotAvailable,
+ notAllrequestedMeasurementsPossible,
+ ...
+ },
+ ss-RSRPMeasurementNotPossible-r16 NULL OPTIONAL,
+ ss-RSRQMeasurementNotPossible-r16 NULL OPTIONAL,
+ csi-RSRPMeasurementNotPossible-r16 NULL OPTIONAL,
+ csi-RSRQMeasurementNotPossible-r16 NULL OPTIONAL,
+ ...
+}
+
+
+NR-DL-TDOA-ProvideAssistanceData-r16 ::= SEQUENCE {
+ nr-DL-PRS-AssistanceData-r16 NR-DL-PRS-AssistanceData-r16 OPTIONAL, -- Need ON
+ nr-SelectedDL-PRS-IndexList-r16 NR-SelectedDL-PRS-IndexList-r16 OPTIONAL, -- Need ON
+ nr-PositionCalculationAssistance-r16
+ NR-PositionCalculationAssistance-r16
+ OPTIONAL, -- Cond UEB
+ nr-DL-TDOA-Error-r16 NR-DL-TDOA-Error-r16 OPTIONAL, -- Need ON
+ ...,
+ [[
+ nr-On-Demand-DL-PRS-Configurations-r17
+ NR-On-Demand-DL-PRS-Configurations-r17
+ OPTIONAL, -- Need ON
+ nr-On-Demand-DL-PRS-Configurations-Selected-IndexList-r17
+ NR-On-Demand-DL-PRS-Configurations-Selected-IndexList-r17 OPTIONAL, -- Need ON
+ assistanceDataValidityArea-r17 AreaID-CellList-r17 OPTIONAL -- Need ON
+ ]]
+}
+
+
+NR-DL-TDOA-RequestAssistanceData-r16 ::= SEQUENCE {
+ nr-PhysCellID-r16 NR-PhysCellID-r16 OPTIONAL,
+ nr-AdType-r16 BIT STRING { dl-prs (0),
+ posCalc (1) } (SIZE (1..8)),
+ ...,
+ [[
+ nr-PosCalcAssistanceRequest-r17 BIT STRING { trpLoc (0),
+ beamInfo (1),
+ rtdInfo (2),
+ losNlosInfo (3),
+ trpTEG-Info (4)
+ } (SIZE (1..8)) OPTIONAL,
+ nr-on-demand-DL-PRS-Request-r17 NR-On-Demand-DL-PRS-Request-r17 OPTIONAL,
+ nr-DL-PRS-ExpectedAoD-or-AoA-Request-r17
+ ENUMERATED { eAoD, eAoA } OPTIONAL,
+ pre-configured-AssistanceDataRequest-r17
+ ENUMERATED { true } OPTIONAL
+ ]]
+}
+
+
+NR-DL-TDOA-ProvideLocationInformation-r16 ::= SEQUENCE {
+ nr-DL-TDOA-SignalMeasurementInformation-r16
+ NR-DL-TDOA-SignalMeasurementInformation-r16
+ OPTIONAL,
+ nr-dl-tdoa-LocationInformation-r16 NR-DL-TDOA-LocationInformation-r16
+ OPTIONAL,
+ nr-DL-TDOA-Error-r16 NR-DL-TDOA-Error-r16 OPTIONAL,
+ ...,
+ [[
+ nr-DL-TDOA-SignalMeasurementInstances-r17
+ SEQUENCE (SIZE (1..maxMeasInstances-r17)) OF
+ NR-DL-TDOA-SignalMeasurementInformation-r16
+ OPTIONAL, -- Cond batchUEA
+ nr-DL-TDOA-LocationInformationInstances-r17
+ SEQUENCE (SIZE (1..maxMeasInstances-r17)) OF
+ NR-DL-TDOA-LocationInformation-r16
+ OPTIONAL -- Cond batchUEB
+ ]]
+}
+
+
+NR-DL-TDOA-SignalMeasurementInformation-r16 ::= SEQUENCE {
+ dl-PRS-ReferenceInfo-r16 DL-PRS-ID-Info-r16,
+ nr-DL-TDOA-MeasList-r16 NR-DL-TDOA-MeasList-r16,
+ ...,
+ [[
+ nr-UE-RxTEG-TimingErrorMargin-r17 TEG-TimingErrorMargin-r17 OPTIONAL -- Cond UERxTEG
+ ]]
+}
+
+NR-DL-TDOA-MeasList-r16 ::= SEQUENCE (SIZE(1..nrMaxTRPs-r16)) OF NR-DL-TDOA-MeasElement-r16
+
+NR-DL-TDOA-MeasElement-r16 ::= SEQUENCE {
+ dl-PRS-ID-r16 INTEGER (0..255),
+ nr-PhysCellID-r16 NR-PhysCellID-r16 OPTIONAL,
+ nr-CellGlobalID-r16 NCGI-r15 OPTIONAL,
+ nr-ARFCN-r16 ARFCN-ValueNR-r15 OPTIONAL,
+ nr-DL-PRS-ResourceID-r16 NR-DL-PRS-ResourceID-r16 OPTIONAL,
+ nr-DL-PRS-ResourceSetID-r16 NR-DL-PRS-ResourceSetID-r16 OPTIONAL,
+ nr-TimeStamp-r16 NR-TimeStamp-r16,
+ nr-RSTD-r16 CHOICE {
+ k0-r16 INTEGER (0..1970049),
+ k1-r16 INTEGER (0..985025),
+ k2-r16 INTEGER (0..492513),
+ k3-r16 INTEGER (0..246257),
+ k4-r16 INTEGER (0..123129),
+ k5-r16 INTEGER (0..61565),
+ ...
+ },
+ nr-AdditionalPathList-r16 NR-AdditionalPathList-r16 OPTIONAL,
+ nr-TimingQuality-r16 NR-TimingQuality-r16,
+ nr-DL-PRS-RSRP-Result-r16 INTEGER (0..126) OPTIONAL,
+ nr-DL-TDOA-AdditionalMeasurements-r16
+ NR-DL-TDOA-AdditionalMeasurements-r16 OPTIONAL,
+ ...,
+ [[
+ nr-UE-Rx-TEG-ID-r17 INTEGER (0..maxNumOfRxTEGs-1-r17) OPTIONAL,
+ nr-DL-PRS-FirstPathRSRP-Result-r17 INTEGER (0..126) OPTIONAL,
+ nr-los-nlos-Indicator-r17 CHOICE {
+ perTRP-r17 LOS-NLOS-Indicator-r17,
+ perResource-r17 LOS-NLOS-Indicator-r17
+ } OPTIONAL,
+ nr-AdditionalPathListExt-r17 NR-AdditionalPathListExt-r17 OPTIONAL,
+ nr-DL-TDOA-AdditionalMeasurementsExt-r17
+ NR-DL-TDOA-AdditionalMeasurementsExt-r17 OPTIONAL
+ ]]
+}
+
+NR-DL-TDOA-AdditionalMeasurements-r16 ::= SEQUENCE (SIZE (1..3)) OF
+ NR-DL-TDOA-AdditionalMeasurementElement-r16
+
+NR-DL-TDOA-AdditionalMeasurementsExt-r17 ::= SEQUENCE (SIZE (1..maxAddMeasTDOA-r17)) OF
+ NR-DL-TDOA-AdditionalMeasurementElement-r16
+
+NR-DL-TDOA-AdditionalMeasurementElement-r16 ::= SEQUENCE {
+ nr-DL-PRS-ResourceID-r16 NR-DL-PRS-ResourceID-r16 OPTIONAL,
+ nr-DL-PRS-ResourceSetID-r16 NR-DL-PRS-ResourceSetID-r16 OPTIONAL,
+ nr-TimeStamp-r16 NR-TimeStamp-r16,
+ nr-RSTD-ResultDiff-r16 CHOICE {
+ k0-r16 INTEGER (0..8191),
+ k1-r16 INTEGER (0..4095),
+ k2-r16 INTEGER (0..2047),
+ k3-r16 INTEGER (0..1023),
+ k4-r16 INTEGER (0..511),
+ k5-r16 INTEGER (0..255),
+ ...
+ },
+ nr-TimingQuality-r16 NR-TimingQuality-r16,
+ nr-DL-PRS-RSRP-ResultDiff-r16 INTEGER (0..61) OPTIONAL,
+ nr-AdditionalPathList-r16 NR-AdditionalPathList-r16 OPTIONAL,
+ ...,
+ [[
+ nr-UE-Rx-TEG-ID-r17 INTEGER (0..maxNumOfRxTEGs-1-r17) OPTIONAL,
+ nr-DL-PRS-FirstPathRSRP-ResultDiff-r17
+ INTEGER (0..61) OPTIONAL,
+ nr-los-nlos-IndicatorPerResource-r17
+ LOS-NLOS-Indicator-r17 OPTIONAL,
+ nr-AdditionalPathListExt-r17 NR-AdditionalPathListExt-r17 OPTIONAL
+ ]]
+}
+
+
+NR-DL-TDOA-LocationInformation-r16 ::= SEQUENCE {
+ measurementReferenceTime-r16 CHOICE {
+ systemFrameNumber-r16 NR-TimeStamp-r16,
+ utc-time-r16 UTCTime,
+ ...
+ } OPTIONAL,
+ ...,
+ [[
+ locationCoordinates-r17 LocationCoordinates OPTIONAL, -- Cond batch1
+ locationSource-r17 LocationSource-r13 OPTIONAL -- Cond batch2
+ ]]
+}
+
+
+NR-DL-TDOA-RequestLocationInformation-r16 ::= SEQUENCE {
+ nr-DL-PRS-RstdMeasurementInfoRequest-r16 ENUMERATED { true } OPTIONAL,-- Need ON
+ nr-RequestedMeasurements-r16 BIT STRING { prsrsrpReq (0),
+ firstPathRsrpReq-r17 (1)
+ } (SIZE(1..8)),
+ nr-AssistanceAvailability-r16 BOOLEAN,
+ nr-DL-TDOA-ReportConfig-r16 NR-DL-TDOA-ReportConfig-r16 OPTIONAL, -- Need ON
+ additionalPaths-r16 ENUMERATED { requested } OPTIONAL, -- Need ON
+ ...,
+ [[
+ nr-UE-RxTEG-Request-r17 ENUMERATED { requested } OPTIONAL, -- Need ON
+ nr-los-nlos-IndicatorRequest-r17 SEQUENCE {
+ type-r17 LOS-NLOS-IndicatorType1-r17,
+ granularity-r17 LOS-NLOS-IndicatorGranularity1-r17,
+ ...
+ } OPTIONAL, -- Need ON
+ additionalPathsExt-r17 ENUMERATED { requested } OPTIONAL, -- Need ON
+ additionalPathsDL-PRS-RSRP-Request-r17 ENUMERATED { requested } OPTIONAL, -- Need ON
+ multiMeasInSameReport-r17 ENUMERATED { requested } OPTIONAL -- Need ON
+
+ ]]
+}
+
+NR-DL-TDOA-ReportConfig-r16 ::= SEQUENCE {
+ maxDL-PRS-RSTD-MeasurementsPerTRP-Pair-r16 INTEGER (1..4) OPTIONAL, -- Need ON
+ timingReportingGranularityFactor-r16 INTEGER (0..5) OPTIONAL, -- Need ON
+ ...,
+ [[
+ measureSameDL-PRS-ResourceWithDifferentRxTEGs-r17
+ ENUMERATED { n0, n2, n3, n4, n6, n8, ... }
+ OPTIONAL, -- Need ON
+ reducedDL-PRS-ProcessingSamples-r17 ENUMERATED { requested, ... } OPTIONAL, -- Need ON
+ lowerRxBeamSweepingFactor-FR2-r17 ENUMERATED { requested } OPTIONAL -- Need ON
+ ]]
+}
+
+
+NR-DL-TDOA-ProvideCapabilities-r16 ::= SEQUENCE {
+ nr-DL-TDOA-Mode-r16 PositioningModes,
+ nr-DL-TDOA-PRS-Capability-r16 NR-DL-PRS-ResourcesCapability-r16,
+ nr-DL-TDOA-MeasurementCapability-r16 NR-DL-TDOA-MeasurementCapability-r16,
+ nr-DL-PRS-QCL-ProcessingCapability-r16 NR-DL-PRS-QCL-ProcessingCapability-r16,
+ nr-DL-PRS-ProcessingCapability-r16 NR-DL-PRS-ProcessingCapability-r16,
+ additionalPathsReport-r16 ENUMERATED { supported } OPTIONAL,
+ periodicalReporting-r16 PositioningModes OPTIONAL,
+ ...,
+ [[
+ ten-ms-unit-ResponseTime-r17 PositioningModes OPTIONAL,
+ nr-PosCalcAssistanceSupport-r17 BIT STRING { trpLocSup (0),
+ beamInfoSup (1),
+ rtdInfoSup (2),
+ trpTEG-InfoSup (3)
+ } (SIZE (1..8)) OPTIONAL,
+ nr-los-nlos-AssistanceDataSupport-r17 SEQUENCE {
+ type-r17 LOS-NLOS-IndicatorType2-r17,
+ granularity-r17 LOS-NLOS-IndicatorGranularity2-r17,
+ ...
+ } OPTIONAL,
+ nr-DL-PRS-ExpectedAoD-or-AoA-Sup-r17 BIT STRING { eAoD (0),
+ eAoA (1)
+ } (SIZE (1..8)) OPTIONAL,
+ nr-DL-TDOA-On-Demand-DL-PRS-Support-r17 NR-On-Demand-DL-PRS-Support-r17 OPTIONAL,
+ nr-los-nlos-IndicatorSupport-r17 SEQUENCE {
+ type-r17 LOS-NLOS-IndicatorType2-r17,
+ granularity-r17 LOS-NLOS-IndicatorGranularity2-r17,
+ ...
+ } OPTIONAL,
+ additionalPathsExtSupport-r17 ENUMERATED { n4, n6, n8 } OPTIONAL,
+ scheduledLocationRequestSupported-r17 ScheduledLocationTimeSupportPerMode-r17 OPTIONAL,
+ nr-dl-prs-AssistanceDataValidity-r17 SEQUENCE {
+ area-validity-r17 INTEGER (1..maxNrOfAreas-r17) OPTIONAL, ...
+ } OPTIONAL,
+ multiMeasInSameMeasReport-r17 ENUMERATED { supported } OPTIONAL,
+ mg-ActivationRequest-r17 ENUMERATED { supported } OPTIONAL
+ ]],
+ [[
+ posMeasGapSupport-r17 ENUMERATED { supported } OPTIONAL
+ ]]
+}
+
+
+NR-DL-TDOA-MeasurementCapability-r16 ::= SEQUENCE {
+ dl-RSTD-MeasurementPerPairOfTRP-FR1-r16 INTEGER (1..4),
+ dl-RSTD-MeasurementPerPairOfTRP-FR2-r16 INTEGER (1..4),
+ supportOfDL-PRS-RSRP-MeasFR1-r16 ENUMERATED { supported} OPTIONAL,
+ supportOfDL-PRS-RSRP-MeasFR2-r16 ENUMERATED { supported} OPTIONAL,
+ ...,
+ [[
+ nr-UE-TEG-Capability-r17 NR-UE-TEG-Capability-r17 OPTIONAL,
+ dl-tdoa-MeasCapabilityBandList-r17 SEQUENCE (SIZE (1..nrMaxBands-r16)) OF
+ DL-TDOA-MeasCapabilityPerBand-r17 OPTIONAL
+ ]]
+}
+
+DL-TDOA-MeasCapabilityPerBand-r17 ::= SEQUENCE {
+ freqBandIndicatorNR-r17 FreqBandIndicatorNR-r16,
+ supportOfDL-PRS-FirstPathRSRP-r17 ENUMERATED { supported } OPTIONAL,
+ dl-PRS-MeasRRC-Inactive-r17 ENUMERATED { supported } OPTIONAL,
+ ...
+}
+
+
+NR-DL-TDOA-RequestCapabilities-r16 ::= SEQUENCE {
+ ...
+}
+
+
+NR-DL-TDOA-Error-r16 ::= CHOICE {
+ locationServerErrorCauses-r16 NR-DL-TDOA-LocationServerErrorCauses-r16,
+ targetDeviceErrorCauses-r16 NR-DL-TDOA-TargetDeviceErrorCauses-r16,
+ ...
+}
+
+
+NR-DL-TDOA-LocationServerErrorCauses-r16 ::= SEQUENCE {
+ cause-r16 ENUMERATED { undefined,
+ assistanceDataNotSupportedByServer,
+ assistanceDataSupportedButCurrentlyNotAvailableByServer,
+ notProvidedAssistanceDataNotSupportedByServer,
+ ...,
+ on-demand-dl-prs-NotSupportedByServer-v1700,
+ on-demand-dl-prs-SupportedButCurrentlyNotAvailableByServer-v1700
+ },
+ ...
+}
+
+
+NR-DL-TDOA-TargetDeviceErrorCauses-r16 ::= SEQUENCE {
+ cause-r16 ENUMERATED { undefined,
+ assistance-data-missing,
+ unableToMeasureAnyTRP,
+ attemptedButUnableToMeasureSomeNeighbourTRPs,
+ thereWereNotEnoughSignalsReceivedForUeBasedDL-TDOA,
+ locationCalculationAssistanceDataMissing,
+ ...
+ },
+ ...
+}
+
+
+NR-DL-AoD-ProvideAssistanceData-r16 ::= SEQUENCE {
+ nr-DL-PRS-AssistanceData-r16 NR-DL-PRS-AssistanceData-r16 OPTIONAL, -- Need ON
+ nr-SelectedDL-PRS-IndexList-r16 NR-SelectedDL-PRS-IndexList-r16 OPTIONAL, -- Need ON
+ nr-PositionCalculationAssistance-r16
+ NR-PositionCalculationAssistance-r16
+ OPTIONAL, -- Cond UEB
+ nr-DL-AoD-Error-r16 NR-DL-AoD-Error-r16 OPTIONAL, -- Need ON
+ ...,
+ [[
+ nr-DL-PRS-BeamInfo-r17 NR-DL-PRS-BeamInfo-r16 OPTIONAL, -- Cond UEA
+ nr-On-Demand-DL-PRS-Configurations-r17
+ NR-On-Demand-DL-PRS-Configurations-r17
+ OPTIONAL, -- Need ON
+ nr-On-Demand-DL-PRS-Configurations-Selected-IndexList-r17
+ NR-On-Demand-DL-PRS-Configurations-Selected-IndexList-r17
+ OPTIONAL, -- Need ON
+ assistanceDataValidityArea-r17 AreaID-CellList-r17 OPTIONAL -- Need ON
+ ]]
+}
+
+
+NR-DL-AoD-RequestAssistanceData-r16 ::= SEQUENCE {
+ nr-PhysCellID-r16 NR-PhysCellID-r16 OPTIONAL,
+ nr-AdType-r16 BIT STRING { dl-prs (0),
+ posCalc (1) } (SIZE (1..8)),
+ ...,
+ [[
+ nr-PosCalcAssistanceRequest-r17 BIT STRING { trpLoc (0),
+ beamInfo (1),
+ rtdInfo (2),
+ beamAntInfo (3),
+ losNlosInfo (4)
+ } (SIZE (1..8)) OPTIONAL,
+ nr-DL-PRS-ExpectedAoD-or-AoA-Request-r17 ENUMERATED { eAoD, eAoA } OPTIONAL,
+ nr-DL-PRS-BeamInfoRequest-r17 ENUMERATED { requested } OPTIONAL,
+ nr-on-demand-DL-PRS-Request-r17 NR-On-Demand-DL-PRS-Request-r17 OPTIONAL,
+ pre-configured-AssistanceDataRequest-r17 ENUMERATED { true } OPTIONAL
+ ]]
+}
+
+
+NR-DL-AoD-ProvideLocationInformation-r16 ::= SEQUENCE {
+ nr-DL-AoD-SignalMeasurementInformation-r16
+ NR-DL-AoD-SignalMeasurementInformation-r16
+ OPTIONAL,
+ nr-dl-AoD-LocationInformation-r16 NR-DL-AoD-LocationInformation-r16
+ OPTIONAL,
+ nr-DL-AoD-Error-r16 NR-DL-AoD-Error-r16 OPTIONAL,
+ ...,
+ [[
+ nr-DL-AoD-SignalMeasurementInstances-r17 SEQUENCE (SIZE (1..maxMeasInstances-r17)) OF
+ NR-DL-AoD-SignalMeasurementInformation-r16 OPTIONAL, -- Cond batchUEA
+ nr-DL-AoD-LocationInformationInstances-r17 SEQUENCE (SIZE (1..maxMeasInstances-r17)) OF
+ NR-DL-AoD-LocationInformation-r16 OPTIONAL -- Cond batchUEB
+ ]]
+}
+
+
+NR-DL-AoD-SignalMeasurementInformation-r16 ::= SEQUENCE {
+ nr-DL-AoD-MeasList-r16 NR-DL-AoD-MeasList-r16,
+ ...
+}
+
+NR-DL-AoD-MeasList-r16 ::= SEQUENCE (SIZE(1..nrMaxTRPs-r16)) OF NR-DL-AoD-MeasElement-r16
+
+NR-DL-AoD-MeasElement-r16 ::= SEQUENCE {
+ dl-PRS-ID-r16 INTEGER (0..255),
+ nr-PhysCellID-r16 NR-PhysCellID-r16 OPTIONAL,
+ nr-CellGlobalID-r16 NCGI-r15 OPTIONAL,
+ nr-ARFCN-r16 ARFCN-ValueNR-r15 OPTIONAL,
+ nr-DL-PRS-ResourceID-r16 NR-DL-PRS-ResourceID-r16 OPTIONAL,
+ nr-DL-PRS-ResourceSetID-r16 NR-DL-PRS-ResourceSetID-r16 OPTIONAL,
+ nr-TimeStamp-r16 NR-TimeStamp-r16,
+ nr-DL-PRS-RSRP-Result-r16 INTEGER (0..126),
+ nr-DL-PRS-RxBeamIndex-r16 INTEGER (1..8) OPTIONAL,
+ nr-DL-AoD-AdditionalMeasurements-r16
+ NR-DL-AoD-AdditionalMeasurements-r16 OPTIONAL,
+ ...,
+ [[
+ nr-DL-PRS-FirstPathRSRP-Result-r17
+ INTEGER (0..126) OPTIONAL,
+ nr-los-nlos-Indicator-r17 CHOICE {
+ perTRP-r17 LOS-NLOS-Indicator-r17,
+ perResource-r17 LOS-NLOS-Indicator-r17
+ } OPTIONAL,
+ nr-DL-AoD-AdditionalMeasurementsExt-r17
+ NR-DL-AoD-AdditionalMeasurementsExt-r17 OPTIONAL
+ ]]
+}
+
+NR-DL-AoD-AdditionalMeasurements-r16 ::= SEQUENCE (SIZE (1..7)) OF
+ NR-DL-AoD-AdditionalMeasurementElement-r16
+
+NR-DL-AoD-AdditionalMeasurementsExt-r17 ::= SEQUENCE (SIZE (1..maxAddMeasAoD-r17)) OF
+ NR-DL-AoD-AdditionalMeasurementElement-r17
+
+NR-DL-AoD-AdditionalMeasurementElement-r16 ::= SEQUENCE {
+ nr-DL-PRS-ResourceID-r16 NR-DL-PRS-ResourceID-r16 OPTIONAL,
+ nr-DL-PRS-ResourceSetID-r16 NR-DL-PRS-ResourceSetID-r16 OPTIONAL,
+ nr-TimeStamp-r16 NR-TimeStamp-r16,
+ nr-DL-PRS-RSRP-ResultDiff-r16 INTEGER (0..30),
+ nr-DL-PRS-RxBeamIndex-r16 INTEGER (1..8) OPTIONAL,
+ ...
+}
+
+NR-DL-AoD-AdditionalMeasurementElement-r17 ::= SEQUENCE {
+ nr-DL-PRS-ResourceID-r17 NR-DL-PRS-ResourceID-r16 OPTIONAL,
+ nr-DL-PRS-ResourceSetID-r17 NR-DL-PRS-ResourceSetID-r16 OPTIONAL,
+ nr-TimeStamp-r17 NR-TimeStamp-r16,
+ nr-DL-PRS-RSRP-ResultDiff-r17 INTEGER (0..30) OPTIONAL, -- Cond rsrp
+ nr-DL-PRS-RxBeamIndex-r17 INTEGER (1..8) OPTIONAL,
+ nr-DL-PRS-FirstPathRSRP-ResultDiff-r17 INTEGER (0..61) OPTIONAL, -- Cond rsrpp
+ nr-los-nlos-IndicatorPerResource-r17 LOS-NLOS-Indicator-r17 OPTIONAL,
+ ...
+}
+
+
+NR-DL-AoD-LocationInformation-r16 ::= SEQUENCE {
+ measurementReferenceTime-r16 CHOICE {
+ sfn-time-r16 NR-TimeStamp-r16,
+ utc-time-r16 UTCTime,
+ ...
+ } OPTIONAL,
+ ...,
+ [[
+ locationCoordinates-r17 LocationCoordinates OPTIONAL, -- Cond batch1
+ locationSource-r17 LocationSource-r13 OPTIONAL -- Cond batch2
+ ]]
+}
+
+
+NR-DL-AoD-RequestLocationInformation-r16 ::= SEQUENCE {
+ nr-AssistanceAvailability-r16 BOOLEAN,
+ nr-DL-AoD-ReportConfig-r16 NR-DL-AoD-ReportConfig-r16,
+ ...,
+ [[
+ multiMeasInSameReport-r17 ENUMERATED { requested } OPTIONAL -- Need ON
+ ]]
+}
+
+NR-DL-AoD-ReportConfig-r16 ::= SEQUENCE {
+ maxDL-PRS-RSRP-MeasurementsPerTRP-r16 INTEGER (1..8) OPTIONAL, -- Need ON
+ ...,
+ [[
+ maxDL-PRS-RSRP-MeasurementsPerTRP-r17 INTEGER (9..24) OPTIONAL, -- Need ON
+ maxDL-PRS-RSRPP-MeasurementsPerTRP-r17 INTEGER (1..24) OPTIONAL, -- Need ON
+ nr-los-nlos-IndicatorRequest-r17 SEQUENCE {
+ type-r17 LOS-NLOS-IndicatorType1-r17,
+ granularity-r17
+ LOS-NLOS-IndicatorGranularity1-r17,
+ ...
+ } OPTIONAL, -- Need ON
+ reducedDL-PRS-ProcessingSamples-r17 ENUMERATED { requested, ... }
+ OPTIONAL, -- Need ON
+ lowerRxBeamSweepingFactor-FR2-r17 ENUMERATED { requested } OPTIONAL -- Need ON
+ ]]
+}
+
+
+NR-DL-AoD-ProvideCapabilities-r16 ::= SEQUENCE {
+ nr-DL-AoD-Mode-r16 PositioningModes,
+ nr-DL-AoD-PRS-Capability-r16 NR-DL-PRS-ResourcesCapability-r16,
+ nr-DL-AoD-MeasurementCapability-r16 NR-DL-AoD-MeasurementCapability-r16,
+ nr-DL-PRS-QCL-ProcessingCapability-r16 NR-DL-PRS-QCL-ProcessingCapability-r16,
+ nr-DL-PRS-ProcessingCapability-r16 NR-DL-PRS-ProcessingCapability-r16,
+ periodicalReporting-r16 PositioningModes OPTIONAL,
+ ...,
+ [[
+ ten-ms-unit-ResponseTime-r17 PositioningModes OPTIONAL,
+ nr-PosCalcAssistanceSupport-r17 BIT STRING { trpLocSup (0),
+ beamInfoSup (1),
+ rtdInfoSup (2),
+ beamAntInfoSup (3)
+ } (SIZE (1..8)) OPTIONAL,
+ nr-los-nlos-AssistanceDataSupport-r17 SEQUENCE {
+ type-r17 LOS-NLOS-IndicatorType2-r17,
+ granularity-r17 LOS-NLOS-IndicatorGranularity2-r17,
+ ...
+ } OPTIONAL,
+ nr-DL-PRS-ExpectedAoD-or-AoA-Sup-r17 BIT STRING { eAoD (0),
+ eAoA (1)
+ } (SIZE (1..8)) OPTIONAL,
+ dl-PRS-ResourcePrioritySubset-Sup-r17 ENUMERATED { sameSet, differentSet, sameOrDifferentSet }
+ OPTIONAL,
+ nr-DL-PRS-BeamInfoSup-r17 ENUMERATED { supported } OPTIONAL,
+ nr-DL-AoD-On-Demand-DL-PRS-Support-r17 NR-On-Demand-DL-PRS-Support-r17 OPTIONAL,
+ nr-los-nlos-IndicatorSupport-r17 SEQUENCE {
+ type-r17 LOS-NLOS-IndicatorType2-r17,
+ granularity-r17 LOS-NLOS-IndicatorGranularity2-r17,
+ ...
+ } OPTIONAL,
+ scheduledLocationRequestSupported-r17 ScheduledLocationTimeSupportPerMode-r17
+ OPTIONAL,
+ nr-dl-prs-AssistanceDataValidity-r17 SEQUENCE {
+ area-validity-r17 INTEGER (1..maxNrOfAreas-r17) OPTIONAL,
+ ...
+ } OPTIONAL,
+ multiMeasInSameMeasReport-r17 ENUMERATED { supported } OPTIONAL,
+ mg-ActivationRequest-r17 ENUMERATED { supported } OPTIONAL
+ ]],
+ [[
+ posMeasGapSupport-r17 ENUMERATED { supported } OPTIONAL
+ ]]
+}
+
+
+NR-DL-AoD-MeasurementCapability-r16 ::= SEQUENCE {
+ maxDL-PRS-RSRP-MeasurementFR1-r16 INTEGER (1..8),
+ maxDL-PRS-RSRP-MeasurementFR2-r16 INTEGER (1..8),
+ dl-AoD-MeasCapabilityBandList-r16 SEQUENCE (SIZE (1..nrMaxBands-r16)) OF
+ DL-AoD-MeasCapabilityPerBand-r16,
+ ...,
+ [[
+ maxDL-PRS-RSRP-MeasurementFR1-v1730 ENUMERATED { n16, n24 } OPTIONAL,
+ maxDL-PRS-RSRP-MeasurementFR2-v1730 ENUMERATED { n16, n24 } OPTIONAL
+ ]]
+}
+
+DL-AoD-MeasCapabilityPerBand-r16 ::= SEQUENCE {
+ freqBandIndicatorNR-r16 FreqBandIndicatorNR-r16,
+ simul-NR-DL-AoD-DL-TDOA-r16 ENUMERATED { supported} OPTIONAL,
+ simul-NR-DL-AoD-Multi-RTT-r16 ENUMERATED { supported} OPTIONAL,
+ ...,
+ [[
+ maxDL-PRS-FirstPathRSRP-MeasPerTRP-r17 ENUMERATED { n1, n2, n4, n8, n16, n24 } OPTIONAL,
+ dl-PRS-MeasRRC-Inactive-r17 ENUMERATED { supported } OPTIONAL
+ ]]
+}
+
+
+NR-DL-AoD-RequestCapabilities-r16 ::= SEQUENCE {
+ ...
+}
+
+
+NR-DL-AoD-Error-r16 ::= CHOICE {
+ locationServerErrorCauses-r16 NR-DL-AoD-LocationServerErrorCauses-r16,
+ targetDeviceErrorCauses-r16 NR-DL-AoD-TargetDeviceErrorCauses-r16,
+ ...
+}
+
+
+NR-DL-AoD-LocationServerErrorCauses-r16 ::= SEQUENCE {
+ cause-r16 ENUMERATED { undefined,
+ assistanceDataNotSupportedByServer,
+ assistanceDataSupportedButCurrentlyNotAvailableByServer,
+ notProvidedAssistanceDataNotSupportedByServer,
+ ...,
+ on-demand-dl-prs-NotSupportedByServer-v1700,
+ on-demand-dl-prs-SupportedButCurrentlyNotAvailableByServer-v1700
+ },
+ ...
+}
+
+
+NR-DL-AoD-TargetDeviceErrorCauses-r16 ::= SEQUENCE {
+ cause-r16 ENUMERATED { undefined,
+ assistance-data-missing,
+ unableToMeasureAnyTRP,
+ attemptedButUnableToMeasureSomeNeighbourTRPs,
+ thereWereNotEnoughSignalsReceivedForUeBasedDL-AoD,
+ locationCalculationAssistanceDataMissing,
+ ...
+ },
+ ...
+}
+
+
+NR-Multi-RTT-ProvideAssistanceData-r16 ::= SEQUENCE {
+ nr-DL-PRS-AssistanceData-r16 NR-DL-PRS-AssistanceData-r16 OPTIONAL, -- Need ON
+ nr-SelectedDL-PRS-IndexList-r16 NR-SelectedDL-PRS-IndexList-r16 OPTIONAL, -- Need ON
+ nr-Multi-RTT-Error-r16 NR-Multi-RTT-Error-r16 OPTIONAL, -- Need ON
+ ...,
+ [[
+ nr-On-Demand-DL-PRS-Configurations-r17 NR-On-Demand-DL-PRS-Configurations-r17
+ OPTIONAL, -- Need ON
+ nr-On-Demand-DL-PRS-Configurations-Selected-IndexList-r17
+ NR-On-Demand-DL-PRS-Configurations-Selected-IndexList-r17
+ OPTIONAL, -- Need ON
+ assistanceDataValidityArea-r17 AreaID-CellList-r17 OPTIONAL -- Need ON
+ ]]
+}
+
+
+NR-Multi-RTT-RequestAssistanceData-r16 ::= SEQUENCE {
+ nr-PhysCellID-r16 NR-PhysCellID-r16 OPTIONAL,
+ nr-AdType-r16 BIT STRING { dl-prs (0),
+ ul-srs (1) } (SIZE (1..8)),
+ ...,
+ [[
+ nr-on-demand-DL-PRS-Request-r17 NR-On-Demand-DL-PRS-Request-r17 OPTIONAL,
+ nr-DL-PRS-ExpectedAoD-or-AoA-Request-r17 ENUMERATED { eAoD, eAoA } OPTIONAL,
+ pre-configured-AssistanceDataRequest-r17 ENUMERATED { true } OPTIONAL
+ ]]
+}
+
+
+NR-Multi-RTT-ProvideLocationInformation-r16 ::= SEQUENCE {
+ nr-Multi-RTT-SignalMeasurementInformation-r16
+ NR-Multi-RTT-SignalMeasurementInformation-r16
+ OPTIONAL,
+ nr-Multi-RTT-Error-r16 NR-Multi-RTT-Error-r16 OPTIONAL,
+ ...,
+ [[
+ nr-Multi-RTT-SignalMeasurementInstances-r17
+ SEQUENCE (SIZE (1..maxMeasInstances-r17)) OF
+ NR-Multi-RTT-SignalMeasurementInformation-r16
+ OPTIONAL
+ ]]
+}
+
+
+NR-Multi-RTT-SignalMeasurementInformation-r16 ::= SEQUENCE {
+ nr-Multi-RTT-MeasList-r16 NR-Multi-RTT-MeasList-r16,
+ nr-NTA-Offset-r16 ENUMERATED { nTA1, nTA2, nTA3, nTA4, ... } OPTIONAL,
+ ...,
+ [[
+ nr-SRS-TxTEG-Set-r17 SEQUENCE (SIZE(1..maxTxTEG-Sets-r17)) OF
+ NR-SRS-TxTEG-Element-r17 OPTIONAL
+ -- Cond Case2-3
+ ]],
+ [[
+ nr-UE-RxTEG-TimingErrorMargin-r17 TEG-TimingErrorMargin-r17 OPTIONAL,-- Cond TEGCase3
+ nr-UE-TxTEG-TimingErrorMargin-r17 TEG-TimingErrorMargin-r17 OPTIONAL,-- Cond TEGCase2-3
+ nr-UE-RxTxTEG-TimingErrorMargin-r17 RxTxTEG-TimingErrorMargin-r17 OPTIONAL -- Cond TEGCase1-2
+ ]]
+}
+
+NR-Multi-RTT-MeasList-r16 ::= SEQUENCE (SIZE(1..nrMaxTRPs-r16)) OF NR-Multi-RTT-MeasElement-r16
+
+NR-Multi-RTT-MeasElement-r16 ::= SEQUENCE {
+ dl-PRS-ID-r16 INTEGER (0..255),
+ nr-PhysCellID-r16 NR-PhysCellID-r16 OPTIONAL,
+ nr-CellGlobalID-r16 NCGI-r15 OPTIONAL,
+ nr-ARFCN-r16 ARFCN-ValueNR-r15 OPTIONAL,
+ nr-DL-PRS-ResourceID-r16 NR-DL-PRS-ResourceID-r16 OPTIONAL,
+ nr-DL-PRS-ResourceSetID-r16 NR-DL-PRS-ResourceSetID-r16 OPTIONAL,
+ nr-UE-RxTxTimeDiff-r16 CHOICE {
+ k0-r16 INTEGER (0..1970049),
+ k1-r16 INTEGER (0..985025),
+ k2-r16 INTEGER (0..492513),
+ k3-r16 INTEGER (0..246257),
+ k4-r16 INTEGER (0..123129),
+ k5-r16 INTEGER (0..61565),
+ ...
+ },
+ nr-AdditionalPathList-r16 NR-AdditionalPathList-r16 OPTIONAL,
+ nr-TimeStamp-r16 NR-TimeStamp-r16,
+ nr-TimingQuality-r16 NR-TimingQuality-r16,
+ nr-DL-PRS-RSRP-Result-r16 INTEGER (0..126) OPTIONAL,
+ nr-Multi-RTT-AdditionalMeasurements-r16
+ NR-Multi-RTT-AdditionalMeasurements-r16 OPTIONAL,
+ ...,
+ [[
+ nr-UE-RxTx-TEG-Info-r17 NR-UE-RxTx-TEG-Info-r17 OPTIONAL,
+ nr-DL-PRS-FirstPathRSRP-Result-r17 INTEGER (0..126) OPTIONAL,
+ nr-los-nlos-Indicator-r17 CHOICE {
+ perTRP-r17 LOS-NLOS-Indicator-r17,
+ perResource-r17 LOS-NLOS-Indicator-r17
+ } OPTIONAL,
+ nr-AdditionalPathListExt-r17 NR-AdditionalPathListExt-r17 OPTIONAL,
+ nr-Multi-RTT-AdditionalMeasurementsExt-r17
+ NR-Multi-RTT-AdditionalMeasurementsExt-r17 OPTIONAL
+ ]]
+}
+
+NR-Multi-RTT-AdditionalMeasurements-r16 ::= SEQUENCE (SIZE (1..3)) OF
+ NR-Multi-RTT-AdditionalMeasurementElement-r16
+
+NR-Multi-RTT-AdditionalMeasurementsExt-r17 ::= SEQUENCE (SIZE (1..maxAddMeasRTT-r17)) OF
+ NR-Multi-RTT-AdditionalMeasurementElement-r16
+
+NR-Multi-RTT-AdditionalMeasurementElement-r16 ::= SEQUENCE {
+ nr-DL-PRS-ResourceID-r16 NR-DL-PRS-ResourceID-r16 OPTIONAL,
+ nr-DL-PRS-ResourceSetID-r16 NR-DL-PRS-ResourceSetID-r16 OPTIONAL,
+ nr-DL-PRS-RSRP-ResultDiff-r16 INTEGER (0..61) OPTIONAL,
+ nr-UE-RxTxTimeDiffAdditional-r16 CHOICE {
+ k0-r16 INTEGER (0..8191),
+ k1-r16 INTEGER (0..4095),
+ k2-r16 INTEGER (0..2047),
+ k3-r16 INTEGER (0..1023),
+ k4-r16 INTEGER (0..511),
+ k5-r16 INTEGER (0..255),
+ ...
+ },
+ nr-TimingQuality-r16 NR-TimingQuality-r16,
+ nr-AdditionalPathList-r16 NR-AdditionalPathList-r16 OPTIONAL,
+ nr-TimeStamp-r16 NR-TimeStamp-r16,
+ ...,
+ [[
+ nr-UE-RxTx-TEG-Info-r17 NR-UE-RxTx-TEG-Info-r17 OPTIONAL,
+ nr-DL-PRS-FirstPathRSRP-ResultDiff-r17 INTEGER (0..61) OPTIONAL,
+ nr-los-nlos-IndicatorPerResource-r17 LOS-NLOS-Indicator-r17 OPTIONAL,
+ nr-AdditionalPathListExt-r17 NR-AdditionalPathListExt-r17 OPTIONAL
+ ]]
+}
+
+NR-SRS-TxTEG-Element-r17 ::= SEQUENCE {
+ nr-TimeStamp-r17 NR-TimeStamp-r16 OPTIONAL, -- Need OP
+ nr-UE-Tx-TEG-ID-r17 INTEGER (0..maxNumOfTxTEGs-1-r17),
+ carrierFreq-r17 SEQUENCE {
+ absoluteFrequencyPointA-r17 ARFCN-ValueNR-r15,
+ offsetToPointA-r17 INTEGER (0..2199)
+ } OPTIONAL,
+ srs-PosResourceList-r17 SEQUENCE (SIZE (1..maxNumOfSRS-PosResources-r17)) OF
+ INTEGER (0..maxNumOfSRS-PosResources-1-r17),
+ ...
+}
+
+NR-UE-RxTx-TEG-Info-r17 ::= CHOICE {
+ case1-r17 SEQUENCE {
+ nr-UE-RxTx-TEG-ID-r17 INTEGER (0..maxNumOfRxTxTEGs-1-r17)
+ },
+ case2-r17 SEQUENCE {
+ nr-UE-RxTx-TEG-ID-r17 INTEGER (0..maxNumOfRxTxTEGs-1-r17),
+ nr-UE-Tx-TEG-Index-r17 INTEGER (1..maxTxTEG-Sets-r17)
+ },
+ case3-r17 SEQUENCE {
+ nr-UE-Rx-TEG-ID-r17 INTEGER (0..maxNumOfRxTEGs-1-r17),
+ nr-UE-Tx-TEG-Index-r17 INTEGER (1..maxTxTEG-Sets-r17)
+ },
+ ...
+}
+
+
+NR-Multi-RTT-RequestLocationInformation-r16 ::= SEQUENCE {
+ nr-UE-RxTxTimeDiffMeasurementInfoRequest-r16
+ ENUMERATED { true } OPTIONAL, -- Need ON
+ nr-RequestedMeasurements-r16 BIT STRING { prsrsrpReq (0),
+ firstPathRsrpReq-r17 (1) } (SIZE(1..8)),
+ nr-AssistanceAvailability-r16 BOOLEAN,
+ nr-Multi-RTT-ReportConfig-r16 NR-Multi-RTT-ReportConfig-r16,
+ additionalPaths-r16 ENUMERATED { requested } OPTIONAL, -- Need ON
+ ...,
+ [[
+ nr-UE-RxTxTEG-Request-r17 ENUMERATED { case1, case2, case3, ... }
+ OPTIONAL, -- Need ON
+ measureSameDL-PRS-ResourceWithDifferentRxTxTEGs-r17
+ ENUMERATED { n0, n2, n3, n4, n6, n8, ... }
+ OPTIONAL, -- Need ON
+ measureSameDL-PRS-ResourceWithDifferentRxTEGs-r17
+ ENUMERATED { n0, n2, n3, n4, n6, n8, ... }
+ OPTIONAL, -- Need ON
+ reducedDL-PRS-ProcessingSamples-r17
+ ENUMERATED { requested, ... } OPTIONAL, -- Need ON
+ nr-los-nlos-IndicatorRequest-r17 SEQUENCE {
+ type-r17 LOS-NLOS-IndicatorType1-r17,
+ granularity-r17 LOS-NLOS-IndicatorGranularity1-r17,
+ ...
+ } OPTIONAL, -- Need ON
+ additionalPathsExt-r17 ENUMERATED { requested } OPTIONAL, -- Need ON
+ additionalPathsDL-PRS-RSRP-Request-r17
+ ENUMERATED { requested } OPTIONAL, -- Need ON
+ multiMeasInSameReport-r17 ENUMERATED { requested } OPTIONAL, -- Need ON
+ lowerRxBeamSweepingFactor-FR2-r17 ENUMERATED { requested } OPTIONAL -- Need ON
+ ]]
+}
+
+NR-Multi-RTT-ReportConfig-r16 ::= SEQUENCE {
+ maxDL-PRS-RxTxTimeDiffMeasPerTRP-r16 INTEGER (1..4) OPTIONAL, -- Need ON
+ timingReportingGranularityFactor-r16 INTEGER (0..5) OPTIONAL -- Need ON
+}
+
+
+NR-Multi-RTT-ProvideCapabilities-r16 ::= SEQUENCE {
+ nr-Multi-RTT-PRS-Capability-r16 NR-DL-PRS-ResourcesCapability-r16,
+ nr-Multi-RTT-MeasurementCapability-r16 NR-Multi-RTT-MeasurementCapability-r16,
+ nr-DL-PRS-QCL-ProcessingCapability-r16 NR-DL-PRS-QCL-ProcessingCapability-r16,
+ nr-DL-PRS-ProcessingCapability-r16 NR-DL-PRS-ProcessingCapability-r16,
+ nr-UL-SRS-Capability-r16 NR-UL-SRS-Capability-r16,
+ additionalPathsReport-r16 ENUMERATED { supported } OPTIONAL,
+ periodicalReporting-r16 ENUMERATED { supported } OPTIONAL,
+ ...,
+ [[
+ ten-ms-unit-ResponseTime-r17 ENUMERATED { supported } OPTIONAL,
+ nr-DL-PRS-ExpectedAoD-or-AoA-Sup-r17 BIT STRING { eAoD (0),
+ eAoA (1)
+ } (SIZE (1..8)) OPTIONAL, nr-Multi-RTT-On-Demand-DL-PRS-Support-r17
+ NR-On-Demand-DL-PRS-Support-r17 OPTIONAL,
+ nr-UE-RxTx-TEG-ID-ReportingSupport-r17 BIT STRING { case1 (0),
+ case2 (1),
+ case3 (2)
+ } (SIZE (1..8)) OPTIONAL,
+ nr-los-nlos-IndicatorSupport-r17 SEQUENCE {
+ type-r17 LOS-NLOS-IndicatorType2-r17,
+ granularity-r17 LOS-NLOS-IndicatorGranularity2-r17,
+ ...
+ } OPTIONAL,
+ additionalPathsExtSupport-r17 ENUMERATED { n4, n6, n8 } OPTIONAL,
+ scheduledLocationRequestSupported-r17 ScheduledLocationTimeSupport-r17 OPTIONAL,
+ nr-dl-prs-AssistanceDataValidity-r17 SEQUENCE {
+ area-validity-r17 INTEGER (1..maxNrOfAreas-r17) OPTIONAL,
+ ...
+ } OPTIONAL,
+ multiMeasInSameMeasReport-r17 ENUMERATED { supported } OPTIONAL,
+ mg-ActivationRequest-r17 ENUMERATED { supported } OPTIONAL
+ ]],
+ [[
+ posMeasGapSupport-r17 ENUMERATED { supported } OPTIONAL
+ ]]
+}
+
+
+NR-Multi-RTT-MeasurementCapability-r16 ::= SEQUENCE {
+ maxNrOfRx-TX-MeasFR1-r16 INTEGER (1..4) OPTIONAL,
+ maxNrOfRx-TX-MeasFR2-r16 INTEGER (1..4) OPTIONAL,
+ supportOfRSRP-MeasFR1-r16 ENUMERATED { supported } OPTIONAL,
+ supportOfRSRP-MeasFR2-r16 ENUMERATED { supported } OPTIONAL,
+ srs-AssocPRS-MultiLayersFR1-r16 ENUMERATED { supported } OPTIONAL,
+ srs-AssocPRS-MultiLayersFR2-r16 ENUMERATED { supported } OPTIONAL,
+ ...,
+ [[
+ nr-UE-TEG-Capability-r17 NR-UE-TEG-Capability-r17 OPTIONAL,
+ multi-RTT-MeasCapabilityBandList-r17 SEQUENCE (SIZE (1..nrMaxBands-r16)) OF
+ Multi-RTT-MeasCapabilityPerBand-r17
+ OPTIONAL
+ ]]
+}
+
+Multi-RTT-MeasCapabilityPerBand-r17 ::= SEQUENCE {
+ freqBandIndicatorNR-r17 FreqBandIndicatorNR-r16,
+ supportOfDL-PRS-FirstPathRSRP-r17 ENUMERATED { supported } OPTIONAL,
+ dl-PRS-MeasRRC-Inactive-r17 ENUMERATED { supported } OPTIONAL,
+ ...
+}
+
+
+NR-Multi-RTT-RequestCapabilities-r16 ::= SEQUENCE {
+ ...
+}
+
+
+NR-Multi-RTT-Error-r16 ::= CHOICE {
+ locationServerErrorCauses-r16 NR-Multi-RTT-LocationServerErrorCauses-r16,
+ targetDeviceErrorCauses-r16 NR-Multi-RTT-TargetDeviceErrorCauses-r16,
+ ...
+}
+
+
+NR-Multi-RTT-LocationServerErrorCauses-r16 ::= SEQUENCE {
+ cause-r16 ENUMERATED { undefined,
+ assistanceDataNotSupportedByServer,
+ assistanceDataSupportedButCurrentlyNotAvailableByServer,
+ ...,
+ on-demand-dl-prs-NotSupportedByServer-v1700,
+ on-demand-dl-prs-SupportedButCurrentlyNotAvailableByServer-v1700
+ },
+ ...
+}
+
+
+NR-Multi-RTT-TargetDeviceErrorCauses-r16 ::= SEQUENCE {
+ cause-r16 ENUMERATED { undefined,
+ dl-assistance-data-missing,
+ unableToMeasureAnyTRP,
+ attemptedButUnableToMeasureSomeNeighbourTRPs,
+ ul-srs-configuration-missing,
+ unableToTransmit-ul-srs,
+ ...
+ },
+ ...
+}
+
+
+maxEARFCN INTEGER ::= 65535 -- Maximum value of EUTRA carrier frequency
+maxEARFCN-Plus1 INTEGER ::= 65536 -- Lowest value extended EARFCN range
+maxEARFCN2 INTEGER ::= 262143 -- Highest value extended EARFCN range
+
+maxMBS-r14 INTEGER ::= 64
+maxWLAN-AP-r13 INTEGER ::= 64
+maxKnownAPs-r14 INTEGER ::= 2048
+maxVisibleAPs-r14 INTEGER ::= 32
+maxWLAN-AP-r14 INTEGER ::= 128
+maxWLAN-DataSets-r14 INTEGER ::= 8
+
+maxBT-Beacon-r13 INTEGER ::= 32
+
+nrMaxBands-r16 INTEGER ::= 1024 -- Maximum number of supported bands in
+ -- UE capability.
+nrMaxFreqLayers-r16 INTEGER ::= 4 -- Max freq layers
+nrMaxFreqLayers-1-r16 INTEGER ::= 3
+nrMaxNumDL-PRS-ResourcesPerSet-1-r16 INTEGER ::= 63
+nrMaxNumDL-PRS-ResourceSetsPerTRP-1-r16 INTEGER ::= 7
+nrMaxResourceIDs-r16 INTEGER ::= 64 -- Max Resource IDs
+nrMaxResourceOffsetValue-1-r16 INTEGER ::= 511
+nrMaxResourcesPerSet-r16 INTEGER ::= 64 -- Maximum resources for one set
+nrMaxSetsPerTrpPerFreqLayer-r16 INTEGER ::= 2 -- Maximum resource sets for one TRP
+nrMaxSetsPerTrpPerFreqLayer-1-r16 INTEGER ::= 1
+nrMaxTRPs-r16 INTEGER ::= 256 -- Max TRPs per UE
+nrMaxTRPsPerFreq-r16 INTEGER ::= 64 -- Max TRPs per freq layers
+nrMaxTRPsPerFreq-1-r16 INTEGER ::= 63
+maxSimultaneousBands-r16 INTEGER ::= 4 -- Maximum number of simultaneously
+ -- measured bands
+maxBandComb-r16 INTEGER ::= 1024
+nrMaxConfiguredBands-r16 INTEGER ::= 16
+
+maxNumOfRxTEGs-r17 INTEGER ::= 32
+maxNumOfRxTEGs-1-r17 INTEGER ::= 31
+maxNumOfTxTEGs-1-r17 INTEGER ::= 7
+maxTxTEG-Sets-r17 INTEGER ::= 256 -- Maximum applicable number is 64
+maxNumOfRxTxTEGs-1-r17 INTEGER ::= 255
+maxNumOfTRP-TxTEGs-1-r17 INTEGER ::= 7
+maxNumOfSRS-PosResources-r17 INTEGER ::= 64
+maxNumOfSRS-PosResources-1-r17 INTEGER ::= 63
+
+maxNumResourcesPerAngle-r17 INTEGER ::= 24
+maxNumPrioResources-r17 INTEGER ::= 24
+
+maxAddMeasTDOA-r17 INTEGER ::= 31
+maxAddMeasAoD-r17 INTEGER ::= 23
+maxAddMeasRTT-r17 INTEGER ::= 31
+
+maxOD-DL-PRS-Configs-r17 INTEGER ::= 8
+
+maxCellIDsPerArea-r17 INTEGER ::= 256
+maxNrOfAreas-r17 INTEGER ::= 16
+maxMeasInstances-r17 INTEGER ::= 32
+
+
+END
diff --git a/epan/dissectors/asn1/lpp/lpp.cnf b/epan/dissectors/asn1/lpp/lpp.cnf
new file mode 100644
index 00000000..d3ccd23a
--- /dev/null
+++ b/epan/dissectors/asn1/lpp/lpp.cnf
@@ -0,0 +1,1952 @@
+# lpp.cnf
+# lpp conformation file
+# Copyright 2011-2023 Pascal Quantin
+
+#.OPT
+PER
+UNALIGNED
+#.END
+
+#.USE_VALS_EXT
+CarrierFreqOffsetNB-r14
+
+#.EXPORTS
+ARFCN-ValueEUTRA
+ARFCN-ValueEUTRA-v9a0
+ARFCN-ValueUTRA
+CellGlobalIdEUTRA-AndUTRA
+CellGlobalIdGERAN
+DisplacementTimeStamp-r15_PDU
+ECID-SignalMeasurementInformation
+Ellipsoid-Point
+Ellipsoid-Point_PDU
+Ellipsoid-PointWithUncertaintyCircle_PDU
+EllipsoidArc_PDU
+EllipsoidPointWithAltitude
+EllipsoidPointWithAltitude_PDU
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid_PDU
+EllipsoidPointWithUncertaintyEllipse_PDU
+GNSS-ID
+GNSS-ID-Bitmap
+GNSS-SignalID
+GNSS-SignalIDs
+GNSS-SystemTime
+HorizontalVelocity_PDU
+HorizontalVelocityWithUncertainty_PDU
+HorizontalWithVerticalVelocity_PDU
+LocationCoordinates_PDU
+LocationError_PDU
+LocationSource-r13_PDU
+NetworkTime
+OTDOA-NeighbourCellInfoElement
+OTDOA-ReferenceCellInfo
+Polygon_PDU
+Sensor-MeasurementInformation-r13_PDU
+Sensor-MotionInformation-r15_PDU
+SV-ID
+Velocity
+Velocity_PDU
+#.END
+
+#.PDU
+BDS-DifferentialCorrections-r12
+BDS-GridModelParameter-r12
+DisplacementTimeStamp-r15
+Ellipsoid-Point
+Ellipsoid-PointWithUncertaintyCircle
+EllipsoidArc
+EllipsoidPointWithAltitude
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid
+EllipsoidPointWithUncertaintyEllipse
+GLO-RTK-BiasInformation-r15
+GNSS-AcquisitionAssistance
+GNSS-AuxiliaryInformation
+GNSS-Almanac
+GNSS-DataBitAssistance
+GNSS-DifferentialCorrections
+GNSS-EarthOrientationParameters
+GNSS-Integrity-ServiceAlert-r17
+GNSS-Integrity-ServiceParameters-r17
+GNSS-IonosphericModel
+GNSS-NavigationModel
+GNSS-RealTimeIntegrity
+GNSS-ReferenceTime
+GNSS-ReferenceLocation
+GNSS-RTK-AuxiliaryStationData-r15
+GNSS-RTK-CommonObservationInfo-r15
+GNSS-RTK-FKP-Gradients-r15
+GNSS-RTK-MAC-CorrectionDifferences-r15
+GNSS-RTK-Observations-r15
+GNSS-RTK-ReferenceStationInfo-r15
+GNSS-RTK-Residuals-r15
+GNSS-SSR-ClockCorrections-r15
+GNSS-SSR-CodeBias-r15
+GNSS-SSR-CorrectionPoints-r16
+GNSS-SSR-GriddedCorrection-r16
+GNSS-SSR-OrbitCorrections-r15
+GNSS-SSR-PhaseBias-r16
+GNSS-SSR-STEC-Correction-r16
+GNSS-SSR-URA-r16
+GNSS-TimeModelList
+GNSS-UTC-Model
+HorizontalVelocity
+HorizontalVelocityWithUncertainty
+HorizontalWithVerticalVelocity
+LocationCoordinates
+LocationError
+LocationSource-r13
+LPP-Message
+NavIC-DifferentialCorrections-r16
+NavIC-GridModelParameter-r16
+NR-DL-PRS-AssistanceData-r16
+NR-DL-PRS-TRP-TEG-Info-r17
+NR-On-Demand-DL-PRS-Configurations-r17
+NR-TRP-BeamAntennaInfo-r17
+NR-UEB-TRP-LocationData-r16
+NR-UEB-TRP-RTD-Info-r16
+OTDOA-UE-Assisted-r15
+Polygon
+Sensor-AssistanceDataList-r14
+Sensor-MeasurementInformation-r13
+Sensor-MotionInformation-r15
+TBS-AssistanceDataList-r14
+Velocity
+
+#.FIELD_RENAME
+CellGlobalIdGERAN/cellIdentity cellGlobalIdGERAN_cellIdentity
+LocationCoordinates/polygon locationCoordinates_polygon
+UTC-ModelSet4/utcDN UTC-ModelSet4_utcDN
+
+#.FIELD_ATTR
+CellGlobalIdGERAN/cellIdentity ABBREV=cellGlobalIdGERAN.cellIdentity
+LocationCoordinates/polygon ABBREV=locationCoordinates.polygon
+UTC-ModelSet4/utcDN ABBREV=uTC-ModelSet4.utcDN
+
+#.MAKE_ENUM
+GNSS-ID/gnss-id TYPE_PREFIX UPPER_CASE
+
+#.FN_HDR RequestCapabilities
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Request Capabilities");
+
+#.FN_HDR ProvideCapabilities
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Provide Capabilities");
+
+#.FN_HDR RequestAssistanceData
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Request Assistance Data");
+
+#.FN_HDR ProvideAssistanceData
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Provide Assistance Data");
+
+#.FN_HDR RequestLocationInformation
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Request Location Information");
+
+#.FN_HDR ProvideLocationInformation
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Provide Location Information");
+
+#.FN_HDR Abort
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Abort");
+
+#.FN_HDR Error
+ col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Error");
+
+#.FN_BODY EPDU-ID VAL_PTR = &lpp_epdu_id
+%(DEFAULT_BODY)s
+
+#.TYPE_ATTR
+EPDU-ID STRINGS=VALS(lpp_ePDU_ID_vals)
+
+#.FN_BODY EPDU-Body VAL_PTR=&lppe_tvb
+ tvbuff_t *lppe_tvb = NULL;
+%(DEFAULT_BODY)s
+ switch(lpp_epdu_id){
+ case 1:
+ if (lppe_tvb && lppe_handle) {
+ call_dissector(lppe_handle, lppe_tvb, actx->pinfo, tree);
+ }
+ break;
+ default:
+ break;
+ }
+ lpp_epdu_id = -1;
+
+#.TYPE_ATTR
+Ellipsoid-Point/degreesLatitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLatitude_fmt)
+
+#.TYPE_ATTR
+Ellipsoid-Point/degreesLongitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLongitude_fmt)
+
+#.TYPE_ATTR
+Ellipsoid-PointWithUncertaintyCircle/degreesLatitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLatitude_fmt)
+
+#.TYPE_ATTR
+Ellipsoid-PointWithUncertaintyCircle/degreesLongitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLongitude_fmt)
+
+#.TYPE_ATTR
+Ellipsoid-PointWithUncertaintyCircle/uncertainty DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_uncertainty_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithUncertaintyEllipse/degreesLatitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLatitude_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithUncertaintyEllipse/degreesLongitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLongitude_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithUncertaintyEllipse/uncertaintySemiMajor DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_uncertainty_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithUncertaintyEllipse/uncertaintySemiMinor DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_uncertainty_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithUncertaintyEllipse/orientationMajorAxis DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_angle_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithUncertaintyEllipse/confidence DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithAltitude/degreesLatitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLatitude_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithAltitude/degreesLongitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLongitude_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithAltitude/altitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_altitude_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid/degreesLatitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLatitude_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid/degreesLongitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLongitude_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid/altitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_altitude_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid/uncertaintySemiMajor DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_uncertainty_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid/uncertaintySemiMinor DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_uncertainty_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid/orientationMajorAxis DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_angle_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid/uncertaintyAltitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_uncertaintyAltitude_fmt)
+
+#.TYPE_ATTR
+EllipsoidPointWithAltitudeAndUncertaintyEllipsoid/confidence DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+EllipsoidArc/degreesLatitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLatitude_fmt)
+
+#.TYPE_ATTR
+EllipsoidArc/degreesLongitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLongitude_fmt)
+
+#.TYPE_ATTR
+EllipsoidArc/innerRadius DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_radius_fmt)
+
+#.TYPE_ATTR
+EllipsoidArc/uncertaintyRadius DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_uncertainty_fmt)
+
+#.TYPE_ATTR
+EllipsoidArc/offsetAngle DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_angle_fmt)
+
+#.TYPE_ATTR
+EllipsoidArc/includedAngle DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_angle_fmt)
+
+#.TYPE_ATTR
+EllipsoidArc/confidence DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+HorizontalVelocity/bearing DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_degree_degrees
+
+#.TYPE_ATTR
+HorizontalVelocity/horizontalSpeed DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_kmh
+
+#.TYPE_ATTR
+HorizontalVelocityWithUncertainty/bearing DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_degree_degrees
+
+#.TYPE_ATTR
+HorizontalVelocityWithUncertainty/horizontalSpeed DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_kmh
+
+#.TYPE_ATTR
+HorizontalVelocityWithUncertainty/uncertaintySpeed DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_kmh
+
+#.TYPE_ATTR
+HorizontalWithVerticalVelocityAndUncertainty/bearing DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_degree_degrees
+
+#.TYPE_ATTR
+HorizontalWithVerticalVelocityAndUncertainty/horizontalSpeed DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_kmh
+
+#.TYPE_ATTR
+HorizontalWithVerticalVelocityAndUncertainty/verticalSpeed DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_kmh
+
+#.TYPE_ATTR
+HorizontalWithVerticalVelocityAndUncertainty/horizontalUncertaintySpeed DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_kmh
+
+#.TYPE_ATTR
+HorizontalWithVerticalVelocityAndUncertainty/verticalUncertaintySpeed DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_kmh
+
+#.TYPE_ATTR
+PolygonPoints/degreesLatitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLatitude_fmt)
+
+#.TYPE_ATTR
+PolygonPoints/degreesLongitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_degreesLongitude_fmt)
+
+#.FN_BODY PeriodicalReportingCriteria/reportingInterval VAL_PTR=&idx
+ guint32 idx;
+ const gchar *interval[10] = {"", ": 1s", ": 2s", ": 4s", ": 8s", ": 10s",
+ ": 16s", ": 20s", ": 32s", ": 64s"};
+
+%(DEFAULT_BODY)s
+
+#.FN_FTR PeriodicalReportingCriteria/reportingInterval
+ if (idx < 10) {
+ proto_item_append_text(actx->created_item, "%s", interval[idx]);
+ }
+
+#.FN_BODY ReportingDuration VAL_PTR = &duration
+ guint32 duration;
+
+%(DEFAULT_BODY)s
+ if (duration == 0) {
+ proto_item_append_text(actx->created_item, " (infinite)");
+ }
+
+#.TYPE_ATTR
+ReportingDuration DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+HorizontalAccuracy/accuracy DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_uncertainty_fmt)
+
+#.TYPE_ATTR
+HorizontalAccuracy/confidence DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+VerticalAccuracy/accuracy DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_uncertainty_fmt)
+
+#.TYPE_ATTR
+VerticalAccuracy/confidence DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+HorizontalAccuracyExt-r15/confidence-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+VerticalAccuracyExt-r15/confidence-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+ResponseTime/time DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+ResponseTime/eag_1/responseTimeEarlyFix-r12 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+ResponseTimeNB-r14/timeNB-r14 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+MessageSizeLimitNB-r14/measurementLimit-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_measurementLimit_fmt)
+
+#.TYPE_ATTR
+OTDOA-ReferenceCellInfo/eag_4/nr-LTE-fineTiming-Offset-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_nr_LTE_fineTiming_Offset_fmt)
+
+#.TYPE_ATTR
+OTDOA-NeighbourCellInfoElement/expectedRSTD DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_expectedRSTD_fmt)
+
+#.TYPE_ATTR
+OTDOA-NeighbourCellInfoElement/expectedRSTD-Uncertainty DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_expectedRSTD_Uncertainty_fmt)
+
+#.TYPE_ATTR
+NeighbourMeasurementElement/rstd DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_rstd_fmt)
+
+#.FN_BODY OTDOA-MeasQuality/error-Resolution VAL_PTR = &error_Resolution_tvb HF_INDEX=-1
+ tvbuff_t *error_Resolution_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR OTDOA-MeasQuality/error-Resolution
+ if (error_Resolution_tvb) {
+ guint bitvalue = tvb_get_bits8(error_Resolution_tvb, 0, 2);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, error_Resolution_tvb, 0, 1, bitvalue);
+ }
+
+#.TYPE_ATTR
+OTDOA-MeasQuality/error-Resolution TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_error_Resolution_vals)
+
+#.FN_BODY OTDOA-MeasQuality/error-Value VAL_PTR = &error_Value_tvb HF_INDEX=-1
+ tvbuff_t *error_Value_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR OTDOA-MeasQuality/error-Value
+ if (error_Value_tvb) {
+ guint bitvalue = tvb_get_bits8(error_Value_tvb, 0, 5);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, error_Value_tvb, 0, 1, bitvalue);
+ }
+
+#.TYPE_ATTR
+OTDOA-MeasQuality/error-Value TYPE=FT_UINT8 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lpp_error_Value_vals_ext
+
+#.FN_BODY OTDOA-MeasQuality/error-NumSamples VAL_PTR = &error_NumSamples_tvb HF_INDEX=-1
+ tvbuff_t *error_NumSamples_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR OTDOA-MeasQuality/error-NumSamples
+ if (error_NumSamples_tvb) {
+ guint bitvalue = tvb_get_bits8(error_NumSamples_tvb, 0, 3);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, error_NumSamples_tvb, 0, 1, bitvalue);
+ }
+
+#.TYPE_ATTR
+OTDOA-MeasQuality/error-NumSamples TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_error_NumSamples_vals)
+
+#.TYPE_ATTR
+AdditionalPath-r14/relativeTimeDifference-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_relativeTimeDifference_fmt)
+
+#.TYPE_ATTR
+GNSS-ReferenceTime/referenceTimeUnc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_referenceTimeUnc_fmt)
+
+#.TYPE_ATTR
+GNSS-ReferenceTimeForOneCell/referenceTimeUnc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_referenceTimeUnc_fmt)
+
+#.FN_BODY GNSS-SystemTime/notificationOfLeapSecond VAL_PTR = &notificationOfLeapSecond_tvb HF_INDEX=-1
+ tvbuff_t *notificationOfLeapSecond_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR GNSS-SystemTime/notificationOfLeapSecond
+ if (notificationOfLeapSecond_tvb) {
+ guint bitvalue = tvb_get_bits8(notificationOfLeapSecond_tvb, 0, 2);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, notificationOfLeapSecond_tvb, 0, 1, bitvalue);
+ }
+
+#.TYPE_ATTR
+GNSS-SystemTime/notificationOfLeapSecond TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_kp_vals)
+
+#.TYPE_ATTR
+NetworkTime/fractionalSecondsFromFrameStructureStart DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_fractionalSecondsFromFrameStructureStart_fmt)
+
+#.TYPE_ATTR
+NetworkTime/frameDrift DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_frameDrift_fmt)
+
+#.FN_BODY KlobucharModelParameter/dataID VAL_PTR = &dataID_tvb HF_INDEX=-1
+ tvbuff_t *dataID_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR KlobucharModelParameter/dataID
+ if (dataID_tvb) {
+ guint bitvalue = tvb_get_bits8(dataID_tvb, 0, 2);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, dataID_tvb, 0, 1, bitvalue);
+ }
+
+#.TYPE_ATTR
+KlobucharModelParameter/dataID TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_dataID_vals)
+
+#.TYPE_ATTR
+KlobucharModelParameter/alfa0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_alpha0_fmt)
+
+#.TYPE_ATTR
+KlobucharModelParameter/alfa1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_alpha1_fmt)
+
+#.TYPE_ATTR
+KlobucharModelParameter/alfa2 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_alpha2_3_fmt)
+
+#.TYPE_ATTR
+KlobucharModelParameter/alfa3 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_alpha2_3_fmt)
+
+#.TYPE_ATTR
+KlobucharModelParameter/beta0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_beta0_fmt)
+
+#.TYPE_ATTR
+KlobucharModelParameter/beta1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_beta1_fmt)
+
+#.TYPE_ATTR
+KlobucharModelParameter/beta2 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_beta2_3_fmt)
+
+#.TYPE_ATTR
+KlobucharModelParameter/beta3 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_beta2_3_fmt)
+
+#.TYPE_ATTR
+NeQuickModelParameter/ai0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_ai0_fmt)
+
+#.TYPE_ATTR
+NeQuickModelParameter/ai1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_ai1_fmt)
+
+#.TYPE_ATTR
+NeQuickModelParameter/ai2 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_ai2_fmt)
+
+#.TYPE_ATTR
+GNSS-EarthOrientationParameters/teop DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_teop_fmt)
+
+#.TYPE_ATTR
+GNSS-EarthOrientationParameters/pmX DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_pmX_Y_fmt)
+
+#.TYPE_ATTR
+GNSS-EarthOrientationParameters/pmXdot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_pmX_Ydot_fmt)
+
+#.TYPE_ATTR
+GNSS-EarthOrientationParameters/pmY DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_pmX_Y_fmt)
+
+#.TYPE_ATTR
+GNSS-EarthOrientationParameters/pmYdot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_pmX_Ydot_fmt)
+
+#.TYPE_ATTR
+GNSS-EarthOrientationParameters/deltaUT1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_deltaUT1_fmt)
+
+#.TYPE_ATTR
+GNSS-EarthOrientationParameters/deltaUT1dot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_deltaUT1dot_fmt)
+
+#.TYPE_ATTR
+GNSS-RTK-ReferenceStationInfo-r15/antenna-reference-point-ECEF-X-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_1000m_64_fmt)
+
+#.TYPE_ATTR
+GNSS-RTK-ReferenceStationInfo-r15/antenna-reference-point-ECEF-Y-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_1000m_64_fmt)
+
+#.TYPE_ATTR
+GNSS-RTK-ReferenceStationInfo-r15/antenna-reference-point-ECEF-Z-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_1000m_64_fmt)
+
+#.TYPE_ATTR
+GNSS-RTK-ReferenceStationInfo-r15/antennaHeight-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_1000m_32_fmt)
+
+#.TYPE_ATTR
+AntennaReferencePointUnc-r15/confidence-X-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+AntennaReferencePointUnc-r15/confidence-Y-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+AntennaReferencePointUnc-r15/confidence-Z-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+PhysicalReferenceStationInfo-r15/physical-ARP-ECEF-X-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_1000m_64_fmt)
+
+#.TYPE_ATTR
+PhysicalReferenceStationInfo-r15/physical-ARP-ECEF-Y-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_1000m_64_fmt)
+
+#.TYPE_ATTR
+PhysicalReferenceStationInfo-r15/physical-ARP-ECEF-Z-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_1000m_64_fmt)
+
+#.TYPE_ATTR
+GNSS-RTK-CommonObservationInfo-r15/clockSteeringIndicator-r15 TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_clockSteeringIndicator_vals)
+
+#.TYPE_ATTR
+GNSS-RTK-CommonObservationInfo-r15/externalClockIndicator-r15 TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_externalClockIndicator_vals)
+
+#.TYPE_ATTR
+GNSS-RTK-CommonObservationInfo-r15/smoothingIndicator-r15 TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_smoothingIndicator_r15_vals)
+
+#.FN_BODY GNSS-RTK-CommonObservationInfo-r15/smoothingIndicator-r15 VAL_PTR = &param_tvb HF_INDEX=-1
+ tvbuff_t *param_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR GNSS-RTK-CommonObservationInfo-r15/smoothingIndicator-r15
+ if (param_tvb) {
+ guint bitvalue = tvb_get_bits8(param_tvb, 0, 1);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, param_tvb, 0, 1, bitvalue);
+ }
+
+#.TYPE_ATTR
+GNSS-RTK-CommonObservationInfo-r15/smoothingInterval-r15 TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_smoothingInterval_r15_vals)
+
+#.FN_BODY GNSS-RTK-CommonObservationInfo-r15/smoothingInterval-r15 VAL_PTR = &param_tvb HF_INDEX=-1
+ tvbuff_t *param_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR GNSS-RTK-CommonObservationInfo-r15/smoothingInterval-r15
+ if (param_tvb) {
+ guint bitvalue = tvb_get_bits8(param_tvb, 0, 3);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, param_tvb, 0, 1, bitvalue);
+ }
+
+#.TYPE_ATTR
+AuxiliaryStationElement-r15/aux-master-delta-latitude-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_aux_master_delta_fmt)
+
+#.TYPE_ATTR
+AuxiliaryStationElement-r15/aux-master-delta-longitude-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_aux_master_delta_fmt)
+
+#.TYPE_ATTR
+AuxiliaryStationElement-r15/aux-master-delta-height-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_1000m_32_fmt)
+
+#.TYPE_ATTR
+Aux-ARP-Unc-r15/horizontalConfidence-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+Aux-ARP-Unc-r15/verticalConfidence-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+GNSS-TimeModelElement/gnss-TimeModelRefTime DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gnss_TimeModelRefTime_fmt)
+
+#.TYPE_ATTR
+GNSS-TimeModelElement/tA0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_tA0_fmt)
+
+#.TYPE_ATTR
+GNSS-TimeModelElement/tA1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_tA1_fmt)
+
+#.TYPE_ATTR
+GNSS-TimeModelElement/tA2 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_tA2_fmt)
+
+#.TYPE_ATTR
+GNSS-TimeModelElement/gnss-TO-ID STRINGS=VALS(lpp_gnss_TO_ID_vals)
+
+#.TYPE_ATTR
+GNSS-TimeModelElement/deltaT DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+GNSS-DifferentialCorrections/dgnss-RefTime DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+DGNSS-SgnTypeElement/gnss-StatusHealth STRINGS=VALS(lpp_gnss_StatusHealth_vals)
+
+#.TYPE_ATTR
+DGNSS-CorrectionsElement/udre STRINGS=VALS(lpp_udre_vals)
+
+#.TYPE_ATTR
+DGNSS-CorrectionsElement/pseudoRangeCor DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_pseudoRangeCor_fmt)
+
+#.TYPE_ATTR
+DGNSS-CorrectionsElement/rangeRateCor DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_rangeRateCor_fmt)
+
+#.TYPE_ATTR
+DGNSS-CorrectionsElement/udreGrowthRate STRINGS=VALS(lpp_udreGrowthRate_vals)
+
+#.TYPE_ATTR
+DGNSS-CorrectionsElement/udreValidityTime STRINGS=VALS(lpp_udreValidityTime_vals)
+
+#.FN_BODY GNSS-NavModelSatelliteElement/eag_1/svHealthExt-v1240 VAL_PTR = &svHealthExt_tvb
+ tvbuff_t *svHealthExt_tvb = NULL;
+ proto_tree *subtree;
+%(DEFAULT_BODY)s
+
+#.FN_FTR GNSS-NavModelSatelliteElement/eag_1/svHealthExt-v1240
+ if (svHealthExt_tvb) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_lpp_svHealthExt_v1240);
+ proto_tree_add_bits_item(subtree, hf_lpp_svHealthExt_v1240_e5bhs, svHealthExt_tvb, 0, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(subtree, hf_lpp_svHealthExt_v1240_e1_bhs, svHealthExt_tvb, 2, 2, ENC_BIG_ENDIAN);
+ }
+
+#.TYPE_ATTR
+StandardClockModelElement/stanClockToc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_stanClockToc_fmt)
+
+#.TYPE_ATTR
+StandardClockModelElement/stanClockAF2 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_stanClockAF2_fmt)
+
+#.TYPE_ATTR
+StandardClockModelElement/stanClockAF1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_stanClockAF1_fmt)
+
+#.TYPE_ATTR
+StandardClockModelElement/stanClockAF0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_stanClockAF0_fmt)
+
+#.TYPE_ATTR
+StandardClockModelElement/stanClockTgd DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_stanClockTgd_fmt)
+
+#.TYPE_ATTR
+StandardClockModelElement/sisa DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sisa_fmt)
+
+#.TYPE_ATTR
+StandardClockModelElement/stanModelID STRINGS=VALS(lpp_stanModelID_vals)
+
+#.TYPE_ATTR
+NAV-ClockModel/navToc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navToc_fmt)
+
+#.TYPE_ATTR
+NAV-ClockModel/navaf2 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navaf2_fmt)
+
+#.TYPE_ATTR
+NAV-ClockModel/navaf1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navaf1_fmt)
+
+#.TYPE_ATTR
+NAV-ClockModel/navaf0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navaf0_navTgd_fmt)
+
+#.TYPE_ATTR
+NAV-ClockModel/navTgd DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navaf0_navTgd_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavToc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavToc_cnavTop_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavTop DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavToc_cnavTop_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavAf2 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavAf2_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavAf1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavAf1_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavAf0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavX_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavTgd DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavX_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavISCl1cp DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavX_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavISCl1cd DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavX_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavISCl1ca DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavX_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavISCl2c DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavX_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavISCl5i5 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavX_fmt)
+
+#.TYPE_ATTR
+CNAV-ClockModel/cnavISCl5q5 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavX_fmt)
+
+#.TYPE_ATTR
+GLONASS-ClockModel/gloTau DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloTau_gloDeltaTau_fmt)
+
+#.TYPE_ATTR
+GLONASS-ClockModel/gloGamma DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloGamma_fmt)
+
+#.TYPE_ATTR
+GLONASS-ClockModel/gloDeltaTau DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloTau_gloDeltaTau_fmt)
+
+#.TYPE_ATTR
+SBAS-ClockModel/sbasTo DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasTo_fmt)
+
+#.TYPE_ATTR
+SBAS-ClockModel/sbasAgfo DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasAgfo_fmt)
+
+#.TYPE_ATTR
+SBAS-ClockModel/sbasAgf1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasAgf1_fmt)
+
+#.TYPE_ATTR
+BDS-ClockModel-r12/bdsAODC-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAODC_AODE_r12_fmt)
+
+#.TYPE_ATTR
+BDS-ClockModel-r12/bdsToc-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsToc_Toe_r12_fmt)
+
+#.TYPE_ATTR
+BDS-ClockModel-r12/bdsA0-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsA0_r12_fmt)
+
+#.TYPE_ATTR
+BDS-ClockModel-r12/bdsA1-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsA1_r12_fmt)
+
+#.TYPE_ATTR
+BDS-ClockModel-r12/bdsA2-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsA2_r12_fmt)
+
+#.TYPE_ATTR
+BDS-ClockModel-r12/bdsTgd1-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsTgd1_r12_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerToe DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerToe_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerW DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerW_M0_I0_Omega0_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerDeltaN DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerDeltaN_OmegaDot_IDot_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerM0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerW_M0_I0_Omega0_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerOmegaDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerDeltaN_OmegaDot_IDot_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerE DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerE_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerIDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerDeltaN_OmegaDot_IDot_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerAPowerHalf DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerAPowerHalf_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerI0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerW_M0_I0_Omega0_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerOmega0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerW_M0_I0_Omega0_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerCrs DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerCrs_Crc_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerCis DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerCx_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerCus DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerCx_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerCrc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerCrs_Crc_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerCic DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerCx_fmt)
+
+#.TYPE_ATTR
+NavModelKeplerianSet/keplerCuc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_keplerCx_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navToe DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navToe_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navOmega DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navOmega_M0_I0_OmegaA0_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navDeltaN DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navDeltaN_OmegaADot_IDot_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navM0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navOmega_M0_I0_OmegaA0_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navOmegaADot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navDeltaN_OmegaADot_IDot_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navE DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navE_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navIDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navDeltaN_OmegaADot_IDot_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navAPowerHalf DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navAPowerHalf_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navI0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navOmega_M0_I0_OmegaA0_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navOmegaA0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navOmega_M0_I0_OmegaA0_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navCrs DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navCrs_Crc_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navCis DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navCx_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navCus DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navCx_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navCrc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navCrs_Crc_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navCic DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navCx_fmt)
+
+#.TYPE_ATTR
+NavModelNAV-KeplerianSet/navCuc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navCx_fmt)
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavTop DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavToc_cnavTop_fmt)
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavDeltaA DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavDeltaA_fmt)
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavAdot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavAdot_fmt)
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavDeltaNo DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavDeltaNo_fmt)
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavDeltaNoDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavDeltaNoDot_fmt)
+
+#.FN_BODY NavModelCNAV-KeplerianSet/cnavMo VAL_PTR=&cnavMo
+ int64_t cnavMo;
+ int curr_offset = offset;
+%(DEFAULT_BODY)s
+
+#.FN_FTR NavModelCNAV-KeplerianSet/cnavMo
+ proto_item_set_hidden(actx->created_item);
+ actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
+ cnavMo, "%g semi-circles (%"PRId64")",
+ (double)cnavMo*pow(2, -32), cnavMo);
+
+#.FN_BODY NavModelCNAV-KeplerianSet/cnavE VAL_PTR=&cnavE
+ uint64_t cnavE;
+ int curr_offset = offset;
+%(DEFAULT_BODY)s
+
+#.FN_FTR NavModelCNAV-KeplerianSet/cnavE
+ proto_item_set_hidden(actx->created_item);
+ actx->created_item = proto_tree_add_uint64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
+ cnavE, "%g (%"PRIu64")",
+ (double)cnavE*pow(2, -34), cnavE);
+
+#.FN_BODY NavModelCNAV-KeplerianSet/cnavOmega VAL_PTR=&cnavOmega
+ int64_t cnavOmega;
+ int curr_offset = offset;
+%(DEFAULT_BODY)s
+
+#.FN_FTR NavModelCNAV-KeplerianSet/cnavOmega
+ proto_item_set_hidden(actx->created_item);
+ actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
+ cnavOmega, "%g semi-circles (%"PRId64")",
+ (double)cnavOmega*pow(2, -32), cnavOmega);
+
+#.FN_BODY NavModelCNAV-KeplerianSet/cnavOMEGA0 VAL_PTR=&cnavOMEGA0
+ int64_t cnavOMEGA0;
+ int curr_offset = offset;
+%(DEFAULT_BODY)s
+
+#.FN_FTR NavModelCNAV-KeplerianSet/cnavOMEGA0
+ proto_item_set_hidden(actx->created_item);
+ actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
+ cnavOMEGA0, "%g semi-circles (%"PRId64")",
+ (double)cnavOMEGA0*pow(2, -32), cnavOMEGA0);
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavDeltaOmegaDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavDeltaOmegaDot_IoDot_fmt)
+
+#.FN_BODY NavModelCNAV-KeplerianSet/cnavIo VAL_PTR=&cnavIo
+ int64_t cnavIo;
+ int curr_offset = offset;
+%(DEFAULT_BODY)s
+
+#.FN_FTR NavModelCNAV-KeplerianSet/cnavIo
+ proto_item_set_hidden(actx->created_item);
+ actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
+ cnavIo, "%g semi-circles (%"PRId64")",
+ (double)cnavIo*pow(2, -32), cnavIo);
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavIoDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavDeltaOmegaDot_IoDot_fmt)
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavCis DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavCx_fmt)
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavCic DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavCx_fmt)
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavCrs DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavCrs_Crc_fmt)
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavCrc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavCrs_Crc_fmt)
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavCus DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavCx_fmt)
+
+#.TYPE_ATTR
+NavModelCNAV-KeplerianSet/cnavCuc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cnavCx_fmt)
+
+#.TYPE_ATTR
+NavModel-GLONASS-ECEF/gloEn DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_day_days
+
+#.FN_BODY NavModel-GLONASS-ECEF/gloP1 VAL_PTR = &gloP1_tvb HF_INDEX=-1
+ tvbuff_t *gloP1_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR NavModel-GLONASS-ECEF/gloP1
+ if (gloP1_tvb) {
+ guint bitvalue = tvb_get_bits8(gloP1_tvb, 0, 2);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, gloP1_tvb, 0, 1, bitvalue);
+ }
+
+#.TYPE_ATTR
+NavModel-GLONASS-ECEF/gloP1 TYPE=FT_UINT8 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_minutes
+
+#.TYPE_ATTR
+NavModel-GLONASS-ECEF/gloX DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloX_Y_Z_fmt)
+
+#.TYPE_ATTR
+NavModel-GLONASS-ECEF/gloXdot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloXdot_Ydot_Zdot_fmt)
+
+#.TYPE_ATTR
+NavModel-GLONASS-ECEF/gloXdotdot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloXdotdot_Ydotdot_Zdotdot_fmt)
+
+#.TYPE_ATTR
+NavModel-GLONASS-ECEF/gloY DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloX_Y_Z_fmt)
+
+#.TYPE_ATTR
+NavModel-GLONASS-ECEF/gloYdot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloXdot_Ydot_Zdot_fmt)
+
+#.TYPE_ATTR
+NavModel-GLONASS-ECEF/gloYdotdot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloXdotdot_Ydotdot_Zdotdot_fmt)
+
+#.TYPE_ATTR
+NavModel-GLONASS-ECEF/gloZ DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloX_Y_Z_fmt)
+
+#.TYPE_ATTR
+NavModel-GLONASS-ECEF/gloZdot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloXdot_Ydot_Zdot_fmt)
+
+#.TYPE_ATTR
+NavModel-GLONASS-ECEF/gloZdotdot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloXdotdot_Ydotdot_Zdotdot_fmt)
+
+#.TYPE_ATTR
+NavModel-SBAS-ECEF/sbasTo DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasTo_fmt)
+
+#.TYPE_ATTR
+NavModel-SBAS-ECEF/sbasXg DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasXg_Yg_fmt)
+
+#.TYPE_ATTR
+NavModel-SBAS-ECEF/sbasYg DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasXg_Yg_fmt)
+
+#.TYPE_ATTR
+NavModel-SBAS-ECEF/sbasZg DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasZg_fmt)
+
+#.TYPE_ATTR
+NavModel-SBAS-ECEF/sbasXgDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasXgDot_YgDot_fmt)
+
+#.TYPE_ATTR
+NavModel-SBAS-ECEF/sbasYgDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasXgDot_YgDot_fmt)
+
+#.TYPE_ATTR
+NavModel-SBAS-ECEF/sbasZgDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasZgDot_fmt)
+
+#.TYPE_ATTR
+NavModel-SBAS-ECEF/sbasXgDotDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasXgDotDot_YgDotDot_fmt)
+
+#.TYPE_ATTR
+NavModel-SBAS-ECEF/sbasYgDotDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasXgDotDot_YgDotDot_fmt)
+
+#.TYPE_ATTR
+NavModel-SBAS-ECEF/sbasZgDotDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasZgDotDot_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsAODE-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAODC_AODE_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsURAI-r12 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_meters
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsToe-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsToc_Toe_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsAPowerHalf-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAPowerHalf_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsE-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsE_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsW-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsW_M0_Omega0_I0_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsDeltaN-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsM0-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsW_M0_Omega0_I0_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsOmega0-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsW_M0_Omega0_I0_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsOmegaDot-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsI0-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsW_M0_Omega0_I0_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsIDot-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCuc-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsCuc_Cus_Cic_Cis_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCus-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsCuc_Cus_Cic_Cis_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCrc-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsCrc_Crs_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCrs-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsCrc_Crs_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCic-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsCuc_Cus_Cic_Cis_r12_fmt)
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCis-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsCuc_Cus_Cic_Cis_r12_fmt)
+
+#.TYPE_ATTR
+GNSS-DataBitAssistance/gnss-TOD DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+GNSS-DataBitAssistance/gnss-TODfrac DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_milliseconds
+
+#.TYPE_ATTR
+GNSS-AcquisitionAssistance/confidence-r10 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+GNSS-AcquisitionAssistElement/doppler0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_doppler0_fmt)
+
+#.TYPE_ATTR
+GNSS-AcquisitionAssistElement/doppler1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_doppler1_fmt)
+
+#.TYPE_ATTR
+GNSS-AcquisitionAssistElement/dopplerUncertainty STRINGS=VALS(lpp_dopplerUncertainty_vals)
+
+#.TYPE_ATTR
+GNSS-AcquisitionAssistElement/codePhase DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_codePhase_fmt)
+
+#.TYPE_ATTR
+GNSS-AcquisitionAssistElement/intCodePhase DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_milliseconds
+
+#.TYPE_ATTR
+GNSS-AcquisitionAssistElement/codePhaseSearchWindow DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lpp_codePhaseSearchWindow_vals_ext
+
+#.TYPE_ATTR
+GNSS-AcquisitionAssistElement/azimuth DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_azimuth_elevation_fmt)
+
+#.TYPE_ATTR
+GNSS-AcquisitionAssistElement/elevation DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_azimuth_elevation_fmt)
+
+#.FN_BODY GNSS-Almanac/toa VAL_PTR = &toa
+ guint32 toa, val;
+ int len, old_offset = offset;
+ T_GNSS_ID_enum gnss_id = (T_GNSS_ID_enum)GPOINTER_TO_UINT(actx->private_data);
+%(DEFAULT_BODY)s
+
+#.FN_FTR GNSS-Almanac/toa
+ len = (offset-old_offset) >> 3 ? (offset-old_offset) >> 3 : 1;
+ val = (gnss_id == T_GNSS_ID_GALILEO) ? 600*toa : 4096*toa;
+ actx->created_item = proto_tree_add_uint_format_value(tree, hf_lpp_toa, tvb, old_offset, len,
+ toa, "%u s (%u)", val, toa);
+
+#.FN_BODY GNSS-Almanac/eag_1/toa-ext-v1240 VAL_PTR = &toa_ext
+ guint32 toa_ext, val;
+ int len, old_offset = offset;
+ T_GNSS_ID_enum gnss_id = (T_GNSS_ID_enum)GPOINTER_TO_UINT(actx->private_data);
+%(DEFAULT_BODY)s
+
+#.FN_FTR GNSS-Almanac/eag_1/toa-ext-v1240
+ len = (offset-old_offset) >> 3 ? (offset-old_offset) >> 3 : 1;
+ val = (gnss_id == T_GNSS_ID_GALILEO) ? 600*toa_ext : 4096*toa_ext;
+ actx->created_item = proto_tree_add_uint_format_value(tree, hf_lpp_toa_ext_v1240, tvb, old_offset, len,
+ toa_ext, "%u s (%u)", val, toa_ext);
+
+#.TYPE_ATTR
+AlmanacKeplerianSet/kepAlmanacE DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_kepAlmanacE_fmt)
+
+#.TYPE_ATTR
+AlmanacKeplerianSet/kepAlmanacDeltaI DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_kepAlmanacDeltaI_fmt)
+
+#.TYPE_ATTR
+AlmanacKeplerianSet/kepAlmanacOmegaDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_kepAlmanacOmegaDot_fmt)
+
+#.FN_BODY AlmanacKeplerianSet/kepSV-StatusINAV VAL_PTR = &statusINAV_tvb
+ tvbuff_t *statusINAV_tvb = NULL;
+ proto_tree *subtree;
+%(DEFAULT_BODY)s
+
+#.FN_FTR AlmanacKeplerianSet/kepSV-StatusINAV
+ if (statusINAV_tvb) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_kepSV_StatusINAV);
+ proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusINAV_e5bhs, statusINAV_tvb, 0, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusINAV_e1_bhs, statusINAV_tvb, 2, 2, ENC_BIG_ENDIAN);
+ }
+
+#.FN_BODY AlmanacKeplerianSet/kepSV-StatusFNAV VAL_PTR = &statusFNAV_tvb
+ tvbuff_t *statusFNAV_tvb = NULL;
+ proto_tree *subtree;
+%(DEFAULT_BODY)s
+
+#.FN_FTR AlmanacKeplerianSet/kepSV-StatusFNAV
+ if (statusFNAV_tvb) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_kepSV_StatusFNAV);
+ proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusFNAV_e5ahs, statusFNAV_tvb, 0, 2, ENC_BIG_ENDIAN);
+ }
+
+#.TYPE_ATTR
+AlmanacKeplerianSet/kepAlmanacAPowerHalf DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_kepAlmanacAPowerHalf_fmt)
+
+#.TYPE_ATTR
+AlmanacKeplerianSet/kepAlmanacOmega0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_kepAlmanacOmega0_W_M0_fmt)
+
+#.TYPE_ATTR
+AlmanacKeplerianSet/kepAlmanacW DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_kepAlmanacOmega0_W_M0_fmt)
+
+#.TYPE_ATTR
+AlmanacKeplerianSet/kepAlmanacM0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_kepAlmanacOmega0_W_M0_fmt)
+
+#.TYPE_ATTR
+AlmanacKeplerianSet/kepAlmanacAF0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_kepAlmanacAF0_fmt)
+
+#.TYPE_ATTR
+AlmanacKeplerianSet/kepAlmanacAF1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_kepAlmanacAF1_fmt)
+
+#.TYPE_ATTR
+AlmanacNAV-KeplerianSet/navAlmE DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navAlmE_fmt)
+
+#.TYPE_ATTR
+AlmanacNAV-KeplerianSet/navAlmDeltaI DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navAlmDeltaI_fmt)
+
+#.TYPE_ATTR
+AlmanacNAV-KeplerianSet/navAlmOMEGADOT DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navAlmOMEGADOT_fmt)
+
+#.TYPE_ATTR
+AlmanacNAV-KeplerianSet/navAlmSqrtA DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navAlmSqrtA_fmt)
+
+#.TYPE_ATTR
+AlmanacNAV-KeplerianSet/navAlmOMEGAo DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navAlmOMEGAo_Omega_Mo_fmt)
+
+#.TYPE_ATTR
+AlmanacNAV-KeplerianSet/navAlmOmega DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navAlmOMEGAo_Omega_Mo_fmt)
+
+#.TYPE_ATTR
+AlmanacNAV-KeplerianSet/navAlmMo DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navAlmOMEGAo_Omega_Mo_fmt)
+
+#.TYPE_ATTR
+AlmanacNAV-KeplerianSet/navAlmaf0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navAlmaf0_fmt)
+
+#.TYPE_ATTR
+AlmanacNAV-KeplerianSet/navAlmaf1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_navAlmaf1_fmt)
+
+#.TYPE_ATTR
+AlmanacReducedKeplerianSet/redAlmDeltaA DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_redAlmDeltaA_fmt)
+
+#.TYPE_ATTR
+AlmanacReducedKeplerianSet/redAlmOmega0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_redAlmOmega0_Phi0_fmt)
+
+#.TYPE_ATTR
+AlmanacMidiAlmanacSet/midiAlmE DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_midiAlmE_fmt)
+
+#.TYPE_ATTR
+AlmanacMidiAlmanacSet/midiAlmDeltaI DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_midiAlmDeltaI_fmt)
+
+#.TYPE_ATTR
+AlmanacMidiAlmanacSet/midiAlmOmegaDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_midiAlmOmegaDot_fmt)
+
+#.TYPE_ATTR
+AlmanacMidiAlmanacSet/midiAlmSqrtA DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_midiAlmSqrtA_fmt)
+
+#.TYPE_ATTR
+AlmanacMidiAlmanacSet/midiAlmOmega0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_midiAlmOmega0_Omega_Mo_fmt)
+
+#.TYPE_ATTR
+AlmanacMidiAlmanacSet/midiAlmOmega DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_midiAlmOmega0_Omega_Mo_fmt)
+
+#.TYPE_ATTR
+AlmanacMidiAlmanacSet/midiAlmMo DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_midiAlmOmega0_Omega_Mo_fmt)
+
+#.TYPE_ATTR
+AlmanacMidiAlmanacSet/midiAlmaf0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_midiAlmaf0_fmt)
+
+#.TYPE_ATTR
+AlmanacMidiAlmanacSet/midiAlmaf1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_midiAlmaf1_fmt)
+
+#.TYPE_ATTR
+AlmanacGLONASS-AlmanacSet/gloAlm-NA DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_day_days
+
+#.TYPE_ATTR
+AlmanacGLONASS-AlmanacSet/gloAlmLambdaA DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloAlmLambdaA_DeltaIa_fmt)
+
+#.TYPE_ATTR
+AlmanacGLONASS-AlmanacSet/gloAlmtlambdaA DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloAlmtlambdaA_fmt)
+
+#.TYPE_ATTR
+AlmanacGLONASS-AlmanacSet/gloAlmDeltaIa DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloAlmLambdaA_DeltaIa_fmt)
+
+#.TYPE_ATTR
+AlmanacGLONASS-AlmanacSet/gloAlmDeltaTA DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloAlmDeltaTA_fmt)
+
+#.TYPE_ATTR
+AlmanacGLONASS-AlmanacSet/gloAlmDeltaTdotA DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloAlmDeltaTdotA_fmt)
+
+#.TYPE_ATTR
+AlmanacGLONASS-AlmanacSet/gloAlmEpsilonA DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloAlmEpsilonA_fmt)
+
+#.TYPE_ATTR
+AlmanacGLONASS-AlmanacSet/gloAlmOmegaA DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloAlmOmegaA_fmt)
+
+#.TYPE_ATTR
+AlmanacGLONASS-AlmanacSet/gloAlmTauA DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gloAlmTauA_fmt)
+
+#.TYPE_ATTR
+AlmanacECEF-SBAS-AlmanacSet/sbasAlmXg DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasAlmXg_Yg_fmt)
+
+#.TYPE_ATTR
+AlmanacECEF-SBAS-AlmanacSet/sbasAlmYg DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasAlmXg_Yg_fmt)
+
+#.TYPE_ATTR
+AlmanacECEF-SBAS-AlmanacSet/sbasAlmZg DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasAlmZg_fmt)
+
+#.TYPE_ATTR
+AlmanacECEF-SBAS-AlmanacSet/sbasAlmXgdot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasAlmXgdot_YgDot_fmt)
+
+#.TYPE_ATTR
+AlmanacECEF-SBAS-AlmanacSet/sbasAlmYgDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasAlmXgdot_YgDot_fmt)
+
+#.TYPE_ATTR
+AlmanacECEF-SBAS-AlmanacSet/sbasAlmZgDot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasAlmZgDot_fmt)
+
+#.TYPE_ATTR
+AlmanacECEF-SBAS-AlmanacSet/sbasAlmTo DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_sbasAlmTo_fmt)
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmToa-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAlmToa_r12_fmt)
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmSqrtA-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAlmSqrtA_r12_fmt)
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmE-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAlmE_r12_fmt)
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmW-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAlmW_M0_Omega0_r12_fmt)
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmM0-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAlmW_M0_Omega0_r12_fmt)
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmOmega0-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAlmW_M0_Omega0_r12_fmt)
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmOmegaDot-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAlmOmegaDot_r12_fmt)
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmDeltaI-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAlmDeltaI_r12_fmt)
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmA0-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAlmA0_r12_fmt)
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmA1-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bdsAlmA1_r12_fmt)
+
+#.FN_BODY AlmanacBDS-AlmanacSet-r12/bdsSvHealth-r12 VAL_PTR = &bdsSvHealth_tvb
+ tvbuff_t *bdsSvHealth_tvb = NULL;
+ proto_tree *subtree;
+%(DEFAULT_BODY)s
+
+#.FN_FTR AlmanacBDS-AlmanacSet-r12/bdsSvHealth-r12
+ if (bdsSvHealth_tvb) {
+ guint16 bits;
+ subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bdsSvHealth_r12);
+ bits = tvb_get_bits16(bdsSvHealth_tvb, 0, 9,ENC_BIG_ENDIAN);
+ if (bits == 0x1ff) {
+ proto_tree_add_boolean_bits_format_value(subtree, hf_lpp_bdsSvHealth_r12_sat_clock, bdsSvHealth_tvb, 0, 1, 1,
+ ENC_BIG_ENDIAN, "Satellite is in failure or permanently shut off (1)");
+ } else if (bits == 0x100) {
+ proto_tree_add_boolean_bits_format_value(subtree, hf_lpp_bdsSvHealth_r12_sat_clock, bdsSvHealth_tvb, 0, 1, 1,
+ ENC_BIG_ENDIAN, "Satellite clock is unavailable (1)");
+ } else {
+ proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_sat_clock, bdsSvHealth_tvb, 0, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_b1i, bdsSvHealth_tvb, 1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_b2i, bdsSvHealth_tvb, 2, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_nav, bdsSvHealth_tvb, 7, 1, ENC_BIG_ENDIAN);
+ }
+ }
+
+#.TYPE_ATTR
+UTC-ModelSet1/gnss-Utc-A1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gnss_Utc_A1_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet1/gnss-Utc-A0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gnss_Utc_A0_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet1/gnss-Utc-Tot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gnss_Utc_Tot_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet1/gnss-Utc-WNt DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_week_weeks
+
+#.TYPE_ATTR
+UTC-ModelSet1/gnss-Utc-DeltaTls DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+UTC-ModelSet1/gnss-Utc-WNlsf DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_week_weeks
+
+#.TYPE_ATTR
+UTC-ModelSet1/gnss-Utc-DN DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_day_days
+
+#.TYPE_ATTR
+UTC-ModelSet1/gnss-Utc-DeltaTlsf DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+UTC-ModelSet2/utcA0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_tA0_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet2/utcA1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_tA1_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet2/utcA2 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_tA2_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet2/utcDeltaTls DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+UTC-ModelSet2/utcTot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gnss_TimeModelRefTime_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet2/utcWNot DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_week_weeks
+
+#.TYPE_ATTR
+UTC-ModelSet2/utcWNlsf DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_week_weeks
+
+#.FN_BODY UTC-ModelSet2/utcDN VAL_PTR = &utcDN_tvb HF_INDEX=-1
+ tvbuff_t *utcDN_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR UTC-ModelSet2/utcDN
+ if (utcDN_tvb) {
+ guint bitvalue = tvb_get_bits8(utcDN_tvb, 0, 4);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, utcDN_tvb, 0, 1, bitvalue);
+ }
+
+#.TYPE_ATTR
+UTC-ModelSet2/utcDN TYPE=FT_UINT8 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_day_days
+
+#.TYPE_ATTR
+UTC-ModelSet2/utcDeltaTlsf DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+UTC-ModelSet3/nA DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_day_days
+
+#.TYPE_ATTR
+UTC-ModelSet3/tauC DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_tauC_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet3/b1 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_b1_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet3/b2 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_b2_fmt)
+
+#.FN_BODY UTC-ModelSet3/kp VAL_PTR = &kp_tvb HF_INDEX=-1
+ tvbuff_t *kp_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR UTC-ModelSet3/kp
+ if (kp_tvb) {
+ guint bitvalue = tvb_get_bits8(kp_tvb, 0, 2);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, kp_tvb, 0, 1, bitvalue);
+ }
+
+#.TYPE_ATTR
+UTC-ModelSet3/kp TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_kp_vals)
+
+#.TYPE_ATTR
+UTC-ModelSet4/utcA1wnt DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gnss_Utc_A1_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet4/utcA0wnt DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gnss_Utc_A0_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet4/utcTot DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gnss_Utc_Tot_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet4/utcWNt DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_week_weeks
+
+#.TYPE_ATTR
+UTC-ModelSet4/utcDeltaTls DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+UTC-ModelSet4/utcWNlsf DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_week_weeks
+
+#.TYPE_ATTR
+UTC-ModelSet4/utcDN DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_day_days
+
+#.TYPE_ATTR
+UTC-ModelSet4/utcDeltaTlsf DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+UTC-ModelSet4/utcStandardID TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_utcStandardID_vals)
+
+#.TYPE_ATTR
+UTC-ModelSet5-r12/utcA0-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gnss_Utc_A0_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet5-r12/utcA1-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_gnss_Utc_A1_fmt)
+
+#.TYPE_ATTR
+UTC-ModelSet5-r12/utcDeltaTls-r12 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+UTC-ModelSet5-r12/utcWNlsf-r12 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_week_weeks
+
+#.TYPE_ATTR
+UTC-ModelSet5-r12/utcDN-r12 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_day_days
+
+#.TYPE_ATTR
+UTC-ModelSet5-r12/utcDeltaTlsf-r12 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+BDS-DifferentialCorrections-r12/dbds-RefTime-r12 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+DBDS-CorrectionElement-r12/bds-UDREI-r12 TYPE=FT_UINT8 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lpp_bds_UDREI_vals_ext
+
+#.TYPE_ATTR
+DBDS-CorrectionElement-r12/bds-RURAI-r12 TYPE=FT_UINT8 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lpp_bds_RURAI_vals_ext
+
+#.TYPE_ATTR
+DBDS-CorrectionElement-r12/bds-ECC-DeltaT-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bds_ECC_DeltaT_r12_fmt)
+
+#.TYPE_ATTR
+BDS-GridModelParameter-r12/bds-RefTime-r12 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+GridIonElement-r12/dt-r12 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_bds_GridIonElement_dt_r12_fmt)
+
+#.TYPE_ATTR
+GridIonElement-r12/givei-r12 TYPE=FT_UINT8 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lpp_bds_givei_vals_ext
+
+#.TYPE_ATTR
+GNSS-RTK-SatelliteDataElement-r15/integer-ms-r15 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_milliseconds
+
+#.TYPE_ATTR
+GNSS-RTK-SatelliteDataElement-r15/rough-range-r15 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_milliseconds
+
+#.TYPE_ATTR
+GNSS-RTK-SatelliteDataElement-r15/rough-phase-range-rate-r15 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_meter_sec
+
+#.TYPE_ATTR
+GNSS-RTK-SatelliteSignalDataElement-r15/fine-PseudoRange-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_fine_PseudoRange_r15_fmt)
+
+#.TYPE_ATTR
+GNSS-RTK-SatelliteSignalDataElement-r15/fine-PhaseRange-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_fine_PhaseRange_r15_fmt)
+
+#.TYPE_ATTR
+GNSS-RTK-SatelliteSignalDataElement-r15/carrier-to-noise-ratio-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_carrier_to_noise_ratio_r15_fmt)
+
+#.TYPE_ATTR
+GNSS-RTK-SatelliteSignalDataElement-r15/fine-PhaseRangeRate-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_fine_PhaseRangeRate_r15_fmt)
+
+#.TYPE_ATTR
+GLO-RTK-BiasInformation-r15/l1-ca-cpBias-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cpBias_r15_fmt)
+
+#.TYPE_ATTR
+GLO-RTK-BiasInformation-r15/l1-p-cpBias-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cpBias_r15_fmt)
+
+#.TYPE_ATTR
+GLO-RTK-BiasInformation-r15/l2-ca-cpBias-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cpBias_r15_fmt)
+
+#.TYPE_ATTR
+GLO-RTK-BiasInformation-r15/l2-p-cpBias-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_cpBias_r15_fmt)
+
+#.TYPE_ATTR
+Geometric-Ionospheric-Corrections-Differences-Element-r15/ambiguityStatusFlag-r15 TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_ambiguityStatusFlag_r15_vals)
+
+#.TYPE_ATTR
+Geometric-Ionospheric-Corrections-Differences-Element-r15/geometricCarrierPhaseCorrectionDifference-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_2000m_fmt)
+
+#.TYPE_ATTR
+Geometric-Ionospheric-Corrections-Differences-Element-r15/ionosphericCarrierPhaseCorrectionDifference-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_2000m_fmt)
+
+#.TYPE_ATTR
+RTK-Residuals-Element-r15/s-oc-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_2000m_fmt)
+
+#.TYPE_ATTR
+RTK-Residuals-Element-r15/s-od-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_100ppm_fmt)
+
+#.TYPE_ATTR
+RTK-Residuals-Element-r15/s-oh-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_10ppm_fmt)
+
+#.TYPE_ATTR
+RTK-Residuals-Element-r15/s-lc-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_2000m_fmt)
+
+#.TYPE_ATTR
+FKP-Gradients-Element-r15/north-geometric-gradient-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_100ppm_fmt)
+
+#.TYPE_ATTR
+FKP-Gradients-Element-r15/east-geometric-gradient-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_100ppm_fmt)
+
+#.TYPE_ATTR
+FKP-Gradients-Element-r15/north-ionospheric-gradient-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_100ppm_fmt)
+
+#.TYPE_ATTR
+FKP-Gradients-Element-r15/east-ionospheric-gradient-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_100ppm_fmt)
+
+#.TYPE_ATTR
+GNSS-SSR-OrbitCorrections-r15/ssrUpdateInterval-r15 TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_ssrUpdateInterval_r15_vals)
+
+#.TYPE_ATTR
+SSR-OrbitCorrectionSatelliteElement-r15/delta-radial-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_10000m_fmt)
+
+#.TYPE_ATTR
+SSR-OrbitCorrectionSatelliteElement-r15/delta-AlongTrack-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_4_10000m_fmt)
+
+#.TYPE_ATTR
+SSR-OrbitCorrectionSatelliteElement-r15/delta-CrossTrack-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_4_10000m_fmt)
+
+#.TYPE_ATTR
+SSR-OrbitCorrectionSatelliteElement-r15/dot-delta-radial-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_1000000m_s_fmt)
+
+#.TYPE_ATTR
+SSR-OrbitCorrectionSatelliteElement-r15/dot-delta-AlongTrack-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_4_1000000m_s_fmt)
+
+#.TYPE_ATTR
+SSR-OrbitCorrectionSatelliteElement-r15/dot-delta-CrossTrack-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_4_1000000m_s_fmt)
+
+#.TYPE_ATTR
+GNSS-SSR-ClockCorrections-r15/ssrUpdateInterval-r15 TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_ssrUpdateInterval_r15_vals)
+
+#.TYPE_ATTR
+SSR-ClockCorrectionSatelliteElement-r15/delta-Clock-C0-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_10000m_fmt)
+
+#.TYPE_ATTR
+SSR-ClockCorrectionSatelliteElement-r15/delta-Clock-C1-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_1000000m_s_fmt)
+
+#.TYPE_ATTR
+SSR-ClockCorrectionSatelliteElement-r15/delta-Clock-C2-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_2_100000000m_s2_fmt)
+
+#.TYPE_ATTR
+GNSS-SSR-CodeBias-r15/ssrUpdateInterval-r15 TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_ssrUpdateInterval_r15_vals)
+
+#.TYPE_ATTR
+SSR-CodeBiasSignalElement-r15/codeBias-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_100000m_fmt)
+
+#.FN_FTR StoredNavListInfo/gnss-WeekOrDay
+ proto_item_append_text(actx->created_item, " (days for glonass, weeks otherwise)");
+
+#.FN_FTR StoredNavListInfo/gnss-Toe
+ proto_item_append_text(actx->created_item, " (units of 15 mns for glonass, hours otherwise)");
+
+#.FN_FTR StoredNavListInfo/t-toeLimit
+ proto_item_append_text(actx->created_item, " (units of 30 mns for glonass, hours otherwise)");
+
+#.TYPE_ATTR
+GNSS-DataBitAssistanceReq/gnss-TOD-Req DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+GNSS-DataBitAssistanceReq/gnss-TOD-FracReq DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_milliseconds
+
+#.TYPE_ATTR
+GNSS-DataBitAssistanceReq/dataBitInterval TYPE=FT_UINT8 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lpp_dataBitInterval_vals_ext
+
+#.TYPE_ATTR
+MeasurementReferenceTime/gnss-TOD-msec DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_milliseconds
+
+#.TYPE_ATTR
+MeasurementReferenceTime/gnss-TOD-frac DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_fractionalSecondsFromFrameStructureStart_fmt)
+
+#.TYPE_ATTR
+MeasurementReferenceTime/gnss-TOD-unc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_referenceTimeUnc_fmt)
+
+#.TYPE_ATTR
+MeasurementReferenceTime/networkTime/gSM/deltaGNSS-TOD DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_milliseconds
+
+#.TYPE_ATTR
+GNSS-SgnMeasElement/gnss-CodePhaseAmbiguity DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_milliseconds
+
+#.TYPE_ATTR
+GNSS-SatMeasElement/cNo DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_dbhz
+
+#.TYPE_ATTR
+GNSS-SatMeasElement/carrierQualityInd TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_carrierQualityInd_vals)
+
+#.TYPE_ATTR
+GNSS-SatMeasElement/codePhase DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_GNSS_SatMeas_codePhase_fmt)
+
+#.TYPE_ATTR
+GNSS-SatMeasElement/integerCodePhase DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_milliseconds
+
+#.TYPE_ATTR
+GNSS-SatMeasElement/codePhaseRMSError DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_codePhaseRMSError_fmt)
+
+#.TYPE_ATTR
+GNSS-SatMeasElement/doppler DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_doppler_fmt)
+
+#.TYPE_ATTR
+GNSS-SatMeasElement/adr DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_adr_fmt)
+
+#.TYPE_ATTR
+GNSS-SatMeasElement/eag_1/adrMSB-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_adrMSB_r15_fmt)
+
+#.TYPE_ATTR
+GNSS-SatMeasElement/eag_1/adrRMSerror-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_adr_fmt)
+
+#.TYPE_ATTR
+GNSS-SatMeasElement/eag_1/delta-codePhase-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_GNSS_SatMeas_delta_codePhase_r15_fmt)
+
+#.FN_BODY GNSS-ID/gnss-id VAL_PTR = &gnss_id
+ guint32 gnss_id;
+%(DEFAULT_BODY)s
+ actx->private_data = GUINT_TO_POINTER(gnss_id);
+
+#.TYPE_ATTR
+GNSS-PeriodicControlParam-r15/deliveryAmount-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_deliveryAmount_r15_fmt)
+
+#.TYPE_ATTR
+GNSS-PeriodicControlParam-r15/deliveryInterval-r15 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+MeasuredResultsElement/rsrp-Result DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_rsrp_Result_fmt)
+
+#.TYPE_ATTR
+MeasuredResultsElement/rsrq-Result DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_rsrq_Result_fmt)
+
+#.TYPE_ATTR
+MeasuredResultsElement/ue-RxTxTimeDiff DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_ue_RxTxTimeDiff_fmt)
+
+#.TYPE_ATTR
+MeasuredResultsElement/eag_2/nrsrp-Result-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_nrsrp_Result_fmt)
+
+#.TYPE_ATTR
+MeasuredResultsElement/eag_2/nrsrq-Result-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_nrsrq_Result_fmt)
+
+#.TYPE_ATTR
+MeasuredResultsElement/eag_3/rsrp-Result-v1470 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_rsrp_Result_v1470_fmt)
+
+#.TYPE_ATTR
+MeasuredResultsElement/eag_3/rsrq-Result-v1470 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_rsrq_Result_v1470_fmt)
+
+#.TYPE_ATTR
+MBS-BeaconMeasElement-r13/codePhase-r13 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_mbs_beaconMeasElt_codePhase_fmt)
+
+#.TYPE_ATTR
+MBS-BeaconMeasElement-r13/codePhaseRMSError-r13 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_codePhaseRMSError_fmt)
+
+#.TYPE_ATTR
+MBS-BeaconMeasElement-r13/eag_1/rssi-r14 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_dbm
+
+#.TYPE_ATTR
+Sensor-MeasurementInformation-r13/uncompensatedBarometricPressure-r13 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_pa
+
+#.TYPE_ATTR
+Sensor-MeasurementInformation-r13/eag_1/uncertainty-r14/range-r14 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_pa
+
+#.TYPE_ATTR
+Sensor-MeasurementInformation-r13/eag_1/uncertainty-r14/confidence-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+Displacement-r15/bearing-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_10_degrees_fmt)
+
+#.TYPE_ATTR
+Displacement-r15/bearingUncConfidence-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+Displacement-r15/horizontalDistance-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_100_m_fmt)
+
+#.TYPE_ATTR
+Displacement-r15/horizontalUncConfidence-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+Displacement-r15/verticalDistance-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_1_100_m_fmt)
+
+#.TYPE_ATTR
+Displacement-r15/verticalUncConfidence-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.TYPE_ATTR
+UTC-Time-r15/utcTime-ms-r15 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_milliseconds
+
+#.FN_BODY MBS-AlmanacAssistance-r14/transmitterLatitude-r14 VAL_PTR = &transmitterLatitude_tvb HF_INDEX=-1
+ tvbuff_t *transmitterLatitude_tvb = NULL;
+ guint32 val;
+
+%(DEFAULT_BODY)s
+ val = tvb_get_bits32(transmitterLatitude_tvb, 0, 26, ENC_BIG_ENDIAN);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, transmitterLatitude_tvb, 0, 4, val);
+
+#.TYPE_ATTR
+MBS-AlmanacAssistance-r14/transmitterLatitude-r14 TYPE=FT_UINT32 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_transmitterLatitude_fmt)
+
+#.FN_BODY MBS-AlmanacAssistance-r14/transmitterLongitude-r14 VAL_PTR = &transmitterLongitude_tvb HF_INDEX=-1
+ tvbuff_t *transmitterLongitude_tvb = NULL;
+ guint32 val;
+
+%(DEFAULT_BODY)s
+ val = tvb_get_bits32(transmitterLongitude_tvb, 0, 27, ENC_BIG_ENDIAN);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, transmitterLongitude_tvb, 0, 4, val);
+
+#.TYPE_ATTR
+MBS-AlmanacAssistance-r14/transmitterLongitude-r14 TYPE=FT_UINT32 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_transmitterLongitude_fmt)
+
+#.FN_BODY MBS-AlmanacAssistance-r14/transmitterAltitude-r14 VAL_PTR = &transmitterAltitude_tvb HF_INDEX=-1
+ tvbuff_t *transmitterAltitude_tvb = NULL;
+ guint32 val;
+
+%(DEFAULT_BODY)s
+ val = tvb_get_bits16(transmitterAltitude_tvb, 0, 15, ENC_BIG_ENDIAN);
+ actx->created_item = proto_tree_add_uint(tree, hf_index, transmitterAltitude_tvb, 0, 2, val);
+
+#.TYPE_ATTR
+MBS-AlmanacAssistance-r14/transmitterAltitude-r14 TYPE=FT_UINT16 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_transmitterAltitude_fmt)
+
+#.TYPE_ATTR
+MBS-AlmanacAssistance-r14/timeCorrection-r14 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_nanoseconds
+
+#.TYPE_ATTR
+MBS-AcquisitionAssistance-r14/freq-r14 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_hz
+
+#.TYPE_ATTR
+Sensor-AssistanceDataList-r14/refPressure-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_refPressure_fmt)
+
+#.TYPE_ATTR
+Sensor-AssistanceDataList-r14/refTemperature-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_refTemperature_fmt)
+
+#.TYPE_ATTR
+Sensor-AssistanceDataList-r14/eag_1/period-v1520/referencePressureRate-v1520 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_referencePressureRate_v1520_fmt)
+
+#.FN_FTR Sensor-AssistanceDataList-r14/eag_1/area-v1520/gN-pressure-v1520
+ proto_item_append_text(actx->created_item, "Pa/Km");
+
+#.FN_FTR Sensor-AssistanceDataList-r14/eag_1/area-v1520/gE-pressure-v1520
+ proto_item_append_text(actx->created_item, "Pa/Km");
+
+#.TYPE_ATTR
+PressureValidityArea-v1520/validityAreaWidth-v1520 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_km
+
+#.TYPE_ATTR
+PressureValidityArea-v1520/vvalidityAreaHeight-v1520 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_km
+
+#.TYPE_ATTR
+PressureValidityPeriod-v1520/beginTimeAlt-v1520 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_PressureValidityPeriod_v1520_fmt)
+
+#.TYPE_ATTR
+PressureValidityPeriod-v1520/duration-v1520 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_PressureValidityPeriod_v1520_fmt)
+
+#.TYPE_ATTR
+WLAN-MeasurementElement-r13/rssi-r13 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_dbm
+
+#.TYPE_ATTR
+WLAN-AP-Identifier-r13/bssid-r13 TYPE=FT_ETHER
+
+#.TYPE_ATTR
+WLAN-AP-Identifier-r13/ssid-r13 TYPE=FT_STRING DISPLAY=BASE_NONE
+
+#.FN_BODY WLAN-AP-Identifier-r13/ssid-r13 VAL_PTR=&ssid_tvb HF_INDEX=-1
+ tvbuff_t *ssid_tvb = NULL;
+
+%(DEFAULT_BODY)s
+ actx->created_item = proto_tree_add_item(tree, hf_index, ssid_tvb, 0, -1, ENC_ASCII|ENC_NA);
+
+#.TYPE_ATTR
+BT-MeasurementElement-r13/btAddr-r13 TYPE=FT_ETHER DISPLAY=BASE_NONE
+
+#.FN_BODY BT-MeasurementElement-r13/btAddr-r13 VAL_PTR=&btAddr_tvb HF_INDEX=-1
+ tvbuff_t *btAddr_tvb = NULL;
+
+%(DEFAULT_BODY)s
+ actx->created_item = proto_tree_add_item(tree, hf_index, btAddr_tvb, 0, 6, ENC_NA);
+
+#.TYPE_ATTR
+BT-MeasurementElement-r13/rssi-r13 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_dbm
+
+#.FN_HDR CipheringKeyData-r15
+ lpp_get_private_data(actx->pinfo)->is_ciphered = TRUE;
+
+#.FN_HDR SegmentationInfo-r15
+ lpp_get_private_data(actx->pinfo)->is_segmented = TRUE;
+
+#.FN_BODY AssistanceDataSIBelement-r15/assistanceDataElement-r15 VAL_PTR = &assist_data_sib_elem_tvb
+ tvbuff_t *assist_data_sib_elem_tvb = NULL;
+ struct lpp_private_data *lpp_data = lpp_get_private_data(actx->pinfo);
+
+%(DEFAULT_BODY)s
+
+ if (assist_data_sib_elem_tvb && !lpp_data->is_ciphered && !lpp_data->is_segmented) {
+ proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_lpp_assistanceDataElement_r15);
+
+ switch (lpp_data->pos_sib_type) {
+ case LPP_POS_SIB_TYPE_1_1:
+ dissect_GNSS_ReferenceTime_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_1_2:
+ dissect_GNSS_ReferenceLocation_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_1_3:
+ dissect_GNSS_IonosphericModel_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_1_4:
+ dissect_GNSS_EarthOrientationParameters_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_1_5:
+ dissect_GNSS_RTK_ReferenceStationInfo_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_1_6:
+ dissect_GNSS_RTK_CommonObservationInfo_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_1_7:
+ dissect_GNSS_RTK_AuxiliaryStationData_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_1_8:
+ dissect_GNSS_SSR_CorrectionPoints_r16_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_1_9:
+ dissect_GNSS_Integrity_ServiceParameters_r17_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_1_10:
+ dissect_GNSS_Integrity_ServiceAlert_r17_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_1:
+ dissect_GNSS_TimeModelList_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_2:
+ dissect_GNSS_DifferentialCorrections_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_3:
+ dissect_GNSS_NavigationModel_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_4:
+ dissect_GNSS_RealTimeIntegrity_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_5:
+ dissect_GNSS_DataBitAssistance_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_6:
+ dissect_GNSS_AcquisitionAssistance_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_7:
+ dissect_GNSS_Almanac_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_8:
+ dissect_GNSS_UTC_Model_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_9:
+ dissect_GNSS_AuxiliaryInformation_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_10:
+ dissect_BDS_DifferentialCorrections_r12_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_11:
+ dissect_BDS_GridModelParameter_r12_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_12:
+ dissect_GNSS_RTK_Observations_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_13:
+ dissect_GLO_RTK_BiasInformation_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_14:
+ dissect_GNSS_RTK_MAC_CorrectionDifferences_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_15:
+ dissect_GNSS_RTK_Residuals_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_16:
+ dissect_GNSS_RTK_FKP_Gradients_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_17:
+ dissect_GNSS_SSR_OrbitCorrections_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_18:
+ dissect_GNSS_SSR_ClockCorrections_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_19:
+ dissect_GNSS_SSR_CodeBias_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_20:
+ dissect_GNSS_SSR_URA_r16_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_21:
+ dissect_GNSS_SSR_PhaseBias_r16_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_22:
+ dissect_GNSS_SSR_STEC_Correction_r16_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_23:
+ dissect_GNSS_SSR_GriddedCorrection_r16_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_24:
+ dissect_NavIC_DifferentialCorrections_r16_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_2_25:
+ dissect_NavIC_GridModelParameter_r16_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_3_1:
+ dissect_OTDOA_UE_Assisted_r15_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_4_1:
+ dissect_Sensor_AssistanceDataList_r14_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_5_1:
+ dissect_TBS_AssistanceDataList_r14_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_6_1:
+ dissect_NR_DL_PRS_AssistanceData_r16_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_6_2:
+ dissect_NR_UEB_TRP_LocationData_r16_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_6_3:
+ dissect_NR_UEB_TRP_RTD_Info_r16_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_6_4:
+ dissect_NR_TRP_BeamAntennaInfo_r17_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_6_5:
+ dissect_NR_DL_PRS_TRP_TEG_Info_r17_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case LPP_POS_SIB_TYPE_6_6:
+ dissect_NR_On_Demand_DL_PRS_Configurations_r17_PDU(assist_data_sib_elem_tvb, actx->pinfo, subtree, NULL);
+ break;
+ default:
+ break;
+ }
+ }
diff --git a/epan/dissectors/asn1/lpp/packet-lpp-template.c b/epan/dissectors/asn1/lpp/packet-lpp-template.c
new file mode 100644
index 00000000..93fb2645
--- /dev/null
+++ b/epan/dissectors/asn1/lpp/packet-lpp-template.c
@@ -0,0 +1,2156 @@
+/* packet-lpp.c
+ * Routines for 3GPP LTE Positioning Protocol (LPP) packet dissection
+ * Copyright 2011-2023 Pascal Quantin <pascal@wireshark.org>
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * Ref 3GPP TS 37.355 version 17.5.0 Release 17
+ * http://www.3gpp.org
+ */
+
+#include "config.h"
+
+#include "math.h"
+
+#include <epan/packet.h>
+#include <epan/asn1.h>
+#include <epan/tfs.h>
+#include <epan/proto_data.h>
+
+#include "packet-per.h"
+#include "packet-lpp.h"
+
+#define PNAME "LTE Positioning Protocol (LPP)"
+#define PSNAME "LPP"
+#define PFNAME "lpp"
+
+void proto_register_lpp(void);
+void proto_reg_handoff_lpp(void);
+
+/* Initialize the protocol and registered fields */
+static int proto_lpp = -1;
+
+#include "packet-lpp-hf.c"
+static int hf_lpp_svHealthExt_v1240_e5bhs = -1;
+static int hf_lpp_svHealthExt_v1240_e1_bhs = -1;
+static int hf_lpp_kepSV_StatusINAV_e5bhs = -1;
+static int hf_lpp_kepSV_StatusINAV_e1_bhs = -1;
+static int hf_lpp_kepSV_StatusFNAV_e5ahs = -1;
+static int hf_lpp_bdsSvHealth_r12_sat_clock = -1;
+static int hf_lpp_bdsSvHealth_r12_b1i = -1;
+static int hf_lpp_bdsSvHealth_r12_b2i = -1;
+static int hf_lpp_bdsSvHealth_r12_nav = -1;
+static int hf_lpp_AssistanceDataSIBelement_r15_PDU = -1;
+
+static dissector_handle_t lppe_handle = NULL;
+
+static guint32 lpp_epdu_id = -1;
+
+/* Initialize the subtree pointers */
+static gint ett_lpp = -1;
+static gint ett_lpp_svHealthExt_v1240 = -1;
+static gint ett_kepSV_StatusINAV = -1;
+static gint ett_kepSV_StatusFNAV = -1;
+static gint ett_lpp_bdsSvHealth_r12 = -1;
+static gint ett_lpp_assistanceDataElement_r15 = -1;
+#include "packet-lpp-ett.c"
+
+/* Include constants */
+#include "packet-lpp-val.h"
+
+static const value_string lpp_ePDU_ID_vals[] = {
+ { 1, "OMA LPP extensions (LPPe)"},
+ { 0, NULL}
+};
+
+struct lpp_private_data {
+ lpp_pos_sib_type_t pos_sib_type;
+ gboolean is_ciphered;
+ gboolean is_segmented;
+};
+
+static struct lpp_private_data*
+lpp_get_private_data(packet_info *pinfo)
+{
+ struct lpp_private_data *lpp_data = (struct lpp_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_lpp, 0);
+ if (!lpp_data) {
+ lpp_data = wmem_new0(pinfo->pool, struct lpp_private_data);
+ p_add_proto_data(pinfo->pool, pinfo, proto_lpp, 0, lpp_data);
+ }
+ return lpp_data;
+}
+
+/* Forward declarations */
+static int dissect_GNSS_ReferenceTime_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_ReferenceLocation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_IonosphericModel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_EarthOrientationParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_RTK_ReferenceStationInfo_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_RTK_CommonObservationInfo_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_RTK_AuxiliaryStationData_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_SSR_CorrectionPoints_r16_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_Integrity_ServiceParameters_r17_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_Integrity_ServiceAlert_r17_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_TimeModelList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_DifferentialCorrections_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_NavigationModel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_RealTimeIntegrity_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_DataBitAssistance_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_AcquisitionAssistance_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_Almanac_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_UTC_Model_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_AuxiliaryInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_BDS_DifferentialCorrections_r12_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_BDS_GridModelParameter_r12_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_RTK_Observations_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GLO_RTK_BiasInformation_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_RTK_MAC_CorrectionDifferences_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_RTK_Residuals_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_RTK_FKP_Gradients_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_SSR_OrbitCorrections_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_SSR_ClockCorrections_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_SSR_CodeBias_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_SSR_URA_r16_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_SSR_PhaseBias_r16_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_SSR_STEC_Correction_r16_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_GNSS_SSR_GriddedCorrection_r16_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_NavIC_DifferentialCorrections_r16_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_NavIC_GridModelParameter_r16_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_OTDOA_UE_Assisted_r15_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_Sensor_AssistanceDataList_r14_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_TBS_AssistanceDataList_r14_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_NR_DL_PRS_AssistanceData_r16_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_NR_UEB_TRP_LocationData_r16_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_NR_UEB_TRP_RTD_Info_r16_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_NR_TRP_BeamAntennaInfo_r17_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_NR_DL_PRS_TRP_TEG_Info_r17_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+static int dissect_NR_On_Demand_DL_PRS_Configurations_r17_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
+
+static void
+lpp_degreesLatitude_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%u)",
+ ((float)v/8388607.0)*90, v);
+}
+
+static void
+lpp_degreesLongitude_fmt(gchar *s, guint32 v)
+{
+ gint32 longitude = (gint32) v;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%d)",
+ ((float)longitude/8388608.0)*180, longitude);
+}
+
+static void
+lpp_uncertainty_fmt(gchar *s, guint32 v)
+{
+ double uncertainty = 10*(pow(1.1, (double)v)-1);
+
+ if (uncertainty < 1000) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm (%u)", uncertainty, v);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "%fkm (%u)", uncertainty/1000, v);
+ }
+}
+
+static void
+lpp_angle_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%u degrees (%u)", 2*v, v);
+}
+
+static void
+lpp_confidence_fmt(gchar *s, guint32 v)
+{
+ if (v == 0) {
+ snprintf(s, ITEM_LABEL_LENGTH, "no information (0)");
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "%u%%", v);
+ }
+}
+
+static void
+lpp_1_10_degrees_fmt(gchar *s, guint32 v)
+{
+ double val = (double)v/10;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", val, v);
+}
+
+static void
+lpp_1_100_m_fmt(gchar *s, guint32 v)
+{
+ double val = (double)v/100;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%u)", val, v);
+}
+
+static void
+lpp_measurementLimit_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%u octets (%u)", 100*v, v);
+}
+
+static void
+lpp_altitude_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%um", v);
+}
+
+static void
+lpp_uncertaintyAltitude_fmt(gchar *s, guint32 v)
+{
+ double uncertainty = 45*(pow(1.025, (double)v)-1);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm (%u)", uncertainty, v);
+}
+
+static void
+lpp_radius_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%um (%u)", 5*v, v);
+}
+
+static void
+lpp_nr_LTE_fineTiming_Offset_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%.1fms (%u)", (float)v/2, v);
+}
+
+static void
+lpp_expectedRSTD_fmt(gchar *s, guint32 v)
+{
+ gint32 rstd = 3*((gint32)v-8192);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%dTs (%u)", rstd, v);
+}
+
+static void
+lpp_expectedRSTD_Uncertainty_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%uTs (%u)", 3*v, v);
+}
+
+static void
+lpp_rstd_fmt(gchar *s, guint32 v)
+{
+ if (v == 0) {
+ snprintf(s, ITEM_LABEL_LENGTH, "RSTD < -15391Ts (0)");
+ } else if (v < 2260) {
+ snprintf(s, ITEM_LABEL_LENGTH, "-%uTs <= RSTD < -%uTs (%u)", 15391-5*(v-1), 15391-5*v, v);
+ } else if (v < 6355) {
+ snprintf(s, ITEM_LABEL_LENGTH, "-%uTs <= RSTD < -%uTs (%u)", 6356-v, 6355-v, v);
+ } else if (v == 6355) {
+ snprintf(s, ITEM_LABEL_LENGTH, "-1Ts <= RSTD <= 0Ts (6355)");
+ } else if (v < 10452) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%uTs < RSTD <= %uTs (%u)", v-6356, v-6355, v);
+ } else if (v < 12711) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%uTs < RSTD <= %uTs (%u)", 5*(v-1)-48159, 5*v-48159, v);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "15391Ts < RSTD (12711)");
+ }
+}
+
+static const value_string lpp_error_Resolution_vals[] = {
+ { 0, "5 meters"},
+ { 1, "10 meters"},
+ { 2, "20 meters"},
+ { 3, "30 meters"},
+ { 0, NULL}
+};
+
+static const value_string lpp_error_Value_vals[] = {
+ { 0, "0 to (R*1-1) meters"},
+ { 1, "R*1 to (R*2-1) meters"},
+ { 2, "R*2 to (R*3-1) meters"},
+ { 3, "R*3 to (R*4-1) meters"},
+ { 4, "R*4 to (R*5-1) meters"},
+ { 5, "R*5 to (R*6-1) meters"},
+ { 6, "R*6 to (R*7-1) meters"},
+ { 7, "R*7 to (R*8-1) meters"},
+ { 8, "R*8 to (R*9-1) meters"},
+ { 9, "R*9 to (R*10-1) meters"},
+ { 10, "R*10 to (R*11-1) meters"},
+ { 11, "R*11 to (R*12-1) meters"},
+ { 12, "R*12 to (R*13-1) meters"},
+ { 13, "R*13 to (R*14-1) meters"},
+ { 14, "R*14 to (R*15-1) meters"},
+ { 15, "R*15 to (R*16-1) meters"},
+ { 16, "R*16 to (R*17-1) meters"},
+ { 17, "R*17 to (R*18-1) meters"},
+ { 18, "R*18 to (R*19-1) meters"},
+ { 19, "R*19 to (R*20-1) meters"},
+ { 20, "R*20 to (R*21-1) meters"},
+ { 21, "R*21 to (R*22-1) meters"},
+ { 22, "R*22 to (R*23-1) meters"},
+ { 23, "R*23 to (R*24-1) meters"},
+ { 24, "R*24 to (R*25-1) meters"},
+ { 25, "R*25 to (R*26-1) meters"},
+ { 26, "R*26 to (R*27-1) meters"},
+ { 27, "R*27 to (R*28-1) meters"},
+ { 28, "R*28 to (R*29-1) meters"},
+ { 29, "R*29 to (R*30-1) meters"},
+ { 30, "R*30 to (R*31-1) meters"},
+ { 31, "R*31 meters or more"},
+ { 0, NULL}
+};
+static value_string_ext lpp_error_Value_vals_ext = VALUE_STRING_EXT_INIT(lpp_error_Value_vals);
+
+static const value_string lpp_error_NumSamples_vals[] = {
+ { 0, "Not the baseline metric"},
+ { 1, "5-9"},
+ { 2, "10-14"},
+ { 3, "15-24"},
+ { 4, "25-34"},
+ { 5, "35-44"},
+ { 6, "45-54"},
+ { 7, "55 or more"},
+ { 0, NULL}
+};
+
+static void
+lpp_relativeTimeDifference_fmt(gchar *s, guint32 v)
+{
+ double rtd = (double)((gint32)v)*0.5;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%.1f Ts (%d)", rtd, (gint32)v);
+}
+
+static void
+lpp_referenceTimeUnc_fmt(gchar *s, guint32 v)
+{
+ double referenceTimeUnc = 0.5*(pow(1.14, (double)v)-1);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%fus (%u)", referenceTimeUnc, v);
+}
+
+static const value_string lpp_kp_vals[] = {
+ { 0, "No UTC correction at the end of current quarter"},
+ { 1, "UTC correction by plus (+1 s) in the end of current quarter"},
+ { 3, "UTC correction by minus (-1 s) in the end of current quarter"},
+ { 0, NULL}
+};
+
+static void
+lpp_fractionalSecondsFromFrameStructureStart_fmt(gchar *s, guint32 v)
+{
+ float frac = ((float)v)/4;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%fus (%u)", frac, v);
+}
+
+static void
+lpp_frameDrift_fmt(gchar *s, guint32 v)
+{
+ double drift = (double)((gint32)v)*pow(2, -30);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", drift, (gint32)v);
+}
+
+static const value_string lpp_dataID_vals[] = {
+ { 0, "Parameters are applicable worldwide"},
+ { 1, "Parameters have been generated by BDS"},
+ { 3, "Parameters have been generated by QZSS"},
+ { 0, NULL}
+};
+
+static void
+lpp_alpha0_fmt(gchar *s, guint32 v)
+{
+ double alpha = (double)((gint32)v)*pow(2, -30);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", alpha, (gint32)v);
+}
+
+static void
+lpp_alpha1_fmt(gchar *s, guint32 v)
+{
+ double alpha = (double)((gint32)v)*pow(2, -27);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/semi-circle (%d)", alpha, (gint32)v);
+}
+
+static void
+lpp_alpha2_3_fmt(gchar *s, guint32 v)
+{
+ double alpha = (double)((gint32)v)*pow(2, -24);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/semi-circle (%d)", alpha, (gint32)v);
+}
+
+static void
+lpp_beta0_fmt(gchar *s, guint32 v)
+{
+ double beta = (double)((gint32)v)*pow(2, 11);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", beta, (gint32)v);
+}
+
+static void
+lpp_beta1_fmt(gchar *s, guint32 v)
+{
+ double beta = (double)((gint32)v)*pow(2, 14);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/semi-circle (%d)", beta, (gint32)v);
+}
+
+static void
+lpp_beta2_3_fmt(gchar *s, guint32 v)
+{
+ double beta = (double)((gint32)v)*pow(2, 16);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/semi-circle (%d)", beta, (gint32)v);
+}
+
+static void
+lpp_ai0_fmt(gchar *s, guint32 v)
+{
+ double ai = (double)v*pow(2, -2);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gsfu (%u)", ai, v);
+}
+
+static void
+lpp_ai1_fmt(gchar *s, guint32 v)
+{
+ double ai = (double)v*pow(2, -8);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gsfu/degree (%u)", ai, v);
+}
+
+static void
+lpp_ai2_fmt(gchar *s, guint32 v)
+{
+ double ai = (double)v*pow(2, -15);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gsfu/degree2 (%u)", ai, v);
+}
+
+static void
+lpp_teop_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%us (%u)", 16*v, v);
+}
+
+static void
+lpp_pmX_Y_fmt(gchar *s, guint32 v)
+{
+ double pm = (double)((gint32)v)*pow(2, -20);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g arc-seconds (%d)", pm, (gint32)v);
+}
+
+static void
+lpp_pmX_Ydot_fmt(gchar *s, guint32 v)
+{
+ double pmDot = (double)((gint32)v)*pow(2, -21);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g arc-seconds/day (%d)", pmDot, (gint32)v);
+}
+
+static void
+lpp_deltaUT1_fmt(gchar *s, guint32 v)
+{
+ double deltaUT1 = (double)((gint32)v)*pow(2, -24);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", deltaUT1, (gint32)v);
+}
+
+static void
+lpp_deltaUT1dot_fmt(gchar *s, guint32 v)
+{
+ double deltaUT1dot = (double)((gint32)v)*pow(2, -25);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/day (%d)", deltaUT1dot, (gint32)v);
+}
+
+static void
+lpp_1_1000m_64_fmt(gchar *s, uint64_t v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%"PRId64")", (double)v/1000, (int64_t)v);
+}
+
+static void
+lpp_1_1000m_32_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", (double)v/1000, (gint32)v);
+}
+
+static const value_string lpp_clockSteeringIndicator_vals[] = {
+ { 0, "Clock steering is not applied"},
+ { 1, "Clock steering has been applied"},
+ { 2, "Unknown clock steering status"},
+ { 3, "Reserved"},
+ { 0, NULL}
+};
+
+static const value_string lpp_externalClockIndicator_vals[] = {
+ { 0, "Internal clock is used"},
+ { 1, "External clock is used, clock status is \"locked\""},
+ { 2, "External clock is used, clock status is \"not locked\", which may indicate external clock failure and that the transmitted data may not be reliable"},
+ { 3, "Unknown clock is used"},
+ { 0, NULL}
+};
+
+static const value_string lpp_smoothingIndicator_r15_vals[] = {
+ { 0, "Other type of smoothing is used"},
+ { 1, "Divergence-free smoothing is used"},
+ { 0, NULL}
+};
+
+static const value_string lpp_smoothingInterval_r15_vals[] = {
+ { 0, "No smoothing"},
+ { 1, "< 30 s"},
+ { 2, "30-60 s"},
+ { 3, "1-2 min"},
+ { 4, "2-4 min"},
+ { 5, "4-8 min"},
+ { 6, "> 8 min"},
+ { 7, "Unlimited smoothing interval"},
+ { 0, NULL}
+};
+
+static void
+lpp_aux_master_delta_fmt(gchar *s, guint32 v)
+{
+ double delta = (double)((gint32)v)*25*pow(10, -6);
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%u)", delta, (gint32)v);
+}
+
+static void
+lpp_gnss_TimeModelRefTime_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%us (%u)", v*16, v);
+}
+
+static void
+lpp_tA0_fmt(gchar *s, guint32 v)
+{
+ double tA0 = (double)((gint32)v)*pow(2, -35);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", tA0, (gint32)v);
+}
+
+static void
+lpp_tA1_fmt(gchar *s, guint32 v)
+{
+ double tA1 = (double)((gint32)v)*pow(2, -51);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", tA1, (gint32)v);
+}
+
+static void
+lpp_tA2_fmt(gchar *s, guint32 v)
+{
+ double tA2 = (double)((gint32)v)*pow(2, -68);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s2 (%d)", tA2, (gint32)v);
+}
+
+static const value_string lpp_gnss_TO_ID_vals[] = {
+ { 1, "GPS"},
+ { 2, "Galileo"},
+ { 3, "QZSS"},
+ { 4, "GLONASS"},
+ { 0, NULL}
+};
+
+static const value_string lpp_gnss_StatusHealth_vals[] = {
+ { 0, "UDRE Scale Factor = 1.0"},
+ { 1, "UDRE Scale Factor = 0.75"},
+ { 2, "UDRE Scale Factor = 0.5"},
+ { 3, "UDRE Scale Factor = 0.3"},
+ { 4, "UDRE Scale Factor = 0.2"},
+ { 5, "UDRE Scale Factor = 0.1"},
+ { 6, "Reference Station Transmission Not Monitored"},
+ { 7, "Data is invalid - disregard"},
+ { 0, NULL}
+};
+
+static const value_string lpp_udre_vals[] = {
+ { 0, "UDRE <= 1.0m"},
+ { 1, "1.0m < UDRE <= 4.0m"},
+ { 2, "4.0m < UDRE <= 8.0m"},
+ { 3, "8.0m < UDRE"},
+ { 0, NULL}
+};
+
+static void
+lpp_pseudoRangeCor_fmt(gchar *s, guint32 v)
+{
+ double pseudoRangeCor = ((double)(gint32)v)*0.32;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm (%d)", pseudoRangeCor, (gint32)v);
+}
+
+static void
+lpp_rangeRateCor_fmt(gchar *s, guint32 v)
+{
+ double rangeRateCor = ((double)(gint32)v)*0.032;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm/s (%d)", rangeRateCor, (gint32)v);
+}
+
+static const value_string lpp_udreGrowthRate_vals[] = {
+ { 0, "1.5"},
+ { 1, "2"},
+ { 2, "4"},
+ { 3, "6"},
+ { 4, "8"},
+ { 5, "10"},
+ { 6, "12"},
+ { 7, "16"},
+ { 0, NULL}
+};
+
+static const value_string lpp_udreValidityTime_vals[] = {
+ { 0, "20s"},
+ { 1, "40s"},
+ { 2, "80s"},
+ { 3, "160s"},
+ { 4, "320s"},
+ { 5, "640s"},
+ { 6, "1280s"},
+ { 7, "2560s"},
+ { 0, NULL}
+};
+
+static const value_string lpp_signal_health_status_vals[] = {
+ { 0, "Signal OK"},
+ { 1, "Signal out of service"},
+ { 2, "Signal will be out of service"},
+ { 3, "Signal Component currently in Test"},
+ { 0, NULL}
+};
+static void
+lpp_stanClockToc_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%um/s (%u)", 60*v, v);
+}
+
+static void
+lpp_stanClockAF2_fmt(gchar *s, guint32 v)
+{
+ double stanClockAF2 = (double)((gint32)v)*pow(2, -59);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s2 (%d)", stanClockAF2, (gint32)v);
+}
+
+static void
+lpp_stanClockAF1_fmt(gchar *s, guint32 v)
+{
+ double stanClockAF1 = (double)((gint32)v)*pow(2, -46);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", stanClockAF1, (gint32)v);
+}
+
+static void
+lpp_stanClockAF0_fmt(gchar *s, guint32 v)
+{
+ double stanClockAF0 = (double)((gint32)v)*pow(2, -34);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", stanClockAF0, (gint32)v);
+}
+
+static void
+lpp_stanClockTgd_fmt(gchar *s, guint32 v)
+{
+ double stanClockTgd = (double)((gint32)v)*pow(2, -32);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", stanClockTgd, (gint32)v);
+}
+
+static void
+lpp_sisa_fmt(gchar *s, guint32 v)
+{
+ if (v < 50) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%ucm (%u)", v, v);
+ } else if (v < 75) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%ucm (%u)", 50+((v-50)*2), v);
+ } else if (v < 100) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%ucm (%u)", 100+((v-75)*4), v);
+ } else if (v < 126) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%ucm (%u)", 200+((v-100)*16), v);
+ } else if (v < 255) {
+ snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "No Accuracy Prediction Available (255)");
+ }
+}
+
+static const value_string lpp_stanModelID_vals[] = {
+ { 0, "I/Nav"},
+ { 1, "F/Nav"},
+ { 0, NULL}
+};
+
+static void
+lpp_navToc_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%us (%u)", 16*v, v);
+}
+
+static void
+lpp_navaf2_fmt(gchar *s, guint32 v)
+{
+ double navaf2 = (double)((gint32)v)*pow(2, -55);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s2 (%d)", navaf2, (gint32)v);
+}
+
+static void
+lpp_navaf1_fmt(gchar *s, guint32 v)
+{
+ double navaf1 = (double)((gint32)v)*pow(2, -43);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", navaf1, (gint32)v);
+}
+
+static void
+lpp_navaf0_navTgd_fmt(gchar *s, guint32 v)
+{
+ double navaf0_navTgd = (double)((gint32)v)*pow(2, -31);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", navaf0_navTgd, (gint32)v);
+}
+
+static void
+lpp_cnavToc_cnavTop_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%us (%u)", 300*v, v);
+}
+
+static void
+lpp_cnavAf2_fmt(gchar *s, guint32 v)
+{
+ double cnavAf2 = (double)((gint32)v)*pow(2, -60);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s2 (%d)", cnavAf2, (gint32)v);
+}
+
+static void
+lpp_cnavAf1_fmt(gchar *s, guint32 v)
+{
+ double cnavAf1 = (double)((gint32)v)*pow(2, -48);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", cnavAf1, (gint32)v);
+}
+
+static void
+lpp_cnavX_fmt(gchar *s, guint32 v)
+{
+ double cnavX = (double)((gint32)v)*pow(2, -35);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", cnavX, (gint32)v);
+}
+
+static void
+lpp_gloTau_gloDeltaTau_fmt(gchar *s, guint32 v)
+{
+ double gloTau_gloDeltaTau = (double)((gint32)v)*pow(2, -30);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", gloTau_gloDeltaTau, (gint32)v);
+}
+
+static void
+lpp_gloGamma_fmt(gchar *s, guint32 v)
+{
+ double gloGamma = (double)((gint32)v)*pow(2, -40);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g (%d)", gloGamma, (gint32)v);
+}
+
+static void
+lpp_sbasTo_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%us (%u)", 16*v, v);
+}
+
+static void
+lpp_sbasAgfo_fmt(gchar *s, guint32 v)
+{
+ double sbasAgfo = (double)((gint32)v)*pow(2, -31);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", sbasAgfo, (gint32)v);
+}
+
+static void
+lpp_sbasAgf1_fmt(gchar *s, guint32 v)
+{
+ double sbasAgf1 = (double)((gint32)v)*pow(2, -40);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", sbasAgf1, (gint32)v);
+}
+
+static void
+lpp_bdsAODC_AODE_r12_fmt(gchar *s, guint32 v)
+{
+ if (v < 25) {
+ snprintf(s, ITEM_LABEL_LENGTH, "Age of the satellite clock correction parameters is %u hours (%u)", v, v);
+ } else if (v < 31) {
+ snprintf(s, ITEM_LABEL_LENGTH, "Age of the satellite clock correction parameters is %u days (%u)", v-23, v);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "Age of the satellite clock correction parameters is over 7 days (%u)", v);
+ }
+}
+
+
+static void
+lpp_bdsToc_Toe_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsToc = (double)((gint32)v)*pow(2, 3);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", bdsToc, (gint32)v);
+}
+
+static void
+lpp_bdsA0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsA0 = (double)((gint32)v)*pow(2, -33);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", bdsA0, (gint32)v);
+}
+
+static void
+lpp_bdsA1_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsA1 = (double)((gint32)v)*pow(2, -50);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", bdsA1, (gint32)v);
+}
+
+static void
+lpp_bdsA2_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsA2 = (double)((gint32)v)*pow(2, -66);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s2 (%d)", bdsA2, (gint32)v);
+}
+
+static void
+lpp_bdsTgd1_r12_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%gns (%d)", (float)((gint32)v)*0.1, (gint32)v);
+}
+
+static void
+lpp_keplerToe_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%us (%u)", 60*v, v);
+}
+
+static void
+lpp_keplerW_M0_I0_Omega0_fmt(gchar *s, guint32 v)
+{
+ double keplerW_M0_I0_Omega0 = (double)((gint32)v)*pow(2, -31);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", keplerW_M0_I0_Omega0, (gint32)v);
+}
+
+static void
+lpp_keplerDeltaN_OmegaDot_IDot_fmt(gchar *s, guint32 v)
+{
+ double keplerDeltaN_OmegaDot_IDot = (double)((gint32)v)*pow(2, -43);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", keplerDeltaN_OmegaDot_IDot, (gint32)v);
+}
+
+static void
+lpp_keplerE_fmt(gchar *s, guint32 v)
+{
+ double keplerE = (double)v*pow(2, -33);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", keplerE, v);
+}
+
+static void
+lpp_keplerAPowerHalf_fmt(gchar *s, guint32 v)
+{
+ double keplerAPowerHalf = (double)v*pow(2, -19);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm1/2 (%u)", keplerAPowerHalf, v);
+}
+
+static void
+lpp_keplerCrs_Crc_fmt(gchar *s, guint32 v)
+{
+ double keplerCrs_Crc = (double)((gint32)v)*pow(2, -5);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", keplerCrs_Crc, (gint32)v);
+}
+
+static void
+lpp_keplerCx_fmt(gchar *s, guint32 v)
+{
+ double keplerCx = (double)((gint32)v)*pow(2, -29);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%grad (%d)", keplerCx, (gint32)v);
+}
+
+static void
+lpp_navToe_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%us (%u)", 16*v, v);
+}
+
+static void
+lpp_navOmega_M0_I0_OmegaA0_fmt(gchar *s, guint32 v)
+{
+ double navOmega_M0_I0_OmegaA0 = (double)((gint32)v)*pow(2, -31);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", navOmega_M0_I0_OmegaA0, (gint32)v);
+}
+
+static void
+lpp_navDeltaN_OmegaADot_IDot_fmt(gchar *s, guint32 v)
+{
+ double navDeltaN_OmegaADot_IDot = (double)((gint32)v)*pow(2, -43);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", navDeltaN_OmegaADot_IDot, (gint32)v);
+}
+
+static void
+lpp_navE_fmt(gchar *s, guint32 v)
+{
+ double navE = (double)v*pow(2, -33);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", navE, v);
+}
+
+static void
+lpp_navAPowerHalf_fmt(gchar *s, guint32 v)
+{
+ double navAPowerHalf = (double)v*pow(2, -19);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm1/2 (%u)", navAPowerHalf, v);
+}
+
+static void
+lpp_navCrs_Crc_fmt(gchar *s, guint32 v)
+{
+ double navCrs_Crc = (double)((gint32)v)*pow(2, -5);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", navCrs_Crc, (gint32)v);
+}
+
+static void
+lpp_navCx_fmt(gchar *s, guint32 v)
+{
+ double navCx = (double)((gint32)v)*pow(2, -29);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%grad (%d)", navCx, (gint32)v);
+}
+
+static void
+lpp_cnavDeltaA_fmt(gchar *s, guint32 v)
+{
+ double cnavDeltaA = (double)((gint32)v)*pow(2, -9);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", cnavDeltaA, (gint32)v);
+}
+
+static void
+lpp_cnavAdot_fmt(gchar *s, guint32 v)
+{
+ double cnavAdot = (double)((gint32)v)*pow(2, -21);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm/s (%d)", cnavAdot, (gint32)v);
+}
+
+static void
+lpp_cnavDeltaNo_fmt(gchar *s, guint32 v)
+{
+ double cnavDeltaNo = (double)((gint32)v)*pow(2, -44);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", cnavDeltaNo, (gint32)v);
+}
+
+static void
+lpp_cnavDeltaNoDot_fmt(gchar *s, guint32 v)
+{
+ double cnavDeltaNoDot = (double)((gint32)v)*pow(2, -57);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s2 (%d)", cnavDeltaNoDot, (gint32)v);
+}
+
+static void
+lpp_cnavDeltaOmegaDot_IoDot_fmt(gchar *s, guint32 v)
+{
+ double cnavDeltaOmegaDot_IoDot = (double)((gint32)v)*pow(2, -44);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", cnavDeltaOmegaDot_IoDot, (gint32)v);
+}
+
+static void
+lpp_cnavCx_fmt(gchar *s, guint32 v)
+{
+ double cnavCx = (double)((gint32)v)*pow(2, -30);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%grad (%d)", cnavCx, (gint32)v);
+}
+
+static void
+lpp_cnavCrs_Crc_fmt(gchar *s, guint32 v)
+{
+ double cnavCrs_Crc = (double)((gint32)v)*pow(2, -8);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", cnavCrs_Crc, (gint32)v);
+}
+
+static void
+lpp_gloX_Y_Z_fmt(gchar *s, guint32 v)
+{
+ double gloX_Y_Z = (double)((gint32)v)*pow(2, -11);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gkm (%d)", gloX_Y_Z, (gint32)v);
+}
+
+static void
+lpp_gloXdot_Ydot_Zdot_fmt(gchar *s, guint32 v)
+{
+ double gloXdot_Ydot_Zdot = (double)((gint32)v)*pow(2, -20);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gkm/s (%d)", gloXdot_Ydot_Zdot, (gint32)v);
+}
+
+static void
+lpp_gloXdotdot_Ydotdot_Zdotdot_fmt(gchar *s, guint32 v)
+{
+ double gloXdotdot_Ydotdot_Zdotdot = (double)((gint32)v)*pow(2, -30);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gkm/s2 (%d)", gloXdotdot_Ydotdot_Zdotdot, (gint32)v);
+}
+
+static void
+lpp_sbasXg_Yg_fmt(gchar *s, guint32 v)
+{
+ double sbasXg_Yg = (double)((gint32)v)*0.08;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm (%d)", sbasXg_Yg, (gint32)v);
+}
+
+static void
+lpp_sbasZg_fmt(gchar *s, guint32 v)
+{
+ double sbasZg = (double)((gint32)v)*0.4;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm (%d)", sbasZg, (gint32)v);
+}
+
+static void
+lpp_sbasXgDot_YgDot_fmt(gchar *s, guint32 v)
+{
+ double sbasXgDot_YgDot = (double)((gint32)v)*0.000625;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm/s (%d)", sbasXgDot_YgDot, (gint32)v);
+}
+
+static void
+lpp_sbasZgDot_fmt(gchar *s, guint32 v)
+{
+ double sbasZgDot = (double)((gint32)v)*0.004;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm/s (%d)", sbasZgDot, (gint32)v);
+}
+
+static void
+lpp_sbasXgDotDot_YgDotDot_fmt(gchar *s, guint32 v)
+{
+ double sbasXgDotDot_YgDotDot = (double)((gint32)v)*0.0000125;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm/s2 (%d)", sbasXgDotDot_YgDotDot, (gint32)v);
+}
+
+static void
+lpp_sbasZgDotDot_fmt(gchar *s, guint32 v)
+{
+ double sbasZgDotDot = (double)((gint32)v)*0.0000625;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm/s2 (%d)", sbasZgDotDot, (gint32)v);
+}
+
+static void
+lpp_bdsAPowerHalf_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAPowerHalf = (double)v*pow(2, -19);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm1/2 (%u)", bdsAPowerHalf, v);
+}
+
+static void
+lpp_bdsE_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsE = (double)v*pow(2, -33);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", bdsE, v);
+}
+
+static void
+lpp_bdsW_M0_Omega0_I0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsW_M0_Omega0_I0 = (double)((gint32)v)*pow(2, -31);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", bdsW_M0_Omega0_I0, (gint32)v);
+}
+
+static void
+lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsDeltaN_OmegaDot_IDot = (double)((gint32)v)*pow(2, -43);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", bdsDeltaN_OmegaDot_IDot, (gint32)v);
+}
+
+static void
+lpp_bdsCuc_Cus_Cic_Cis_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsCuc_Cus_Cic_Cis = (double)((gint32)v)*pow(2, -31);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%grad (%d)", bdsCuc_Cus_Cic_Cis, (gint32)v);
+}
+
+static void
+lpp_bdsCrc_Crs_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsCrc_Crs = (double)((gint32)v)*pow(2, -6);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%grad (%d)", bdsCrc_Crs, (gint32)v);
+}
+
+static void
+lpp_doppler0_fmt(gchar *s, guint32 v)
+{
+ double doppler0 = (double)((gint32)v)*0.5;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm/s (%d)", doppler0, (gint32)v);
+}
+
+static void
+lpp_doppler1_fmt(gchar *s, guint32 v)
+{
+ double doppler1 = (double)((gint32)(v-42))/210;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm/s2 (%u)", doppler1, v);
+}
+
+static const value_string lpp_dopplerUncertainty_vals[] = {
+ { 0, "40m/s"},
+ { 1, "20m/s"},
+ { 2, "10m/s"},
+ { 3, "5m/s"},
+ { 4, "2.5m/s"},
+ { 0, NULL}
+};
+
+static void
+lpp_codePhase_fmt(gchar *s, guint32 v)
+{
+ double codePhase = (double)v*pow(2, -10);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gms (%u)", codePhase, v);
+}
+
+static const value_string lpp_codePhaseSearchWindow_vals[] = {
+ { 0, "No information"},
+ { 1, "0.002ms"},
+ { 2, "0.004ms"},
+ { 3, "0.008ms"},
+ { 4, "0.012ms"},
+ { 5, "0.016ms"},
+ { 6, "0.024ms"},
+ { 7, "0.032ms"},
+ { 8, "0.048ms"},
+ { 9, "0.064ms"},
+ { 10, "0.096ms"},
+ { 11, "0.128ms"},
+ { 12, "0.164ms"},
+ { 13, "0.200ms"},
+ { 14, "0.250ms"},
+ { 15, "0.300ms"},
+ { 16, "0.360ms"},
+ { 17, "0.420ms"},
+ { 18, "0.480ms"},
+ { 19, "0.540ms"},
+ { 20, "0.600ms"},
+ { 21, "0.660ms"},
+ { 22, "0.720ms"},
+ { 23, "0.780ms"},
+ { 24, "0.850ms"},
+ { 25, "1.000ms"},
+ { 26, "1.150ms"},
+ { 27, "1.300ms"},
+ { 28, "1.450ms"},
+ { 29, "1.600ms"},
+ { 30, "1.800ms"},
+ { 31, "2.000ms"},
+ { 0, NULL}
+};
+static value_string_ext lpp_codePhaseSearchWindow_vals_ext = VALUE_STRING_EXT_INIT(lpp_codePhaseSearchWindow_vals);
+
+static void
+lpp_azimuth_elevation_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%u)", (float)v*0.703125, v);
+}
+
+static void
+lpp_kepAlmanacE_fmt(gchar *s, guint32 v)
+{
+ double kepAlmanacE = (double)v*pow(2, -16);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", kepAlmanacE, v);
+}
+
+static void
+lpp_kepAlmanacDeltaI_fmt(gchar *s, guint32 v)
+{
+ double kepAlmanacDeltaI = (double)((gint32)v)*pow(2, -14);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", kepAlmanacDeltaI, (gint32)v);
+}
+
+static void
+lpp_kepAlmanacOmegaDot_fmt(gchar *s, guint32 v)
+{
+ double kepAlmanacOmegaDot = (double)((gint32)v)*pow(2, -33);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", kepAlmanacOmegaDot, (gint32)v);
+}
+
+static void
+lpp_kepAlmanacAPowerHalf_fmt(gchar *s, guint32 v)
+{
+ double kepAlmanacAPowerHalf = (double)((gint32)v)*pow(2, -9);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm1/2 (%d)", kepAlmanacAPowerHalf, (gint32)v);
+}
+
+static void
+lpp_kepAlmanacOmega0_W_M0_fmt(gchar *s, guint32 v)
+{
+ double kepAlmanacOmega0_W_M0 = (double)((gint32)v)*pow(2, -15);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", kepAlmanacOmega0_W_M0, (gint32)v);
+}
+
+static void
+lpp_kepAlmanacAF0_fmt(gchar *s, guint32 v)
+{
+ double kepAlmanacAF0 = (double)((gint32)v)*pow(2, -19);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", kepAlmanacAF0, (gint32)v);
+}
+
+static void
+lpp_kepAlmanacAF1_fmt(gchar *s, guint32 v)
+{
+ double kepAlmanacAF1 = (double)((gint32)v)*pow(2, -38);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", kepAlmanacAF1, (gint32)v);
+}
+
+static void
+lpp_navAlmE_fmt(gchar *s, guint32 v)
+{
+ double navAlmE = (double)v*pow(2, -21);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", navAlmE, v);
+}
+
+static void
+lpp_navAlmDeltaI_fmt(gchar *s, guint32 v)
+{
+ double navAlmDeltaI = (double)((gint32)v)*pow(2, -19);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", navAlmDeltaI, (gint32)v);
+}
+
+static void
+lpp_navAlmOMEGADOT_fmt(gchar *s, guint32 v)
+{
+ double navAlmOMEGADOT = (double)((gint32)v)*pow(2, -38);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", navAlmOMEGADOT, (gint32)v);
+}
+
+static void
+lpp_navAlmSqrtA_fmt(gchar *s, guint32 v)
+{
+ double navAlmSqrtA = (double)v*pow(2, -11);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm1/2 (%u)", navAlmSqrtA, v);
+}
+
+static void
+lpp_navAlmOMEGAo_Omega_Mo_fmt(gchar *s, guint32 v)
+{
+ double navAlmOMEGAo_Omega_Mo = (double)((gint32)v)*pow(2, -23);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", navAlmOMEGAo_Omega_Mo, (gint32)v);
+}
+
+static void
+lpp_navAlmaf0_fmt(gchar *s, guint32 v)
+{
+ double navAlmaf0 = (double)((gint32)v)*pow(2, -20);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", navAlmaf0, (gint32)v);
+}
+
+static void
+lpp_navAlmaf1_fmt(gchar *s, guint32 v)
+{
+ double navAlmaf1 = (double)((gint32)v)*pow(2, -38);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", navAlmaf1, (gint32)v);
+}
+
+static void
+lpp_redAlmDeltaA_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%dm (%d)", 512*(gint)v, (gint)v);
+}
+
+static void
+lpp_redAlmOmega0_Phi0_fmt(gchar *s, guint32 v)
+{
+ double redAlmOmega0_Phi0 = (double)((gint32)v)*pow(2, -6);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", redAlmOmega0_Phi0, (gint32)v);
+}
+
+static void
+lpp_midiAlmE_fmt(gchar *s, guint32 v)
+{
+ double midiAlmE = (double)v*pow(2, -16);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", midiAlmE, v);
+}
+
+static void
+lpp_midiAlmDeltaI_fmt(gchar *s, guint32 v)
+{
+ double midiAlmDeltaI = (double)((gint32)v)*pow(2, -14);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", midiAlmDeltaI, (gint32)v);
+}
+
+static void
+lpp_midiAlmOmegaDot_fmt(gchar *s, guint32 v)
+{
+ double midiAlmOmegaDot = (double)((gint32)v)*pow(2, -33);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", midiAlmOmegaDot, (gint32)v);
+}
+
+static void
+lpp_midiAlmSqrtA_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm1/2 (%u)", (float)v*0.0625, v);
+}
+
+static void
+lpp_midiAlmOmega0_Omega_Mo_fmt(gchar *s, guint32 v)
+{
+ double midiAlmOmega0_Omega_Mo = (double)((gint32)v)*pow(2, -15);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", midiAlmOmega0_Omega_Mo, (gint32)v);
+}
+
+static void
+lpp_midiAlmaf0_fmt(gchar *s, guint32 v)
+{
+ double midiAlmaf0 = (double)((gint32)v)*pow(2, -20);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", midiAlmaf0, (gint32)v);
+}
+
+static void
+lpp_midiAlmaf1_fmt(gchar *s, guint32 v)
+{
+ double midiAlmaf1 = (double)((gint32)v)*pow(2, -37);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", midiAlmaf1, (gint32)v);
+}
+
+static void
+lpp_gloAlmLambdaA_DeltaIa_fmt(gchar *s, guint32 v)
+{
+ double gloAlmLambdaA_DeltaIa = (double)((gint32)v)*pow(2, -20);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", gloAlmLambdaA_DeltaIa, (gint32)v);
+}
+
+static void
+lpp_gloAlmtlambdaA_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%fs (%u)", (float)v*0.03125, v);
+}
+
+static void
+lpp_gloAlmDeltaTA_fmt(gchar *s, guint32 v)
+{
+ double gloAlmDeltaTA = (double)((gint32)v)*pow(2, -9);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/orbit period (%d)", gloAlmDeltaTA, (gint32)v);
+}
+
+static void
+lpp_gloAlmDeltaTdotA_fmt(gchar *s, guint32 v)
+{
+ double gloAlmDeltaTdotA = (double)((gint32)v)*pow(2, -14);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/orbit period (%d)", gloAlmDeltaTdotA, (gint32)v);
+}
+
+static void
+lpp_gloAlmEpsilonA_fmt(gchar *s, guint32 v)
+{
+ double gloAlmEpsilonA = (double)v*pow(2, -20);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", gloAlmEpsilonA, (gint32)v);
+}
+
+static void
+lpp_gloAlmOmegaA_fmt(gchar *s, guint32 v)
+{
+ double gloAlmOmegaA = (double)((gint32)v)*pow(2, -15);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", gloAlmOmegaA, (gint32)v);
+}
+
+static void
+lpp_gloAlmTauA_fmt(gchar *s, guint32 v)
+{
+ double gloAlmTauA = (double)((gint32)v)*pow(2, -18);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", gloAlmTauA, (gint32)v);
+}
+
+static void
+lpp_sbasAlmXg_Yg_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%fkm (%d)", (gint32)v*2.6, (gint32)v);
+}
+
+static void
+lpp_sbasAlmZg_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%dkm (%d)", (gint32)v*26, (gint32)v);
+}
+
+static void
+lpp_sbasAlmXgdot_YgDot_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%dm/s (%d)", (gint32)v*10, (gint32)v);
+}
+
+static void
+lpp_sbasAlmZgDot_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%fm/s (%d)", (gint32)v*40.96, (gint32)v);
+}
+
+static void
+lpp_sbasAlmTo_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%um/s (%u)", v*64, v);
+}
+
+static void
+lpp_bdsAlmToa_r12_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%us (%u)", v*4096, v);
+}
+
+static void
+lpp_bdsAlmSqrtA_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmSqrtA = (double)v*pow(2, -11);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm1/2 (%u)", bdsAlmSqrtA, v);
+}
+
+static void
+lpp_bdsAlmE_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmE = (double)v*pow(2, -21);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm1/2 (%u)", bdsAlmE, v);
+}
+
+static void
+lpp_bdsAlmW_M0_Omega0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmW_M0_Omega0 = (double)((gint32)v)*pow(2, -23);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", bdsAlmW_M0_Omega0, (gint32)v);
+}
+
+static void
+lpp_bdsAlmOmegaDot_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmOmegaDot = (double)((gint32)v)*pow(2, -38);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", bdsAlmOmegaDot, (gint32)v);
+}
+
+static void
+lpp_bdsAlmDeltaI_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmDeltaI = (double)((gint32)v)*pow(2, -19);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", bdsAlmDeltaI, (gint32)v);
+}
+
+static void
+lpp_bdsAlmA0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmA0 = (double)((gint32)v)*pow(2, -20);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", bdsAlmA0, (gint32)v);
+}
+
+static void
+lpp_bdsAlmA1_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmA1 = (double)((gint32)v)*pow(2, -38);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", bdsAlmA1, (gint32)v);
+}
+
+static const true_false_string lpp_bdsSvHealth_r12_b1i_b2i_value = {
+ "OK",
+ "Weak"
+};
+
+static const true_false_string lpp_bdsSvHealth_r12_nav_value = {
+ "OK",
+ "Bad (IOD over limit)"
+};
+
+static void
+lpp_gnss_Utc_A1_fmt(gchar *s, guint32 v)
+{
+ double gnss_Utc_A1 = (double)((gint32)v)*pow(2, -50);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/s (%d)", gnss_Utc_A1, (gint32)v);
+}
+
+static void
+lpp_gnss_Utc_A0_fmt(gchar *s, guint32 v)
+{
+ double gnss_Utc_A0 = (double)((gint32)v)*pow(2, -30);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", gnss_Utc_A0, (gint32)v);
+}
+
+static void
+lpp_gnss_Utc_Tot_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%us (%u)", v*4096, v);
+}
+
+static const value_string lpp_bds_UDREI_vals[] = {
+ { 0, "1 meter"},
+ { 1, "1.5 meters"},
+ { 2, "2 meters"},
+ { 3, "3 meters"},
+ { 4, "4 meters"},
+ { 5, "5 meters"},
+ { 6, "6 meters"},
+ { 7, "8 meters"},
+ { 8, "10 meters"},
+ { 9, "15 meters"},
+ { 10, "20 meters"},
+ { 11, "50 meters"},
+ { 12, "100 meters"},
+ { 13, "150 meters"},
+ { 14, "Not monitored"},
+ { 15, "Not available"},
+ { 0, NULL}
+};
+static value_string_ext lpp_bds_UDREI_vals_ext = VALUE_STRING_EXT_INIT(lpp_bds_UDREI_vals);
+
+static const value_string lpp_bds_RURAI_vals[] = {
+ { 0, "0.75 meter"},
+ { 1, "1 meter"},
+ { 2, "1.25 meters"},
+ { 3, "1.75 meters"},
+ { 4, "2.25 meters"},
+ { 5, "3 meters"},
+ { 6, "3.75 meters"},
+ { 7, "4.5 meters"},
+ { 8, "5.25 meters"},
+ { 9, "6 meters"},
+ { 10, "7.5 meters"},
+ { 11, "15 meters"},
+ { 12, "50 meters"},
+ { 13, "150 meters"},
+ { 14, "300 meters"},
+ { 15, "> 300 meters"},
+ { 0, NULL}
+};
+static value_string_ext lpp_bds_RURAI_vals_ext = VALUE_STRING_EXT_INIT(lpp_bds_RURAI_vals);
+
+static void
+lpp_bds_ECC_DeltaT_r12_fmt(gchar *s, guint32 v)
+{
+ if ((gint32)v == -4096) {
+ snprintf(s, ITEM_LABEL_LENGTH, "Not available (%d)", (gint32)v);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", (float)((gint32)v)*0.1, (gint32)v);
+ }
+}
+
+static void
+lpp_bds_GridIonElement_dt_r12_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", (float)((gint32)v)*0.125, (gint32)v);
+}
+
+static const value_string lpp_bds_givei_vals[] = {
+ { 0, "0.3 meter"},
+ { 1, "0.6 meter"},
+ { 2, "0.9 meter"},
+ { 3, "1.2 meters"},
+ { 4, "1.5 meters"},
+ { 5, "1.8 meters"},
+ { 6, "2.1 meters"},
+ { 7, "2.4 meters"},
+ { 8, "2.7 meters"},
+ { 9, "3 meters"},
+ { 10, "3.6 meters"},
+ { 11, "4.5 meters"},
+ { 12, "6 meters"},
+ { 13, "9 meters"},
+ { 14, "15 meters"},
+ { 15, "45 meters"},
+ { 0, NULL}
+};
+static value_string_ext lpp_bds_givei_vals_ext = VALUE_STRING_EXT_INIT(lpp_bds_givei_vals);
+
+static void
+lpp_fine_PseudoRange_r15_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)*pow(2, -29);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gms (%d)", val, (gint32)v);
+}
+
+static void
+lpp_fine_PhaseRange_r15_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)*pow(2, -31);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gms (%d)", val, (gint32)v);
+}
+
+static void
+lpp_carrier_to_noise_ratio_r15_fmt(gchar *s, guint32 v)
+{
+ double val = (double)v*pow(2, -4);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gdB-Hz (%d)", val, v);
+}
+
+static void
+lpp_fine_PhaseRangeRate_r15_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)/1000;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gms (%d)", val, (gint32)v);
+}
+
+static void
+lpp_cpBias_r15_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)/50;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", val, (gint32)v);
+}
+
+static const value_string lpp_ambiguityStatusFlag_r15_vals[] = {
+ { 0, "Reserved for future use (artificial observations)"},
+ { 1, "Correct Integer Ambiguity Level for L1 and L2"},
+ { 2, "Correct Integer Ambiguity Level for L1-L2 widelane"},
+ { 3, "Uncertain Integer Ambiguity Level. Only a likely guess is used"},
+ { 0, NULL}
+};
+
+static void
+lpp_1_2000m_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)/2000;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", val, (gint32)v);
+}
+
+static void
+lpp_1_100ppm_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)/100;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gppm (%d)", val, (gint32)v);
+}
+
+static void
+lpp_1_10ppm_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)/10;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gppm (%d)", val, (gint32)v);
+}
+
+static const value_string lpp_ssrUpdateInterval_r15_vals[] = {
+ { 0, "1 second"},
+ { 1, "2 seconds"},
+ { 2, "5 seconds"},
+ { 3, "10 seconds"},
+ { 4, "15 seconds"},
+ { 5, "30 seconds"},
+ { 6, "60 seconds"},
+ { 7, "120 seconds"},
+ { 8, "240 seconds"},
+ { 9, "300 seconds"},
+ { 10, "600 seconds"},
+ { 11, "900 seconds"},
+ { 12, "1800 seconds"},
+ { 13, "3600 seconds"},
+ { 14, "7200 seconds"},
+ { 15, "10800 seconds"},
+ { 0, NULL}
+};
+
+static void
+lpp_1_10000m_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)/10000;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", val, (gint32)v);
+}
+
+static void
+lpp_4_10000m_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)/10000*4;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", val, (gint32)v);
+}
+
+static void
+lpp_1_1000000m_s_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)/1000000;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm/s (%d)", val, (gint32)v);
+}
+
+static void
+lpp_4_1000000m_s_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)/1000000*4;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm/s (%d)", val, (gint32)v);
+}
+
+static void
+lpp_2_100000000m_s2_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)/100000000*2;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm/s2 (%d)", val, (gint32)v);
+}
+
+static void
+lpp_1_100000m_fmt(gchar *s, guint32 v)
+{
+ double val = (double)((gint32)v)/100000;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%d)", val, (gint32)v);
+}
+
+static void
+lpp_tauC_fmt(gchar *s, guint32 v)
+{
+ double tauC = (double)((gint32)v)*pow(2, -31);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", tauC, (gint32)v);
+}
+
+static void
+lpp_b1_fmt(gchar *s, guint32 v)
+{
+ double b1 = (double)((gint32)v)*pow(2, -10);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs (%d)", b1, (gint32)v);
+}
+
+static void
+lpp_b2_fmt(gchar *s, guint32 v)
+{
+ double b2 = (double)((gint32)v)*pow(2, -16);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gs/msd (%d)", b2, (gint32)v);
+}
+
+static const value_string lpp_utcStandardID_vals[] = {
+ { 0, "UTC as operated by the Communications Research Laboratory (CRL), Tokyo, Japan"},
+ { 1, "UTC as operated by the National Institute of Standards and Technology (NIST)"},
+ { 2, "UTC as operated by the U. S. Naval Observatory (USNO)"},
+ { 3, "UTC as operated by the International Bureau of Weights and Measures (BIPM)"},
+ { 0, NULL}
+};
+
+static const value_string lpp_dataBitInterval_vals[] = {
+ { 0, "0.1"},
+ { 1, "0.2"},
+ { 2, "0.4"},
+ { 3, "0.8"},
+ { 4, "1.6"},
+ { 5, "3.2"},
+ { 6, "6.4"},
+ { 7, "12.8"},
+ { 8, "25.6"},
+ { 9, "51.2"},
+ { 10, "102.4"},
+ { 11, "204.8"},
+ { 12, "409.6"},
+ { 13, "819.2"},
+ { 14, "1638.4"},
+ { 15, "Not specified"},
+ { 0, NULL}
+};
+static value_string_ext lpp_dataBitInterval_vals_ext = VALUE_STRING_EXT_INIT(lpp_dataBitInterval_vals);
+
+static const value_string lpp_carrierQualityInd_vals[] = {
+ { 0, "Data direct, carrier phase not continuous"},
+ { 1, "Data inverted, carrier phase not continuous"},
+ { 2, "Data direct, carrier phase continuous"},
+ { 3, "Data inverted, carrier phase continuous"},
+ { 0, NULL}
+};
+
+static void
+lpp_GNSS_SatMeas_codePhase_fmt(gchar *s, guint32 v)
+{
+ double codePhase = (double)v*pow(2, -21);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gms (%u)", codePhase, v);
+}
+
+static void
+lpp_codePhaseRMSError_fmt(gchar *s, guint32 v)
+{
+ guint8 mantissa = v & 0x07;
+ guint8 exponent = (v & 0x38) >> 3;
+ guint8 mantissa_1 = (v - 1) & 0x07;
+ guint8 exponent_1 = ((v - 1) & 0x38) >> 3;
+
+ if (v == 0) {
+ snprintf(s, ITEM_LABEL_LENGTH, "P < 0.5 (0)");
+ } else if (v < 63) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%f <= P < %f (%u)", 0.5*(1+mantissa_1/8)*pow(2, exponent_1),
+ 0.5*(1+mantissa/8)*pow(2, exponent), v);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "112 <= P (63)");
+ }
+}
+
+static void
+lpp_transmitterLatitude_fmt(gchar *s, guint32 v)
+{
+ double lat = ((double)v*4.0/pow(2, 20))-90.0;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", lat, v);
+}
+
+static void
+lpp_transmitterLongitude_fmt(gchar *s, guint32 v)
+{
+ double longitude = ((double)v*4.0/pow(2, 20))-180.0;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", longitude, v);
+}
+
+static void
+lpp_transmitterAltitude_fmt(gchar *s, guint32 v)
+{
+ double alt = ((double)v*0.29)-500.0;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%u)", alt, v);
+}
+
+static void
+lpp_refPressure_fmt(gchar *s, guint32 v)
+{
+ gint32 pressure = (gint32)v;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%dPa (%d)", 101325+pressure, pressure);
+}
+
+static void
+lpp_refTemperature_fmt(gchar *s, guint32 v)
+{
+ gint32 temp = (gint32)v;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%dK (%d)", 273+temp, temp);
+}
+
+static void
+lpp_referencePressureRate_v1520_fmt(gchar *s, guint32 v)
+{
+ gint32 rate = (gint32)v;
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%dPa/hour (%d)", 10*rate, rate);
+}
+
+static void
+lpp_PressureValidityPeriod_v1520_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%umin (%u)", 15*v, v);
+}
+
+static void
+lpp_doppler_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm/s (%d)", (gint32)v*0.04, (gint32)v);
+}
+
+static void
+lpp_adr_fmt(gchar *s, guint32 v)
+{
+ double adr = (double)v*pow(2, -10);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gm (%u)", adr, v);
+}
+
+static void
+lpp_adrMSB_r15_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%um (%u)", v*32768, v);
+}
+
+static void
+lpp_GNSS_SatMeas_delta_codePhase_r15_fmt(gchar *s, guint32 v)
+{
+ double codePhase = (double)v*pow(2, -24);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gms (%u)", codePhase, v);
+}
+
+static void
+lpp_deliveryAmount_r15_fmt(gchar *s, guint32 v)
+{
+ snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", pow(2, v), v);
+}
+
+static void
+lpp_rsrp_Result_fmt(gchar *s, guint32 v)
+{
+ if (v == 0) {
+ snprintf(s, ITEM_LABEL_LENGTH, "RSRP < -140dBm (0)");
+ } else if (v < 97) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSRP < %ddBm (%u)", v-141, v-140, v);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "-44dBm <= RSRP (97)");
+ }
+}
+
+static void
+lpp_rsrq_Result_fmt(gchar *s, guint32 v)
+{
+ if (v == 0) {
+ snprintf(s, ITEM_LABEL_LENGTH, "RSRQ < -19.5dB (0)");
+ } else if (v < 34) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= RSRQ < %.1fdB (%u)", ((float)v/2)-20, (((float)v+1)/2)-20, v);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "-3dB <= RSRQ (34)");
+ }
+}
+
+static void
+lpp_nrsrp_Result_fmt(gchar *s, guint32 v)
+{
+ if (v == 0) {
+ snprintf(s, ITEM_LABEL_LENGTH, "NRSRP < -156dBm (0)");
+ } else if (v < 113) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= NRSRP < %ddBm (%u)", v-157, v-156, v);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "-44dBm <= NRSRP (97)");
+ }
+}
+
+static void
+lpp_nrsrq_Result_fmt(gchar *s, guint32 v)
+{
+ if (v == 0) {
+ snprintf(s, ITEM_LABEL_LENGTH, "NRSRQ < -34dB (0)");
+ } else if (v < 74) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= NRSRQ < %.1fdB (%u)", (((float)v-1)/2)-34, ((float)v/2)-34, v);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "2.5dB <= NRSRQ (%u)", v);
+ }
+}
+
+static void
+lpp_rsrp_Result_v1470_fmt(gchar *s, guint32 v)
+{
+ gint32 d = (gint32)v;
+
+ if (d == -17) {
+ snprintf(s, ITEM_LABEL_LENGTH, "RSRP < -157dBm (-17)");
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSRP < %ddBm (%d)", d-141, d-140, d);
+ }
+}
+
+static void
+lpp_rsrq_Result_v1470_fmt(gchar *s, guint32 v)
+{
+ gint32 d = (gint32)v;
+
+ if (v == 0) {
+ snprintf(s, ITEM_LABEL_LENGTH, "RSRQ < -34.5dB (-30)");
+ } else if (v < 46) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= RSRQ < %.1fdB (%d)", ((float)d/2)-20, (((float)d+1)/2)-20, d);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "3dB <= RSRQ (46)");
+ }
+}
+
+static void
+lpp_ue_RxTxTimeDiff_fmt(gchar *s, guint32 v)
+{
+ if (v == 0) {
+ snprintf(s, ITEM_LABEL_LENGTH, "T < 2Ts (0)");
+ } else if (v < 2048) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%uTs <= T < %uTs (%u)", v*2, (v+1)*2, v);
+ } else if (v < 4095) {
+ snprintf(s, ITEM_LABEL_LENGTH, "%uTs <= T < %uTs (%u)", (v*8)-12288, ((v+1)*8)-12288, v);
+ } else {
+ snprintf(s, ITEM_LABEL_LENGTH, "20472Ts <= T (4095)");
+ }
+}
+
+static void
+lpp_mbs_beaconMeasElt_codePhase_fmt(gchar *s, guint32 v)
+{
+ double codePhase = (double)v*pow(2, -21);
+
+ snprintf(s, ITEM_LABEL_LENGTH, "%gms (%u)", codePhase, v);
+}
+
+const unit_name_string units_pa = { "Pa", NULL };
+
+#include "packet-lpp-fn.c"
+
+int dissect_lpp_AssistanceDataSIBelement_r15_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, lpp_pos_sib_type_t pos_sib_type) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ struct lpp_private_data *lpp_data = lpp_get_private_data(pinfo);
+
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
+ lpp_data->pos_sib_type = pos_sib_type;
+ offset = dissect_lpp_AssistanceDataSIBelement_r15(tvb, offset, &asn1_ctx, tree, hf_lpp_AssistanceDataSIBelement_r15_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
+
+static int dissect_lpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) {
+ proto_tree *subtree;
+ proto_item *it;
+
+ it = proto_tree_add_item(tree, proto_lpp, tvb, 0, -1, ENC_NA);
+ col_append_sep_str(pinfo->cinfo, COL_PROTOCOL, "/", "LPP");
+ subtree = proto_item_add_subtree(it, ett_lpp);
+
+ return dissect_LPP_Message_PDU(tvb, pinfo, subtree, NULL);
+}
+
+/*--- proto_register_lpp -------------------------------------------*/
+void proto_register_lpp(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+
+#include "packet-lpp-hfarr.c"
+ { &hf_lpp_svHealthExt_v1240_e5bhs,
+ { "E5b Signal Health Status", "lpp.svHealthExt_v1240.e5bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_svHealthExt_v1240_e1_bhs,
+ { "E1-B Signal Health Status", "lpp.svHealthExt_v1240.e1_bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_kepSV_StatusINAV_e5bhs,
+ { "E5b Signal Health Status", "lpp.kepSV_StatusINAV.e5bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_kepSV_StatusINAV_e1_bhs,
+ { "E1-B Signal Health Status", "lpp.kepSV_StatusINAV.e1_bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_kepSV_StatusFNAV_e5ahs,
+ { "E5a Signal Health Status", "lpp.kepSV_StatusFNAV.e5ahs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_sat_clock,
+ { "Satellite Clock", "lpp.bdsSvHealth_r12.sat_clock",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_ok_error), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_b1i,
+ { "B1I Signal", "lpp.bdsSvHealth_r12.b1i",
+ FT_BOOLEAN, BASE_NONE, TFS(&lpp_bdsSvHealth_r12_b1i_b2i_value), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_b2i,
+ { "B2I Signal", "lpp.bdsSvHealth_r12.b2i",
+ FT_BOOLEAN, BASE_NONE, TFS(&lpp_bdsSvHealth_r12_b1i_b2i_value), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_nav,
+ { "NAV Message", "lpp.bdsSvHealth_r12.nav",
+ FT_BOOLEAN, BASE_NONE, TFS(&lpp_bdsSvHealth_r12_nav_value), 0,
+ NULL, HFILL }},
+ { &hf_lpp_AssistanceDataSIBelement_r15_PDU,
+ { "AssistanceDataSIBelement-r15", "lpp.AssistanceDataSIBelement_r15_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_lpp,
+ &ett_lpp_svHealthExt_v1240,
+ &ett_kepSV_StatusINAV,
+ &ett_kepSV_StatusFNAV,
+ &ett_lpp_bdsSvHealth_r12,
+ &ett_lpp_assistanceDataElement_r15,
+#include "packet-lpp-ettarr.c"
+ };
+
+
+ /* Register protocol */
+ proto_lpp = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ register_dissector("lpp", dissect_lpp, proto_lpp);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_lpp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+
+}
+
+
+/*--- proto_reg_handoff_lpp ---------------------------------------*/
+void
+proto_reg_handoff_lpp(void)
+{
+ lppe_handle = find_dissector_add_dependency("lppe", proto_lpp);
+}
+
+
diff --git a/epan/dissectors/asn1/lpp/packet-lpp-template.h b/epan/dissectors/asn1/lpp/packet-lpp-template.h
new file mode 100644
index 00000000..6d3ec42c
--- /dev/null
+++ b/epan/dissectors/asn1/lpp/packet-lpp-template.h
@@ -0,0 +1,68 @@
+/* packet-lpp.h
+ * Routines for 3GPP LTE Positioning Protocol (LPP) packet dissection
+ * Copyright 2011-2022 Pascal Quantin <pascal@wireshark.org>
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ */
+
+#ifndef PACKET_LPP_H
+#define PACKET_LPP_H
+
+typedef enum {
+ LPP_POS_SIB_TYPE_UNKNOWN,
+ LPP_POS_SIB_TYPE_1_1,
+ LPP_POS_SIB_TYPE_1_2,
+ LPP_POS_SIB_TYPE_1_3,
+ LPP_POS_SIB_TYPE_1_4,
+ LPP_POS_SIB_TYPE_1_5,
+ LPP_POS_SIB_TYPE_1_6,
+ LPP_POS_SIB_TYPE_1_7,
+ LPP_POS_SIB_TYPE_1_8,
+ LPP_POS_SIB_TYPE_1_9,
+ LPP_POS_SIB_TYPE_1_10,
+ LPP_POS_SIB_TYPE_2_1,
+ LPP_POS_SIB_TYPE_2_2,
+ LPP_POS_SIB_TYPE_2_3,
+ LPP_POS_SIB_TYPE_2_4,
+ LPP_POS_SIB_TYPE_2_5,
+ LPP_POS_SIB_TYPE_2_6,
+ LPP_POS_SIB_TYPE_2_7,
+ LPP_POS_SIB_TYPE_2_8,
+ LPP_POS_SIB_TYPE_2_9,
+ LPP_POS_SIB_TYPE_2_10,
+ LPP_POS_SIB_TYPE_2_11,
+ LPP_POS_SIB_TYPE_2_12,
+ LPP_POS_SIB_TYPE_2_13,
+ LPP_POS_SIB_TYPE_2_14,
+ LPP_POS_SIB_TYPE_2_15,
+ LPP_POS_SIB_TYPE_2_16,
+ LPP_POS_SIB_TYPE_2_17,
+ LPP_POS_SIB_TYPE_2_18,
+ LPP_POS_SIB_TYPE_2_19,
+ LPP_POS_SIB_TYPE_2_20,
+ LPP_POS_SIB_TYPE_2_21,
+ LPP_POS_SIB_TYPE_2_22,
+ LPP_POS_SIB_TYPE_2_23,
+ LPP_POS_SIB_TYPE_2_24,
+ LPP_POS_SIB_TYPE_2_25,
+ LPP_POS_SIB_TYPE_3_1,
+ LPP_POS_SIB_TYPE_4_1,
+ LPP_POS_SIB_TYPE_5_1,
+ LPP_POS_SIB_TYPE_6_1,
+ LPP_POS_SIB_TYPE_6_2,
+ LPP_POS_SIB_TYPE_6_3,
+ LPP_POS_SIB_TYPE_6_4,
+ LPP_POS_SIB_TYPE_6_5,
+ LPP_POS_SIB_TYPE_6_6,
+} lpp_pos_sib_type_t;
+
+int dissect_lpp_AssistanceDataSIBelement_r15_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, lpp_pos_sib_type_t pos_sib_type);
+
+#include "packet-lpp-exp.h"
+
+#endif /* PACKET_LPP_H */