diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/lpp | |
parent | Initial commit. (diff) | |
download | wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip |
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
20 files changed, 18170 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 = ¬ificationOfLeapSecond_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 = ¶m_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 = ¶m_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 */ diff --git a/epan/dissectors/asn1/lppa/CMakeLists.txt b/epan/dissectors/asn1/lppa/CMakeLists.txt new file mode 100644 index 00000000..2057cab1 --- /dev/null +++ b/epan/dissectors/asn1/lppa/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 lppa ) + +set( PROTO_OPT ) + +set( EXT_ASN_FILE_LIST +) + +set( ASN_FILE_LIST + LPPA-CommonDataTypes.asn + LPPA-Constants.asn + LPPA-Containers.asn + LPPA-IEs.asn + LPPA-PDU-Contents.asn + LPPA-PDU-Descriptions.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/lppa/LPPA-CommonDataTypes.asn b/epan/dissectors/asn1/lppa/LPPA-CommonDataTypes.asn new file mode 100644 index 00000000..8b7dcd09 --- /dev/null +++ b/epan/dissectors/asn1/lppa/LPPA-CommonDataTypes.asn @@ -0,0 +1,53 @@ +-- 3GPP TS 36.455 V16.1.0 (2020-09) +-- + +-- ************************************************************** +-- +-- Common definitions +-- +-- ************************************************************** + +LPPA-CommonDataTypes { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lppa (6) version1 (1) lppa-CommonDataTypes (3)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** + +maxPrivateIEs INTEGER ::= 65535 +maxProtocolExtensions INTEGER ::= 65535 +maxProtocolIEs INTEGER ::= 65535 + +-- ************************************************************** +-- +-- Common Data Types +-- +-- ************************************************************** + +Criticality ::= ENUMERATED { reject, ignore, notify } + +LPPATransactionID ::= INTEGER (0..32767) + + +Presence ::= ENUMERATED { optional, conditional, mandatory } + +PrivateIE-ID ::= CHOICE { + local INTEGER (0.. maxPrivateIEs), + global OBJECT IDENTIFIER +} + +ProcedureCode ::= INTEGER (0..255) + + +ProtocolIE-ID ::= INTEGER (0..maxProtocolIEs) + +TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome} + +END diff --git a/epan/dissectors/asn1/lppa/LPPA-Constants.asn b/epan/dissectors/asn1/lppa/LPPA-Constants.asn new file mode 100644 index 00000000..92d49b7c --- /dev/null +++ b/epan/dissectors/asn1/lppa/LPPA-Constants.asn @@ -0,0 +1,101 @@ +-- 3GPP TS 36.455 V16.1.0 (2020-09) +-- + +-- ************************************************************** +-- +-- Constant definitions +-- +-- ************************************************************** + +LPPA-Constants { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lppa (6) version1 (1) lppa-Constants (4) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + ProcedureCode, + ProtocolIE-ID +FROM LPPA-CommonDataTypes; + +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** + +id-errorIndication ProcedureCode ::= 0 +id-privateMessage ProcedureCode ::= 1 +id-e-CIDMeasurementInitiation ProcedureCode ::= 2 +id-e-CIDMeasurementFailureIndication ProcedureCode ::= 3 +id-e-CIDMeasurementReport ProcedureCode ::= 4 +id-e-CIDMeasurementTermination ProcedureCode ::= 5 +id-oTDOAInformationExchange ProcedureCode ::= 6 +id-uTDOAInformationExchange ProcedureCode ::= 7 +id-uTDOAInformationUpdate ProcedureCode ::= 8 +id-assistanceInformationControl ProcedureCode ::= 9 +id-assistanceInformationFeedback ProcedureCode ::= 10 + +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** + +maxNrOfErrors INTEGER ::= 256 +maxCellineNB INTEGER ::= 256 +maxNoMeas INTEGER ::= 63 +maxCellReport INTEGER ::= 9 +maxnoOTDOAtypes INTEGER ::= 63 +maxServCell INTEGER ::= 5 +maxGERANMeas INTEGER ::= 8 +maxUTRANMeas INTEGER ::= 8 +maxCellineNB-ext INTEGER ::= 3840 +maxMBSFN-Allocations INTEGER ::= 8 +maxWLANchannels INTEGER ::= 16 +maxnoFreqHoppingBandsMinusOne INTEGER ::= 7 +maxNrOfPosSImessage INTEGER ::= 32 +maxnoAssistInfoFailureListItems INTEGER ::= 32 +maxNrOfSegments INTEGER ::= 64 +maxNrOfPosSIBs INTEGER ::= 32 +maxNRmeas INTEGER ::= 32 +maxResultsPerSSBIndex INTEGER ::= 64 + +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** + +id-Cause ProtocolIE-ID ::= 0 +id-CriticalityDiagnostics ProtocolIE-ID ::= 1 +id-E-SMLC-UE-Measurement-ID ProtocolIE-ID ::= 2 +id-ReportCharacteristics ProtocolIE-ID ::= 3 +id-MeasurementPeriodicity ProtocolIE-ID ::= 4 +id-MeasurementQuantities ProtocolIE-ID ::= 5 +id-eNB-UE-Measurement-ID ProtocolIE-ID ::= 6 +id-E-CID-MeasurementResult ProtocolIE-ID ::= 7 +id-OTDOACells ProtocolIE-ID ::= 8 +id-OTDOA-Information-Type-Group ProtocolIE-ID ::= 9 +id-OTDOA-Information-Type-Item ProtocolIE-ID ::= 10 +id-MeasurementQuantities-Item ProtocolIE-ID ::= 11 +id-RequestedSRSTransmissionCharacteristics ProtocolIE-ID ::= 12 +id-ULConfiguration ProtocolIE-ID ::= 13 +id-Cell-Portion-ID ProtocolIE-ID ::= 14 +id-InterRATMeasurementQuantities ProtocolIE-ID ::= 15 +id-InterRATMeasurementQuantities-Item ProtocolIE-ID ::= 16 +id-InterRATMeasurementResult ProtocolIE-ID ::= 17 +id-AddOTDOACells ProtocolIE-ID ::= 18 +id-WLANMeasurementQuantities ProtocolIE-ID ::= 19 +id-WLANMeasurementQuantities-Item ProtocolIE-ID ::= 20 +id-WLANMeasurementResult ProtocolIE-ID ::= 21 +id-Assistance-Information ProtocolIE-ID ::= 22 +id-Broadcast ProtocolIE-ID ::= 23 +id-AssistanceInformationFailureList ProtocolIE-ID ::= 24 +id-ResultsPerSSB-Index-List ProtocolIE-ID ::= 25 +id-ResultsPerSSB-Index-Item ProtocolIE-ID ::= 26 +id-NR-CGI ProtocolIE-ID ::= 27 + +END diff --git a/epan/dissectors/asn1/lppa/LPPA-Containers.asn b/epan/dissectors/asn1/lppa/LPPA-Containers.asn new file mode 100644 index 00000000..11d94b56 --- /dev/null +++ b/epan/dissectors/asn1/lppa/LPPA-Containers.asn @@ -0,0 +1,197 @@ +-- 3GPP TS 36.455 V16.1.0 (2020-09) +-- + +-- ************************************************************** +-- +-- Container definitions +-- +-- ************************************************************** + +LPPA-Containers { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lppa (6) version1 (1) lppa-Containers (5)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + maxPrivateIEs, + maxProtocolExtensions, + maxProtocolIEs, + Criticality, + Presence, + PrivateIE-ID, + ProtocolIE-ID +FROM LPPA-CommonDataTypes; + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +LPPA-PROTOCOL-IES ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &criticality Criticality, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +LPPA-PROTOCOL-IES-PAIR ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &firstCriticality Criticality, + &FirstValue, + &secondCriticality Criticality, + &SecondValue, + &presence Presence +} +WITH SYNTAX { + ID &id + FIRST CRITICALITY &firstCriticality + FIRST TYPE &FirstValue + SECOND CRITICALITY &secondCriticality + SECOND TYPE &SecondValue + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol Extensions +-- +-- ************************************************************** + +LPPA-PROTOCOL-EXTENSION ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &criticality Criticality, + &Extension, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + EXTENSION &Extension + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Private IEs +-- +-- ************************************************************** + +LPPA-PRIVATE-IES ::= CLASS { + &id PrivateIE-ID, + &criticality Criticality, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Container for Protocol IEs +-- +-- ************************************************************** + +ProtocolIE-Container { LPPA-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-Single-Container { LPPA-PROTOCOL-IES : IEsSetParam} ::= + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-Field { LPPA-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE { + id LPPA-PROTOCOL-IES.&id ({IEsSetParam}), + criticality LPPA-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value LPPA-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Protocol IE Pairs +-- +-- ************************************************************** + +ProtocolIE-ContainerPair { LPPA-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-FieldPair {{IEsSetParam}} + +ProtocolIE-FieldPair { LPPA-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE { + id LPPA-PROTOCOL-IES-PAIR.&id ({IEsSetParam}), + firstCriticality LPPA-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}), + firstValue LPPA-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}), + secondCriticality LPPA-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}), + secondValue LPPA-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container Lists for Protocol IE Containers +-- +-- ************************************************************** + +ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, LPPA-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-Container {{IEsSetParam}} + +ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, LPPA-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-ContainerPair {{IEsSetParam}} + +-- ************************************************************** +-- +-- Container for Protocol Extensions +-- +-- ************************************************************** + +ProtocolExtensionContainer { LPPA-PROTOCOL-EXTENSION : ExtensionSetParam} ::= + SEQUENCE (SIZE (1..maxProtocolExtensions)) OF + ProtocolExtensionField {{ExtensionSetParam}} + +ProtocolExtensionField { LPPA-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE { + id LPPA-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}), + criticality LPPA-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}), + extensionValue LPPA-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Private IEs +-- +-- ************************************************************** + +PrivateIE-Container { LPPA-PRIVATE-IES : IEsSetParam} ::= + SEQUENCE (SIZE (1..maxPrivateIEs)) OF + PrivateIE-Field {{IEsSetParam}} + +PrivateIE-Field { LPPA-PRIVATE-IES : IEsSetParam} ::= SEQUENCE { + id LPPA-PRIVATE-IES.&id ({IEsSetParam}), + criticality LPPA-PRIVATE-IES.&criticality ({IEsSetParam}{@id}), + value LPPA-PRIVATE-IES.&Value ({IEsSetParam}{@id}) +} + +END diff --git a/epan/dissectors/asn1/lppa/LPPA-IEs.asn b/epan/dissectors/asn1/lppa/LPPA-IEs.asn new file mode 100644 index 00000000..ccc24203 --- /dev/null +++ b/epan/dissectors/asn1/lppa/LPPA-IEs.asn @@ -0,0 +1,971 @@ +-- 3GPP TS 36.455 V16.1.0 (2020-09) +-- + +-- ************************************************************** +-- +-- Information Element Definitions +-- +-- ************************************************************** + +LPPA-IEs { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lppa (6) version1 (1) lppa-IEs (2) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + + id-MeasurementQuantities-Item, + id-ResultsPerSSB-Index-List, + id-ResultsPerSSB-Index-Item, + id-NR-CGI, + maxCellineNB, + maxCellReport, + maxNrOfErrors, + maxNoMeas, + maxnoOTDOAtypes, + maxServCell, + id-InterRATMeasurementQuantities-Item, + id-WLANMeasurementQuantities-Item, + maxGERANMeas, + maxUTRANMeas, + maxNRmeas, + maxResultsPerSSBIndex, + maxCellineNB-ext, + maxWLANchannels, + maxMBSFN-Allocations, + maxnoFreqHoppingBandsMinusOne, + maxNrOfPosSImessage, + maxnoAssistInfoFailureListItems, + maxNrOfSegments, + maxNrOfPosSIBs + +FROM LPPA-Constants + + Criticality, + LPPATransactionID, + ProcedureCode, + ProtocolIE-ID, + TriggeringMessage + +FROM LPPA-CommonDataTypes + + ProtocolExtensionContainer{}, + ProtocolIE-Single-Container{}, + + LPPA-PROTOCOL-EXTENSION, + LPPA-PROTOCOL-IES +FROM LPPA-Containers; + +-- A + +Add-OTDOACells ::= SEQUENCE (SIZE (1.. maxCellineNB-ext)) OF SEQUENCE { + add-OTDOACellInfo Add-OTDOACell-Information, + iE-Extensions ProtocolExtensionContainer { {Add-OTDOACells-ExtIEs} } OPTIONAL, + ... +} + +Add-OTDOACells-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +Add-OTDOACell-Information ::= SEQUENCE (SIZE (1..maxnoOTDOAtypes)) OF OTDOACell-Information-Item + +Assistance-Information ::= SEQUENCE { + systemInformation SystemInformation, + iE-Extensions ProtocolExtensionContainer { { Assistance-Information-ExtIEs} } OPTIONAL, + ... +} + +Assistance-Information-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +AssistanceInformationFailureList ::= SEQUENCE (SIZE (1..maxnoAssistInfoFailureListItems)) OF SEQUENCE { + posSIB-Type PosSIB-Type, + outcome Outcome, + iE-Extensions ProtocolExtensionContainer { {AssistanceInformationFailureList-ExtIEs} } OPTIONAL, + ... +} + +AssistanceInformationFailureList-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +AssistanceInformationMetaData ::= SEQUENCE { + encrypted ENUMERATED {true, ...} OPTIONAL, + gNSSID ENUMERATED {gps, sbas, gzss, galileo, glonass, bds, ..., navic} OPTIONAL, + sBASID ENUMERATED {waas, egnos, msas, gagan, ...} OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { AssistanceInformationMetaData-ExtIEs} } OPTIONAL, + ... +} + +AssistanceInformationMetaData-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +-- B + +BCCH ::= INTEGER (0..1023, ...) + +BitmapsforNPRS ::= CHOICE { + ten BIT STRING(SIZE (10)), + forty BIT STRING(SIZE (40)), + ..., + ten-tdd BIT STRING(SIZE (8)), + forty-tdd BIT STRING(SIZE (32))} + +Broadcast ::= ENUMERATED { + start, + stop, + ... +} + +BroadcastPeriodicity ::= ENUMERATED { + ms80, + ms160, + ms320, + ms640, + ms1280, + ms2560, + ms5120, + ... +} + +BSSID ::= OCTET STRING (SIZE(6)) + + +-- C + +Cause ::= CHOICE { + radioNetwork CauseRadioNetwork, + protocol CauseProtocol, + misc CauseMisc, + ... +} + +CauseMisc ::= ENUMERATED { + unspecified, + ... +} + +CauseProtocol ::= ENUMERATED { + transfer-syntax-error, + abstract-syntax-error-reject, + abstract-syntax-error-ignore-and-notify, + message-not-compatible-with-receiver-state, + semantic-error, + unspecified, + abstract-syntax-error-falsely-constructed-message, + ... +} + +CauseRadioNetwork ::= ENUMERATED { + unspecified, + requested-item-not-supported, + requested-item-temporarily-not-available, + ... + +} + +Cell-Portion-ID ::= INTEGER (0..255,... , 256..4095) + +CPLength ::= ENUMERATED { + normal, + extended, + ... +} + +CriticalityDiagnostics ::= SEQUENCE { + procedureCode ProcedureCode OPTIONAL, + triggeringMessage TriggeringMessage OPTIONAL, + procedureCriticality Criticality OPTIONAL, + lppatransactionID LPPATransactionID OPTIONAL, + iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} } OPTIONAL, + ... +} + + +CriticalityDiagnostics-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF + SEQUENCE { + iECriticality Criticality, + iE-ID ProtocolIE-ID, + typeOfError TypeOfError, + iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-IE-List-ExtIEs} } OPTIONAL, + ... +} + +CriticalityDiagnostics-IE-List-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +-- D + +DL-Bandwidth ::= ENUMERATED { + bw6, + bw15, + bw25, + bw50, + bw75, + bw100, + ... +} + +-- E + +E-CID-MeasurementResult ::= SEQUENCE { + servingCell-ID ECGI, + servingCellTAC TAC, + e-UTRANAccessPointPosition E-UTRANAccessPointPosition OPTIONAL, + measuredResults MeasuredResults OPTIONAL, + ... +} + +ECGI ::= SEQUENCE { + pLMN-Identity PLMN-Identity, + eUTRANcellIdentifier EUTRANCellIdentifier, + iE-Extensions ProtocolExtensionContainer { {ECGI-ExtIEs} } OPTIONAL, + ... +} + +ECGI-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +EUTRANCellIdentifier ::= BIT STRING (SIZE (28)) + +EARFCN ::= INTEGER (0..65535, ..., 65536..262143) + +E-UTRANAccessPointPosition ::= SEQUENCE { + latitudeSign ENUMERATED {north, south}, + latitude INTEGER (0..8388607), + longitude INTEGER (-8388608..8388607), + directionOfAltitude ENUMERATED {height, depth}, + altitude INTEGER (0..32767), + uncertaintySemi-major INTEGER (0..127), + uncertaintySemi-minor INTEGER (0..127), + orientationOfMajorAxis INTEGER (0..179), + uncertaintyAltitude INTEGER (0..127), + confidence INTEGER (0..100), + ... +} + +-- F +-- G +-- H + +HESSID ::= OCTET STRING (SIZE(6)) + + +-- I + +InterRATMeasurementQuantities ::= SEQUENCE (SIZE (0.. maxNoMeas)) OF ProtocolIE-Single-Container { {InterRATMeasurementQuantities-ItemIEs} } + +InterRATMeasurementQuantities-ItemIEs LPPA-PROTOCOL-IES ::= { + { ID id-InterRATMeasurementQuantities-Item CRITICALITY reject TYPE InterRATMeasurementQuantities-Item PRESENCE mandatory}} + +InterRATMeasurementQuantities-Item ::= SEQUENCE { + interRATMeasurementQuantitiesValue InterRATMeasurementQuantitiesValue, + iE-Extensions ProtocolExtensionContainer { { InterRATMeasurementQuantitiesValue-ExtIEs} } OPTIONAL, + ... +} + +InterRATMeasurementQuantitiesValue-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +InterRATMeasurementQuantitiesValue ::= ENUMERATED { + geran, + utran, + ..., + nr +} + +InterRATMeasurementResult ::= SEQUENCE (SIZE (1.. maxNoMeas)) OF InterRATMeasuredResultsValue + +InterRATMeasuredResultsValue ::= CHOICE { + resultGERAN ResultGERAN, + resultUTRAN ResultUTRAN, + ..., + resultNR ResultNR +} + +-- J +-- K +-- L +-- M + +Measurement-ID ::= INTEGER (1..15, ...) + +MeasurementPeriodicity ::= ENUMERATED { + ms120, + ms240, + ms480, + ms640, + ms1024, + ms2048, + ms5120, + ms10240, + min1, + min6, + min12, + min30, + min60, + ... +} + +MeasurementQuantities ::= SEQUENCE (SIZE (1.. maxNoMeas)) OF ProtocolIE-Single-Container { {MeasurementQuantities-ItemIEs} } + +MeasurementQuantities-ItemIEs LPPA-PROTOCOL-IES ::= { + { ID id-MeasurementQuantities-Item CRITICALITY reject TYPE MeasurementQuantities-Item PRESENCE mandatory} +} + +MeasurementQuantities-Item ::= SEQUENCE { + measurementQuantitiesValue MeasurementQuantitiesValue, + iE-Extensions ProtocolExtensionContainer { { MeasurementQuantitiesValue-ExtIEs} } OPTIONAL, + ... +} + +MeasurementQuantitiesValue-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +MeasurementQuantitiesValue ::= ENUMERATED { + cell-ID, + angleOfArrival, + timingAdvanceType1, + timingAdvanceType2, + rSRP, + rSRQ, + ... +} + +MeasuredResults ::= SEQUENCE (SIZE (1.. maxNoMeas)) OF MeasuredResultsValue + + +MeasuredResultsValue ::= CHOICE { + valueAngleOfArrival INTEGER (0..719), + valueTimingAdvanceType1 INTEGER (0..7690), + valueTimingAdvanceType2 INTEGER (0..7690), + resultRSRP ResultRSRP, + resultRSRQ ResultRSRQ, + ... +} + +MBSFNsubframeConfiguration ::= SEQUENCE (SIZE (1.. maxMBSFN-Allocations)) OF MBSFNsubframeConfigurationValue + +MBSFNsubframeConfigurationValue ::= SEQUENCE { + radioframeAllocationPeriod ENUMERATED {n1, n2, n4, n8, n16, n32}, + radioframeAllocationOffset INTEGER (0..7), + subframeAllocation Subframeallocation +} + + +-- N + +NarrowBandIndex ::= INTEGER (0..15,...) + +NRCellIdentity ::= BIT STRING (SIZE(36)) + +NR-CGI ::= SEQUENCE { + pLMN-Identity PLMN-Identity, + nRCellIdentity NRCellIdentity, + iE-Extensions ProtocolExtensionContainer { {NR-CGI-ExtIEs} } OPTIONAL, + ... +} + +NR-CGI-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +NPRSConfiguration ::= SEQUENCE { + nPRSSubframePartA NPRSSubframePartA OPTIONAL, + nPRSSubframePartB NPRSSubframePartB OPTIONAL, + ... +} + +NPRSMutingConfiguration ::= CHOICE { + two BIT STRING (SIZE (2)), + four BIT STRING (SIZE (4)), + eight BIT STRING (SIZE (8)), + sixteen BIT STRING (SIZE (16)), + ... +} + +NPRSSubframePartA ::= SEQUENCE { + bitmapsforNPRS BitmapsforNPRS, + nPRSMutingConfiguration NPRSMutingConfiguration OPTIONAL, + ... +} + +NPRSSubframePartB ::= SEQUENCE { + numberofNPRSOneOccasion ENUMERATED {sf10, sf20, sf40, sf80, sf160, sf320, sf640, sf1280, ..., sf2560}, + periodicityofNPRS ENUMERATED {sf160, sf320, sf640, sf1280, ..., sf2560}, + startingsubframeoffset ENUMERATED {zero, one-Eighth, two-Eighths, three-Eighths, four-Eighths, five-Eighths, six-Eighths, seven-Eighths, ...}, + nPRSMutingConfiguration NPRSMutingConfiguration OPTIONAL, + ..., + sIB1-NB-Subframe-TDD ENUMERATED { sf0, sf4, sf0and5, ...} OPTIONAL + +} + +NumberOfAntennaPorts ::= ENUMERATED { + n1-or-n2, + n4, + ... +} + +NumberOfDlFrames ::= ENUMERATED { + sf1, + sf2, + sf4, + sf6, + ... +} + + +NumberOfDlFrames-Extended ::= INTEGER (1..160,...) + +NumberOfFrequencyHoppingBands ::= ENUMERATED { + twobands, + fourbands, + ... +} + +NPRSSequenceInfo ::= INTEGER (0..174,...) + + +NRARFCN ::= INTEGER (0.. 3279165) + +NRPCI ::= INTEGER (0..1007) + +-- O + +OffsetNBChanneltoEARFCN ::= ENUMERATED { + minusTen, + minusNine, + minusEight, + minusSeven, + minusSix, + minusFive, + minusFour, + minusThree, + minusTwo, + minusOne, + minusZeroDotFive, + zero, + one, + two, + three, + four, + five, + six, + seven, + eight, + nine, + ... +} + +OperationModeInfo ::= ENUMERATED { + inband, + guardband, + standalone, + ... +} + +OTDOACells ::= SEQUENCE (SIZE (1.. maxCellineNB)) OF SEQUENCE { + oTDOACellInfo OTDOACell-Information, + iE-Extensions ProtocolExtensionContainer { {OTDOACells-ExtIEs} } OPTIONAL, + ... +} + +OTDOACells-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +OTDOACell-Information ::= SEQUENCE (SIZE (1..maxnoOTDOAtypes)) OF OTDOACell-Information-Item + +OTDOACell-Information-Item ::= CHOICE { + pCI PCI, + cellId ECGI, + tAC TAC, + eARFCN EARFCN, + pRS-Bandwidth PRS-Bandwidth, + pRS-ConfigurationIndex PRS-Configuration-Index, + cPLength CPLength, + numberOfDlFrames NumberOfDlFrames, + numberOfAntennaPorts NumberOfAntennaPorts, + sFNInitialisationTime SFNInitialisationTime, + e-UTRANAccessPointPosition E-UTRANAccessPointPosition, + ..., + pRSMutingConfiguration PRSMutingConfiguration, + prsid PRS-ID, + tpid TP-ID, + tpType TP-Type, + numberOfDlFrames-Extended NumberOfDlFrames-Extended, + crsCPlength CPLength, + mBSFNsubframeConfiguration MBSFNsubframeConfiguration, + nPRSConfiguration NPRSConfiguration, + offsetNBChanneltoEARFCN OffsetNBChanneltoEARFCN, + operationModeInfo OperationModeInfo, + nPRS-ID INTEGER (0..4095, ...), + dL-Bandwidth DL-Bandwidth, + pRSOccasionGroup PRSOccasionGroup, + pRSFreqHoppingConfig PRSFrequencyHoppingConfiguration, + repetitionNumberofSIB1-NB RepetitionNumberofSIB1-NB, + nPRSSequenceInfo NPRSSequenceInfo, + nPRSType2 NPRSConfiguration, + tddConfiguration TDDConfiguration +} + +OTDOA-Information-Item ::= ENUMERATED { + pci, + cellid, + tac, + earfcn, + prsBandwidth, + prsConfigIndex, + cpLength, + noDlFrames, + noAntennaPorts, + sFNInitTime, + ..., + e-UTRANAccessPointPosition, + prsmutingconfiguration, + prsid, + tpid, + tpType, + crsCPlength, + mBSFNsubframeConfiguration, + nPRSConfiguration, + offsetNBChannelNumbertoEARFCN, + operationModeInfo, + nPRS-ID, + dlBandwidth, + multipleprsConfigurationsperCell, + prsOccasionGroup, + prsFrequencyHoppingConfiguration, + repetitionNumberofSIB1-NB, + nPRSSequenceInfo, + nPRSType2, + tddConfig +} + +Outcome ::= ENUMERATED { + failed, + ... +} + +-- P + +PCI ::= INTEGER (0..503, ...) + +PhysCellIDGERAN ::= INTEGER (0..63, ...) + +PhysCellIDUTRA-FDD ::= INTEGER (0..511, ...) + +PhysCellIDUTRA-TDD ::= INTEGER (0..127, ...) + +PLMN-Identity ::= OCTET STRING (SIZE(3)) + +PosSIBs ::= SEQUENCE (SIZE (1.. maxNrOfPosSIBs)) OF SEQUENCE { + posSIB-Type PosSIB-Type, + posSIB-Segments PosSIB-Segments, + assistanceInformationMetaData AssistanceInformationMetaData OPTIONAL, + broadcastPriority INTEGER (1..16,...) OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { PosSIBs-ExtIEs} } OPTIONAL, + ... +} + +PosSIBs-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +PosSIB-Segments ::= SEQUENCE (SIZE (1.. maxNrOfSegments)) OF SEQUENCE { + assistanceDataSIBelement OCTET STRING, + iE-Extensions ProtocolExtensionContainer { { PosSIB-Segments-ExtIEs} } OPTIONAL, + ... +} + +PosSIB-Segments-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + + +PosSIB-Type ::= ENUMERATED { + posSibType1-1, + posSibType1-2, + posSibType1-3, + posSibType1-4, + posSibType1-5, + posSibType1-6, + posSibType1-7, + posSibType2-1, + posSibType2-2, + posSibType2-3, + posSibType2-4, + posSibType2-5, + posSibType2-6, + posSibType2-7, + posSibType2-8, + posSibType2-9, + posSibType2-10, + posSibType2-11, + posSibType2-12, + posSibType2-13, + posSibType2-14, + posSibType2-15, + posSibType2-16, + posSibType2-17, + posSibType2-18, + posSibType2-19, + posSibType3-1, + ..., + posSibType4-1, + posSibType5-1, + posSibType2-24, + posSibType2-25 +} + +PRS-Bandwidth ::= ENUMERATED { + bw6, + bw15, + bw25, + bw50, + bw75, + bw100, + ... +} + +PRS-Configuration-Index ::= INTEGER (0..4095, ...) + +PRS-ID ::= INTEGER (0..4095, ...) + +PRSMutingConfiguration ::= CHOICE { + two BIT STRING (SIZE (2)), + four BIT STRING (SIZE (4)), + eight BIT STRING (SIZE (8)), + sixteen BIT STRING (SIZE (16)), + ..., + thirty-two BIT STRING (SIZE (32)), + sixty-four BIT STRING (SIZE (64)), + one-hundred-and-twenty-eight BIT STRING (SIZE (128)), + two-hundred-and-fifty-six BIT STRING (SIZE (256)), + five-hundred-and-twelve BIT STRING (SIZE (512)), + one-thousand-and-twenty-four BIT STRING (SIZE (1024)) +} + +PRSOccasionGroup ::= ENUMERATED { + og2, + og4, + og8, + og16, + og32, + og64, + og128, + ... +} + +PRSFrequencyHoppingConfiguration ::= SEQUENCE { + noOfFreqHoppingBands NumberOfFrequencyHoppingBands, + bandPositions SEQUENCE(SIZE (1..maxnoFreqHoppingBandsMinusOne)) OF NarrowBandIndex, + iE-Extensions ProtocolExtensionContainer { { PRSFrequencyHoppingConfiguration-Item-IEs} } OPTIONAL, + ... +} + +PRSFrequencyHoppingConfiguration-Item-IEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +-- Q +-- R + +RepetitionNumberofSIB1-NB ::= ENUMERATED { + r4, + r8, + r16, + ... +} + +ReportCharacteristics ::= ENUMERATED { + onDemand, + periodic, + ... +} + +RequestedSRSTransmissionCharacteristics ::= SEQUENCE { + numberOfTransmissions INTEGER (0..500, ...), + bandwidth INTEGER (1..100, ...), + ... +} + +ResultRSRP ::= SEQUENCE (SIZE (1.. maxCellReport)) OF ResultRSRP-Item + +ResultRSRP-Item ::= SEQUENCE { + pCI PCI, + eARFCN EARFCN, + eCGI ECGI OPTIONAL, + valueRSRP ValueRSRP, + iE-Extensions ProtocolExtensionContainer { { ResultRSRP-Item-ExtIEs} } OPTIONAL, + ... +} + +ResultRSRP-Item-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +ResultRSRQ ::= SEQUENCE (SIZE (1.. maxCellReport)) OF ResultRSRQ-Item + +ResultRSRQ-Item ::= SEQUENCE { + pCI PCI, + eARFCN EARFCN, + eCGI ECGI OPTIONAL, + valueRSRQ ValueRSRQ, + iE-Extensions ProtocolExtensionContainer { { ResultRSRQ-Item-ExtIEs} } OPTIONAL, + ... +} + +ResultRSRQ-Item-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +ResultGERAN ::= SEQUENCE (SIZE (1.. maxGERANMeas)) OF ResultGERAN-Item + +ResultGERAN-Item ::= SEQUENCE { + bCCH BCCH, + physCellIDGERAN PhysCellIDGERAN, + rSSI RSSI, + iE-Extensions ProtocolExtensionContainer { { ResultGERAN-Item-ExtIEs} } OPTIONAL, + ... +} + +ResultGERAN-Item-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +ResultUTRAN ::= SEQUENCE (SIZE (1.. maxUTRANMeas)) OF ResultUTRAN-Item + +ResultUTRAN-Item ::= SEQUENCE { + uARFCN UARFCN, + physCellIDUTRAN CHOICE { + physCellIDUTRA-FDD PhysCellIDUTRA-FDD, + physCellIDUTRA-TDD PhysCellIDUTRA-TDD + }, + uTRA-RSCP UTRA-RSCP OPTIONAL, + uTRA-EcN0 UTRA-EcN0 OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { ResultUTRAN-Item-ExtIEs} } OPTIONAL, + ... +} + +ResultUTRAN-Item-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +ResultNR ::= SEQUENCE (SIZE (1.. maxNRmeas)) OF ResultNR-Item + +ResultNR-Item ::= SEQUENCE { + nRARFCN NRARFCN, + nRPCI NRPCI, + sS-NRRSRP SS-NRRSRP OPTIONAL, + sS-NRRSRQ SS-NRRSRQ OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { ResultNR-Item-ExtIEs} } OPTIONAL, + ... +} + +ResultNR-Item-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + { ID id-ResultsPerSSB-Index-List CRITICALITY ignore EXTENSION ResultsPerSSB-Index-List PRESENCE optional}| + { ID id-NR-CGI CRITICALITY ignore EXTENSION NR-CGI PRESENCE optional}, + ... +} + + +ResultsPerSSB-Index-List ::= SEQUENCE (SIZE(1..maxResultsPerSSBIndex)) OF ResultsPerSSB-Index-Item + +ResultsPerSSB-Index-Item ::=SEQUENCE { + sSB-Index SSB-Index, + sS-NRRSRPBeamValue SS-NRRSRP OPTIONAL, + sS-NRRSRQBeamValue SS-NRRSRQ OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { ResultsPerSSB-Index-Item-ExtIEs} } OPTIONAL, + ... +} + +ResultsPerSSB-Index-Item-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +RSSI ::= INTEGER (0..63, ...) + + +-- S + +SFNInitialisationTime ::= BIT STRING (SIZE (64)) + +SRSConfigurationForAllCells ::= SEQUENCE (SIZE (1.. maxServCell)) OF SRSConfigurationForOneCell + +SRSConfigurationForOneCell ::= SEQUENCE { + pci PCI, + ul-earfcn EARFCN, + ul-bandwidth ENUMERATED {n6, n15, n25, n50, n75, n100}, + ul-cyclicPrefixLength CPLength, + srs-BandwidthConfig ENUMERATED {bw0, bw1, bw2, bw3, bw4, bw5, bw6, bw7}, + srs-Bandwidth ENUMERATED {bw0, bw1, bw2, bw3}, + srs-AntennaPort ENUMERATED {an1, an2, an4, ...}, + srs-HoppingBandwidth ENUMERATED {hbw0, hbw1, hbw2, hbw3}, + srs-cyclicShift ENUMERATED {cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7}, + srs-ConfigIndex INTEGER (0..1023), + maxUpPts ENUMERATED {true} OPTIONAL, -- Cond ifTDD + transmissionComb INTEGER (0..1), + freqDomainPosition INTEGER (0..23), + groupHoppingEnabled BOOLEAN, + deltaSS INTEGER (0..29) OPTIONAL, + sfnInitialisationTime SFNInitialisationTime, + ... +} + + +Subframeallocation ::= CHOICE { + oneFrame BIT STRING (SIZE(6)), + fourFrames BIT STRING (SIZE(24)) +} + +SS-NRRSRP ::= INTEGER (0..127) + +SS-NRRSRQ ::= INTEGER (0..127) + +SSB-Index ::= INTEGER (0..63) + +SSID ::= OCTET STRING (SIZE(1..32)) + +SystemInformation ::= SEQUENCE (SIZE (1.. maxNrOfPosSImessage)) OF SEQUENCE { + broadcastPeriodicity BroadcastPeriodicity, + posSIBs PosSIBs, + iE-Extensions ProtocolExtensionContainer { { SystemInformation-ExtIEs} } OPTIONAL, + ... +} + +SystemInformation-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +-- T + +TAC ::= OCTET STRING (SIZE(2)) + +TDDConfiguration ::= SEQUENCE { + subframeAssignment ENUMERATED { sa0, sa1, sa2, sa3, sa4, sa5, sa6, ... }, + iE-Extensions ProtocolExtensionContainer { { TDDConfiguration-ExtIEs} } OPTIONAL, + ... +} + +TDDConfiguration-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + + +TP-ID ::= INTEGER (0..4095, ...) + +TP-Type ::= ENUMERATED { prs-only-tp, ... } + +TypeOfError ::= ENUMERATED { + not-understood, + missing, + ... +} + + + +-- U + +ULConfiguration ::= SEQUENCE { + pci PCI, + ul-earfcn EARFCN, + timingAdvanceType1 INTEGER (0..7690) OPTIONAL, + timingAdvanceType2 INTEGER (0..7690) OPTIONAL, + numberOfTransmissions INTEGER (0..500,...), + srsConfiguration SRSConfigurationForAllCells, + ... +} + +UARFCN ::= INTEGER (0..16383, ...) + +UTRA-EcN0 ::= INTEGER (0..49, ...) + +UTRA-RSCP ::= INTEGER (-5..91, ...) + +-- V + +ValueRSRP ::= INTEGER (0..97, ...) + +ValueRSRQ ::= INTEGER (0..34, ...) + +-- W + +WLANMeasurementQuantities ::= SEQUENCE (SIZE (0.. maxNoMeas)) OF ProtocolIE-Single-Container { {WLANMeasurementQuantities-ItemIEs} } + +WLANMeasurementQuantities-ItemIEs LPPA-PROTOCOL-IES ::= { + { ID id-WLANMeasurementQuantities-Item CRITICALITY reject TYPE WLANMeasurementQuantities-Item PRESENCE mandatory}} + +WLANMeasurementQuantities-Item ::= SEQUENCE { + wLANMeasurementQuantitiesValue WLANMeasurementQuantitiesValue, + iE-Extensions ProtocolExtensionContainer { { WLANMeasurementQuantitiesValue-ExtIEs} } OPTIONAL, + ... +} + +WLANMeasurementQuantitiesValue-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +WLANMeasurementQuantitiesValue ::= ENUMERATED { + wlan, + ... +} + + +WLANMeasurementResult ::= SEQUENCE (SIZE (1..maxNoMeas)) OF WLANMeasurementResult-Item + +WLANMeasurementResult-Item ::= SEQUENCE { + wLAN-RSSI WLAN-RSSI, + sSID SSID OPTIONAL, + bSSID BSSID OPTIONAL, + hESSID HESSID OPTIONAL, + operatingClass WLANOperatingClass OPTIONAL, + countryCode WLANCountryCode OPTIONAL, + wLANChannelList WLANChannelList OPTIONAL, + wLANBand WLANBand OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { WLANMeasurementResult-Item-ExtIEs } } OPTIONAL, + ... +} + +WLANMeasurementResult-Item-ExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +WLAN-RSSI ::= INTEGER (0..141, ...) + +WLANBand ::= ENUMERATED {band2dot4, band5, ...} + +WLANChannelList ::= SEQUENCE (SIZE (1..maxWLANchannels)) OF WLANChannel + +WLANChannel ::= INTEGER (0..255) + +WLANCountryCode ::= ENUMERATED { + unitedStates, + europe, + japan, + global, + ... +} + +WLANOperatingClass ::= INTEGER (0..255) + +-- X +-- Y +-- Z + +END diff --git a/epan/dissectors/asn1/lppa/LPPA-PDU-Contents.asn b/epan/dissectors/asn1/lppa/LPPA-PDU-Contents.asn new file mode 100644 index 00000000..81c60b68 --- /dev/null +++ b/epan/dissectors/asn1/lppa/LPPA-PDU-Contents.asn @@ -0,0 +1,415 @@ +-- 3GPP TS 36.455 V16.1.0 (2020-09) +-- + +-- ************************************************************** +-- +-- PDU definitions for LPPa. +-- +-- ************************************************************** + +LPPA-PDU-Contents { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lppa (6) version1 (1) lppa-PDU-Contents (1) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + + Cause, + CriticalityDiagnostics, + E-CID-MeasurementResult, + OTDOACells, + OTDOA-Information-Item, + Measurement-ID, + MeasurementPeriodicity, + MeasurementQuantities, + ReportCharacteristics, + RequestedSRSTransmissionCharacteristics, + ULConfiguration, + Cell-Portion-ID, + InterRATMeasurementQuantities, + InterRATMeasurementResult, + Add-OTDOACells, + WLANMeasurementQuantities, + WLANMeasurementResult, + Assistance-Information, + Broadcast, + AssistanceInformationFailureList + +FROM LPPA-IEs + + PrivateIE-Container{}, + ProtocolExtensionContainer{}, + ProtocolIE-Container{}, + ProtocolIE-ContainerList{}, + ProtocolIE-ContainerPair{}, + ProtocolIE-ContainerPairList{}, + ProtocolIE-Single-Container{}, + LPPA-PRIVATE-IES, + LPPA-PROTOCOL-EXTENSION, + LPPA-PROTOCOL-IES, + LPPA-PROTOCOL-IES-PAIR +FROM LPPA-Containers + maxnoOTDOAtypes, + id-Cause, + id-CriticalityDiagnostics, + id-E-SMLC-UE-Measurement-ID, + id-OTDOACells, + id-OTDOA-Information-Type-Group, + id-OTDOA-Information-Type-Item, + id-ReportCharacteristics, + id-MeasurementPeriodicity, + id-MeasurementQuantities, + id-eNB-UE-Measurement-ID, + id-E-CID-MeasurementResult, + id-RequestedSRSTransmissionCharacteristics, + id-ULConfiguration, + id-Cell-Portion-ID, + id-InterRATMeasurementQuantities, + id-InterRATMeasurementResult, + id-AddOTDOACells, + id-WLANMeasurementQuantities, + id-WLANMeasurementResult, + id-Assistance-Information, + id-Broadcast, + id-AssistanceInformationFailureList + +FROM LPPA-Constants; + +-- ************************************************************** +-- +-- E-CID MEASUREMENT INITIATION REQUEST +-- +-- ************************************************************** + +E-CIDMeasurementInitiationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E-CIDMeasurementInitiationRequest-IEs}}, + ... +} + +E-CIDMeasurementInitiationRequest-IEs LPPA-PROTOCOL-IES ::= { + { ID id-E-SMLC-UE-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| + { ID id-ReportCharacteristics CRITICALITY reject TYPE ReportCharacteristics PRESENCE mandatory}| + { ID id-MeasurementPeriodicity CRITICALITY reject TYPE MeasurementPeriodicity PRESENCE conditional}| +-- The IE shall be present if the Report Characteritics IE is set to “periodic” -- + { ID id-MeasurementQuantities CRITICALITY reject TYPE MeasurementQuantities PRESENCE mandatory}| + { ID id-InterRATMeasurementQuantities CRITICALITY ignore TYPE InterRATMeasurementQuantities PRESENCE optional}| + { ID id-WLANMeasurementQuantities CRITICALITY ignore TYPE WLANMeasurementQuantities PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- E-CID MEASUREMENT INITIATION RESPONSE +-- +-- ************************************************************** + +E-CIDMeasurementInitiationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E-CIDMeasurementInitiationResponse-IEs}}, + ... +} + +E-CIDMeasurementInitiationResponse-IEs LPPA-PROTOCOL-IES ::= { + { ID id-E-SMLC-UE-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| + { ID id-eNB-UE-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| + { ID id-E-CID-MeasurementResult CRITICALITY ignore TYPE E-CID-MeasurementResult PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-Cell-Portion-ID CRITICALITY ignore TYPE Cell-Portion-ID PRESENCE optional}| + { ID id-InterRATMeasurementResult CRITICALITY ignore TYPE InterRATMeasurementResult PRESENCE optional}| + { ID id-WLANMeasurementResult CRITICALITY ignore TYPE WLANMeasurementResult PRESENCE optional}, + ... +} + + + +-- ************************************************************** +-- +-- E-CID MEASUREMENT INITIATION FAILURE +-- +-- ************************************************************** + +E-CIDMeasurementInitiationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E-CIDMeasurementInitiationFailure-IEs}}, + ... +} + + +E-CIDMeasurementInitiationFailure-IEs LPPA-PROTOCOL-IES ::= { + { ID id-E-SMLC-UE-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- E-CID MEASUREMENT FAILURE INDICATION +-- +-- ************************************************************** + +E-CIDMeasurementFailureIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E-CIDMeasurementFailureIndication-IEs}}, + ... +} + + +E-CIDMeasurementFailureIndication-IEs LPPA-PROTOCOL-IES ::= { + { ID id-E-SMLC-UE-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| + { ID id-eNB-UE-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}, + ... +} + +-- ************************************************************** +-- +-- E-CID MEASUREMENT REPORT +-- +-- ************************************************************** + +E-CIDMeasurementReport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E-CIDMeasurementReport-IEs}}, + ... +} + + +E-CIDMeasurementReport-IEs LPPA-PROTOCOL-IES ::= { + { ID id-E-SMLC-UE-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| + { ID id-eNB-UE-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| + { ID id-E-CID-MeasurementResult CRITICALITY ignore TYPE E-CID-MeasurementResult PRESENCE mandatory}| + { ID id-Cell-Portion-ID CRITICALITY ignore TYPE Cell-Portion-ID PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- E-CID MEASUREMENT TERMINATION +-- +-- ************************************************************** + +E-CIDMeasurementTerminationCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E-CIDMeasurementTerminationCommand-IEs}}, + ... +} + + +E-CIDMeasurementTerminationCommand-IEs LPPA-PROTOCOL-IES ::= { + { ID id-E-SMLC-UE-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| + { ID id-eNB-UE-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- OTDOA INFORMATION REQUEST +-- +-- ************************************************************** + +OTDOAInformationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{OTDOAInformationRequest-IEs}}, + ... +} + +OTDOAInformationRequest-IEs LPPA-PROTOCOL-IES ::= { + { ID id-OTDOA-Information-Type-Group CRITICALITY reject TYPE OTDOA-Information-Type PRESENCE mandatory}, + ... +} + +OTDOA-Information-Type ::= SEQUENCE (SIZE(1..maxnoOTDOAtypes)) OF ProtocolIE-Single-Container { { OTDOA-Information-TypeIEs} } + +OTDOA-Information-TypeIEs LPPA-PROTOCOL-IES ::= { + { ID id-OTDOA-Information-Type-Item CRITICALITY reject TYPE OTDOA-Information-Type-Item PRESENCE mandatory}, + ... +} + +OTDOA-Information-Type-Item ::= SEQUENCE { + oTDOA-Information-Type-Item OTDOA-Information-Item, + iE-Extensions ProtocolExtensionContainer { { OTDOA-Information-Type-ItemExtIEs} } OPTIONAL, + ... +} + +OTDOA-Information-Type-ItemExtIEs LPPA-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- OTDOA INFORMATION RESPONSE +-- +-- ************************************************************** + +OTDOAInformationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{OTDOAInformationResponse-IEs}}, + ... +} + +OTDOAInformationResponse-IEs LPPA-PROTOCOL-IES ::= { + { ID id-OTDOACells CRITICALITY ignore TYPE OTDOACells PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-AddOTDOACells CRITICALITY ignore TYPE Add-OTDOACells PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- OTDOA INFORMATION FAILURE +-- +-- ************************************************************** + +OTDOAInformationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{OTDOAInformationFailure-IEs}}, + ... +} + + +OTDOAInformationFailure-IEs LPPA-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- UTDOA INFORMATION REQUEST +-- +-- ************************************************************** + +UTDOAInformationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UTDOAInformationRequest-IEs}}, + ... +} + +UTDOAInformationRequest-IEs LPPA-PROTOCOL-IES ::= { + { ID id-RequestedSRSTransmissionCharacteristics CRITICALITY ignore TYPE RequestedSRSTransmissionCharacteristics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- UTDOA INFORMATION RESPONSE +-- +-- ************************************************************** + +UTDOAInformationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UTDOAInformationResponse-IEs}}, + ... +} + +UTDOAInformationResponse-IEs LPPA-PROTOCOL-IES ::= { + { ID id-ULConfiguration CRITICALITY reject TYPE ULConfiguration PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- UTDOA INFORMATION FAILURE +-- +-- ************************************************************** + +UTDOAInformationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UTDOAInformationFailure-IEs}}, + ... +} + + +UTDOAInformationFailure-IEs LPPA-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- UTDOA INFORMATION UPDATE +-- +-- ************************************************************** + +UTDOAInformationUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UTDOAInformationUpdate-IEs}}, + ... +} + +UTDOAInformationUpdate-IEs LPPA-PROTOCOL-IES ::= { + { ID id-ULConfiguration CRITICALITY ignore TYPE ULConfiguration PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- ASSISTANCE INFORMATION CONTROL +-- +-- ************************************************************** + +AssistanceInformationControl ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{AssistanceInformationControl-IEs}}, + ... +} + +AssistanceInformationControl-IEs LPPA-PROTOCOL-IES ::= { + { ID id-Assistance-Information CRITICALITY reject TYPE Assistance-Information PRESENCE optional}| + { ID id-Broadcast CRITICALITY reject TYPE Broadcast PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- ASSISTANCE INFORMATION FEEDBACK +-- +-- ************************************************************** + +AssistanceInformationFeedback ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{AssistanceInformationFeedback-IEs}}, + ... +} + +AssistanceInformationFeedback-IEs LPPA-PROTOCOL-IES ::= { + { ID id-AssistanceInformationFailureList CRITICALITY reject TYPE AssistanceInformationFailureList PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- ERROR INDICATION +-- +-- ************************************************************** + +ErrorIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ErrorIndication-IEs}}, + ... +} + +ErrorIndication-IEs LPPA-PROTOCOL-IES ::= { + + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- PRIVATE MESSAGE +-- +-- ************************************************************** + +PrivateMessage ::= SEQUENCE { + privateIEs PrivateIE-Container {{PrivateMessage-IEs}}, + ... +} + +PrivateMessage-IEs LPPA-PRIVATE-IES ::= { + ... +} + +END diff --git a/epan/dissectors/asn1/lppa/LPPA-PDU-Descriptions.asn b/epan/dissectors/asn1/lppa/LPPA-PDU-Descriptions.asn new file mode 100644 index 00000000..e35d1aa2 --- /dev/null +++ b/epan/dissectors/asn1/lppa/LPPA-PDU-Descriptions.asn @@ -0,0 +1,235 @@ +-- 3GPP TS 36.455 V16.1.0 (2020-09) +-- + +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- +-- ************************************************************** + +LPPA-PDU-Descriptions { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lppa (6) version1 (1) lppa-PDU-Descriptions (0) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + ProcedureCode, + LPPATransactionID + +FROM LPPA-CommonDataTypes + + + ErrorIndication, + PrivateMessage, + E-CIDMeasurementInitiationRequest, + E-CIDMeasurementInitiationResponse, + E-CIDMeasurementInitiationFailure, + E-CIDMeasurementFailureIndication, + E-CIDMeasurementReport, + E-CIDMeasurementTerminationCommand, + OTDOAInformationRequest, + OTDOAInformationResponse, + OTDOAInformationFailure, + UTDOAInformationRequest, + UTDOAInformationResponse, + UTDOAInformationFailure, + UTDOAInformationUpdate, + AssistanceInformationControl, + AssistanceInformationFeedback + + +FROM LPPA-PDU-Contents + + id-errorIndication, + id-privateMessage, + id-e-CIDMeasurementInitiation, + id-e-CIDMeasurementFailureIndication, + id-e-CIDMeasurementReport, + id-e-CIDMeasurementTermination, + id-oTDOAInformationExchange, + id-uTDOAInformationExchange, + id-uTDOAInformationUpdate, + id-assistanceInformationControl, + id-assistanceInformationFeedback + + +FROM LPPA-Constants; + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + +LPPA-ELEMENTARY-PROCEDURE ::= CLASS { + &InitiatingMessage , + &SuccessfulOutcome OPTIONAL, + &UnsuccessfulOutcome OPTIONAL, + &procedureCode ProcedureCode UNIQUE, + &criticality Criticality DEFAULT ignore +} +WITH SYNTAX { + INITIATING MESSAGE &InitiatingMessage + [SUCCESSFUL OUTCOME &SuccessfulOutcome] + [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] + PROCEDURE CODE &procedureCode + [CRITICALITY &criticality] +} + +-- ************************************************************** +-- +-- Interface PDU Definition +-- +-- ************************************************************** + +LPPA-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} + +InitiatingMessage ::= SEQUENCE { + procedureCode LPPA-ELEMENTARY-PROCEDURE.&procedureCode ({LPPA-ELEMENTARY-PROCEDURES}), + criticality LPPA-ELEMENTARY-PROCEDURE.&criticality ({LPPA-ELEMENTARY-PROCEDURES}{@procedureCode}), + lppatransactionID LPPATransactionID, + value LPPA-ELEMENTARY-PROCEDURE.&InitiatingMessage ({LPPA-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +SuccessfulOutcome ::= SEQUENCE { + procedureCode LPPA-ELEMENTARY-PROCEDURE.&procedureCode ({LPPA-ELEMENTARY-PROCEDURES}), + criticality LPPA-ELEMENTARY-PROCEDURE.&criticality ({LPPA-ELEMENTARY-PROCEDURES}{@procedureCode}), + lppatransactionID LPPATransactionID, + value LPPA-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({LPPA-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +UnsuccessfulOutcome ::= SEQUENCE { + procedureCode LPPA-ELEMENTARY-PROCEDURE.&procedureCode ({LPPA-ELEMENTARY-PROCEDURES}), + criticality LPPA-ELEMENTARY-PROCEDURE.&criticality ({LPPA-ELEMENTARY-PROCEDURES}{@procedureCode}), + lppatransactionID LPPATransactionID, + value LPPA-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({LPPA-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + + +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** + +LPPA-ELEMENTARY-PROCEDURES LPPA-ELEMENTARY-PROCEDURE ::= { + LPPA-ELEMENTARY-PROCEDURES-CLASS-1 | + LPPA-ELEMENTARY-PROCEDURES-CLASS-2 , + ... +} + +LPPA-ELEMENTARY-PROCEDURES-CLASS-1 LPPA-ELEMENTARY-PROCEDURE ::= { + e-CIDMeasurementInitiation | + oTDOAInformationExchange , + ..., + uTDOAInformationExchange +} + +LPPA-ELEMENTARY-PROCEDURES-CLASS-2 LPPA-ELEMENTARY-PROCEDURE ::= { + e-CIDMeasurementFailureIndication | + e-CIDMeasurementReport | + e-CIDMeasurementTermination | + errorIndication | + privateMessage , + ..., + uTDOAInformationUpdate | + assistanceInformationControl | + assistanceInformationFeedback +} + + +-- ************************************************************** +-- +-- Interface Elementary Procedures +-- +-- ************************************************************** + +e-CIDMeasurementInitiation LPPA-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-CIDMeasurementInitiationRequest + SUCCESSFUL OUTCOME E-CIDMeasurementInitiationResponse + UNSUCCESSFUL OUTCOME E-CIDMeasurementInitiationFailure + PROCEDURE CODE id-e-CIDMeasurementInitiation + CRITICALITY reject +} + +e-CIDMeasurementFailureIndication LPPA-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-CIDMeasurementFailureIndication + PROCEDURE CODE id-e-CIDMeasurementFailureIndication + CRITICALITY ignore +} + +e-CIDMeasurementReport LPPA-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-CIDMeasurementReport + PROCEDURE CODE id-e-CIDMeasurementReport + CRITICALITY ignore +} + +e-CIDMeasurementTermination LPPA-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-CIDMeasurementTerminationCommand + PROCEDURE CODE id-e-CIDMeasurementTermination + CRITICALITY reject +} + +oTDOAInformationExchange LPPA-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE OTDOAInformationRequest + SUCCESSFUL OUTCOME OTDOAInformationResponse + UNSUCCESSFUL OUTCOME OTDOAInformationFailure + PROCEDURE CODE id-oTDOAInformationExchange + CRITICALITY reject +} + +uTDOAInformationExchange LPPA-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UTDOAInformationRequest + SUCCESSFUL OUTCOME UTDOAInformationResponse + UNSUCCESSFUL OUTCOME UTDOAInformationFailure + PROCEDURE CODE id-uTDOAInformationExchange + CRITICALITY reject +} + +uTDOAInformationUpdate LPPA-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UTDOAInformationUpdate + PROCEDURE CODE id-uTDOAInformationUpdate + CRITICALITY ignore +} + +assistanceInformationControl LPPA-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE AssistanceInformationControl + PROCEDURE CODE id-assistanceInformationControl + CRITICALITY reject +} + +assistanceInformationFeedback LPPA-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE AssistanceInformationFeedback + PROCEDURE CODE id-assistanceInformationFeedback + CRITICALITY reject +} + +errorIndication LPPA-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ErrorIndication + PROCEDURE CODE id-errorIndication + CRITICALITY ignore +} + + +privateMessage LPPA-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PrivateMessage + PROCEDURE CODE id-privateMessage + CRITICALITY ignore +} + +END diff --git a/epan/dissectors/asn1/lppa/lppa.cnf b/epan/dissectors/asn1/lppa/lppa.cnf new file mode 100644 index 00000000..a0a4381c --- /dev/null +++ b/epan/dissectors/asn1/lppa/lppa.cnf @@ -0,0 +1,179 @@ +# lppa.cnf +# llpa conformation file +# Copyright 2011-2020 Pascal Quantin + +#.OPT +PER +ALIGNED +#.END + +#.MAKE_ENUM +ProcedureCode +ProtocolIE-ID + +#.OMIT_ASSIGNMENT +Presence +ProtocolIE-ContainerList +ProtocolIE-ContainerPairList +ProtocolIE-ContainerPair +ProtocolIE-FieldPair + +#.PDU +LPPA-PDU + +#.TYPE_RENAME +InitiatingMessage/value InitiatingMessage_value +SuccessfulOutcome/value SuccessfulOutcome_value +UnsuccessfulOutcome/value UnsuccessfulOutcome_value + +#.FIELD_RENAME +InitiatingMessage/value initiatingMessagevalue +UnsuccessfulOutcome/value unsuccessfulOutcome_value +SuccessfulOutcome/value successfulOutcome_value +ProtocolIE-Field/value ie_field_value +ProtocolExtensionField/id ext_id + +#.FN_BODY ProtocolIE-ID VAL_PTR=&lppa_data->protocol_ie_id + struct lppa_private_data *lppa_data = lppa_get_private_data(actx->pinfo); +%(DEFAULT_BODY)s + +#.FN_FTR ProtocolIE-ID + if (tree) { + proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(lppa_data->protocol_ie_id, VALS(lppa_ProtocolIE_ID_vals), "unknown (%d)")); + } +#.END + +#.FN_BODY ProcedureCode VAL_PTR = &lppa_data->procedure_code + struct lppa_private_data *lppa_data = lppa_get_private_data(actx->pinfo); + +%(DEFAULT_BODY)s + + col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%%s ", + val_to_str(lppa_data->procedure_code, lppa_ProcedureCode_vals, + "unknown message")); +#.END + +#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue + +#.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue + +#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue +#.FN_HDR InitiatingMessage/value + struct lppa_private_data *lppa_data = lppa_get_private_data(actx->pinfo); + lppa_data->message_type = INITIATING_MESSAGE; +#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue +#.FN_HDR SuccessfulOutcome/value + struct lppa_private_data *lppa_data = lppa_get_private_data(actx->pinfo); + lppa_data->message_type = SUCCESSFUL_OUTCOME; +#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue +#.FN_HDR UnsuccessfulOutcome/value + struct lppa_private_data *lppa_data = lppa_get_private_data(actx->pinfo); + lppa_data->message_type = UNSUCCESSFUL_OUTCOME; + +#.FN_HDR LPPA-PDU + + proto_tree_add_item(tree, proto_lppa, tvb, 0, -1, ENC_NA); + + col_append_sep_str(actx->pinfo->cinfo, COL_PROTOCOL, "/", "LPPa"); +#.END + +#.TYPE_ATTR +BSSID TYPE=FT_ETHER + +#.TYPE_ATTR +HESSID TYPE=FT_ETHER + +#.TYPE_ATTR +# ProcedureCode +id-errorIndication ProcedureCode +id-privateMessage ProcedureCode +id-e-CIDMeasurementInitiation ProcedureCode +id-e-CIDMeasurementFailureIndication ProcedureCode +id-e-CIDMeasurementReport ProcedureCode +id-e-CIDMeasurementTermination ProcedureCode +id-oTDOAInformationExchange ProcedureCode +id-uTDOAInformationExchange ProcedureCode +id-uTDOAInformationUpdate ProcedureCode +id-assistanceInformationControl ProcedureCode +id-assistanceInformationFeedback ProcedureCode + +# ProtocolIE-ID +id-Cause ProtocolIE-ID +id-CriticalityDiagnostics ProtocolIE-ID +id-E-SMLC-UE-Measurement-ID ProtocolIE-ID +id-ReportCharacteristics ProtocolIE-ID +id-MeasurementPeriodicity ProtocolIE-ID +id-MeasurementQuantities ProtocolIE-ID +id-eNB-UE-Measurement-ID ProtocolIE-ID +id-E-CID-MeasurementResult ProtocolIE-ID +id-OTDOACells ProtocolIE-ID +id-OTDOA-Information-Type-Group ProtocolIE-ID +id-OTDOA-Information-Type-Item ProtocolIE-ID +id-MeasurementQuantities-Item ProtocolIE-ID +id-RequestedSRSTransmissionCharacteristics ProtocolIE-ID +id-ULConfiguration ProtocolIE-ID +id-Cell-Portion-ID ProtocolIE-ID +id-InterRATMeasurementQuantities ProtocolIE-ID +id-InterRATMeasurementQuantities-Item ProtocolIE-ID +id-InterRATMeasurementResult ProtocolIE-ID +id-AddOTDOACells ProtocolIE-ID +id-WLANMeasurementQuantities ProtocolIE-ID +id-WLANMeasurementQuantities-Item ProtocolIE-ID +id-WLANMeasurementResult ProtocolIE-ID +id-Assistance-Information ProtocolIE-ID +id-Broadcast ProtocolIE-ID +id-AssistanceInformationFailureList ProtocolIE-ID +id-ResultsPerSSB-Index-List ProtocolIE-ID +id-ResultsPerSSB-Index-Item ProtocolIE-ID +id-NR-CGI ProtocolIE-ID + +#.REGISTER +#LPPA-PROTOCOL-IES +MeasurementQuantities-Item N lppa.ies id-MeasurementQuantities-Item +ReportCharacteristics N lppa.ies id-ReportCharacteristics +MeasurementPeriodicity N lppa.ies id-MeasurementPeriodicity +MeasurementQuantities N lppa.ies id-MeasurementQuantities +E-CID-MeasurementResult N lppa.ies id-E-CID-MeasurementResult +OTDOA-Information-Type N lppa.ies id-OTDOA-Information-Type-Group +OTDOA-Information-Type-Item N lppa.ies id-OTDOA-Information-Type-Item +OTDOACells N lppa.ies id-OTDOACells +Cause N lppa.ies id-Cause +CriticalityDiagnostics N lppa.ies id-CriticalityDiagnostics +Measurement-ID N lppa.ies id-E-SMLC-UE-Measurement-ID +Measurement-ID N lppa.ies id-eNB-UE-Measurement-ID +RequestedSRSTransmissionCharacteristics N lppa.ies id-RequestedSRSTransmissionCharacteristics +ULConfiguration N lppa.ies id-ULConfiguration +InterRATMeasurementQuantities N lppa.ies id-InterRATMeasurementQuantities +Cell-Portion-ID N lppa.ies id-Cell-Portion-ID +InterRATMeasurementResult N lppa.ies id-InterRATMeasurementResult +InterRATMeasurementQuantities-Item N lppa.ies id-InterRATMeasurementQuantities-Item +WLANMeasurementQuantities N lppa.ies id-WLANMeasurementQuantities +WLANMeasurementResult N lppa.ies id-WLANMeasurementResult +Add-OTDOACells N lppa.ies id-AddOTDOACells +WLANMeasurementQuantities-Item N lppa.ies id-WLANMeasurementQuantities-Item +Assistance-Information N lppa.ies id-Assistance-Information +Broadcast N lppa.ies id-Broadcast +AssistanceInformationFailureList N lppa.ies id-AssistanceInformationFailureList + +#LPPA-PROTOCOL-EXTENSION +ResultsPerSSB-Index-List N lppa.extension id-ResultsPerSSB-Index-List +NR-CGI N lppa.extension id-NR-CGI + +#LPPA-ELEMENTARY-PROCEDURE +E-CIDMeasurementInitiationRequest N lppa.proc.imsg id-e-CIDMeasurementInitiation +E-CIDMeasurementInitiationResponse N lppa.proc.sout id-e-CIDMeasurementInitiation +E-CIDMeasurementInitiationFailure N lppa.proc.uout id-e-CIDMeasurementInitiation +E-CIDMeasurementFailureIndication N lppa.proc.imsg id-e-CIDMeasurementFailureIndication +E-CIDMeasurementReport N lppa.proc.imsg id-e-CIDMeasurementReport +E-CIDMeasurementTerminationCommand N lppa.proc.imsg id-e-CIDMeasurementTermination +OTDOAInformationRequest N lppa.proc.imsg id-oTDOAInformationExchange +OTDOAInformationResponse N lppa.proc.sout id-oTDOAInformationExchange +OTDOAInformationFailure N lppa.proc.uout id-oTDOAInformationExchange +ErrorIndication N lppa.proc.imsg id-errorIndication +PrivateMessage N lppa.proc.imsg id-privateMessage +UTDOAInformationRequest N lppa.proc.imsg id-uTDOAInformationExchange +UTDOAInformationResponse N lppa.proc.sout id-uTDOAInformationExchange +UTDOAInformationFailure N lppa.proc.uout id-uTDOAInformationExchange +UTDOAInformationUpdate N lppa.proc.imsg id-uTDOAInformationUpdate +AssistanceInformationControl N lppa.proc.imsg id-assistanceInformationControl +AssistanceInformationFeedback N lppa.proc.imsg id-assistanceInformationFeedback diff --git a/epan/dissectors/asn1/lppa/packet-lppa-template.c b/epan/dissectors/asn1/lppa/packet-lppa-template.c new file mode 100644 index 00000000..56277499 --- /dev/null +++ b/epan/dissectors/asn1/lppa/packet-lppa-template.c @@ -0,0 +1,165 @@ +/* packet-lppa.c + * Routines for 3GPP LTE Positioning Protocol A (LLPa) packet dissection + * Copyright 2011-2019, 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 36.455 version 16.1.0 (2020-09) + * http://www.3gpp.org + */ + +#include "config.h" + +#include <epan/packet.h> +#include <epan/proto_data.h> +#include <epan/asn1.h> + +#include "packet-per.h" +#include "packet-lppa.h" + +#define PNAME "LTE Positioning Protocol A (LPPa)" +#define PSNAME "LPPa" +#define PFNAME "lppa" + +void proto_register_lppa(void); +void proto_reg_handoff_lppa(void); + +/* Initialize the protocol and registered fields */ +static int proto_lppa = -1; + +#include "packet-lppa-hf.c" + +/* Initialize the subtree pointers */ +static gint ett_lppa = -1; +#include "packet-lppa-ett.c" + +enum { + INITIATING_MESSAGE, + SUCCESSFUL_OUTCOME, + UNSUCCESSFUL_OUTCOME +}; + +/* Dissector tables */ +static dissector_table_t lppa_ies_dissector_table; +static dissector_table_t lppa_extension_dissector_table; +static dissector_table_t lppa_proc_imsg_dissector_table; +static dissector_table_t lppa_proc_sout_dissector_table; +static dissector_table_t lppa_proc_uout_dissector_table; + +/* Include constants */ +#include "packet-lppa-val.h" + +static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); + +struct lppa_private_data { + guint32 procedure_code; + guint32 protocol_ie_id; + guint32 protocol_extension_id; + guint32 message_type; +}; + +static struct lppa_private_data* +lppa_get_private_data(packet_info* pinfo) +{ + struct lppa_private_data* lppa_data = (struct lppa_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_lppa, 0); + if (!lppa_data) { + lppa_data = wmem_new0(pinfo->pool, struct lppa_private_data); + p_add_proto_data(pinfo->pool, pinfo, proto_lppa, 0, lppa_data); + } + return lppa_data; +} + +#include "packet-lppa-fn.c" + + +static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + + lppa_ctx_t lppa_ctx; + struct lppa_private_data* lppa_data = lppa_get_private_data(pinfo); + + lppa_ctx.message_type = lppa_data->message_type; + lppa_ctx.ProcedureCode = lppa_data->procedure_code; + lppa_ctx.ProtocolIE_ID = lppa_data->protocol_ie_id; + lppa_ctx.ProtocolExtensionID = lppa_data->protocol_extension_id; + + return (dissector_try_uint_new(lppa_ies_dissector_table, lppa_ctx.ProtocolIE_ID, tvb, pinfo, tree, FALSE, &lppa_ctx)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + lppa_ctx_t lppa_ctx; + struct lppa_private_data* lppa_data = lppa_get_private_data(pinfo); + + lppa_ctx.message_type = lppa_data->message_type; + lppa_ctx.ProcedureCode = lppa_data->procedure_code; + lppa_ctx.ProtocolIE_ID = lppa_data->protocol_ie_id; + lppa_ctx.ProtocolExtensionID = lppa_data->protocol_extension_id; + + return (dissector_try_uint_new(lppa_extension_dissector_table, lppa_ctx.ProtocolExtensionID, tvb, pinfo, tree, FALSE, &lppa_ctx)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + struct lppa_private_data* lppa_data = lppa_get_private_data(pinfo); + return (dissector_try_uint_new(lppa_proc_imsg_dissector_table, lppa_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + struct lppa_private_data* lppa_data = lppa_get_private_data(pinfo); + return (dissector_try_uint_new(lppa_proc_sout_dissector_table, lppa_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + +static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) +{ + struct lppa_private_data* lppa_data = lppa_get_private_data(pinfo); + + return (dissector_try_uint_new(lppa_proc_uout_dissector_table, lppa_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0; +} + +/*--- proto_register_lppa -------------------------------------------*/ +void proto_register_lppa(void) { + + /* List of fields */ + static hf_register_info hf[] = { + + #include "packet-lppa-hfarr.c" + }; + + /* List of subtrees */ + static gint* ett[] = { + &ett_lppa, + #include "packet-lppa-ettarr.c" + }; + + /* Register protocol */ + proto_lppa = proto_register_protocol(PNAME, PSNAME, PFNAME); + register_dissector("lppa", dissect_LPPA_PDU_PDU, proto_lppa); + + /* Register fields and subtrees */ + proto_register_field_array(proto_lppa, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + + /* Register dissector tables */ + lppa_ies_dissector_table = register_dissector_table("lppa.ies", "LPPA-PROTOCOL-IES", proto_lppa, FT_UINT32, BASE_DEC); + lppa_extension_dissector_table = register_dissector_table("lppa.extension", "LPPA-PROTOCOL-EXTENSION", proto_lppa, FT_UINT32, BASE_DEC); + lppa_proc_imsg_dissector_table = register_dissector_table("lppa.proc.imsg", "LPPA-ELEMENTARY-PROCEDURE InitiatingMessage", proto_lppa, FT_UINT32, BASE_DEC); + lppa_proc_sout_dissector_table = register_dissector_table("lppa.proc.sout", "LPPA-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_lppa, FT_UINT32, BASE_DEC); + lppa_proc_uout_dissector_table = register_dissector_table("lppa.proc.uout", "LPPA-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_lppa, FT_UINT32, BASE_DEC); +} + +/*--- proto_reg_handoff_lppa ---------------------------------------*/ +void +proto_reg_handoff_lppa(void) +{ +#include "packet-lppa-dis-tab.c" +} diff --git a/epan/dissectors/asn1/lppa/packet-lppa-template.h b/epan/dissectors/asn1/lppa/packet-lppa-template.h new file mode 100644 index 00000000..7e85331d --- /dev/null +++ b/epan/dissectors/asn1/lppa/packet-lppa-template.h @@ -0,0 +1,37 @@ +/* packet-lppa.h + * Routines for 3GPP LTE Positioning Protocol A (LLPa) packet dissection + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef PACKET_LPPA_H +#define PACKET_LPPA_H + +typedef struct _lppa_ctx_t { + guint32 message_type; + guint32 ProcedureCode; + guint32 ProtocolIE_ID; + guint32 ProtocolExtensionID; +} lppa_ctx_t; + + +#include "packet-lppa-exp.h" + +#endif /* PACKET_LPPA_H */ + +/* + * Editor modelines + * + * Local Variables: + * c-basic-offset: 2 + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * + * ex: set shiftwidth=2 tabstop=8 expandtab: + * :indentSize=2:tabSize=8:noTabs=true: + */ diff --git a/epan/dissectors/asn1/lppe/CMakeLists.txt b/epan/dissectors/asn1/lppe/CMakeLists.txt new file mode 100644 index 00000000..5212820a --- /dev/null +++ b/epan/dissectors/asn1/lppe/CMakeLists.txt @@ -0,0 +1,38 @@ +# 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 lppe ) + +set( PROTO_OPT ) + +set( EXT_ASN_FILE_LIST +) + +set( ASN_FILE_LIST + LPPe.asn +) + +set( EXTRA_DIST + ${ASN_FILE_LIST} + packet-${PROTOCOL_NAME}-template.c + ${PROTOCOL_NAME}.cnf +) + +set( SRC_FILES + ${EXTRA_DIST} + ${EXT_ASN_FILE_LIST} +) + +set( A2W_FLAGS ) + +set( EXTRA_CNF + "${CMAKE_CURRENT_BINARY_DIR}/../lpp/lpp-exp.cnf" +) + +ASN2WRS() diff --git a/epan/dissectors/asn1/lppe/LPPe.asn b/epan/dissectors/asn1/lppe/LPPe.asn new file mode 100644 index 00000000..76fd1134 --- /dev/null +++ b/epan/dissectors/asn1/lppe/LPPe.asn @@ -0,0 +1,4331 @@ +-- Open Mobile Alliance OMA-TS-LPPe-V1_0-20200630-D +-- +OMA-LPPE DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +-- asn2wrs does not seem to import integer constants (maxFreqLayers) +--IMPORTS GNSS-ID, GNSS-SignalID, GNSS-SignalIDs, GNSS-SystemTime, SV-ID, +--ECID-SignalMeasurementInformation, CellGlobalIdGERAN, CellGlobalIdEUTRA-AndUTRA, +--OTDOA-ReferenceCellInfo, OTDOA-NeighbourCellInfoElement, maxFreqLayers, ARFCN-ValueEUTRA, +--Ellipsoid-Point, EllipsoidPointWithAltitude, EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, +--NetworkTime, GNSS-ID-Bitmap, ARFCN-ValueUTRA, ARFCN-ValueEUTRA-v9a0, Velocity FROM LPP-PDU-Definitions; +IMPORTS GNSS-ID, GNSS-SignalID, GNSS-SignalIDs, GNSS-SystemTime, SV-ID, +ECID-SignalMeasurementInformation, CellGlobalIdGERAN, CellGlobalIdEUTRA-AndUTRA, +OTDOA-ReferenceCellInfo, OTDOA-NeighbourCellInfoElement, ARFCN-ValueEUTRA, +Ellipsoid-Point, EllipsoidPointWithAltitude, EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, +NetworkTime, GNSS-ID-Bitmap, ARFCN-ValueUTRA, ARFCN-ValueEUTRA-v9a0, Velocity FROM LPP-PDU-Definitions; + + +OMA-LPPe-MessageExtension ::= SEQUENCE { + lppeCompatibilityLevel OMA-LPPe-LPPeCompatibilityLevel, + lppeVersion OMA-LPPe-LPPeVersion, + lppeMode OMA-LPPe-LPPeMode, + messageExtensionBody OMA-LPPe-MessageExtensionBody, + ... +} + +OMA-LPPe-LPPeCompatibilityLevel ::= INTEGER (0..15) + +OMA-LPPe-LPPeVersion ::= SEQUENCE { + majorVersion INTEGER(0..255), + minorVersion INTEGER(0..255) +} + +OMA-LPPe-LPPeMode ::= ENUMERATED { + normal, + reversed, + ... +} + + +OMA-LPPe-MessageExtensionBody ::= CHOICE { + requestCapabilities OMA-LPPe-RequestCapabilities, + --Shall only be used in the EPDU in LPP RequestCapabilities + provideCapabilities OMA-LPPe-ProvideCapabilities, + --Shall only be used in the EPDU in LPP ProvideCapabilities + requestAssistanceData OMA-LPPe-RequestAssistanceData, + --Shall only be used in the EPDU in LPP RequestAssistanceData + provideAssistanceData OMA-LPPe-ProvideAssistanceData, + --Shall only be used in the EPDU in LPP ProvideAssistanceData + requestLocationInformation OMA-LPPe-RequestLocationInformation, + --Shall only be used in the EPDU in LPP RequestLocationInformation + provideLocationInformation OMA-LPPe-ProvideLocationInformation, + --Shall only be used in the EPDU in LPP ProvideLocationInformation + error OMA-LPPe-Error, --Shall only be used in the EPDU in LPP Error + abort OMA-LPPe-Abort, --Shall only be used in the EPDU in LPP Abort + ... +} + + +OMA-LPPe-RequestCapabilities ::= SEQUENCE { + commonIEsRequestCapabilities OMA-LPPe-CommonIEsRequestCapabilities OPTIONAL, + agnss-RequestCapabilities OMA-LPPe-AGNSS-RequestCapabilities OPTIONAL, + otdoa-RequestCapabilities OMA-LPPe-OTDOA-RequestCapabilities OPTIONAL, + eotd-RequestCapabilities OMA-LPPe-EOTD-RequestCapabilities OPTIONAL, + otdoa-utra-RequestCapabilities OMA-LPPe-OTDOA-UTRA-RequestCapabilities OPTIONAL, + ecid-lte-RequestCapabilities OMA-LPPe-ECID-LTE-RequestCapabilities OPTIONAL, + ecid-gsm-RequestCapabilities OMA-LPPe-ECID-GSM-RequestCapabilities OPTIONAL, + ecid-utra-RequestCapabilities OMA-LPPe-ECID-UTRA-RequestCapabilities OPTIONAL, + wlan-ap-RequestCapabilities OMA-LPPe-WLAN-AP-RequestCapabilities OPTIONAL, + ecid-wimax-RequestCapabilities OMA-LPPe-ECID-WiMax-RequestCapabilities OPTIONAL, + sensor-RequestCapabilities OMA-LPPe-Sensor-RequestCapabilities OPTIONAL, + srn-RequestCapabilities OMA-LPPe-SRN-RequestCapabilities OPTIONAL, + ... +} + + +OMA-LPPe-ProvideCapabilities::= SEQUENCE { + commonIEsProvideCapabilities OMA-LPPe-CommonIEsProvideCapabilities OPTIONAL, + agnss-ProvideCapabilities OMA-LPPe-AGNSS-ProvideCapabilities OPTIONAL, + otdoa-ProvideCapabilities OMA-LPPe-OTDOA-ProvideCapabilities OPTIONAL, + eotd-ProvideCapabilities OMA-LPPe-EOTD-ProvideCapabilities OPTIONAL, + otdoa-utra-ProvideCapabilities OMA-LPPe-OTDOA-UTRA-ProvideCapabilities OPTIONAL, + ecid-lte-ProvideCapabilities OMA-LPPe-ECID-LTE-ProvideCapabilities OPTIONAL, + ecid-gsm-ProvideCapabilities OMA-LPPe-ECID-GSM-ProvideCapabilities OPTIONAL, + ecid-utra-ProvideCapabilities OMA-LPPe-ECID-UTRA-ProvideCapabilities OPTIONAL, + wlan-ap-ProvideCapabilities OMA-LPPe-WLAN-AP-ProvideCapabilities OPTIONAL, + ecid-wimax-ProvideCapabilities OMA-LPPe-ECID-WiMax-ProvideCapabilities OPTIONAL, + sensor-ProvideCapabilities OMA-LPPe-Sensor-ProvideCapabilities OPTIONAL, + srn-ProvideCapabilities OMA-LPPe-SRN-ProvideCapabilities OPTIONAL, + ... +} + + +OMA-LPPe-RequestAssistanceData ::= SEQUENCE { + commonIEsRequestAssistanceData OMA-LPPe-CommonIEsRequestAssistanceData OPTIONAL, + agnss-RequestAssistanceData OMA-LPPe-AGNSS-RequestAssistanceData OPTIONAL, + otdoa-RequestAssistanceData OMA-LPPe-OTDOA-RequestAssistanceData OPTIONAL, + eotd-RequestAssistanceData OMA-LPPe-EOTD-RequestAssistanceData OPTIONAL, + otdoa-utra-RequestAssistanceData OMA-LPPe-OTDOA-UTRA-RequestAssistanceData OPTIONAL, + ecid-lte-RequestAssistanceData OMA-LPPe-ECID-LTE-RequestAssistanceData OPTIONAL, + ecid-gsm-RequestAssistanceData OMA-LPPe-ECID-GSM-RequestAssistanceData OPTIONAL, + ecid-utra-RequestAssistanceData OMA-LPPe-ECID-UTRA-RequestAssistanceData OPTIONAL, + wlan-ap-RequestAssistanceData OMA-LPPe-WLAN-AP-RequestAssistanceData OPTIONAL, + sensor-RequestAssistanceData OMA-LPPe-Sensor-RequestAssistanceData OPTIONAL, + srn-RequestAssistanceData OMA-LPPe-SRN-RequestAssistanceData OPTIONAL, + ... +} + + +OMA-LPPe-ProvideAssistanceData ::= SEQUENCE { + commonIEsProvideAssistanceData OMA-LPPe-CommonIEsProvideAssistanceData OPTIONAL, + agnss-ProvideAssistanceData OMA-LPPe-AGNSS-ProvideAssistanceData OPTIONAL, + otdoa-ProvideAssistanceData OMA-LPPe-OTDOA-ProvideAssistanceData OPTIONAL, + eotd-ProvideAssistanceData OMA-LPPe-EOTD-ProvideAssistanceData OPTIONAL, + otdoa-utra-ProvideAssistanceData OMA-LPPe-OTDOA-UTRA-ProvideAssistanceData OPTIONAL, + ecid-lte-ProvideAssistanceData OMA-LPPe-ECID-LTE-ProvideAssistanceData OPTIONAL, + ecid-gsm-ProvideAssistanceData OMA-LPPe-ECID-GSM-ProvideAssistanceData OPTIONAL, + ecid-utra-ProvideAssistanceData OMA-LPPe-ECID-UTRA-ProvideAssistanceData OPTIONAL, + wlan-ap-ProvideAssistanceData OMA-LPPe-WLAN-AP-ProvideAssistanceData OPTIONAL, + sensor-ProvideAssistanceData OMA-LPPe-Sensor-ProvideAssistanceData OPTIONAL, + srn-ProvideAssistanceData OMA-LPPe-SRN-ProvideAssistanceData OPTIONAL, + ... +} + + +OMA-LPPe-RequestLocationInformation ::= SEQUENCE { + commonIEsRequestLocationInformation OMA-LPPe-CommonIEsRequestLocationInformation OPTIONAL, + agnss-RequestLocationInformation OMA-LPPe-AGNSS-RequestLocationInformation OPTIONAL, + otdoa-RequestLocationInformation OMA-LPPe-OTDOA-RequestLocationInformation OPTIONAL, + eotd-RequestLocationInformation OMA-LPPe-EOTD-RequestLocationInformation OPTIONAL, + otdoa-utra-RequestLocationInformation OMA-LPPe-OTDOA-UTRA-RequestLocationInformation OPTIONAL, + ecid-lte-RequestLocationInformation OMA-LPPe-ECID-LTE-RequestLocationInformation OPTIONAL, + ecid-gsm-RequestLocationInformation OMA-LPPe-ECID-GSM-RequestLocationInformation OPTIONAL, + ecid-utra-RequestLocationInformation OMA-LPPe-ECID-UTRA-RequestLocationInformation OPTIONAL, + wlan-ap-RequestLocationInformation OMA-LPPe-WLAN-AP-RequestLocationInformation OPTIONAL, + ecid-wimax-RequestLocationInformation OMA-LPPe-ECID-WiMax-RequestLocationInformation OPTIONAL, + sensor-RequestLocationInformation OMA-LPPe-Sensor-RequestLocationInformation OPTIONAL, + srn-RequestLocationInformation OMA-LPPe-SRN-RequestLocationInformation OPTIONAL, + ... +} + + +OMA-LPPe-ProvideLocationInformation ::= SEQUENCE { + commonIEsProvideLocationInformation OMA-LPPe-CommonIEsProvideLocationInformation OPTIONAL, + agnss-ProvideLocationInformation OMA-LPPe-AGNSS-ProvideLocationInformation OPTIONAL, + otdoa-ProvideLocationInformation OMA-LPPe-OTDOA-ProvideLocationInformation OPTIONAL, + eotd-ProvideLocationInformation OMA-LPPe-EOTD-ProvideLocationInformation OPTIONAL, + otdoa-utra-ProvideLocationInformation OMA-LPPe-OTDOA-UTRA-ProvideLocationInformation OPTIONAL, + ecid-lte-ProvideLocationInformation OMA-LPPe-ECID-LTE-ProvideLocationInformation OPTIONAL, + ecid-gsm-ProvideLocationInformation OMA-LPPe-ECID-GSM-ProvideLocationInformation OPTIONAL, + ecid-utra-ProvideLocationInformation OMA-LPPe-ECID-UTRA-ProvideLocationInformation OPTIONAL, + wlan-ap-ProvideLocationInformastion OMA-LPPe-WLAN-AP-ProvideLocationInformation OPTIONAL, + ecid-wimax-ProvideLocationInformastion OMA-LPPe-ECID-WiMax-ProvideLocationInformation OPTIONAL, + sensor-ProvideLocationInformation OMA-LPPe-Sensor-ProvideLocationInformation OPTIONAL, + srn-ProvideLocationInformation OMA-LPPe-SRN-ProvideLocationInformation OPTIONAL, + ... +} + + +OMA-LPPe-Abort ::= SEQUENCE { + commonIEsAbort OMA-LPPe-CommonIEsAbort OPTIONAL, + agnssAbort OMA-LPPe-AGNSS-Abort OPTIONAL, + ... +} + + + +OMA-LPPe-Error ::= SEQUENCE { + commonIEsError OMA-LPPe-CommonIEsError OPTIONAL, + ... +} + + + +OMA-LPPe-AssistanceContainer-DataSerialNumber ::= SEQUENCE { + dataSerialNumber INTEGER(0..4294967295), + ... +} + + +OMA-LPPe-AssistanceContainerID ::= SEQUENCE { + containerID INTEGER (0..65535), + ... +} + + +OMA-LPPe-AssistanceContainerProvideList ::= SEQUENCE (SIZE(1.. maxAssistanceContainerList)) OF OMA-LPPe-AssistanceContainerProvide + +maxAssistanceContainerList INTEGER ::= 16 +OMA-LPPe-AssistanceContainerProvide ::= SEQUENCE { + dataIdentifier OMA-LPPe-VendorOrOperatorAssistanceDataIdentifier, + checkOrUpdateOrError ENUMERATED { + targetHasLatestData, + targetDataNotLatest, + targetDataNotLatestButServerCannotProvideLatestData, + targetHasValidData, + targetDataInvalidButServerCannotProvideValidData, + serverHasRequestedDataButUnableToProvideTemporarily, + serverDoesNotHaveRequestedData, + serverDoesNotRecognizeRequestedData, + undefined, + ... } OPTIONAL, --Cond CheckorUpdate + dataResult CHOICE { + simulationResult INTEGER(0..5000), + data OMA-LPPe-AssistanceContainerData, + ... + } OPTIONAL, + errorCode OMA-LPPe-AssistanceContainerProvideError OPTIONAL, + ... +} + +OMA-LPPe-AssistanceContainerData ::= SEQUENCE { + dataSerialNumber OMA-LPPe-AssistanceContainer-DataSerialNumber OPTIONAL, + data OCTET STRING, + validityPeriod OMA-LPPe-ValidityPeriod OPTIONAL, + validityArea OMA-LPPe-ValidityArea OPTIONAL, + ... +} + +OMA-LPPe-AssistanceContainerProvideError ::= SEQUENCE { + serverError ENUMERATED { assistanceContainerUnknownDataIdentifier, + assistanceContainerUnknownDataSerialNumber, + assistanceContainerDataTemporarilyUnavailable, + assistanceContainerDataNoLongerSupported, + assistanceContainerVendorOrOperatorNotSupported, + ...} OPTIONAL, + ... +} + + + +OMA-LPPe-AssistanceContainerRequestList ::= SEQUENCE (SIZE(1..maxAssistanceContainerList)) OF OMA-LPPe-AssistanceContainerRequest + +OMA-LPPe-AssistanceContainerRequest ::= SEQUENCE { + dataIdentifier OMA-LPPe-VendorOrOperatorAssistanceDataIdentifier, + simulatedReq BOOLEAN, + checkOrUpdateReq OMA-LPPe-AssistanceContainerCheckOrUpdateReq OPTIONAL, + validityTimeRequest OMA-LPPe-ValidityPeriod OPTIONAL, + proprietaryRequestParameters OCTET STRING OPTIONAL, + ... +} + +OMA-LPPe-AssistanceContainerCheckOrUpdateReq ::= SEQUENCE { + dataSerialNumber OMA-LPPe-AssistanceContainer-DataSerialNumber, + checkLatest ENUMERATED {returnLatestIfCurrentNotLatest, + returnUpdateOnlyIfCurrentInvalid, + ... }, + ... +} + + + +OMA-LPPe-CellLocalIdGERAN ::= SEQUENCE { + locationAreaCode BIT STRING (SIZE (16)), + cellIdentity BIT STRING (SIZE (16)), + ... +} + + +OMA-LPPe-CellNonUniqueIDGERAN ::= SEQUENCE { + bsic INTEGER (0..63), + bcch INTEGER (0..1023), + ... +} + + + +OMA-LPPe-CharArray ::= VisibleString(FROM ("a".."z" | "A".."Z" | "0".."9" | ".-"))(SIZE (1..31)) + + +OMA-LPPe-CivicLocation ::= SEQUENCE { + countryCode OCTET STRING (SIZE (2)), + civicAddressElementList OMA-LPPe-CivicAddressElementList, + ... +} + +OMA-LPPe-CivicAddressElementList ::= SEQUENCE (SIZE (1..128)) OF OMA-LPPe-CivicAddressElement + +OMA-LPPe-CivicAddressElement ::= SEQUENCE { + caType INTEGER(0..511), + caValue OCTET STRING (SIZE (1..256)), + ... +} + + +OMA-LPPe-CivicLocation-pidf-lo ::= SEQUENCE { + civicLocation OCTET STRING, + ... +} + + +OMA-LPPe-Duration ::= SEQUENCE { + duration INTEGER (1..63), + durationLSB INTEGER (1..89) OPTIONAL, + ... +} + + +OMA-LPPe-FixedAccessTypes ::= BIT STRING { cable (0), + dsl (1), + lan (2), + pstn (3), + other (4) } (SIZE(1..16)) + + +OMA-LPPe-HighAccuracy3Dposition ::= SEQUENCE { + latitude INTEGER(-2147483648..2147483647), + longitude INTEGER(-2147483648..2147483647), + cep INTEGER(0..255) OPTIONAL, --Cond NoEllipse + uncertainty-semimajor INTEGER(0..255) OPTIONAL, --Cond NoCEP + uncertainty-semiminor INTEGER(0..255) OPTIONAL, --Cond NoCEP + offset-angle INTEGER(0..179) OPTIONAL, --Cond NoCEP + confidenceHorizontal INTEGER(0..99) OPTIONAL, + altitude INTEGER(-64000..1280000), + uncertainty-altitude INTEGER(0..255), + confidenceVertical INTEGER(0..99) OPTIONAL, + ..., + extUncertRange BOOLEAN OPTIONAL +} + + + +OMA-LPPe-HighAccuracy3Dvelocity ::= SEQUENCE { + enu-origin OMA-LPPe-HighAccuracy3Dposition OPTIONAL, + east-component INTEGER(0..511), + negative-sign-east NULL OPTIONAL, --Cond West + north-component INTEGER(0..511), + negative-sign-north NULL OPTIONAL, --Cond South + up-component INTEGER(0..511), + negative-sign-up NULL OPTIONAL, --Cond Down + cep INTEGER(0..255) OPTIONAL, --Cond NoEllipse + uncertainty-semimajor INTEGER(0..255) OPTIONAL, --Cond NoCEP, + uncertainty-semiminor INTEGER(0..255) OPTIONAL, --Cond NoCEP, + offset-angle INTEGER(0..179) OPTIONAL, --Cond NoCEP, + confidenceHorizontal INTEGER(0..99) OPTIONAL, + uncertainty-up-component INTEGER(0..255), + confidenceUp INTEGER(0..99) OPTIONAL, + ... +} + + +OMA-LPPe-LocationInformationContainerID ::= SEQUENCE { + containerID INTEGER (0..65535), + ... +} + + +OMA-LPPe-LocationInformationContainer ::= SEQUENCE { + vendorOrOperatorID OMA-LPPe-VendorOrOperatorID, + locationInformationContainerDataList OMA-LPPe-LocationInformationContainerDataList, + ... +} + +OMA-LPPe-LocationInformationContainerDataList ::= SEQUENCE (SIZE(1..maxLocationInformationContainerDataList)) OF OMA-LPPe-LocationInformationContainerData + +OMA-LPPe-LocationInformationContainerData ::= SEQUENCE { + containerID OMA-LPPe-LocationInformationContainerID, + containerData OCTET STRING, + ... +} + + +OMA-LPPe-LocationInformationContainerRequest ::= SEQUENCE { + vendorOrOperatorID OMA-LPPe-VendorOrOperatorID, + locationInformationContainerRequestList OMA-LPPe-LocationInformationContainerRequestList, + ... +} + +OMA-LPPe-LocationInformationContainerRequestList ::= SEQUENCE + (SIZE (1.. maxLocationInformationContainerDataList)) OF + OMA-LPPe-LocationInformationContainerRequestItem + +maxLocationInformationContainerDataList INTEGER ::= 10 + +OMA-LPPe-LocationInformationContainerRequestItem ::= SEQUENCE { + containerID OMA-LPPe-LocationInformationContainerID, + additionalInformation OCTET STRING OPTIONAL, + ... +} + + +OMA-LPPe-MapDataReference ::= SEQUENCE { + dataID OMA-LPPe-AssistanceContainerID, + mapReference OCTET STRING (SIZE (1..64)), + mapSize INTEGER (1..5000) OPTIONAL, + ... +} + + +OMA-LPPe-Orientation ::= CHOICE { + eulerAngles SEQUENCE { + alpha INTEGER (0..359), + beta INTEGER (0..180), + gamma INTEGER (0..359), + ... + }, + ... +} + + +OMA-LPPe-ReferencePoint ::= SEQUENCE { + referencePointUniqueID OMA-LPPe-ReferencePointUniqueID OPTIONAL, + referencePointGeographicLocation CHOICE { + location3D EllipsoidPointWithAltitude, + location3DwithUncertainty EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, + locationwithhighaccuracy OMA-LPPe-HighAccuracy3Dposition, + ... + } OPTIONAL, + referencePointCivicLocation OMA-LPPe-CivicLocation OPTIONAL, + referencePointFloorLevel INTEGER (-20..235) OPTIONAL, + relatedReferencePoints SEQUENCE (SIZE (1..8)) OF + OMA-LPPe-ReferencePointRelationship OPTIONAL, + mapDataInformation OMA-LPPe-MapDataInformation OPTIONAL, + ... +} + +OMA-LPPe-MapDataInformation ::= SEQUENCE (SIZE (1..16)) OF OMA-LPPe-MapDataReferenceElement + +OMA-LPPe-MapDataReferenceElement ::= SEQUENCE { + mapDataUrl CHOICE { + mapDataUrl OMA-LPPe-Uri, + mapDataRef OMA-LPPe-MapDataReference + }, + mapProvider CHOICE { + sameAsRefPointProvider NULL, + notSameAsRefPointProvider OMA-LPPe-VendorOrOperatorID, + ... + } OPTIONAL, + mapAssociation CHOICE { + referencePointUniqueID NULL, + otherID VisibleString (SIZE (1..64)), + mapOffset OMA-LPPe-RelativeLocation, + origin NULL, + ... + }, + mapHorizontalOrientation INTEGER (0..359) OPTIONAL, + ... +} + +OMA-LPPe-ReferencePointRelationship ::= SEQUENCE { + referencePointUniqueID OMA-LPPe-ReferencePointUniqueID, + relativeLocation OMA-LPPe-RelativeLocation, + ... +} + + +OMA-LPPe-ReferencePointUniqueID ::= SEQUENCE { + providerID OMA-LPPe-VendorOrOperatorID, + providerAssignedID OCTET STRING, + version INTEGER (1..64), + ... +} + + +OMA-LPPe-RelativeLocation ::= SEQUENCE { + units ENUMERATED {cm,dm, m10, ...} OPTIONAL, + arc-second-units ENUMERATED {as0-0003, as0-003, as0-03, as0-3, ...} OPTIONAL, + relativeNorth INTEGER (-524288..524287), + relativeEast INTEGER (-524288..524287), + relativeAltitude OMA-LPPe-RelativeAltitude OPTIONAL, + horizontalUncertainty OMA-LPPe-HorizontalUncertaintyAndConfidence OPTIONAL, + ... +} + +OMA-LPPe-HorizontalUncertaintyAndConfidence ::= SEQUENCE { + uncShape CHOICE { + circle INTEGER (0..127), + ellipse SEQUENCE { + semimajor INTEGER (0..127), + semiminor INTEGER (0..127), + offsetAngle INTEGER (0..179) + }, + ... + }, + confidence INTEGER (0..99) OPTIONAL, + ... +} + +OMA-LPPe-RelativeAltitude ::= SEQUENCE { + geodeticRelativeAltitude OMA-LPPe-GeodeticRelativeAltitude OPTIONAL, + civicRelativeAltitude OMA-LPPe-CivicRelativeAltitude OPTIONAL, + ... +} + +OMA-LPPe-GeodeticRelativeAltitude ::= SEQUENCE { + geodetic-height-depth INTEGER (-32768..32767), + geodetic-uncertainty-and-confidence OMA-LPPe-GeodeticUncertaintyAndConfidence OPTIONAL, + ... +} + +OMA-LPPe-GeodeticUncertaintyAndConfidence ::= SEQUENCE { + uncertainty INTEGER (0..127), + confidence INTEGER (0..99) OPTIONAL, + ... +} + +OMA-LPPe-CivicRelativeAltitude ::= SEQUENCE { + civic-floors INTEGER (-255..256), + civic-uncertainty-and-confidence OMA-LPPe-CivicUncertaintyAndConfidence OPTIONAL, + ... +} + +OMA-LPPe-CivicUncertaintyAndConfidence ::= SEQUENCE { + uncertainty INTEGER (0..127), + confidence INTEGER (0..99) OPTIONAL, + ... +} + + +OMA-LPPe-Session-ID ::= SEQUENCE { + provider-ID OMA-LPPe-VendorOrOperatorID, + server-ID OCTET STRING (SIZE(4)), + session-ID OCTET STRING (SIZE(4)), + ... +} + + +-- asn2wrs does not handle '%' in the restricted string; handle it in lppe.cnf +--OMA-LPPe-Uri ::= VisibleString (FROM ( "a".."z" | "A".."Z" | "0".."9" | ":" | "/" | "?" | "#" | "[" | +--"]" | "@" | "!" | "$" | "&" | "'" | "(" | ")" | "*" | "+" | "," | ";" | "=" | "-" | "." | "_" | "~" | +--"%" )) +OMA-LPPe-Uri ::= VisibleString (FROM ( "a".."z" | "A".."Z" | "0".."9" | ":" | "/" | "?" | "#" | "[" | +"]" | "@" | "!" | "$" | "&" | "'" | "(" | ")" | "*" | "+" | "," | ";" | "=" | "-" | "." | "_" | "~")) + + +OMA-LPPe-ValidityArea ::= SEQUENCE { + regionSizeInv INTEGER (1..255), + areaWidth INTEGER (2..9180) OPTIONAL, + codedLatOfNWCorner INTEGER (0..4589), + codedLonOfNWCorner INTEGER (0..9179), + rleList OMA-LPPe-RleList OPTIONAL, + ... +} + +OMA-LPPe-RleList ::= SEQUENCE (SIZE(1..65535)) OF INTEGER (0..255) + + +OMA-LPPe-ValidityPeriod ::= SEQUENCE { + beginTime GNSS-SystemTime, + beginTimeAlt INTEGER (0..2881) OPTIONAL, + duration INTEGER (1..2881), + ... +} + + +OMA-LPPe-VendorOrOperatorAssistanceDataIdentifier ::= SEQUENCE { + vendorOrOperatorID OMA-LPPe-VendorOrOperatorID, + assistanceDataID OMA-LPPe-AssistanceContainerID, + ... +} + + +OMA-LPPe-VendorOrOperatorID ::= CHOICE { + standard-VendorOrOperatorID INTEGER(1..1024), + nonStandard-VendorOrOperatorID OMA-LPPe-NonStandard-VendorOrOperatorID, + ... +} + + +OMA-LPPe-NonStandard-VendorOrOperatorID ::= SEQUENCE { + encodedID INTEGER(0..65535), + visibleIdentification OMA-LPPe-CharArray OPTIONAL, + ... +} + + +OMA-LPPe-WirelessAccessTypes ::= BIT STRING { gsm (0), + utra (1), + lte (2), + wimax (3), + wifi (4), + other (5), + nr (6) } (SIZE(1..16)) + + +OMA-LPPe-WLAN-AP-ID ::= SEQUENCE { + apMacAddress BIT STRING ( SIZE (48) ), + ... +} + + +OMA-LPPe-WLAN-AP-Type ::= ENUMERATED { + ieee802-11a, + ieee802-11b, + ieee802-11g, + ieee802-11n, + ..., + ieee802-11ac, + ieee802-11ad +} + + +OMA-LPPe-WLAN-AP-Type-List ::= BIT STRING { + ieee802-11a (0), + ieee802-11b (1), + ieee802-11g (2), + ieee802-11n (3), + ieee802-11ac (4), + ieee802-11ad (5)} (SIZE (1..16)) + + +OMA-LPPe-WLANFemtoCoverageArea ::= SEQUENCE { + truncation INTEGER(-127..128) OPTIONAL, + areaType ENUMERATED { gaussian, binaryDistribution, ...} OPTIONAL, + confidence INTEGER (0..99), + componentList SEQUENCE (SIZE (1..16)) OF OMA-LPPe-WLANFemtoCoverageAreaElement, + ... +} + +OMA-LPPe-WLANFemtoCoverageAreaElement ::= SEQUENCE { + refPointAndArea SEQUENCE { + referenceLocation ENUMERATED {antenna, + referencePoint, + ... }, + referencePoint OMA-LPPe-ReferencePointUniqueID OPTIONAL, + locationAndArea OMA-LPPe-RelativeLocation, + ... + }, + type ENUMERATED {indoor (0), + outdoor (1), + mixed (2), + ... } OPTIONAL, + weight INTEGER (0..100) OPTIONAL, + ... +} + + +OMA-LPPe-CommonIEsRequestCapabilities ::= SEQUENCE { + iP-Address-RequestCapabilities OMA-LPPe-IP-Address-RequestCapabilities OPTIONAL, + assistanceContainerSupportReq OMA-LPPe-AssistanceContainerSupportReq OPTIONAL, + locationInformationContainerSupportReq OMA-LPPe-LocationInformationContainerSupportReq OPTIONAL, + relativeLocationChange-RequestCapabilities OMA-LPPe-RelativeLocationChange-RequestCapabilities OPTIONAL, + highAccuracyFormatCapabilitiesReq OMA-LPPe-HighAccuracyFormatCapabilitiesReq OPTIONAL, + segmentedAssistanceData-ReqCapabilities OMA-LPPe-SegmentedAssistanceData-ReqCapabilities OPTIONAL, + referencePointCapabilitiesReq OMA-LPPe-ReferencePointCapabilitiesReq OPTIONAL, + scheduledLocation-RequestCapabilities OMA-LPPe-ScheduledLocation-RequestCapabilities OPTIONAL, + accessCapabilitiesReq OMA-LPPe-AccessCapabilitiesReq OPTIONAL, + segmentedLocationInformation-ReqCapabilities + OMA-LPPe-SegmentedLocationInformation-ReqCapabilities + OPTIONAL, + ... +} + +OMA-LPPe-IP-Address-RequestCapabilities ::= SEQUENCE { + ... +} + +OMA-LPPe-AssistanceContainerSupportReq ::= SEQUENCE { + vendorOrOperatorIDList OMA-LPPe-VendorOrOperatorIDList OPTIONAL, + ... +} + +OMA-LPPe-LocationInformationContainerSupportReq ::= SEQUENCE { + vendorOrOperatorIDList OMA-LPPe-VendorOrOperatorIDList OPTIONAL, + ... +} + +OMA-LPPe-VendorOrOperatorIDList ::= SEQUENCE (SIZE(1..maxVendorOrOperatorIDList)) OF + OMA-LPPe-VendorOrOperatorID + +maxVendorOrOperatorIDList INTEGER ::= 32 + +OMA-LPPe-RelativeLocationChange-RequestCapabilities ::= SEQUENCE { + ... +} + +OMA-LPPe-HighAccuracyFormatCapabilitiesReq ::= SEQUENCE { + ... +} +OMA-LPPe-SegmentedAssistanceData-ReqCapabilities ::= SEQUENCE { + ... +} + +OMA-LPPe-ReferencePointCapabilitiesReq ::= SEQUENCE { + referencePointProviderSupportListReq SEQUENCE (SIZE (1..128)) OF + OMA-LPPe-VendorOrOperatorID OPTIONAL, + ... +} + +OMA-LPPe-ScheduledLocation-RequestCapabilities ::= SEQUENCE { + ... +} + +OMA-LPPe-AccessCapabilitiesReq ::= SEQUENCE { + ... +} + +OMA-LPPe-SegmentedLocationInformation-ReqCapabilities ::= SEQUENCE { + ... +} + + +OMA-LPPe-CommonIEsProvideCapabilities ::= SEQUENCE { + iP-Address-Capabilities OMA-LPPe-IP-Address-Capabilities OPTIONAL, + assistanceContainerSupport OMA-LPPe-AssistanceContainerSupport OPTIONAL, + locationInformationContainerSupport OMA-LPPe-LocationInformationContainerSupport OPTIONAL, + relativeLocationChange-Capabilities OMA-LPPe-RelativeLocationChange-Capabilities OPTIONAL, + highAccuracyFormatCapabilities OMA-LPPe-HighAccuracyFormatCapabilities OPTIONAL, + segmentedAssistanceData-ProvideCapabs OMA-LPPe-SegmentedAssistanceData-ProvideCapabs OPTIONAL, + referencePointCapabilities OMA-LPPe-ReferencePointCapabilities OPTIONAL, + scheduledLocation-Capabilities OMA-LPPe-ScheduledLocation-Capabilities OPTIONAL, + accessCapabilities OMA-LPPe-AccessCapabilities OPTIONAL, + segmentedLocationInformation-ProvideCapabs OMA-LPPe-SegmentedLocationInformation-ProvideCapabs OPTIONAL, + ... +} + +OMA-LPPe-IP-Address-Capabilities ::= SEQUENCE { + iP-Address-support BIT STRING { iPv4 (0), + iPv6 (1), + nat (2) } (SIZE(1..8)) OPTIONAL, + ... +} + + +OMA-LPPe-AssistanceContainerSupport ::= SEQUENCE (SIZE(1..maxVendorOrOperatorIDList)) OF + OMA-LPPe-VendorOrOperatorAssistanceContainerList + + +OMA-LPPe-VendorOrOperatorAssistanceContainerList ::= SEQUENCE { + vendorOrOperatorID OMA-LPPe-VendorOrOperatorID, + assistanceContainerList OMA-LPPe-AssistanceContainerList, + ... +} + +OMA-LPPe-AssistanceContainerList ::= SEQUENCE (SIZE(1.. maxAssistanceContainerList))OF OMA-LPPe-AssistanceContainerID + +OMA-LPPe-LocationInformationContainerSupport ::= SEQUENCE (SIZE(1..maxVendorOrOperatorIDList)) OF + OMA-LPPe-VendorOrOperatorLocationInformationContainerList + +OMA-LPPe-VendorOrOperatorLocationInformationContainerList ::= SEQUENCE { + vendorOrOperatorID OMA-LPPe-VendorOrOperatorID, + locationInformationContainerList OMA-LPPe-LocationInformationContainerList, + ... +} + +OMA-LPPe-LocationInformationContainerList ::= SEQUENCE (SIZE(1..maxLocationInformationContainerList))OF OMA-LPPe-LocationInformationContainerID + +maxLocationInformationContainerList INTEGER ::= 64 +OMA-LPPe-RelativeLocationChange-Capabilities ::= SEQUENCE { + numberOfChanges INTEGER (1..5) OPTIONAL, + ... +} + +OMA-LPPe-HighAccuracyFormatCapabilities ::= BIT STRING { hAposition(0), + hAvelocity(1), + pidf-lo (2) } (SIZE(1..8)) + +OMA-LPPe-SegmentedAssistanceData-ProvideCapabs ::= SEQUENCE { + maxSegments INTEGER (2..4096) OPTIONAL, + maxSize INTEGER (1..5000) OPTIONAL, + minSize INTEGER (1..5000) OPTIONAL, + resume NULL OPTIONAL, + ... +} + +OMA-LPPe-ReferencePointCapabilities ::= SEQUENCE { + relativeLocationReportingSupport BIT STRING { geo (0), + civic (1), + otherProviders (2) } (SIZE (1..8)), + referencePointProviderSupportList SEQUENCE (SIZE (1..128)) OF + OMA-LPPe-ReferencePointProviderSupportElement OPTIONAL, + ... +} + +OMA-LPPe-ReferencePointProviderSupportElement ::= SEQUENCE { + referencePointProvider OMA-LPPe-VendorOrOperatorID, + mapDataSupport SEQUENCE { + mapDataFormat OCTET STRING OPTIONAL, + ... + } OPTIONAL, + ... +} + +OMA-LPPe-ScheduledLocation-Capabilities ::= SEQUENCE { + minimumWindow INTEGER (1..1024) OPTIONAL, + gnssTimeReference GNSS-ID-Bitmap OPTIONAL, + networkTimeReference ENUMERATED {serving, + servingOrNonServing, + ... } OPTIONAL, + ... +} + +OMA-LPPe-AccessCapabilities ::= SEQUENCE { + accessTypeUnknown NULL OPTIONAL, + fixedAccessTypes OMA-LPPe-FixedAccessTypes OPTIONAL, + wirelessAccessTypes OMA-LPPe-WirelessAccessTypes OPTIONAL, + ... +} + +OMA-LPPe-SegmentedLocationInformation-ProvideCapabs ::= SEQUENCE { + maxSegments INTEGER (2..4096) OPTIONAL, + maxSize INTEGER (1..5000) OPTIONAL, + minSize INTEGER (1..5000) OPTIONAL, + resume NULL OPTIONAL, + ... +} + + +OMA-LPPe-CommonIEsRequestAssistanceData ::= SEQUENCE { + approximate-location EllipsoidPointWithAltitudeAndUncertaintyEllipsoid OPTIONAL, + assistanceContainerRequestList OMA-LPPe-AssistanceContainerRequestList OPTIONAL, + requestPeriodicADwithUpdate OMA-LPPe-RequestPeriodicADwithUpdate OPTIONAL, + --Cond RequestPeriodicADWithUpdate + segmentedADpreference ENUMERATED {useBasic, useResume, ...} OPTIONAL, + segmentedADResume OMA-LPPe-SegmentedADResume OPTIONAL, + --Cond segmentedTransferResume + referencePointAssistanceReq OMA-LPPe-ReferencePointAssistanceReq OPTIONAL, + ... +} + +OMA-LPPe-RequestPeriodicADwithUpdate ::= SEQUENCE { + periodicAD-session-ID OCTET STRING (SIZE(4)), + typeOfADRequest TypeOfADRequest, + ... +} + +TypeOfADRequest ::= ENUMERATED { + initialRequest, + updateAndContinueIfUpdateFails, + updateAndAbortIfUpdateFails, + ... +} + +OMA-LPPe-SegmentedADResume ::= SEQUENCE { + segmentedAD-session-ID OMA-LPPe-Session-ID, + next-segment-number INTEGER (1..4096) +} + +OMA-LPPe-ReferencePointAssistanceReq ::= SEQUENCE { + referencePointReq SEQUENCE (SIZE (1..16)) OF OMA-LPPe-ReferencePointAssistanceReqElement, + ... +} + +OMA-LPPe-ReferencePointAssistanceReqElement ::= SEQUENCE { + referencePointProvider OMA-LPPe-VendorOrOperatorID, + mapDataReq OCTET STRING OPTIONAL, + ... +} + + +OMA-LPPe-CommonIEsProvideAssistanceData ::= SEQUENCE { + assistanceContainerList OMA-LPPe-AssistanceContainerProvideList OPTIONAL, + providePeriodicADwithUpdate OMA-LPPe-ProvidePeriodicADwithUpdate OPTIONAL, --Cond ProvidePeriodicADWithUpdate, + segmentedADTransfer OMA-LPPe-SegmentedADTransfer OPTIONAL, --Cond segmentedTransferWithResume + default-reference-point OMA-LPPe-ReferencePoint OPTIONAL, + ... +} + +OMA-LPPe-ProvidePeriodicADwithUpdate ::= SEQUENCE { + periodicAD-session-ID OCTET STRING (SIZE(4)), + typeOfADProvide OMA-LPPe-TypeOfADProvide, + ... +} + +OMA-LPPe-TypeOfADProvide ::= ENUMERATED { + responseToInitialRequest, + providePeriodicAD, + responseToTargetUpdateRequest, + serverUpdate, + ... +} + +OMA-LPPe-SegmentedADTransfer ::= SEQUENCE { + segmentedAD-session-ID OMA-LPPe-Session-ID, + segment-number INTEGER (1..4096), + ... +} + + +OMA-LPPe-CommonIEsRequestLocationInformation ::= SEQUENCE { + iP-Address-Request OMA-LPPe-IP-Address-Request OPTIONAL, + locationInformationContainerRequest OMA-LPPe-LocationInformationContainerRequest OPTIONAL, + requestPeriodicLocInfoWithUpdate OMA-LPPe-RequestPeriodicLocInfoWithUpdate OPTIONAL, + --Cond RequestPeriodicLocInfoWithUpdate + relativeLocationChange-Request OMA-LPPe-RelativeLocationChange-Request OPTIONAL, + localPositionRequest OMA-LPPe-LocalPositionRequest OPTIONAL, + scheduledLocation-Request OMA-LPPe-ScheduledLocation-Request OPTIONAL, + accessTypeRequest OMA-LPPe-AccessTypeRequest OPTIONAL, + segmentedLIpreference ENUMERATED {useBasic, useResume, ...} OPTIONAL, + segmentedLIResume OMA-LPPe-SegmentedLIResume OPTIONAL, + --Cond segmentedTransferResume + ..., + civicLocation-Request OMA-LPPe-CivicLocation-Request OPTIONAL +} + +OMA-LPPe-IP-Address-Request ::= SEQUENCE { + ... +} + +OMA-LPPe-RequestPeriodicLocInfoWithUpdate ::= SEQUENCE { + session-ID OCTET STRING (SIZE(4)), + typeOfLocInfoRequest OMA-LPPe-TypeOfLocInfoRequest, + ... +} + +OMA-LPPe-TypeOfLocInfoRequest ::= ENUMERATED { + initialRequest, + updateAndContinueIfUpdateFails, + updateAndAbortIfUpdateFails, + ... +} + +OMA-LPPe-RelativeLocationChange-Request ::= SEQUENCE { + numberOfChanges INTEGER (1..5) OPTIONAL, + ... +} + +OMA-LPPe-LocalPositionRequest ::= SEQUENCE { + typeOfRequest ENUMERATED { localOptional, localMandatory, localOnly, ... }, + referencePointReq SEQUENCE (SIZE (1..8)) OF + OMA-LPPe-ReferencePointUniqueID OPTIONAL, + ... +} + +OMA-LPPe-ScheduledLocation-Request ::= SEQUENCE { + gnssTime GNSS-SystemTime OPTIONAL, --Cond AtLeastOne + networkTime NetworkTime OPTIONAL, --Cond AtLeastOne + relativeTime INTEGER (1..1024) OPTIONAL, --Cond AtLeastOne + windowSize INTEGER (1..1024) OPTIONAL, + ... +} + +OMA-LPPe-AccessTypeRequest ::= SEQUENCE { + ... +} + +OMA-LPPe-SegmentedLIResume ::= SEQUENCE { + segmentedLI-session-ID INTEGER (1..256), + next-segment-number INTEGER (1..4096)} + +OMA-LPPe-CivicLocation-Request ::= SEQUENCE { + format ENUMERATED {pidf-lo, ... }, + ... +} + + +OMA-LPPe-CommonIEsProvideLocationInformation ::= SEQUENCE { + highAccuracy3Dposition OMA-LPPe-HighAccuracy3Dposition OPTIONAL, + --Cond HighAccuracy + localPosition OMA-LPPe-LocalPosition OPTIONAL, + highAccuracy3Dvelocity OMA-LPPe-HighAccuracy3Dvelocity OPTIONAL, + --Cond HighAccuracy + iP-Address-List OMA-LPPe-IP-Address-List OPTIONAL, + locationInformationContainer OMA-LPPe-LocationInformationContainer OPTIONAL, + providePeriodicLocInfoWithUpdate OMA-LPPe-ProvidePeriodicLocInfowithUpdate OPTIONAL, + --Cond ProvidePeriodicLocInfoWithUpdate + relativeLocationChangeList OMA-LPPe-RelativeLocationChangeList OPTIONAL, + scheduledLocation OMA-LPPe-ScheduledLocation OPTIONAL, + --Cond ScheduledLocationRequested + accessTypes OMA-LPPe-AccessTypes OPTIONAL, + segmentedLITransfer OMA-LPPe-SegmentedLITransfer OPTIONAL, + --Cond segmentedTransferWithResume + locationInformationTimeStamp OMA-LPPe-TimeStamp OPTIONAL, + ..., + locationSource OMA-LPPe-LocationSource OPTIONAL, + --Cond LocationSource + civicLocation-pidf-lo OMA-LPPe-CivicLocation-pidf-lo OPTIONAL + --Cond CivicLocationRequest-pidf-lo +} + +OMA-LPPe-LocalPosition ::= SEQUENCE { + referencePoint OMA-LPPe-ReferencePointUniqueID, + subjectLocation OMA-LPPe-RelativeLocation OPTIONAL, + ... +} + +OMA-LPPe-IP-Address-List ::= SEQUENCE (SIZE (1..maxIPAddress)) OF OMA-LPPe-IP-Address + +maxIPAddress INTEGER ::= 5 + +OMA-LPPe-IP-Address ::= SEQUENCE { + local-IP-Address CHOICE { + iPv4 BIT STRING (SIZE(32)), + iPv6 BIT STRING (SIZE(128)), + ... + }, + bearer OMA-LPPe-Bearer, + nat BOOLEAN OPTIONAL, + ... +} + +OMA-LPPe-Bearer ::= ENUMERATED { + unknown, + gsm, + utran, + lte, + wlan, + wimax, + dsl, + pktcable, + other, + ..., + nr +} + +OMA-LPPe-ProvidePeriodicLocInfowithUpdate ::= SEQUENCE { + session-ID OCTET STRING (SIZE(4)), + typeOfLocInfoProvide OMA-LPPe-TypeOfLocInfoProvide, + ... +} + +OMA-LPPe-TypeOfLocInfoProvide ::= ENUMERATED { + responseToInitialRequest, + providePeriodicLocInfo, + responseToServerUpdateRequest, + targetUpdate, + ... +} + +OMA-LPPe-RelativeLocationChangeList ::= SEQUENCE (SIZE (1..maxRelativeLocation)) OF + OMA-LPPe-RelativeLocationChange + +OMA-LPPe-RelativeLocationChange ::= SEQUENCE { + relativeTime INTEGER (0..65535) OPTIONAL, + transactionID INTEGER (0..255) OPTIONAL, + relativeLocation OMA-LPPe-RelativeLocation, + ... +} + +maxRelativeLocation INTEGER ::= 5 + +OMA-LPPe-ScheduledLocation ::= SEQUENCE { + disposition ENUMERATED {withinWindow, + outsideWindowOrNoWindow, + notSupportedDueToNoCapability, + notSupportedDueToNoTimeReference, + notSupportedDueToConflictWithAnotherRequest, + notSupportedForOtherReasons, + ... }, + actualWindow SEQUENCE { + start INTEGER (-512..511), + duration INTEGER (0..2047) + } OPTIONAL, + ... +} + +OMA-LPPe-AccessTypes ::= SEQUENCE { + accessTypeUnknown NULL OPTIONAL, + fixedAccessTypes OMA-LPPe-FixedAccessTypes OPTIONAL, + wirelessAccessTypes OMA-LPPe-WirelessAccessTypes OPTIONAL, + ... +} + +OMA-LPPe-SegmentedLITransfer ::= SEQUENCE { + segmentedLI-session-ID INTEGER (1..256), + segment-number INTEGER (1..4096), + ... +} + +OMA-LPPe-TimeStamp ::= CHOICE { + gnssTime GNSS-SystemTime, + networkTime NetworkTime, + relativeTime INTEGER (0..1024), + ... +} + +OMA-LPPe-LocationSource ::= SEQUENCE { + agnss NULL OPTIONAL, + otdoa NULL OPTIONAL, + eotd NULL OPTIONAL, + otdoaUTRA NULL OPTIONAL, + ecidLTE NULL OPTIONAL, + ecidGSM NULL OPTIONAL, + ecidUTRA NULL OPTIONAL, + wlanAP NULL OPTIONAL, + srn NULL OPTIONAL, + sensors NULL OPTIONAL, + ..., + nr-dl-tdoa NULL OPTIONAL, + nr-dl-aod NULL OPTIONAL, + ecidNR NULL OPTIONAL, + bt NULL OPTIONAL, + mbs NULL OPTIONAL, + baro-sensor NULL OPTIONAL, + motion-sensor NULL OPTIONAL +} + + +OMA-LPPe-CommonIEsAbort ::= SEQUENCE { + abortCause ENUMERATED {periodicADsessionStop, + periodicADprocedureNotSupported, + periodicADprocedureNotAccepted, + periodicLocInfoSessionStop, + periodicLocInfoProcedureNotSupported, + periodicLocInfoProcedureNotAccepted, + ... + } OPTIONAL, + periodicSessionIDtoAbort OCTET STRING (SIZE(4)) OPTIONAL, --Cond periodicWithUpdate + ... +} + + +OMA-LPPe-CommonIEsError ::= SEQUENCE { + ... +} + + +OMA-LPPe-AGNSS-ProvideAssistanceData ::= SEQUENCE { + commonAssistData OMA-LPPe-AGNSS-CommonAssistData OPTIONAL, + genericAssistData OMA-LPPe-AGNSS-GenericAssistData OPTIONAL, + error OMA-LPPe-AGNSS-Error OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-CommonAssistData::= SEQUENCE { + ionosphericModel OMA-LPPe-AGNSS-IonosphericModel OPTIONAL, + troposphereModel OMA-LPPe-AGNSS-TroposphereModel OPTIONAL, + altitudeAssistance OMA-LPPe-AGNSS-AltitudeAssistanceList OPTIONAL, + solarRadiation OMA-LPPe-AGNSS-SolarRadiation OPTIONAL, + ccpAssistCommonProvide OMA-LPPe-AGNSS-CCPassistCommonProvide OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-GenericAssistData ::= SEQUENCE (SIZE (1..16)) OF OMA-LPPe-AGNSS-GenericAssistDataElement + +OMA-LPPe-AGNSS-GenericAssistDataElement ::= SEQUENCE { + gnss-ID GNSS-ID, + wideAreaIonoSurfacePerSVlist OMA-LPPe-AGNSS-WideAreaIonoSurfacePerSVlist OPTIONAL, + mechanicsForAllSVs OMA-LPPe-AGNSS-MechanicsForAllSVs OPTIONAL, + dcbsForAllSVs OMA-LPPe-AGNSS-DCBsForAllSVs OPTIONAL, + navModelDegradationModel OMA-LPPe-AGNSS-NavModelDegradationModelList OPTIONAL, + ccpAssistProvide OMA-LPPe-AGNSS-CCPassistGenericProvide OPTIONAL, --Cond CCP + navModelList OMA-LPPe-AGNSS-NavModelList OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-IonosphericModel ::= CHOICE { + staticModels SEQUENCE { + localKlobucharModelList OMA-LPPe-AGNSS-LocalKlobucharModelList OPTIONAL, + ionoStormIndication OMA-LPPe-AGNSS-IonoStormIndication OPTIONAL, + ... + }, + waIono CHOICE { + controlParameters OMA-LPPe-AGNSS-WideAreaIonoSurfaceControlParametersProvide, + commonProvide OMA-LPPe-AGNSS-WideAreaIonoSurfaceCommon, + ... + }, + ... +} + + +OMA-LPPe-AGNSS-LocalKlobucharModelList ::= SEQUENCE (SIZE(1..16)) OF + OMA-LPPe-AGNSS-LocalKlobucharModelElement + +OMA-LPPe-AGNSS-LocalKlobucharModelElement ::= SEQUENCE { + validityArea OMA-LPPe-ValidityArea, + klobucharModel SEQUENCE (SIZE(1..8)) OF OMA-LPPe-AGNSS-LocalKlobucharModel, + ... +} + +OMA-LPPe-AGNSS-LocalKlobucharModel ::= SEQUENCE { + validityPeriod OMA-LPPe-ValidityPeriod, + 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), + ... +} + + + +OMA-LPPe-AGNSS-IonoStormIndication ::= SEQUENCE { + area OMA-LPPe-ValidityArea, + --rleList shall not be included and is replaced by the stormList below + stormList OMA-LPPe-AGNSS-StormList, + ... +} + +OMA-LPPe-AGNSS-StormList ::= SEQUENCE (SIZE(1..16)) OF OMA-LPPe-AGNSS-StormElement + +OMA-LPPe-AGNSS-StormElement ::= SEQUENCE { + validityPeriod OMA-LPPe-ValidityPeriod, + rleListIono OMA-LPPe-AGNSS-RleListIono, + ... +} + +OMA-LPPe-AGNSS-RleListIono ::= SEQUENCE (SIZE(1..65535)) OF OMA-LPPe-AGNSS-RleIonoElement + +OMA-LPPe-AGNSS-RleIonoElement ::= SEQUENCE { + regionCount INTEGER (0..255), + ionoIndex CHOICE { + noaaScales OMA-LPPe-AGNSS-NoaaScales, + ... + }, + ... +} + +OMA-LPPe-AGNSS-NoaaScales ::= ENUMERATED{ g1,g2, g3, g4, g5, unknown, none, ... } + + +OMA-LPPe-AGNSS-WideAreaIonoSurfaceControlParametersProvide ::= SEQUENCE { + duration OMA-LPPe-Duration OPTIONAL, --Cond FirstOrDurModify + rate INTEGER(1..64) OPTIONAL, --Cond FirstOrRateModify + referencePosition Ellipsoid-Point OPTIONAL, --Cond FirstOrPosModify + validityArea OMA-LPPe-ValidityArea OPTIONAL, --Cond FirstOrAreaModify + ... +} + + +OMA-LPPe-AGNSS-WideAreaIonoSurfaceCommon ::= SEQUENCE { + validityPeriod OMA-LPPe-ValidityPeriod, + ... +} + + +OMA-LPPe-AGNSS-WideAreaIonoSurfacePerSVlist ::= + SEQUENCE (SIZE (1..64)) OF OMA-LPPe-AGNSS-WideAreaIonoSurfacePerSVelement + +OMA-LPPe-AGNSS-WideAreaIonoSurfacePerSVelement ::= SEQUENCE { + svID SV-ID, + a0 INTEGER (0..8191), + e1 INTEGER (-4096..4095), + n1 INTEGER (-4096..4095), + e2 INTEGER (-4096..4095) OPTIONAL, --Cond SecondOrder + n2 INTEGER (-4096..4095) OPTIONAL, --Cond SecondOrder + en INTEGER (-4096..4095) OPTIONAL, --Cond SecondOrder + ... +} + + +OMA-LPPe-AGNSS-TroposphereModel ::= SEQUENCE { + troposphereDelayList OMA-LPPe-AGNSS-LocalTroposphereDelayList OPTIONAL, + surfaceParametersList OMA-LPPe-AGNSS-LocalSurfaceParametersList OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-LocalTroposphereDelayList ::= SEQUENCE (SIZE(1..8)) OF + OMA-LPPe-AGNSS-LocalTroposphereDelayAreaElement + +OMA-LPPe-AGNSS-LocalTroposphereDelayAreaElement ::= SEQUENCE { + validityArea OMA-LPPe-ValidityArea, + refAltitude INTEGER (-1000..8192) OPTIONAL, + gradientReferencePosition Ellipsoid-Point OPTIONAL, + delayList SEQUENCE (SIZE(1..8)) OF + OMA-LPPe-AGNSS-LocalTroposphereDelayTimeElement, + ... +} + + +OMA-LPPe-AGNSS-LocalTroposphereDelayTimeElement ::= SEQUENCE { + validityPeriod OMA-LPPe-ValidityPeriod, + zh0 INTEGER (0..4095), + eh INTEGER (0..4095) OPTIONAL, + zw0 INTEGER (0..4095) OPTIONAL, + ew INTEGER (0..4095) OPTIONAL, + gN INTEGER (-8192..8191) OPTIONAL, + gE INTEGER (-8192..8191) OPTIONAL, + mappingFunctionParameters OMA-LPPe-AGNSS-MappingFunctionParameters, + ... +} + + +OMA-LPPe-AGNSS-LocalSurfaceParametersList ::= SEQUENCE (SIZE(1..8)) OF + OMA-LPPe-AGNSS-LocalSurfaceParametersAreaElement + +OMA-LPPe-AGNSS-LocalSurfaceParametersAreaElement ::= SEQUENCE { + validityArea OMA-LPPe-ValidityArea, + refAltitude INTEGER (-1000..8192) OPTIONAL, + gradientReferencePosition Ellipsoid-Point OPTIONAL, + parameterList SEQUENCE (SIZE(1..8)) OF + OMA-LPPe-AGNSS-LocalSurfaceParametersTimeElement, + ... +} + +OMA-LPPe-AGNSS-LocalSurfaceParametersTimeElement ::= SEQUENCE { + validityPeriod OMA-LPPe-ValidityPeriod, + pressure INTEGER (-1024..1023), + pressureRate INTEGER (-128..127), + gN-pressure INTEGER (-128..127) OPTIONAL, + gE-pressure INTEGER (-128..127) OPTIONAL, + temperature INTEGER (-64..63) OPTIONAL, + temperatureRate INTEGER (-16..16) OPTIONAL, + gN-temperature INTEGER (-8..7) OPTIONAL, + gE-temperature INTEGER (-8..7) OPTIONAL, + mappingFunctionParameters OMA-LPPe-AGNSS-MappingFunctionParameters, + ... +} + + +OMA-LPPe-AGNSS-MappingFunctionParameters ::= SEQUENCE { + ah INTEGER (0..16383), + bh INTEGER (0..16383) OPTIONAL, + ch INTEGER (0..16383) OPTIONAL, + aw INTEGER (0..16383) OPTIONAL, + bw INTEGER (0..16383) OPTIONAL, + cw INTEGER (0..16383) OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-AltitudeAssistanceList ::= SEQUENCE (SIZE(1..8)) OF OMA-LPPe-AGNSS-AltitudeAssistanceAreaElement + +OMA-LPPe-AGNSS-AltitudeAssistanceAreaElement ::= SEQUENCE { + validityArea OMA-LPPe-ValidityArea, + gradientReferencePosition EllipsoidPointWithAltitudeAndUncertaintyEllipsoid OPTIONAL, + refAltitude INTEGER (-1000..8192) OPTIONAL, + pressureAssistanceList SEQUENCE (SIZE(1..16)) OF OMA-LPPe-AGNSS-PressureAssistanceElement, + ... +} + +OMA-LPPe-AGNSS-PressureAssistanceElement ::= SEQUENCE{ + validityPeriod OMA-LPPe-ValidityPeriod, + pressure INTEGER (-1024..1023), + pressureRate INTEGER (-128..127) OPTIONAL, + gN INTEGER (-128..127) OPTIONAL, + gE INTEGER (-128..127) OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-SolarRadiation ::= SEQUENCE { + solarRadiation INTEGER(1000..2000), + ... +} + + +OMA-LPPe-AGNSS-MechanicsForAllSVs::= SEQUENCE (SIZE(1..64)) OF OMA-LPPe-AGNSS-MechanicsElement + + +OMA-LPPe-AGNSS-MechanicsElement ::= SEQUENCE { + svid SV-ID, + mass INTEGER(1..4095) OPTIONAL, + effectiveReflectivityArea INTEGER(1..511) OPTIONAL, + pco OMA-LPPe-AGNSS-PCOelement OPTIONAL, + svInfo SEQUENCE { + svType OMA-LPPe-AGNSS-SVtype, + svNumber INTEGER(0..1000), + ... + } OPTIONAL, + ... +} + +OMA-LPPe-AGNSS-PCOelement ::= SEQUENCE{ + xOffsetSBF INTEGER(-30000..30000), + yOffsetSBF INTEGER(-30000..30000), + zOffsetSBF INTEGER(-30000..30000), + ... +} + +OMA-LPPe-AGNSS-SVtype ::= ENUMERATED { + gpsIIR, gpsIIRM, gpsIIF, gpsIII, + glonassM, glonassK1, glonassK2, glonassKM, + unknown, + ...} + + + +OMA-LPPe-AGNSS-DCBsForAllSVs ::= SEQUENCE (SIZE(1..64)) OF OMA-LPPe-AGNSS-DCBlistElement + + +OMA-LPPe-AGNSS-DCBlistElement ::= SEQUENCE { + svid SV-ID, + reference SEQUENCE{ + signal GNSS-SignalID, + pd ENUMERATED { pilot, data, notapplicable, ... }, + ... + }, + dcbList OMA-LPPe-AGNSS-DCBlist, + ... +} + +OMA-LPPe-AGNSS-DCBlist ::= SEQUENCE (SIZE(1..16)) OF OMA-LPPe-AGNSS-DCBelement + +OMA-LPPe-AGNSS-DCBelement ::= SEQUENCE { + signal GNSS-SignalID, + pd ENUMERATED{ pilot, data, notapplicable, ... }, + dcb INTEGER (-4096..4095), + ... +} + + +OMA-LPPe-AGNSS-NavModelDegradationModelList ::= SEQUENCE (SIZE(1..64)) OF + OMA-LPPe-AGNSS-NavModelDegradationModelElement + +OMA-LPPe-AGNSS-NavModelDegradationModelElement ::= SEQUENCE { + svid SV-ID, + clockDegradationModel OMA-LPPe-AGNSS-ClockModelDegradationModel, + orbitDegradationModel OMA-LPPe-AGNSS-OrbitModelDegradationModel, + ... +} + +OMA-LPPe-AGNSS-ClockModelDegradationModel ::= SEQUENCE { + clockRMS0 INTEGER(0..31), + clockRMS1 INTEGER(0..7) OPTIONAL, + ... +} + +OMA-LPPe-AGNSS-OrbitModelDegradationModel ::= SEQUENCE { + orbitRMS0 INTEGER(0..31), + orbitRMS1 INTEGER(0..7) OPTIONAL, + ... +} + + + +OMA-LPPe-AGNSS-CCPassistCommonProvide ::= CHOICE { + ccpProvideCommonParameters OMA-LPPe-AGNSS-CCPprovideCommonParameters, + ccpProvideControlParameters OMA-LPPe-AGNSS-CCPprovideControlParameters, + ... +} + +OMA-LPPe-AGNSS-CCPprovideCommonParameters ::= SEQUENCE { + ccpReferenceTime GNSS-SystemTime, + ... +} + +OMA-LPPe-AGNSS-CCPprovideControlParameters ::= SEQUENCE { + ccpSupportArea OMA-LPPe-AGNSS-CCPsupportArea OPTIONAL, + ccpNeighborList OMA-LPPe-AGNSS-CCPreferenceStationList OPTIONAL, + duration OMA-LPPe-Duration OPTIONAL, --Cond FirstOrDurModify + rate INTEGER(1..64) OPTIONAL, --Cond FirstOrRateModify + ccpReferenceStationList OMA-LPPe-AGNSS-CCPreferenceStationList OPTIONAL, --Cond FirstOrRefModify + ... +} + + +OMA-LPPe-AGNSS-CCPsupportArea ::= SEQUENCE { + areaDescription OMA-LPPe-ValidityArea, + signalSupport SEQUENCE (SIZE(1..8)) OF OMA-LPPe-AGNSS-CCPsignalSupport, + ... +} + +OMA-LPPe-AGNSS-CCPsignalSupport ::= SEQUENCE { + gnss GNSS-ID, + signals GNSS-SignalIDs, + ... +} + + +OMA-LPPe-AGNSS-CCPreferenceStationList ::= SEQUENCE (SIZE(0..maxReferenceStations)) OF + OMA-LPPe-AGNSS-CCPreferenceStationElement + +OMA-LPPe-AGNSS-CCPreferenceStationElement ::= SEQUENCE { + referenceStationID OMA-LPPe-AGNSS-CCPreferenceStationID, + referenceStationLocation OMA-LPPe-HighAccuracy3Dposition, + antennaDescription OMA-LPPe-AGNSS-AntennaDescription OPTIONAL, --Cond IfPhysical + ... +} + + +OMA-LPPe-AGNSS-CCPassistGenericProvide ::= SEQUENCE (SIZE(1..maxReferenceStations)) OF + OMA-LPPe-AGNSS-CCPassistGenericProvideElement + +OMA-LPPe-AGNSS-CCPassistGenericProvideElement::= SEQUENCE { + referenceStationID OMA-LPPe-AGNSS-CCPreferenceStationID, + ccpPerSignalList SEQUENCE (SIZE(1..8)) OF OMA-LPPe-AGNSS-CCPperSignalElement, + ... +} + +OMA-LPPe-AGNSS-CCPperSignalElement ::= SEQUENCE { + signal-ID GNSS-SignalID, + ccpPerSVlist SEQUENCE (SIZE(1..64)) OF OMA-LPPe-AGNSS-CCPperSVelement, + ... +} + +OMA-LPPe-AGNSS-CCPperSVelement::= SEQUENCE { + svID SV-ID, + integerCodePhase INTEGER(0..255) OPTIONAL, --Cond IfAvailable + codePhase INTEGER(0.. 14989622), + codePhaseError OMA-LPPe-AGNSS-CodePhaseError OPTIONAL, --Cond IfAvailable + phaseRangeDelta INTEGER(-524288.. 524287), + phaseRangeRMSerror INTEGER(0..127) OPTIONAL, --Cond IfAvailable + lockIndicator BOOLEAN, + ... +} + +OMA-LPPe-AGNSS-CodePhaseError ::= CHOICE { + codePhaseRMSError INTEGER(0..63), + cnr INTEGER(0..255), + ... +} + + +OMA-LPPe-AGNSS-NavModelList ::= SEQUENCE { + coordinateBased OMA-LPPe-AGNSS-NavModel-CoordinateBased OPTIONAL, --Cond ModelId-1 + ... +} + + +OMA-LPPe-AGNSS-NavModel-CoordinateBased ::= SEQUENCE { + fixedInterval SEQUENCE { + beginTime GNSS-SystemTime, + interval INTEGER(1..30), + ... + } OPTIONAL, --Cond FixedInterval + bases SEQUENCE { + baseForPosVel INTEGER(-100000000..100000000) OPTIONAL, + baseForCcRate OMA-LPPe-AGNSS-NavModel-BigNumber OPTIONAL, + ... + } OPTIONAL, --Cond DefaultsNotApplicable + referencedTo ENUMERATED { centerOfMass, antennaPhaseCenter, ... }, + pointList SEQUENCE (SIZE (1..97)) OF OMA-LPPe-AGNSS-NavModel-CoordinateBasedElement, + ... +} + +OMA-LPPe-AGNSS-NavModel-CoordinateBasedElement::= SEQUENCE { + time-of-record GNSS-SystemTime OPTIONAL, --Cond NoFixedInterval + svIdList SEQUENCE (SIZE (1..64)) OF OMA-LPPe-AGNSS-NavModel-PVTelement, + ... +} + +OMA-LPPe-AGNSS-NavModel-PVTelement ::= SEQUENCE { + svID SV-ID, + svClockOffset OMA-LPPe-AGNSS-NavModel-BigNumber, + ecefPositionX OMA-LPPe-AGNSS-NavModel-BigNumber, + ecefPositionY OMA-LPPe-AGNSS-NavModel-BigNumber, + ecefPositionZ OMA-LPPe-AGNSS-NavModel-BigNumber, + clockPosSTD OMA-LPPe-AGNSS-NavModel-STDmatrix, + rateRecord SEQUENCE { + svClockRate OMA-LPPe-AGNSS-NavModel-BigNumber, + ecefVelocityX OMA-LPPe-AGNSS-NavModel-BigNumber, + ecefVelocityY OMA-LPPe-AGNSS-NavModel-BigNumber, + ecefVelocityZ OMA-LPPe-AGNSS-NavModel-BigNumber, + clockRateVelSTD OMA-LPPe-AGNSS-NavModel-STDmatrix, + ... + } OPTIONAL, --Cond RateAvailable + ... +} + +OMA-LPPe-AGNSS-NavModel-BigNumber::= SEQUENCE { + msb INTEGER(-1000000000..1000000000), + lsb INTEGER(1..100) OPTIONAL, + ... +} + +OMA-LPPe-AGNSS-NavModel-STDmatrix ::= SEQUENCE { + e11 INTEGER(0..1000), + e22 INTEGER(0..1000), + e33 INTEGER(0..1000), + e44 INTEGER(0..1000000), + e12 INTEGER(0..10000000) OPTIONAL, --Cond CrossTermAvailable + e13 INTEGER(0..10000000) OPTIONAL, --Cond CrossTermAvailable + e14 INTEGER(0..10000000) OPTIONAL, --Cond CrossTermAvailable + e23 INTEGER(0..10000000) OPTIONAL, --Cond CrossTermAvailable + e24 INTEGER(0..10000000) OPTIONAL, --Cond CrossTermAvailable + e34 INTEGER(0..10000000) OPTIONAL, --Cond CrossTermAvailable + ... +} + + +OMA-LPPe-AGNSS-RequestAssistanceData ::= SEQUENCE { + commonAssistDataReq OMA-LPPe-AGNSS-CommonAssistanceDataReq OPTIONAL, + genericAssistDataReq OMA-LPPe-AGNSS-GenericAssistanceDataReq OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-CommonAssistanceDataReq ::= SEQUENCE { + ionosphericModelReq OMA-LPPe-AGNSS-IonosphericModelReq OPTIONAL, + troposphereModelReq OMA-LPPe-AGNSS-TroposphereModelReq OPTIONAL, + altitudeAssistanceReq OMA-LPPe-AGNSS-AltitudeAssistanceReq OPTIONAL, + solarRadiationRequest OMA-LPPe-AGNSS-SolarRadiationReq OPTIONAL, + ccpRequestControlParameters OMA-LPPe-AGNSS-CCPrequestControlParameters OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-GenericAssistanceDataReq ::= SEQUENCE (SIZE (1..16)) OF + OMA-LPPe-AGNSS-GenericAssistDataReqElement + +OMA-LPPe-AGNSS-GenericAssistDataReqElement ::= SEQUENCE { + gnss-ID GNSS-ID, + waIonoSurfaceReq OMA-LPPe-AGNSS-WaIonoSurfaceRequest OPTIONAL, --Cond WAiono + mechanicsReq OMA-LPPe-AGNSS-MechanicsReq OPTIONAL, + dcbReq OMA-LPPe-AGNSS-DCBreq OPTIONAL, + navModelDegradationModelReq OMA-LPPe-AGNSS-NavModelDegradationModelReq OPTIONAL, + ccpAssistGenericReq OMA-LPPe-AGNSS-CCPassistGenericReq OPTIONAL, --Cond CCPreq + navigationModelReq OMA-LPPe-AGNSS-NavigationModelReq OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-IonosphericModelReq ::= CHOICE { + staticModels SEQUENCE { + ionoreq BIT STRING {klobucharModel (0), + ionoStormWarning (1) } (SIZE (1..8)), + requestBeginTime GNSS-SystemTime OPTIONAL, + duration OMA-LPPe-Duration, + ... + }, + periodicModels SEQUENCE { + waIonoSurface OMA-LPPe-AGNSS-WideAreaIonoSurfaceControlParametersRequest, + ... + }, + ... +} + + +OMA-LPPe-AGNSS-WideAreaIonoSurfaceControlParametersRequest ::= SEQUENCE { + duration OMA-LPPe-Duration OPTIONAL, --Cond FirstOrDurModify + rate INTEGER(1..64) OPTIONAL, --Cond FirstOrRateModify + ... +} + + +OMA-LPPe-AGNSS-TroposphereModelReq ::= SEQUENCE { + troposphereModelReq BIT STRING {delay (0), + surface (1) } (SIZE (1..8)), + supportForMultipleGridPoints BOOLEAN, + requestBeginTime GNSS-SystemTime OPTIONAL, + duration OMA-LPPe-Duration, + ... +} + + +OMA-LPPe-AGNSS-AltitudeAssistanceReq ::= SEQUENCE { + requestBeginTime GNSS-SystemTime OPTIONAL, + duration OMA-LPPe-Duration OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-SolarRadiationReq ::= SEQUENCE { + ... +} + + +OMA-LPPe-AGNSS-WaIonoSurfaceRequest ::= SEQUENCE { + ... +} + + +OMA-LPPe-AGNSS-NavModelDegradationModelReq ::= SEQUENCE { + ... +} + + +OMA-LPPe-AGNSS-DCBreq ::= SEQUENCE { + reference SEQUENCE{ + signal GNSS-SignalID, + pd ENUMERATED { pilot, data, notapplicable, ... }, + ... + } OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-MechanicsReq::= SEQUENCE { + massRequest BOOLEAN, + effectiveReflectivityAreaRequest BOOLEAN, + pcoRequest BOOLEAN, + svInfoRequest BOOLEAN, + ... +} + + +OMA-LPPe-AGNSS-CCPrequestControlParameters ::= SEQUENCE { + ccpSupportAreaRequest NULL OPTIONAL, + ccpNeighborListRequest NULL OPTIONAL, + ccpCommonRequest SEQUENCE { + duration OMA-LPPe-Duration OPTIONAL, --Cond FirstOrDurModify + rate INTEGER(1..64) OPTIONAL, --Cond FirstOrRateModify + refStation CHOICE { + posBasedReferenceStationRequest SEQUENCE { + requestedReferenceStationLocation OMA-LPPe-HighAccuracy3Dposition, + qor OMA-LPPe-AGNSS-QoR, + ... + }, + idBasedReferenceStationRequest OMA-LPPe-AGNSS-ReferenceStationIDlist, + referenceStationKillList OMA-LPPe-AGNSS-ReferenceStationIDlist, + ... + } OPTIONAL, --Cond FirstOrRefModify + ... + }, + ... +} + + +OMA-LPPe-AGNSS-ReferenceStationIDlist ::= SEQUENCE (SIZE(1..maxReferenceStations)) OF + OMA-LPPe-AGNSS-CCPreferenceStationID + +OMA-LPPe-AGNSS-QoR ::= ENUMERATED {m10, km1,km10,km100, ...} + + +OMA-LPPe-AGNSS-CCPassistGenericReq ::= SEQUENCE { + ccpAssist-SignalsReq GNSS-SignalIDs, + ... +} + + +OMA-LPPe-AGNSS-NavigationModelReq ::= SEQUENCE { + navModelID-PrefList SEQUENCE (SIZE(1..8)) OF INTEGER(1..8) OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-ProvideLocationInformation ::= SEQUENCE { + highAccuracyReferenceTime GNSS-SystemTime OPTIONAL, --Cond HighAccuracy + highAccuracyMeasurements OMA-LPPe-AGNSS-HAgnssProvide OPTIONAL, + ionosphereMeasurements OMA-LPPe-AGNSS-IonosphereMeasurements OPTIONAL, + localSurfaceMeasurements OMA-LPPe-AGNSS-LocalSurfaceMeasurements OPTIONAL, + error OMA-LPPe-AGNSS-Error OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-HAgnssProvide ::= CHOICE { + controlParameters SEQUENCE { + duration OMA-LPPe-Duration, + rate INTEGER(1..64), + antennaDescription OMA-LPPe-AGNSS-AntennaDescription OPTIONAL, --Cond HAantenna + ... + }, + measurements SEQUENCE { + position EllipsoidPointWithAltitudeAndUncertaintyEllipsoid OPTIONAL, + --Cond NotForbidden + referenceTime GNSS-SystemTime, + localPressure SEQUENCE { + pressure INTEGER(-1024..1023), + pressureUncertainty INTEGER(0..127), + ... + } OPTIONAL, --Cond HApressure + antennaOrientation OMA-LPPe-Orientation OPTIONAL, --Cond HAantOrientation + signalMeasurements SEQUENCE (SIZE(1..16)) OF OMA-LPPe-AGNSS-HAgnssMeasurementElement, + ... + }, + ... +} + +OMA-LPPe-AGNSS-HAgnssMeasurementElement::= SEQUENCE { + gnss-ID GNSS-ID, + haGNSSperSignalList SEQUENCE (SIZE(1..8)) OF OMA-LPPe-HAgnssPerSignalElement, + ... +} + +OMA-LPPe-HAgnssPerSignalElement ::= SEQUENCE { + signal-ID GNSS-SignalID, + haGNSSperSVlist SEQUENCE (SIZE(1..64)) OF OMA-LPPe-HAgnssPerSVelement, + ... +} + + +OMA-LPPe-HAgnssPerSVelement ::= SEQUENCE { + svID SV-ID, + integerCodePhase INTEGER (0..255) OPTIONAL, --Cond IfAvailable + codePhase INTEGER (0..14989622), + codePhaseRMSError INTEGER (0..63), + multipathDetection ENUMERATED {low, + moderate, + high, + notMeasured, + ...}, + cnr INTEGER(0..255), + adr INTEGER (0..536870911), + adrRMSerror INTEGER (0..127), + lockIndicator BOOLEAN, + ... +} + + +OMA-LPPe-AGNSS-IonosphereMeasurements ::= SEQUENCE { + gnssTime GNSS-SystemTime, + position EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, + tecPerSV OMA-LPPe-AGNSS-TECPerSV OPTIONAL, --Cond TecPerSV + tecAtZenith OMA-LPPe-AGNSS-TECAtZenith OPTIONAL, --Cond ZenithTec + ... +} + +OMA-LPPe-AGNSS-TECPerSV ::= SEQUENCE (SIZE(1..64)) OF OMA-LPPe-AGNSS-TECPerSVElement + +OMA-LPPe-AGNSS-TECPerSVElement ::= SEQUENCE { + azimuth INTEGER(0..359), + elevation INTEGER(0..90), + tecValue INTEGER(0..511), + tecUncertainty INTEGER(0..63), + ... +} + +OMA-LPPe-AGNSS-TECAtZenith ::= SEQUENCE { + tecValueAtZenith INTEGER(0..511), + tecUncertaintyAtZenith INTEGER(0..63), + ... +} + + +OMA-LPPe-AGNSS-LocalSurfaceMeasurements ::= SEQUENCE { + gnssTime GNSS-SystemTime, + position EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, + pressure INTEGER(-1024..1023), + pressureUncertainty INTEGER(0..127), + temperatureMeasurement SEQUENCE { + temperature INTEGER(-64..63) OPTIONAL, + temperatureUncertainty INTEGER(0..7) OPTIONAL, + ... + } OPTIONAL, --Cond TemperatureAvailable + ... +} + + +OMA-LPPe-AGNSS-RequestLocationInformation ::= SEQUENCE { + positioningInstructions OMA-LPPe-AGNSS-PositioningInstructions OPTIONAL, + ionosphereMeasurementsReq BIT STRING {tecPerSV(0), + zenithTEC(1) }(SIZE(1..8)) OPTIONAL, + localSurfaceMeasurementReq OMA-LPPe-AGNSS-LocalSurfaceMeasurementReq OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-PositioningInstructions ::= SEQUENCE { + highAccuracyMethodRequested BOOLEAN, + haGNSSreq OMA-LPPe-AGNSS-HAgnssRequestControlParameters OPTIONAL, --Cond HAgnssReq + ..., + extUncertRange BOOLEAN OPTIONAL +} + + +OMA-LPPe-AGNSS-LocalSurfaceMeasurementReq ::= SEQUENCE { + ... +} + + +OMA-LPPe-AGNSS-HAgnssRequestControlParameters ::= SEQUENCE { + duration OMA-LPPe-Duration OPTIONAL, --Cond FirstOrModify + rate INTEGER(1..63) OPTIONAL, --Cond FirstOrModify + antennaInformationReq ENUMERATED {antennaDescriptionOnly, + antennaDescriptionAndOrientation, + ...} OPTIONAL, + pressureInformationReq BOOLEAN, --Cond FirstOrModify + signalReqList SEQUENCE (SIZE(1..16)) OF + OMA-LPPe-AGNSS-HAgnssSignalReqElement OPTIONAL, --Cond First + ... +} + +OMA-LPPe-AGNSS-HAgnssSignalReqElement ::= SEQUENCE { + gnssID GNSS-ID, + signals GNSS-SignalIDs, + ... +} + + + +OMA-LPPe-AGNSS-ProvideCapabilities ::= SEQUENCE { + assistanceDataSupportList OMA-LPPe-AGNSS-AssistanceDataSupportList OPTIONAL, + environmentObservationSupportList OMA-LPPe-AGNSS-EnvironmentObservationSupportList OPTIONAL, + haGNSSsupport OMA-LPPe-AGNSS-HAgnssSupport OPTIONAL, + ... +} + +OMA-LPPe-AGNSS-AssistanceDataSupportList ::= SEQUENCE { + commonAssistanceDataSupport OMA-LPPe-AGNSS-CommonAssistanceDataSupport, + genericAssistanceDataSupport OMA-LPPe-AGNSS-GenericAssistanceDataSupport, + ... +} + + +OMA-LPPe-AGNSS-EnvironmentObservationSupportList ::= SEQUENCE{ + ionosphereMeasurementSupport BIT STRING {tecPerSVsupport(0), + zenithTecSupport(1) } (SIZE (1..8)), + pressureMeasurementSupported BOOLEAN, + temperatureMeasurementSupported BOOLEAN, + ... +} + + + +OMA-LPPe-AGNSS-CommonAssistanceDataSupport ::= SEQUENCE { + ionosphericModelSupport OMA-LPPe-AGNSS-IonosphericModelSupport OPTIONAL, --Cond IonoSupport + troposphereModelSupport OMA-LPPe-AGNSS-TroposphereModelSupport OPTIONAL, --Cond TropoSupport + altitudeAssistanceSupport OMA-LPPe-AGNSS-AltitudeAssistanceSupport OPTIONAL, --Cond AltAssistSupport + solarRadiationSupport OMA-LPPe-AGNSS-SolarRadiationSupport OPTIONAL, --Cond SolarRadiationSupport + ccpSupport OMA-LPPe-AGNSS-CCPsupport OPTIONAL, --CCPsupport + ... +} + + +OMA-LPPe-AGNSS-IonosphericModelSupport ::= SEQUENCE { + ionoModel BIT STRING { localKlobuchar (0), + ionoStormWarning (1), + wideAreaIonoSurface (2) } (SIZE (1..8)), + ... +} + + +OMA-LPPe-AGNSS-TroposphereModelSupport ::= SEQUENCE { + tropoModel BIT STRING { localTroposphereDelay (0), + surfaceParameters (1) } (SIZE (1..8)), + supportForMultipleGridPoints BOOLEAN, + ... +} + + +OMA-LPPe-AGNSS-AltitudeAssistanceSupport ::= SEQUENCE { + ... +} + + +OMA-LPPe-AGNSS-SolarRadiationSupport ::= SEQUENCE { + ... +} + + +OMA-LPPe-AGNSS-CCPsupport ::= SEQUENCE { + supportAreaAssistanceSupported BOOLEAN, + multiReferenceStationSupported BOOLEAN, + ... +} + + +OMA-LPPe-AGNSS-GenericAssistanceDataSupport ::= + SEQUENCE (SIZE (1..16)) OF OMA-LPPe-AGNSS-GenericAssistDataSupportElement + +OMA-LPPe-AGNSS-GenericAssistDataSupportElement ::= SEQUENCE { + gnss-ID GNSS-ID, + mechnanicsSupport OMA-LPPe-AGNSS-MechanicsSupport OPTIONAL, + --Cond MechSupport + dcbSupport OMA-LPPe-AGNSS-DCBsupport OPTIONAL, + --Cond DCBsupport + navModelAccuracyModelDegradationSupport OMA-LPPe-AGNSS-NavModelAccuracyModelDegradationSupport OPTIONAL, --Cond NavModDegrSupport + ccpAssistanceSuppport GNSS-SignalIDs OPTIONAL, --Cond CCPsupport + navModelSupport OMA-LPPe-AGNSS-NavModelSupport OPTIONAL, --Cond NavModSupport + ... +} + + +OMA-LPPe-AGNSS-MechanicsSupport ::= SEQUENCE { + ... +} + + +OMA-LPPe-AGNSS-DCBsupport ::= SEQUENCE { + ... +} + + +OMA-LPPe-AGNSS-NavModelAccuracyModelDegradationSupport ::= SEQUENCE { + ... +} + + +OMA-LPPe-AGNSS-NavModelSupport ::= SEQUENCE { + navModelSupport SEQUENCE (SIZE(1..8)) OF INTEGER(1..8) OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-HAgnssSupport ::= SEQUENCE { + modeSupport BIT STRING {ueBased (0), ueAssisted (1) } (SIZE(2)), + haGNSSpressureInformationSupport BOOLEAN, + haGNSSantennaInformationSupport BIT STRING { antennaDescriptionSupported (0), + antennaOrientationSupported (1) + } (SIZE(8)), + + haGNSSperGNSSsupport SEQUENCE (SIZE(1..8)) OF OMA-LPPe-AGNSS-HAgnssPerGNSSsupport, + ... +} + +OMA-LPPe-AGNSS-HAgnssPerGNSSsupport::= SEQUENCE { + gnss-ID GNSS-ID, + haGNSSsignalSupport GNSS-SignalIDs, + ... +} + + +OMA-LPPe-AGNSS-RequestCapabilities ::= SEQUENCE { + assistanceDataSupportListReq NULL OPTIONAL, + environmentObservationSupportListReq NULL OPTIONAL, + haGNSSsupportReq NULL OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-Error ::= CHOICE { + agnss-locationServerErrorCauses OMA-LPPe-AGNSS-LocationServerErrorCauses, + agnss-targetDeviceErrorCauses OMA-LPPe-AGNSS-TargetDeviceErrorCauses, + ... +} + + +OMA-LPPe-AGNSS-LocationServerErrorCauses ::= SEQUENCE { + waIonoErrorCauses ENUMERATED { undefined, + waIonoNotSupportedByServer, + waIonoNotSupportedInTargetArea, + waIonoNotSupportedForAnyRequestedGNSS, + ...} OPTIONAL, + ccpErrorCauses ENUMERATED { undefined, + ccpNotSupportedByServer, + ccpNotSupportedInTargetArea, + ccpNotSupportedForAnyRequestedSignal, + ccpQorCannotBeMet, + ccpUnableToModifyControlParameters, + ccpMultiReferenceStationNotSupported, + ccpNeighborListNotSupported, + ccpSupportAreaAssistanceNotSupported, + ...} OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-TargetDeviceErrorCauses ::= SEQUENCE { + highAccuracyErrorCauses ENUMERATED { undefined, + highAccuracyMethodNotSupported, + ...} OPTIONAL, + ionosphereMeasurementErrorCauses ENUMERATED { undefined, + ionosphereMeasurementsNotSupported, + ionosphereMeasurementsNotAvailable, + ...} OPTIONAL, + environmentObservationErrorCauses ENUMERATED { undefined, + surfaceMeasurementsNotSupported, + surfaceMeasurementsNotAvailable, + ...} OPTIONAL, + haGNSSerrorCauses ENUMERATED { undefined, + haGNSSnotSupportedByTarget, + haGNSSunavailableForAllRequestedSignals, + haGNSSantennaInformationNotSupported, + haGNSSantennaInformationNotAvailable, + haGNSSpressureInformationNotSupported, + haGNSSpressureInformationNotAvailable, + haGNSSunableToModifyControlParameters, + ...} OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-CCPreferenceStationID ::= SEQUENCE { + stationID INTEGER(0..65535), + ... +} + +maxReferenceStations INTEGER ::= 8 + + +OMA-LPPe-AGNSS-AntennaDescription ::= SEQUENCE { + antennaDescription CHOICE { + igsAntennaName OMA-LPPe-CharArray, + proprietaryName OMA-LPPe-CharArray, + ... + }, + antennaSetupID INTEGER(0..255) OPTIONAL, + antennaSerialNumber OMA-LPPe-CharArray OPTIONAL, + ... +} + + +OMA-LPPe-AGNSS-Abort::= SEQUENCE { + targetDeviceAbortCauses SEQUENCE { + ccpAbort ENUMERATED { undefined, + ccpNotSupported, + ccpNotSupportedForProvidedSignals, + ... } OPTIONAL, + waIonoAbort ENUMERATED { undefined, + waIonoNotSupported, + waIonoNotSupportedForProvidedGNSSs, + ... } OPTIONAL, + ... + } OPTIONAL, + ... +} + + +OMA-LPPe-OTDOA-ProvideAssistanceData ::= SEQUENCE { + otdoa-ReferenceCellInfo OMA-LPPe-OTDOA-ReferenceCellInfo OPTIONAL, + otdoa-NeighbourCellInfo OMA-LPPe-OTDOA-NeighbourCellInfoList OPTIONAL, + otdoa-Error OMA-LPPe-OTDOA-Error OPTIONAL, + ... +} + + +OMA-LPPe-OTDOA-ReferenceCellInfo ::= SEQUENCE { + referenceCellInfo OTDOA-ReferenceCellInfo, + positionCalculationInfoRef OMA-LPPe-OTDOA-PositionCalculationInfoRef, + ... +} + + +OMA-LPPe-OTDOA-PositionCalculationInfoRef ::= SEQUENCE { + systemFrameNumber BIT STRING (SIZE(10)) OPTIONAL, --Cond driftRate + rtdReferenceStd OMA-LPPe-OTDOA-RTDquality OPTIONAL, + cellLocation SEQUENCE { + reference-point OMA-LPPe-ReferencePoint OPTIONAL, + relative-location OMA-LPPe-RelativeLocation OPTIONAL, + ... + }, + femtoCellInfo SEQUENCE { + location-reliability INTEGER(1..100) OPTIONAL, + ... + } OPTIONAL, --Cond femto + + ... +} + + +OMA-LPPe-OTDOA-NeighbourCellInfoList ::= SEQUENCE (SIZE (1..maxFreqLayers)) OF + OMA-LPPe-OTDOA-NeighbourFreqCellInfoList + +-- Added from LPP.asn +maxFreqLayers INTEGER ::= 3 + +OMA-LPPe-OTDOA-NeighbourFreqCellInfoList ::= SEQUENCE { + neighbourCellInfoList-eNB SEQUENCE (SIZE (1..maxLTEeNBs)) OF + OMA-LPPe-OTDOA-NeighbourCellInfoElement-eNB OPTIONAL, + neighbourCellInfoList-HeNB SEQUENCE (SIZE (1..maxLTEHeNBs)) OF + OMA-LPPe-OTDOA-NeighbourCellInfoElement-HeNB OPTIONAL, + ... +} + + +OMA-LPPe-OTDOA-NeighbourCellInfoElement-eNB ::= SEQUENCE { + relative-Location OMA-LPPe-RelativeLocation, + otdoa-eNB-CellDataList SEQUENCE (SIZE (1..maxLTEMacroCells)) OF OMA-LPPe-OTDOA-CellData, + ... +} + + +OMA-LPPe-OTDOA-NeighbourCellInfoElement-HeNB ::= SEQUENCE { + relative-Location OMA-LPPe-RelativeLocation, + location-reliability INTEGER (1..100) OPTIONAL, + otdoa-HeNB-CellDataList OMA-LPPe-OTDOA-CellData, + ... +} + + +OMA-LPPe-OTDOA-CellData ::= SEQUENCE { + otdoa-NeighbourCellInfoElement OTDOA-NeighbourCellInfoElement, + rtdInfo SEQUENCE { + subframeOffset INTEGER(0..10229) OPTIONAL, + fineRTD INTEGER(0..99999), + fineRTDstd OMA-LPPe-OTDOA-RTDquality, + fineRTDdriftRate INTEGER(-100..100) OPTIONAL, + ... + }, + ... +} + + +OMA-LPPe-OTDOA-RTDquality ::= SEQUENCE { + resolution ENUMERATED { ns-5, ns-10, ns-50, ns-100, ... }, + quality INTEGER (0..127), + ... +} + + +OMA-LPPe-OTDOA-RequestAssistanceData ::= SEQUENCE { + lteCell SEQUENCE { + physCellId INTEGER(0..503), + eARFCN ARFCN-ValueEUTRA, + ecgi CellGlobalIdEUTRA-AndUTRA OPTIONAL, + ..., + eARFCN-ext ARFCN-ValueEUTRA-v9a0 OPTIONAL -- Cond EARFCN-ext + }, + requestedCells BIT STRING { + eNBs (0), + heNBs (1) } (SIZE (1..8)), + ... +} + + +OMA-LPPe-OTDOA-ProvideLocationInformation ::= SEQUENCE { + otdoaLocationInformation OMA-LPPe-OTDOA-LocationInformation OPTIONAL, + otdoaError OMA-LPPe-OTDOA-Error OPTIONAL, + ... +} + + +OMA-LPPe-OTDOA-LocationInformation ::= SEQUENCE { + systemFrameNumber BIT STRING (SIZE (10)), + physCellId INTEGER (0..503), + cellGlobalId CellGlobalIdEUTRA-AndUTRA OPTIONAL, + ... +} + + +OMA-LPPe-OTDOA-RequestLocationInformation ::= SEQUENCE { + assistanceAvailability BOOLEAN, + ... +} + + +OMA-LPPe-OTDOA-ProvideCapabilities ::= SEQUENCE { + eNodeB-AD-sup SEQUENCE { ... } OPTIONAL, + home-eNodeB-AD-sup SEQUENCE { ... } OPTIONAL, + ... +} + + +OMA-LPPe-OTDOA-RequestCapabilities ::= SEQUENCE { + ... +} + + +OMA-LPPe-OTDOA-Error ::= CHOICE { + locationServerErrorCauses OMA-LPPe-OTDOA-LocationServerErrorCauses, + targetDeviceErrorCauses OMA-LPPe-OTDOA-TargetDeviceErrorCauses, + ... +} + + +OMA-LPPe-OTDOA-LocationServerErrorCauses ::= SEQUENCE { + cause ENUMERATED { undefined, + locationCalculationAssistanceDataNotSupported, + locationCalculationAssistanceDataSupportedButCurrentlyNotAvailable, + ... + }, + ... +} + + +OMA-LPPe-OTDOA-TargetDeviceErrorCauses ::= SEQUENCE { + cause ENUMERATED { undefined, + there-were-not-enough-signals-received-for-ueBased-otdoa, + location-calculation-assistance-data-missing, + ... + }, + ... +} + + +OMA-LPPe-EOTD-ProvideAssistanceData ::= SEQUENCE { + referenceBTS OMA-LPPe-EOTD-ReferenceBTSForAssistance OPTIONAL, --Cond NotError + msrAssistDataList OMA-LPPe-EOTD-MsrAssistDataList OPTIONAL, + systemInfoAssistDataList OMA-LPPe-EOTD-SystemInfoAssistDataList OPTIONAL, + eotdError OMA-LPPe-EOTD-Error OPTIONAL, + ... +} + + +OMA-LPPe-EOTD-ReferenceBTSForAssistance ::= SEQUENCE { + bsicAndCarrier OMA-LPPe-CellNonUniqueIDGERAN, + timeSlotScheme OMA-LPPe-EOTD-TimeSlotScheme, + btsPosition CHOICE { + ellipsoidPoint Ellipsoid-Point, + ellipsoidPointWithAltitudeAndUncertaintyEllipsoid EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, + ... + } OPTIONAL, --Cond UE-based + ... +} + + +OMA-LPPe-EOTD-MsrAssistDataList ::= SEQUENCE (SIZE (1..15)) OF OMA-LPPe-EOTD-MsrAssistBTS + +OMA-LPPe-EOTD-MsrAssistBTS ::= SEQUENCE { + bsicAndCarrier OMA-LPPe-CellNonUniqueIDGERAN, + multiFrameOffset OMA-LPPe-EOTD-MultiFrameOffset, + timeSlotScheme OMA-LPPe-EOTD-TimeSlotScheme, + roughRTD OMA-LPPe-EOTD-RoughRTD, + expectedOTD OMA-LPPe-EOTD-ExpectedOTD, + calcAssistanceBTS OMA-LPPe-EOTD-CalcAssistanceBTS OPTIONAL, --Cond UE-based + ... +} + + +OMA-LPPe-EOTD-SystemInfoAssistDataList ::= SEQUENCE (SIZE (1..32)) OF OMA-LPPe-EOTD-SystemInfoAssistBTS + +OMA-LPPe-EOTD-SystemInfoAssistBTS ::= CHOICE{ + notPresent NULL, + present OMA-LPPe-EOTD-AssistBTSData +} + +OMA-LPPe-EOTD-AssistBTSData ::= SEQUENCE { + bsic INTEGER(0..63), + multiFrameOffset OMA-LPPe-EOTD-MultiFrameOffset, + timeSlotScheme OMA-LPPe-EOTD-TimeSlotScheme, + roughRTD OMA-LPPe-EOTD-RoughRTD, + expectedOTD OMA-LPPe-EOTD-ExpectedOTD OPTIONAL, + calcAssistanceBTS OMA-LPPe-EOTD-CalcAssistanceBTS OPTIONAL, --Cond UE-based + ... +} + + +OMA-LPPe-EOTD-CalcAssistanceBTS ::= SEQUENCE { + fineRTD OMA-LPPe-EOTD-FineRTD, + relativePos OMA-LPPe-EOTD-relativePos, + ... +} + +OMA-LPPe-EOTD-relativePos ::= SEQUENCE { + relativeNorth OMA-LPPe-EOTD-RelDistance, + relativeEast OMA-LPPe-EOTD-RelDistance, + relativeAlt OMA-LPPe-EOTD-RelativeAlt OPTIONAL, + ... +} + +OMA-LPPe-EOTD-FineRTD ::= INTEGER(0..255) + +OMA-LPPe-EOTD-RelDistance ::= INTEGER(-200000..200000) + +OMA-LPPe-EOTD-RelativeAlt ::= INTEGER(-4000..4000) + + +OMA-LPPe-EOTD-RequestAssistanceData ::= SEQUENCE { + eotdAssistanceReq BIT STRING { ueAssisted (0), ueBased (1) }, + ... +} + + +OMA-LPPe-EOTD-ProvideLocationInformation ::= SEQUENCE { + eotdMsrElement OMA-LPPe-EOTD-MsrElement OPTIONAL, + eotdError OMA-LPPe-EOTD-Error OPTIONAL, + ... +} + + + +OMA-LPPe-EOTD-MsrElement ::= SEQUENCE { + refFrameNumber INTEGER(0..42431), + referenceTimeSlot OMA-LPPe-EOTD-ModuloTimeSlot, + toaMeasurementsOfRef OMA-LPPe-EOTD-TOA-MeasurementsOfRef OPTIONAL, + stdResolution BIT STRING(SIZE(2)), + taCorrection INTEGER(0..960) OPTIONAL, + otd-FirstSetMsrs SEQUENCE (SIZE(1..15)) OF OMA-LPPe-EOTD-MeasurementWithID OPTIONAL, + ... +} + + +OMA-LPPe-EOTD-TOA-MeasurementsOfRef ::= SEQUENCE { + refQuality BIT STRING(SIZE(5)), + numOfMeasurements BIT STRING(SIZE(3)), + ... +} + + + +OMA-LPPe-EOTD-MeasurementWithID ::= SEQUENCE { + neighborIdentity OMA-LPPe-EOTD-NeighborIdentity, + nborTimeSlot OMA-LPPe-EOTD-ModuloTimeSlot, + eotdQuality OMA-LPPe-EOTD-EOTDQuality, + otdValue OMA-LPPe-EOTD-OTDValue, + ... +} + + +OMA-LPPe-EOTD-NeighborIdentity ::= CHOICE { + bsicAndCarrier OMA-LPPe-CellNonUniqueIDGERAN, + ci OMA-LPPe-EOTD-CellID, + multiFrameCarrier OMA-LPPe-EOTD-MultiFrameCarrier, + requestIndex OMA-LPPe-EOTD-RequestIndex, + systemInfoIndex OMA-LPPe-EOTD-SystemInfoIndex, + ciAndLac OMA-LPPe-CellLocalIdGERAN, + ... +} + +OMA-LPPe-EOTD-EOTDQuality ::= SEQUENCE { + nbrOfMeasurements BIT STRING(SIZE(3)), + stdOfEOTD BIT STRING(SIZE(5)), + ... +} + +OMA-LPPe-EOTD-OTDValue ::= INTEGER (0..39999) + +OMA-LPPe-EOTD-CellID ::= INTEGER (0..65535) + +OMA-LPPe-EOTD-RequestIndex ::= INTEGER (1..16) +OMA-LPPe-EOTD-SystemInfoIndex ::= INTEGER (1..32) + +OMA-LPPe-EOTD-MultiFrameCarrier ::= SEQUENCE { + bcchCarrier OMA-LPPe-EOTD-BCCHCarrier, + multiFrameOffset OMA-LPPe-EOTD-MultiFrameOffset, + ... +} + +OMA-LPPe-EOTD-BCCHCarrier ::= INTEGER (0..1023) + + +OMA-LPPe-EOTD-RequestLocationInformation ::= SEQUENCE { + ... +} + + +OMA-LPPe-EOTD-ProvideCapabilities ::= SEQUENCE { + eotdSupport BIT STRING{ ueBased(0), ueAssisted(1) }, + ... +} + + +OMA-LPPe-EOTD-RequestCapabilities ::= SEQUENCE { + ... +} + + +OMA-LPPe-EOTD-Error ::= CHOICE { + locationServerErrorCauses OMA-LPPe-EOTD-LocationServerErrorCauses, + targetDeviceErrorCauses OMA-LPPe-EOTD-TargetDeviceErrorCauses, + ... +} + + +OMA-LPPe-EOTD-LocationServerErrorCauses ::= SEQUENCE { + cause ENUMERATED{ undefined, + assistanceDataForUEbasedEOTDnotAvailable, + assistanceDataForUEassistedEOTDnotAvailable, + ...}, + ... +} + + +OMA-LPPe-EOTD-TargetDeviceErrorCauses ::= SEQUENCE { + cause ENUMERATED{ undefinedError, + notEnoughBTsforEOTD, + assistanceDataMissing, + referenceCellNotServingCell, + eotdMeasurementsNotSupported, + eotdMeasurementsNotAvailable, + uebasedEOTDnotSupported, + ...}, + ... +} + + +OMA-LPPe-EOTD-TimeSlotScheme ::= ENUMERATED { + equalLength (0), + variousLength (1) +} + + +OMA-LPPe-EOTD-MultiFrameOffset ::= INTEGER (0..51) + + +OMA-LPPe-EOTD-RoughRTD ::= INTEGER (0..1250) + + +OMA-LPPe-EOTD-ExpectedOTD ::= SEQUENCE { + expectedOTD INTEGER(0..1250), + expOTDUncertainty INTEGER(0..7), + ... +} + + +OMA-LPPe-EOTD-ModuloTimeSlot ::= INTEGER(0..3) + + +OMA-LPPe-OTDOA-UTRA-ProvideAssistanceData ::= SEQUENCE { + referenceCellInfo OMA-LPPe-OTDOA-UTRA-ReferenceCellInfo OPTIONAL, + neigborCellList OMA-LPPe-OTDOA-UTRA-NeighborCellList OPTIONAL, + otdoaUtraError OMA-LPPe-OTDOA-UTRA-Error OPTIONAL, + ... +} + + +OMA-LPPe-OTDOA-UTRA-ReferenceCellInfo ::= SEQUENCE { + sfn INTEGER(0..4095) OPTIONAL, + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-info OMA-LPPe-OTDOA-UTRA-PrimaryCPICH-Info + }, + tdd SEQUENCE { + cellAndChannelIdentity OMA-LPPe-OTDOA-UTRA-CellAndChannelIdentity + } + }, + frequencyInfo OMA-LPPe-UTRA-FrequencyInfo OPTIONAL, + refPosAssist OMA-LPPe-OTDOA-UTRA-RefPosAssist OPTIONAL, --Cond UE-based + ipdl-parameters OMA-LPPe-OTDOA-UTRA-IPDL-Parameters OPTIONAL, + ... +} + + + +OMA-LPPe-OTDOA-UTRA-RefPosAssist ::= SEQUENCE { + cellPosition CHOICE { + ellipsoidPoint Ellipsoid-Point, + ellipsoidPointWithAltitude EllipsoidPointWithAltitude, + ... + }, + roundTripTime INTEGER (0..32766) OPTIONAL, + roundTripTimeExtension INTEGER (0..70274) OPTIONAL, + ... +} + + +OMA-LPPe-OTDOA-UTRA-NeighborCellList ::= SEQUENCE (SIZE (1..utra-maxCellMeas)) OF + OMA-LPPe-OTDOA-UTRA-NeighborCellInfo + +OMA-LPPe-OTDOA-UTRA-NeighborCellInfo ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + primaryCPICH-info OMA-LPPe-OTDOA-UTRA-PrimaryCPICH-Info + }, + tdd SEQUENCE { + cellAndChannelIdentity OMA-LPPe-OTDOA-UTRA-CellAndChannelIdentity + } + }, + frequencyInfo OMA-LPPe-UTRA-FrequencyInfo OPTIONAL, + ipdl-parameters OMA-LPPe-OTDOA-UTRA-IPDL-Parameters OPTIONAL, + sfn-SFN-relTimeDifference OMA-LPPe-OTDOA-UTRA-SFN-SFN-RelTimeDifference1, + sfn-offsetValidity OMA-LPPe-OTDOA-UTRA-SFN-OffsetValidity OPTIONAL, + sfn-SFN-drift OMA-LPPe-OTDOA-UTRA-SFN-SFN-Drift OPTIONAL, + searchWindowSize OMA-LPPe-OTDOA-UTRA-SearchWindowSize, + positioningAssistance OMA-LPPe-OTDOA-UTRA-PositioningAssistance OPTIONAL, --Cond UEbased + ... +} + +OMA-LPPe-OTDOA-UTRA-SFN-SFN-RelTimeDifference1 ::= SEQUENCE { + sfn-offset INTEGER (0..4095), + sfn-sfn-relTimeDifference INTEGER (0..38399) +} + +OMA-LPPe-OTDOA-UTRA-PositioningAssistance ::= SEQUENCE { + relativeNorth INTEGER (-20000..20000), + relativeEast INTEGER (-20000..20000), + relativeAltitude INTEGER (-4000..4000) OPTIONAL, + fineSFN-SFN OMA-LPPe-OTDOA-UTRA-fineSFN-SFN, + roundTripTime INTEGER (0..32766) OPTIONAL, + roundTripTimeExtension INTEGER (0..70274) OPTIONAL, + ... +} + +utra-maxCellMeas INTEGER ::= 32 + +OMA-LPPe-OTDOA-UTRA-SFN-OffsetValidity ::= ENUMERATED { false } + +OMA-LPPe-OTDOA-UTRA-SFN-SFN-Drift ::= ENUMERATED { + sfnsfndrift0, sfnsfndrift1, sfnsfndrift2, + sfnsfndrift3, sfnsfndrift4, sfnsfndrift5, + sfnsfndrift8, sfnsfndrift10, sfnsfndrift15, + sfnsfndrift25, sfnsfndrift35, sfnsfndrift50, + sfnsfndrift65, sfnsfndrift80, sfnsfndrift100, + sfnsfndrift-1, sfnsfndrift-2, sfnsfndrift-3, + sfnsfndrift-4, sfnsfndrift-5, sfnsfndrift-8, + sfnsfndrift-10, sfnsfndrift-15, sfnsfndrift-25, + sfnsfndrift-35, sfnsfndrift-50, sfnsfndrift-65, + sfnsfndrift-80, sfnsfndrift-100, + ... } + +OMA-LPPe-OTDOA-UTRA-SearchWindowSize ::= ENUMERATED { c20, c40, c80, c160, c320, + c640, c1280, moreThan1280, ... } + +OMA-LPPe-OTDOA-UTRA-fineSFN-SFN ::= INTEGER (0..15) + + +OMA-LPPe-OTDOA-UTRA-IPDL-Parameters ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + ip-spacing OMA-LPPe-OTDOA-UTRA-IP-Spacing, + ip-length OMA-LPPe-OTDOA-UTRA-IP-Length, + ip-Offset INTEGER (0..9), + seed INTEGER (0..63), + burstModeParameters OMA-LPPe-OTDOA-UTRA-BurstModeParameters OPTIONAL + }, + tdd SEQUENCE { + ip-spacing-tdd OMA-LPPe-OTDOA-UTRA-IP-Spacing-TDD, + ip-slot INTEGER (0..14), + ip-start INTEGER (0..4095), + ip-PCCPCH OMA-LPPe-OTDOA-UTRA-IP-PCCPCH OPTIONAL, + burstModeParameters OMA-LPPe-OTDOA-UTRA-BurstModeParameters + } + } +} + +OMA-LPPe-OTDOA-UTRA-IP-Spacing ::= ENUMERATED { e5, e7, e10, e15, e20, e30, e40, e50} + +OMA-LPPe-OTDOA-UTRA-IP-Length ::= ENUMERATED {ipl5, ipl10} + +OMA-LPPe-OTDOA-UTRA-IP-Spacing-TDD ::= ENUMERATED { e30, e40, e50, e70, e100 } + +OMA-LPPe-OTDOA-UTRA-IP-PCCPCH ::= BOOLEAN + +OMA-LPPe-OTDOA-UTRA-BurstModeParameters ::= SEQUENCE { + burstStart INTEGER (0..15), + burstLength INTEGER (10..25), + burstFreq INTEGER (1..16) +} + + +OMA-LPPe-OTDOA-UTRA-RequestAssistanceData ::= SEQUENCE { + otdoaUtraAssistanceReq BIT STRING { ueAssisted (0), ueBased (1) } (SIZE(1..8)), + ... +} + + +OMA-LPPe-OTDOA-UTRA-ProvideLocationInformation ::= SEQUENCE { + otdoaUtraMeasurement OMA-LPPe-OTDOA-UTRA-Measurement OPTIONAL, + otdoaUtraError OMA-LPPe-OTDOA-UTRA-Error OPTIONAL, + timeStampData OMA-LPPe-OTDOA-UTRA-TimeStampData OPTIONAL, --Cond UE-based + ... +} + + +OMA-LPPe-OTDOA-UTRA-Measurement ::= SEQUENCE { + sfn INTEGER (0..4095), + modeSpecificInfoMeas CHOICE { + fdd SEQUENCE { + referenceCellIdentity OMA-LPPe-OTDOA-UTRA-PrimaryCPICH-Info, + ue-RX-TX-TimeDifferenceType2Info OMA-LPPe-OTDOA-UTRA-UE-RX-TX-TimeDifferenceType2Info, + ... + }, + tdd SEQUENCE { + cellAndChannelIdentity OMA-LPPe-OTDOA-UTRA-CellAndChannelIdentity, + ... + } + }, + neighborList OMA-LPPe-OTDOA-UTRA-NeighborList OPTIONAL, + ... +} + +OMA-LPPe-OTDOA-UTRA-UE-RX-TX-TimeDifferenceType2Info ::= SEQUENCE { + ue-RX-TX-timeDifferenceType2 OMA-LPPe-OTDOA-UTRA-TimeDifferenceType2, + neighborQuality OMA-LPPe-OTDOA-UTRA-NeighborQuality +} + +OMA-LPPe-OTDOA-UTRA-TimeDifferenceType2 ::= INTEGER(0..8191) + +OMA-LPPe-OTDOA-UTRA-NeighborList ::= SEQUENCE (SIZE (1..utra-maxCellMeas)) OF + OMA-LPPe-OTDOA-UTRA-Neighbor + +OMA-LPPe-OTDOA-UTRA-Neighbor ::= SEQUENCE { + modeSpecificInfo CHOICE { + fdd SEQUENCE { + neighborIdentity OMA-LPPe-OTDOA-UTRA-PrimaryCPICH-Info OPTIONAL, + ue-RX-TX-timeDifferenceType2Info + OMA-LPPe-OTDOA-UTRA-UE-RX-TX-TimeDifferenceType2Info OPTIONAL, + ... }, + tdd SEQUENCE { + cellAndChannelIdentity OMA-LPPe-OTDOA-UTRA-CellAndChannelIdentity OPTIONAL, + uarfcn ARFCN-ValueUTRA OPTIONAL, + ... } + }, + neighborQuality OMA-LPPe-OTDOA-UTRA-NeighborQuality, + sfn-sfn-ObsTimeDifference2 OMA-LPPe-OTDOA-UTRA-SFN-SFN-ObsTimeDifference2, + ... +} + +OMA-LPPe-OTDOA-UTRA-NeighborQuality ::= SEQUENCE { + quality OMA-LPPe-OTDOA-UTRA-Quality, + ... +} + +OMA-LPPe-OTDOA-UTRA-SFN-SFN-ObsTimeDifference2 ::= INTEGER (0..65535) + +OMA-LPPe-OTDOA-UTRA-Quality ::= SEQUENCE { + stdResolution BIT STRING (SIZE (2)), + numberOfOTDOA-Measurements BIT STRING (SIZE (3)), + stdOfOTDOA-Measurements BIT STRING (SIZE (5)), + ... +} + + +OMA-LPPe-OTDOA-UTRA-TimeStampData ::= SEQUENCE { + sfn INTEGER(0..4095), + utraCellGlobalID CellGlobalIdEUTRA-AndUTRA, + frequencyInfo OMA-LPPe-UTRA-FrequencyInfo OPTIONAL, + nonUniqueCellID CHOICE { + primaryScramblingCode OMA-LPPe-OTDOA-UTRA-PrimaryScramblingCode, --FDD + cellParametersId OMA-LPPe-OTDOA-UTRA-CellParametersID, --TDD + ...}, + ... +} + + +OMA-LPPe-OTDOA-UTRA-RequestLocationInformation ::= SEQUENCE { + ... +} + + +OMA-LPPe-OTDOA-UTRA-ProvideCapabilities ::= SEQUENCE { + ueBasedSupported BOOLEAN, + ueAssistedSupported BOOLEAN, + ipdlSupported BOOLEAN, + ... +} + + +OMA-LPPe-OTDOA-UTRA-RequestCapabilities ::= SEQUENCE { + ... +} + + +OMA-LPPe-OTDOA-UTRA-Error ::= CHOICE { + locationServerErrorCauses OMA-LPPe-OTDOA-UTRA-LocationServerErrorCauses, + targetDeviceErrorCauses OMA-LPPe-OTDOA-UTRA-TargetDeviceErrorCauses, + ... +} + + +OMA-LPPe-OTDOA-UTRA-LocationServerErrorCauses ::= SEQUENCE { + cause ENUMERATED{ undefinedError, + assistanceDataForUEbasedOTDOAnotAvailable, + assistanceDataForUEassistedOTDOAnotAvailable, + ...}, + ... +} + + +OMA-LPPe-OTDOA-UTRA-TargetDeviceErrorCauses ::= SEQUENCE { + cause ENUMERATED{ undefinedError, + notEnoughOTDOA-cells, + assistanceDataMissing, + referenceCellNotServingCell, + otdoaMeasurementsNotSupported, + otdoaMeasurementsNotAvailable, + uebasedOTDOAnotSupported, + ...}, + ... +} + + +OMA-LPPe-OTDOA-UTRA-PrimaryCPICH-Info ::= SEQUENCE { + primaryScramblingCode OMA-LPPe-OTDOA-UTRA-PrimaryScramblingCode +} + + +OMA-LPPe-OTDOA-UTRA-PrimaryScramblingCode ::= INTEGER (0..511) + + +OMA-LPPe-OTDOA-UTRA-CellAndChannelIdentity ::= SEQUENCE { + burstType OMA-LPPe-OTDOA-UTRA-BurstType, + midambleShift OMA-LPPe-OTDOA-UTRA-MidambleShiftLong, + timeslot OMA-LPPe-OTDOA-UTRA-TimeSlotNumber, + cellParametersID OMA-LPPe-OTDOA-UTRA-CellParametersID, + ... +} + +OMA-LPPe-OTDOA-UTRA-BurstType ::= ENUMERATED { type1, type2 } + +OMA-LPPe-OTDOA-UTRA-MidambleShiftLong ::= INTEGER (0..15) + +OMA-LPPe-OTDOA-UTRA-TimeSlotNumber ::= INTEGER (0..14) + +OMA-LPPe-OTDOA-UTRA-CellParametersID ::= INTEGER (0..127) + + +OMA-LPPe-ECID-LTE-ProvideAssistanceData ::= SEQUENCE { + ecid-LTE-NetworkData SEQUENCE (SIZE (1..maxLTENetworks)) OF + OMA-LPPe-ECID-LTE-NetworkData OPTIONAL, + ecid-LTE-Error OMA-LPPe-ECID-LTE-Error OPTIONAL, + ... +} + +maxLTENetworks INTEGER ::= 8 + + +OMA-LPPe-ECID-LTE-NetworkData ::= SEQUENCE { + plmn-Identity SEQUENCE { + mcc SEQUENCE (SIZE (3)) OF INTEGER (0..9), + mnc SEQUENCE (SIZE (2..3)) OF INTEGER (0..9), + ... + }, + multiple-PLMNs BOOLEAN, + reference-location OMA-LPPe-ReferencePoint OPTIONAL, --Cond eNBlocations + ecid-lte-eNodeB-list SEQUENCE (SIZE (1..maxLTEeNBs)) OF OMA-LPPe-ECID-LTE-eNodeBData, + ecid-lte-HeNB-list SEQUENCE (SIZE (1..maxLTEHeNBs)) OF OMA-LPPe-ECID-LTE-HeNBData OPTIONAL, + ... +} + +maxLTEeNBs INTEGER ::= 32 + +maxLTEHeNBs INTEGER ::= 128 + + +OMA-LPPe-ECID-LTE-eNodeBData ::= SEQUENCE { + relative-location OMA-LPPe-RelativeLocation OPTIONAL, + ecid-lte-eNodeB-CellData SEQUENCE (SIZE (1..maxLTEMacroCells)) OF OMA-LPPe-ECID-LTE-CellData, + ... +} + +maxLTEMacroCells INTEGER ::= 8 + + +OMA-LPPe-ECID-LTE-HeNBData ::= SEQUENCE { + relative-location OMA-LPPe-RelativeLocation OPTIONAL, + location-reliability INTEGER (1..100) OPTIONAL, + coverageArea OMA-LPPe-WLANFemtoCoverageArea OPTIONAL, + ecid-lte-HeNB-CellData OMA-LPPe-ECID-LTE-CellData, + ... +} + + +OMA-LPPe-ECID-LTE-CellData ::= SEQUENCE { + physCellId INTEGER (0..503) OPTIONAL, --Cond AtLeastOne + cellIdentity BIT STRING (SIZE (28)) OPTIONAL, --Cond AtLeastOne + dl-CarrierFreq ARFCN-ValueEUTRA, + rs-transmit-power INTEGER (-127..128) OPTIONAL, + antennaPortConfig ENUMERATED {port1, ports2, ports4, ... } OPTIONAL, + antenna-gain INTEGER (-127..128) OPTIONAL, + beam-width INTEGER (1..360) OPTIONAL, + transmit-direction INTEGER (0..360) OPTIONAL, + frequency-accuracy INTEGER (0..100), + ..., + dl-CarrierFreq-ext ARFCN-ValueEUTRA-v9a0 OPTIONAL -- Cond EARFCN-ext +} + + +OMA-LPPe-ECID-LTE-RequestAssistanceData ::= SEQUENCE { + eNBrequestedAD BIT STRING { bslist (0), + bslocation (1), + transmit-power (2), + antennaPortConfig (3), + antenna-gain (4), + beam-width (5), + transmit-direction (6), + frequency-accuracy (7), + non-serving (8) } (SIZE(1..16)) OPTIONAL, + heNBrequestedAD BIT STRING { bslist (0), + bslocation (1), + locationreliability (2), + transmit-power (3), + antennaPortConfig (4), + frequency-accuracy (5), + coveragearea (6), + non-serving (7) } (SIZE(1..16)) OPTIONAL, + ... +} + + +OMA-LPPe-ECID-LTE-ProvideLocationInformation ::= SEQUENCE { + ecid-LTE-CombinedLocationInformation SEQUENCE (SIZE (1..maxLTEECIDSize)) + OF OMA-LPPe-ECID-LTE-LocationInformationList OPTIONAL, + ecid-LTE-Error OMA-LPPe-ECID-LTE-Error OPTIONAL, + ... +} + +OMA-LPPe-ECID-LTE-LocationInformationList ::= SEQUENCE { + ecid-LTE-LocationInformation OMA-LPPe-ECID-LTE-LocationInformation, + relativeTimeStamp INTEGER (0..65535) OPTIONAL, + servingFlag BOOLEAN, + ... +} + +maxLTEECIDSize INTEGER ::= 64 + + +OMA-LPPe-ECID-LTE-LocationInformation ::= SEQUENCE { + lpp-ECID-SignalMeasurementInformation ECID-SignalMeasurementInformation, + ... +} + + +OMA-LPPe-ECID-LTE-RequestLocationInformation ::= SEQUENCE { + requestedMeasurements BIT STRING { rsrp (0), + rsrq (1), + ueRxTx (2), + non-serving (3), + historic (4) } (SIZE(1..8)), + ... +} + + +OMA-LPPe-ECID-LTE-ProvideCapabilities ::= SEQUENCE { + ecid-lte-MeasSupported BIT STRING {rsrp (0), + rsrq (1), + ueRxTx (2), + non-serving (3), + historic (4) } (SIZE(1..8)), + ecid-lte-eNodeB-ADSupported BIT STRING {bslist (0), + bslocation (1), + transmit-power (2), + antennaPortConfig (3), + antenna-gain (4), + beam-width (5), + transmit-direction (6), + frequency-accuracy (7), + non-serving (8) } (SIZE(1..16)), + ecid-utra-HeNB-ADSupported BIT STRING {bslist (0), + bslocation (1), + locationreliability (2), + transmit-power (3), + antennaPortConfig (4), + frequency-accuracy (5), + coveragearea (6), + non-serving (7) } (SIZE(1..16)), + ... +} + + +OMA-LPPe-ECID-LTE-RequestCapabilities ::= SEQUENCE { + ... +} + + +OMA-LPPe-ECID-LTE-Error ::= CHOICE { + locationServerErrorCauses OMA-LPPe-ECID-LTE-LocationServerErrorCauses, + targetDeviceErrorCauses OMA-LPPe-ECID-LTE-TargetDeviceErrorCauses, + ... +} + + +OMA-LPPe-ECID-LTE-LocationServerErrorCauses ::= SEQUENCE { + cause ENUMERATED { undefined, + requestedADNotAvailable, + notAllrequestedADAvailable, + ... + }, + eNodeBMandatoryDataUnavailable NULL OPTIONAL, + eNodeBLocationsUnavailable NULL OPTIONAL, + eNodeBcellTransmitPowerUnavailable NULL OPTIONAL, + eNodeBcellAntennaPortConfigUnavailable NULL OPTIONAL, + eNodeBcallAntennaGainUnavailable NULL OPTIONAL, + eNodeBcellBeamWidthUnavailable NULL OPTIONAL, + eNodeBcellTransmitDirectionUnavailable NULL OPTIONAL, + eNodeBcellFrequencyAccuracyUnavailable NULL OPTIONAL, + eNodeBnonservingADUnavailable NULL OPTIONAL, + heNBMandatoryDataUnavailable NULL OPTIONAL, + heNBLocationUnavailable NULL OPTIONAL, + heNBLocationReliabilityUnavailable NULL OPTIONAL, + heNBcellTransmitPowerUnavailable NULL OPTIONAL, + heNBcellAntennaPortConfigUnavailable NULL OPTIONAL, + heNBcellFrequencyAccuracyUnavailable NULL OPTIONAL, + heNBCoverageAreaUnavailable NULL OPTIONAL, + heNBnonservingADUnavailable NULL OPTIONAL, + ... +} + + +OMA-LPPe-ECID-LTE-TargetDeviceErrorCauses ::= SEQUENCE { + cause ENUMERATED {undefined, + requestedMeasurementsNotAvailable, + notAllrequestedMeasurementsPossible, + ... + }, + rsrpMeasurementNotPossible NULL OPTIONAL, + rsrqMeasurementNotPossible NULL OPTIONAL, + ueRxTxMeasurementNotPossible NULL OPTIONAL, + non-servingMeasurementsNotAvailable NULL OPTIONAL, + historicMeasurementsNotAvailable NULL OPTIONAL, + ... +} + + +OMA-LPPe-ECID-GSM-ProvideAssistanceData ::= SEQUENCE { + ecid-gsm-NetworkData SEQUENCE (SIZE (1..maxGSMNetworks)) + OF OMA-LPPe-ECID-GSM-NetworkData OPTIONAL, + ecid-gsm-Error OMA-LPPe-ECID-GSM-Error OPTIONAL, + ... +} + +maxGSMNetworks INTEGER ::= 8 + + +OMA-LPPe-ECID-GSM-NetworkData ::= SEQUENCE { + plmn-Identity SEQUENCE { + mcc SEQUENCE (SIZE (3)) OF INTEGER (0..9), + mnc SEQUENCE (SIZE (2..3)) OF INTEGER (0..9) + }, + reference-location OMA-LPPe-ReferencePoint OPTIONAL, --Cond BSlocations + base-station-list SEQUENCE (SIZE (1..maxGSMBaseStations)) OF OMA-LPPe-ECID-GSM-BaseStationData, + ... +} + +maxGSMBaseStations INTEGER ::= 32 + + +OMA-LPPe-ECID-GSM-BaseStationData ::= SEQUENCE { + relative-location OMA-LPPe-RelativeLocation OPTIONAL, + ecid-gsm-CellData SEQUENCE (SIZE (1..maxGSMCells)) OF OMA-LPPe-ECID-GSM-CellData, + ... +} + +maxGSMCells INTEGER ::= 8 + + +OMA-LPPe-ECID-GSM-CellData ::= SEQUENCE { + cellNonUniqueIDGERAN OMA-LPPe-CellNonUniqueIDGERAN OPTIONAL, --Cond AtLeastOne + cellLocalIDGERAN OMA-LPPe-CellLocalIdGERAN OPTIONAL, --Cond AtLeastOne + transmit-power INTEGER (-127..128) OPTIONAL, + antenna-gain INTEGER (-127..128) OPTIONAL, + beam-width INTEGER (1..360) OPTIONAL, + transmit-direction INTEGER (0..360) OPTIONAL, + frequency-accuracy INTEGER (0..100) OPTIONAL, + ... +} + + + + +OMA-LPPe-ECID-GSM-RequestAssistanceData ::= SEQUENCE { + requestedAD BIT STRING { bslist (0), + bslocation (1), + transmit-power (2), + antenna-gain (3), + beam-width (4), + transmit-direction (5), + frequency-accuracy (6), + non-serving (7) + } (SIZE(1..16)), + ... +} + + +OMA-LPPe-ECID-GSM-ProvideLocationInformation ::= SEQUENCE { + ecid-GSM-CombinedLocationInformation SEQUENCE (SIZE (1..maxGSMECIDSize)) + OF OMA-LPPe-ECID-GSM-LocationInformationList OPTIONAL, + ecid-GSM-Error OMA-LPPe-ECID-GSM-Error OPTIONAL, + ... +} + +OMA-LPPe-ECID-GSM-LocationInformationList ::= SEQUENCE { + ecid-GSM-LocationInformation OMA-LPPe-ECID-GSM-LocationInformation, + relativeTimeStamp INTEGER (0..65535) OPTIONAL, + servingFlag BOOLEAN, + ... +} + +maxGSMECIDSize INTEGER ::= 64 + + + +OMA-LPPe-ECID-GSM-LocationInformation ::= SEQUENCE { + cellGlobalIdGERAN CellGlobalIdGERAN, + rxLevel INTEGER (0..63) OPTIONAL, + tA INTEGER(0..255) OPTIONAL, + nMR-GERAN OMA-LPPe-NMR-GERAN OPTIONAL, + ... +} + +OMA-LPPe-NMR-GERAN ::= SEQUENCE (SIZE (1..15)) OF SEQUENCE { + cellNonUniqueIDGERAN OMA-LPPe-CellNonUniqueIDGERAN, + cellLocalIDGERAN OMA-LPPe-CellLocalIdGERAN OPTIONAL, + rxLevel INTEGER (0..63), + ... +} + + +OMA-LPPe-ECID-GSM-RequestLocationInformation ::= SEQUENCE { + requestedMeasurements BIT STRING { rxLevel (0), + tA (1), + nMR-GERAN (2), + non-serving (3), + historic (4) } (SIZE(1..8)), + ... +} + + +OMA-LPPe-ECID-GSM-ProvideCapabilities ::= SEQUENCE { + ecid-gsm-MeasSupported BIT STRING { rxLevel (0), + tA (1), + nMR-GERAN (2), + non-serving (3), + historic (4) } (SIZE(1..8)), + ecid-gsm-ADSupported BIT STRING { bslist (0), + bslocation (1), + transmit-power (2), + antenna-gain (3), + beam-width (4), + transmit-direction (5), + frequency-accuracy (6), + non-serving (7) } (SIZE(1..16)), + ... +} + + +OMA-LPPe-ECID-GSM-RequestCapabilities ::= SEQUENCE { + ... +} + + +OMA-LPPe-ECID-GSM-Error ::= CHOICE { + locationServerErrorCauses OMA-LPPe-ECID-GSM-LocationServerErrorCauses, + targetDeviceErrorCauses OMA-LPPe-ECID-GSM-TargetDeviceErrorCauses, + ... +} + + +OMA-LPPe-ECID-GSM-LocationServerErrorCauses ::= SEQUENCE { + cause ENUMERATED { undefined, + requestedADNotAvailable, + notAllrequestedADAvailable, + ... + }, + mandatoryDataUnavailable NULL OPTIONAL, + bsLocationsUnavailable NULL OPTIONAL, + cellTransmitPowerUnavailable NULL OPTIONAL, + callAntennaGainUnavailable NULL OPTIONAL, + cellBeamWidthUnavailable NULL OPTIONAL, + cellTransmitDirectionUnavailable NULL OPTIONAL, + cellFrequencyAccuracyUnavailable NULL OPTIONAL, + nonservingADUnavailable NULL OPTIONAL, + ... +} + + +OMA-LPPe-ECID-GSM-TargetDeviceErrorCauses ::= SEQUENCE { + cause ENUMERATED { undefined, + requestedMeasurementsNotAvailable, + notAllrequestedMeasurementsPossible, + ... + }, + rxLevelMeasurementNotPossible NULL OPTIONAL, + taMeasurementNotPossible NULL OPTIONAL, + nMRMeasurementNotPossible NULL OPTIONAL, + non-servingMeasurementsNotAvailable NULL OPTIONAL, + historicMeasurementsNotAvailable NULL OPTIONAL, + ... +} + + +OMA-LPPe-ECID-UTRA-ProvideAssistanceData ::= SEQUENCE { + ecid-UTRA-NetworkData SEQUENCE (SIZE (1..maxUTRANetworks)) + OF OMA-LPPe-ECID-UTRA-NetworkData OPTIONAL, + ecid-UTRA-Error OMA-LPPe-ECID-UTRA-Error OPTIONAL, + ... +} + +maxUTRANetworks INTEGER ::= 8 + + +OMA-LPPe-ECID-UTRA-NetworkData ::= SEQUENCE { + plmn-Identity SEQUENCE { + mcc SEQUENCE (SIZE (3)) OF INTEGER (0..9), + mnc SEQUENCE (SIZE (2..3)) OF INTEGER (0..9) + }, + multiple-PLMNs BOOLEAN, + reference-location OMA-LPPe-ReferencePoint OPTIONAL, --Cond nodeBlocations + ecid-utra-nodeB-list SEQUENCE (SIZE (1..maxUTRAnodeBs)) + OF OMA-LPPe-ECID-UTRA-NodeBData OPTIONAL, + ecid-utra-HNB-list SEQUENCE (SIZE (1..maxUTRAHNBs)) OF OMA-LPPe-ECID-UTRA-HNBData OPTIONAL, + ... +} + +maxUTRAnodeBs INTEGER ::= 32 + +maxUTRAHNBs INTEGER ::= 128 + + +OMA-LPPe-ECID-UTRA-NodeBData ::= SEQUENCE { + relative-location OMA-LPPe-RelativeLocation OPTIONAL, + ecid-utra-nodeB-CellData SEQUENCE (SIZE (1..maxUTRAMacroCells)) OF + OMA-LPPe-ECID-UTRA-CellData, + ... +} + +maxUTRAMacroCells INTEGER ::= 8 + + +OMA-LPPe-ECID-UTRA-HNBData ::= SEQUENCE { + relative-location OMA-LPPe-RelativeLocation OPTIONAL, + location-reliability INTEGER (1..100) OPTIONAL, + coverageArea OMA-LPPe-WLANFemtoCoverageArea OPTIONAL, + ecid-utra-HNB-CellData OMA-LPPe-ECID-UTRA-CellData, + ... +} + + +OMA-LPPe-ECID-UTRA-CellData ::= SEQUENCE { + cellIdentity BIT STRING (SIZE (32)) OPTIONAL, --Cond AtLeastOne + modeSpecificInfo CHOICE { + fdd + SEQUENCE { + primaryCPICH-Scrambling-Code OMA-LPPe-OTDOA-UTRA-PrimaryScramblingCode, + primaryCPICH-Tx-Power INTEGER (-127..128) OPTIONAL, + uarfcn-dl ARFCN-ValueUTRA, + ... + }, + tdd + SEQUENCE { + cellParametersID OMA-LPPe-OTDOA-UTRA-CellParametersID, + primaryCCPCH-Tx-Power INTEGER (-127..128) OPTIONAL, + uarfcn-nt ARFCN-ValueUTRA, + ... + } + } OPTIONAL, --Cond AtLeastOne + antenna-gain INTEGER (-127..128) OPTIONAL, + beam-width INTEGER (1..360) OPTIONAL, + transmit-direction INTEGER (0..360) OPTIONAL, + frequency-accuracy INTEGER (0..100) OPTIONAL, + ... +} + + +OMA-LPPe-ECID-UTRA-RequestAssistanceData ::= SEQUENCE { + nBrequestedAD BIT STRING { bslist (0), + bslocation (1), + transmit-power (2), + antenna-gain (3), + beam-width (4), + transmit-direction (5), + frequency-accuracy (6), + non-serving (7) } (SIZE(1..16)) OPTIONAL, + hNBrequestedAD BIT STRING { bslist (0), + bslocation (1), + locationreliability (2), + transmit-power (3), + frequency-accuracy (4), + coveragearea (5), + non-serving (6) } (SIZE(1..16)) OPTIONAL, + ... +} + + +OMA-LPPe-ECID-UTRA-ProvideLocationInformation ::= SEQUENCE { + ecid-UTRA-CombinedLocationInformation SEQUENCE (SIZE (1..maxECIDUTRASize)) + OF OMA-LPPe-ECID-UTRA-LocationInformationList OPTIONAL, + ecid-Error OMA-LPPe-ECID-UTRA-Error OPTIONAL, + ... +} + +OMA-LPPe-ECID-UTRA-LocationInformationList ::= SEQUENCE { + ecid-utra-LocationInformation OMA-LPPe-ECID-UTRA-LocationInformation, + relativeTimeStamp INTEGER (0..65535) OPTIONAL, + servingFlag BOOLEAN, + ... +} + +maxECIDUTRASize INTEGER ::= 64 + + +OMA-LPPe-ECID-UTRA-LocationInformation ::= SEQUENCE { + cellGlobalIdUTRA CellGlobalIdEUTRA-AndUTRA, + frequencyInfo OMA-LPPe-UTRA-FrequencyInfo OPTIONAL, + primaryScramblingCode OMA-LPPe-OTDOA-UTRA-PrimaryScramblingCode OPTIONAL, --Cond FDD + measuredResultsList OMA-LPPe-ECID-UTRA-MeasuredResultsList OPTIONAL, + cellParametersId OMA-LPPe-OTDOA-UTRA-CellParametersID OPTIONAL, --Cond TDD + utratimingAdvance OMA-LPPe-ECID-UTRA-UTRATimingAdvance OPTIONAL, --Cond TDD + ... +} + +OMA-LPPe-ECID-UTRA-UTRATimingAdvance ::= SEQUENCE { + tA INTEGER (0..8191), + tAResolution OMA-LPPe-ECID-UTRA-TAResolution OPTIONAL, + chipRate OMA-LPPe-ECID-UTRA-ChipRate OPTIONAL, + ... +} + +OMA-LPPe-ECID-UTRA-TAResolution ::= ENUMERATED { + res1-0chip, + res0-5chip, + res0-125chip, + ... +} + +OMA-LPPe-ECID-UTRA-ChipRate ::= ENUMERATED { + tdd128, + tdd384, + tdd768, + ... +} + + +OMA-LPPe-UTRA-FrequencyInfo ::= SEQUENCE { + modeSpecificInfo OMA-LPPe-UTRA-ModeSpecificInfo, + ... +} + +OMA-LPPe-UTRA-ModeSpecificInfo ::= CHOICE { + fdd OMA-LPPe-UTRA-FrequencyInfoFDD, + tdd OMA-LPPe-UTRA-FrequencyInfoTDD, + ... +} + +OMA-LPPe-UTRA-FrequencyInfoFDD ::= SEQUENCE { + uarfcn-UL ARFCN-ValueUTRA OPTIONAL, + uarfcn-DL ARFCN-ValueUTRA, + ...} + +OMA-LPPe-UTRA-FrequencyInfoTDD ::= SEQUENCE { + uarfcn-Nt ARFCN-ValueUTRA, + ... +} + +OMA-LPPe-ECID-UTRA-MeasuredResultsList ::= SEQUENCE (SIZE (1..maxFreq)) OF + OMA-LPPe-ECID-UTRA-MeasuredResults + +OMA-LPPe-ECID-UTRA-MeasuredResults ::= SEQUENCE { + frequencyInfo OMA-LPPe-UTRA-FrequencyInfo, + utra-CarrierRSSI OMA-LPPe-ECID-UTRA-CarrierRSSI OPTIONAL, + cellMeasuredResultsList OMA-LPPe-ECID-UTRA-CellMeasuredResultsList OPTIONAL, + ... +} + +OMA-LPPe-ECID-UTRA-CellMeasuredResultsList ::= SEQUENCE (SIZE (1..utra-maxCellMeas)) OF OMA-LPPe-ECID-UTRA-CellMeasuredResults + +OMA-LPPe-ECID-UTRA-CarrierRSSI ::= INTEGER(0..127) + +OMA-LPPe-ECID-UTRA-CellMeasuredResults ::= SEQUENCE { + cellIdentity BIT STRING (SIZE (32)) OPTIONAL, + modeSpecificInfo CHOICE + { + fdd + SEQUENCE { + primaryCPICH-Info OMA-LPPe-OTDOA-UTRA-PrimaryScramblingCode, + cpich-Ec-N0 OMA-LPPe-ECID-UTRA-CPICH-Ec-N0 OPTIONAL, + cpich-RSCP OMA-LPPe-ECID-UTRA-CPICH-RSCP OPTIONAL, + pathloss OMA-LPPe-ECID-UTRA-Pathloss OPTIONAL, + ... + }, + tdd + SEQUENCE { + cellParametersID OMA-LPPe-OTDOA-UTRA-CellParametersID, + primaryCCPCH-RSCP OMA-LPPe-ECID-UTRA-PrimaryCCPCH-RSCP OPTIONAL, + pathloss OMA-LPPe-ECID-UTRA-Pathloss OPTIONAL, + ... + } + }, + ... +} + +OMA-LPPe-ECID-UTRA-PrimaryCCPCH-RSCP ::= INTEGER(0..127) + +OMA-LPPe-ECID-UTRA-CPICH-Ec-N0 ::= INTEGER(0..63) + +OMA-LPPe-ECID-UTRA-CPICH-RSCP ::= INTEGER(0..127) + +OMA-LPPe-ECID-UTRA-Pathloss ::= INTEGER(46..173) + +maxFreq INTEGER ::= 8 + + +OMA-LPPe-ECID-UTRA-RequestLocationInformation ::= SEQUENCE { + requestedMeasurements BIT STRING { measuredResultsList (0), + tdd-timingAdvance (1), + mRL-utra-CarrierRSSI (2), + mRL-FDD-cpich-Ec-N0 (3), + mRL-FDD-cpich-RSCP (4), + mRL-FDD-pathloss (5), + mRL-TDD-primaryCCPCH-RSCP (6), + mRL-TDD-pathloss (7), + non-serving (8), + historic (9) } (SIZE(1..16)), + ... +} + + +OMA-LPPe-ECID-UTRA-ProvideCapabilities ::= SEQUENCE { + ecid-utra-MeasSupported BIT STRING { measuredResultsList (0), + tdd-timingAdvance (1), + mRL-utra-CarrierRSSI (2), + mRL-FDD-cpich-Ec-N0 (3), + mRL-FDD-cpich-RSCP (4), + mRL-FDD-pathloss (5), + mRL-TDD-primaryCCPCH-RSCP (6), + mRL-TDD-pathloss (7), + non-serving (8), + historic (9) } (SIZE(1..16)), + ecid-utra-nodeB-ADSupported BIT STRING { bslist (0), + bslocation (1), + transmit-power (2), + antenna-gain (3), + beam-width (4), + transmit-direction (5), + frequency-accuracy (6), + non-serving (7) } (SIZE(1..16)), + ecid-utra-HNB-ADSupported BIT STRING { bslist (0), + bslocation (1), + locationreliability (2), + transmit-power (3), + frequency-accuracy (4), + coveragearea (5), + non-serving (6) } (SIZE(1..16)), + ... +} + + +OMA-LPPe-ECID-UTRA-RequestCapabilities ::= SEQUENCE { + ... +} + + +OMA-LPPe-ECID-UTRA-Error ::= CHOICE { + locationServerErrorCauses OMA-LPPe-ECID-UTRA-LocationServerErrorCauses, + targetDeviceErrorCauses OMA-LPPe-ECID-UTRA-TargetDeviceErrorCauses, + ... +} + + +OMA-LPPe-ECID-UTRA-LocationServerErrorCauses ::= SEQUENCE { + cause ENUMERATED { undefined, + requestedADNotAvailable, + notAllrequestedADAvailable, + ... + }, + nodeBMandatoryDataUnavailable NULL OPTIONAL, + nodeBLocationUnavailable NULL OPTIONAL, + nodeBcellTransmitPowerUnavailable NULL OPTIONAL, + nodeBcallAntennaGainUnavailable NULL OPTIONAL, + nodeBcellBeamWidthUnavailable NULL OPTIONAL, + nodeBcellTransmitDirectionUnavailable NULL OPTIONAL, + nodeBcellFrequencyAccuracyUnavailable NULL OPTIONAL, + nodeBnonservingADUnavailable NULL OPTIONAL, + hNBMandatoryDataUnavailable NULL OPTIONAL, + hNBLocationUnavailable NULL OPTIONAL, + hNBLocationReliabilityUnavailable NULL OPTIONAL, + hNBcellTransmitPowerUnavailable NULL OPTIONAL, + hNBcellFrequencyAccuracyUnavailable NULL OPTIONAL, + hNBCoverageAreaUnavailable NULL OPTIONAL, + hNBnonservingADUnavailable NULL OPTIONAL, + ... +} + + +OMA-LPPe-ECID-UTRA-TargetDeviceErrorCauses ::= SEQUENCE { + cause ENUMERATED { undefined, + requestedMeasurementsNotAvailable, + notAllrequestedMeasurementsPossible, + ... + }, + mRLMeasurementsNotPossible NULL OPTIONAL, + tdd-timingAdvanceMeasurementNotPossible NULL OPTIONAL, + mRL-utra-CarrierRSSIMeasurementNotPossible NULL OPTIONAL, + mRL-FDD-cpich-Ec-N0MeasurementNotPossible NULL OPTIONAL, + mRL-FDD-cpich-RSCPMeasurementNotPossible NULL OPTIONAL, + mRL-FDD-pathlossMeasurementNotPossible NULL OPTIONAL, + mRL-TDD-primaryCCPCH-RSCPMeasurementNotPossible NULL OPTIONAL, + mRL-TDD-pathlossMeasurementNotPossible NULL OPTIONAL, + non-servingMeasurementsNotAvailable NULL OPTIONAL, + historicMeasurementsNotAvailable NULL OPTIONAL, + ... +} + + +OMA-LPPe-WLAN-AP-ProvideAssistanceData ::= SEQUENCE { + wlan-DataSet SEQUENCE (SIZE (1..maxWLANDataSets)) OF OMA-LPPe-WLAN-DataSet OPTIONAL, + wlan-AP-Error OMA-LPPe-WLAN-AP-Error OPTIONAL, + ... +} + +maxWLANDataSets INTEGER ::= 8 + + +OMA-LPPe-WLAN-DataSet ::= SEQUENCE { + plmn-Identity SEQUENCE { + mcc SEQUENCE (SIZE (3)) OF INTEGER (0..9), + mnc SEQUENCE (SIZE (2..3)) OF INTEGER (0..9) + } OPTIONAL, + reference-point OMA-LPPe-ReferencePoint OPTIONAL, --Cond APlocations + supported-channels-11a Supported-Channels-11a OPTIONAL, + supported-channels-11bg Supported-Channels-11bg OPTIONAL, + wlan-ap-list SEQUENCE (SIZE (1..maxWLANAPs)) OF OMA-LPPe-WLAN-AP-Data, + ... +} + +maxWLANAPs INTEGER ::= 128 + +Supported-Channels-11a ::= SEQUENCE { + ch34 BOOLEAN, + ch36 BOOLEAN, + ch38 BOOLEAN, + ch40 BOOLEAN, + ch42 BOOLEAN, + ch44 BOOLEAN, + ch46 BOOLEAN, + ch48 BOOLEAN, + ch52 BOOLEAN, + ch56 BOOLEAN, + ch60 BOOLEAN, + ch64 BOOLEAN, + ch149 BOOLEAN, + ch153 BOOLEAN, + ch157 BOOLEAN, + ch161 BOOLEAN +} + +Supported-Channels-11bg ::= SEQUENCE { + ch1 BOOLEAN, + ch2 BOOLEAN, + ch3 BOOLEAN, + ch4 BOOLEAN, + ch5 BOOLEAN, + ch6 BOOLEAN, + ch7 BOOLEAN, + ch8 BOOLEAN, + ch9 BOOLEAN, + ch10 BOOLEAN, + ch11 BOOLEAN, + ch12 BOOLEAN, + ch13 BOOLEAN, + ch14 BOOLEAN +} + + +OMA-LPPe-WLAN-AP-Data ::= SEQUENCE { + wlan-ap-id OMA-LPPe-WLAN-AP-ID, + relative-location OMA-LPPe-RelativeLocation OPTIONAL, + location-reliability INTEGER (1..100) OPTIONAL, + wlan-ap-Type-Data SEQUENCE (SIZE (1..maxWLANTypes)) OF OMA-LPPe-WLAN-AP-Type-Data, + coverageArea OMA-LPPe-WLANFemtoCoverageArea OPTIONAL, --Cond oneonly + ... +} + +maxWLANTypes INTEGER ::= 5 + + +OMA-LPPe-WLAN-AP-Type-Data ::= SEQUENCE { + wlan-AP-Type OMA-LPPe-WLAN-AP-Type, + transmit-power INTEGER (-127..128) OPTIONAL, + antenna-gain INTEGER (-127..128) OPTIONAL, + coverageArea OMA-LPPe-WLANFemtoCoverageArea OPTIONAL, --Cond oneonly + ... +} + + +OMA-LPPe-WLAN-AP-RequestAssistanceData ::= SEQUENCE { + requestedAD BIT STRING { aplist (0), + aplocation (1), + locationreliability (2), + transmit-power (3), + antenna-gain (4), + coveragearea (5), + non-serving (6) } (SIZE(1..16)), + requestedAPTypes OMA-LPPe-WLAN-AP-Type-List, + ... +} + + +OMA-LPPe-WLAN-AP-ProvideLocationInformation ::= SEQUENCE { + wlan-AP-CombinedLocationInformation SEQUENCE (SIZE (1..maxWLANAPSize)) OF + OMA-LPPe-WLAN-AP-LocationInformationList OPTIONAL, + wlan-AP-Error OMA-LPPe-WLAN-AP-Error OPTIONAL, + ... +} + +OMA-LPPe-WLAN-AP-LocationInformationList ::= SEQUENCE { + wlan-AP-LocationInformation OMA-LPPe-WLAN-AP-LocationInformation, + relativeTimeStamp INTEGER (0..65535) OPTIONAL, + servingFlag BOOLEAN, + ... +} + +maxWLANAPSize INTEGER ::= 64 + + + +OMA-LPPe-WLAN-AP-LocationInformation ::= SEQUENCE { + apMACAddress OMA-LPPe-WLAN-AP-ID, + apSSID OCTET STRING (SIZE (1..32)) OPTIONAL, + apSignaltoNoise INTEGER(-127..128) OPTIONAL, + apDeviceType OMA-LPPe-WLAN-AP-Type OPTIONAL, + apPHYtype OMA-LPPe-WLAN-AP-PHY-Type OPTIONAL, + apSignalStrength INTEGER(-127..128) OPTIONAL, + apChannelFrequency INTEGER(0..256) OPTIONAL, + apRoundTripDelay OMA-LPPe-WLAN-RTD OPTIONAL, + ueTransmitPower INTEGER(-127..128) OPTIONAL, + ueAntennaGain INTEGER (-127..128) OPTIONAL, + apReportedLocation OMA-LPPe-WLAN-ReportedLocation OPTIONAL, + ..., + apTransmitPower INTEGER (-127..128) OPTIONAL, + apAntennaGain INTEGER (-127..128) OPTIONAL, + ueSignaltoNoise INTEGER (-127..128) OPTIONAL, + ueSignalStrength INTEGER (-127..128) OPTIONAL, + apSignalStrengthDelta INTEGER (0..1) OPTIONAL, -- Cond APSSDelta + ueSignalStrengthDelta INTEGER (0..1) OPTIONAL, -- Cond UESSDelta + apSignaltoNoiseDelta INTEGER (0..1) OPTIONAL, -- Cond APSNDelta + ueSignaltoNoiseDelta INTEGER (0..1) OPTIONAL, -- Cond UESNDelta + operatingClass INTEGER (0..255) OPTIONAL, + ueMacAddress BIT STRING (SIZE (48)) OPTIONAL +} + +OMA-LPPe-WLAN-AP-PHY-Type ::= ENUMERATED { unknown, any, fhss, dsss, irbaseband, ofdm, hrdsss, erp, + ht, ihv, ... } + +OMA-LPPe-WLAN-RTD ::= SEQUENCE { + rTDValue INTEGER(0..16777215), + rTDUnits OMA-LPPe-WLAN-RTDUnits, + rTDAccuracy INTEGER(0..255) OPTIONAL, + ... +} + +OMA-LPPe-WLAN-RTDUnits ::= ENUMERATED { + microseconds, + hundredsofnanoseconds, + tensofnanoseconds, + nanoseconds, + tenthsofnanoseconds, + ... +} + +OMA-LPPe-WLAN-ReportedLocation ::= SEQUENCE { + + locationDataLCI OMA-LPPe-WLAN-LocationDataLCI OPTIONAL, + ... +} + + +OMA-LPPe-WLAN-LocationDataLCI ::= SEQUENCE { + latitudeResolution BIT STRING (SIZE (6)), + latitude BIT STRING (SIZE (34)), + longitudeResolution BIT STRING (SIZE (6)), + longitude BIT STRING (SIZE (34)), + altitudeType BIT STRING (SIZE (4)), + altitudeResolution BIT STRING (SIZE (6)), + altitude BIT STRING (SIZE (30)), + datum BIT STRING (SIZE (8)), + ... +} + + +OMA-LPPe-WLAN-AP-RequestLocationInformation ::= SEQUENCE { + requestedMeasurements BIT STRING { + apSSID (0), + apSN (1), + apDevType (2), + apPhyType (3), + apRSSI (4), + apChanFreq (5), + apRTD (6), + ueTP (7), + ueAG (8), + apRepLoc (9), + non-serving (10), + historic (11), + apTP (12), + apAG (13), + ueSN (14), + ueRSSI (15)} (SIZE(1..16)), + ... , + additionalRequestedMeasurements BIT STRING { + oc (0), + ueMacAddr (1)} (SIZE(1..16)) OPTIONAL +} + + +OMA-LPPe-WLAN-AP-ProvideCapabilities ::= SEQUENCE { + wlan-ecid-MeasSupported BIT STRING { + apSSID (0), + apSN (1), + apDevType (2), + apPhyType (3), + apRSSI (4), + apChanFreq (5), + apRTD (6), + ueTP (7), + ueAG (8), + apRepLoc (9), + non-serving (10), + historic (11), + apTP (12), + apAG (13), + ueSN (14), + ueRSSI (15)} (SIZE(1..16)), + wlan-types-Supported OMA-LPPe-WLAN-AP-Type-List OPTIONAL, + ap-Capability OMA-LPPe-WLAN-AP-Capability OPTIONAL, + wlan-ap-ADSupported BIT STRING {aplist (0), + aplocation (1), + locationreliability (2), + transmit-power (3), + antenna-gain (4), + coveragearea (5), + non-serving (6) } (SIZE(1..16)), + ..., + additional-wlan-ecid-MeasSupported BIT STRING { + oc (0), + ueMacAddr (1)} (SIZE(1..16)) OPTIONAL + +} + +OMA-LPPe-WLAN-AP-Capability ::= SEQUENCE { + apMACAddress OMA-LPPe-WLAN-AP-ID, + apTypes OMA-LPPe-WLAN-AP-Type-List, + ... +} + + +OMA-LPPe-WLAN-AP-RequestCapabilities ::= SEQUENCE { + ... +} + + +OMA-LPPe-WLAN-AP-Error ::= CHOICE { + locationServerErrorCauses OMA-LPPe-WLAN-AP-LocationServerErrorCauses, + targetDeviceErrorCauses OMA-LPPe-WLAN-AP-TargetDeviceErrorCauses, + ... +} + + +OMA-LPPe-WLAN-AP-LocationServerErrorCauses ::= SEQUENCE { + cause ENUMERATED {undefined, + requestedADNotAvailable, + notAllrequestedADAvailable, + ... + }, + apMandatoryDataUnavailable NULL OPTIONAL, + apLocationsUnavailable NULL OPTIONAL, + apLocationReliabilityUnavailable NULL OPTIONAL, + apTransmitPowerUnavailable NULL OPTIONAL, + apAntennaGainUnavailable NULL OPTIONAL, + apCoverageAreaUnavailable NULL OPTIONAL, + nonservingADUnavailable NULL OPTIONAL, + ..., + apTPNotAvailable NULL OPTIONAL, + apAGNotAvailable NULL OPTIONAL, + ueSNNotAvailable NULL OPTIONAL, + ueRSSINotAvailable NULL OPTIONAL, + ocNotAvailable NULL OPTIONAL +} + + +OMA-LPPe-WLAN-AP-TargetDeviceErrorCauses ::= SEQUENCE { + cause ENUMERATED {undefined, + requestedMeasurementsNotAvailable, + notAllrequestedMeasurementsPossible, + ... + }, + apSSIDnotAvailable NULL OPTIONAL, + apSNMeasurementNotPossible NULL OPTIONAL, + apDevTypeNotAvailable NULL OPTIONAL, + apPhyTypeNotAvailable NULL OPTIONAL, + apRSSIMeasurementNotPossible NULL OPTIONAL, + apChanFreqNotAvailable NULL OPTIONAL, + apRTDMeasurementNotPossible NULL OPTIONAL, + ueTPNotAvailable NULL OPTIONAL, + ueAGNotAvailable NULL OPTIONAL, + apRecLocNotAvailable NULL OPTIONAL, + non-servingMeasurementsNotAvailable NULL OPTIONAL, + historicMeasurementsNotAvailable NULL OPTIONAL, + ..., + apTPNotAvailable NULL OPTIONAL, + apAGNotAvailable NULL OPTIONAL, + ueSNNotAvailable NULL OPTIONAL, + ueRSSINotAvailable NULL OPTIONAL, + ocNotAvailable NULL OPTIONAL, + ueMACAddressNotAvailable NULL OPTIONAL +} + + +OMA-LPPe-ECID-WiMax-ProvideLocationInformation ::= SEQUENCE { + ecid-wimax-CombinedLocationInformation SEQUENCE (SIZE (1..maxWiMaxECIDSize)) OF + OMA-LPPe-ECID-WiMax-LocationInformationList OPTIONAL, + ecid-wimax-Error OMA-LPPe-ECID-WiMax-Error OPTIONAL, + ... +} + +OMA-LPPe-ECID-WiMax-LocationInformationList ::= SEQUENCE { + ecid-wimax-LocationInformation OMA-LPPe-ECID-WiMax-LocationInformation, + relativeTimeStamp INTEGER (0..65535) OPTIONAL, + servingFlag BOOLEAN, + ... +} + +maxWiMaxECIDSize INTEGER ::= 1264 + + + +OMA-LPPe-ECID-WiMax-LocationInformation ::= SEQUENCE { + wimaxBsID OMA-LPPe-ECID-WiMax-WimaxBsID, + wimaxRTD OMA-LPPe-ECID-WiMax-WimaxRTD OPTIONAL, + wimaxNMRList OMA-LPPe-ECID-WiMax-WimaxNMRList OPTIONAL, + ... +} + +OMA-LPPe-ECID-WiMax-WimaxBsID ::= SEQUENCE { + bsID-MSB BIT STRING (SIZE(24)) OPTIONAL, + bsID-LSB BIT STRING (SIZE(24)), + ... +} + +OMA-LPPe-ECID-WiMax-WimaxRTD ::= SEQUENCE { + rTD INTEGER (0..65535), + rTDstd INTEGER (0..1023) OPTIONAL, + ... +} + +OMA-LPPe-ECID-WiMax-WimaxNMRList ::= SEQUENCE (SIZE (1..maxWimaxBSMeas)) OF OMA-LPPe-ECID-WiMax-WimaxNMR + +OMA-LPPe-ECID-WiMax-WimaxNMR ::= SEQUENCE { + wimaxBsID OMA-LPPe-ECID-WiMax-WimaxBsID, + relDelay INTEGER (-32768..32767) OPTIONAL, + relDelaystd INTEGER (0..1023) OPTIONAL, + rSSI INTEGER (0..255) OPTIONAL, + rSSIstd INTEGER (0..63) OPTIONAL, + bSTxPower INTEGER (0..255) OPTIONAL, + cINR INTEGER (0..255) OPTIONAL, + cINRstd INTEGER (0..63) OPTIONAL, + bSLocation OMA-LPPe-WLAN-ReportedLocation OPTIONAL, + ... +} + +maxWimaxBSMeas INTEGER ::= 32 + + +OMA-LPPe-ECID-WiMax-RequestLocationInformation ::= SEQUENCE { + requestedMeasurements BIT STRING { rTD (0), + rTDstd (1), + nMR (2), + nMRrelDelay (3), + nMRrelDelaystd (4), + nMRrSSI (5), + nMRrSSIstd (6), + nMRbSTxPower (7), + nMRcINR (8), + nMRcINRstd (9), + nMRbSLocation (10), + non-serving (11), + historic (12) } (SIZE(1..16)), + ... +} + + +OMA-LPPe-ECID-WiMax-ProvideCapabilities ::= SEQUENCE { + ecid-wimax-MeasSupported BIT STRING { rTD (0), + rTDstd (1), + nMR (2), + nMRrelDelay (3), + nMRrelDelaystd (4), + nMRrSSI (5), + nMRrSSIstd (6), + nMRbSTxPower (7), + nMRcINR (8), + nMRcINRstd (9), + nMRbSLocation (10), + non-serving (11), + historic (12) } (SIZE(1..16)), + ... +} + + +OMA-LPPe-ECID-WiMax-RequestCapabilities ::= SEQUENCE { + ... +} + + +OMA-LPPe-ECID-WiMax-Error ::= CHOICE { + locationServerErrorCauses OMA-LPPe-ECID-WiMax-LocationServerErrorCauses, + targetDeviceErrorCauses OMA-LPPe-ECID-WiMax-TargetDeviceErrorCauses, + ... +} + + +OMA-LPPe-ECID-WiMax-LocationServerErrorCauses ::= SEQUENCE { + cause ENUMERATED {undefined, + ... + }, + ... +} + + +OMA-LPPe-ECID-WiMax-TargetDeviceErrorCauses ::= SEQUENCE { + cause ENUMERATED { undefined, + requestedMeasurementsNotAvailable, + notAllrequestedMeasurementsPossible, + ... + }, + rTDMeasurementNotPossible NULL OPTIONAL, + rTDstdMeasurementNotPossible NULL OPTIONAL, + nMRMeasurementNotPossible NULL OPTIONAL, + nMRrelDelayMeasurementNotPossible NULL OPTIONAL, + nMRrelDelaystdMeasurementNotPossible NULL OPTIONAL, + nMRrSSIMeasurementNotPossible NULL OPTIONAL, + nMRrSSIstdMeasurementNotPossible NULL OPTIONAL, + nMRbSTxPowerMeasurementNotPossible NULL OPTIONAL, + nMRcINRMeasurementNotPossible NULL OPTIONAL, + nMRcINRstdMeasurementNotPossible NULL OPTIONAL, + nMRbSLocationNotAvailable NULL OPTIONAL, + non-servingMeasurementsNotAvailable NULL OPTIONAL, + historicMeasurementsNotAvailable NULL OPTIONAL, + ... +} + + +OMA-LPPe-Sensor-ProvideAssistanceData ::= SEQUENCE { + ..., + atmosphericPressureAD OMA-LPPe-AtmosphericPressureAD OPTIONAL +} + + +OMA-LPPe-AtmosphericPressureAD ::= SEQUENCE { + referencePressure INTEGER (-20000..10000), + period SEQUENCE { + pressureValidityPeriod OMA-LPPe-ValidityPeriod, + referencePressureRate INTEGER (-128..127) OPTIONAL, + ... + } OPTIONAL, + area SEQUENCE { + pressureValidityArea OMA-LPPe-PressureValidityArea, + gN-pressure INTEGER (-128..127) OPTIONAL, + gE-pressure INTEGER (-128..127) OPTIONAL, + ... + } OPTIONAL, + ... +} + +OMA-LPPe-PressureValidityArea ::= SEQUENCE { + centerPoint Ellipsoid-Point, -- coordinates of the center of the rectangular validity area + validityAreaWidth INTEGER (1..128), -- units in Kilometers + validityAreaHeight INTEGER (1..128), -- units in Kilometers + ... +} + + + +OMA-LPPe-Sensor-RequestAssistanceData ::= SEQUENCE { + ..., + pressureSensorAD OMA-LPPe-PressureSensorAD OPTIONAL +} + + +OMA-LPPe-PressureSensorAD ::= SEQUENCE { + ... +} + + +OMA-LPPe-Sensor-ProvideLocationInformation ::= SEQUENCE { + motionStateList OMA-LPPe-Sensor-MotionStateList OPTIONAL, + sensorError OMA-LPPe-Sensor-Error OPTIONAL, + ..., + atmosphericPressure OMA-LPPe-AtmosphericPressure OPTIONAL +} + + + +OMA-LPPe-Sensor-MotionStateList ::= SEQUENCE (SIZE(1..8)) OF OMA-LPPe-Sensor-MotionStateElement + +OMA-LPPe-Sensor-MotionStateElement ::= SEQUENCE { + primaryMotionState ENUMERATED{ + unknown, + stationary, + pedestrian, + running, + cycling, + car, + train, + aeroplane, + boat, + fidgeting, + ... + }, + confidence INTEGER(0..99), + secondaryMotionState BIT STRING { + stationary (0), + pedestrian (1), + running (2), + cycling (3), + car (4), + train (5), + aeroplane (6), + boat (7), + fidgeting (8) } (SIZE(1..16)) OPTIONAL, + ... +} + + + +OMA-LPPe-AtmosphericPressure ::= SEQUENCE { + pressureMeasurement OMA-LPPe-PressureMeasurement, + pressureStats PressureStats OPTIONAL, + calibrationPoints CalibrationPoints OPTIONAL, + ...} + + +PressureStats ::= SEQUENCE { + sensorMeanPressure INTEGER (30000..115000), + sensorStddevPressure INTEGER (0..2000) OPTIONAL, + duration INTEGER (5..40), +...} + +CalibrationPoints ::= SEQUENCE (SIZE (1..10)) OF SEQUENCE { + pressure OMA-LPPe-PressureMeasurement, + time UTCTime, + location EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, + motionState OMA-LPPe-Sensor-MotionStateList OPTIONAL, + velocity Velocity OPTIONAL, + locationSource OMA-LPPe-LocationSource OPTIONAL, + ... +} + + + + +OMA-LPPe-PressureMeasurement ::= SEQUENCE { + sensorMeasurement INTEGER (30000..115000), + adjustment INTEGER (-5000..5000) OPTIONAL, + uncertainty SEQUENCE { + range INTEGER (0..1000), + confidence INTEGER (1..100) + } OPTIONAL, + temperature INTEGER (-100..150) OPTIONAL, + ... +} + + +OMA-LPPe-Sensor-RequestLocationInformation ::= SEQUENCE { + motionStateReq OMA-LPPe-Sensor-MotionStateRequest OPTIONAL, --Cond MotionSateReq + ..., + atmosphericPressureReq OMA-LPPe-AtmosphericPressureRequest OPTIONAL --Cond AtmosphericPressureReq +} + + +OMA-LPPe-Sensor-MotionStateRequest ::= SEQUENCE { + secondaryMotionStateRequest NULL OPTIONAL, + ... +} + + +OMA-LPPe-AtmosphericPressureRequest ::= SEQUENCE { + ... +} + + +OMA-LPPe-Sensor-ProvideCapabilities ::= SEQUENCE { + motionStateSupport NULL OPTIONAL, --Cond MotionStateSupport + secondarySupport NULL OPTIONAL, --Cond SecondarySupport + ..., + atmosphericPressureADSupport NULL OPTIONAL, --Cond AtmosphericPressureADSupport + atmosphericPressureSupport NULL OPTIONAL --Cond AtmosphericPressureSupport +} + + +OMA-LPPe-Sensor-RequestCapabilities ::= SEQUENCE { + ... +} + + + +OMA-LPPe-Sensor-Error ::= CHOICE { + targetError OMA-LPPe-Sensor-TargetError, + ... +} + +OMA-LPPe-Sensor-TargetError ::= SEQUENCE { + motionStateError ENUMERATED { primaryMotionStateNotAvailable, + primaryMotionStateNotSupported, + ... } OPTIONAL, + secondaryMotionStateError ENUMERATED { secondaryMotionStateNotAvailable, + secondaryMotionStateNotSupported, + ... } OPTIONAL, + ..., + atmosphericPressureError ENUMERATED {pressureNotAvailable, pressureNotSupported, + ...} OPTIONAL +} + + +OMA-LPPe-SRN-ProvideAssistanceData ::= SEQUENCE { + srnGroup CHOICE { + srnGroupList OMA-LPPe-SRN-SRNgroupList, + srnGroupUpdateResponse OMA-LPPe-SRN-SRNgroupUpdateResponse, + ... + } OPTIONAL, + antennaPattern OMA-LPPe-SRN-AntennaPattern OPTIONAL, --Cond AntennaPattReq + srnError OMA-LPPe-SRN-Error OPTIONAL, + ... +} + + +OMA-LPPe-SRN-SRNgroupList ::= SEQUENCE { + incompleteFlag BOOLEAN, + defaultReferencePoint OMA-LPPe-ReferencePoint OPTIONAL, --Cond IfNoRefPoint + groupList SEQUENCE (SIZE (1..64)) OF OMA-LPPe-SRN-SRNgroup, + ... + } + +OMA-LPPe-SRN-SRNgroup ::= SEQUENCE { + srnGroupID OMA-LPPe-SRN-SRNgroupUniqueID OPTIONAL, + defaultSRNtype OMA-LPPe-SRN-SRNtype OPTIONAL, + referencePoint OMA-LPPe-ReferencePoint OPTIONAL, + globalOrientation NULL OPTIONAL, + srnsInGroupList SEQUENCE (SIZE (1..1024)) OF OMA-LPPe-SRN-SRNinfo, + ... +} + +OMA-LPPe-SRN-SRNinfo ::= SEQUENCE { + srnID OMA-LPPe-SRN-SRNid, + srnType OMA-LPPe-SRN-SRNtype OPTIONAL, --Cond NotDefaultType + relativePosition OMA-LPPe-RelativeLocation, + orientation OMA-LPPe-Orientation OPTIONAL, + ... +} + + +OMA-LPPe-SRN-SRNgroupUpdateResponse ::= SEQUENCE (SIZE (1..8)) OF + OMA-LPPe-SRN-SRNgroupUpdateResponseElement + +OMA-LPPe-SRN-SRNgroupUpdateResponseElement ::= SEQUENCE { + srnGroupID OMA-LPPe-SRN-SRNgroupUniqueID OPTIONAL, + targetDataValidity ENUMERATED{ targetDataValid, + targetDataInValidAndUpdatedDataWillBeProvided, + targetDataInValidButServerWillNotProvideNewData, + ...}, + updatedSRNgroup OMA-LPPe-SRN-SRNgroup OPTIONAL, --Cond InvalidAndNewDataAvailable + ... +} + + +OMA-LPPe-SRN-AntennaPattern ::= SEQUENCE (SIZE (1..8)) OF OMA-LPPe-SRN-AntennaPatternElement + +OMA-LPPe-SRN-AntennaPatternElement::= SEQUENCE { + identification SEQUENCE { + vendorOrOperator OMA-LPPe-VendorOrOperatorID, + antennaPatternID INTEGER(0..65535), ... + }, + antennaData CHOICE { + antennaPattern OMA-LPPe-SRN-AntennaPatternForChannels, + antennaContainer OCTET STRING, + ... + }, + ... +} + + + +OMA-LPPe-SRN-AntennaPatternForChannels ::= SEQUENCE { + evenGrid SEQUENCE { + inAzimuth INTEGER(1..200), + inElevation INTEGER(1..150) + } OPTIONAL, --Cond EvenGrid + patternList SEQUENCE (SIZE (1..maxChannels)) OF OMA-LPPe-SRN-ChannelResponse, + ... +} + +OMA-LPPe-SRN-ChannelResponse ::= SEQUENCE { + channelNumber INTEGER(1..maxChannels), + responseInElevation SEQUENCE (SIZE (7..901)) OF OMA-LPPe-SRN-ResponseInElevation, + ... +} + +OMA-LPPe-SRN-ResponseInElevation ::= SEQUENCE { + elevation INTEGER(0..900) OPTIONAL, --Cond NotEven + responseInAzimuth SEQUENCE (SIZE (18..3601)) OF OMA-LPPe-SRN-ResponseInAzimuth, + ... +} + +OMA-LPPe-SRN-ResponseInAzimuth::= SEQUENCE { + azimuth INTEGER(0..3599) OPTIONAL, --Cond NotEven + response OMA-LPPe-ComplexNumber, + ... + } + +OMA-LPPe-ComplexNumber ::= SEQUENCE { + amplitude INTEGER(0..1000), + phase INTEGER(-1800..1799) +} + +maxChannels INTEGER ::= 512 + + +OMA-LPPe-SRN-RequestAssistanceData ::= SEQUENCE { + srnGroup CHOICE { + srnGroupRequest OMA-LPPe-SRN-SRNgroupRequest, + srnGroupUpdateRequest OMA-LPPe-SRN-SRNgroupUpdateRequest, + ... + } OPTIONAL, + antennaPatternRequest OMA-LPPe-SRN-AntennaPatternRequest OPTIONAL, + ... +} + + +OMA-LPPe-SRN-SRNgroupRequest ::= SEQUENCE { + doNotProvideList OMA-LPPe-SRN-SRNProvideList OPTIONAL, + doProvideList OMA-LPPe-SRN-SRNProvideList OPTIONAL, + ... +} + +OMA-LPPe-SRN-SRNProvideList ::= SEQUENCE { + groupList SEQUENCE (SIZE (1..256)) OF OMA-LPPe-SRN-SRNgroupUniqueID OPTIONAL, + categoryList SEQUENCE (SIZE (1..16)) OF OMA-LPPe-SRN-Category OPTIONAL, + ... +} + + +OMA-LPPe-SRN-SRNgroupUpdateRequest ::= SEQUENCE (SIZE (1..64)) OF + OMA-LPPe-SRN-SRNgroupUpdateRequestElement + +OMA-LPPe-SRN-SRNgroupUpdateRequestElement ::= SEQUENCE { + srnGroupID OMA-LPPe-SRN-SRNgroupUniqueID, + provideIndicationOnly NULL OPTIONAL, + inTheGroup SEQUENCE (SIZE (1..1024)) OF OMA-LPPe-SRN-SRNid OPTIONAL, + ... +} + + +OMA-LPPe-SRN-AntennaPatternRequest ::= SEQUENCE (SIZE (1..8)) OF + OMA-LPPe-SRN-AntennaPatternRequestElement + +OMA-LPPe-SRN-AntennaPatternRequestElement ::= SEQUENCE { + antennaPatternID SEQUENCE { + vendorOrOperator OMA-LPPe-VendorOrOperatorID, + antennaPatternID INTEGER(0..65535), ... + }, + ... +} + + +OMA-LPPe-SRN-ProvideLocationInformation ::= SEQUENCE { + srnMeasurementList SEQUENCE (SIZE (1..64)) OF OMA-LPPe-SRN-MeasurementElement OPTIONAL, + srnError OMA-LPPe-SRN-Error OPTIONAL, + ... +} + + +OMA-LPPe-SRN-MeasurementElement ::= SEQUENCE { + srnID OMA-LPPe-SRN-SRNid, + srnCategory OMA-LPPe-SRN-Category OPTIONAL, --Cond IfKnown + srnGroupID OMA-LPPe-SRN-SRNgroupUniqueID OPTIONAL, --Cond IfKnown + measurementList SEQUENCE (SIZE (1..64)) OF OMA-LPPe-SRN-srnMeasurementElement OPTIONAL, + ... +} + +OMA-LPPe-SRN-srnMeasurementElement ::= SEQUENCE { + relativeTimeStamp INTEGER(0..1000) OPTIONAL, --Cond IfNotFirst + rssi INTEGER(-128..127) OPTIONAL, + rtd OMA-LPPe-WLAN-RTD OPTIONAL, + ... +} + + +OMA-LPPe-SRN-RequestLocationInformation ::= SEQUENCE { + requestInfo SEQUENCE (SIZE (1..16)) OF OMA-LPPe-SRN-ReqLocInfo-Category, + ... +} + +OMA-LPPe-SRN-ReqLocInfo-Category ::= SEQUENCE { + category OMA-LPPe-SRN-Category, + multipleMeasurements ENUMERATED{ forbidden(0), + allowed(1), + requested(2), ... } OPTIONAL, + allowedMeasurements OMA-LPPe-SRN-MeasurementMask OPTIONAL, + historicMeasurementsRequested NULL OPTIONAL, + ... +} + + +OMA-LPPe-SRN-ProvideCapabilities ::= SEQUENCE { + capabilitiesPerSRNCategory SEQUENCE (SIZE (1..16)) OF + OMA-LPPe-SRN-ProvideCapabilitiesElement OPTIONAL, + ... +} + +OMA-LPPe-SRN-ProvideCapabilitiesElement::= SEQUENCE { + srnCategory OMA-LPPe-SRN-Category, + supportedMeasurements OMA-LPPe-SRN-MeasurementMask OPTIONAL, + supportedAssistanceData BIT STRING { + srnGroup (0), + antennaPattern (1) } (SIZE(1..16)), + historicMeasurementsSupported NULL OPTIONAL, + ... +} + + +OMA-LPPe-SRN-RequestCapabilities ::= SEQUENCE { + capabilitiesRequestedFor SEQUENCE (SIZE (1..16)) OF OMA-LPPe-SRN-Category OPTIONAL, + ... +} + + +OMA-LPPe-SRN-Error ::= CHOICE { + srnLocationServerErrorCauses OMA-LPPe-SRN-LocationServerErrorCauses, + srnTargetDeviceErrorCauses OMA-LPPe-SRN-TargetDeviceErrorCauses, + ... +} + + +OMA-LPPe-SRN-LocationServerErrorCauses ::= SEQUENCE { + groupErrors ENUMERATED{ undefined, + someGroupOrCategoryOrSRNidUnknownOrUnsupported, + allGroupAndCategoryOrSRNidUnknownOrUnsupported, + noSRNgroupsNearby, + ...} OPTIONAL, + groupUpdateErrors ENUMERATED { undefined, + allSRNgroupIDsUnknown, + allSRNgroupIDsknownButSomeSRNgroupVersionsUnknown, + allSRNgroupIDsknownAndAllSRNgroupVersionsUnknown, + someSRNgroupIDsUnknown, + someSRNgroupVersionsUnknownAndAllSRNGroupVersionsUnknown, + someSRNgroupIDsAndSomeSRNgroupVersionsUnknown, + inTheGroupInformationDoesNotMatchWithGroupID, + ...} OPTIONAL, + srnAntennaErrors ENUMERATED { undefined, + someAntennaPatternIDsUnknown, + allAntennaPatternIDsUnknown, + ... } OPTIONAL, + ... +} + + +OMA-LPPe-SRN-TargetDeviceErrorCauses ::= SEQUENCE { + srnErrorsPerCategory SEQUENCE (SIZE (1..16)) OF OMA-LPPe-SRN-TargetDeviceError, + ... +} + +OMA-LPPe-SRN-TargetDeviceError ::= SEQUENCE { + category OMA-LPPe-SRN-Category, + srnErrors ENUMERATED{ undefined, + requestedMeasurementsNotAvailable, + notAllrequestedMeasurementsPossible, + categoryNotSupported, + ...}, + rssiNotAvailable NULL OPTIONAL, + rtdNotAvailable NULL OPTIONAL, + multipleSetsNotAvailable NULL OPTIONAL, + historicMeasurementsNotAvailable NULL OPTIONAL, + ... +} + + +OMA-LPPe-SRN-SRNgroupUniqueID ::= SEQUENCE { + providerID OMA-LPPe-VendorOrOperatorID, + providerAssignedID OCTET STRING, + srnDataVersion INTEGER (0..4294967295) OPTIONAL, + ... +} + + +OMA-LPPe-SRN-SRNtype ::= SEQUENCE { + srnCategory OMA-LPPe-SRN-Category, + srnERP INTEGER(-300..500) OPTIONAL, + srnAntennaInfo SEQUENCE { + antennaPatternID INTEGER(0..65535), + switchingPatternID INTEGER(0..65535) OPTIONAL, + ... + } OPTIONAL, + ... +} + + +OMA-LPPe-SRN-Category ::= SEQUENCE { + srnTechnologyType OMA-LPPe-SRN-Technologies, + srnVendorInformation SEQUENCE { + vendor OMA-LPPe-VendorOrOperatorID, + vendorInfo OCTET STRING OPTIONAL, + ... + } OPTIONAL, --Cond other + ... +} + + +OMA-LPPe-SRN-SRNid ::= SEQUENCE { + srn-id CHOICE { + mac BIT STRING(SIZE(48)), + nfc SEQUENCE { + manufacturer BIT STRING(SIZE(8)), + uniqueNumber BIT STRING(SIZE(48)), + ... + }, + mobileCode SEQUENCE { + registryID BIT STRING(SIZE(12)), + remainingPart OCTET STRING(SIZE(1..16)), + resolutionIdentifier OCTET STRING(SIZE(1..18)), + ... + }, + other OCTET STRING, + ... + }, + ... +} + + +OMA-LPPe-SRN-Technologies ::= SEQUENCE { + srnTechnologies ENUMERATED{ bt, btle, nfc, mobileCode, other, ... }, + ... +} + + +OMA-LPPe-SRN-MeasurementMask ::= SEQUENCE { + srnMeasurements BIT STRING { rssi(0), + rtd (1) } (SIZE(1..16)), + ... +} + + +END diff --git a/epan/dissectors/asn1/lppe/lppe.cnf b/epan/dissectors/asn1/lppe/lppe.cnf new file mode 100644 index 00000000..c6a6e790 --- /dev/null +++ b/epan/dissectors/asn1/lppe/lppe.cnf @@ -0,0 +1,49 @@ +# lppe.cnf +# llpe conformation file +# Copyright 2012-2018 Pascal Quantin + +#.OPT +PER +UNALIGNED +#.END + +#.IMPORT ../lpp/lpp-exp.cnf + +#.PDU +OMA-LPPe-MessageExtension +#.END + +#.OMIT_ASSIGNMENT + +#.FIELD_RENAME +OMA-LPPe-MapDataReferenceElement/mapDataUrl mapDataUrl_choice +OMA-LPPe-WLAN-LocationDataLCI/latitude oma-LPPe-WLAN-LocationDataLCI_latitude +OMA-LPPe-WLAN-LocationDataLCI/longitude oma-LPPe-WLAN-LocationDataLCI_longitude +OMA-LPPe-WLAN-LocationDataLCI/altitude oma-LPPe-WLAN-LocationDataLCI_altitude + +#.FIELD_ATTR +OMA-LPPe-MapDataReferenceElement/mapDataUrl ABBREV=mapDataUrl_choice +OMA-LPPe-WLAN-LocationDataLCI/latitude ABBREV=oMA-LPPe-WLAN-LocationDataLCI.latitude +OMA-LPPe-WLAN-LocationDataLCI/longitude ABBREV=oMA-LPPe-WLAN-LocationDataLCI.longitude +OMA-LPPe-WLAN-LocationDataLCI/altitude ABBREV=oMA-LPPe-WLAN-LocationDataLCI.altitude + +#.FN_HDR OMA-LPPe-MessageExtension + + proto_tree_add_item(tree, proto_lppe, tvb, 0, -1, ENC_NA); + + col_append_sep_str(actx->pinfo->cinfo, COL_PROTOCOL, "/", "LPPe"); + +#.FN_BODY OMA-LPPe-Uri + offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:/?#[]@!$&'()*+,;=-._~%%", 85, + NULL); + +#.FN_BODY OMA-LPPe-CivicLocation-pidf-lo/civicLocation VAL_PTR = &xml_tvb + tvbuff_t *xml_tvb = NULL; +%(DEFAULT_BODY)s + if (xml_tvb && xml_handle) { + proto_tree *xml_tree = proto_item_add_subtree(actx->created_item, ett_lppe_civicLocation); + call_dissector(xml_handle, xml_tvb, actx->pinfo, xml_tree); + } +#.END + diff --git a/epan/dissectors/asn1/lppe/packet-lppe-template.c b/epan/dissectors/asn1/lppe/packet-lppe-template.c new file mode 100644 index 00000000..8d8c488d --- /dev/null +++ b/epan/dissectors/asn1/lppe/packet-lppe-template.c @@ -0,0 +1,90 @@ +/* packet-lppe.c + * Routines for LPP Extensions (LLPe) packet dissection + * Copyright 2012-2021, 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 Open Mobile Alliance OMA-TS-LPPe-V1_0-20200630-D + * https://gitlab.com/wireshark/wireshark/uploads/e1059f6dc0fc9e3b875b37a9732df39a/OMA-TS-LPPe-V1_0-20200630-D.doc + */ + +#include "config.h" + +#include <epan/packet.h> +#include <epan/asn1.h> + +#include "packet-per.h" +#include "packet-lpp.h" + +#define PNAME "LTE Positioning Protocol Extensions (LLPe)" +#define PSNAME "LPPe" +#define PFNAME "lppe" + +#ifdef _MSC_VER +/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */ +#pragma warning(disable:4146) +#endif + +void proto_register_lppe(void); +void proto_reg_handoff_lppe(void); + +/* Initialize the protocol and registered fields */ +static int proto_lppe = -1; + +static dissector_handle_t xml_handle; + +#include "packet-lppe-hf.c" + +/* Initialize the subtree pointers */ +static gint ett_lppe = -1; +static gint ett_lppe_civicLocation = -1; +#include "packet-lppe-ett.c" + +/* Include constants */ +#include "packet-lppe-val.h" + + +#include "packet-lppe-fn.c" + + +/*--- proto_register_lpp -------------------------------------------*/ +void proto_register_lppe(void) { + + /* List of fields */ + static hf_register_info hf[] = { + +#include "packet-lppe-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_lppe, + &ett_lppe_civicLocation, +#include "packet-lppe-ettarr.c" + }; + + + /* Register protocol */ + proto_lppe = proto_register_protocol(PNAME, PSNAME, PFNAME); + register_dissector("lppe", dissect_OMA_LPPe_MessageExtension_PDU, proto_lppe); + + /* Register fields and subtrees */ + proto_register_field_array(proto_lppe, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + + +} + + +/*--- proto_reg_handoff_lpp ---------------------------------------*/ +void +proto_reg_handoff_lppe(void) +{ + xml_handle = find_dissector_add_dependency("xml", proto_lppe); +} + + |