diff --git a/asn1/Makefile.am b/asn1/Makefile.am index 89f5ef5031..b622253a59 100644 --- a/asn1/Makefile.am +++ b/asn1/Makefile.am @@ -66,6 +66,7 @@ SUBDIRS = \ lcsap \ ldap \ logotypecertextn \ + lpp \ lte-rrc \ mms \ mpeg-audio \ diff --git a/asn1/Makefile.nmake b/asn1/Makefile.nmake index 124be2fa92..0e30ec5513 100644 --- a/asn1/Makefile.nmake +++ b/asn1/Makefile.nmake @@ -120,6 +120,7 @@ PER_LIST= \ h501 \ hnbap \ lcsap \ + lpp \ lte-rrc \ nbap \ mpeg-audio \ diff --git a/asn1/lcsap/Makefile.common b/asn1/lcsap/Makefile.common index d535328c3f..1e09b634d4 100644 --- a/asn1/lcsap/Makefile.common +++ b/asn1/lcsap/Makefile.common @@ -44,6 +44,7 @@ EXTRA_DIST = \ Makefile.nmake \ $(ASN_FILE_LIST) \ packet-$(PROTOCOL_NAME)-template.c \ + packet-$(PROTOCOL_NAME)-template.h \ $(PROTOCOL_NAME).cnf SRC_FILES = \ diff --git a/asn1/lcsap/lcsap.cnf b/asn1/lcsap/lcsap.cnf index 0c4e770587..d6bd90303e 100644 --- a/asn1/lcsap/lcsap.cnf +++ b/asn1/lcsap/lcsap.cnf @@ -9,6 +9,7 @@ ALIGNED #.END #.EXPORTS +Correlation-ID_PDU #.PDU_NEW LCS-AP-PDU diff --git a/asn1/lpp/LPP.asn b/asn1/lpp/LPP.asn new file mode 100644 index 0000000000..9c233e0317 --- /dev/null +++ b/asn1/lpp/LPP.asn @@ -0,0 +1,1854 @@ +-- 3GPP TS 36.355 V9.7.0 (2011-10) +-- $Id$ +-- + +LPP-PDU-Definitions { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) lpp (7) version1 (1) lpp-PDU-Definitions (1) } + +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 + ... +} + +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, + ... +} + +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, + ... +} + +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 + ... +} + +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 + ... +} + +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, + ... +} + +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) } (SIZE (1..8)), + ... +} + +ARFCN-ValueEUTRA ::= INTEGER (0.. 65535) + +ARFCN-ValueUTRA ::= INTEGER (0..16383) + +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 + +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, + ... +} + +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)), + ... +} + +VelocityTypes ::= SEQUENCE { + horizontalVelocity BOOLEAN, + horizontalWithVerticalVelocity BOOLEAN, + horizontalVelocityWithUncertainty BOOLEAN, + horizontalWithVerticalVelocityAndUncertainty BOOLEAN, + ... +} + +CommonIEsRequestCapabilities ::= SEQUENCE { + ... +} + +CommonIEsProvideCapabilities ::= SEQUENCE { + ... +} + +CommonIEsRequestAssistanceData ::= SEQUENCE { + servingCellID ECGI OPTIONAL, -- Cond EUTRA + ... +} + +CommonIEsProvideAssistanceData ::= SEQUENCE { + ... +} + +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 + ... +} + +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, + mayReturnAditionalInformation, + ... +} + +QoS ::= SEQUENCE { + horizontalAccuracy HorizontalAccuracy OPTIONAL, -- Need ON + verticalCoordinateRequest BOOLEAN, + verticalAccuracy VerticalAccuracy OPTIONAL, -- Need ON + responseTime ResponseTime OPTIONAL, -- Need ON + velocityRequest BOOLEAN, + ... +} + +HorizontalAccuracy ::= SEQUENCE { + accuracy INTEGER(0..127), + confidence INTEGER(0..100), + ... +} + +VerticalAccuracy ::= SEQUENCE { + accuracy INTEGER(0..127), + confidence INTEGER(0..100), + ... +} + +ResponseTime ::= SEQUENCE { + time INTEGER (1..128), + ... +} + +Environment ::= ENUMERATED { + badArea, + notBadArea, + mixedArea, + ... +} + +CommonIEsProvideLocationInformation ::= SEQUENCE { + locationEstimate LocationCoordinates OPTIONAL, + velocityEstimate Velocity OPTIONAL, + locationError LocationError OPTIONAL, + ... +} + +LocationCoordinates ::= CHOICE { + ellipsoidPoint Ellipsoid-Point, + ellipsoidPointWithUncertaintyCircle Ellipsoid-PointWithUncertaintyCircle, + ellipsoidPointWithUncertaintyEllipse EllipsoidPointWithUncertaintyEllipse, + polygon Polygon, + ellipsoidPointWithAltitude EllipsoidPointWithAltitude, + ellipsoidPointWithAltitudeAndUncertaintyEllipsoid + EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, + ellipsoidArc EllipsoidArc, + ... +} + +Velocity ::= CHOICE { + horizontalVelocity HorizontalVelocity, + horizontalWithVerticalVelocity HorizontalWithVerticalVelocity, + horizontalVelocityWithUncertainty HorizontalVelocityWithUncertainty, + horizontalWithVerticalVelocityAndUncertainty + HorizontalWithVerticalVelocityAndUncertainty, + ... +} + +LocationError ::= SEQUENCE { + locationfailurecause LocationFailureCause, + ... +} + +LocationFailureCause ::= ENUMERATED { + undefined, + requestedMethodNotSupported, + positionMethodFailure, + periodicLocationMeasurementsNotAvailable, + ... +} + +CommonIEsAbort ::= SEQUENCE { + abortCause ENUMERATED { + undefined, + stopPeriodicReporting, + targetDeviceAbort, + networkAbort, + ... + } +} + +CommonIEsError ::= SEQUENCE { + errorCause ENUMERATED { + undefined, + lppMessageHeaderError, + lppMessageBodyError, + epduError, + incorrectDataValue, + ... + } +} + +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-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 + ... +} + +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, ...}, + ..., + 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)), + ... + } OPTIONAL -- Need OP +} + +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), + ... +} + +maxFreqLayers INTEGER ::= 3 + +OTDOA-RequestAssistanceData ::= SEQUENCE { + physCellId INTEGER (0..503), + ... +} + +OTDOA-ProvideLocationInformation ::= SEQUENCE { + otdoaSignalMeasurementInformation OTDOA-SignalMeasurementInformation OPTIONAL, + otdoa-Error OTDOA-Error OPTIONAL, + ... +} + +OTDOA-SignalMeasurementInformation ::= SEQUENCE { + systemFrameNumber BIT STRING (SIZE (10)), + physCellIdRef INTEGER (0..503), + cellGlobalIdRef ECGI OPTIONAL, + earfcnRef ARFCN-ValueEUTRA OPTIONAL, + referenceQuality OTDOA-MeasQuality OPTIONAL, + neighbourMeasurementList NeighbourMeasurementList, + ... +} + +NeighbourMeasurementList ::= SEQUENCE (SIZE(1..24)) OF NeighbourMeasurementElement + +NeighbourMeasurementElement ::= SEQUENCE { + physCellIdNeighbor INTEGER (0..503), + cellGlobalIdNeighbour ECGI OPTIONAL, + earfcnNeighbour ARFCN-ValueEUTRA OPTIONAL, + rstd INTEGER (0..12711), + rstd-Quality OTDOA-MeasQuality, + ... +} + +OTDOA-MeasQuality ::= SEQUENCE { + error-Resolution BIT STRING (SIZE (2)), + error-Value BIT STRING (SIZE (5)), + error-NumSamples BIT STRING (SIZE (3)) OPTIONAL, + ... +} + +OTDOA-RequestLocationInformation ::= SEQUENCE { + assistanceAvailability BOOLEAN, + ... +} + +OTDOA-ProvideCapabilities ::= SEQUENCE { + otdoa-Mode BIT STRING { ue-assisted (0) } (SIZE (1..8)), + ..., + supportedBandListEUTRA SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA OPTIONAL +} + +maxBands INTEGER ::= 64 + +SupportedBandEUTRA ::= SEQUENCE { + bandEUTRA INTEGER (1..64) +} + +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-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-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 + ... +} + +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, + ... + }, + 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 + ... + }, + ... + }, + ... +} + +GNSS-ReferenceLocation ::= SEQUENCE { + threeDlocation EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, + ... +} + +GNSS-IonosphericModel ::= SEQUENCE { + klobucharModel KlobucharModelParameter OPTIONAL, -- Need ON + neQuickModel NeQuickModelParameter 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), + ... +} + +NeQuickModelParameter ::= SEQUENCE { + ai0 INTEGER (0..4095), + ai1 INTEGER (0..4095), + ai2 INTEGER (0..4095), + 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-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, + ... +} + +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 + ... +} + +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 + ... +} + +StandardClockModelList ::= SEQUENCE (SIZE(1..2)) OF StandardClockModelElement + +StandardClockModelElement ::= SEQUENCE { + stanClockToc INTEGER (0..16383), + stanClockAF2 INTEGER (-2048..2047), + stanClockAF1 INTEGER (-131072..131071), + stanClockAF0 INTEGER (-134217728..134217727), + stanClockTgd INTEGER (-512..511) OPTIONAL, -- Need ON + 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), + ... +} + +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), + ... +} + +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, + ... +} + +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 +} + +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, + ... +} + +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 + ... +} + +AlmanacKeplerianSet ::= SEQUENCE { + svID SV-ID, + kepAlmanacE INTEGER (0..2047), + kepAlmanacDeltaI INTEGER (-1024..1023), + kepAlmanacOmegaDot INTEGER (-1024..1023), + kepSVHealth INTEGER (0..15), + kepAlmanacAPowerHalf INTEGER (-65536..65535), + kepAlmanacOmega0 INTEGER (-32768..32767), + kepAlmanacW INTEGER (-32768..32767), + kepAlmanacM0 INTEGER (-32768..32767), + kepAlmanacAF0 INTEGER (-8192..8191), + kepAlmanacAF1 INTEGER (-1024..1023), + ... +} + +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), + ... +} + +GNSS-UTC-Model ::= CHOICE { + utcModel1 UTC-ModelSet1, -- Model-1 + utcModel2 UTC-ModelSet2, -- Model-2 + utcModel3 UTC-ModelSet3, -- Model-3 + utcModel4 UTC-ModelSet4, -- Model-4 + ... +} + +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), + ... +} + +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), + ... +} + +GNSS-AuxiliaryInformation ::= CHOICE { + gnss-ID-GPS GNSS-ID-GPS, + gnss-ID-GLONASS GNSS-ID-GLONASS, + ... +} + +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 + ... +} + +A-GNSS-RequestAssistanceData ::= SEQUENCE { + gnss-CommonAssistDataReq GNSS-CommonAssistDataReq OPTIONAL, -- Cond CommonADReq + gnss-GenericAssistDataReq GNSS-GenericAssistDataReq OPTIONAL, -- Cond GenADReq + ... +} + +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-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 + ... +} + +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 + ... +} + +GNSS-EarthOrientationParametersReq ::= 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 { + ... +} + +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, + ... + }, + ... + } 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, + ... +} + +GNSS-LocationInformation ::= SEQUENCE { + measurementReferenceTime MeasurementReferenceTime, + agnss-List GNSS-ID-Bitmap, + ... +} + +A-GNSS-RequestLocationInformation ::= SEQUENCE { + gnss-PositioningInstructions GNSS-PositioningInstructions, + ... +} + +GNSS-PositioningInstructions ::= SEQUENCE { + gnss-Methods GNSS-ID-Bitmap, + fineTimeAssistanceMeasReq BOOLEAN, + adrMeasReq BOOLEAN, + multiFreqMeasReq BOOLEAN, + assistanceAvailability BOOLEAN, + ... +} + +A-GNSS-ProvideCapabilities ::= SEQUENCE { + gnss-SupportList GNSS-SupportList OPTIONAL, + assistanceDataSupportList AssistanceDataSupportList OPTIONAL, + locationCoordinateTypes LocationCoordinateTypes OPTIONAL, + velocityTypes VelocityTypes 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, + ... +} + +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-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) } (SIZE (1..8)), + ... +} + +GNSS-EarthOrientationParametersSupport ::= 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 + ... +} + +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) } (SIZE (1..8)) OPTIONAL, + orbitModel BIT STRING { model-1 (0), + model-2 (1), + model-3 (2), + model-4 (3), + model-5 (4) } (SIZE (1..8)) OPTIONAL, + ... +} + +GNSS-RealTimeIntegritySupport ::= SEQUENCE { + ... +} + +GNSS-DataBitAssistanceSupport ::= SEQUENCE { + ... +} + +GNSS-AcquisitionAssistanceSupport ::= SEQUENCE { + ... +} + +GNSS-AlmanacSupport ::= SEQUENCE { + almanacModel BIT STRING { model-1 (0), + model-2 (1), + model-3 (2), + model-4 (3), + model-5 (4), + model-6 (5) } (SIZE (1..8)) OPTIONAL, + ... +} + +GNSS-UTC-ModelSupport ::= SEQUENCE { + utc-Model BIT STRING { model-1 (0), + model-2 (1), + model-3 (2), + model-4 (3) } (SIZE (1..8)) OPTIONAL, + ... +} + +GNSS-AuxiliaryInformationSupport ::= 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, + ... + }, + ... +} + +GNSS-TargetDeviceErrorCauses ::= SEQUENCE { + cause ENUMERATED { undefined, + thereWereNotEnoughSatellitesReceived, + assistanceDataMissing, + notAllRequestedMeasurementsPossible, + ... + }, + fineTimeAssistanceMeasurementsNotPossible NULL OPTIONAL, + adrMeasurementsNotPossible NULL OPTIONAL, + multiFrequencyMeasurementsNotPossible NULL OPTIONAL, + ... +} + +GNSS-ID ::= SEQUENCE { + gnss-id ENUMERATED{ gps, sbas, qzss, galileo, glonass, ...}, + ... +} + +GNSS-ID-Bitmap ::= SEQUENCE { + gnss-ids BIT STRING { gps (0), + sbas (1), + qzss (2), + galileo (3), + glonass (4) } (SIZE (1..16)), + ... +} + +GNSS-SignalID ::= SEQUENCE { + gnss-SignalID INTEGER (0 .. 7), + ... +} + +GNSS-SignalIDs ::= SEQUENCE { + gnss-SignalIDs BIT STRING (SIZE(8)), + ... +} + +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 { + servingCellMeasuredResults 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, + ... +} + +ECID-RequestLocationInformation ::= SEQUENCE { + requestedMeasurements BIT STRING { rsrpReq (0), + rsrqReq (1), + ueRxTxReq (2) } (SIZE(1..8)), + ... +} + +ECID-ProvideCapabilities ::= SEQUENCE { + ecid-MeasSupported BIT STRING { rsrpSup (0), + rsrqSup (1), + ueRxTxSup (2) } (SIZE(1..8)), + ... +} + +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, + ... +} + +END diff --git a/asn1/lpp/Makefile.am b/asn1/lpp/Makefile.am new file mode 100644 index 0000000000..462af31e88 --- /dev/null +++ b/asn1/lpp/Makefile.am @@ -0,0 +1,26 @@ +# $Id$ +# +# +# Wireshark - Network traffic analyzer +# By Gerald Combs +# Copyright 1998 Gerald Combs +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +include ../Makefile.preinc +include Makefile.common +include ../Makefile.inc + diff --git a/asn1/lpp/Makefile.common b/asn1/lpp/Makefile.common new file mode 100644 index 0000000000..6f89a9a810 --- /dev/null +++ b/asn1/lpp/Makefile.common @@ -0,0 +1,43 @@ +# $Id$ +# +# +# Wireshark - Network traffic analyzer +# By Gerald Combs +# Copyright 1998 Gerald Combs +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +PROTOCOL_NAME = lpp + +EXT_ASN_FILE_LIST = + +ASN_FILE_LIST = \ + LPP.asn + +EXTRA_DIST = \ + Makefile.nmake \ + $(ASN_FILE_LIST) \ + packet-$(PROTOCOL_NAME)-template.c \ + $(PROTOCOL_NAME).cnf + +SRC_FILES = \ + $(EXTRA_DIST) \ + $(EXT_ASN_FILE_LIST) + +A2W_FLAGS = + +EXTRA_CNF = + diff --git a/asn1/lpp/Makefile.nmake b/asn1/lpp/Makefile.nmake new file mode 100644 index 0000000000..5a32997c60 --- /dev/null +++ b/asn1/lpp/Makefile.nmake @@ -0,0 +1,29 @@ +## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake +# +# $Id$ +# +# +# Wireshark - Network traffic analyzer +# By Gerald Combs +# Copyright 1998 Gerald Combs +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +include ../../config.nmake +include ../Makefile.preinc.nmake +include Makefile.common +include ../Makefile.inc.nmake + diff --git a/asn1/lpp/lpp.cnf b/asn1/lpp/lpp.cnf new file mode 100644 index 0000000000..6ccdf21200 --- /dev/null +++ b/asn1/lpp/lpp.cnf @@ -0,0 +1,59 @@ +# lpp.cnf +# llp conformation file +# Copyright 2011 Pascal Quantin +# $Id$ + +#.OPT +PER +UNALIGNED +#.END + +#.PDU_NEW +LPP-Message + +#.FN_HDR LPP-Message + + proto_tree_add_item(tree, proto_lpp, tvb, 0, -1, ENC_NA); + + col_append_str(actx->pinfo->cinfo, COL_PROTOCOL, "/LPP"); +#.END + +# Handle 64 bit constraint +#.FN_PARS NavModelCNAV-KeplerianSet/cnavMo FN_VARIANT = _64b +#.FN_PARS NavModelCNAV-KeplerianSet/cnavE FN_VARIANT = _64b +#.FN_PARS NavModelCNAV-KeplerianSet/cnavOmega FN_VARIANT = _64b +#.FN_PARS NavModelCNAV-KeplerianSet/cnavOMEGA0 FN_VARIANT = _64b +#.FN_PARS NavModelCNAV-KeplerianSet/cnavIo FN_VARIANT = _64b + +#.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"); + diff --git a/asn1/lpp/packet-lpp-template.c b/asn1/lpp/packet-lpp-template.c new file mode 100644 index 0000000000..f066f7c30b --- /dev/null +++ b/asn1/lpp/packet-lpp-template.c @@ -0,0 +1,99 @@ +/* packet-lpp.c + * Routines for 3GPP LTE Positioning Protocol (LLP) packet dissection + * Copyright 2011, Pascal Quantin + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Ref 3GPP TS 36.355 version 9.7.0 Release 9 + * http://www.3gpp.org + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include + +#include "packet-per.h" + +#define PNAME "LTE Positioning Protocol (LLP)" +#define PSNAME "LPP" +#define PFNAME "lpp" + +#ifdef _MSC_VER +/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */ +#pragma warning(disable:4146) +#endif + +/* Initialize the protocol and registered fields */ +static int proto_lpp = -1; + +#include "packet-lpp-hf.c" + +/* Initialize the subtree pointers */ +static gint ett_lpp = -1; +#include "packet-lpp-ett.c" + +/* Include constants */ +#include "packet-lpp-val.h" + + +#include "packet-lpp-fn.c" + + +/*--- proto_register_lpp -------------------------------------------*/ +void proto_register_lpp(void) { + + /* List of fields */ + static hf_register_info hf[] = { + +#include "packet-lpp-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_lpp, +#include "packet-lpp-ettarr.c" + }; + + + /* Register protocol */ + proto_lpp = proto_register_protocol(PNAME, PSNAME, PFNAME); + new_register_dissector("lpp", dissect_LPP_Message_PDU, 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) +{ + +} + + diff --git a/configure.in b/configure.in index d4ea6d8466..0c40bdfbb7 100644 --- a/configure.in +++ b/configure.in @@ -1929,6 +1929,7 @@ AC_OUTPUT( asn1/lcsap/Makefile asn1/ldap/Makefile asn1/logotypecertextn/Makefile + asn1/lpp/Makefile asn1/lte-rrc/Makefile asn1/mms/Makefile asn1/mpeg-audio/Makefile diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common index b3179f9ee0..a0b26ddca8 100644 --- a/epan/dissectors/Makefile.common +++ b/epan/dissectors/Makefile.common @@ -178,6 +178,7 @@ DIRTY_ASN1_DISSECTOR_SRC = \ packet-gprscdr.c \ packet-gsm_map.c \ packet-ldap.c \ + packet-lpp.c \ packet-lte-rrc.c \ packet-nbap.c \ packet-p1.c \ diff --git a/epan/dissectors/packet-lcsap.c b/epan/dissectors/packet-lcsap.c index 2123d0d41c..51bc82e298 100644 --- a/epan/dissectors/packet-lcsap.c +++ b/epan/dissectors/packet-lcsap.c @@ -119,7 +119,7 @@ static int proto_lcsap = -1; /*--- Included file: packet-lcsap-hf.c ---*/ #line 1 "../../asn1/lcsap/packet-lcsap-hf.c" static int hf_lcsap_Accuracy_Fulfillment_Indicator_PDU = -1; /* Accuracy_Fulfillment_Indicator */ -static int hf_lcsap_Correlation_ID_PDU = -1; /* Correlation_ID */ +static int hf_lcsap_lcsap_Correlation_ID_PDU = -1; /* Correlation_ID */ static int hf_lcsap_E_CGI_PDU = -1; /* E_CGI */ static int hf_lcsap_Geographical_Area_PDU = -1; /* Geographical_Area */ static int hf_lcsap_IMSI_PDU = -1; /* IMSI */ @@ -340,7 +340,7 @@ dissect_lcsap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, &ProcedureCode, FALSE); -#line 64 "../../asn1/lcsap/lcsap.cnf" +#line 65 "../../asn1/lcsap/lcsap.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)) { @@ -418,7 +418,7 @@ dissect_lcsap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 65535U, &ProtocolIE_ID, FALSE); -#line 52 "../../asn1/lcsap/lcsap.cnf" +#line 53 "../../asn1/lcsap/lcsap.cnf" if (tree) { proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(lcsap_ProtocolIE_ID_vals), "unknown (%d)")); } @@ -646,7 +646,7 @@ dissect_lcsap_DegreesLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_lcsap_PLMN_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 135 "../../asn1/lcsap/lcsap.cnf" +#line 136 "../../asn1/lcsap/lcsap.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 3, 3, FALSE, ¶meter_tvb); @@ -1791,11 +1791,11 @@ static int dissect_Accuracy_Fulfillment_Indicator_PDU(tvbuff_t *tvb _U_, packet_ offset += 7; offset >>= 3; return offset; } -static int dissect_Correlation_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { +int dissect_lcsap_Correlation_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); - offset = dissect_lcsap_Correlation_ID(tvb, offset, &asn1_ctx, tree, hf_lcsap_Correlation_ID_PDU); + offset = dissect_lcsap_Correlation_ID(tvb, offset, &asn1_ctx, tree, hf_lcsap_lcsap_Correlation_ID_PDU); offset += 7; offset >>= 3; return offset; } @@ -2077,7 +2077,7 @@ proto_reg_handoff_lcsap(void) dissector_add_uint("lcsap.ies", id_Destination_ID, new_create_dissector_handle(dissect_Network_Element_PDU, proto_lcsap)); dissector_add_uint("lcsap.ies", id_Source_Identity, new_create_dissector_handle(dissect_Network_Element_PDU, proto_lcsap)); dissector_add_uint("lcsap.ies", id_Location_Estimate, new_create_dissector_handle(dissect_Geographical_Area_PDU, proto_lcsap)); - dissector_add_uint("lcsap.ies", id_Correlation_ID, new_create_dissector_handle(dissect_Correlation_ID_PDU, proto_lcsap)); + dissector_add_uint("lcsap.ies", id_Correlation_ID, new_create_dissector_handle(dissect_lcsap_Correlation_ID_PDU, proto_lcsap)); dissector_add_uint("lcsap.ies", id_Location_Type, new_create_dissector_handle(dissect_Location_Type_PDU, proto_lcsap)); dissector_add_uint("lcsap.ies", id_E_UTRAN_Cell_Identifier, new_create_dissector_handle(dissect_E_CGI_PDU, proto_lcsap)); dissector_add_uint("lcsap.ies", id_LCS_Priority, new_create_dissector_handle(dissect_LCS_Priority_PDU, proto_lcsap)); @@ -2132,7 +2132,7 @@ void proto_register_lcsap(void) { { "Accuracy-Fulfillment-Indicator", "lcsap.Accuracy_Fulfillment_Indicator", FT_UINT32, BASE_DEC, VALS(lcsap_Accuracy_Fulfillment_Indicator_vals), 0, NULL, HFILL }}, - { &hf_lcsap_Correlation_ID_PDU, + { &hf_lcsap_lcsap_Correlation_ID_PDU, { "Correlation-ID", "lcsap.Correlation_ID", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, diff --git a/epan/dissectors/packet-lcsap.h b/epan/dissectors/packet-lcsap.h new file mode 100644 index 0000000000..9528ebd875 --- /dev/null +++ b/epan/dissectors/packet-lcsap.h @@ -0,0 +1,48 @@ +/* Do not modify this file. */ +/* It is created automatically by the ASN.1 to Wireshark dissector compiler */ +/* packet-lcsap.h */ +/* ../../tools/asn2wrs.py -p lcsap -c ./lcsap.cnf -s ./packet-lcsap-template -D . -O ../../epan/dissectors LCS-AP-CommonDataTypes.asn LCS-AP-Constants.asn LCS-AP-Containers.asn LCS-AP-IEs.asn LCS-AP-PDU-Contents.asn LCS-AP-PDU-Descriptions.asn */ + +/* Input file: packet-lcsap-template.h */ + +#line 1 "../../asn1/lcsap/packet-lcsap-template.h" +/* packet-lcsap.c + * Routines for LCS-AP packet dissembly. + * + * Copyright (c) 2011 by Spenser Sheng + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs + * Copyright 1999 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * References: + * ETSI TS 129 171 V9.2.0 (2010-10) + */ + +#ifndef PACKET_LCSAP_H +#define PACKET_LCSAP_H + + +/*--- Included file: packet-lcsap-exp.h ---*/ +#line 1 "../../asn1/lcsap/packet-lcsap-exp.h" +int dissect_lcsap_Correlation_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_); + +/*--- End of included file: packet-lcsap-exp.h ---*/ +#line 33 "../../asn1/lcsap/packet-lcsap-template.h" + +#endif /* PACKET_LCSAP_H */ diff --git a/epan/dissectors/packet-lpp.c b/epan/dissectors/packet-lpp.c new file mode 100644 index 0000000000..383db5f7ca --- /dev/null +++ b/epan/dissectors/packet-lpp.c @@ -0,0 +1,11500 @@ +/* Do not modify this file. */ +/* It is created automatically by the ASN.1 to Wireshark dissector compiler */ +/* packet-lpp.c */ +/* ../../tools/asn2wrs.py -p lpp -c ./lpp.cnf -s ./packet-lpp-template -D . -O ../../epan/dissectors LPP.asn */ + +/* Input file: packet-lpp-template.c */ + +#line 1 "../../asn1/lpp/packet-lpp-template.c" +/* packet-lpp.c + * Routines for 3GPP LTE Positioning Protocol (LLP) packet dissection + * Copyright 2011, Pascal Quantin + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Ref 3GPP TS 36.355 version 9.7.0 Release 9 + * http://www.3gpp.org + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include + +#include "packet-per.h" + +#define PNAME "LTE Positioning Protocol (LLP)" +#define PSNAME "LPP" +#define PFNAME "lpp" + +#ifdef _MSC_VER +/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */ +#pragma warning(disable:4146) +#endif + +/* Initialize the protocol and registered fields */ +static int proto_lpp = -1; + + +/*--- Included file: packet-lpp-hf.c ---*/ +#line 1 "../../asn1/lpp/packet-lpp-hf.c" +static int hf_lpp_LPP_Message_PDU = -1; /* LPP_Message */ +static int hf_lpp_transactionID = -1; /* LPP_TransactionID */ +static int hf_lpp_endTransaction = -1; /* BOOLEAN */ +static int hf_lpp_sequenceNumber = -1; /* SequenceNumber */ +static int hf_lpp_acknowledgement = -1; /* Acknowledgement */ +static int hf_lpp_lpp_MessageBody = -1; /* LPP_MessageBody */ +static int hf_lpp_ackRequested = -1; /* BOOLEAN */ +static int hf_lpp_ackIndicator = -1; /* SequenceNumber */ +static int hf_lpp_c1 = -1; /* T_c1 */ +static int hf_lpp_requestCapabilities = -1; /* RequestCapabilities */ +static int hf_lpp_provideCapabilities = -1; /* ProvideCapabilities */ +static int hf_lpp_requestAssistanceData = -1; /* RequestAssistanceData */ +static int hf_lpp_provideAssistanceData = -1; /* ProvideAssistanceData */ +static int hf_lpp_requestLocationInformation = -1; /* RequestLocationInformation */ +static int hf_lpp_provideLocationInformation = -1; /* ProvideLocationInformation */ +static int hf_lpp_abort = -1; /* Abort */ +static int hf_lpp_error = -1; /* Error */ +static int hf_lpp_spare7 = -1; /* NULL */ +static int hf_lpp_spare6 = -1; /* NULL */ +static int hf_lpp_spare5 = -1; /* NULL */ +static int hf_lpp_spare4 = -1; /* NULL */ +static int hf_lpp_spare3 = -1; /* NULL */ +static int hf_lpp_spare2 = -1; /* NULL */ +static int hf_lpp_spare1 = -1; /* NULL */ +static int hf_lpp_spare0 = -1; /* NULL */ +static int hf_lpp_messageClassExtension = -1; /* T_messageClassExtension */ +static int hf_lpp_initiator = -1; /* Initiator */ +static int hf_lpp_transactionNumber = -1; /* TransactionNumber */ +static int hf_lpp_criticalExtensions = -1; /* T_criticalExtensions */ +static int hf_lpp_c1_01 = -1; /* T_c1_01 */ +static int hf_lpp_requestCapabilities_r9 = -1; /* RequestCapabilities_r9_IEs */ +static int hf_lpp_criticalExtensionsFuture = -1; /* T_criticalExtensionsFuture */ +static int hf_lpp_commonIEsRequestCapabilities = -1; /* CommonIEsRequestCapabilities */ +static int hf_lpp_a_gnss_RequestCapabilities = -1; /* A_GNSS_RequestCapabilities */ +static int hf_lpp_otdoa_RequestCapabilities = -1; /* OTDOA_RequestCapabilities */ +static int hf_lpp_ecid_RequestCapabilities = -1; /* ECID_RequestCapabilities */ +static int hf_lpp_epdu_RequestCapabilities = -1; /* EPDU_Sequence */ +static int hf_lpp_criticalExtensions_01 = -1; /* T_criticalExtensions_01 */ +static int hf_lpp_c1_02 = -1; /* T_c1_02 */ +static int hf_lpp_provideCapabilities_r9 = -1; /* ProvideCapabilities_r9_IEs */ +static int hf_lpp_criticalExtensionsFuture_01 = -1; /* T_criticalExtensionsFuture_01 */ +static int hf_lpp_commonIEsProvideCapabilities = -1; /* CommonIEsProvideCapabilities */ +static int hf_lpp_a_gnss_ProvideCapabilities = -1; /* A_GNSS_ProvideCapabilities */ +static int hf_lpp_otdoa_ProvideCapabilities = -1; /* OTDOA_ProvideCapabilities */ +static int hf_lpp_ecid_ProvideCapabilities = -1; /* ECID_ProvideCapabilities */ +static int hf_lpp_epdu_ProvideCapabilities = -1; /* EPDU_Sequence */ +static int hf_lpp_criticalExtensions_02 = -1; /* T_criticalExtensions_02 */ +static int hf_lpp_c1_03 = -1; /* T_c1_03 */ +static int hf_lpp_requestAssistanceData_r9 = -1; /* RequestAssistanceData_r9_IEs */ +static int hf_lpp_criticalExtensionsFuture_02 = -1; /* T_criticalExtensionsFuture_02 */ +static int hf_lpp_commonIEsRequestAssistanceData = -1; /* CommonIEsRequestAssistanceData */ +static int hf_lpp_a_gnss_RequestAssistanceData = -1; /* A_GNSS_RequestAssistanceData */ +static int hf_lpp_otdoa_RequestAssistanceData = -1; /* OTDOA_RequestAssistanceData */ +static int hf_lpp_epdu_RequestAssistanceData = -1; /* EPDU_Sequence */ +static int hf_lpp_criticalExtensions_03 = -1; /* T_criticalExtensions_03 */ +static int hf_lpp_c1_04 = -1; /* T_c1_04 */ +static int hf_lpp_provideAssistanceData_r9 = -1; /* ProvideAssistanceData_r9_IEs */ +static int hf_lpp_criticalExtensionsFuture_03 = -1; /* T_criticalExtensionsFuture_03 */ +static int hf_lpp_commonIEsProvideAssistanceData = -1; /* CommonIEsProvideAssistanceData */ +static int hf_lpp_a_gnss_ProvideAssistanceData = -1; /* A_GNSS_ProvideAssistanceData */ +static int hf_lpp_otdoa_ProvideAssistanceData = -1; /* OTDOA_ProvideAssistanceData */ +static int hf_lpp_epdu_Provide_Assistance_Data = -1; /* EPDU_Sequence */ +static int hf_lpp_criticalExtensions_04 = -1; /* T_criticalExtensions_04 */ +static int hf_lpp_c1_05 = -1; /* T_c1_05 */ +static int hf_lpp_requestLocationInformation_r9 = -1; /* RequestLocationInformation_r9_IEs */ +static int hf_lpp_criticalExtensionsFuture_04 = -1; /* T_criticalExtensionsFuture_04 */ +static int hf_lpp_commonIEsRequestLocationInformation = -1; /* CommonIEsRequestLocationInformation */ +static int hf_lpp_a_gnss_RequestLocationInformation = -1; /* A_GNSS_RequestLocationInformation */ +static int hf_lpp_otdoa_RequestLocationInformation = -1; /* OTDOA_RequestLocationInformation */ +static int hf_lpp_ecid_RequestLocationInformation = -1; /* ECID_RequestLocationInformation */ +static int hf_lpp_epdu_RequestLocationInformation = -1; /* EPDU_Sequence */ +static int hf_lpp_criticalExtensions_05 = -1; /* T_criticalExtensions_05 */ +static int hf_lpp_c1_06 = -1; /* T_c1_06 */ +static int hf_lpp_provideLocationInformation_r9 = -1; /* ProvideLocationInformation_r9_IEs */ +static int hf_lpp_criticalExtensionsFuture_05 = -1; /* T_criticalExtensionsFuture_05 */ +static int hf_lpp_commonIEsProvideLocationInformation = -1; /* CommonIEsProvideLocationInformation */ +static int hf_lpp_a_gnss_ProvideLocationInformation = -1; /* A_GNSS_ProvideLocationInformation */ +static int hf_lpp_otdoa_ProvideLocationInformation = -1; /* OTDOA_ProvideLocationInformation */ +static int hf_lpp_ecid_ProvideLocationInformation = -1; /* ECID_ProvideLocationInformation */ +static int hf_lpp_epdu_ProvideLocationInformation = -1; /* EPDU_Sequence */ +static int hf_lpp_criticalExtensions_06 = -1; /* T_criticalExtensions_06 */ +static int hf_lpp_c1_07 = -1; /* T_c1_07 */ +static int hf_lpp_abort_r9 = -1; /* Abort_r9_IEs */ +static int hf_lpp_criticalExtensionsFuture_06 = -1; /* T_criticalExtensionsFuture_06 */ +static int hf_lpp_commonIEsAbort = -1; /* CommonIEsAbort */ +static int hf_lpp_epdu_Abort = -1; /* EPDU_Sequence */ +static int hf_lpp_error_r9 = -1; /* Error_r9_IEs */ +static int hf_lpp_criticalExtensionsFuture_07 = -1; /* T_criticalExtensionsFuture_07 */ +static int hf_lpp_commonIEsError = -1; /* CommonIEsError */ +static int hf_lpp_epdu_Error = -1; /* EPDU_Sequence */ +static int hf_lpp_accessTypes = -1; /* T_accessTypes */ +static int hf_lpp_plmn_Identity = -1; /* T_plmn_Identity */ +static int hf_lpp_mcc = -1; /* T_mcc */ +static int hf_lpp_mcc_item = -1; /* INTEGER_0_9 */ +static int hf_lpp_mnc = -1; /* T_mnc */ +static int hf_lpp_mnc_item = -1; /* INTEGER_0_9 */ +static int hf_lpp_cellIdentity = -1; /* T_cellIdentity */ +static int hf_lpp_eutra = -1; /* BIT_STRING_SIZE_28 */ +static int hf_lpp_utra = -1; /* BIT_STRING_SIZE_32 */ +static int hf_lpp_plmn_Identity_01 = -1; /* T_plmn_Identity_01 */ +static int hf_lpp_mcc_01 = -1; /* T_mcc_01 */ +static int hf_lpp_mnc_01 = -1; /* T_mnc_01 */ +static int hf_lpp_locationAreaCode = -1; /* BIT_STRING_SIZE_16 */ +static int hf_lpp_cellIdentity_01 = -1; /* BIT_STRING_SIZE_16 */ +static int hf_lpp_mcc_02 = -1; /* T_mcc_02 */ +static int hf_lpp_mnc_02 = -1; /* T_mnc_02 */ +static int hf_lpp_cellidentity = -1; /* BIT_STRING_SIZE_28 */ +static int hf_lpp_latitudeSign = -1; /* T_latitudeSign */ +static int hf_lpp_degreesLatitude = -1; /* INTEGER_0_8388607 */ +static int hf_lpp_degreesLongitude = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_latitudeSign_01 = -1; /* T_latitudeSign_01 */ +static int hf_lpp_uncertainty = -1; /* INTEGER_0_127 */ +static int hf_lpp_latitudeSign_02 = -1; /* T_latitudeSign_02 */ +static int hf_lpp_uncertaintySemiMajor = -1; /* INTEGER_0_127 */ +static int hf_lpp_uncertaintySemiMinor = -1; /* INTEGER_0_127 */ +static int hf_lpp_orientationMajorAxis = -1; /* INTEGER_0_179 */ +static int hf_lpp_confidence = -1; /* INTEGER_0_100 */ +static int hf_lpp_latitudeSign_03 = -1; /* T_latitudeSign_03 */ +static int hf_lpp_altitudeDirection = -1; /* T_altitudeDirection */ +static int hf_lpp_altitude = -1; /* INTEGER_0_32767 */ +static int hf_lpp_latitudeSign_04 = -1; /* T_latitudeSign_04 */ +static int hf_lpp_altitudeDirection_01 = -1; /* T_altitudeDirection_01 */ +static int hf_lpp_uncertaintyAltitude = -1; /* INTEGER_0_127 */ +static int hf_lpp_latitudeSign_05 = -1; /* T_latitudeSign_05 */ +static int hf_lpp_innerRadius = -1; /* INTEGER_0_65535 */ +static int hf_lpp_uncertaintyRadius = -1; /* INTEGER_0_127 */ +static int hf_lpp_offsetAngle = -1; /* INTEGER_0_179 */ +static int hf_lpp_includedAngle = -1; /* INTEGER_0_179 */ +static int hf_lpp_EPDU_Sequence_item = -1; /* EPDU */ +static int hf_lpp_ePDU_Identifier = -1; /* EPDU_Identifier */ +static int hf_lpp_ePDU_Body = -1; /* EPDU_Body */ +static int hf_lpp_ePDU_ID = -1; /* EPDU_ID */ +static int hf_lpp_ePDU_Name = -1; /* EPDU_Name */ +static int hf_lpp_bearing = -1; /* INTEGER_0_359 */ +static int hf_lpp_horizontalSpeed = -1; /* INTEGER_0_2047 */ +static int hf_lpp_verticalDirection = -1; /* T_verticalDirection */ +static int hf_lpp_verticalSpeed = -1; /* INTEGER_0_255 */ +static int hf_lpp_uncertaintySpeed = -1; /* INTEGER_0_255 */ +static int hf_lpp_verticalDirection_01 = -1; /* T_verticalDirection_01 */ +static int hf_lpp_horizontalUncertaintySpeed = -1; /* INTEGER_0_255 */ +static int hf_lpp_verticalUncertaintySpeed = -1; /* INTEGER_0_255 */ +static int hf_lpp_ellipsoidPoint = -1; /* BOOLEAN */ +static int hf_lpp_ellipsoidPointWithUncertaintyCircle = -1; /* BOOLEAN */ +static int hf_lpp_ellipsoidPointWithUncertaintyEllipse = -1; /* BOOLEAN */ +static int hf_lpp_polygon = -1; /* BOOLEAN */ +static int hf_lpp_ellipsoidPointWithAltitude = -1; /* BOOLEAN */ +static int hf_lpp_ellipsoidPointWithAltitudeAndUncertaintyEllipsoid = -1; /* BOOLEAN */ +static int hf_lpp_ellipsoidArc = -1; /* BOOLEAN */ +static int hf_lpp_Polygon_item = -1; /* PolygonPoints */ +static int hf_lpp_latitudeSign_06 = -1; /* T_latitudeSign_06 */ +static int hf_lpp_posModes = -1; /* T_posModes */ +static int hf_lpp_horizontalVelocity = -1; /* BOOLEAN */ +static int hf_lpp_horizontalWithVerticalVelocity = -1; /* BOOLEAN */ +static int hf_lpp_horizontalVelocityWithUncertainty = -1; /* BOOLEAN */ +static int hf_lpp_horizontalWithVerticalVelocityAndUncertainty = -1; /* BOOLEAN */ +static int hf_lpp_servingCellID = -1; /* ECGI */ +static int hf_lpp_locationInformationType = -1; /* LocationInformationType */ +static int hf_lpp_triggeredReporting = -1; /* TriggeredReportingCriteria */ +static int hf_lpp_periodicalReporting = -1; /* PeriodicalReportingCriteria */ +static int hf_lpp_additionalInformation = -1; /* AdditionalInformation */ +static int hf_lpp_qos = -1; /* QoS */ +static int hf_lpp_environment = -1; /* Environment */ +static int hf_lpp_locationCoordinateTypes = -1; /* LocationCoordinateTypes */ +static int hf_lpp_velocityTypes = -1; /* VelocityTypes */ +static int hf_lpp_reportingAmount = -1; /* T_reportingAmount */ +static int hf_lpp_reportingInterval = -1; /* T_reportingInterval */ +static int hf_lpp_cellChange = -1; /* BOOLEAN */ +static int hf_lpp_reportingDuration = -1; /* ReportingDuration */ +static int hf_lpp_horizontalAccuracy = -1; /* HorizontalAccuracy */ +static int hf_lpp_verticalCoordinateRequest = -1; /* BOOLEAN */ +static int hf_lpp_verticalAccuracy = -1; /* VerticalAccuracy */ +static int hf_lpp_responseTime = -1; /* ResponseTime */ +static int hf_lpp_velocityRequest = -1; /* BOOLEAN */ +static int hf_lpp_accuracy = -1; /* INTEGER_0_127 */ +static int hf_lpp_time = -1; /* INTEGER_1_128 */ +static int hf_lpp_locationEstimate = -1; /* LocationCoordinates */ +static int hf_lpp_velocityEstimate = -1; /* Velocity */ +static int hf_lpp_locationError = -1; /* LocationError */ +static int hf_lpp_ellipsoidPoint_01 = -1; /* Ellipsoid_Point */ +static int hf_lpp_ellipsoidPointWithUncertaintyCircle_01 = -1; /* Ellipsoid_PointWithUncertaintyCircle */ +static int hf_lpp_ellipsoidPointWithUncertaintyEllipse_01 = -1; /* EllipsoidPointWithUncertaintyEllipse */ +static int hf_lpp_polygon_01 = -1; /* Polygon */ +static int hf_lpp_ellipsoidPointWithAltitude_01 = -1; /* EllipsoidPointWithAltitude */ +static int hf_lpp_ellipsoidPointWithAltitudeAndUncertaintyEllipsoid_01 = -1; /* EllipsoidPointWithAltitudeAndUncertaintyEllipsoid */ +static int hf_lpp_ellipsoidArc_01 = -1; /* EllipsoidArc */ +static int hf_lpp_horizontalVelocity_01 = -1; /* HorizontalVelocity */ +static int hf_lpp_horizontalWithVerticalVelocity_01 = -1; /* HorizontalWithVerticalVelocity */ +static int hf_lpp_horizontalVelocityWithUncertainty_01 = -1; /* HorizontalVelocityWithUncertainty */ +static int hf_lpp_horizontalWithVerticalVelocityAndUncertainty_01 = -1; /* HorizontalWithVerticalVelocityAndUncertainty */ +static int hf_lpp_locationfailurecause = -1; /* LocationFailureCause */ +static int hf_lpp_abortCause = -1; /* T_abortCause */ +static int hf_lpp_errorCause = -1; /* T_errorCause */ +static int hf_lpp_otdoa_ReferenceCellInfo = -1; /* OTDOA_ReferenceCellInfo */ +static int hf_lpp_otdoa_NeighbourCellInfo = -1; /* OTDOA_NeighbourCellInfoList */ +static int hf_lpp_otdoa_Error = -1; /* OTDOA_Error */ +static int hf_lpp_physCellId = -1; /* INTEGER_0_503 */ +static int hf_lpp_cellGlobalId = -1; /* ECGI */ +static int hf_lpp_earfcnRef = -1; /* ARFCN_ValueEUTRA */ +static int hf_lpp_antennaPortConfig = -1; /* T_antennaPortConfig */ +static int hf_lpp_cpLength = -1; /* T_cpLength */ +static int hf_lpp_prsInfo = -1; /* PRS_Info */ +static int hf_lpp_prs_Bandwidth = -1; /* T_prs_Bandwidth */ +static int hf_lpp_prs_ConfigurationIndex = -1; /* INTEGER_0_4095 */ +static int hf_lpp_numDL_Frames = -1; /* T_numDL_Frames */ +static int hf_lpp_prs_MutingInfo_r9 = -1; /* T_prs_MutingInfo_r9 */ +static int hf_lpp_po2_r9 = -1; /* BIT_STRING_SIZE_2 */ +static int hf_lpp_po4_r9 = -1; /* BIT_STRING_SIZE_4 */ +static int hf_lpp_po8_r9 = -1; /* BIT_STRING_SIZE_8 */ +static int hf_lpp_po16_r9 = -1; /* BIT_STRING_SIZE_16 */ +static int hf_lpp_OTDOA_NeighbourCellInfoList_item = -1; /* OTDOA_NeighbourFreqInfo */ +static int hf_lpp_OTDOA_NeighbourFreqInfo_item = -1; /* OTDOA_NeighbourCellInfoElement */ +static int hf_lpp_earfcn = -1; /* ARFCN_ValueEUTRA */ +static int hf_lpp_cpLength_01 = -1; /* T_cpLength_01 */ +static int hf_lpp_antennaPortConfig_01 = -1; /* T_antennaPortConfig_01 */ +static int hf_lpp_slotNumberOffset = -1; /* INTEGER_0_19 */ +static int hf_lpp_prs_SubframeOffset = -1; /* INTEGER_0_1279 */ +static int hf_lpp_expectedRSTD = -1; /* INTEGER_0_16383 */ +static int hf_lpp_expectedRSTD_Uncertainty = -1; /* INTEGER_0_1023 */ +static int hf_lpp_otdoaSignalMeasurementInformation = -1; /* OTDOA_SignalMeasurementInformation */ +static int hf_lpp_systemFrameNumber = -1; /* BIT_STRING_SIZE_10 */ +static int hf_lpp_physCellIdRef = -1; /* INTEGER_0_503 */ +static int hf_lpp_cellGlobalIdRef = -1; /* ECGI */ +static int hf_lpp_referenceQuality = -1; /* OTDOA_MeasQuality */ +static int hf_lpp_neighbourMeasurementList = -1; /* NeighbourMeasurementList */ +static int hf_lpp_NeighbourMeasurementList_item = -1; /* NeighbourMeasurementElement */ +static int hf_lpp_physCellIdNeighbor = -1; /* INTEGER_0_503 */ +static int hf_lpp_cellGlobalIdNeighbour = -1; /* ECGI */ +static int hf_lpp_earfcnNeighbour = -1; /* ARFCN_ValueEUTRA */ +static int hf_lpp_rstd = -1; /* INTEGER_0_12711 */ +static int hf_lpp_rstd_Quality = -1; /* OTDOA_MeasQuality */ +static int hf_lpp_error_Resolution = -1; /* BIT_STRING_SIZE_2 */ +static int hf_lpp_error_Value = -1; /* BIT_STRING_SIZE_5 */ +static int hf_lpp_error_NumSamples = -1; /* BIT_STRING_SIZE_3 */ +static int hf_lpp_assistanceAvailability = -1; /* BOOLEAN */ +static int hf_lpp_otdoa_Mode = -1; /* T_otdoa_Mode */ +static int hf_lpp_supportedBandListEUTRA = -1; /* SEQUENCE_SIZE_1_maxBands_OF_SupportedBandEUTRA */ +static int hf_lpp_supportedBandListEUTRA_item = -1; /* SupportedBandEUTRA */ +static int hf_lpp_bandEUTRA = -1; /* INTEGER_1_64 */ +static int hf_lpp_locationServerErrorCauses = -1; /* OTDOA_LocationServerErrorCauses */ +static int hf_lpp_targetDeviceErrorCauses = -1; /* OTDOA_TargetDeviceErrorCauses */ +static int hf_lpp_cause = -1; /* T_cause */ +static int hf_lpp_cause_01 = -1; /* T_cause_01 */ +static int hf_lpp_gnss_CommonAssistData = -1; /* GNSS_CommonAssistData */ +static int hf_lpp_gnss_GenericAssistData = -1; /* GNSS_GenericAssistData */ +static int hf_lpp_gnss_Error = -1; /* A_GNSS_Error */ +static int hf_lpp_gnss_ReferenceTime = -1; /* GNSS_ReferenceTime */ +static int hf_lpp_gnss_ReferenceLocation = -1; /* GNSS_ReferenceLocation */ +static int hf_lpp_gnss_IonosphericModel = -1; /* GNSS_IonosphericModel */ +static int hf_lpp_gnss_EarthOrientationParameters = -1; /* GNSS_EarthOrientationParameters */ +static int hf_lpp_GNSS_GenericAssistData_item = -1; /* GNSS_GenericAssistDataElement */ +static int hf_lpp_gnss_ID = -1; /* GNSS_ID */ +static int hf_lpp_sbas_ID = -1; /* SBAS_ID */ +static int hf_lpp_gnss_TimeModels = -1; /* GNSS_TimeModelList */ +static int hf_lpp_gnss_DifferentialCorrections = -1; /* GNSS_DifferentialCorrections */ +static int hf_lpp_gnss_NavigationModel = -1; /* GNSS_NavigationModel */ +static int hf_lpp_gnss_RealTimeIntegrity = -1; /* GNSS_RealTimeIntegrity */ +static int hf_lpp_gnss_DataBitAssistance = -1; /* GNSS_DataBitAssistance */ +static int hf_lpp_gnss_AcquisitionAssistance = -1; /* GNSS_AcquisitionAssistance */ +static int hf_lpp_gnss_Almanac = -1; /* GNSS_Almanac */ +static int hf_lpp_gnss_UTC_Model = -1; /* GNSS_UTC_Model */ +static int hf_lpp_gnss_AuxiliaryInformation = -1; /* GNSS_AuxiliaryInformation */ +static int hf_lpp_gnss_SystemTime = -1; /* GNSS_SystemTime */ +static int hf_lpp_referenceTimeUnc = -1; /* INTEGER_0_127 */ +static int hf_lpp_gnss_ReferenceTimeForCells = -1; /* SEQUENCE_SIZE_1_16_OF_GNSS_ReferenceTimeForOneCell */ +static int hf_lpp_gnss_ReferenceTimeForCells_item = -1; /* GNSS_ReferenceTimeForOneCell */ +static int hf_lpp_networkTime = -1; /* NetworkTime */ +static int hf_lpp_bsAlign = -1; /* T_bsAlign */ +static int hf_lpp_gnss_TimeID = -1; /* GNSS_ID */ +static int hf_lpp_gnss_DayNumber = -1; /* INTEGER_0_32767 */ +static int hf_lpp_gnss_TimeOfDay = -1; /* INTEGER_0_86399 */ +static int hf_lpp_gnss_TimeOfDayFrac_msec = -1; /* INTEGER_0_999 */ +static int hf_lpp_notificationOfLeapSecond = -1; /* BIT_STRING_SIZE_2 */ +static int hf_lpp_gps_TOW_Assist = -1; /* GPS_TOW_Assist */ +static int hf_lpp_GPS_TOW_Assist_item = -1; /* GPS_TOW_AssistElement */ +static int hf_lpp_satelliteID = -1; /* INTEGER_1_64 */ +static int hf_lpp_tlmWord = -1; /* INTEGER_0_16383 */ +static int hf_lpp_antiSpoof = -1; /* INTEGER_0_1 */ +static int hf_lpp_alert = -1; /* INTEGER_0_1 */ +static int hf_lpp_tlmRsvdBits = -1; /* INTEGER_0_3 */ +static int hf_lpp_secondsFromFrameStructureStart = -1; /* INTEGER_0_12533 */ +static int hf_lpp_fractionalSecondsFromFrameStructureStart = -1; /* INTEGER_0_3999999 */ +static int hf_lpp_frameDrift = -1; /* INTEGER_M64_63 */ +static int hf_lpp_cellID = -1; /* T_cellID */ +static int hf_lpp_eUTRA = -1; /* T_eUTRA */ +static int hf_lpp_cellGlobalIdEUTRA = -1; /* CellGlobalIdEUTRA_AndUTRA */ +static int hf_lpp_uTRA = -1; /* T_uTRA */ +static int hf_lpp_mode = -1; /* T_mode */ +static int hf_lpp_fdd = -1; /* T_fdd */ +static int hf_lpp_primary_CPICH_Info = -1; /* INTEGER_0_511 */ +static int hf_lpp_tdd = -1; /* T_tdd */ +static int hf_lpp_cellParameters = -1; /* INTEGER_0_127 */ +static int hf_lpp_cellGlobalIdUTRA = -1; /* CellGlobalIdEUTRA_AndUTRA */ +static int hf_lpp_uarfcn = -1; /* ARFCN_ValueUTRA */ +static int hf_lpp_gSM = -1; /* T_gSM */ +static int hf_lpp_bcchCarrier = -1; /* INTEGER_0_1023 */ +static int hf_lpp_bsic = -1; /* INTEGER_0_63 */ +static int hf_lpp_cellGlobalIdGERAN = -1; /* CellGlobalIdGERAN */ +static int hf_lpp_threeDlocation = -1; /* EllipsoidPointWithAltitudeAndUncertaintyEllipsoid */ +static int hf_lpp_klobucharModel = -1; /* KlobucharModelParameter */ +static int hf_lpp_neQuickModel = -1; /* NeQuickModelParameter */ +static int hf_lpp_dataID = -1; /* BIT_STRING_SIZE_2 */ +static int hf_lpp_alfa0 = -1; /* INTEGER_M128_127 */ +static int hf_lpp_alfa1 = -1; /* INTEGER_M128_127 */ +static int hf_lpp_alfa2 = -1; /* INTEGER_M128_127 */ +static int hf_lpp_alfa3 = -1; /* INTEGER_M128_127 */ +static int hf_lpp_beta0 = -1; /* INTEGER_M128_127 */ +static int hf_lpp_beta1 = -1; /* INTEGER_M128_127 */ +static int hf_lpp_beta2 = -1; /* INTEGER_M128_127 */ +static int hf_lpp_beta3 = -1; /* INTEGER_M128_127 */ +static int hf_lpp_ai0 = -1; /* INTEGER_0_4095 */ +static int hf_lpp_ai1 = -1; /* INTEGER_0_4095 */ +static int hf_lpp_ai2 = -1; /* INTEGER_0_4095 */ +static int hf_lpp_ionoStormFlag1 = -1; /* INTEGER_0_1 */ +static int hf_lpp_ionoStormFlag2 = -1; /* INTEGER_0_1 */ +static int hf_lpp_ionoStormFlag3 = -1; /* INTEGER_0_1 */ +static int hf_lpp_ionoStormFlag4 = -1; /* INTEGER_0_1 */ +static int hf_lpp_ionoStormFlag5 = -1; /* INTEGER_0_1 */ +static int hf_lpp_teop = -1; /* INTEGER_0_65535 */ +static int hf_lpp_pmX = -1; /* INTEGER_M1048576_1048575 */ +static int hf_lpp_pmXdot = -1; /* INTEGER_M16384_16383 */ +static int hf_lpp_pmY = -1; /* INTEGER_M1048576_1048575 */ +static int hf_lpp_pmYdot = -1; /* INTEGER_M16384_16383 */ +static int hf_lpp_deltaUT1 = -1; /* INTEGER_M1073741824_1073741823 */ +static int hf_lpp_deltaUT1dot = -1; /* INTEGER_M262144_262143 */ +static int hf_lpp_GNSS_TimeModelList_item = -1; /* GNSS_TimeModelElement */ +static int hf_lpp_gnss_TimeModelRefTime = -1; /* INTEGER_0_65535 */ +static int hf_lpp_tA0 = -1; /* INTEGER_M67108864_67108863 */ +static int hf_lpp_tA1 = -1; /* INTEGER_M4096_4095 */ +static int hf_lpp_tA2 = -1; /* INTEGER_M64_63 */ +static int hf_lpp_gnss_TO_ID = -1; /* INTEGER_1_15 */ +static int hf_lpp_weekNumber = -1; /* INTEGER_0_8191 */ +static int hf_lpp_deltaT = -1; /* INTEGER_M128_127 */ +static int hf_lpp_dgnss_RefTime = -1; /* INTEGER_0_3599 */ +static int hf_lpp_dgnss_SgnTypeList = -1; /* DGNSS_SgnTypeList */ +static int hf_lpp_DGNSS_SgnTypeList_item = -1; /* DGNSS_SgnTypeElement */ +static int hf_lpp_gnss_SignalID = -1; /* GNSS_SignalID */ +static int hf_lpp_gnss_StatusHealth = -1; /* INTEGER_0_7 */ +static int hf_lpp_dgnss_SatList = -1; /* DGNSS_SatList */ +static int hf_lpp_DGNSS_SatList_item = -1; /* DGNSS_CorrectionsElement */ +static int hf_lpp_svID = -1; /* SV_ID */ +static int hf_lpp_iod = -1; /* BIT_STRING_SIZE_11 */ +static int hf_lpp_udre = -1; /* INTEGER_0_3 */ +static int hf_lpp_pseudoRangeCor = -1; /* INTEGER_M2047_2047 */ +static int hf_lpp_rangeRateCor = -1; /* INTEGER_M127_127 */ +static int hf_lpp_udreGrowthRate = -1; /* INTEGER_0_7 */ +static int hf_lpp_udreValidityTime = -1; /* INTEGER_0_7 */ +static int hf_lpp_nonBroadcastIndFlag = -1; /* INTEGER_0_1 */ +static int hf_lpp_gnss_SatelliteList = -1; /* GNSS_NavModelSatelliteList */ +static int hf_lpp_GNSS_NavModelSatelliteList_item = -1; /* GNSS_NavModelSatelliteElement */ +static int hf_lpp_svHealth = -1; /* BIT_STRING_SIZE_8 */ +static int hf_lpp_gnss_ClockModel = -1; /* GNSS_ClockModel */ +static int hf_lpp_gnss_OrbitModel = -1; /* GNSS_OrbitModel */ +static int hf_lpp_standardClockModelList = -1; /* StandardClockModelList */ +static int hf_lpp_nav_ClockModel = -1; /* NAV_ClockModel */ +static int hf_lpp_cnav_ClockModel = -1; /* CNAV_ClockModel */ +static int hf_lpp_glonass_ClockModel = -1; /* GLONASS_ClockModel */ +static int hf_lpp_sbas_ClockModel = -1; /* SBAS_ClockModel */ +static int hf_lpp_keplerianSet = -1; /* NavModelKeplerianSet */ +static int hf_lpp_nav_KeplerianSet = -1; /* NavModelNAV_KeplerianSet */ +static int hf_lpp_cnav_KeplerianSet = -1; /* NavModelCNAV_KeplerianSet */ +static int hf_lpp_glonass_ECEF = -1; /* NavModel_GLONASS_ECEF */ +static int hf_lpp_sbas_ECEF = -1; /* NavModel_SBAS_ECEF */ +static int hf_lpp_StandardClockModelList_item = -1; /* StandardClockModelElement */ +static int hf_lpp_stanClockToc = -1; /* INTEGER_0_16383 */ +static int hf_lpp_stanClockAF2 = -1; /* INTEGER_M2048_2047 */ +static int hf_lpp_stanClockAF1 = -1; /* INTEGER_M131072_131071 */ +static int hf_lpp_stanClockAF0 = -1; /* INTEGER_M134217728_134217727 */ +static int hf_lpp_stanClockTgd = -1; /* INTEGER_M512_511 */ +static int hf_lpp_stanModelID = -1; /* INTEGER_0_1 */ +static int hf_lpp_navToc = -1; /* INTEGER_0_37799 */ +static int hf_lpp_navaf2 = -1; /* INTEGER_M128_127 */ +static int hf_lpp_navaf1 = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_navaf0 = -1; /* INTEGER_M2097152_2097151 */ +static int hf_lpp_navTgd = -1; /* INTEGER_M128_127 */ +static int hf_lpp_cnavToc = -1; /* INTEGER_0_2015 */ +static int hf_lpp_cnavTop = -1; /* INTEGER_0_2015 */ +static int hf_lpp_cnavURA0 = -1; /* INTEGER_M16_15 */ +static int hf_lpp_cnavURA1 = -1; /* INTEGER_0_7 */ +static int hf_lpp_cnavURA2 = -1; /* INTEGER_0_7 */ +static int hf_lpp_cnavAf2 = -1; /* INTEGER_M512_511 */ +static int hf_lpp_cnavAf1 = -1; /* INTEGER_M524288_524287 */ +static int hf_lpp_cnavAf0 = -1; /* INTEGER_M33554432_33554431 */ +static int hf_lpp_cnavTgd = -1; /* INTEGER_M4096_4095 */ +static int hf_lpp_cnavISCl1cp = -1; /* INTEGER_M4096_4095 */ +static int hf_lpp_cnavISCl1cd = -1; /* INTEGER_M4096_4095 */ +static int hf_lpp_cnavISCl1ca = -1; /* INTEGER_M4096_4095 */ +static int hf_lpp_cnavISCl2c = -1; /* INTEGER_M4096_4095 */ +static int hf_lpp_cnavISCl5i5 = -1; /* INTEGER_M4096_4095 */ +static int hf_lpp_cnavISCl5q5 = -1; /* INTEGER_M4096_4095 */ +static int hf_lpp_gloTau = -1; /* INTEGER_M2097152_2097151 */ +static int hf_lpp_gloGamma = -1; /* INTEGER_M1024_1023 */ +static int hf_lpp_gloDeltaTau = -1; /* INTEGER_M16_15 */ +static int hf_lpp_sbasTo = -1; /* INTEGER_0_5399 */ +static int hf_lpp_sbasAgfo = -1; /* INTEGER_M2048_2047 */ +static int hf_lpp_sbasAgf1 = -1; /* INTEGER_M128_127 */ +static int hf_lpp_keplerToe = -1; /* INTEGER_0_16383 */ +static int hf_lpp_keplerW = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_lpp_keplerDeltaN = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_keplerM0 = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_lpp_keplerOmegaDot = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_keplerE = -1; /* INTEGER_0_4294967295 */ +static int hf_lpp_keplerIDot = -1; /* INTEGER_M8192_8191 */ +static int hf_lpp_keplerAPowerHalf = -1; /* INTEGER_0_4294967295 */ +static int hf_lpp_keplerI0 = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_lpp_keplerOmega0 = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_lpp_keplerCrs = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_keplerCis = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_keplerCus = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_keplerCrc = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_keplerCic = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_keplerCuc = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_navURA = -1; /* INTEGER_0_15 */ +static int hf_lpp_navFitFlag = -1; /* INTEGER_0_1 */ +static int hf_lpp_navToe = -1; /* INTEGER_0_37799 */ +static int hf_lpp_navOmega = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_lpp_navDeltaN = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_navM0 = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_lpp_navOmegaADot = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_navE = -1; /* INTEGER_0_4294967295 */ +static int hf_lpp_navIDot = -1; /* INTEGER_M8192_8191 */ +static int hf_lpp_navAPowerHalf = -1; /* INTEGER_0_4294967295 */ +static int hf_lpp_navI0 = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_lpp_navOmegaA0 = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_lpp_navCrs = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_navCis = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_navCus = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_navCrc = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_navCic = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_navCuc = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_addNAVparam = -1; /* T_addNAVparam */ +static int hf_lpp_ephemCodeOnL2 = -1; /* INTEGER_0_3 */ +static int hf_lpp_ephemL2Pflag = -1; /* INTEGER_0_1 */ +static int hf_lpp_ephemSF1Rsvd = -1; /* T_ephemSF1Rsvd */ +static int hf_lpp_reserved1 = -1; /* INTEGER_0_8388607 */ +static int hf_lpp_reserved2 = -1; /* INTEGER_0_16777215 */ +static int hf_lpp_reserved3 = -1; /* INTEGER_0_16777215 */ +static int hf_lpp_reserved4 = -1; /* INTEGER_0_65535 */ +static int hf_lpp_ephemAODA = -1; /* INTEGER_0_31 */ +static int hf_lpp_cnavURAindex = -1; /* INTEGER_M16_15 */ +static int hf_lpp_cnavDeltaA = -1; /* INTEGER_M33554432_33554431 */ +static int hf_lpp_cnavAdot = -1; /* INTEGER_M16777216_16777215 */ +static int hf_lpp_cnavDeltaNo = -1; /* INTEGER_M65536_65535 */ +static int hf_lpp_cnavDeltaNoDot = -1; /* INTEGER_M4194304_4194303 */ +static int hf_lpp_cnavMo = -1; /* T_cnavMo */ +static int hf_lpp_cnavE = -1; /* T_cnavE */ +static int hf_lpp_cnavOmega = -1; /* T_cnavOmega */ +static int hf_lpp_cnavOMEGA0 = -1; /* T_cnavOMEGA0 */ +static int hf_lpp_cnavDeltaOmegaDot = -1; /* INTEGER_M65536_65535 */ +static int hf_lpp_cnavIo = -1; /* T_cnavIo */ +static int hf_lpp_cnavIoDot = -1; /* INTEGER_M16384_16383 */ +static int hf_lpp_cnavCis = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_cnavCic = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_cnavCrs = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_cnavCrc = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_cnavCus = -1; /* INTEGER_M1048576_1048575 */ +static int hf_lpp_cnavCuc = -1; /* INTEGER_M1048576_1048575 */ +static int hf_lpp_gloEn = -1; /* INTEGER_0_31 */ +static int hf_lpp_gloP1 = -1; /* BIT_STRING_SIZE_2 */ +static int hf_lpp_gloP2 = -1; /* BOOLEAN */ +static int hf_lpp_gloM = -1; /* INTEGER_0_3 */ +static int hf_lpp_gloX = -1; /* INTEGER_M67108864_67108863 */ +static int hf_lpp_gloXdot = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_gloXdotdot = -1; /* INTEGER_M16_15 */ +static int hf_lpp_gloY = -1; /* INTEGER_M67108864_67108863 */ +static int hf_lpp_gloYdot = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_gloYdotdot = -1; /* INTEGER_M16_15 */ +static int hf_lpp_gloZ = -1; /* INTEGER_M67108864_67108863 */ +static int hf_lpp_gloZdot = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_gloZdotdot = -1; /* INTEGER_M16_15 */ +static int hf_lpp_sbasAccuracy = -1; /* BIT_STRING_SIZE_4 */ +static int hf_lpp_sbasXg = -1; /* INTEGER_M536870912_536870911 */ +static int hf_lpp_sbasYg = -1; /* INTEGER_M536870912_536870911 */ +static int hf_lpp_sbasZg = -1; /* INTEGER_M16777216_16777215 */ +static int hf_lpp_sbasXgDot = -1; /* INTEGER_M65536_65535 */ +static int hf_lpp_sbasYgDot = -1; /* INTEGER_M65536_65535 */ +static int hf_lpp_sbasZgDot = -1; /* INTEGER_M131072_131071 */ +static int hf_lpp_sbasXgDotDot = -1; /* INTEGER_M512_511 */ +static int hf_lpp_sbagYgDotDot = -1; /* INTEGER_M512_511 */ +static int hf_lpp_sbasZgDotDot = -1; /* INTEGER_M512_511 */ +static int hf_lpp_gnss_BadSignalList = -1; /* GNSS_BadSignalList */ +static int hf_lpp_GNSS_BadSignalList_item = -1; /* BadSignalElement */ +static int hf_lpp_badSVID = -1; /* SV_ID */ +static int hf_lpp_badSignalID = -1; /* GNSS_SignalIDs */ +static int hf_lpp_gnss_TOD = -1; /* INTEGER_0_3599 */ +static int hf_lpp_gnss_TODfrac = -1; /* INTEGER_0_999 */ +static int hf_lpp_gnss_DataBitsSatList = -1; /* GNSS_DataBitsSatList */ +static int hf_lpp_GNSS_DataBitsSatList_item = -1; /* GNSS_DataBitsSatElement */ +static int hf_lpp_gnss_DataBitsSgnList = -1; /* GNSS_DataBitsSgnList */ +static int hf_lpp_GNSS_DataBitsSgnList_item = -1; /* GNSS_DataBitsSgnElement */ +static int hf_lpp_gnss_SignalType = -1; /* GNSS_SignalID */ +static int hf_lpp_gnss_DataBits = -1; /* BIT_STRING_SIZE_1_1024 */ +static int hf_lpp_gnss_AcquisitionAssistList = -1; /* GNSS_AcquisitionAssistList */ +static int hf_lpp_GNSS_AcquisitionAssistList_item = -1; /* GNSS_AcquisitionAssistElement */ +static int hf_lpp_doppler0 = -1; /* INTEGER_M2048_2047 */ +static int hf_lpp_doppler1 = -1; /* INTEGER_0_63 */ +static int hf_lpp_dopplerUncertainty = -1; /* INTEGER_0_4 */ +static int hf_lpp_codePhase = -1; /* INTEGER_0_1022 */ +static int hf_lpp_intCodePhase = -1; /* INTEGER_0_127 */ +static int hf_lpp_codePhaseSearchWindow = -1; /* INTEGER_0_31 */ +static int hf_lpp_azimuth = -1; /* INTEGER_0_511 */ +static int hf_lpp_elevation = -1; /* INTEGER_0_127 */ +static int hf_lpp_codePhase1023 = -1; /* BOOLEAN */ +static int hf_lpp_weekNumber_01 = -1; /* INTEGER_0_255 */ +static int hf_lpp_toa = -1; /* INTEGER_0_255 */ +static int hf_lpp_ioda = -1; /* INTEGER_0_3 */ +static int hf_lpp_completeAlmanacProvided = -1; /* BOOLEAN */ +static int hf_lpp_gnss_AlmanacList = -1; /* GNSS_AlmanacList */ +static int hf_lpp_GNSS_AlmanacList_item = -1; /* GNSS_AlmanacElement */ +static int hf_lpp_keplerianAlmanacSet = -1; /* AlmanacKeplerianSet */ +static int hf_lpp_keplerianNAV_Almanac = -1; /* AlmanacNAV_KeplerianSet */ +static int hf_lpp_keplerianReducedAlmanac = -1; /* AlmanacReducedKeplerianSet */ +static int hf_lpp_keplerianMidiAlmanac = -1; /* AlmanacMidiAlmanacSet */ +static int hf_lpp_keplerianGLONASS = -1; /* AlmanacGLONASS_AlmanacSet */ +static int hf_lpp_ecef_SBAS_Almanac = -1; /* AlmanacECEF_SBAS_AlmanacSet */ +static int hf_lpp_kepAlmanacE = -1; /* INTEGER_0_2047 */ +static int hf_lpp_kepAlmanacDeltaI = -1; /* INTEGER_M1024_1023 */ +static int hf_lpp_kepAlmanacOmegaDot = -1; /* INTEGER_M1024_1023 */ +static int hf_lpp_kepSVHealth = -1; /* INTEGER_0_15 */ +static int hf_lpp_kepAlmanacAPowerHalf = -1; /* INTEGER_M65536_65535 */ +static int hf_lpp_kepAlmanacOmega0 = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_kepAlmanacW = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_kepAlmanacM0 = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_kepAlmanacAF0 = -1; /* INTEGER_M8192_8191 */ +static int hf_lpp_kepAlmanacAF1 = -1; /* INTEGER_M1024_1023 */ +static int hf_lpp_navAlmE = -1; /* INTEGER_0_65535 */ +static int hf_lpp_navAlmDeltaI = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_navAlmOMEGADOT = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_navAlmSVHealth = -1; /* INTEGER_0_255 */ +static int hf_lpp_navAlmSqrtA = -1; /* INTEGER_0_16777215 */ +static int hf_lpp_navAlmOMEGAo = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_navAlmOmega = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_navAlmMo = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_navAlmaf0 = -1; /* INTEGER_M1024_1023 */ +static int hf_lpp_navAlmaf1 = -1; /* INTEGER_M1024_1023 */ +static int hf_lpp_redAlmDeltaA = -1; /* INTEGER_M128_127 */ +static int hf_lpp_redAlmOmega0 = -1; /* INTEGER_M64_63 */ +static int hf_lpp_redAlmPhi0 = -1; /* INTEGER_M64_63 */ +static int hf_lpp_redAlmL1Health = -1; /* BOOLEAN */ +static int hf_lpp_redAlmL2Health = -1; /* BOOLEAN */ +static int hf_lpp_redAlmL5Health = -1; /* BOOLEAN */ +static int hf_lpp_midiAlmE = -1; /* INTEGER_0_2047 */ +static int hf_lpp_midiAlmDeltaI = -1; /* INTEGER_M1024_1023 */ +static int hf_lpp_midiAlmOmegaDot = -1; /* INTEGER_M1024_1023 */ +static int hf_lpp_midiAlmSqrtA = -1; /* INTEGER_0_131071 */ +static int hf_lpp_midiAlmOmega0 = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_midiAlmOmega = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_midiAlmMo = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_midiAlmaf0 = -1; /* INTEGER_M1024_1023 */ +static int hf_lpp_midiAlmaf1 = -1; /* INTEGER_M512_511 */ +static int hf_lpp_midiAlmL1Health = -1; /* BOOLEAN */ +static int hf_lpp_midiAlmL2Health = -1; /* BOOLEAN */ +static int hf_lpp_midiAlmL5Health = -1; /* BOOLEAN */ +static int hf_lpp_gloAlm_NA = -1; /* INTEGER_1_1461 */ +static int hf_lpp_gloAlmnA = -1; /* INTEGER_1_24 */ +static int hf_lpp_gloAlmHA = -1; /* INTEGER_0_31 */ +static int hf_lpp_gloAlmLambdaA = -1; /* INTEGER_M1048576_1048575 */ +static int hf_lpp_gloAlmtlambdaA = -1; /* INTEGER_0_2097151 */ +static int hf_lpp_gloAlmDeltaIa = -1; /* INTEGER_M131072_131071 */ +static int hf_lpp_gloAlmDeltaTA = -1; /* INTEGER_M2097152_2097151 */ +static int hf_lpp_gloAlmDeltaTdotA = -1; /* INTEGER_M64_63 */ +static int hf_lpp_gloAlmEpsilonA = -1; /* INTEGER_0_32767 */ +static int hf_lpp_gloAlmOmegaA = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_gloAlmTauA = -1; /* INTEGER_M512_511 */ +static int hf_lpp_gloAlmCA = -1; /* INTEGER_0_1 */ +static int hf_lpp_gloAlmMA = -1; /* BIT_STRING_SIZE_2 */ +static int hf_lpp_sbasAlmDataID = -1; /* INTEGER_0_3 */ +static int hf_lpp_sbasAlmHealth = -1; /* BIT_STRING_SIZE_8 */ +static int hf_lpp_sbasAlmXg = -1; /* INTEGER_M16384_16383 */ +static int hf_lpp_sbasAlmYg = -1; /* INTEGER_M16384_16383 */ +static int hf_lpp_sbasAlmZg = -1; /* INTEGER_M256_255 */ +static int hf_lpp_sbasAlmXgdot = -1; /* INTEGER_M4_3 */ +static int hf_lpp_sbasAlmYgDot = -1; /* INTEGER_M4_3 */ +static int hf_lpp_sbasAlmZgDot = -1; /* INTEGER_M8_7 */ +static int hf_lpp_sbasAlmTo = -1; /* INTEGER_0_2047 */ +static int hf_lpp_utcModel1 = -1; /* UTC_ModelSet1 */ +static int hf_lpp_utcModel2 = -1; /* UTC_ModelSet2 */ +static int hf_lpp_utcModel3 = -1; /* UTC_ModelSet3 */ +static int hf_lpp_utcModel4 = -1; /* UTC_ModelSet4 */ +static int hf_lpp_gnss_Utc_A1 = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_gnss_Utc_A0 = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_lpp_gnss_Utc_Tot = -1; /* INTEGER_0_255 */ +static int hf_lpp_gnss_Utc_WNt = -1; /* INTEGER_0_255 */ +static int hf_lpp_gnss_Utc_DeltaTls = -1; /* INTEGER_M128_127 */ +static int hf_lpp_gnss_Utc_WNlsf = -1; /* INTEGER_0_255 */ +static int hf_lpp_gnss_Utc_DN = -1; /* INTEGER_M128_127 */ +static int hf_lpp_gnss_Utc_DeltaTlsf = -1; /* INTEGER_M128_127 */ +static int hf_lpp_utcA0 = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_utcA1 = -1; /* INTEGER_M4096_4095 */ +static int hf_lpp_utcA2 = -1; /* INTEGER_M64_63 */ +static int hf_lpp_utcDeltaTls = -1; /* INTEGER_M128_127 */ +static int hf_lpp_utcTot = -1; /* INTEGER_0_65535 */ +static int hf_lpp_utcWNot = -1; /* INTEGER_0_8191 */ +static int hf_lpp_utcWNlsf = -1; /* INTEGER_0_255 */ +static int hf_lpp_utcDN = -1; /* BIT_STRING_SIZE_4 */ +static int hf_lpp_utcDeltaTlsf = -1; /* INTEGER_M128_127 */ +static int hf_lpp_nA = -1; /* INTEGER_1_1461 */ +static int hf_lpp_tauC = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_lpp_b1 = -1; /* INTEGER_M1024_1023 */ +static int hf_lpp_b2 = -1; /* INTEGER_M512_511 */ +static int hf_lpp_kp = -1; /* BIT_STRING_SIZE_2 */ +static int hf_lpp_utcA1wnt = -1; /* INTEGER_M8388608_8388607 */ +static int hf_lpp_utcA0wnt = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_lpp_utcTot_01 = -1; /* INTEGER_0_255 */ +static int hf_lpp_utcWNt = -1; /* INTEGER_0_255 */ +static int hf_lpp_utcDN_01 = -1; /* INTEGER_M128_127 */ +static int hf_lpp_utcStandardID = -1; /* INTEGER_0_7 */ +static int hf_lpp_gnss_ID_GPS = -1; /* GNSS_ID_GPS */ +static int hf_lpp_gnss_ID_GLONASS = -1; /* GNSS_ID_GLONASS */ +static int hf_lpp_GNSS_ID_GPS_item = -1; /* GNSS_ID_GPS_SatElement */ +static int hf_lpp_signalsAvailable = -1; /* GNSS_SignalIDs */ +static int hf_lpp_GNSS_ID_GLONASS_item = -1; /* GNSS_ID_GLONASS_SatElement */ +static int hf_lpp_channelNumber = -1; /* INTEGER_M7_13 */ +static int hf_lpp_gnss_CommonAssistDataReq = -1; /* GNSS_CommonAssistDataReq */ +static int hf_lpp_gnss_GenericAssistDataReq = -1; /* GNSS_GenericAssistDataReq */ +static int hf_lpp_gnss_ReferenceTimeReq = -1; /* GNSS_ReferenceTimeReq */ +static int hf_lpp_gnss_ReferenceLocationReq = -1; /* GNSS_ReferenceLocationReq */ +static int hf_lpp_gnss_IonosphericModelReq = -1; /* GNSS_IonosphericModelReq */ +static int hf_lpp_gnss_EarthOrientationParametersReq = -1; /* GNSS_EarthOrientationParametersReq */ +static int hf_lpp_GNSS_GenericAssistDataReq_item = -1; /* GNSS_GenericAssistDataReqElement */ +static int hf_lpp_gnss_TimeModelsReq = -1; /* GNSS_TimeModelListReq */ +static int hf_lpp_gnss_DifferentialCorrectionsReq = -1; /* GNSS_DifferentialCorrectionsReq */ +static int hf_lpp_gnss_NavigationModelReq = -1; /* GNSS_NavigationModelReq */ +static int hf_lpp_gnss_RealTimeIntegrityReq = -1; /* GNSS_RealTimeIntegrityReq */ +static int hf_lpp_gnss_DataBitAssistanceReq = -1; /* GNSS_DataBitAssistanceReq */ +static int hf_lpp_gnss_AcquisitionAssistanceReq = -1; /* GNSS_AcquisitionAssistanceReq */ +static int hf_lpp_gnss_AlmanacReq = -1; /* GNSS_AlmanacReq */ +static int hf_lpp_gnss_UTCModelReq = -1; /* GNSS_UTC_ModelReq */ +static int hf_lpp_gnss_AuxiliaryInformationReq = -1; /* GNSS_AuxiliaryInformationReq */ +static int hf_lpp_gnss_TimeReqPrefList = -1; /* SEQUENCE_SIZE_1_8_OF_GNSS_ID */ +static int hf_lpp_gnss_TimeReqPrefList_item = -1; /* GNSS_ID */ +static int hf_lpp_gps_TOW_assistReq = -1; /* BOOLEAN */ +static int hf_lpp_notOfLeapSecReq = -1; /* BOOLEAN */ +static int hf_lpp_klobucharModelReq = -1; /* BIT_STRING_SIZE_2 */ +static int hf_lpp_neQuickModelReq = -1; /* NULL */ +static int hf_lpp_GNSS_TimeModelListReq_item = -1; /* GNSS_TimeModelElementReq */ +static int hf_lpp_gnss_TO_IDsReq = -1; /* INTEGER_1_15 */ +static int hf_lpp_deltaTreq = -1; /* BOOLEAN */ +static int hf_lpp_dgnss_SignalsReq = -1; /* GNSS_SignalIDs */ +static int hf_lpp_dgnss_ValidityTimeReq = -1; /* BOOLEAN */ +static int hf_lpp_storedNavList = -1; /* StoredNavListInfo */ +static int hf_lpp_reqNavList = -1; /* ReqNavListInfo */ +static int hf_lpp_gnss_WeekOrDay = -1; /* INTEGER_0_4095 */ +static int hf_lpp_gnss_Toe = -1; /* INTEGER_0_255 */ +static int hf_lpp_t_toeLimit = -1; /* INTEGER_0_15 */ +static int hf_lpp_satListRelatedDataList = -1; /* SatListRelatedDataList */ +static int hf_lpp_SatListRelatedDataList_item = -1; /* SatListRelatedDataElement */ +static int hf_lpp_clockModelID = -1; /* INTEGER_1_8 */ +static int hf_lpp_orbitModelID = -1; /* INTEGER_1_8 */ +static int hf_lpp_svReqList = -1; /* BIT_STRING_SIZE_64 */ +static int hf_lpp_clockModelID_PrefList = -1; /* T_clockModelID_PrefList */ +static int hf_lpp_clockModelID_PrefList_item = -1; /* INTEGER_1_8 */ +static int hf_lpp_orbitModelID_PrefList = -1; /* T_orbitModelID_PrefList */ +static int hf_lpp_orbitModelID_PrefList_item = -1; /* INTEGER_1_8 */ +static int hf_lpp_addNavparamReq = -1; /* BOOLEAN */ +static int hf_lpp_gnss_TOD_Req = -1; /* INTEGER_0_3599 */ +static int hf_lpp_gnss_TOD_FracReq = -1; /* INTEGER_0_999 */ +static int hf_lpp_dataBitInterval = -1; /* INTEGER_0_15 */ +static int hf_lpp_gnss_SignalType_01 = -1; /* GNSS_SignalIDs */ +static int hf_lpp_gnss_DataBitsReq = -1; /* GNSS_DataBitsReqSatList */ +static int hf_lpp_GNSS_DataBitsReqSatList_item = -1; /* GNSS_DataBitsReqSatElement */ +static int hf_lpp_gnss_SignalID_Req = -1; /* GNSS_SignalID */ +static int hf_lpp_modelID = -1; /* INTEGER_1_8 */ +static int hf_lpp_gnss_SignalMeasurementInformation = -1; /* GNSS_SignalMeasurementInformation */ +static int hf_lpp_gnss_LocationInformation = -1; /* GNSS_LocationInformation */ +static int hf_lpp_measurementReferenceTime = -1; /* MeasurementReferenceTime */ +static int hf_lpp_gnss_MeasurementList = -1; /* GNSS_MeasurementList */ +static int hf_lpp_gnss_TOD_msec = -1; /* INTEGER_0_3599999 */ +static int hf_lpp_gnss_TOD_frac = -1; /* INTEGER_0_3999 */ +static int hf_lpp_gnss_TOD_unc = -1; /* INTEGER_0_127 */ +static int hf_lpp_networkTime_01 = -1; /* T_networkTime */ +static int hf_lpp_eUTRA_01 = -1; /* T_eUTRA_01 */ +static int hf_lpp_cellGlobalId_01 = -1; /* CellGlobalIdEUTRA_AndUTRA */ +static int hf_lpp_uTRA_01 = -1; /* T_uTRA_01 */ +static int hf_lpp_mode_01 = -1; /* T_mode_01 */ +static int hf_lpp_fdd_01 = -1; /* T_fdd_01 */ +static int hf_lpp_tdd_01 = -1; /* T_tdd_01 */ +static int hf_lpp_referenceSystemFrameNumber = -1; /* INTEGER_0_4095 */ +static int hf_lpp_gSM_01 = -1; /* T_gSM_01 */ +static int hf_lpp_cellGlobalId_02 = -1; /* CellGlobalIdGERAN */ +static int hf_lpp_referenceFrame = -1; /* T_referenceFrame */ +static int hf_lpp_referenceFN = -1; /* INTEGER_0_65535 */ +static int hf_lpp_referenceFNMSB = -1; /* INTEGER_0_63 */ +static int hf_lpp_deltaGNSS_TOD = -1; /* INTEGER_0_127 */ +static int hf_lpp_GNSS_MeasurementList_item = -1; /* GNSS_MeasurementForOneGNSS */ +static int hf_lpp_gnss_SgnMeasList = -1; /* GNSS_SgnMeasList */ +static int hf_lpp_GNSS_SgnMeasList_item = -1; /* GNSS_SgnMeasElement */ +static int hf_lpp_gnss_CodePhaseAmbiguity = -1; /* INTEGER_0_127 */ +static int hf_lpp_gnss_SatMeasList = -1; /* GNSS_SatMeasList */ +static int hf_lpp_GNSS_SatMeasList_item = -1; /* GNSS_SatMeasElement */ +static int hf_lpp_cNo = -1; /* INTEGER_0_63 */ +static int hf_lpp_mpathDet = -1; /* T_mpathDet */ +static int hf_lpp_carrierQualityInd = -1; /* INTEGER_0_3 */ +static int hf_lpp_codePhase_01 = -1; /* INTEGER_0_2097151 */ +static int hf_lpp_integerCodePhase = -1; /* INTEGER_0_127 */ +static int hf_lpp_codePhaseRMSError = -1; /* INTEGER_0_63 */ +static int hf_lpp_doppler = -1; /* INTEGER_M32768_32767 */ +static int hf_lpp_adr = -1; /* INTEGER_0_33554431 */ +static int hf_lpp_agnss_List = -1; /* GNSS_ID_Bitmap */ +static int hf_lpp_gnss_PositioningInstructions = -1; /* GNSS_PositioningInstructions */ +static int hf_lpp_gnss_Methods = -1; /* GNSS_ID_Bitmap */ +static int hf_lpp_fineTimeAssistanceMeasReq = -1; /* BOOLEAN */ +static int hf_lpp_adrMeasReq = -1; /* BOOLEAN */ +static int hf_lpp_multiFreqMeasReq = -1; /* BOOLEAN */ +static int hf_lpp_gnss_SupportList = -1; /* GNSS_SupportList */ +static int hf_lpp_assistanceDataSupportList = -1; /* AssistanceDataSupportList */ +static int hf_lpp_GNSS_SupportList_item = -1; /* GNSS_SupportElement */ +static int hf_lpp_sbas_IDs = -1; /* SBAS_IDs */ +static int hf_lpp_agnss_Modes = -1; /* PositioningModes */ +static int hf_lpp_gnss_Signals = -1; /* GNSS_SignalIDs */ +static int hf_lpp_fta_MeasSupport = -1; /* T_fta_MeasSupport */ +static int hf_lpp_cellTime = -1; /* AccessTypes */ +static int hf_lpp_mode_02 = -1; /* PositioningModes */ +static int hf_lpp_adr_Support = -1; /* BOOLEAN */ +static int hf_lpp_velocityMeasurementSupport = -1; /* BOOLEAN */ +static int hf_lpp_gnss_CommonAssistanceDataSupport = -1; /* GNSS_CommonAssistanceDataSupport */ +static int hf_lpp_gnss_GenericAssistanceDataSupport = -1; /* GNSS_GenericAssistanceDataSupport */ +static int hf_lpp_gnss_ReferenceTimeSupport = -1; /* GNSS_ReferenceTimeSupport */ +static int hf_lpp_gnss_ReferenceLocationSupport = -1; /* GNSS_ReferenceLocationSupport */ +static int hf_lpp_gnss_IonosphericModelSupport = -1; /* GNSS_IonosphericModelSupport */ +static int hf_lpp_gnss_EarthOrientationParametersSupport = -1; /* GNSS_EarthOrientationParametersSupport */ +static int hf_lpp_gnss_SystemTime_01 = -1; /* GNSS_ID_Bitmap */ +static int hf_lpp_fta_Support = -1; /* AccessTypes */ +static int hf_lpp_ionoModel = -1; /* T_ionoModel */ +static int hf_lpp_GNSS_GenericAssistanceDataSupport_item = -1; /* GNSS_GenericAssistDataSupportElement */ +static int hf_lpp_gnss_TimeModelsSupport = -1; /* GNSS_TimeModelListSupport */ +static int hf_lpp_gnss_DifferentialCorrectionsSupport = -1; /* GNSS_DifferentialCorrectionsSupport */ +static int hf_lpp_gnss_NavigationModelSupport = -1; /* GNSS_NavigationModelSupport */ +static int hf_lpp_gnss_RealTimeIntegritySupport = -1; /* GNSS_RealTimeIntegritySupport */ +static int hf_lpp_gnss_DataBitAssistanceSupport = -1; /* GNSS_DataBitAssistanceSupport */ +static int hf_lpp_gnss_AcquisitionAssistanceSupport = -1; /* GNSS_AcquisitionAssistanceSupport */ +static int hf_lpp_gnss_AlmanacSupport = -1; /* GNSS_AlmanacSupport */ +static int hf_lpp_gnss_UTC_ModelSupport = -1; /* GNSS_UTC_ModelSupport */ +static int hf_lpp_gnss_AuxiliaryInformationSupport = -1; /* GNSS_AuxiliaryInformationSupport */ +static int hf_lpp_gnssSignalIDs = -1; /* GNSS_SignalIDs */ +static int hf_lpp_dgnss_ValidityTimeSup = -1; /* BOOLEAN */ +static int hf_lpp_clockModel = -1; /* T_clockModel */ +static int hf_lpp_orbitModel = -1; /* T_orbitModel */ +static int hf_lpp_almanacModel = -1; /* T_almanacModel */ +static int hf_lpp_utc_Model = -1; /* T_utc_Model */ +static int hf_lpp_gnss_SupportListReq = -1; /* BOOLEAN */ +static int hf_lpp_assistanceDataSupportListReq = -1; /* BOOLEAN */ +static int hf_lpp_locationVelocityTypesReq = -1; /* BOOLEAN */ +static int hf_lpp_locationServerErrorCauses_01 = -1; /* GNSS_LocationServerErrorCauses */ +static int hf_lpp_targetDeviceErrorCauses_01 = -1; /* GNSS_TargetDeviceErrorCauses */ +static int hf_lpp_cause_02 = -1; /* T_cause_02 */ +static int hf_lpp_cause_03 = -1; /* T_cause_03 */ +static int hf_lpp_fineTimeAssistanceMeasurementsNotPossible = -1; /* NULL */ +static int hf_lpp_adrMeasurementsNotPossible = -1; /* NULL */ +static int hf_lpp_multiFrequencyMeasurementsNotPossible = -1; /* NULL */ +static int hf_lpp_gnss_id = -1; /* T_gnss_id */ +static int hf_lpp_gnss_ids = -1; /* T_gnss_ids */ +static int hf_lpp_gnss_SignalID_01 = -1; /* INTEGER_0_7 */ +static int hf_lpp_gnss_SignalIDs = -1; /* BIT_STRING_SIZE_8 */ +static int hf_lpp_sbas_id = -1; /* T_sbas_id */ +static int hf_lpp_sbas_IDs_01 = -1; /* T_sbas_IDs */ +static int hf_lpp_satellite_id = -1; /* INTEGER_0_63 */ +static int hf_lpp_ecid_SignalMeasurementInformation = -1; /* ECID_SignalMeasurementInformation */ +static int hf_lpp_ecid_Error = -1; /* ECID_Error */ +static int hf_lpp_servingCellMeasuredResults = -1; /* MeasuredResultsElement */ +static int hf_lpp_measuredResultsList = -1; /* MeasuredResultsList */ +static int hf_lpp_MeasuredResultsList_item = -1; /* MeasuredResultsElement */ +static int hf_lpp_arfcnEUTRA = -1; /* ARFCN_ValueEUTRA */ +static int hf_lpp_rsrp_Result = -1; /* INTEGER_0_97 */ +static int hf_lpp_rsrq_Result = -1; /* INTEGER_0_34 */ +static int hf_lpp_ue_RxTxTimeDiff = -1; /* INTEGER_0_4095 */ +static int hf_lpp_requestedMeasurements = -1; /* T_requestedMeasurements */ +static int hf_lpp_ecid_MeasSupported = -1; /* T_ecid_MeasSupported */ +static int hf_lpp_locationServerErrorCauses_02 = -1; /* ECID_LocationServerErrorCauses */ +static int hf_lpp_targetDeviceErrorCauses_02 = -1; /* ECID_TargetDeviceErrorCauses */ +static int hf_lpp_cause_04 = -1; /* T_cause_04 */ +static int hf_lpp_cause_05 = -1; /* T_cause_05 */ +static int hf_lpp_rsrpMeasurementNotPossible = -1; /* NULL */ +static int hf_lpp_rsrqMeasurementNotPossible = -1; /* NULL */ +static int hf_lpp_ueRxTxMeasurementNotPossible = -1; /* NULL */ +/* named bits */ +static int hf_lpp_T_accessTypes_eutra = -1; +static int hf_lpp_T_accessTypes_utra = -1; +static int hf_lpp_T_accessTypes_gsm = -1; +static int hf_lpp_T_posModes_standalone = -1; +static int hf_lpp_T_posModes_ue_based = -1; +static int hf_lpp_T_posModes_ue_assisted = -1; +static int hf_lpp_T_otdoa_Mode_ue_assisted = -1; +static int hf_lpp_T_ionoModel_klobuchar = -1; +static int hf_lpp_T_ionoModel_neQuick = -1; +static int hf_lpp_T_clockModel_model_1 = -1; +static int hf_lpp_T_clockModel_model_2 = -1; +static int hf_lpp_T_clockModel_model_3 = -1; +static int hf_lpp_T_clockModel_model_4 = -1; +static int hf_lpp_T_clockModel_model_5 = -1; +static int hf_lpp_T_orbitModel_model_1 = -1; +static int hf_lpp_T_orbitModel_model_2 = -1; +static int hf_lpp_T_orbitModel_model_3 = -1; +static int hf_lpp_T_orbitModel_model_4 = -1; +static int hf_lpp_T_orbitModel_model_5 = -1; +static int hf_lpp_T_almanacModel_model_1 = -1; +static int hf_lpp_T_almanacModel_model_2 = -1; +static int hf_lpp_T_almanacModel_model_3 = -1; +static int hf_lpp_T_almanacModel_model_4 = -1; +static int hf_lpp_T_almanacModel_model_5 = -1; +static int hf_lpp_T_almanacModel_model_6 = -1; +static int hf_lpp_T_utc_Model_model_1 = -1; +static int hf_lpp_T_utc_Model_model_2 = -1; +static int hf_lpp_T_utc_Model_model_3 = -1; +static int hf_lpp_T_utc_Model_model_4 = -1; +static int hf_lpp_T_gnss_ids_gps = -1; +static int hf_lpp_T_gnss_ids_sbas = -1; +static int hf_lpp_T_gnss_ids_qzss = -1; +static int hf_lpp_T_gnss_ids_galileo = -1; +static int hf_lpp_T_gnss_ids_glonass = -1; +static int hf_lpp_T_sbas_IDs_waas = -1; +static int hf_lpp_T_sbas_IDs_egnos = -1; +static int hf_lpp_T_sbas_IDs_msas = -1; +static int hf_lpp_T_sbas_IDs_gagan = -1; +static int hf_lpp_T_requestedMeasurements_rsrpReq = -1; +static int hf_lpp_T_requestedMeasurements_rsrqReq = -1; +static int hf_lpp_T_requestedMeasurements_ueRxTxReq = -1; +static int hf_lpp_T_ecid_MeasSupported_rsrpSup = -1; +static int hf_lpp_T_ecid_MeasSupported_rsrqSup = -1; +static int hf_lpp_T_ecid_MeasSupported_ueRxTxSup = -1; + +/*--- End of included file: packet-lpp-hf.c ---*/ +#line 52 "../../asn1/lpp/packet-lpp-template.c" + +/* Initialize the subtree pointers */ +static gint ett_lpp = -1; + +/*--- Included file: packet-lpp-ett.c ---*/ +#line 1 "../../asn1/lpp/packet-lpp-ett.c" +static gint ett_lpp_LPP_Message = -1; +static gint ett_lpp_Acknowledgement = -1; +static gint ett_lpp_LPP_MessageBody = -1; +static gint ett_lpp_T_c1 = -1; +static gint ett_lpp_T_messageClassExtension = -1; +static gint ett_lpp_LPP_TransactionID = -1; +static gint ett_lpp_RequestCapabilities = -1; +static gint ett_lpp_T_criticalExtensions = -1; +static gint ett_lpp_T_c1_01 = -1; +static gint ett_lpp_T_criticalExtensionsFuture = -1; +static gint ett_lpp_RequestCapabilities_r9_IEs = -1; +static gint ett_lpp_ProvideCapabilities = -1; +static gint ett_lpp_T_criticalExtensions_01 = -1; +static gint ett_lpp_T_c1_02 = -1; +static gint ett_lpp_T_criticalExtensionsFuture_01 = -1; +static gint ett_lpp_ProvideCapabilities_r9_IEs = -1; +static gint ett_lpp_RequestAssistanceData = -1; +static gint ett_lpp_T_criticalExtensions_02 = -1; +static gint ett_lpp_T_c1_03 = -1; +static gint ett_lpp_T_criticalExtensionsFuture_02 = -1; +static gint ett_lpp_RequestAssistanceData_r9_IEs = -1; +static gint ett_lpp_ProvideAssistanceData = -1; +static gint ett_lpp_T_criticalExtensions_03 = -1; +static gint ett_lpp_T_c1_04 = -1; +static gint ett_lpp_T_criticalExtensionsFuture_03 = -1; +static gint ett_lpp_ProvideAssistanceData_r9_IEs = -1; +static gint ett_lpp_RequestLocationInformation = -1; +static gint ett_lpp_T_criticalExtensions_04 = -1; +static gint ett_lpp_T_c1_05 = -1; +static gint ett_lpp_T_criticalExtensionsFuture_04 = -1; +static gint ett_lpp_RequestLocationInformation_r9_IEs = -1; +static gint ett_lpp_ProvideLocationInformation = -1; +static gint ett_lpp_T_criticalExtensions_05 = -1; +static gint ett_lpp_T_c1_06 = -1; +static gint ett_lpp_T_criticalExtensionsFuture_05 = -1; +static gint ett_lpp_ProvideLocationInformation_r9_IEs = -1; +static gint ett_lpp_Abort = -1; +static gint ett_lpp_T_criticalExtensions_06 = -1; +static gint ett_lpp_T_c1_07 = -1; +static gint ett_lpp_T_criticalExtensionsFuture_06 = -1; +static gint ett_lpp_Abort_r9_IEs = -1; +static gint ett_lpp_Error = -1; +static gint ett_lpp_T_criticalExtensionsFuture_07 = -1; +static gint ett_lpp_Error_r9_IEs = -1; +static gint ett_lpp_AccessTypes = -1; +static gint ett_lpp_T_accessTypes = -1; +static gint ett_lpp_CellGlobalIdEUTRA_AndUTRA = -1; +static gint ett_lpp_T_plmn_Identity = -1; +static gint ett_lpp_T_mcc = -1; +static gint ett_lpp_T_mnc = -1; +static gint ett_lpp_T_cellIdentity = -1; +static gint ett_lpp_CellGlobalIdGERAN = -1; +static gint ett_lpp_T_plmn_Identity_01 = -1; +static gint ett_lpp_T_mcc_01 = -1; +static gint ett_lpp_T_mnc_01 = -1; +static gint ett_lpp_ECGI = -1; +static gint ett_lpp_T_mcc_02 = -1; +static gint ett_lpp_T_mnc_02 = -1; +static gint ett_lpp_Ellipsoid_Point = -1; +static gint ett_lpp_Ellipsoid_PointWithUncertaintyCircle = -1; +static gint ett_lpp_EllipsoidPointWithUncertaintyEllipse = -1; +static gint ett_lpp_EllipsoidPointWithAltitude = -1; +static gint ett_lpp_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid = -1; +static gint ett_lpp_EllipsoidArc = -1; +static gint ett_lpp_EPDU_Sequence = -1; +static gint ett_lpp_EPDU = -1; +static gint ett_lpp_EPDU_Identifier = -1; +static gint ett_lpp_HorizontalVelocity = -1; +static gint ett_lpp_HorizontalWithVerticalVelocity = -1; +static gint ett_lpp_HorizontalVelocityWithUncertainty = -1; +static gint ett_lpp_HorizontalWithVerticalVelocityAndUncertainty = -1; +static gint ett_lpp_LocationCoordinateTypes = -1; +static gint ett_lpp_Polygon = -1; +static gint ett_lpp_PolygonPoints = -1; +static gint ett_lpp_PositioningModes = -1; +static gint ett_lpp_T_posModes = -1; +static gint ett_lpp_VelocityTypes = -1; +static gint ett_lpp_CommonIEsRequestCapabilities = -1; +static gint ett_lpp_CommonIEsProvideCapabilities = -1; +static gint ett_lpp_CommonIEsRequestAssistanceData = -1; +static gint ett_lpp_CommonIEsProvideAssistanceData = -1; +static gint ett_lpp_CommonIEsRequestLocationInformation = -1; +static gint ett_lpp_PeriodicalReportingCriteria = -1; +static gint ett_lpp_TriggeredReportingCriteria = -1; +static gint ett_lpp_QoS = -1; +static gint ett_lpp_HorizontalAccuracy = -1; +static gint ett_lpp_VerticalAccuracy = -1; +static gint ett_lpp_ResponseTime = -1; +static gint ett_lpp_CommonIEsProvideLocationInformation = -1; +static gint ett_lpp_LocationCoordinates = -1; +static gint ett_lpp_Velocity = -1; +static gint ett_lpp_LocationError = -1; +static gint ett_lpp_CommonIEsAbort = -1; +static gint ett_lpp_CommonIEsError = -1; +static gint ett_lpp_OTDOA_ProvideAssistanceData = -1; +static gint ett_lpp_OTDOA_ReferenceCellInfo = -1; +static gint ett_lpp_PRS_Info = -1; +static gint ett_lpp_T_prs_MutingInfo_r9 = -1; +static gint ett_lpp_OTDOA_NeighbourCellInfoList = -1; +static gint ett_lpp_OTDOA_NeighbourFreqInfo = -1; +static gint ett_lpp_OTDOA_NeighbourCellInfoElement = -1; +static gint ett_lpp_OTDOA_RequestAssistanceData = -1; +static gint ett_lpp_OTDOA_ProvideLocationInformation = -1; +static gint ett_lpp_OTDOA_SignalMeasurementInformation = -1; +static gint ett_lpp_NeighbourMeasurementList = -1; +static gint ett_lpp_NeighbourMeasurementElement = -1; +static gint ett_lpp_OTDOA_MeasQuality = -1; +static gint ett_lpp_OTDOA_RequestLocationInformation = -1; +static gint ett_lpp_OTDOA_ProvideCapabilities = -1; +static gint ett_lpp_T_otdoa_Mode = -1; +static gint ett_lpp_SEQUENCE_SIZE_1_maxBands_OF_SupportedBandEUTRA = -1; +static gint ett_lpp_SupportedBandEUTRA = -1; +static gint ett_lpp_OTDOA_RequestCapabilities = -1; +static gint ett_lpp_OTDOA_Error = -1; +static gint ett_lpp_OTDOA_LocationServerErrorCauses = -1; +static gint ett_lpp_OTDOA_TargetDeviceErrorCauses = -1; +static gint ett_lpp_A_GNSS_ProvideAssistanceData = -1; +static gint ett_lpp_GNSS_CommonAssistData = -1; +static gint ett_lpp_GNSS_GenericAssistData = -1; +static gint ett_lpp_GNSS_GenericAssistDataElement = -1; +static gint ett_lpp_GNSS_ReferenceTime = -1; +static gint ett_lpp_SEQUENCE_SIZE_1_16_OF_GNSS_ReferenceTimeForOneCell = -1; +static gint ett_lpp_GNSS_ReferenceTimeForOneCell = -1; +static gint ett_lpp_GNSS_SystemTime = -1; +static gint ett_lpp_GPS_TOW_Assist = -1; +static gint ett_lpp_GPS_TOW_AssistElement = -1; +static gint ett_lpp_NetworkTime = -1; +static gint ett_lpp_T_cellID = -1; +static gint ett_lpp_T_eUTRA = -1; +static gint ett_lpp_T_uTRA = -1; +static gint ett_lpp_T_mode = -1; +static gint ett_lpp_T_fdd = -1; +static gint ett_lpp_T_tdd = -1; +static gint ett_lpp_T_gSM = -1; +static gint ett_lpp_GNSS_ReferenceLocation = -1; +static gint ett_lpp_GNSS_IonosphericModel = -1; +static gint ett_lpp_KlobucharModelParameter = -1; +static gint ett_lpp_NeQuickModelParameter = -1; +static gint ett_lpp_GNSS_EarthOrientationParameters = -1; +static gint ett_lpp_GNSS_TimeModelList = -1; +static gint ett_lpp_GNSS_TimeModelElement = -1; +static gint ett_lpp_GNSS_DifferentialCorrections = -1; +static gint ett_lpp_DGNSS_SgnTypeList = -1; +static gint ett_lpp_DGNSS_SgnTypeElement = -1; +static gint ett_lpp_DGNSS_SatList = -1; +static gint ett_lpp_DGNSS_CorrectionsElement = -1; +static gint ett_lpp_GNSS_NavigationModel = -1; +static gint ett_lpp_GNSS_NavModelSatelliteList = -1; +static gint ett_lpp_GNSS_NavModelSatelliteElement = -1; +static gint ett_lpp_GNSS_ClockModel = -1; +static gint ett_lpp_GNSS_OrbitModel = -1; +static gint ett_lpp_StandardClockModelList = -1; +static gint ett_lpp_StandardClockModelElement = -1; +static gint ett_lpp_NAV_ClockModel = -1; +static gint ett_lpp_CNAV_ClockModel = -1; +static gint ett_lpp_GLONASS_ClockModel = -1; +static gint ett_lpp_SBAS_ClockModel = -1; +static gint ett_lpp_NavModelKeplerianSet = -1; +static gint ett_lpp_NavModelNAV_KeplerianSet = -1; +static gint ett_lpp_T_addNAVparam = -1; +static gint ett_lpp_T_ephemSF1Rsvd = -1; +static gint ett_lpp_NavModelCNAV_KeplerianSet = -1; +static gint ett_lpp_NavModel_GLONASS_ECEF = -1; +static gint ett_lpp_NavModel_SBAS_ECEF = -1; +static gint ett_lpp_GNSS_RealTimeIntegrity = -1; +static gint ett_lpp_GNSS_BadSignalList = -1; +static gint ett_lpp_BadSignalElement = -1; +static gint ett_lpp_GNSS_DataBitAssistance = -1; +static gint ett_lpp_GNSS_DataBitsSatList = -1; +static gint ett_lpp_GNSS_DataBitsSatElement = -1; +static gint ett_lpp_GNSS_DataBitsSgnList = -1; +static gint ett_lpp_GNSS_DataBitsSgnElement = -1; +static gint ett_lpp_GNSS_AcquisitionAssistance = -1; +static gint ett_lpp_GNSS_AcquisitionAssistList = -1; +static gint ett_lpp_GNSS_AcquisitionAssistElement = -1; +static gint ett_lpp_GNSS_Almanac = -1; +static gint ett_lpp_GNSS_AlmanacList = -1; +static gint ett_lpp_GNSS_AlmanacElement = -1; +static gint ett_lpp_AlmanacKeplerianSet = -1; +static gint ett_lpp_AlmanacNAV_KeplerianSet = -1; +static gint ett_lpp_AlmanacReducedKeplerianSet = -1; +static gint ett_lpp_AlmanacMidiAlmanacSet = -1; +static gint ett_lpp_AlmanacGLONASS_AlmanacSet = -1; +static gint ett_lpp_AlmanacECEF_SBAS_AlmanacSet = -1; +static gint ett_lpp_GNSS_UTC_Model = -1; +static gint ett_lpp_UTC_ModelSet1 = -1; +static gint ett_lpp_UTC_ModelSet2 = -1; +static gint ett_lpp_UTC_ModelSet3 = -1; +static gint ett_lpp_UTC_ModelSet4 = -1; +static gint ett_lpp_GNSS_AuxiliaryInformation = -1; +static gint ett_lpp_GNSS_ID_GPS = -1; +static gint ett_lpp_GNSS_ID_GPS_SatElement = -1; +static gint ett_lpp_GNSS_ID_GLONASS = -1; +static gint ett_lpp_GNSS_ID_GLONASS_SatElement = -1; +static gint ett_lpp_A_GNSS_RequestAssistanceData = -1; +static gint ett_lpp_GNSS_CommonAssistDataReq = -1; +static gint ett_lpp_GNSS_GenericAssistDataReq = -1; +static gint ett_lpp_GNSS_GenericAssistDataReqElement = -1; +static gint ett_lpp_GNSS_ReferenceTimeReq = -1; +static gint ett_lpp_SEQUENCE_SIZE_1_8_OF_GNSS_ID = -1; +static gint ett_lpp_GNSS_ReferenceLocationReq = -1; +static gint ett_lpp_GNSS_IonosphericModelReq = -1; +static gint ett_lpp_GNSS_EarthOrientationParametersReq = -1; +static gint ett_lpp_GNSS_TimeModelListReq = -1; +static gint ett_lpp_GNSS_TimeModelElementReq = -1; +static gint ett_lpp_GNSS_DifferentialCorrectionsReq = -1; +static gint ett_lpp_GNSS_NavigationModelReq = -1; +static gint ett_lpp_StoredNavListInfo = -1; +static gint ett_lpp_SatListRelatedDataList = -1; +static gint ett_lpp_SatListRelatedDataElement = -1; +static gint ett_lpp_ReqNavListInfo = -1; +static gint ett_lpp_T_clockModelID_PrefList = -1; +static gint ett_lpp_T_orbitModelID_PrefList = -1; +static gint ett_lpp_GNSS_RealTimeIntegrityReq = -1; +static gint ett_lpp_GNSS_DataBitAssistanceReq = -1; +static gint ett_lpp_GNSS_DataBitsReqSatList = -1; +static gint ett_lpp_GNSS_DataBitsReqSatElement = -1; +static gint ett_lpp_GNSS_AcquisitionAssistanceReq = -1; +static gint ett_lpp_GNSS_AlmanacReq = -1; +static gint ett_lpp_GNSS_UTC_ModelReq = -1; +static gint ett_lpp_GNSS_AuxiliaryInformationReq = -1; +static gint ett_lpp_A_GNSS_ProvideLocationInformation = -1; +static gint ett_lpp_GNSS_SignalMeasurementInformation = -1; +static gint ett_lpp_MeasurementReferenceTime = -1; +static gint ett_lpp_T_networkTime = -1; +static gint ett_lpp_T_eUTRA_01 = -1; +static gint ett_lpp_T_uTRA_01 = -1; +static gint ett_lpp_T_mode_01 = -1; +static gint ett_lpp_T_fdd_01 = -1; +static gint ett_lpp_T_tdd_01 = -1; +static gint ett_lpp_T_gSM_01 = -1; +static gint ett_lpp_T_referenceFrame = -1; +static gint ett_lpp_GNSS_MeasurementList = -1; +static gint ett_lpp_GNSS_MeasurementForOneGNSS = -1; +static gint ett_lpp_GNSS_SgnMeasList = -1; +static gint ett_lpp_GNSS_SgnMeasElement = -1; +static gint ett_lpp_GNSS_SatMeasList = -1; +static gint ett_lpp_GNSS_SatMeasElement = -1; +static gint ett_lpp_GNSS_LocationInformation = -1; +static gint ett_lpp_A_GNSS_RequestLocationInformation = -1; +static gint ett_lpp_GNSS_PositioningInstructions = -1; +static gint ett_lpp_A_GNSS_ProvideCapabilities = -1; +static gint ett_lpp_GNSS_SupportList = -1; +static gint ett_lpp_GNSS_SupportElement = -1; +static gint ett_lpp_T_fta_MeasSupport = -1; +static gint ett_lpp_AssistanceDataSupportList = -1; +static gint ett_lpp_GNSS_CommonAssistanceDataSupport = -1; +static gint ett_lpp_GNSS_ReferenceTimeSupport = -1; +static gint ett_lpp_GNSS_ReferenceLocationSupport = -1; +static gint ett_lpp_GNSS_IonosphericModelSupport = -1; +static gint ett_lpp_T_ionoModel = -1; +static gint ett_lpp_GNSS_EarthOrientationParametersSupport = -1; +static gint ett_lpp_GNSS_GenericAssistanceDataSupport = -1; +static gint ett_lpp_GNSS_GenericAssistDataSupportElement = -1; +static gint ett_lpp_GNSS_TimeModelListSupport = -1; +static gint ett_lpp_GNSS_DifferentialCorrectionsSupport = -1; +static gint ett_lpp_GNSS_NavigationModelSupport = -1; +static gint ett_lpp_T_clockModel = -1; +static gint ett_lpp_T_orbitModel = -1; +static gint ett_lpp_GNSS_RealTimeIntegritySupport = -1; +static gint ett_lpp_GNSS_DataBitAssistanceSupport = -1; +static gint ett_lpp_GNSS_AcquisitionAssistanceSupport = -1; +static gint ett_lpp_GNSS_AlmanacSupport = -1; +static gint ett_lpp_T_almanacModel = -1; +static gint ett_lpp_GNSS_UTC_ModelSupport = -1; +static gint ett_lpp_T_utc_Model = -1; +static gint ett_lpp_GNSS_AuxiliaryInformationSupport = -1; +static gint ett_lpp_A_GNSS_RequestCapabilities = -1; +static gint ett_lpp_A_GNSS_Error = -1; +static gint ett_lpp_GNSS_LocationServerErrorCauses = -1; +static gint ett_lpp_GNSS_TargetDeviceErrorCauses = -1; +static gint ett_lpp_GNSS_ID = -1; +static gint ett_lpp_GNSS_ID_Bitmap = -1; +static gint ett_lpp_T_gnss_ids = -1; +static gint ett_lpp_GNSS_SignalID = -1; +static gint ett_lpp_GNSS_SignalIDs = -1; +static gint ett_lpp_SBAS_ID = -1; +static gint ett_lpp_SBAS_IDs = -1; +static gint ett_lpp_T_sbas_IDs = -1; +static gint ett_lpp_SV_ID = -1; +static gint ett_lpp_ECID_ProvideLocationInformation = -1; +static gint ett_lpp_ECID_SignalMeasurementInformation = -1; +static gint ett_lpp_MeasuredResultsList = -1; +static gint ett_lpp_MeasuredResultsElement = -1; +static gint ett_lpp_ECID_RequestLocationInformation = -1; +static gint ett_lpp_T_requestedMeasurements = -1; +static gint ett_lpp_ECID_ProvideCapabilities = -1; +static gint ett_lpp_T_ecid_MeasSupported = -1; +static gint ett_lpp_ECID_RequestCapabilities = -1; +static gint ett_lpp_ECID_Error = -1; +static gint ett_lpp_ECID_LocationServerErrorCauses = -1; +static gint ett_lpp_ECID_TargetDeviceErrorCauses = -1; + +/*--- End of included file: packet-lpp-ett.c ---*/ +#line 56 "../../asn1/lpp/packet-lpp-template.c" + +/* Include constants */ + +/*--- Included file: packet-lpp-val.h ---*/ +#line 1 "../../asn1/lpp/packet-lpp-val.h" +#define maxEPDU 16 +#define maxFreqLayers 3 +#define maxBands 64 + +/*--- End of included file: packet-lpp-val.h ---*/ +#line 59 "../../asn1/lpp/packet-lpp-template.c" + + + +/*--- Included file: packet-lpp-fn.c ---*/ +#line 1 "../../asn1/lpp/packet-lpp-fn.c" + +static const value_string lpp_Initiator_vals[] = { + { 0, "locationServer" }, + { 1, "targetDevice" }, + { 0, NULL } +}; + + +static int +dissect_lpp_Initiator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_lpp_TransactionNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t LPP_TransactionID_sequence[] = { + { &hf_lpp_initiator , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_Initiator }, + { &hf_lpp_transactionNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_TransactionNumber }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_LPP_TransactionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_LPP_TransactionID, LPP_TransactionID_sequence); + + return offset; +} + + + +static int +dissect_lpp_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL); + + return offset; +} + + + +static int +dissect_lpp_SequenceNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t Acknowledgement_sequence[] = { + { &hf_lpp_ackRequested , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_ackIndicator , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_SequenceNumber }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_Acknowledgement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_Acknowledgement, Acknowledgement_sequence); + + return offset; +} + + +static const per_sequence_t CommonIEsRequestCapabilities_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_CommonIEsRequestCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_CommonIEsRequestCapabilities, CommonIEsRequestCapabilities_sequence); + + return offset; +} + + +static const per_sequence_t A_GNSS_RequestCapabilities_sequence[] = { + { &hf_lpp_gnss_SupportListReq, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_assistanceDataSupportListReq, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_locationVelocityTypesReq, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_A_GNSS_RequestCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_A_GNSS_RequestCapabilities, A_GNSS_RequestCapabilities_sequence); + + return offset; +} + + +static const per_sequence_t OTDOA_RequestCapabilities_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_RequestCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_RequestCapabilities, OTDOA_RequestCapabilities_sequence); + + return offset; +} + + +static const per_sequence_t ECID_RequestCapabilities_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_ECID_RequestCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ECID_RequestCapabilities, ECID_RequestCapabilities_sequence); + + return offset; +} + + + +static int +dissect_lpp_EPDU_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 256U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_EPDU_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_VisibleString(tvb, offset, actx, tree, hf_index, + 1, 32, FALSE); + + return offset; +} + + +static const per_sequence_t EPDU_Identifier_sequence[] = { + { &hf_lpp_ePDU_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_EPDU_ID }, + { &hf_lpp_ePDU_Name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_EPDU_Name }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_EPDU_Identifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_EPDU_Identifier, EPDU_Identifier_sequence); + + return offset; +} + + + +static int +dissect_lpp_EPDU_Body(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t EPDU_sequence[] = { + { &hf_lpp_ePDU_Identifier , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_EPDU_Identifier }, + { &hf_lpp_ePDU_Body , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_EPDU_Body }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_EPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_EPDU, EPDU_sequence); + + return offset; +} + + +static const per_sequence_t EPDU_Sequence_sequence_of[1] = { + { &hf_lpp_EPDU_Sequence_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_EPDU }, +}; + +static int +dissect_lpp_EPDU_Sequence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_EPDU_Sequence, EPDU_Sequence_sequence_of, + 1, maxEPDU, FALSE); + + return offset; +} + + +static const per_sequence_t RequestCapabilities_r9_IEs_sequence[] = { + { &hf_lpp_commonIEsRequestCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CommonIEsRequestCapabilities }, + { &hf_lpp_a_gnss_RequestCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_A_GNSS_RequestCapabilities }, + { &hf_lpp_otdoa_RequestCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_RequestCapabilities }, + { &hf_lpp_ecid_RequestCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ECID_RequestCapabilities }, + { &hf_lpp_epdu_RequestCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_EPDU_Sequence }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_RequestCapabilities_r9_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_RequestCapabilities_r9_IEs, RequestCapabilities_r9_IEs_sequence); + + return offset; +} + + + +static int +dissect_lpp_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_null(tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const value_string lpp_T_c1_01_vals[] = { + { 0, "requestCapabilities-r9" }, + { 1, "spare3" }, + { 2, "spare2" }, + { 3, "spare1" }, + { 0, NULL } +}; + +static const per_choice_t T_c1_01_choice[] = { + { 0, &hf_lpp_requestCapabilities_r9, ASN1_NO_EXTENSIONS , dissect_lpp_RequestCapabilities_r9_IEs }, + { 1, &hf_lpp_spare3 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 2, &hf_lpp_spare2 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 3, &hf_lpp_spare1 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_c1_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_c1_01, T_c1_01_choice, + NULL); + + return offset; +} + + +static const per_sequence_t T_criticalExtensionsFuture_sequence[] = { + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensionsFuture(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensionsFuture, T_criticalExtensionsFuture_sequence); + + return offset; +} + + +static const value_string lpp_T_criticalExtensions_vals[] = { + { 0, "c1" }, + { 1, "criticalExtensionsFuture" }, + { 0, NULL } +}; + +static const per_choice_t T_criticalExtensions_choice[] = { + { 0, &hf_lpp_c1_01 , ASN1_NO_EXTENSIONS , dissect_lpp_T_c1_01 }, + { 1, &hf_lpp_criticalExtensionsFuture, ASN1_NO_EXTENSIONS , dissect_lpp_T_criticalExtensionsFuture }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensions, T_criticalExtensions_choice, + NULL); + + return offset; +} + + +static const per_sequence_t RequestCapabilities_sequence[] = { + { &hf_lpp_criticalExtensions, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_criticalExtensions }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_RequestCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 29 "../../asn1/lpp/lpp.cnf" + + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Request Capabilities"); + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_RequestCapabilities, RequestCapabilities_sequence); + + return offset; +} + + +static const per_sequence_t CommonIEsProvideCapabilities_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_CommonIEsProvideCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_CommonIEsProvideCapabilities, CommonIEsProvideCapabilities_sequence); + + return offset; +} + + +static const value_string lpp_T_gnss_id_vals[] = { + { 0, "gps" }, + { 1, "sbas" }, + { 2, "qzss" }, + { 3, "galileo" }, + { 4, "glonass" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_gnss_id(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 5, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_ID_sequence[] = { + { &hf_lpp_gnss_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_gnss_id }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ID, GNSS_ID_sequence); + + return offset; +} + + + +static int +dissect_lpp_T_sbas_IDs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 8, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t SBAS_IDs_sequence[] = { + { &hf_lpp_sbas_IDs_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_sbas_IDs }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_SBAS_IDs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_SBAS_IDs, SBAS_IDs_sequence); + + return offset; +} + + + +static int +dissect_lpp_T_posModes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 8, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t PositioningModes_sequence[] = { + { &hf_lpp_posModes , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_posModes }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_PositioningModes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_PositioningModes, PositioningModes_sequence); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 8, 8, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_SignalIDs_sequence[] = { + { &hf_lpp_gnss_SignalIDs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_8 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_SignalIDs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_SignalIDs, GNSS_SignalIDs_sequence); + + return offset; +} + + + +static int +dissect_lpp_T_accessTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 8, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t AccessTypes_sequence[] = { + { &hf_lpp_accessTypes , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_accessTypes }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_AccessTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_AccessTypes, AccessTypes_sequence); + + return offset; +} + + +static const per_sequence_t T_fta_MeasSupport_sequence[] = { + { &hf_lpp_cellTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_AccessTypes }, + { &hf_lpp_mode_02 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_PositioningModes }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_fta_MeasSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_fta_MeasSupport, T_fta_MeasSupport_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_SupportElement_sequence[] = { + { &hf_lpp_gnss_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID }, + { &hf_lpp_sbas_IDs , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_SBAS_IDs }, + { &hf_lpp_agnss_Modes , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_PositioningModes }, + { &hf_lpp_gnss_Signals , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalIDs }, + { &hf_lpp_fta_MeasSupport , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_fta_MeasSupport }, + { &hf_lpp_adr_Support , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_velocityMeasurementSupport, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_SupportElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_SupportElement, GNSS_SupportElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_SupportList_sequence_of[1] = { + { &hf_lpp_GNSS_SupportList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SupportElement }, +}; + +static int +dissect_lpp_GNSS_SupportList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_SupportList, GNSS_SupportList_sequence_of, + 1, 16, FALSE); + + return offset; +} + + + +static int +dissect_lpp_T_gnss_ids(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 16, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_ID_Bitmap_sequence[] = { + { &hf_lpp_gnss_ids , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_gnss_ids }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ID_Bitmap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ID_Bitmap, GNSS_ID_Bitmap_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_ReferenceTimeSupport_sequence[] = { + { &hf_lpp_gnss_SystemTime_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID_Bitmap }, + { &hf_lpp_fta_Support , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_AccessTypes }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ReferenceTimeSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ReferenceTimeSupport, GNSS_ReferenceTimeSupport_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_ReferenceLocationSupport_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ReferenceLocationSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ReferenceLocationSupport, GNSS_ReferenceLocationSupport_sequence); + + return offset; +} + + + +static int +dissect_lpp_T_ionoModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 8, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_IonosphericModelSupport_sequence[] = { + { &hf_lpp_ionoModel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_ionoModel }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_IonosphericModelSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_IonosphericModelSupport, GNSS_IonosphericModelSupport_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_EarthOrientationParametersSupport_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_GNSS_EarthOrientationParametersSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_EarthOrientationParametersSupport, GNSS_EarthOrientationParametersSupport_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_CommonAssistanceDataSupport_sequence[] = { + { &hf_lpp_gnss_ReferenceTimeSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_ReferenceTimeSupport }, + { &hf_lpp_gnss_ReferenceLocationSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_ReferenceLocationSupport }, + { &hf_lpp_gnss_IonosphericModelSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_IonosphericModelSupport }, + { &hf_lpp_gnss_EarthOrientationParametersSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_EarthOrientationParametersSupport }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_CommonAssistanceDataSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_CommonAssistanceDataSupport, GNSS_CommonAssistanceDataSupport_sequence); + + return offset; +} + + +static const value_string lpp_T_sbas_id_vals[] = { + { 0, "waas" }, + { 1, "egnos" }, + { 2, "msas" }, + { 3, "gagan" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_sbas_id(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 4, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t SBAS_ID_sequence[] = { + { &hf_lpp_sbas_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_sbas_id }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_SBAS_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_SBAS_ID, SBAS_ID_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_TimeModelListSupport_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_GNSS_TimeModelListSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_TimeModelListSupport, GNSS_TimeModelListSupport_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_DifferentialCorrectionsSupport_sequence[] = { + { &hf_lpp_gnssSignalIDs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalIDs }, + { &hf_lpp_dgnss_ValidityTimeSup, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_DifferentialCorrectionsSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DifferentialCorrectionsSupport, GNSS_DifferentialCorrectionsSupport_sequence); + + return offset; +} + + + +static int +dissect_lpp_T_clockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 8, FALSE, NULL); + + return offset; +} + + + +static int +dissect_lpp_T_orbitModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 8, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_NavigationModelSupport_sequence[] = { + { &hf_lpp_clockModel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_clockModel }, + { &hf_lpp_orbitModel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_orbitModel }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_NavigationModelSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_NavigationModelSupport, GNSS_NavigationModelSupport_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_RealTimeIntegritySupport_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_GNSS_RealTimeIntegritySupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_RealTimeIntegritySupport, GNSS_RealTimeIntegritySupport_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_DataBitAssistanceSupport_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_GNSS_DataBitAssistanceSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DataBitAssistanceSupport, GNSS_DataBitAssistanceSupport_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_AcquisitionAssistanceSupport_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_GNSS_AcquisitionAssistanceSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AcquisitionAssistanceSupport, GNSS_AcquisitionAssistanceSupport_sequence); + + return offset; +} + + + +static int +dissect_lpp_T_almanacModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 8, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_AlmanacSupport_sequence[] = { + { &hf_lpp_almanacModel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_almanacModel }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_AlmanacSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AlmanacSupport, GNSS_AlmanacSupport_sequence); + + return offset; +} + + + +static int +dissect_lpp_T_utc_Model(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 8, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_UTC_ModelSupport_sequence[] = { + { &hf_lpp_utc_Model , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_utc_Model }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_UTC_ModelSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_UTC_ModelSupport, GNSS_UTC_ModelSupport_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_AuxiliaryInformationSupport_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_GNSS_AuxiliaryInformationSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AuxiliaryInformationSupport, GNSS_AuxiliaryInformationSupport_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_GenericAssistDataSupportElement_sequence[] = { + { &hf_lpp_gnss_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID }, + { &hf_lpp_sbas_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_SBAS_ID }, + { &hf_lpp_gnss_TimeModelsSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_TimeModelListSupport }, + { &hf_lpp_gnss_DifferentialCorrectionsSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_DifferentialCorrectionsSupport }, + { &hf_lpp_gnss_NavigationModelSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_NavigationModelSupport }, + { &hf_lpp_gnss_RealTimeIntegritySupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_RealTimeIntegritySupport }, + { &hf_lpp_gnss_DataBitAssistanceSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_DataBitAssistanceSupport }, + { &hf_lpp_gnss_AcquisitionAssistanceSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_AcquisitionAssistanceSupport }, + { &hf_lpp_gnss_AlmanacSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_AlmanacSupport }, + { &hf_lpp_gnss_UTC_ModelSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_UTC_ModelSupport }, + { &hf_lpp_gnss_AuxiliaryInformationSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_AuxiliaryInformationSupport }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_GenericAssistDataSupportElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_GenericAssistDataSupportElement, GNSS_GenericAssistDataSupportElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_GenericAssistanceDataSupport_sequence_of[1] = { + { &hf_lpp_GNSS_GenericAssistanceDataSupport_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_GenericAssistDataSupportElement }, +}; + +static int +dissect_lpp_GNSS_GenericAssistanceDataSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_GenericAssistanceDataSupport, GNSS_GenericAssistanceDataSupport_sequence_of, + 1, 16, FALSE); + + return offset; +} + + +static const per_sequence_t AssistanceDataSupportList_sequence[] = { + { &hf_lpp_gnss_CommonAssistanceDataSupport, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_CommonAssistanceDataSupport }, + { &hf_lpp_gnss_GenericAssistanceDataSupport, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_GenericAssistanceDataSupport }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_AssistanceDataSupportList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_AssistanceDataSupportList, AssistanceDataSupportList_sequence); + + return offset; +} + + +static const per_sequence_t LocationCoordinateTypes_sequence[] = { + { &hf_lpp_ellipsoidPoint , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_ellipsoidPointWithUncertaintyCircle, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_ellipsoidPointWithUncertaintyEllipse, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_polygon , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_ellipsoidPointWithAltitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_ellipsoidPointWithAltitudeAndUncertaintyEllipsoid, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_ellipsoidArc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_LocationCoordinateTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_LocationCoordinateTypes, LocationCoordinateTypes_sequence); + + return offset; +} + + +static const per_sequence_t VelocityTypes_sequence[] = { + { &hf_lpp_horizontalVelocity, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_horizontalWithVerticalVelocity, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_horizontalVelocityWithUncertainty, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_horizontalWithVerticalVelocityAndUncertainty, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_VelocityTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_VelocityTypes, VelocityTypes_sequence); + + return offset; +} + + +static const per_sequence_t A_GNSS_ProvideCapabilities_sequence[] = { + { &hf_lpp_gnss_SupportList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_SupportList }, + { &hf_lpp_assistanceDataSupportList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_AssistanceDataSupportList }, + { &hf_lpp_locationCoordinateTypes, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_LocationCoordinateTypes }, + { &hf_lpp_velocityTypes , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_VelocityTypes }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_A_GNSS_ProvideCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_A_GNSS_ProvideCapabilities, A_GNSS_ProvideCapabilities_sequence); + + return offset; +} + + + +static int +dissect_lpp_T_otdoa_Mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 8, FALSE, NULL); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_1_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 64U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t SupportedBandEUTRA_sequence[] = { + { &hf_lpp_bandEUTRA , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_64 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_SupportedBandEUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_SupportedBandEUTRA, SupportedBandEUTRA_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_maxBands_OF_SupportedBandEUTRA_sequence_of[1] = { + { &hf_lpp_supportedBandListEUTRA_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_SupportedBandEUTRA }, +}; + +static int +dissect_lpp_SEQUENCE_SIZE_1_maxBands_OF_SupportedBandEUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_SEQUENCE_SIZE_1_maxBands_OF_SupportedBandEUTRA, SEQUENCE_SIZE_1_maxBands_OF_SupportedBandEUTRA_sequence_of, + 1, maxBands, FALSE); + + return offset; +} + + +static const per_sequence_t OTDOA_ProvideCapabilities_sequence[] = { + { &hf_lpp_otdoa_Mode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_otdoa_Mode }, + { &hf_lpp_supportedBandListEUTRA, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_lpp_SEQUENCE_SIZE_1_maxBands_OF_SupportedBandEUTRA }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_ProvideCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_ProvideCapabilities, OTDOA_ProvideCapabilities_sequence); + + return offset; +} + + + +static int +dissect_lpp_T_ecid_MeasSupported(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 8, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t ECID_ProvideCapabilities_sequence[] = { + { &hf_lpp_ecid_MeasSupported, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_ecid_MeasSupported }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ECID_ProvideCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ECID_ProvideCapabilities, ECID_ProvideCapabilities_sequence); + + return offset; +} + + +static const per_sequence_t ProvideCapabilities_r9_IEs_sequence[] = { + { &hf_lpp_commonIEsProvideCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CommonIEsProvideCapabilities }, + { &hf_lpp_a_gnss_ProvideCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_A_GNSS_ProvideCapabilities }, + { &hf_lpp_otdoa_ProvideCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_ProvideCapabilities }, + { &hf_lpp_ecid_ProvideCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ECID_ProvideCapabilities }, + { &hf_lpp_epdu_ProvideCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_EPDU_Sequence }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ProvideCapabilities_r9_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ProvideCapabilities_r9_IEs, ProvideCapabilities_r9_IEs_sequence); + + return offset; +} + + +static const value_string lpp_T_c1_02_vals[] = { + { 0, "provideCapabilities-r9" }, + { 1, "spare3" }, + { 2, "spare2" }, + { 3, "spare1" }, + { 0, NULL } +}; + +static const per_choice_t T_c1_02_choice[] = { + { 0, &hf_lpp_provideCapabilities_r9, ASN1_NO_EXTENSIONS , dissect_lpp_ProvideCapabilities_r9_IEs }, + { 1, &hf_lpp_spare3 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 2, &hf_lpp_spare2 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 3, &hf_lpp_spare1 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_c1_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_c1_02, T_c1_02_choice, + NULL); + + return offset; +} + + +static const per_sequence_t T_criticalExtensionsFuture_01_sequence[] = { + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensionsFuture_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensionsFuture_01, T_criticalExtensionsFuture_01_sequence); + + return offset; +} + + +static const value_string lpp_T_criticalExtensions_01_vals[] = { + { 0, "c1" }, + { 1, "criticalExtensionsFuture" }, + { 0, NULL } +}; + +static const per_choice_t T_criticalExtensions_01_choice[] = { + { 0, &hf_lpp_c1_02 , ASN1_NO_EXTENSIONS , dissect_lpp_T_c1_02 }, + { 1, &hf_lpp_criticalExtensionsFuture_01, ASN1_NO_EXTENSIONS , dissect_lpp_T_criticalExtensionsFuture_01 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensions_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensions_01, T_criticalExtensions_01_choice, + NULL); + + return offset; +} + + +static const per_sequence_t ProvideCapabilities_sequence[] = { + { &hf_lpp_criticalExtensions_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_criticalExtensions_01 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ProvideCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 33 "../../asn1/lpp/lpp.cnf" + + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Provide Capabilities"); + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ProvideCapabilities, ProvideCapabilities_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 9U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t T_mcc_02_sequence_of[1] = { + { &hf_lpp_mcc_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_9 }, +}; + +static int +dissect_lpp_T_mcc_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_T_mcc_02, T_mcc_02_sequence_of, + 3, 3, FALSE); + + return offset; +} + + +static const per_sequence_t T_mnc_02_sequence_of[1] = { + { &hf_lpp_mnc_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_9 }, +}; + +static int +dissect_lpp_T_mnc_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_T_mnc_02, T_mnc_02_sequence_of, + 2, 3, FALSE); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 28, 28, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t ECGI_sequence[] = { + { &hf_lpp_mcc_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_mcc_02 }, + { &hf_lpp_mnc_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_mnc_02 }, + { &hf_lpp_cellidentity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_28 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ECGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ECGI, ECGI_sequence); + + return offset; +} + + +static const per_sequence_t CommonIEsRequestAssistanceData_sequence[] = { + { &hf_lpp_servingCellID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ECGI }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_CommonIEsRequestAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_CommonIEsRequestAssistanceData, CommonIEsRequestAssistanceData_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_8_OF_GNSS_ID_sequence_of[1] = { + { &hf_lpp_gnss_TimeReqPrefList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID }, +}; + +static int +dissect_lpp_SEQUENCE_SIZE_1_8_OF_GNSS_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_SEQUENCE_SIZE_1_8_OF_GNSS_ID, SEQUENCE_SIZE_1_8_OF_GNSS_ID_sequence_of, + 1, 8, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_ReferenceTimeReq_sequence[] = { + { &hf_lpp_gnss_TimeReqPrefList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SEQUENCE_SIZE_1_8_OF_GNSS_ID }, + { &hf_lpp_gps_TOW_assistReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_BOOLEAN }, + { &hf_lpp_notOfLeapSecReq , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ReferenceTimeReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ReferenceTimeReq, GNSS_ReferenceTimeReq_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_ReferenceLocationReq_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ReferenceLocationReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ReferenceLocationReq, GNSS_ReferenceLocationReq_sequence); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 2, 2, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_IonosphericModelReq_sequence[] = { + { &hf_lpp_klobucharModelReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_BIT_STRING_SIZE_2 }, + { &hf_lpp_neQuickModelReq , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_NULL }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_IonosphericModelReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_IonosphericModelReq, GNSS_IonosphericModelReq_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_EarthOrientationParametersReq_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_GNSS_EarthOrientationParametersReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_EarthOrientationParametersReq, GNSS_EarthOrientationParametersReq_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_CommonAssistDataReq_sequence[] = { + { &hf_lpp_gnss_ReferenceTimeReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_ReferenceTimeReq }, + { &hf_lpp_gnss_ReferenceLocationReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_ReferenceLocationReq }, + { &hf_lpp_gnss_IonosphericModelReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_IonosphericModelReq }, + { &hf_lpp_gnss_EarthOrientationParametersReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_EarthOrientationParametersReq }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_CommonAssistDataReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_CommonAssistDataReq, GNSS_CommonAssistDataReq_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_1_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 15U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_TimeModelElementReq_sequence[] = { + { &hf_lpp_gnss_TO_IDsReq , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_15 }, + { &hf_lpp_deltaTreq , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_TimeModelElementReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_TimeModelElementReq, GNSS_TimeModelElementReq_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_TimeModelListReq_sequence_of[1] = { + { &hf_lpp_GNSS_TimeModelListReq_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_TimeModelElementReq }, +}; + +static int +dissect_lpp_GNSS_TimeModelListReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_TimeModelListReq, GNSS_TimeModelListReq_sequence_of, + 1, 15, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_DifferentialCorrectionsReq_sequence[] = { + { &hf_lpp_dgnss_SignalsReq, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalIDs }, + { &hf_lpp_dgnss_ValidityTimeReq, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_DifferentialCorrectionsReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DifferentialCorrectionsReq, GNSS_DifferentialCorrectionsReq_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_4095(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4095U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 15U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 63U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t SV_ID_sequence[] = { + { &hf_lpp_satellite_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_63 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_SV_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_SV_ID, SV_ID_sequence); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 11, 11, FALSE, NULL); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_1_8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 8U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t SatListRelatedDataElement_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_iod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_11 }, + { &hf_lpp_clockModelID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_1_8 }, + { &hf_lpp_orbitModelID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_1_8 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_SatListRelatedDataElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_SatListRelatedDataElement, SatListRelatedDataElement_sequence); + + return offset; +} + + +static const per_sequence_t SatListRelatedDataList_sequence_of[1] = { + { &hf_lpp_SatListRelatedDataList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_SatListRelatedDataElement }, +}; + +static int +dissect_lpp_SatListRelatedDataList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_SatListRelatedDataList, SatListRelatedDataList_sequence_of, + 1, 64, FALSE); + + return offset; +} + + +static const per_sequence_t StoredNavListInfo_sequence[] = { + { &hf_lpp_gnss_WeekOrDay , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4095 }, + { &hf_lpp_gnss_Toe , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_t_toeLimit , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 }, + { &hf_lpp_satListRelatedDataList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_SatListRelatedDataList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_StoredNavListInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_StoredNavListInfo, StoredNavListInfo_sequence); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 64, 64, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t T_clockModelID_PrefList_sequence_of[1] = { + { &hf_lpp_clockModelID_PrefList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_8 }, +}; + +static int +dissect_lpp_T_clockModelID_PrefList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_T_clockModelID_PrefList, T_clockModelID_PrefList_sequence_of, + 1, 8, FALSE); + + return offset; +} + + +static const per_sequence_t T_orbitModelID_PrefList_sequence_of[1] = { + { &hf_lpp_orbitModelID_PrefList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_8 }, +}; + +static int +dissect_lpp_T_orbitModelID_PrefList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_T_orbitModelID_PrefList, T_orbitModelID_PrefList_sequence_of, + 1, 8, FALSE); + + return offset; +} + + +static const per_sequence_t ReqNavListInfo_sequence[] = { + { &hf_lpp_svReqList , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_64 }, + { &hf_lpp_clockModelID_PrefList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_clockModelID_PrefList }, + { &hf_lpp_orbitModelID_PrefList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_orbitModelID_PrefList }, + { &hf_lpp_addNavparamReq , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ReqNavListInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ReqNavListInfo, ReqNavListInfo_sequence); + + return offset; +} + + +static const value_string lpp_GNSS_NavigationModelReq_vals[] = { + { 0, "storedNavList" }, + { 1, "reqNavList" }, + { 0, NULL } +}; + +static const per_choice_t GNSS_NavigationModelReq_choice[] = { + { 0, &hf_lpp_storedNavList , ASN1_EXTENSION_ROOT , dissect_lpp_StoredNavListInfo }, + { 1, &hf_lpp_reqNavList , ASN1_EXTENSION_ROOT , dissect_lpp_ReqNavListInfo }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_GNSS_NavigationModelReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_NavigationModelReq, GNSS_NavigationModelReq_choice, + NULL); + + return offset; +} + + +static const per_sequence_t GNSS_RealTimeIntegrityReq_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_GNSS_RealTimeIntegrityReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_RealTimeIntegrityReq, GNSS_RealTimeIntegrityReq_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_3599(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 3599U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 999U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_DataBitsReqSatElement_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_DataBitsReqSatElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DataBitsReqSatElement, GNSS_DataBitsReqSatElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_DataBitsReqSatList_sequence_of[1] = { + { &hf_lpp_GNSS_DataBitsReqSatList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_DataBitsReqSatElement }, +}; + +static int +dissect_lpp_GNSS_DataBitsReqSatList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DataBitsReqSatList, GNSS_DataBitsReqSatList_sequence_of, + 1, 64, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_DataBitAssistanceReq_sequence[] = { + { &hf_lpp_gnss_TOD_Req , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3599 }, + { &hf_lpp_gnss_TOD_FracReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_999 }, + { &hf_lpp_dataBitInterval , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 }, + { &hf_lpp_gnss_SignalType_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalIDs }, + { &hf_lpp_gnss_DataBitsReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_DataBitsReqSatList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_DataBitAssistanceReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DataBitAssistanceReq, GNSS_DataBitAssistanceReq_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 7U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_SignalID_sequence[] = { + { &hf_lpp_gnss_SignalID_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_7 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_SignalID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_SignalID, GNSS_SignalID_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_AcquisitionAssistanceReq_sequence[] = { + { &hf_lpp_gnss_SignalID_Req, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_AcquisitionAssistanceReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AcquisitionAssistanceReq, GNSS_AcquisitionAssistanceReq_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_AlmanacReq_sequence[] = { + { &hf_lpp_modelID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_1_8 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_AlmanacReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AlmanacReq, GNSS_AlmanacReq_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_UTC_ModelReq_sequence[] = { + { &hf_lpp_modelID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_1_8 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_UTC_ModelReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_UTC_ModelReq, GNSS_UTC_ModelReq_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_AuxiliaryInformationReq_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_GNSS_AuxiliaryInformationReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AuxiliaryInformationReq, GNSS_AuxiliaryInformationReq_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_GenericAssistDataReqElement_sequence[] = { + { &hf_lpp_gnss_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID }, + { &hf_lpp_sbas_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_SBAS_ID }, + { &hf_lpp_gnss_TimeModelsReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_TimeModelListReq }, + { &hf_lpp_gnss_DifferentialCorrectionsReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_DifferentialCorrectionsReq }, + { &hf_lpp_gnss_NavigationModelReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_NavigationModelReq }, + { &hf_lpp_gnss_RealTimeIntegrityReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_RealTimeIntegrityReq }, + { &hf_lpp_gnss_DataBitAssistanceReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_DataBitAssistanceReq }, + { &hf_lpp_gnss_AcquisitionAssistanceReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_AcquisitionAssistanceReq }, + { &hf_lpp_gnss_AlmanacReq , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_AlmanacReq }, + { &hf_lpp_gnss_UTCModelReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_UTC_ModelReq }, + { &hf_lpp_gnss_AuxiliaryInformationReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_AuxiliaryInformationReq }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_GenericAssistDataReqElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_GenericAssistDataReqElement, GNSS_GenericAssistDataReqElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_GenericAssistDataReq_sequence_of[1] = { + { &hf_lpp_GNSS_GenericAssistDataReq_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_GenericAssistDataReqElement }, +}; + +static int +dissect_lpp_GNSS_GenericAssistDataReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_GenericAssistDataReq, GNSS_GenericAssistDataReq_sequence_of, + 1, 16, FALSE); + + return offset; +} + + +static const per_sequence_t A_GNSS_RequestAssistanceData_sequence[] = { + { &hf_lpp_gnss_CommonAssistDataReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_CommonAssistDataReq }, + { &hf_lpp_gnss_GenericAssistDataReq, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_GenericAssistDataReq }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_A_GNSS_RequestAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_A_GNSS_RequestAssistanceData, A_GNSS_RequestAssistanceData_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_503(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 503U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t OTDOA_RequestAssistanceData_sequence[] = { + { &hf_lpp_physCellId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_RequestAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_RequestAssistanceData, OTDOA_RequestAssistanceData_sequence); + + return offset; +} + + +static const per_sequence_t RequestAssistanceData_r9_IEs_sequence[] = { + { &hf_lpp_commonIEsRequestAssistanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CommonIEsRequestAssistanceData }, + { &hf_lpp_a_gnss_RequestAssistanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_A_GNSS_RequestAssistanceData }, + { &hf_lpp_otdoa_RequestAssistanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_RequestAssistanceData }, + { &hf_lpp_epdu_RequestAssistanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_EPDU_Sequence }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_RequestAssistanceData_r9_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_RequestAssistanceData_r9_IEs, RequestAssistanceData_r9_IEs_sequence); + + return offset; +} + + +static const value_string lpp_T_c1_03_vals[] = { + { 0, "requestAssistanceData-r9" }, + { 1, "spare3" }, + { 2, "spare2" }, + { 3, "spare1" }, + { 0, NULL } +}; + +static const per_choice_t T_c1_03_choice[] = { + { 0, &hf_lpp_requestAssistanceData_r9, ASN1_NO_EXTENSIONS , dissect_lpp_RequestAssistanceData_r9_IEs }, + { 1, &hf_lpp_spare3 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 2, &hf_lpp_spare2 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 3, &hf_lpp_spare1 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_c1_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_c1_03, T_c1_03_choice, + NULL); + + return offset; +} + + +static const per_sequence_t T_criticalExtensionsFuture_02_sequence[] = { + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensionsFuture_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensionsFuture_02, T_criticalExtensionsFuture_02_sequence); + + return offset; +} + + +static const value_string lpp_T_criticalExtensions_02_vals[] = { + { 0, "c1" }, + { 1, "criticalExtensionsFuture" }, + { 0, NULL } +}; + +static const per_choice_t T_criticalExtensions_02_choice[] = { + { 0, &hf_lpp_c1_03 , ASN1_NO_EXTENSIONS , dissect_lpp_T_c1_03 }, + { 1, &hf_lpp_criticalExtensionsFuture_02, ASN1_NO_EXTENSIONS , dissect_lpp_T_criticalExtensionsFuture_02 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensions_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensions_02, T_criticalExtensions_02_choice, + NULL); + + return offset; +} + + +static const per_sequence_t RequestAssistanceData_sequence[] = { + { &hf_lpp_criticalExtensions_02, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_criticalExtensions_02 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_RequestAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 37 "../../asn1/lpp/lpp.cnf" + + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Request Assistance Data"); + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_RequestAssistanceData, RequestAssistanceData_sequence); + + return offset; +} + + +static const per_sequence_t CommonIEsProvideAssistanceData_sequence[] = { + { NULL, ASN1_EXTENSION_ROOT, 0, NULL } +}; + +static int +dissect_lpp_CommonIEsProvideAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_CommonIEsProvideAssistanceData, CommonIEsProvideAssistanceData_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_32767(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 32767U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_86399(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 86399U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_16383(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 16383U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 1U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 3U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GPS_TOW_AssistElement_sequence[] = { + { &hf_lpp_satelliteID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_64 }, + { &hf_lpp_tlmWord , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_16383 }, + { &hf_lpp_antiSpoof , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1 }, + { &hf_lpp_alert , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1 }, + { &hf_lpp_tlmRsvdBits , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GPS_TOW_AssistElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GPS_TOW_AssistElement, GPS_TOW_AssistElement_sequence); + + return offset; +} + + +static const per_sequence_t GPS_TOW_Assist_sequence_of[1] = { + { &hf_lpp_GPS_TOW_Assist_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GPS_TOW_AssistElement }, +}; + +static int +dissect_lpp_GPS_TOW_Assist(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GPS_TOW_Assist, GPS_TOW_Assist_sequence_of, + 1, 64, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_SystemTime_sequence[] = { + { &hf_lpp_gnss_TimeID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID }, + { &hf_lpp_gnss_DayNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_32767 }, + { &hf_lpp_gnss_TimeOfDay , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_86399 }, + { &hf_lpp_gnss_TimeOfDayFrac_msec, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_999 }, + { &hf_lpp_notificationOfLeapSecond, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_BIT_STRING_SIZE_2 }, + { &hf_lpp_gps_TOW_Assist , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GPS_TOW_Assist }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_SystemTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_SystemTime, GNSS_SystemTime_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 127U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_12533(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 12533U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_3999999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 3999999U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M64_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -64, 63U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t T_mcc_sequence_of[1] = { + { &hf_lpp_mcc_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_9 }, +}; + +static int +dissect_lpp_T_mcc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_T_mcc, T_mcc_sequence_of, + 3, 3, FALSE); + + return offset; +} + + +static const per_sequence_t T_mnc_sequence_of[1] = { + { &hf_lpp_mnc_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_9 }, +}; + +static int +dissect_lpp_T_mnc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_T_mnc, T_mnc_sequence_of, + 2, 3, FALSE); + + return offset; +} + + +static const per_sequence_t T_plmn_Identity_sequence[] = { + { &hf_lpp_mcc , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_mcc }, + { &hf_lpp_mnc , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_mnc }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_plmn_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_plmn_Identity, T_plmn_Identity_sequence); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 32, 32, FALSE, NULL); + + return offset; +} + + +static const value_string lpp_T_cellIdentity_vals[] = { + { 0, "eutra" }, + { 1, "utra" }, + { 0, NULL } +}; + +static const per_choice_t T_cellIdentity_choice[] = { + { 0, &hf_lpp_eutra , ASN1_NO_EXTENSIONS , dissect_lpp_BIT_STRING_SIZE_28 }, + { 1, &hf_lpp_utra , ASN1_NO_EXTENSIONS , dissect_lpp_BIT_STRING_SIZE_32 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_cellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_cellIdentity, T_cellIdentity_choice, + NULL); + + return offset; +} + + +static const per_sequence_t CellGlobalIdEUTRA_AndUTRA_sequence[] = { + { &hf_lpp_plmn_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_plmn_Identity }, + { &hf_lpp_cellIdentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cellIdentity }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_CellGlobalIdEUTRA_AndUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_CellGlobalIdEUTRA_AndUTRA, CellGlobalIdEUTRA_AndUTRA_sequence); + + return offset; +} + + + +static int +dissect_lpp_ARFCN_ValueEUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 65535U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t T_eUTRA_sequence[] = { + { &hf_lpp_physCellId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 }, + { &hf_lpp_cellGlobalIdEUTRA, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CellGlobalIdEUTRA_AndUTRA }, + { &hf_lpp_earfcn , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_ARFCN_ValueEUTRA }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_eUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_eUTRA, T_eUTRA_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_511(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 511U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t T_fdd_sequence[] = { + { &hf_lpp_primary_CPICH_Info, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_511 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_fdd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_fdd, T_fdd_sequence); + + return offset; +} + + +static const per_sequence_t T_tdd_sequence[] = { + { &hf_lpp_cellParameters , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_tdd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_tdd, T_tdd_sequence); + + return offset; +} + + +static const value_string lpp_T_mode_vals[] = { + { 0, "fdd" }, + { 1, "tdd" }, + { 0, NULL } +}; + +static const per_choice_t T_mode_choice[] = { + { 0, &hf_lpp_fdd , ASN1_NO_EXTENSIONS , dissect_lpp_T_fdd }, + { 1, &hf_lpp_tdd , ASN1_NO_EXTENSIONS , dissect_lpp_T_tdd }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_mode, T_mode_choice, + NULL); + + return offset; +} + + + +static int +dissect_lpp_ARFCN_ValueUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 16383U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t T_uTRA_sequence[] = { + { &hf_lpp_mode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_mode }, + { &hf_lpp_cellGlobalIdUTRA, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CellGlobalIdEUTRA_AndUTRA }, + { &hf_lpp_uarfcn , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_ARFCN_ValueUTRA }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_uTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_uTRA, T_uTRA_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_1023(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 1023U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t T_mcc_01_sequence_of[1] = { + { &hf_lpp_mcc_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_9 }, +}; + +static int +dissect_lpp_T_mcc_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_T_mcc_01, T_mcc_01_sequence_of, + 3, 3, FALSE); + + return offset; +} + + +static const per_sequence_t T_mnc_01_sequence_of[1] = { + { &hf_lpp_mnc_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_9 }, +}; + +static int +dissect_lpp_T_mnc_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_T_mnc_01, T_mnc_01_sequence_of, + 2, 3, FALSE); + + return offset; +} + + +static const per_sequence_t T_plmn_Identity_01_sequence[] = { + { &hf_lpp_mcc_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_mcc_01 }, + { &hf_lpp_mnc_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_mnc_01 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_plmn_Identity_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_plmn_Identity_01, T_plmn_Identity_01_sequence); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 16, 16, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t CellGlobalIdGERAN_sequence[] = { + { &hf_lpp_plmn_Identity_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_plmn_Identity_01 }, + { &hf_lpp_locationAreaCode, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_16 }, + { &hf_lpp_cellIdentity_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_16 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_CellGlobalIdGERAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_CellGlobalIdGERAN, CellGlobalIdGERAN_sequence); + + return offset; +} + + +static const per_sequence_t T_gSM_sequence[] = { + { &hf_lpp_bcchCarrier , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1023 }, + { &hf_lpp_bsic , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_63 }, + { &hf_lpp_cellGlobalIdGERAN, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CellGlobalIdGERAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_gSM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_gSM, T_gSM_sequence); + + return offset; +} + + +static const value_string lpp_T_cellID_vals[] = { + { 0, "eUTRA" }, + { 1, "uTRA" }, + { 2, "gSM" }, + { 0, NULL } +}; + +static const per_choice_t T_cellID_choice[] = { + { 0, &hf_lpp_eUTRA , ASN1_EXTENSION_ROOT , dissect_lpp_T_eUTRA }, + { 1, &hf_lpp_uTRA , ASN1_EXTENSION_ROOT , dissect_lpp_T_uTRA }, + { 2, &hf_lpp_gSM , ASN1_EXTENSION_ROOT , dissect_lpp_T_gSM }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_cellID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_cellID, T_cellID_choice, + NULL); + + return offset; +} + + +static const per_sequence_t NetworkTime_sequence[] = { + { &hf_lpp_secondsFromFrameStructureStart, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_12533 }, + { &hf_lpp_fractionalSecondsFromFrameStructureStart, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3999999 }, + { &hf_lpp_frameDrift , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M64_63 }, + { &hf_lpp_cellID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cellID }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_NetworkTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_NetworkTime, NetworkTime_sequence); + + return offset; +} + + +static const value_string lpp_T_bsAlign_vals[] = { + { 0, "true" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_bsAlign(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_ReferenceTimeForOneCell_sequence[] = { + { &hf_lpp_networkTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_NetworkTime }, + { &hf_lpp_referenceTimeUnc, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_bsAlign , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_bsAlign }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ReferenceTimeForOneCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ReferenceTimeForOneCell, GNSS_ReferenceTimeForOneCell_sequence); + + return offset; +} + + +static const per_sequence_t SEQUENCE_SIZE_1_16_OF_GNSS_ReferenceTimeForOneCell_sequence_of[1] = { + { &hf_lpp_gnss_ReferenceTimeForCells_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ReferenceTimeForOneCell }, +}; + +static int +dissect_lpp_SEQUENCE_SIZE_1_16_OF_GNSS_ReferenceTimeForOneCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_SEQUENCE_SIZE_1_16_OF_GNSS_ReferenceTimeForOneCell, SEQUENCE_SIZE_1_16_OF_GNSS_ReferenceTimeForOneCell_sequence_of, + 1, 16, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_ReferenceTime_sequence[] = { + { &hf_lpp_gnss_SystemTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SystemTime }, + { &hf_lpp_referenceTimeUnc, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_gnss_ReferenceTimeForCells, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_SEQUENCE_SIZE_1_16_OF_GNSS_ReferenceTimeForOneCell }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ReferenceTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ReferenceTime, GNSS_ReferenceTime_sequence); + + return offset; +} + + +static const value_string lpp_T_latitudeSign_04_vals[] = { + { 0, "north" }, + { 1, "south" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_latitudeSign_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_8388607(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 8388607U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M8388608_8388607(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -8388608, 8388607U, NULL, FALSE); + + return offset; +} + + +static const value_string lpp_T_altitudeDirection_01_vals[] = { + { 0, "height" }, + { 1, "depth" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_altitudeDirection_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_179(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 179U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 100U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t EllipsoidPointWithAltitudeAndUncertaintyEllipsoid_sequence[] = { + { &hf_lpp_latitudeSign_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_latitudeSign_04 }, + { &hf_lpp_degreesLatitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_8388607 }, + { &hf_lpp_degreesLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_altitudeDirection_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_altitudeDirection_01 }, + { &hf_lpp_altitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_32767 }, + { &hf_lpp_uncertaintySemiMajor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_uncertaintySemiMinor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_orientationMajorAxis, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_179 }, + { &hf_lpp_uncertaintyAltitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_confidence , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_100 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, EllipsoidPointWithAltitudeAndUncertaintyEllipsoid_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_ReferenceLocation_sequence[] = { + { &hf_lpp_threeDlocation , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ReferenceLocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ReferenceLocation, GNSS_ReferenceLocation_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M128_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -128, 127U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t KlobucharModelParameter_sequence[] = { + { &hf_lpp_dataID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_2 }, + { &hf_lpp_alfa0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_alfa1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_alfa2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_alfa3 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_beta0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_beta1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_beta2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_beta3 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_KlobucharModelParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_KlobucharModelParameter, KlobucharModelParameter_sequence); + + return offset; +} + + +static const per_sequence_t NeQuickModelParameter_sequence[] = { + { &hf_lpp_ai0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4095 }, + { &hf_lpp_ai1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4095 }, + { &hf_lpp_ai2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4095 }, + { &hf_lpp_ionoStormFlag1 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_1 }, + { &hf_lpp_ionoStormFlag2 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_1 }, + { &hf_lpp_ionoStormFlag3 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_1 }, + { &hf_lpp_ionoStormFlag4 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_1 }, + { &hf_lpp_ionoStormFlag5 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_1 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_NeQuickModelParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_NeQuickModelParameter, NeQuickModelParameter_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_IonosphericModel_sequence[] = { + { &hf_lpp_klobucharModel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_KlobucharModelParameter }, + { &hf_lpp_neQuickModel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_NeQuickModelParameter }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_IonosphericModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_IonosphericModel, GNSS_IonosphericModel_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 65535U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M1048576_1048575(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -1048576, 1048575U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M16384_16383(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -16384, 16383U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M1073741824_1073741823(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -1073741824, 1073741823U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M262144_262143(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -262144, 262143U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_EarthOrientationParameters_sequence[] = { + { &hf_lpp_teop , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_65535 }, + { &hf_lpp_pmX , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1048576_1048575 }, + { &hf_lpp_pmXdot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16384_16383 }, + { &hf_lpp_pmY , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1048576_1048575 }, + { &hf_lpp_pmYdot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16384_16383 }, + { &hf_lpp_deltaUT1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1073741824_1073741823 }, + { &hf_lpp_deltaUT1dot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M262144_262143 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_EarthOrientationParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_EarthOrientationParameters, GNSS_EarthOrientationParameters_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_CommonAssistData_sequence[] = { + { &hf_lpp_gnss_ReferenceTime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_ReferenceTime }, + { &hf_lpp_gnss_ReferenceLocation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_ReferenceLocation }, + { &hf_lpp_gnss_IonosphericModel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_IonosphericModel }, + { &hf_lpp_gnss_EarthOrientationParameters, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_EarthOrientationParameters }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_CommonAssistData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_CommonAssistData, GNSS_CommonAssistData_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M67108864_67108863(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -67108864, 67108863U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M4096_4095(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -4096, 4095U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_8191(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 8191U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_TimeModelElement_sequence[] = { + { &hf_lpp_gnss_TimeModelRefTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_65535 }, + { &hf_lpp_tA0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M67108864_67108863 }, + { &hf_lpp_tA1 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M4096_4095 }, + { &hf_lpp_tA2 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M64_63 }, + { &hf_lpp_gnss_TO_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_15 }, + { &hf_lpp_weekNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_8191 }, + { &hf_lpp_deltaT , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M128_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_TimeModelElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_TimeModelElement, GNSS_TimeModelElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_TimeModelList_sequence_of[1] = { + { &hf_lpp_GNSS_TimeModelList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_TimeModelElement }, +}; + +static int +dissect_lpp_GNSS_TimeModelList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_TimeModelList, GNSS_TimeModelList_sequence_of, + 1, 15, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M2047_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -2047, 2047U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M127_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -127, 127U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t DGNSS_CorrectionsElement_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_iod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_11 }, + { &hf_lpp_udre , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3 }, + { &hf_lpp_pseudoRangeCor , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2047_2047 }, + { &hf_lpp_rangeRateCor , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M127_127 }, + { &hf_lpp_udreGrowthRate , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_7 }, + { &hf_lpp_udreValidityTime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_7 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_DGNSS_CorrectionsElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_DGNSS_CorrectionsElement, DGNSS_CorrectionsElement_sequence); + + return offset; +} + + +static const per_sequence_t DGNSS_SatList_sequence_of[1] = { + { &hf_lpp_DGNSS_SatList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_DGNSS_CorrectionsElement }, +}; + +static int +dissect_lpp_DGNSS_SatList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_DGNSS_SatList, DGNSS_SatList_sequence_of, + 1, 64, FALSE); + + return offset; +} + + +static const per_sequence_t DGNSS_SgnTypeElement_sequence[] = { + { &hf_lpp_gnss_SignalID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalID }, + { &hf_lpp_gnss_StatusHealth, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_7 }, + { &hf_lpp_dgnss_SatList , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_DGNSS_SatList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_DGNSS_SgnTypeElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_DGNSS_SgnTypeElement, DGNSS_SgnTypeElement_sequence); + + return offset; +} + + +static const per_sequence_t DGNSS_SgnTypeList_sequence_of[1] = { + { &hf_lpp_DGNSS_SgnTypeList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_DGNSS_SgnTypeElement }, +}; + +static int +dissect_lpp_DGNSS_SgnTypeList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_DGNSS_SgnTypeList, DGNSS_SgnTypeList_sequence_of, + 1, 3, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_DifferentialCorrections_sequence[] = { + { &hf_lpp_dgnss_RefTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3599 }, + { &hf_lpp_dgnss_SgnTypeList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_DGNSS_SgnTypeList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_DifferentialCorrections(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DifferentialCorrections, GNSS_DifferentialCorrections_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M2048_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -2048, 2047U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M131072_131071(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -131072, 131071U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M134217728_134217727(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -134217728, 134217727U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M512_511(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -512, 511U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t StandardClockModelElement_sequence[] = { + { &hf_lpp_stanClockToc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_16383 }, + { &hf_lpp_stanClockAF2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2048_2047 }, + { &hf_lpp_stanClockAF1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 }, + { &hf_lpp_stanClockAF0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M134217728_134217727 }, + { &hf_lpp_stanClockTgd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M512_511 }, + { &hf_lpp_stanModelID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_1 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_StandardClockModelElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_StandardClockModelElement, StandardClockModelElement_sequence); + + return offset; +} + + +static const per_sequence_t StandardClockModelList_sequence_of[1] = { + { &hf_lpp_StandardClockModelList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_StandardClockModelElement }, +}; + +static int +dissect_lpp_StandardClockModelList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_StandardClockModelList, StandardClockModelList_sequence_of, + 1, 2, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_37799(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 37799U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M32768_32767(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -32768, 32767U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M2097152_2097151(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -2097152, 2097151U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t NAV_ClockModel_sequence[] = { + { &hf_lpp_navToc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_37799 }, + { &hf_lpp_navaf2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_navaf1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_navaf0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2097152_2097151 }, + { &hf_lpp_navTgd , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_NAV_ClockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_NAV_ClockModel, NAV_ClockModel_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_2015(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 2015U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M16_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -16, 15U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M524288_524287(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -524288, 524287U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M33554432_33554431(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -33554432, 33554431U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t CNAV_ClockModel_sequence[] = { + { &hf_lpp_cnavToc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2015 }, + { &hf_lpp_cnavTop , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2015 }, + { &hf_lpp_cnavURA0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16_15 }, + { &hf_lpp_cnavURA1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_7 }, + { &hf_lpp_cnavURA2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_7 }, + { &hf_lpp_cnavAf2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M512_511 }, + { &hf_lpp_cnavAf1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M524288_524287 }, + { &hf_lpp_cnavAf0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M33554432_33554431 }, + { &hf_lpp_cnavTgd , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M4096_4095 }, + { &hf_lpp_cnavISCl1cp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M4096_4095 }, + { &hf_lpp_cnavISCl1cd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M4096_4095 }, + { &hf_lpp_cnavISCl1ca , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M4096_4095 }, + { &hf_lpp_cnavISCl2c , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M4096_4095 }, + { &hf_lpp_cnavISCl5i5 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M4096_4095 }, + { &hf_lpp_cnavISCl5q5 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M4096_4095 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_CNAV_ClockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_CNAV_ClockModel, CNAV_ClockModel_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M1024_1023(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -1024, 1023U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GLONASS_ClockModel_sequence[] = { + { &hf_lpp_gloTau , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2097152_2097151 }, + { &hf_lpp_gloGamma , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 }, + { &hf_lpp_gloDeltaTau , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M16_15 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GLONASS_ClockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GLONASS_ClockModel, GLONASS_ClockModel_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_5399(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 5399U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t SBAS_ClockModel_sequence[] = { + { &hf_lpp_sbasTo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_5399 }, + { &hf_lpp_sbasAgfo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2048_2047 }, + { &hf_lpp_sbasAgf1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_SBAS_ClockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_SBAS_ClockModel, SBAS_ClockModel_sequence); + + return offset; +} + + +static const value_string lpp_GNSS_ClockModel_vals[] = { + { 0, "standardClockModelList" }, + { 1, "nav-ClockModel" }, + { 2, "cnav-ClockModel" }, + { 3, "glonass-ClockModel" }, + { 4, "sbas-ClockModel" }, + { 0, NULL } +}; + +static const per_choice_t GNSS_ClockModel_choice[] = { + { 0, &hf_lpp_standardClockModelList, ASN1_EXTENSION_ROOT , dissect_lpp_StandardClockModelList }, + { 1, &hf_lpp_nav_ClockModel , ASN1_EXTENSION_ROOT , dissect_lpp_NAV_ClockModel }, + { 2, &hf_lpp_cnav_ClockModel , ASN1_EXTENSION_ROOT , dissect_lpp_CNAV_ClockModel }, + { 3, &hf_lpp_glonass_ClockModel, ASN1_EXTENSION_ROOT , dissect_lpp_GLONASS_ClockModel }, + { 4, &hf_lpp_sbas_ClockModel , ASN1_EXTENSION_ROOT , dissect_lpp_SBAS_ClockModel }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ClockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ClockModel, GNSS_ClockModel_choice, + NULL); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M2147483648_2147483647(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -2147483648, 2147483647U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4294967295U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M8192_8191(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -8192, 8191U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t NavModelKeplerianSet_sequence[] = { + { &hf_lpp_keplerToe , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_16383 }, + { &hf_lpp_keplerW , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 }, + { &hf_lpp_keplerDeltaN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_keplerM0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 }, + { &hf_lpp_keplerOmegaDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_keplerE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4294967295 }, + { &hf_lpp_keplerIDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8192_8191 }, + { &hf_lpp_keplerAPowerHalf, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4294967295 }, + { &hf_lpp_keplerI0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 }, + { &hf_lpp_keplerOmega0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 }, + { &hf_lpp_keplerCrs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_keplerCis , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_keplerCus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_keplerCrc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_keplerCic , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_keplerCuc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_NavModelKeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_NavModelKeplerianSet, NavModelKeplerianSet_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_16777215(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 16777215U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t T_ephemSF1Rsvd_sequence[] = { + { &hf_lpp_reserved1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_8388607 }, + { &hf_lpp_reserved2 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_16777215 }, + { &hf_lpp_reserved3 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_16777215 }, + { &hf_lpp_reserved4 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_65535 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_ephemSF1Rsvd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_ephemSF1Rsvd, T_ephemSF1Rsvd_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 31U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t T_addNAVparam_sequence[] = { + { &hf_lpp_ephemCodeOnL2 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3 }, + { &hf_lpp_ephemL2Pflag , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1 }, + { &hf_lpp_ephemSF1Rsvd , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_ephemSF1Rsvd }, + { &hf_lpp_ephemAODA , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_31 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_addNAVparam(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_addNAVparam, T_addNAVparam_sequence); + + return offset; +} + + +static const per_sequence_t NavModelNAV_KeplerianSet_sequence[] = { + { &hf_lpp_navURA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 }, + { &hf_lpp_navFitFlag , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1 }, + { &hf_lpp_navToe , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_37799 }, + { &hf_lpp_navOmega , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 }, + { &hf_lpp_navDeltaN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_navM0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 }, + { &hf_lpp_navOmegaADot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_navE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4294967295 }, + { &hf_lpp_navIDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8192_8191 }, + { &hf_lpp_navAPowerHalf , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4294967295 }, + { &hf_lpp_navI0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 }, + { &hf_lpp_navOmegaA0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 }, + { &hf_lpp_navCrs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_navCis , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_navCus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_navCrc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_navCic , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_navCuc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_addNAVparam , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_addNAVparam }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_NavModelNAV_KeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_NavModelNAV_KeplerianSet, NavModelNAV_KeplerianSet_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M16777216_16777215(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -16777216, 16777215U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M65536_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -65536, 65535U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M4194304_4194303(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -4194304, 4194303U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_T_cnavMo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + G_GINT64_CONSTANT(-4294967296), 4294967295U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_T_cnavE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + 0U, G_GINT64_CONSTANT(8589934591U), NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_T_cnavOmega(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + G_GINT64_CONSTANT(-4294967296), 4294967295U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_T_cnavOMEGA0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + G_GINT64_CONSTANT(-4294967296), 4294967295U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_T_cnavIo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, + G_GINT64_CONSTANT(-4294967296), 4294967295U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t NavModelCNAV_KeplerianSet_sequence[] = { + { &hf_lpp_cnavTop , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2015 }, + { &hf_lpp_cnavURAindex , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16_15 }, + { &hf_lpp_cnavDeltaA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M33554432_33554431 }, + { &hf_lpp_cnavAdot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16777216_16777215 }, + { &hf_lpp_cnavDeltaNo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M65536_65535 }, + { &hf_lpp_cnavDeltaNoDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M4194304_4194303 }, + { &hf_lpp_cnavMo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cnavMo }, + { &hf_lpp_cnavE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cnavE }, + { &hf_lpp_cnavOmega , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cnavOmega }, + { &hf_lpp_cnavOMEGA0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cnavOMEGA0 }, + { &hf_lpp_cnavDeltaOmegaDot, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M65536_65535 }, + { &hf_lpp_cnavIo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cnavIo }, + { &hf_lpp_cnavIoDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16384_16383 }, + { &hf_lpp_cnavCis , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_cnavCic , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_cnavCrs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_cnavCrc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_cnavCus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1048576_1048575 }, + { &hf_lpp_cnavCuc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1048576_1048575 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_NavModelCNAV_KeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_NavModelCNAV_KeplerianSet, NavModelCNAV_KeplerianSet_sequence); + + return offset; +} + + +static const per_sequence_t NavModel_GLONASS_ECEF_sequence[] = { + { &hf_lpp_gloEn , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_31 }, + { &hf_lpp_gloP1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_2 }, + { &hf_lpp_gloP2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_gloM , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3 }, + { &hf_lpp_gloX , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M67108864_67108863 }, + { &hf_lpp_gloXdot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_gloXdotdot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16_15 }, + { &hf_lpp_gloY , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M67108864_67108863 }, + { &hf_lpp_gloYdot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_gloYdotdot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16_15 }, + { &hf_lpp_gloZ , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M67108864_67108863 }, + { &hf_lpp_gloZdot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_gloZdotdot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16_15 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_NavModel_GLONASS_ECEF(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_NavModel_GLONASS_ECEF, NavModel_GLONASS_ECEF_sequence); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, NULL); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M536870912_536870911(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -536870912, 536870911U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t NavModel_SBAS_ECEF_sequence[] = { + { &hf_lpp_sbasTo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_5399 }, + { &hf_lpp_sbasAccuracy , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_4 }, + { &hf_lpp_sbasXg , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M536870912_536870911 }, + { &hf_lpp_sbasYg , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M536870912_536870911 }, + { &hf_lpp_sbasZg , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16777216_16777215 }, + { &hf_lpp_sbasXgDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M65536_65535 }, + { &hf_lpp_sbasYgDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M65536_65535 }, + { &hf_lpp_sbasZgDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 }, + { &hf_lpp_sbasXgDotDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M512_511 }, + { &hf_lpp_sbagYgDotDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M512_511 }, + { &hf_lpp_sbasZgDotDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M512_511 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_NavModel_SBAS_ECEF(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_NavModel_SBAS_ECEF, NavModel_SBAS_ECEF_sequence); + + return offset; +} + + +static const value_string lpp_GNSS_OrbitModel_vals[] = { + { 0, "keplerianSet" }, + { 1, "nav-KeplerianSet" }, + { 2, "cnav-KeplerianSet" }, + { 3, "glonass-ECEF" }, + { 4, "sbas-ECEF" }, + { 0, NULL } +}; + +static const per_choice_t GNSS_OrbitModel_choice[] = { + { 0, &hf_lpp_keplerianSet , ASN1_EXTENSION_ROOT , dissect_lpp_NavModelKeplerianSet }, + { 1, &hf_lpp_nav_KeplerianSet, ASN1_EXTENSION_ROOT , dissect_lpp_NavModelNAV_KeplerianSet }, + { 2, &hf_lpp_cnav_KeplerianSet, ASN1_EXTENSION_ROOT , dissect_lpp_NavModelCNAV_KeplerianSet }, + { 3, &hf_lpp_glonass_ECEF , ASN1_EXTENSION_ROOT , dissect_lpp_NavModel_GLONASS_ECEF }, + { 4, &hf_lpp_sbas_ECEF , ASN1_EXTENSION_ROOT , dissect_lpp_NavModel_SBAS_ECEF }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_GNSS_OrbitModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_OrbitModel, GNSS_OrbitModel_choice, + NULL); + + return offset; +} + + +static const per_sequence_t GNSS_NavModelSatelliteElement_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_svHealth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_8 }, + { &hf_lpp_iod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_11 }, + { &hf_lpp_gnss_ClockModel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ClockModel }, + { &hf_lpp_gnss_OrbitModel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_OrbitModel }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_NavModelSatelliteElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_NavModelSatelliteElement, GNSS_NavModelSatelliteElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_NavModelSatelliteList_sequence_of[1] = { + { &hf_lpp_GNSS_NavModelSatelliteList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_NavModelSatelliteElement }, +}; + +static int +dissect_lpp_GNSS_NavModelSatelliteList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_NavModelSatelliteList, GNSS_NavModelSatelliteList_sequence_of, + 1, 64, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_NavigationModel_sequence[] = { + { &hf_lpp_nonBroadcastIndFlag, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1 }, + { &hf_lpp_gnss_SatelliteList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_NavModelSatelliteList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_NavigationModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_NavigationModel, GNSS_NavigationModel_sequence); + + return offset; +} + + +static const per_sequence_t BadSignalElement_sequence[] = { + { &hf_lpp_badSVID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_badSignalID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_SignalIDs }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_BadSignalElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_BadSignalElement, BadSignalElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_BadSignalList_sequence_of[1] = { + { &hf_lpp_GNSS_BadSignalList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_BadSignalElement }, +}; + +static int +dissect_lpp_GNSS_BadSignalList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_BadSignalList, GNSS_BadSignalList_sequence_of, + 1, 64, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_RealTimeIntegrity_sequence[] = { + { &hf_lpp_gnss_BadSignalList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_BadSignalList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_RealTimeIntegrity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_RealTimeIntegrity, GNSS_RealTimeIntegrity_sequence); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_1_1024(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 1024, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_DataBitsSgnElement_sequence[] = { + { &hf_lpp_gnss_SignalType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalID }, + { &hf_lpp_gnss_DataBits , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_1_1024 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_DataBitsSgnElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DataBitsSgnElement, GNSS_DataBitsSgnElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_DataBitsSgnList_sequence_of[1] = { + { &hf_lpp_GNSS_DataBitsSgnList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_DataBitsSgnElement }, +}; + +static int +dissect_lpp_GNSS_DataBitsSgnList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DataBitsSgnList, GNSS_DataBitsSgnList_sequence_of, + 1, 8, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_DataBitsSatElement_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_gnss_DataBitsSgnList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_DataBitsSgnList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_DataBitsSatElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DataBitsSatElement, GNSS_DataBitsSatElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_DataBitsSatList_sequence_of[1] = { + { &hf_lpp_GNSS_DataBitsSatList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_DataBitsSatElement }, +}; + +static int +dissect_lpp_GNSS_DataBitsSatList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DataBitsSatList, GNSS_DataBitsSatList_sequence_of, + 1, 64, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_DataBitAssistance_sequence[] = { + { &hf_lpp_gnss_TOD , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3599 }, + { &hf_lpp_gnss_TODfrac , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_999 }, + { &hf_lpp_gnss_DataBitsSatList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_DataBitsSatList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_DataBitAssistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_DataBitAssistance, GNSS_DataBitAssistance_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_1022(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 1022U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_AcquisitionAssistElement_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_doppler0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2048_2047 }, + { &hf_lpp_doppler1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_63 }, + { &hf_lpp_dopplerUncertainty, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4 }, + { &hf_lpp_codePhase , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1022 }, + { &hf_lpp_intCodePhase , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_codePhaseSearchWindow, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_31 }, + { &hf_lpp_azimuth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_511 }, + { &hf_lpp_elevation , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_codePhase1023 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_AcquisitionAssistElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AcquisitionAssistElement, GNSS_AcquisitionAssistElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_AcquisitionAssistList_sequence_of[1] = { + { &hf_lpp_GNSS_AcquisitionAssistList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_AcquisitionAssistElement }, +}; + +static int +dissect_lpp_GNSS_AcquisitionAssistList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AcquisitionAssistList, GNSS_AcquisitionAssistList_sequence_of, + 1, 64, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_AcquisitionAssistance_sequence[] = { + { &hf_lpp_gnss_SignalID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalID }, + { &hf_lpp_gnss_AcquisitionAssistList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_AcquisitionAssistList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_AcquisitionAssistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AcquisitionAssistance, GNSS_AcquisitionAssistance_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 2047U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t AlmanacKeplerianSet_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_kepAlmanacE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2047 }, + { &hf_lpp_kepAlmanacDeltaI, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 }, + { &hf_lpp_kepAlmanacOmegaDot, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 }, + { &hf_lpp_kepSVHealth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 }, + { &hf_lpp_kepAlmanacAPowerHalf, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M65536_65535 }, + { &hf_lpp_kepAlmanacOmega0, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_kepAlmanacW , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_kepAlmanacM0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_kepAlmanacAF0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8192_8191 }, + { &hf_lpp_kepAlmanacAF1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_AlmanacKeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_AlmanacKeplerianSet, AlmanacKeplerianSet_sequence); + + return offset; +} + + +static const per_sequence_t AlmanacNAV_KeplerianSet_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_navAlmE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_65535 }, + { &hf_lpp_navAlmDeltaI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_navAlmOMEGADOT , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_navAlmSVHealth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_navAlmSqrtA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_16777215 }, + { &hf_lpp_navAlmOMEGAo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_navAlmOmega , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_navAlmMo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_navAlmaf0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 }, + { &hf_lpp_navAlmaf1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_AlmanacNAV_KeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_AlmanacNAV_KeplerianSet, AlmanacNAV_KeplerianSet_sequence); + + return offset; +} + + +static const per_sequence_t AlmanacReducedKeplerianSet_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_redAlmDeltaA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_redAlmOmega0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M64_63 }, + { &hf_lpp_redAlmPhi0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M64_63 }, + { &hf_lpp_redAlmL1Health , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_redAlmL2Health , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_redAlmL5Health , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_AlmanacReducedKeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_AlmanacReducedKeplerianSet, AlmanacReducedKeplerianSet_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_131071(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 131071U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t AlmanacMidiAlmanacSet_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_midiAlmE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2047 }, + { &hf_lpp_midiAlmDeltaI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 }, + { &hf_lpp_midiAlmOmegaDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 }, + { &hf_lpp_midiAlmSqrtA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_131071 }, + { &hf_lpp_midiAlmOmega0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_midiAlmOmega , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_midiAlmMo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_midiAlmaf0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 }, + { &hf_lpp_midiAlmaf1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M512_511 }, + { &hf_lpp_midiAlmL1Health , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_midiAlmL2Health , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_midiAlmL5Health , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_AlmanacMidiAlmanacSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_AlmanacMidiAlmanacSet, AlmanacMidiAlmanacSet_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_1_1461(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 1461U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_1_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 24U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_2097151(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 2097151U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t AlmanacGLONASS_AlmanacSet_sequence[] = { + { &hf_lpp_gloAlm_NA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_1461 }, + { &hf_lpp_gloAlmnA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_24 }, + { &hf_lpp_gloAlmHA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_31 }, + { &hf_lpp_gloAlmLambdaA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1048576_1048575 }, + { &hf_lpp_gloAlmtlambdaA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2097151 }, + { &hf_lpp_gloAlmDeltaIa , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 }, + { &hf_lpp_gloAlmDeltaTA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2097152_2097151 }, + { &hf_lpp_gloAlmDeltaTdotA, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M64_63 }, + { &hf_lpp_gloAlmEpsilonA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_32767 }, + { &hf_lpp_gloAlmOmegaA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_gloAlmTauA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M512_511 }, + { &hf_lpp_gloAlmCA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1 }, + { &hf_lpp_gloAlmMA , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_BIT_STRING_SIZE_2 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_AlmanacGLONASS_AlmanacSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_AlmanacGLONASS_AlmanacSet, AlmanacGLONASS_AlmanacSet_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M256_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -256, 255U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M4_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -4, 3U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M8_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -8, 7U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t AlmanacECEF_SBAS_AlmanacSet_sequence[] = { + { &hf_lpp_sbasAlmDataID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3 }, + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_sbasAlmHealth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_8 }, + { &hf_lpp_sbasAlmXg , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16384_16383 }, + { &hf_lpp_sbasAlmYg , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M16384_16383 }, + { &hf_lpp_sbasAlmZg , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M256_255 }, + { &hf_lpp_sbasAlmXgdot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M4_3 }, + { &hf_lpp_sbasAlmYgDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M4_3 }, + { &hf_lpp_sbasAlmZgDot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8_7 }, + { &hf_lpp_sbasAlmTo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2047 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_AlmanacECEF_SBAS_AlmanacSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_AlmanacECEF_SBAS_AlmanacSet, AlmanacECEF_SBAS_AlmanacSet_sequence); + + return offset; +} + + +static const value_string lpp_GNSS_AlmanacElement_vals[] = { + { 0, "keplerianAlmanacSet" }, + { 1, "keplerianNAV-Almanac" }, + { 2, "keplerianReducedAlmanac" }, + { 3, "keplerianMidiAlmanac" }, + { 4, "keplerianGLONASS" }, + { 5, "ecef-SBAS-Almanac" }, + { 0, NULL } +}; + +static const per_choice_t GNSS_AlmanacElement_choice[] = { + { 0, &hf_lpp_keplerianAlmanacSet, ASN1_EXTENSION_ROOT , dissect_lpp_AlmanacKeplerianSet }, + { 1, &hf_lpp_keplerianNAV_Almanac, ASN1_EXTENSION_ROOT , dissect_lpp_AlmanacNAV_KeplerianSet }, + { 2, &hf_lpp_keplerianReducedAlmanac, ASN1_EXTENSION_ROOT , dissect_lpp_AlmanacReducedKeplerianSet }, + { 3, &hf_lpp_keplerianMidiAlmanac, ASN1_EXTENSION_ROOT , dissect_lpp_AlmanacMidiAlmanacSet }, + { 4, &hf_lpp_keplerianGLONASS, ASN1_EXTENSION_ROOT , dissect_lpp_AlmanacGLONASS_AlmanacSet }, + { 5, &hf_lpp_ecef_SBAS_Almanac, ASN1_EXTENSION_ROOT , dissect_lpp_AlmanacECEF_SBAS_AlmanacSet }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_GNSS_AlmanacElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AlmanacElement, GNSS_AlmanacElement_choice, + NULL); + + return offset; +} + + +static const per_sequence_t GNSS_AlmanacList_sequence_of[1] = { + { &hf_lpp_GNSS_AlmanacList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_AlmanacElement }, +}; + +static int +dissect_lpp_GNSS_AlmanacList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AlmanacList, GNSS_AlmanacList_sequence_of, + 1, 64, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_Almanac_sequence[] = { + { &hf_lpp_weekNumber_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_toa , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_ioda , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_3 }, + { &hf_lpp_completeAlmanacProvided, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_gnss_AlmanacList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_AlmanacList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_Almanac(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_Almanac, GNSS_Almanac_sequence); + + return offset; +} + + +static const per_sequence_t UTC_ModelSet1_sequence[] = { + { &hf_lpp_gnss_Utc_A1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_gnss_Utc_A0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 }, + { &hf_lpp_gnss_Utc_Tot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_gnss_Utc_WNt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_gnss_Utc_DeltaTls, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_gnss_Utc_WNlsf , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_gnss_Utc_DN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_gnss_Utc_DeltaTlsf, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_UTC_ModelSet1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_UTC_ModelSet1, UTC_ModelSet1_sequence); + + return offset; +} + + +static const per_sequence_t UTC_ModelSet2_sequence[] = { + { &hf_lpp_utcA0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_utcA1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M4096_4095 }, + { &hf_lpp_utcA2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M64_63 }, + { &hf_lpp_utcDeltaTls , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_utcTot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_65535 }, + { &hf_lpp_utcWNot , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_8191 }, + { &hf_lpp_utcWNlsf , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_utcDN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_4 }, + { &hf_lpp_utcDeltaTlsf , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_UTC_ModelSet2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_UTC_ModelSet2, UTC_ModelSet2_sequence); + + return offset; +} + + +static const per_sequence_t UTC_ModelSet3_sequence[] = { + { &hf_lpp_nA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_1461 }, + { &hf_lpp_tauC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 }, + { &hf_lpp_b1 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M1024_1023 }, + { &hf_lpp_b2 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M512_511 }, + { &hf_lpp_kp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_BIT_STRING_SIZE_2 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_UTC_ModelSet3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_UTC_ModelSet3, UTC_ModelSet3_sequence); + + return offset; +} + + +static const per_sequence_t UTC_ModelSet4_sequence[] = { + { &hf_lpp_utcA1wnt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_utcA0wnt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 }, + { &hf_lpp_utcTot_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_utcWNt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_utcDeltaTls , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_utcWNlsf , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_utcDN_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_utcDeltaTlsf , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 }, + { &hf_lpp_utcStandardID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_7 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_UTC_ModelSet4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_UTC_ModelSet4, UTC_ModelSet4_sequence); + + return offset; +} + + +static const value_string lpp_GNSS_UTC_Model_vals[] = { + { 0, "utcModel1" }, + { 1, "utcModel2" }, + { 2, "utcModel3" }, + { 3, "utcModel4" }, + { 0, NULL } +}; + +static const per_choice_t GNSS_UTC_Model_choice[] = { + { 0, &hf_lpp_utcModel1 , ASN1_EXTENSION_ROOT , dissect_lpp_UTC_ModelSet1 }, + { 1, &hf_lpp_utcModel2 , ASN1_EXTENSION_ROOT , dissect_lpp_UTC_ModelSet2 }, + { 2, &hf_lpp_utcModel3 , ASN1_EXTENSION_ROOT , dissect_lpp_UTC_ModelSet3 }, + { 3, &hf_lpp_utcModel4 , ASN1_EXTENSION_ROOT , dissect_lpp_UTC_ModelSet4 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_GNSS_UTC_Model(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_UTC_Model, GNSS_UTC_Model_choice, + NULL); + + return offset; +} + + +static const per_sequence_t GNSS_ID_GPS_SatElement_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_signalsAvailable, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalIDs }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ID_GPS_SatElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ID_GPS_SatElement, GNSS_ID_GPS_SatElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_ID_GPS_sequence_of[1] = { + { &hf_lpp_GNSS_ID_GPS_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID_GPS_SatElement }, +}; + +static int +dissect_lpp_GNSS_ID_GPS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ID_GPS, GNSS_ID_GPS_sequence_of, + 1, 64, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_M7_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -7, 13U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_ID_GLONASS_SatElement_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_signalsAvailable, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalIDs }, + { &hf_lpp_channelNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M7_13 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_ID_GLONASS_SatElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ID_GLONASS_SatElement, GNSS_ID_GLONASS_SatElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_ID_GLONASS_sequence_of[1] = { + { &hf_lpp_GNSS_ID_GLONASS_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID_GLONASS_SatElement }, +}; + +static int +dissect_lpp_GNSS_ID_GLONASS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_ID_GLONASS, GNSS_ID_GLONASS_sequence_of, + 1, 64, FALSE); + + return offset; +} + + +static const value_string lpp_GNSS_AuxiliaryInformation_vals[] = { + { 0, "gnss-ID-GPS" }, + { 1, "gnss-ID-GLONASS" }, + { 0, NULL } +}; + +static const per_choice_t GNSS_AuxiliaryInformation_choice[] = { + { 0, &hf_lpp_gnss_ID_GPS , ASN1_EXTENSION_ROOT , dissect_lpp_GNSS_ID_GPS }, + { 1, &hf_lpp_gnss_ID_GLONASS , ASN1_EXTENSION_ROOT , dissect_lpp_GNSS_ID_GLONASS }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_GNSS_AuxiliaryInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_AuxiliaryInformation, GNSS_AuxiliaryInformation_choice, + NULL); + + return offset; +} + + +static const per_sequence_t GNSS_GenericAssistDataElement_sequence[] = { + { &hf_lpp_gnss_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID }, + { &hf_lpp_sbas_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_SBAS_ID }, + { &hf_lpp_gnss_TimeModels , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_TimeModelList }, + { &hf_lpp_gnss_DifferentialCorrections, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_DifferentialCorrections }, + { &hf_lpp_gnss_NavigationModel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_NavigationModel }, + { &hf_lpp_gnss_RealTimeIntegrity, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_RealTimeIntegrity }, + { &hf_lpp_gnss_DataBitAssistance, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_DataBitAssistance }, + { &hf_lpp_gnss_AcquisitionAssistance, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_AcquisitionAssistance }, + { &hf_lpp_gnss_Almanac , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_Almanac }, + { &hf_lpp_gnss_UTC_Model , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_UTC_Model }, + { &hf_lpp_gnss_AuxiliaryInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_AuxiliaryInformation }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_GenericAssistDataElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_GenericAssistDataElement, GNSS_GenericAssistDataElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_GenericAssistData_sequence_of[1] = { + { &hf_lpp_GNSS_GenericAssistData_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_GenericAssistDataElement }, +}; + +static int +dissect_lpp_GNSS_GenericAssistData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_GenericAssistData, GNSS_GenericAssistData_sequence_of, + 1, 16, FALSE); + + return offset; +} + + +static const value_string lpp_T_cause_02_vals[] = { + { 0, "undefined" }, + { 1, "undeliveredAssistanceDataIsNotSupportedByServer" }, + { 2, "undeliveredAssistanceDataIsSupportedButCurrentlyNotAvailableByServer" }, + { 3, "undeliveredAssistanceDataIsPartlyNotSupportedAndPartlyNotAvailableByServer" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_cause_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 4, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_LocationServerErrorCauses_sequence[] = { + { &hf_lpp_cause_02 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_02 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_LocationServerErrorCauses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_LocationServerErrorCauses, GNSS_LocationServerErrorCauses_sequence); + + return offset; +} + + +static const value_string lpp_T_cause_03_vals[] = { + { 0, "undefined" }, + { 1, "thereWereNotEnoughSatellitesReceived" }, + { 2, "assistanceDataMissing" }, + { 3, "notAllRequestedMeasurementsPossible" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_cause_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 4, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t GNSS_TargetDeviceErrorCauses_sequence[] = { + { &hf_lpp_cause_03 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_03 }, + { &hf_lpp_fineTimeAssistanceMeasurementsNotPossible, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_NULL }, + { &hf_lpp_adrMeasurementsNotPossible, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_NULL }, + { &hf_lpp_multiFrequencyMeasurementsNotPossible, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_NULL }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_TargetDeviceErrorCauses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_TargetDeviceErrorCauses, GNSS_TargetDeviceErrorCauses_sequence); + + return offset; +} + + +static const value_string lpp_A_GNSS_Error_vals[] = { + { 0, "locationServerErrorCauses" }, + { 1, "targetDeviceErrorCauses" }, + { 0, NULL } +}; + +static const per_choice_t A_GNSS_Error_choice[] = { + { 0, &hf_lpp_locationServerErrorCauses_01, ASN1_EXTENSION_ROOT , dissect_lpp_GNSS_LocationServerErrorCauses }, + { 1, &hf_lpp_targetDeviceErrorCauses_01, ASN1_EXTENSION_ROOT , dissect_lpp_GNSS_TargetDeviceErrorCauses }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_A_GNSS_Error(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_A_GNSS_Error, A_GNSS_Error_choice, + NULL); + + return offset; +} + + +static const per_sequence_t A_GNSS_ProvideAssistanceData_sequence[] = { + { &hf_lpp_gnss_CommonAssistData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_CommonAssistData }, + { &hf_lpp_gnss_GenericAssistData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_GenericAssistData }, + { &hf_lpp_gnss_Error , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_A_GNSS_Error }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_A_GNSS_ProvideAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_A_GNSS_ProvideAssistanceData, A_GNSS_ProvideAssistanceData_sequence); + + return offset; +} + + +static const value_string lpp_T_antennaPortConfig_vals[] = { + { 0, "ports1-or-2" }, + { 1, "ports4" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_antennaPortConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string lpp_T_cpLength_vals[] = { + { 0, "normal" }, + { 1, "extended" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_cpLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string lpp_T_prs_Bandwidth_vals[] = { + { 0, "n6" }, + { 1, "n15" }, + { 2, "n25" }, + { 3, "n50" }, + { 4, "n75" }, + { 5, "n100" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_prs_Bandwidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 6, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string lpp_T_numDL_Frames_vals[] = { + { 0, "sf-1" }, + { 1, "sf-2" }, + { 2, "sf-4" }, + { 3, "sf-6" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_numDL_Frames(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 4, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string lpp_T_prs_MutingInfo_r9_vals[] = { + { 0, "po2-r9" }, + { 1, "po4-r9" }, + { 2, "po8-r9" }, + { 3, "po16-r9" }, + { 0, NULL } +}; + +static const per_choice_t T_prs_MutingInfo_r9_choice[] = { + { 0, &hf_lpp_po2_r9 , ASN1_EXTENSION_ROOT , dissect_lpp_BIT_STRING_SIZE_2 }, + { 1, &hf_lpp_po4_r9 , ASN1_EXTENSION_ROOT , dissect_lpp_BIT_STRING_SIZE_4 }, + { 2, &hf_lpp_po8_r9 , ASN1_EXTENSION_ROOT , dissect_lpp_BIT_STRING_SIZE_8 }, + { 3, &hf_lpp_po16_r9 , ASN1_EXTENSION_ROOT , dissect_lpp_BIT_STRING_SIZE_16 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_prs_MutingInfo_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_prs_MutingInfo_r9, T_prs_MutingInfo_r9_choice, + NULL); + + return offset; +} + + +static const per_sequence_t PRS_Info_sequence[] = { + { &hf_lpp_prs_Bandwidth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_prs_Bandwidth }, + { &hf_lpp_prs_ConfigurationIndex, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4095 }, + { &hf_lpp_numDL_Frames , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_numDL_Frames }, + { &hf_lpp_prs_MutingInfo_r9, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_lpp_T_prs_MutingInfo_r9 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_PRS_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_PRS_Info, PRS_Info_sequence); + + return offset; +} + + +static const per_sequence_t OTDOA_ReferenceCellInfo_sequence[] = { + { &hf_lpp_physCellId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 }, + { &hf_lpp_cellGlobalId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ECGI }, + { &hf_lpp_earfcnRef , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ARFCN_ValueEUTRA }, + { &hf_lpp_antennaPortConfig, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_antennaPortConfig }, + { &hf_lpp_cpLength , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cpLength }, + { &hf_lpp_prsInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_PRS_Info }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_ReferenceCellInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_ReferenceCellInfo, OTDOA_ReferenceCellInfo_sequence); + + return offset; +} + + +static const value_string lpp_T_cpLength_01_vals[] = { + { 0, "normal" }, + { 1, "extended" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_cpLength_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const value_string lpp_T_antennaPortConfig_01_vals[] = { + { 0, "ports-1-or-2" }, + { 1, "ports-4" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_antennaPortConfig_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_19(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 19U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_1279(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 1279U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t OTDOA_NeighbourCellInfoElement_sequence[] = { + { &hf_lpp_physCellId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 }, + { &hf_lpp_cellGlobalId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ECGI }, + { &hf_lpp_earfcn , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ARFCN_ValueEUTRA }, + { &hf_lpp_cpLength_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_cpLength_01 }, + { &hf_lpp_prsInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_PRS_Info }, + { &hf_lpp_antennaPortConfig_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_antennaPortConfig_01 }, + { &hf_lpp_slotNumberOffset, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_19 }, + { &hf_lpp_prs_SubframeOffset, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_1279 }, + { &hf_lpp_expectedRSTD , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_16383 }, + { &hf_lpp_expectedRSTD_Uncertainty, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1023 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_NeighbourCellInfoElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_NeighbourCellInfoElement, OTDOA_NeighbourCellInfoElement_sequence); + + return offset; +} + + +static const per_sequence_t OTDOA_NeighbourFreqInfo_sequence_of[1] = { + { &hf_lpp_OTDOA_NeighbourFreqInfo_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_NeighbourCellInfoElement }, +}; + +static int +dissect_lpp_OTDOA_NeighbourFreqInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_NeighbourFreqInfo, OTDOA_NeighbourFreqInfo_sequence_of, + 1, 24, FALSE); + + return offset; +} + + +static const per_sequence_t OTDOA_NeighbourCellInfoList_sequence_of[1] = { + { &hf_lpp_OTDOA_NeighbourCellInfoList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_NeighbourFreqInfo }, +}; + +static int +dissect_lpp_OTDOA_NeighbourCellInfoList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_NeighbourCellInfoList, OTDOA_NeighbourCellInfoList_sequence_of, + 1, maxFreqLayers, FALSE); + + return offset; +} + + +static const value_string lpp_T_cause_vals[] = { + { 0, "undefined" }, + { 1, "assistanceDataNotSupportedByServer" }, + { 2, "assistanceDataSupportedButCurrentlyNotAvailableByServer" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 3, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t OTDOA_LocationServerErrorCauses_sequence[] = { + { &hf_lpp_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_LocationServerErrorCauses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_LocationServerErrorCauses, OTDOA_LocationServerErrorCauses_sequence); + + return offset; +} + + +static const value_string lpp_T_cause_01_vals[] = { + { 0, "undefined" }, + { 1, "assistance-data-missing" }, + { 2, "unableToMeasureReferenceCell" }, + { 3, "unableToMeasureAnyNeighbourCell" }, + { 4, "attemptedButUnableToMeasureSomeNeighbourCells" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_cause_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 5, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t OTDOA_TargetDeviceErrorCauses_sequence[] = { + { &hf_lpp_cause_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_01 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_TargetDeviceErrorCauses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_TargetDeviceErrorCauses, OTDOA_TargetDeviceErrorCauses_sequence); + + return offset; +} + + +static const value_string lpp_OTDOA_Error_vals[] = { + { 0, "locationServerErrorCauses" }, + { 1, "targetDeviceErrorCauses" }, + { 0, NULL } +}; + +static const per_choice_t OTDOA_Error_choice[] = { + { 0, &hf_lpp_locationServerErrorCauses, ASN1_EXTENSION_ROOT , dissect_lpp_OTDOA_LocationServerErrorCauses }, + { 1, &hf_lpp_targetDeviceErrorCauses, ASN1_EXTENSION_ROOT , dissect_lpp_OTDOA_TargetDeviceErrorCauses }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_Error(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_Error, OTDOA_Error_choice, + NULL); + + return offset; +} + + +static const per_sequence_t OTDOA_ProvideAssistanceData_sequence[] = { + { &hf_lpp_otdoa_ReferenceCellInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_ReferenceCellInfo }, + { &hf_lpp_otdoa_NeighbourCellInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_NeighbourCellInfoList }, + { &hf_lpp_otdoa_Error , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_Error }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_ProvideAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_ProvideAssistanceData, OTDOA_ProvideAssistanceData_sequence); + + return offset; +} + + +static const per_sequence_t ProvideAssistanceData_r9_IEs_sequence[] = { + { &hf_lpp_commonIEsProvideAssistanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CommonIEsProvideAssistanceData }, + { &hf_lpp_a_gnss_ProvideAssistanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_A_GNSS_ProvideAssistanceData }, + { &hf_lpp_otdoa_ProvideAssistanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_ProvideAssistanceData }, + { &hf_lpp_epdu_Provide_Assistance_Data, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_EPDU_Sequence }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ProvideAssistanceData_r9_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ProvideAssistanceData_r9_IEs, ProvideAssistanceData_r9_IEs_sequence); + + return offset; +} + + +static const value_string lpp_T_c1_04_vals[] = { + { 0, "provideAssistanceData-r9" }, + { 1, "spare3" }, + { 2, "spare2" }, + { 3, "spare1" }, + { 0, NULL } +}; + +static const per_choice_t T_c1_04_choice[] = { + { 0, &hf_lpp_provideAssistanceData_r9, ASN1_NO_EXTENSIONS , dissect_lpp_ProvideAssistanceData_r9_IEs }, + { 1, &hf_lpp_spare3 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 2, &hf_lpp_spare2 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 3, &hf_lpp_spare1 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_c1_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_c1_04, T_c1_04_choice, + NULL); + + return offset; +} + + +static const per_sequence_t T_criticalExtensionsFuture_03_sequence[] = { + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensionsFuture_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensionsFuture_03, T_criticalExtensionsFuture_03_sequence); + + return offset; +} + + +static const value_string lpp_T_criticalExtensions_03_vals[] = { + { 0, "c1" }, + { 1, "criticalExtensionsFuture" }, + { 0, NULL } +}; + +static const per_choice_t T_criticalExtensions_03_choice[] = { + { 0, &hf_lpp_c1_04 , ASN1_NO_EXTENSIONS , dissect_lpp_T_c1_04 }, + { 1, &hf_lpp_criticalExtensionsFuture_03, ASN1_NO_EXTENSIONS , dissect_lpp_T_criticalExtensionsFuture_03 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensions_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensions_03, T_criticalExtensions_03_choice, + NULL); + + return offset; +} + + +static const per_sequence_t ProvideAssistanceData_sequence[] = { + { &hf_lpp_criticalExtensions_03, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_criticalExtensions_03 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ProvideAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 41 "../../asn1/lpp/lpp.cnf" + + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Provide Assistance Data"); + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ProvideAssistanceData, ProvideAssistanceData_sequence); + + return offset; +} + + +static const value_string lpp_LocationInformationType_vals[] = { + { 0, "locationEstimateRequired" }, + { 1, "locationMeasurementsRequired" }, + { 2, "locationEstimatePreferred" }, + { 3, "locationMeasurementsPreferred" }, + { 0, NULL } +}; + + +static int +dissect_lpp_LocationInformationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 4, NULL, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_lpp_ReportingDuration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t TriggeredReportingCriteria_sequence[] = { + { &hf_lpp_cellChange , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_reportingDuration, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_ReportingDuration }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_TriggeredReportingCriteria(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_TriggeredReportingCriteria, TriggeredReportingCriteria_sequence); + + return offset; +} + + +static const value_string lpp_T_reportingAmount_vals[] = { + { 0, "ra1" }, + { 1, "ra2" }, + { 2, "ra4" }, + { 3, "ra8" }, + { 4, "ra16" }, + { 5, "ra32" }, + { 6, "ra64" }, + { 7, "ra-Infinity" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_reportingAmount(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 8, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const value_string lpp_T_reportingInterval_vals[] = { + { 0, "noPeriodicalReporting" }, + { 1, "ri0-25" }, + { 2, "ri0-5" }, + { 3, "ri1" }, + { 4, "ri2" }, + { 5, "ri4" }, + { 6, "ri8" }, + { 7, "ri16" }, + { 8, "ri32" }, + { 9, "ri64" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_reportingInterval(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 10, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t PeriodicalReportingCriteria_sequence[] = { + { &hf_lpp_reportingAmount , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_T_reportingAmount }, + { &hf_lpp_reportingInterval, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_reportingInterval }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_PeriodicalReportingCriteria(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_PeriodicalReportingCriteria, PeriodicalReportingCriteria_sequence); + + return offset; +} + + +static const value_string lpp_AdditionalInformation_vals[] = { + { 0, "onlyReturnInformationRequested" }, + { 1, "mayReturnAditionalInformation" }, + { 0, NULL } +}; + + +static int +dissect_lpp_AdditionalInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t HorizontalAccuracy_sequence[] = { + { &hf_lpp_accuracy , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_confidence , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_100 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_HorizontalAccuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_HorizontalAccuracy, HorizontalAccuracy_sequence); + + return offset; +} + + +static const per_sequence_t VerticalAccuracy_sequence[] = { + { &hf_lpp_accuracy , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_confidence , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_100 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_VerticalAccuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_VerticalAccuracy, VerticalAccuracy_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_1_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 128U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t ResponseTime_sequence[] = { + { &hf_lpp_time , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_128 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ResponseTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ResponseTime, ResponseTime_sequence); + + return offset; +} + + +static const per_sequence_t QoS_sequence[] = { + { &hf_lpp_horizontalAccuracy, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_HorizontalAccuracy }, + { &hf_lpp_verticalCoordinateRequest, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_verticalAccuracy, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_VerticalAccuracy }, + { &hf_lpp_responseTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ResponseTime }, + { &hf_lpp_velocityRequest , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_QoS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_QoS, QoS_sequence); + + return offset; +} + + +static const value_string lpp_Environment_vals[] = { + { 0, "badArea" }, + { 1, "notBadArea" }, + { 2, "mixedArea" }, + { 0, NULL } +}; + + +static int +dissect_lpp_Environment(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 3, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t CommonIEsRequestLocationInformation_sequence[] = { + { &hf_lpp_locationInformationType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_LocationInformationType }, + { &hf_lpp_triggeredReporting, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_TriggeredReportingCriteria }, + { &hf_lpp_periodicalReporting, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_PeriodicalReportingCriteria }, + { &hf_lpp_additionalInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_AdditionalInformation }, + { &hf_lpp_qos , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_QoS }, + { &hf_lpp_environment , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_Environment }, + { &hf_lpp_locationCoordinateTypes, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_LocationCoordinateTypes }, + { &hf_lpp_velocityTypes , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_VelocityTypes }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_CommonIEsRequestLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_CommonIEsRequestLocationInformation, CommonIEsRequestLocationInformation_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_PositioningInstructions_sequence[] = { + { &hf_lpp_gnss_Methods , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID_Bitmap }, + { &hf_lpp_fineTimeAssistanceMeasReq, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_adrMeasReq , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_multiFreqMeasReq, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_assistanceAvailability, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_PositioningInstructions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_PositioningInstructions, GNSS_PositioningInstructions_sequence); + + return offset; +} + + +static const per_sequence_t A_GNSS_RequestLocationInformation_sequence[] = { + { &hf_lpp_gnss_PositioningInstructions, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_PositioningInstructions }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_A_GNSS_RequestLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_A_GNSS_RequestLocationInformation, A_GNSS_RequestLocationInformation_sequence); + + return offset; +} + + +static const per_sequence_t OTDOA_RequestLocationInformation_sequence[] = { + { &hf_lpp_assistanceAvailability, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_RequestLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_RequestLocationInformation, OTDOA_RequestLocationInformation_sequence); + + return offset; +} + + + +static int +dissect_lpp_T_requestedMeasurements(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 8, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t ECID_RequestLocationInformation_sequence[] = { + { &hf_lpp_requestedMeasurements, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_requestedMeasurements }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ECID_RequestLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ECID_RequestLocationInformation, ECID_RequestLocationInformation_sequence); + + return offset; +} + + +static const per_sequence_t RequestLocationInformation_r9_IEs_sequence[] = { + { &hf_lpp_commonIEsRequestLocationInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CommonIEsRequestLocationInformation }, + { &hf_lpp_a_gnss_RequestLocationInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_A_GNSS_RequestLocationInformation }, + { &hf_lpp_otdoa_RequestLocationInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_RequestLocationInformation }, + { &hf_lpp_ecid_RequestLocationInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ECID_RequestLocationInformation }, + { &hf_lpp_epdu_RequestLocationInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_EPDU_Sequence }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_RequestLocationInformation_r9_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_RequestLocationInformation_r9_IEs, RequestLocationInformation_r9_IEs_sequence); + + return offset; +} + + +static const value_string lpp_T_c1_05_vals[] = { + { 0, "requestLocationInformation-r9" }, + { 1, "spare3" }, + { 2, "spare2" }, + { 3, "spare1" }, + { 0, NULL } +}; + +static const per_choice_t T_c1_05_choice[] = { + { 0, &hf_lpp_requestLocationInformation_r9, ASN1_NO_EXTENSIONS , dissect_lpp_RequestLocationInformation_r9_IEs }, + { 1, &hf_lpp_spare3 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 2, &hf_lpp_spare2 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 3, &hf_lpp_spare1 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_c1_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_c1_05, T_c1_05_choice, + NULL); + + return offset; +} + + +static const per_sequence_t T_criticalExtensionsFuture_04_sequence[] = { + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensionsFuture_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensionsFuture_04, T_criticalExtensionsFuture_04_sequence); + + return offset; +} + + +static const value_string lpp_T_criticalExtensions_04_vals[] = { + { 0, "c1" }, + { 1, "criticalExtensionsFuture" }, + { 0, NULL } +}; + +static const per_choice_t T_criticalExtensions_04_choice[] = { + { 0, &hf_lpp_c1_05 , ASN1_NO_EXTENSIONS , dissect_lpp_T_c1_05 }, + { 1, &hf_lpp_criticalExtensionsFuture_04, ASN1_NO_EXTENSIONS , dissect_lpp_T_criticalExtensionsFuture_04 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensions_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensions_04, T_criticalExtensions_04_choice, + NULL); + + return offset; +} + + +static const per_sequence_t RequestLocationInformation_sequence[] = { + { &hf_lpp_criticalExtensions_04, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_criticalExtensions_04 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_RequestLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 45 "../../asn1/lpp/lpp.cnf" + + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Request Location Information"); + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_RequestLocationInformation, RequestLocationInformation_sequence); + + return offset; +} + + +static const value_string lpp_T_latitudeSign_vals[] = { + { 0, "north" }, + { 1, "south" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_latitudeSign(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t Ellipsoid_Point_sequence[] = { + { &hf_lpp_latitudeSign , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_latitudeSign }, + { &hf_lpp_degreesLatitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_8388607 }, + { &hf_lpp_degreesLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_Ellipsoid_Point(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_Ellipsoid_Point, Ellipsoid_Point_sequence); + + return offset; +} + + +static const value_string lpp_T_latitudeSign_01_vals[] = { + { 0, "north" }, + { 1, "south" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_latitudeSign_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t Ellipsoid_PointWithUncertaintyCircle_sequence[] = { + { &hf_lpp_latitudeSign_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_latitudeSign_01 }, + { &hf_lpp_degreesLatitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_8388607 }, + { &hf_lpp_degreesLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_uncertainty , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_Ellipsoid_PointWithUncertaintyCircle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_Ellipsoid_PointWithUncertaintyCircle, Ellipsoid_PointWithUncertaintyCircle_sequence); + + return offset; +} + + +static const value_string lpp_T_latitudeSign_02_vals[] = { + { 0, "north" }, + { 1, "south" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_latitudeSign_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t EllipsoidPointWithUncertaintyEllipse_sequence[] = { + { &hf_lpp_latitudeSign_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_latitudeSign_02 }, + { &hf_lpp_degreesLatitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_8388607 }, + { &hf_lpp_degreesLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_uncertaintySemiMajor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_uncertaintySemiMinor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_orientationMajorAxis, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_179 }, + { &hf_lpp_confidence , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_100 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_EllipsoidPointWithUncertaintyEllipse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_EllipsoidPointWithUncertaintyEllipse, EllipsoidPointWithUncertaintyEllipse_sequence); + + return offset; +} + + +static const value_string lpp_T_latitudeSign_06_vals[] = { + { 0, "north" }, + { 1, "south" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_latitudeSign_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t PolygonPoints_sequence[] = { + { &hf_lpp_latitudeSign_06 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_latitudeSign_06 }, + { &hf_lpp_degreesLatitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_8388607 }, + { &hf_lpp_degreesLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_PolygonPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_PolygonPoints, PolygonPoints_sequence); + + return offset; +} + + +static const per_sequence_t Polygon_sequence_of[1] = { + { &hf_lpp_Polygon_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_PolygonPoints }, +}; + +static int +dissect_lpp_Polygon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_Polygon, Polygon_sequence_of, + 3, 15, FALSE); + + return offset; +} + + +static const value_string lpp_T_latitudeSign_03_vals[] = { + { 0, "north" }, + { 1, "south" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_latitudeSign_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const value_string lpp_T_altitudeDirection_vals[] = { + { 0, "height" }, + { 1, "depth" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_altitudeDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t EllipsoidPointWithAltitude_sequence[] = { + { &hf_lpp_latitudeSign_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_latitudeSign_03 }, + { &hf_lpp_degreesLatitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_8388607 }, + { &hf_lpp_degreesLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_altitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_altitudeDirection }, + { &hf_lpp_altitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_32767 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_EllipsoidPointWithAltitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_EllipsoidPointWithAltitude, EllipsoidPointWithAltitude_sequence); + + return offset; +} + + +static const value_string lpp_T_latitudeSign_05_vals[] = { + { 0, "north" }, + { 1, "south" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_latitudeSign_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t EllipsoidArc_sequence[] = { + { &hf_lpp_latitudeSign_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_latitudeSign_05 }, + { &hf_lpp_degreesLatitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_8388607 }, + { &hf_lpp_degreesLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 }, + { &hf_lpp_innerRadius , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_65535 }, + { &hf_lpp_uncertaintyRadius, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_offsetAngle , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_179 }, + { &hf_lpp_includedAngle , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_179 }, + { &hf_lpp_confidence , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_100 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_EllipsoidArc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_EllipsoidArc, EllipsoidArc_sequence); + + return offset; +} + + +static const value_string lpp_LocationCoordinates_vals[] = { + { 0, "ellipsoidPoint" }, + { 1, "ellipsoidPointWithUncertaintyCircle" }, + { 2, "ellipsoidPointWithUncertaintyEllipse" }, + { 3, "polygon" }, + { 4, "ellipsoidPointWithAltitude" }, + { 5, "ellipsoidPointWithAltitudeAndUncertaintyEllipsoid" }, + { 6, "ellipsoidArc" }, + { 0, NULL } +}; + +static const per_choice_t LocationCoordinates_choice[] = { + { 0, &hf_lpp_ellipsoidPoint_01, ASN1_EXTENSION_ROOT , dissect_lpp_Ellipsoid_Point }, + { 1, &hf_lpp_ellipsoidPointWithUncertaintyCircle_01, ASN1_EXTENSION_ROOT , dissect_lpp_Ellipsoid_PointWithUncertaintyCircle }, + { 2, &hf_lpp_ellipsoidPointWithUncertaintyEllipse_01, ASN1_EXTENSION_ROOT , dissect_lpp_EllipsoidPointWithUncertaintyEllipse }, + { 3, &hf_lpp_polygon_01 , ASN1_EXTENSION_ROOT , dissect_lpp_Polygon }, + { 4, &hf_lpp_ellipsoidPointWithAltitude_01, ASN1_EXTENSION_ROOT , dissect_lpp_EllipsoidPointWithAltitude }, + { 5, &hf_lpp_ellipsoidPointWithAltitudeAndUncertaintyEllipsoid_01, ASN1_EXTENSION_ROOT , dissect_lpp_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid }, + { 6, &hf_lpp_ellipsoidArc_01 , ASN1_EXTENSION_ROOT , dissect_lpp_EllipsoidArc }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_LocationCoordinates(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_LocationCoordinates, LocationCoordinates_choice, + NULL); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_359(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 359U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t HorizontalVelocity_sequence[] = { + { &hf_lpp_bearing , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_359 }, + { &hf_lpp_horizontalSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2047 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_HorizontalVelocity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_HorizontalVelocity, HorizontalVelocity_sequence); + + return offset; +} + + +static const value_string lpp_T_verticalDirection_vals[] = { + { 0, "upward" }, + { 1, "downward" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_verticalDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t HorizontalWithVerticalVelocity_sequence[] = { + { &hf_lpp_bearing , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_359 }, + { &hf_lpp_horizontalSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2047 }, + { &hf_lpp_verticalDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_verticalDirection }, + { &hf_lpp_verticalSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_HorizontalWithVerticalVelocity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_HorizontalWithVerticalVelocity, HorizontalWithVerticalVelocity_sequence); + + return offset; +} + + +static const per_sequence_t HorizontalVelocityWithUncertainty_sequence[] = { + { &hf_lpp_bearing , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_359 }, + { &hf_lpp_horizontalSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2047 }, + { &hf_lpp_uncertaintySpeed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_HorizontalVelocityWithUncertainty(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_HorizontalVelocityWithUncertainty, HorizontalVelocityWithUncertainty_sequence); + + return offset; +} + + +static const value_string lpp_T_verticalDirection_01_vals[] = { + { 0, "upward" }, + { 1, "downward" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_verticalDirection_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t HorizontalWithVerticalVelocityAndUncertainty_sequence[] = { + { &hf_lpp_bearing , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_359 }, + { &hf_lpp_horizontalSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2047 }, + { &hf_lpp_verticalDirection_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_verticalDirection_01 }, + { &hf_lpp_verticalSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_horizontalUncertaintySpeed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { &hf_lpp_verticalUncertaintySpeed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_HorizontalWithVerticalVelocityAndUncertainty(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_HorizontalWithVerticalVelocityAndUncertainty, HorizontalWithVerticalVelocityAndUncertainty_sequence); + + return offset; +} + + +static const value_string lpp_Velocity_vals[] = { + { 0, "horizontalVelocity" }, + { 1, "horizontalWithVerticalVelocity" }, + { 2, "horizontalVelocityWithUncertainty" }, + { 3, "horizontalWithVerticalVelocityAndUncertainty" }, + { 0, NULL } +}; + +static const per_choice_t Velocity_choice[] = { + { 0, &hf_lpp_horizontalVelocity_01, ASN1_EXTENSION_ROOT , dissect_lpp_HorizontalVelocity }, + { 1, &hf_lpp_horizontalWithVerticalVelocity_01, ASN1_EXTENSION_ROOT , dissect_lpp_HorizontalWithVerticalVelocity }, + { 2, &hf_lpp_horizontalVelocityWithUncertainty_01, ASN1_EXTENSION_ROOT , dissect_lpp_HorizontalVelocityWithUncertainty }, + { 3, &hf_lpp_horizontalWithVerticalVelocityAndUncertainty_01, ASN1_EXTENSION_ROOT , dissect_lpp_HorizontalWithVerticalVelocityAndUncertainty }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_Velocity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_Velocity, Velocity_choice, + NULL); + + return offset; +} + + +static const value_string lpp_LocationFailureCause_vals[] = { + { 0, "undefined" }, + { 1, "requestedMethodNotSupported" }, + { 2, "positionMethodFailure" }, + { 3, "periodicLocationMeasurementsNotAvailable" }, + { 0, NULL } +}; + + +static int +dissect_lpp_LocationFailureCause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 4, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t LocationError_sequence[] = { + { &hf_lpp_locationfailurecause, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_LocationFailureCause }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_LocationError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_LocationError, LocationError_sequence); + + return offset; +} + + +static const per_sequence_t CommonIEsProvideLocationInformation_sequence[] = { + { &hf_lpp_locationEstimate, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_LocationCoordinates }, + { &hf_lpp_velocityEstimate, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_Velocity }, + { &hf_lpp_locationError , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_LocationError }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_CommonIEsProvideLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_CommonIEsProvideLocationInformation, CommonIEsProvideLocationInformation_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_3599999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 3599999U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_3999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 3999U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 10, 10, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t T_eUTRA_01_sequence[] = { + { &hf_lpp_physCellId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 }, + { &hf_lpp_cellGlobalId_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CellGlobalIdEUTRA_AndUTRA }, + { &hf_lpp_systemFrameNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_10 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_eUTRA_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_eUTRA_01, T_eUTRA_01_sequence); + + return offset; +} + + +static const per_sequence_t T_fdd_01_sequence[] = { + { &hf_lpp_primary_CPICH_Info, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_511 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_fdd_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_fdd_01, T_fdd_01_sequence); + + return offset; +} + + +static const per_sequence_t T_tdd_01_sequence[] = { + { &hf_lpp_cellParameters , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_tdd_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_tdd_01, T_tdd_01_sequence); + + return offset; +} + + +static const value_string lpp_T_mode_01_vals[] = { + { 0, "fdd" }, + { 1, "tdd" }, + { 0, NULL } +}; + +static const per_choice_t T_mode_01_choice[] = { + { 0, &hf_lpp_fdd_01 , ASN1_NO_EXTENSIONS , dissect_lpp_T_fdd_01 }, + { 1, &hf_lpp_tdd_01 , ASN1_NO_EXTENSIONS , dissect_lpp_T_tdd_01 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_mode_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_mode_01, T_mode_01_choice, + NULL); + + return offset; +} + + +static const per_sequence_t T_uTRA_01_sequence[] = { + { &hf_lpp_mode_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_mode_01 }, + { &hf_lpp_cellGlobalId_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CellGlobalIdEUTRA_AndUTRA }, + { &hf_lpp_referenceSystemFrameNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4095 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_uTRA_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_uTRA_01, T_uTRA_01_sequence); + + return offset; +} + + +static const per_sequence_t T_referenceFrame_sequence[] = { + { &hf_lpp_referenceFN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_65535 }, + { &hf_lpp_referenceFNMSB , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_63 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_referenceFrame(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_referenceFrame, T_referenceFrame_sequence); + + return offset; +} + + +static const per_sequence_t T_gSM_01_sequence[] = { + { &hf_lpp_bcchCarrier , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1023 }, + { &hf_lpp_bsic , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_63 }, + { &hf_lpp_cellGlobalId_02 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CellGlobalIdGERAN }, + { &hf_lpp_referenceFrame , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_referenceFrame }, + { &hf_lpp_deltaGNSS_TOD , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_gSM_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_gSM_01, T_gSM_01_sequence); + + return offset; +} + + +static const value_string lpp_T_networkTime_vals[] = { + { 0, "eUTRA" }, + { 1, "uTRA" }, + { 2, "gSM" }, + { 0, NULL } +}; + +static const per_choice_t T_networkTime_choice[] = { + { 0, &hf_lpp_eUTRA_01 , ASN1_EXTENSION_ROOT , dissect_lpp_T_eUTRA_01 }, + { 1, &hf_lpp_uTRA_01 , ASN1_EXTENSION_ROOT , dissect_lpp_T_uTRA_01 }, + { 2, &hf_lpp_gSM_01 , ASN1_EXTENSION_ROOT , dissect_lpp_T_gSM_01 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_networkTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_networkTime, T_networkTime_choice, + NULL); + + return offset; +} + + +static const per_sequence_t MeasurementReferenceTime_sequence[] = { + { &hf_lpp_gnss_TOD_msec , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3599999 }, + { &hf_lpp_gnss_TOD_frac , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_3999 }, + { &hf_lpp_gnss_TOD_unc , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_gnss_TimeID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID }, + { &hf_lpp_networkTime_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_T_networkTime }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_MeasurementReferenceTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_MeasurementReferenceTime, MeasurementReferenceTime_sequence); + + return offset; +} + + +static const value_string lpp_T_mpathDet_vals[] = { + { 0, "notMeasured" }, + { 1, "low" }, + { 2, "medium" }, + { 3, "high" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_mpathDet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 4, NULL, TRUE, 0, NULL); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_33554431(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 33554431U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_SatMeasElement_sequence[] = { + { &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID }, + { &hf_lpp_cNo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_63 }, + { &hf_lpp_mpathDet , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_mpathDet }, + { &hf_lpp_carrierQualityInd, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_3 }, + { &hf_lpp_codePhase_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2097151 }, + { &hf_lpp_integerCodePhase, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_codePhaseRMSError, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_63 }, + { &hf_lpp_doppler , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_M32768_32767 }, + { &hf_lpp_adr , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_33554431 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_SatMeasElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_SatMeasElement, GNSS_SatMeasElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_SatMeasList_sequence_of[1] = { + { &hf_lpp_GNSS_SatMeasList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SatMeasElement }, +}; + +static int +dissect_lpp_GNSS_SatMeasList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_SatMeasList, GNSS_SatMeasList_sequence_of, + 1, 64, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_SgnMeasElement_sequence[] = { + { &hf_lpp_gnss_SignalID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalID }, + { &hf_lpp_gnss_CodePhaseAmbiguity, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_127 }, + { &hf_lpp_gnss_SatMeasList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SatMeasList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_SgnMeasElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_SgnMeasElement, GNSS_SgnMeasElement_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_SgnMeasList_sequence_of[1] = { + { &hf_lpp_GNSS_SgnMeasList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SgnMeasElement }, +}; + +static int +dissect_lpp_GNSS_SgnMeasList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_SgnMeasList, GNSS_SgnMeasList_sequence_of, + 1, 8, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_MeasurementForOneGNSS_sequence[] = { + { &hf_lpp_gnss_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID }, + { &hf_lpp_gnss_SgnMeasList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SgnMeasList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_MeasurementForOneGNSS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_MeasurementForOneGNSS, GNSS_MeasurementForOneGNSS_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_MeasurementList_sequence_of[1] = { + { &hf_lpp_GNSS_MeasurementList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_MeasurementForOneGNSS }, +}; + +static int +dissect_lpp_GNSS_MeasurementList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_MeasurementList, GNSS_MeasurementList_sequence_of, + 1, 16, FALSE); + + return offset; +} + + +static const per_sequence_t GNSS_SignalMeasurementInformation_sequence[] = { + { &hf_lpp_measurementReferenceTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_MeasurementReferenceTime }, + { &hf_lpp_gnss_MeasurementList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_MeasurementList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_SignalMeasurementInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_SignalMeasurementInformation, GNSS_SignalMeasurementInformation_sequence); + + return offset; +} + + +static const per_sequence_t GNSS_LocationInformation_sequence[] = { + { &hf_lpp_measurementReferenceTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_MeasurementReferenceTime }, + { &hf_lpp_agnss_List , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID_Bitmap }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_GNSS_LocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_GNSS_LocationInformation, GNSS_LocationInformation_sequence); + + return offset; +} + + +static const per_sequence_t A_GNSS_ProvideLocationInformation_sequence[] = { + { &hf_lpp_gnss_SignalMeasurementInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_SignalMeasurementInformation }, + { &hf_lpp_gnss_LocationInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_LocationInformation }, + { &hf_lpp_gnss_Error , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_A_GNSS_Error }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_A_GNSS_ProvideLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_A_GNSS_ProvideLocationInformation, A_GNSS_ProvideLocationInformation_sequence); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 5, 5, FALSE, NULL); + + return offset; +} + + + +static int +dissect_lpp_BIT_STRING_SIZE_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 3, 3, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t OTDOA_MeasQuality_sequence[] = { + { &hf_lpp_error_Resolution, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_2 }, + { &hf_lpp_error_Value , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_5 }, + { &hf_lpp_error_NumSamples, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_BIT_STRING_SIZE_3 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_MeasQuality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_MeasQuality, OTDOA_MeasQuality_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_12711(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 12711U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t NeighbourMeasurementElement_sequence[] = { + { &hf_lpp_physCellIdNeighbor, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 }, + { &hf_lpp_cellGlobalIdNeighbour, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ECGI }, + { &hf_lpp_earfcnNeighbour , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ARFCN_ValueEUTRA }, + { &hf_lpp_rstd , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_12711 }, + { &hf_lpp_rstd_Quality , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_MeasQuality }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_NeighbourMeasurementElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_NeighbourMeasurementElement, NeighbourMeasurementElement_sequence); + + return offset; +} + + +static const per_sequence_t NeighbourMeasurementList_sequence_of[1] = { + { &hf_lpp_NeighbourMeasurementList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_NeighbourMeasurementElement }, +}; + +static int +dissect_lpp_NeighbourMeasurementList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_NeighbourMeasurementList, NeighbourMeasurementList_sequence_of, + 1, 24, FALSE); + + return offset; +} + + +static const per_sequence_t OTDOA_SignalMeasurementInformation_sequence[] = { + { &hf_lpp_systemFrameNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_10 }, + { &hf_lpp_physCellIdRef , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 }, + { &hf_lpp_cellGlobalIdRef , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ECGI }, + { &hf_lpp_earfcnRef , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ARFCN_ValueEUTRA }, + { &hf_lpp_referenceQuality, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_MeasQuality }, + { &hf_lpp_neighbourMeasurementList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_NeighbourMeasurementList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_SignalMeasurementInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_SignalMeasurementInformation, OTDOA_SignalMeasurementInformation_sequence); + + return offset; +} + + +static const per_sequence_t OTDOA_ProvideLocationInformation_sequence[] = { + { &hf_lpp_otdoaSignalMeasurementInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_SignalMeasurementInformation }, + { &hf_lpp_otdoa_Error , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_Error }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_OTDOA_ProvideLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_OTDOA_ProvideLocationInformation, OTDOA_ProvideLocationInformation_sequence); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_97(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 97U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lpp_INTEGER_0_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 34U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t MeasuredResultsElement_sequence[] = { + { &hf_lpp_physCellId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 }, + { &hf_lpp_cellGlobalId_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CellGlobalIdEUTRA_AndUTRA }, + { &hf_lpp_arfcnEUTRA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_ARFCN_ValueEUTRA }, + { &hf_lpp_systemFrameNumber, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_BIT_STRING_SIZE_10 }, + { &hf_lpp_rsrp_Result , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_97 }, + { &hf_lpp_rsrq_Result , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_34 }, + { &hf_lpp_ue_RxTxTimeDiff , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_INTEGER_0_4095 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_MeasuredResultsElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_MeasuredResultsElement, MeasuredResultsElement_sequence); + + return offset; +} + + +static const per_sequence_t MeasuredResultsList_sequence_of[1] = { + { &hf_lpp_MeasuredResultsList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_MeasuredResultsElement }, +}; + +static int +dissect_lpp_MeasuredResultsList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lpp_MeasuredResultsList, MeasuredResultsList_sequence_of, + 1, 32, FALSE); + + return offset; +} + + +static const per_sequence_t ECID_SignalMeasurementInformation_sequence[] = { + { &hf_lpp_servingCellMeasuredResults, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_MeasuredResultsElement }, + { &hf_lpp_measuredResultsList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_MeasuredResultsList }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ECID_SignalMeasurementInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ECID_SignalMeasurementInformation, ECID_SignalMeasurementInformation_sequence); + + return offset; +} + + +static const value_string lpp_T_cause_04_vals[] = { + { 0, "undefined" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_cause_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 1, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t ECID_LocationServerErrorCauses_sequence[] = { + { &hf_lpp_cause_04 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_04 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ECID_LocationServerErrorCauses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ECID_LocationServerErrorCauses, ECID_LocationServerErrorCauses_sequence); + + return offset; +} + + +static const value_string lpp_T_cause_05_vals[] = { + { 0, "undefined" }, + { 1, "requestedMeasurementNotAvailable" }, + { 2, "notAllrequestedMeasurementsPossible" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_cause_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 3, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t ECID_TargetDeviceErrorCauses_sequence[] = { + { &hf_lpp_cause_05 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_05 }, + { &hf_lpp_rsrpMeasurementNotPossible, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_NULL }, + { &hf_lpp_rsrqMeasurementNotPossible, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_NULL }, + { &hf_lpp_ueRxTxMeasurementNotPossible, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_NULL }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ECID_TargetDeviceErrorCauses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ECID_TargetDeviceErrorCauses, ECID_TargetDeviceErrorCauses_sequence); + + return offset; +} + + +static const value_string lpp_ECID_Error_vals[] = { + { 0, "locationServerErrorCauses" }, + { 1, "targetDeviceErrorCauses" }, + { 0, NULL } +}; + +static const per_choice_t ECID_Error_choice[] = { + { 0, &hf_lpp_locationServerErrorCauses_02, ASN1_EXTENSION_ROOT , dissect_lpp_ECID_LocationServerErrorCauses }, + { 1, &hf_lpp_targetDeviceErrorCauses_02, ASN1_EXTENSION_ROOT , dissect_lpp_ECID_TargetDeviceErrorCauses }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_ECID_Error(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_ECID_Error, ECID_Error_choice, + NULL); + + return offset; +} + + +static const per_sequence_t ECID_ProvideLocationInformation_sequence[] = { + { &hf_lpp_ecid_SignalMeasurementInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ECID_SignalMeasurementInformation }, + { &hf_lpp_ecid_Error , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ECID_Error }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ECID_ProvideLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ECID_ProvideLocationInformation, ECID_ProvideLocationInformation_sequence); + + return offset; +} + + +static const per_sequence_t ProvideLocationInformation_r9_IEs_sequence[] = { + { &hf_lpp_commonIEsProvideLocationInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CommonIEsProvideLocationInformation }, + { &hf_lpp_a_gnss_ProvideLocationInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_A_GNSS_ProvideLocationInformation }, + { &hf_lpp_otdoa_ProvideLocationInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_OTDOA_ProvideLocationInformation }, + { &hf_lpp_ecid_ProvideLocationInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_ECID_ProvideLocationInformation }, + { &hf_lpp_epdu_ProvideLocationInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_EPDU_Sequence }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ProvideLocationInformation_r9_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ProvideLocationInformation_r9_IEs, ProvideLocationInformation_r9_IEs_sequence); + + return offset; +} + + +static const value_string lpp_T_c1_06_vals[] = { + { 0, "provideLocationInformation-r9" }, + { 1, "spare3" }, + { 2, "spare2" }, + { 3, "spare1" }, + { 0, NULL } +}; + +static const per_choice_t T_c1_06_choice[] = { + { 0, &hf_lpp_provideLocationInformation_r9, ASN1_NO_EXTENSIONS , dissect_lpp_ProvideLocationInformation_r9_IEs }, + { 1, &hf_lpp_spare3 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 2, &hf_lpp_spare2 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 3, &hf_lpp_spare1 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_c1_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_c1_06, T_c1_06_choice, + NULL); + + return offset; +} + + +static const per_sequence_t T_criticalExtensionsFuture_05_sequence[] = { + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensionsFuture_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensionsFuture_05, T_criticalExtensionsFuture_05_sequence); + + return offset; +} + + +static const value_string lpp_T_criticalExtensions_05_vals[] = { + { 0, "c1" }, + { 1, "criticalExtensionsFuture" }, + { 0, NULL } +}; + +static const per_choice_t T_criticalExtensions_05_choice[] = { + { 0, &hf_lpp_c1_06 , ASN1_NO_EXTENSIONS , dissect_lpp_T_c1_06 }, + { 1, &hf_lpp_criticalExtensionsFuture_05, ASN1_NO_EXTENSIONS , dissect_lpp_T_criticalExtensionsFuture_05 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensions_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensions_05, T_criticalExtensions_05_choice, + NULL); + + return offset; +} + + +static const per_sequence_t ProvideLocationInformation_sequence[] = { + { &hf_lpp_criticalExtensions_05, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_criticalExtensions_05 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_ProvideLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 49 "../../asn1/lpp/lpp.cnf" + + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Provide Location Information"); + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_ProvideLocationInformation, ProvideLocationInformation_sequence); + + return offset; +} + + +static const value_string lpp_T_abortCause_vals[] = { + { 0, "undefined" }, + { 1, "stopPeriodicReporting" }, + { 2, "targetDeviceAbort" }, + { 3, "networkAbort" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_abortCause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 4, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t CommonIEsAbort_sequence[] = { + { &hf_lpp_abortCause , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_abortCause }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_CommonIEsAbort(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_CommonIEsAbort, CommonIEsAbort_sequence); + + return offset; +} + + +static const per_sequence_t Abort_r9_IEs_sequence[] = { + { &hf_lpp_commonIEsAbort , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CommonIEsAbort }, + { &hf_lpp_epdu_Abort , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_lpp_EPDU_Sequence }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_Abort_r9_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_Abort_r9_IEs, Abort_r9_IEs_sequence); + + return offset; +} + + +static const value_string lpp_T_c1_07_vals[] = { + { 0, "abort-r9" }, + { 1, "spare3" }, + { 2, "spare2" }, + { 3, "spare1" }, + { 0, NULL } +}; + +static const per_choice_t T_c1_07_choice[] = { + { 0, &hf_lpp_abort_r9 , ASN1_NO_EXTENSIONS , dissect_lpp_Abort_r9_IEs }, + { 1, &hf_lpp_spare3 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 2, &hf_lpp_spare2 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 3, &hf_lpp_spare1 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_c1_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_c1_07, T_c1_07_choice, + NULL); + + return offset; +} + + +static const per_sequence_t T_criticalExtensionsFuture_06_sequence[] = { + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensionsFuture_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensionsFuture_06, T_criticalExtensionsFuture_06_sequence); + + return offset; +} + + +static const value_string lpp_T_criticalExtensions_06_vals[] = { + { 0, "c1" }, + { 1, "criticalExtensionsFuture" }, + { 0, NULL } +}; + +static const per_choice_t T_criticalExtensions_06_choice[] = { + { 0, &hf_lpp_c1_07 , ASN1_NO_EXTENSIONS , dissect_lpp_T_c1_07 }, + { 1, &hf_lpp_criticalExtensionsFuture_06, ASN1_NO_EXTENSIONS , dissect_lpp_T_criticalExtensionsFuture_06 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensions_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensions_06, T_criticalExtensions_06_choice, + NULL); + + return offset; +} + + +static const per_sequence_t Abort_sequence[] = { + { &hf_lpp_criticalExtensions_06, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_criticalExtensions_06 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_Abort(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 53 "../../asn1/lpp/lpp.cnf" + + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Abort"); + + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_Abort, Abort_sequence); + + return offset; +} + + +static const value_string lpp_T_errorCause_vals[] = { + { 0, "undefined" }, + { 1, "lppMessageHeaderError" }, + { 2, "lppMessageBodyError" }, + { 3, "epduError" }, + { 4, "incorrectDataValue" }, + { 0, NULL } +}; + + +static int +dissect_lpp_T_errorCause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 5, NULL, TRUE, 0, NULL); + + return offset; +} + + +static const per_sequence_t CommonIEsError_sequence[] = { + { &hf_lpp_errorCause , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_T_errorCause }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_CommonIEsError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_CommonIEsError, CommonIEsError_sequence); + + return offset; +} + + +static const per_sequence_t Error_r9_IEs_sequence[] = { + { &hf_lpp_commonIEsError , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_CommonIEsError }, + { &hf_lpp_epdu_Error , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_lpp_EPDU_Sequence }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_Error_r9_IEs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_Error_r9_IEs, Error_r9_IEs_sequence); + + return offset; +} + + +static const per_sequence_t T_criticalExtensionsFuture_07_sequence[] = { + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_criticalExtensionsFuture_07(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_criticalExtensionsFuture_07, T_criticalExtensionsFuture_07_sequence); + + return offset; +} + + +static const value_string lpp_Error_vals[] = { + { 0, "error-r9" }, + { 1, "criticalExtensionsFuture" }, + { 0, NULL } +}; + +static const per_choice_t Error_choice[] = { + { 0, &hf_lpp_error_r9 , ASN1_NO_EXTENSIONS , dissect_lpp_Error_r9_IEs }, + { 1, &hf_lpp_criticalExtensionsFuture_07, ASN1_NO_EXTENSIONS , dissect_lpp_T_criticalExtensionsFuture_07 }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_Error(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 57 "../../asn1/lpp/lpp.cnf" + + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Error"); + + + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_Error, Error_choice, + NULL); + + return offset; +} + + +static const value_string lpp_T_c1_vals[] = { + { 0, "requestCapabilities" }, + { 1, "provideCapabilities" }, + { 2, "requestAssistanceData" }, + { 3, "provideAssistanceData" }, + { 4, "requestLocationInformation" }, + { 5, "provideLocationInformation" }, + { 6, "abort" }, + { 7, "error" }, + { 8, "spare7" }, + { 9, "spare6" }, + { 10, "spare5" }, + { 11, "spare4" }, + { 12, "spare3" }, + { 13, "spare2" }, + { 14, "spare1" }, + { 15, "spare0" }, + { 0, NULL } +}; + +static const per_choice_t T_c1_choice[] = { + { 0, &hf_lpp_requestCapabilities, ASN1_NO_EXTENSIONS , dissect_lpp_RequestCapabilities }, + { 1, &hf_lpp_provideCapabilities, ASN1_NO_EXTENSIONS , dissect_lpp_ProvideCapabilities }, + { 2, &hf_lpp_requestAssistanceData, ASN1_NO_EXTENSIONS , dissect_lpp_RequestAssistanceData }, + { 3, &hf_lpp_provideAssistanceData, ASN1_NO_EXTENSIONS , dissect_lpp_ProvideAssistanceData }, + { 4, &hf_lpp_requestLocationInformation, ASN1_NO_EXTENSIONS , dissect_lpp_RequestLocationInformation }, + { 5, &hf_lpp_provideLocationInformation, ASN1_NO_EXTENSIONS , dissect_lpp_ProvideLocationInformation }, + { 6, &hf_lpp_abort , ASN1_NO_EXTENSIONS , dissect_lpp_Abort }, + { 7, &hf_lpp_error , ASN1_NO_EXTENSIONS , dissect_lpp_Error }, + { 8, &hf_lpp_spare7 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 9, &hf_lpp_spare6 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 10, &hf_lpp_spare5 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 11, &hf_lpp_spare4 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 12, &hf_lpp_spare3 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 13, &hf_lpp_spare2 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 14, &hf_lpp_spare1 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 15, &hf_lpp_spare0 , ASN1_NO_EXTENSIONS , dissect_lpp_NULL }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_T_c1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_T_c1, T_c1_choice, + NULL); + + return offset; +} + + +static const per_sequence_t T_messageClassExtension_sequence[] = { + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_T_messageClassExtension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_T_messageClassExtension, T_messageClassExtension_sequence); + + return offset; +} + + +static const value_string lpp_LPP_MessageBody_vals[] = { + { 0, "c1" }, + { 1, "messageClassExtension" }, + { 0, NULL } +}; + +static const per_choice_t LPP_MessageBody_choice[] = { + { 0, &hf_lpp_c1 , ASN1_NO_EXTENSIONS , dissect_lpp_T_c1 }, + { 1, &hf_lpp_messageClassExtension, ASN1_NO_EXTENSIONS , dissect_lpp_T_messageClassExtension }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_lpp_LPP_MessageBody(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_lpp_LPP_MessageBody, LPP_MessageBody_choice, + NULL); + + return offset; +} + + +static const per_sequence_t LPP_Message_sequence[] = { + { &hf_lpp_transactionID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_LPP_TransactionID }, + { &hf_lpp_endTransaction , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN }, + { &hf_lpp_sequenceNumber , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_SequenceNumber }, + { &hf_lpp_acknowledgement , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_Acknowledgement }, + { &hf_lpp_lpp_MessageBody , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_LPP_MessageBody }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lpp_LPP_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 15 "../../asn1/lpp/lpp.cnf" + + proto_tree_add_item(tree, proto_lpp, tvb, 0, -1, ENC_NA); + + col_append_str(actx->pinfo->cinfo, COL_PROTOCOL, "/LPP"); + + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lpp_LPP_Message, LPP_Message_sequence); + + return offset; +} + +/*--- PDUs ---*/ + +static int dissect_LPP_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo); + offset = dissect_lpp_LPP_Message(tvb, offset, &asn1_ctx, tree, hf_lpp_LPP_Message_PDU); + offset += 7; offset >>= 3; + return offset; +} + + +/*--- End of included file: packet-lpp-fn.c ---*/ +#line 62 "../../asn1/lpp/packet-lpp-template.c" + + +/*--- proto_register_lpp -------------------------------------------*/ +void proto_register_lpp(void) { + + /* List of fields */ + static hf_register_info hf[] = { + + +/*--- Included file: packet-lpp-hfarr.c ---*/ +#line 1 "../../asn1/lpp/packet-lpp-hfarr.c" + { &hf_lpp_LPP_Message_PDU, + { "LPP-Message", "lpp.LPP_Message", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_transactionID, + { "transactionID", "lpp.transactionID", + FT_NONE, BASE_NONE, NULL, 0, + "LPP_TransactionID", HFILL }}, + { &hf_lpp_endTransaction, + { "endTransaction", "lpp.endTransaction", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_sequenceNumber, + { "sequenceNumber", "lpp.sequenceNumber", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_acknowledgement, + { "acknowledgement", "lpp.acknowledgement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_lpp_MessageBody, + { "lpp-MessageBody", "lpp.lpp_MessageBody", + FT_UINT32, BASE_DEC, VALS(lpp_LPP_MessageBody_vals), 0, + NULL, HFILL }}, + { &hf_lpp_ackRequested, + { "ackRequested", "lpp.ackRequested", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_ackIndicator, + { "ackIndicator", "lpp.ackIndicator", + FT_UINT32, BASE_DEC, NULL, 0, + "SequenceNumber", HFILL }}, + { &hf_lpp_c1, + { "c1", "lpp.c1", + FT_UINT32, BASE_DEC, VALS(lpp_T_c1_vals), 0, + NULL, HFILL }}, + { &hf_lpp_requestCapabilities, + { "requestCapabilities", "lpp.requestCapabilities", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_provideCapabilities, + { "provideCapabilities", "lpp.provideCapabilities", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_requestAssistanceData, + { "requestAssistanceData", "lpp.requestAssistanceData", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_provideAssistanceData, + { "provideAssistanceData", "lpp.provideAssistanceData", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_requestLocationInformation, + { "requestLocationInformation", "lpp.requestLocationInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_provideLocationInformation, + { "provideLocationInformation", "lpp.provideLocationInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_abort, + { "abort", "lpp.abort", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_error, + { "error", "lpp.error", + FT_UINT32, BASE_DEC, VALS(lpp_Error_vals), 0, + NULL, HFILL }}, + { &hf_lpp_spare7, + { "spare7", "lpp.spare7", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_spare6, + { "spare6", "lpp.spare6", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_spare5, + { "spare5", "lpp.spare5", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_spare4, + { "spare4", "lpp.spare4", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_spare3, + { "spare3", "lpp.spare3", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_spare2, + { "spare2", "lpp.spare2", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_spare1, + { "spare1", "lpp.spare1", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_spare0, + { "spare0", "lpp.spare0", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_messageClassExtension, + { "messageClassExtension", "lpp.messageClassExtension", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_initiator, + { "initiator", "lpp.initiator", + FT_UINT32, BASE_DEC, VALS(lpp_Initiator_vals), 0, + NULL, HFILL }}, + { &hf_lpp_transactionNumber, + { "transactionNumber", "lpp.transactionNumber", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_criticalExtensions, + { "criticalExtensions", "lpp.criticalExtensions", + FT_UINT32, BASE_DEC, VALS(lpp_T_criticalExtensions_vals), 0, + NULL, HFILL }}, + { &hf_lpp_c1_01, + { "c1", "lpp.c1", + FT_UINT32, BASE_DEC, VALS(lpp_T_c1_01_vals), 0, + "T_c1_01", HFILL }}, + { &hf_lpp_requestCapabilities_r9, + { "requestCapabilities-r9", "lpp.requestCapabilities_r9", + FT_NONE, BASE_NONE, NULL, 0, + "RequestCapabilities_r9_IEs", HFILL }}, + { &hf_lpp_criticalExtensionsFuture, + { "criticalExtensionsFuture", "lpp.criticalExtensionsFuture", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_commonIEsRequestCapabilities, + { "commonIEsRequestCapabilities", "lpp.commonIEsRequestCapabilities", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_a_gnss_RequestCapabilities, + { "a-gnss-RequestCapabilities", "lpp.a_gnss_RequestCapabilities", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_otdoa_RequestCapabilities, + { "otdoa-RequestCapabilities", "lpp.otdoa_RequestCapabilities", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ecid_RequestCapabilities, + { "ecid-RequestCapabilities", "lpp.ecid_RequestCapabilities", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_epdu_RequestCapabilities, + { "epdu-RequestCapabilities", "lpp.epdu_RequestCapabilities", + FT_UINT32, BASE_DEC, NULL, 0, + "EPDU_Sequence", HFILL }}, + { &hf_lpp_criticalExtensions_01, + { "criticalExtensions", "lpp.criticalExtensions", + FT_UINT32, BASE_DEC, VALS(lpp_T_criticalExtensions_01_vals), 0, + "T_criticalExtensions_01", HFILL }}, + { &hf_lpp_c1_02, + { "c1", "lpp.c1", + FT_UINT32, BASE_DEC, VALS(lpp_T_c1_02_vals), 0, + "T_c1_02", HFILL }}, + { &hf_lpp_provideCapabilities_r9, + { "provideCapabilities-r9", "lpp.provideCapabilities_r9", + FT_NONE, BASE_NONE, NULL, 0, + "ProvideCapabilities_r9_IEs", HFILL }}, + { &hf_lpp_criticalExtensionsFuture_01, + { "criticalExtensionsFuture", "lpp.criticalExtensionsFuture", + FT_NONE, BASE_NONE, NULL, 0, + "T_criticalExtensionsFuture_01", HFILL }}, + { &hf_lpp_commonIEsProvideCapabilities, + { "commonIEsProvideCapabilities", "lpp.commonIEsProvideCapabilities", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_a_gnss_ProvideCapabilities, + { "a-gnss-ProvideCapabilities", "lpp.a_gnss_ProvideCapabilities", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_otdoa_ProvideCapabilities, + { "otdoa-ProvideCapabilities", "lpp.otdoa_ProvideCapabilities", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ecid_ProvideCapabilities, + { "ecid-ProvideCapabilities", "lpp.ecid_ProvideCapabilities", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_epdu_ProvideCapabilities, + { "epdu-ProvideCapabilities", "lpp.epdu_ProvideCapabilities", + FT_UINT32, BASE_DEC, NULL, 0, + "EPDU_Sequence", HFILL }}, + { &hf_lpp_criticalExtensions_02, + { "criticalExtensions", "lpp.criticalExtensions", + FT_UINT32, BASE_DEC, VALS(lpp_T_criticalExtensions_02_vals), 0, + "T_criticalExtensions_02", HFILL }}, + { &hf_lpp_c1_03, + { "c1", "lpp.c1", + FT_UINT32, BASE_DEC, VALS(lpp_T_c1_03_vals), 0, + "T_c1_03", HFILL }}, + { &hf_lpp_requestAssistanceData_r9, + { "requestAssistanceData-r9", "lpp.requestAssistanceData_r9", + FT_NONE, BASE_NONE, NULL, 0, + "RequestAssistanceData_r9_IEs", HFILL }}, + { &hf_lpp_criticalExtensionsFuture_02, + { "criticalExtensionsFuture", "lpp.criticalExtensionsFuture", + FT_NONE, BASE_NONE, NULL, 0, + "T_criticalExtensionsFuture_02", HFILL }}, + { &hf_lpp_commonIEsRequestAssistanceData, + { "commonIEsRequestAssistanceData", "lpp.commonIEsRequestAssistanceData", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_a_gnss_RequestAssistanceData, + { "a-gnss-RequestAssistanceData", "lpp.a_gnss_RequestAssistanceData", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_otdoa_RequestAssistanceData, + { "otdoa-RequestAssistanceData", "lpp.otdoa_RequestAssistanceData", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_epdu_RequestAssistanceData, + { "epdu-RequestAssistanceData", "lpp.epdu_RequestAssistanceData", + FT_UINT32, BASE_DEC, NULL, 0, + "EPDU_Sequence", HFILL }}, + { &hf_lpp_criticalExtensions_03, + { "criticalExtensions", "lpp.criticalExtensions", + FT_UINT32, BASE_DEC, VALS(lpp_T_criticalExtensions_03_vals), 0, + "T_criticalExtensions_03", HFILL }}, + { &hf_lpp_c1_04, + { "c1", "lpp.c1", + FT_UINT32, BASE_DEC, VALS(lpp_T_c1_04_vals), 0, + "T_c1_04", HFILL }}, + { &hf_lpp_provideAssistanceData_r9, + { "provideAssistanceData-r9", "lpp.provideAssistanceData_r9", + FT_NONE, BASE_NONE, NULL, 0, + "ProvideAssistanceData_r9_IEs", HFILL }}, + { &hf_lpp_criticalExtensionsFuture_03, + { "criticalExtensionsFuture", "lpp.criticalExtensionsFuture", + FT_NONE, BASE_NONE, NULL, 0, + "T_criticalExtensionsFuture_03", HFILL }}, + { &hf_lpp_commonIEsProvideAssistanceData, + { "commonIEsProvideAssistanceData", "lpp.commonIEsProvideAssistanceData", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_a_gnss_ProvideAssistanceData, + { "a-gnss-ProvideAssistanceData", "lpp.a_gnss_ProvideAssistanceData", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_otdoa_ProvideAssistanceData, + { "otdoa-ProvideAssistanceData", "lpp.otdoa_ProvideAssistanceData", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_epdu_Provide_Assistance_Data, + { "epdu-Provide-Assistance-Data", "lpp.epdu_Provide_Assistance_Data", + FT_UINT32, BASE_DEC, NULL, 0, + "EPDU_Sequence", HFILL }}, + { &hf_lpp_criticalExtensions_04, + { "criticalExtensions", "lpp.criticalExtensions", + FT_UINT32, BASE_DEC, VALS(lpp_T_criticalExtensions_04_vals), 0, + "T_criticalExtensions_04", HFILL }}, + { &hf_lpp_c1_05, + { "c1", "lpp.c1", + FT_UINT32, BASE_DEC, VALS(lpp_T_c1_05_vals), 0, + "T_c1_05", HFILL }}, + { &hf_lpp_requestLocationInformation_r9, + { "requestLocationInformation-r9", "lpp.requestLocationInformation_r9", + FT_NONE, BASE_NONE, NULL, 0, + "RequestLocationInformation_r9_IEs", HFILL }}, + { &hf_lpp_criticalExtensionsFuture_04, + { "criticalExtensionsFuture", "lpp.criticalExtensionsFuture", + FT_NONE, BASE_NONE, NULL, 0, + "T_criticalExtensionsFuture_04", HFILL }}, + { &hf_lpp_commonIEsRequestLocationInformation, + { "commonIEsRequestLocationInformation", "lpp.commonIEsRequestLocationInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_a_gnss_RequestLocationInformation, + { "a-gnss-RequestLocationInformation", "lpp.a_gnss_RequestLocationInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_otdoa_RequestLocationInformation, + { "otdoa-RequestLocationInformation", "lpp.otdoa_RequestLocationInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ecid_RequestLocationInformation, + { "ecid-RequestLocationInformation", "lpp.ecid_RequestLocationInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_epdu_RequestLocationInformation, + { "epdu-RequestLocationInformation", "lpp.epdu_RequestLocationInformation", + FT_UINT32, BASE_DEC, NULL, 0, + "EPDU_Sequence", HFILL }}, + { &hf_lpp_criticalExtensions_05, + { "criticalExtensions", "lpp.criticalExtensions", + FT_UINT32, BASE_DEC, VALS(lpp_T_criticalExtensions_05_vals), 0, + "T_criticalExtensions_05", HFILL }}, + { &hf_lpp_c1_06, + { "c1", "lpp.c1", + FT_UINT32, BASE_DEC, VALS(lpp_T_c1_06_vals), 0, + "T_c1_06", HFILL }}, + { &hf_lpp_provideLocationInformation_r9, + { "provideLocationInformation-r9", "lpp.provideLocationInformation_r9", + FT_NONE, BASE_NONE, NULL, 0, + "ProvideLocationInformation_r9_IEs", HFILL }}, + { &hf_lpp_criticalExtensionsFuture_05, + { "criticalExtensionsFuture", "lpp.criticalExtensionsFuture", + FT_NONE, BASE_NONE, NULL, 0, + "T_criticalExtensionsFuture_05", HFILL }}, + { &hf_lpp_commonIEsProvideLocationInformation, + { "commonIEsProvideLocationInformation", "lpp.commonIEsProvideLocationInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_a_gnss_ProvideLocationInformation, + { "a-gnss-ProvideLocationInformation", "lpp.a_gnss_ProvideLocationInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_otdoa_ProvideLocationInformation, + { "otdoa-ProvideLocationInformation", "lpp.otdoa_ProvideLocationInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ecid_ProvideLocationInformation, + { "ecid-ProvideLocationInformation", "lpp.ecid_ProvideLocationInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_epdu_ProvideLocationInformation, + { "epdu-ProvideLocationInformation", "lpp.epdu_ProvideLocationInformation", + FT_UINT32, BASE_DEC, NULL, 0, + "EPDU_Sequence", HFILL }}, + { &hf_lpp_criticalExtensions_06, + { "criticalExtensions", "lpp.criticalExtensions", + FT_UINT32, BASE_DEC, VALS(lpp_T_criticalExtensions_06_vals), 0, + "T_criticalExtensions_06", HFILL }}, + { &hf_lpp_c1_07, + { "c1", "lpp.c1", + FT_UINT32, BASE_DEC, VALS(lpp_T_c1_07_vals), 0, + "T_c1_07", HFILL }}, + { &hf_lpp_abort_r9, + { "abort-r9", "lpp.abort_r9", + FT_NONE, BASE_NONE, NULL, 0, + "Abort_r9_IEs", HFILL }}, + { &hf_lpp_criticalExtensionsFuture_06, + { "criticalExtensionsFuture", "lpp.criticalExtensionsFuture", + FT_NONE, BASE_NONE, NULL, 0, + "T_criticalExtensionsFuture_06", HFILL }}, + { &hf_lpp_commonIEsAbort, + { "commonIEsAbort", "lpp.commonIEsAbort", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_epdu_Abort, + { "epdu-Abort", "lpp.epdu_Abort", + FT_UINT32, BASE_DEC, NULL, 0, + "EPDU_Sequence", HFILL }}, + { &hf_lpp_error_r9, + { "error-r9", "lpp.error_r9", + FT_NONE, BASE_NONE, NULL, 0, + "Error_r9_IEs", HFILL }}, + { &hf_lpp_criticalExtensionsFuture_07, + { "criticalExtensionsFuture", "lpp.criticalExtensionsFuture", + FT_NONE, BASE_NONE, NULL, 0, + "T_criticalExtensionsFuture_07", HFILL }}, + { &hf_lpp_commonIEsError, + { "commonIEsError", "lpp.commonIEsError", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_epdu_Error, + { "epdu-Error", "lpp.epdu_Error", + FT_UINT32, BASE_DEC, NULL, 0, + "EPDU_Sequence", HFILL }}, + { &hf_lpp_accessTypes, + { "accessTypes", "lpp.accessTypes", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_plmn_Identity, + { "plmn-Identity", "lpp.plmn_Identity", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_mcc, + { "mcc", "lpp.mcc", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_mcc_item, + { "mcc item", "lpp.mcc_item", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_9", HFILL }}, + { &hf_lpp_mnc, + { "mnc", "lpp.mnc", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_mnc_item, + { "mnc item", "lpp.mnc_item", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_9", HFILL }}, + { &hf_lpp_cellIdentity, + { "cellIdentity", "lpp.cellIdentity", + FT_UINT32, BASE_DEC, VALS(lpp_T_cellIdentity_vals), 0, + NULL, HFILL }}, + { &hf_lpp_eutra, + { "eutra", "lpp.eutra", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_28", HFILL }}, + { &hf_lpp_utra, + { "utra", "lpp.utra", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_32", HFILL }}, + { &hf_lpp_plmn_Identity_01, + { "plmn-Identity", "lpp.plmn_Identity", + FT_NONE, BASE_NONE, NULL, 0, + "T_plmn_Identity_01", HFILL }}, + { &hf_lpp_mcc_01, + { "mcc", "lpp.mcc", + FT_UINT32, BASE_DEC, NULL, 0, + "T_mcc_01", HFILL }}, + { &hf_lpp_mnc_01, + { "mnc", "lpp.mnc", + FT_UINT32, BASE_DEC, NULL, 0, + "T_mnc_01", HFILL }}, + { &hf_lpp_locationAreaCode, + { "locationAreaCode", "lpp.locationAreaCode", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_16", HFILL }}, + { &hf_lpp_cellIdentity_01, + { "cellIdentity", "lpp.cellIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_16", HFILL }}, + { &hf_lpp_mcc_02, + { "mcc", "lpp.mcc", + FT_UINT32, BASE_DEC, NULL, 0, + "T_mcc_02", HFILL }}, + { &hf_lpp_mnc_02, + { "mnc", "lpp.mnc", + FT_UINT32, BASE_DEC, NULL, 0, + "T_mnc_02", HFILL }}, + { &hf_lpp_cellidentity, + { "cellidentity", "lpp.cellidentity", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_28", HFILL }}, + { &hf_lpp_latitudeSign, + { "latitudeSign", "lpp.latitudeSign", + FT_UINT32, BASE_DEC, VALS(lpp_T_latitudeSign_vals), 0, + NULL, HFILL }}, + { &hf_lpp_degreesLatitude, + { "degreesLatitude", "lpp.degreesLatitude", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_8388607", HFILL }}, + { &hf_lpp_degreesLongitude, + { "degreesLongitude", "lpp.degreesLongitude", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_latitudeSign_01, + { "latitudeSign", "lpp.latitudeSign", + FT_UINT32, BASE_DEC, VALS(lpp_T_latitudeSign_01_vals), 0, + "T_latitudeSign_01", HFILL }}, + { &hf_lpp_uncertainty, + { "uncertainty", "lpp.uncertainty", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_latitudeSign_02, + { "latitudeSign", "lpp.latitudeSign", + FT_UINT32, BASE_DEC, VALS(lpp_T_latitudeSign_02_vals), 0, + "T_latitudeSign_02", HFILL }}, + { &hf_lpp_uncertaintySemiMajor, + { "uncertaintySemiMajor", "lpp.uncertaintySemiMajor", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_uncertaintySemiMinor, + { "uncertaintySemiMinor", "lpp.uncertaintySemiMinor", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_orientationMajorAxis, + { "orientationMajorAxis", "lpp.orientationMajorAxis", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_179", HFILL }}, + { &hf_lpp_confidence, + { "confidence", "lpp.confidence", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_100", HFILL }}, + { &hf_lpp_latitudeSign_03, + { "latitudeSign", "lpp.latitudeSign", + FT_UINT32, BASE_DEC, VALS(lpp_T_latitudeSign_03_vals), 0, + "T_latitudeSign_03", HFILL }}, + { &hf_lpp_altitudeDirection, + { "altitudeDirection", "lpp.altitudeDirection", + FT_UINT32, BASE_DEC, VALS(lpp_T_altitudeDirection_vals), 0, + NULL, HFILL }}, + { &hf_lpp_altitude, + { "altitude", "lpp.altitude", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_32767", HFILL }}, + { &hf_lpp_latitudeSign_04, + { "latitudeSign", "lpp.latitudeSign", + FT_UINT32, BASE_DEC, VALS(lpp_T_latitudeSign_04_vals), 0, + "T_latitudeSign_04", HFILL }}, + { &hf_lpp_altitudeDirection_01, + { "altitudeDirection", "lpp.altitudeDirection", + FT_UINT32, BASE_DEC, VALS(lpp_T_altitudeDirection_01_vals), 0, + "T_altitudeDirection_01", HFILL }}, + { &hf_lpp_uncertaintyAltitude, + { "uncertaintyAltitude", "lpp.uncertaintyAltitude", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_latitudeSign_05, + { "latitudeSign", "lpp.latitudeSign", + FT_UINT32, BASE_DEC, VALS(lpp_T_latitudeSign_05_vals), 0, + "T_latitudeSign_05", HFILL }}, + { &hf_lpp_innerRadius, + { "innerRadius", "lpp.innerRadius", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_65535", HFILL }}, + { &hf_lpp_uncertaintyRadius, + { "uncertaintyRadius", "lpp.uncertaintyRadius", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_offsetAngle, + { "offsetAngle", "lpp.offsetAngle", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_179", HFILL }}, + { &hf_lpp_includedAngle, + { "includedAngle", "lpp.includedAngle", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_179", HFILL }}, + { &hf_lpp_EPDU_Sequence_item, + { "EPDU", "lpp.EPDU", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ePDU_Identifier, + { "ePDU-Identifier", "lpp.ePDU_Identifier", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ePDU_Body, + { "ePDU-Body", "lpp.ePDU_Body", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ePDU_ID, + { "ePDU-ID", "lpp.ePDU_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ePDU_Name, + { "ePDU-Name", "lpp.ePDU_Name", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_bearing, + { "bearing", "lpp.bearing", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_359", HFILL }}, + { &hf_lpp_horizontalSpeed, + { "horizontalSpeed", "lpp.horizontalSpeed", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_2047", HFILL }}, + { &hf_lpp_verticalDirection, + { "verticalDirection", "lpp.verticalDirection", + FT_UINT32, BASE_DEC, VALS(lpp_T_verticalDirection_vals), 0, + NULL, HFILL }}, + { &hf_lpp_verticalSpeed, + { "verticalSpeed", "lpp.verticalSpeed", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_uncertaintySpeed, + { "uncertaintySpeed", "lpp.uncertaintySpeed", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_verticalDirection_01, + { "verticalDirection", "lpp.verticalDirection", + FT_UINT32, BASE_DEC, VALS(lpp_T_verticalDirection_01_vals), 0, + "T_verticalDirection_01", HFILL }}, + { &hf_lpp_horizontalUncertaintySpeed, + { "horizontalUncertaintySpeed", "lpp.horizontalUncertaintySpeed", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_verticalUncertaintySpeed, + { "verticalUncertaintySpeed", "lpp.verticalUncertaintySpeed", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_ellipsoidPoint, + { "ellipsoidPoint", "lpp.ellipsoidPoint", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_ellipsoidPointWithUncertaintyCircle, + { "ellipsoidPointWithUncertaintyCircle", "lpp.ellipsoidPointWithUncertaintyCircle", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_ellipsoidPointWithUncertaintyEllipse, + { "ellipsoidPointWithUncertaintyEllipse", "lpp.ellipsoidPointWithUncertaintyEllipse", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_polygon, + { "polygon", "lpp.polygon", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_ellipsoidPointWithAltitude, + { "ellipsoidPointWithAltitude", "lpp.ellipsoidPointWithAltitude", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_ellipsoidPointWithAltitudeAndUncertaintyEllipsoid, + { "ellipsoidPointWithAltitudeAndUncertaintyEllipsoid", "lpp.ellipsoidPointWithAltitudeAndUncertaintyEllipsoid", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_ellipsoidArc, + { "ellipsoidArc", "lpp.ellipsoidArc", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_Polygon_item, + { "PolygonPoints", "lpp.PolygonPoints", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_latitudeSign_06, + { "latitudeSign", "lpp.latitudeSign", + FT_UINT32, BASE_DEC, VALS(lpp_T_latitudeSign_06_vals), 0, + "T_latitudeSign_06", HFILL }}, + { &hf_lpp_posModes, + { "posModes", "lpp.posModes", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_horizontalVelocity, + { "horizontalVelocity", "lpp.horizontalVelocity", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_horizontalWithVerticalVelocity, + { "horizontalWithVerticalVelocity", "lpp.horizontalWithVerticalVelocity", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_horizontalVelocityWithUncertainty, + { "horizontalVelocityWithUncertainty", "lpp.horizontalVelocityWithUncertainty", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_horizontalWithVerticalVelocityAndUncertainty, + { "horizontalWithVerticalVelocityAndUncertainty", "lpp.horizontalWithVerticalVelocityAndUncertainty", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_servingCellID, + { "servingCellID", "lpp.servingCellID", + FT_NONE, BASE_NONE, NULL, 0, + "ECGI", HFILL }}, + { &hf_lpp_locationInformationType, + { "locationInformationType", "lpp.locationInformationType", + FT_UINT32, BASE_DEC, VALS(lpp_LocationInformationType_vals), 0, + NULL, HFILL }}, + { &hf_lpp_triggeredReporting, + { "triggeredReporting", "lpp.triggeredReporting", + FT_NONE, BASE_NONE, NULL, 0, + "TriggeredReportingCriteria", HFILL }}, + { &hf_lpp_periodicalReporting, + { "periodicalReporting", "lpp.periodicalReporting", + FT_NONE, BASE_NONE, NULL, 0, + "PeriodicalReportingCriteria", HFILL }}, + { &hf_lpp_additionalInformation, + { "additionalInformation", "lpp.additionalInformation", + FT_UINT32, BASE_DEC, VALS(lpp_AdditionalInformation_vals), 0, + NULL, HFILL }}, + { &hf_lpp_qos, + { "qos", "lpp.qos", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_environment, + { "environment", "lpp.environment", + FT_UINT32, BASE_DEC, VALS(lpp_Environment_vals), 0, + NULL, HFILL }}, + { &hf_lpp_locationCoordinateTypes, + { "locationCoordinateTypes", "lpp.locationCoordinateTypes", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_velocityTypes, + { "velocityTypes", "lpp.velocityTypes", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_reportingAmount, + { "reportingAmount", "lpp.reportingAmount", + FT_UINT32, BASE_DEC, VALS(lpp_T_reportingAmount_vals), 0, + NULL, HFILL }}, + { &hf_lpp_reportingInterval, + { "reportingInterval", "lpp.reportingInterval", + FT_UINT32, BASE_DEC, VALS(lpp_T_reportingInterval_vals), 0, + NULL, HFILL }}, + { &hf_lpp_cellChange, + { "cellChange", "lpp.cellChange", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_reportingDuration, + { "reportingDuration", "lpp.reportingDuration", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_horizontalAccuracy, + { "horizontalAccuracy", "lpp.horizontalAccuracy", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_verticalCoordinateRequest, + { "verticalCoordinateRequest", "lpp.verticalCoordinateRequest", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_verticalAccuracy, + { "verticalAccuracy", "lpp.verticalAccuracy", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_responseTime, + { "responseTime", "lpp.responseTime", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_velocityRequest, + { "velocityRequest", "lpp.velocityRequest", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_accuracy, + { "accuracy", "lpp.accuracy", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_time, + { "time", "lpp.time", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_128", HFILL }}, + { &hf_lpp_locationEstimate, + { "locationEstimate", "lpp.locationEstimate", + FT_UINT32, BASE_DEC, VALS(lpp_LocationCoordinates_vals), 0, + "LocationCoordinates", HFILL }}, + { &hf_lpp_velocityEstimate, + { "velocityEstimate", "lpp.velocityEstimate", + FT_UINT32, BASE_DEC, VALS(lpp_Velocity_vals), 0, + "Velocity", HFILL }}, + { &hf_lpp_locationError, + { "locationError", "lpp.locationError", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ellipsoidPoint_01, + { "ellipsoidPoint", "lpp.ellipsoidPoint", + FT_NONE, BASE_NONE, NULL, 0, + "Ellipsoid_Point", HFILL }}, + { &hf_lpp_ellipsoidPointWithUncertaintyCircle_01, + { "ellipsoidPointWithUncertaintyCircle", "lpp.ellipsoidPointWithUncertaintyCircle", + FT_NONE, BASE_NONE, NULL, 0, + "Ellipsoid_PointWithUncertaintyCircle", HFILL }}, + { &hf_lpp_ellipsoidPointWithUncertaintyEllipse_01, + { "ellipsoidPointWithUncertaintyEllipse", "lpp.ellipsoidPointWithUncertaintyEllipse", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_polygon_01, + { "polygon", "lpp.polygon", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ellipsoidPointWithAltitude_01, + { "ellipsoidPointWithAltitude", "lpp.ellipsoidPointWithAltitude", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ellipsoidPointWithAltitudeAndUncertaintyEllipsoid_01, + { "ellipsoidPointWithAltitudeAndUncertaintyEllipsoid", "lpp.ellipsoidPointWithAltitudeAndUncertaintyEllipsoid", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ellipsoidArc_01, + { "ellipsoidArc", "lpp.ellipsoidArc", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_horizontalVelocity_01, + { "horizontalVelocity", "lpp.horizontalVelocity", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_horizontalWithVerticalVelocity_01, + { "horizontalWithVerticalVelocity", "lpp.horizontalWithVerticalVelocity", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_horizontalVelocityWithUncertainty_01, + { "horizontalVelocityWithUncertainty", "lpp.horizontalVelocityWithUncertainty", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_horizontalWithVerticalVelocityAndUncertainty_01, + { "horizontalWithVerticalVelocityAndUncertainty", "lpp.horizontalWithVerticalVelocityAndUncertainty", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_locationfailurecause, + { "locationfailurecause", "lpp.locationfailurecause", + FT_UINT32, BASE_DEC, VALS(lpp_LocationFailureCause_vals), 0, + NULL, HFILL }}, + { &hf_lpp_abortCause, + { "abortCause", "lpp.abortCause", + FT_UINT32, BASE_DEC, VALS(lpp_T_abortCause_vals), 0, + NULL, HFILL }}, + { &hf_lpp_errorCause, + { "errorCause", "lpp.errorCause", + FT_UINT32, BASE_DEC, VALS(lpp_T_errorCause_vals), 0, + NULL, HFILL }}, + { &hf_lpp_otdoa_ReferenceCellInfo, + { "otdoa-ReferenceCellInfo", "lpp.otdoa_ReferenceCellInfo", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_otdoa_NeighbourCellInfo, + { "otdoa-NeighbourCellInfo", "lpp.otdoa_NeighbourCellInfo", + FT_UINT32, BASE_DEC, NULL, 0, + "OTDOA_NeighbourCellInfoList", HFILL }}, + { &hf_lpp_otdoa_Error, + { "otdoa-Error", "lpp.otdoa_Error", + FT_UINT32, BASE_DEC, VALS(lpp_OTDOA_Error_vals), 0, + NULL, HFILL }}, + { &hf_lpp_physCellId, + { "physCellId", "lpp.physCellId", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_503", HFILL }}, + { &hf_lpp_cellGlobalId, + { "cellGlobalId", "lpp.cellGlobalId", + FT_NONE, BASE_NONE, NULL, 0, + "ECGI", HFILL }}, + { &hf_lpp_earfcnRef, + { "earfcnRef", "lpp.earfcnRef", + FT_UINT32, BASE_DEC, NULL, 0, + "ARFCN_ValueEUTRA", HFILL }}, + { &hf_lpp_antennaPortConfig, + { "antennaPortConfig", "lpp.antennaPortConfig", + FT_UINT32, BASE_DEC, VALS(lpp_T_antennaPortConfig_vals), 0, + NULL, HFILL }}, + { &hf_lpp_cpLength, + { "cpLength", "lpp.cpLength", + FT_UINT32, BASE_DEC, VALS(lpp_T_cpLength_vals), 0, + NULL, HFILL }}, + { &hf_lpp_prsInfo, + { "prsInfo", "lpp.prsInfo", + FT_NONE, BASE_NONE, NULL, 0, + "PRS_Info", HFILL }}, + { &hf_lpp_prs_Bandwidth, + { "prs-Bandwidth", "lpp.prs_Bandwidth", + FT_UINT32, BASE_DEC, VALS(lpp_T_prs_Bandwidth_vals), 0, + NULL, HFILL }}, + { &hf_lpp_prs_ConfigurationIndex, + { "prs-ConfigurationIndex", "lpp.prs_ConfigurationIndex", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4095", HFILL }}, + { &hf_lpp_numDL_Frames, + { "numDL-Frames", "lpp.numDL_Frames", + FT_UINT32, BASE_DEC, VALS(lpp_T_numDL_Frames_vals), 0, + NULL, HFILL }}, + { &hf_lpp_prs_MutingInfo_r9, + { "prs-MutingInfo-r9", "lpp.prs_MutingInfo_r9", + FT_UINT32, BASE_DEC, VALS(lpp_T_prs_MutingInfo_r9_vals), 0, + NULL, HFILL }}, + { &hf_lpp_po2_r9, + { "po2-r9", "lpp.po2_r9", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_2", HFILL }}, + { &hf_lpp_po4_r9, + { "po4-r9", "lpp.po4_r9", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_4", HFILL }}, + { &hf_lpp_po8_r9, + { "po8-r9", "lpp.po8_r9", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_8", HFILL }}, + { &hf_lpp_po16_r9, + { "po16-r9", "lpp.po16_r9", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_16", HFILL }}, + { &hf_lpp_OTDOA_NeighbourCellInfoList_item, + { "OTDOA-NeighbourFreqInfo", "lpp.OTDOA_NeighbourFreqInfo", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_OTDOA_NeighbourFreqInfo_item, + { "OTDOA-NeighbourCellInfoElement", "lpp.OTDOA_NeighbourCellInfoElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_earfcn, + { "earfcn", "lpp.earfcn", + FT_UINT32, BASE_DEC, NULL, 0, + "ARFCN_ValueEUTRA", HFILL }}, + { &hf_lpp_cpLength_01, + { "cpLength", "lpp.cpLength", + FT_UINT32, BASE_DEC, VALS(lpp_T_cpLength_01_vals), 0, + "T_cpLength_01", HFILL }}, + { &hf_lpp_antennaPortConfig_01, + { "antennaPortConfig", "lpp.antennaPortConfig", + FT_UINT32, BASE_DEC, VALS(lpp_T_antennaPortConfig_01_vals), 0, + "T_antennaPortConfig_01", HFILL }}, + { &hf_lpp_slotNumberOffset, + { "slotNumberOffset", "lpp.slotNumberOffset", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_19", HFILL }}, + { &hf_lpp_prs_SubframeOffset, + { "prs-SubframeOffset", "lpp.prs_SubframeOffset", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1279", HFILL }}, + { &hf_lpp_expectedRSTD, + { "expectedRSTD", "lpp.expectedRSTD", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_16383", HFILL }}, + { &hf_lpp_expectedRSTD_Uncertainty, + { "expectedRSTD-Uncertainty", "lpp.expectedRSTD_Uncertainty", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1023", HFILL }}, + { &hf_lpp_otdoaSignalMeasurementInformation, + { "otdoaSignalMeasurementInformation", "lpp.otdoaSignalMeasurementInformation", + FT_NONE, BASE_NONE, NULL, 0, + "OTDOA_SignalMeasurementInformation", HFILL }}, + { &hf_lpp_systemFrameNumber, + { "systemFrameNumber", "lpp.systemFrameNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_10", HFILL }}, + { &hf_lpp_physCellIdRef, + { "physCellIdRef", "lpp.physCellIdRef", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_503", HFILL }}, + { &hf_lpp_cellGlobalIdRef, + { "cellGlobalIdRef", "lpp.cellGlobalIdRef", + FT_NONE, BASE_NONE, NULL, 0, + "ECGI", HFILL }}, + { &hf_lpp_referenceQuality, + { "referenceQuality", "lpp.referenceQuality", + FT_NONE, BASE_NONE, NULL, 0, + "OTDOA_MeasQuality", HFILL }}, + { &hf_lpp_neighbourMeasurementList, + { "neighbourMeasurementList", "lpp.neighbourMeasurementList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_NeighbourMeasurementList_item, + { "NeighbourMeasurementElement", "lpp.NeighbourMeasurementElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_physCellIdNeighbor, + { "physCellIdNeighbor", "lpp.physCellIdNeighbor", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_503", HFILL }}, + { &hf_lpp_cellGlobalIdNeighbour, + { "cellGlobalIdNeighbour", "lpp.cellGlobalIdNeighbour", + FT_NONE, BASE_NONE, NULL, 0, + "ECGI", HFILL }}, + { &hf_lpp_earfcnNeighbour, + { "earfcnNeighbour", "lpp.earfcnNeighbour", + FT_UINT32, BASE_DEC, NULL, 0, + "ARFCN_ValueEUTRA", HFILL }}, + { &hf_lpp_rstd, + { "rstd", "lpp.rstd", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_12711", HFILL }}, + { &hf_lpp_rstd_Quality, + { "rstd-Quality", "lpp.rstd_Quality", + FT_NONE, BASE_NONE, NULL, 0, + "OTDOA_MeasQuality", HFILL }}, + { &hf_lpp_error_Resolution, + { "error-Resolution", "lpp.error_Resolution", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_2", HFILL }}, + { &hf_lpp_error_Value, + { "error-Value", "lpp.error_Value", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_5", HFILL }}, + { &hf_lpp_error_NumSamples, + { "error-NumSamples", "lpp.error_NumSamples", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_3", HFILL }}, + { &hf_lpp_assistanceAvailability, + { "assistanceAvailability", "lpp.assistanceAvailability", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_otdoa_Mode, + { "otdoa-Mode", "lpp.otdoa_Mode", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_supportedBandListEUTRA, + { "supportedBandListEUTRA", "lpp.supportedBandListEUTRA", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_maxBands_OF_SupportedBandEUTRA", HFILL }}, + { &hf_lpp_supportedBandListEUTRA_item, + { "SupportedBandEUTRA", "lpp.SupportedBandEUTRA", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_bandEUTRA, + { "bandEUTRA", "lpp.bandEUTRA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_64", HFILL }}, + { &hf_lpp_locationServerErrorCauses, + { "locationServerErrorCauses", "lpp.locationServerErrorCauses", + FT_NONE, BASE_NONE, NULL, 0, + "OTDOA_LocationServerErrorCauses", HFILL }}, + { &hf_lpp_targetDeviceErrorCauses, + { "targetDeviceErrorCauses", "lpp.targetDeviceErrorCauses", + FT_NONE, BASE_NONE, NULL, 0, + "OTDOA_TargetDeviceErrorCauses", HFILL }}, + { &hf_lpp_cause, + { "cause", "lpp.cause", + FT_UINT32, BASE_DEC, VALS(lpp_T_cause_vals), 0, + NULL, HFILL }}, + { &hf_lpp_cause_01, + { "cause", "lpp.cause", + FT_UINT32, BASE_DEC, VALS(lpp_T_cause_01_vals), 0, + "T_cause_01", HFILL }}, + { &hf_lpp_gnss_CommonAssistData, + { "gnss-CommonAssistData", "lpp.gnss_CommonAssistData", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_GenericAssistData, + { "gnss-GenericAssistData", "lpp.gnss_GenericAssistData", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_Error, + { "gnss-Error", "lpp.gnss_Error", + FT_UINT32, BASE_DEC, VALS(lpp_A_GNSS_Error_vals), 0, + "A_GNSS_Error", HFILL }}, + { &hf_lpp_gnss_ReferenceTime, + { "gnss-ReferenceTime", "lpp.gnss_ReferenceTime", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_ReferenceLocation, + { "gnss-ReferenceLocation", "lpp.gnss_ReferenceLocation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_IonosphericModel, + { "gnss-IonosphericModel", "lpp.gnss_IonosphericModel", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_EarthOrientationParameters, + { "gnss-EarthOrientationParameters", "lpp.gnss_EarthOrientationParameters", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_GenericAssistData_item, + { "GNSS-GenericAssistDataElement", "lpp.GNSS_GenericAssistDataElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_ID, + { "gnss-ID", "lpp.gnss_ID", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_sbas_ID, + { "sbas-ID", "lpp.sbas_ID", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_TimeModels, + { "gnss-TimeModels", "lpp.gnss_TimeModels", + FT_UINT32, BASE_DEC, NULL, 0, + "GNSS_TimeModelList", HFILL }}, + { &hf_lpp_gnss_DifferentialCorrections, + { "gnss-DifferentialCorrections", "lpp.gnss_DifferentialCorrections", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_NavigationModel, + { "gnss-NavigationModel", "lpp.gnss_NavigationModel", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_RealTimeIntegrity, + { "gnss-RealTimeIntegrity", "lpp.gnss_RealTimeIntegrity", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_DataBitAssistance, + { "gnss-DataBitAssistance", "lpp.gnss_DataBitAssistance", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_AcquisitionAssistance, + { "gnss-AcquisitionAssistance", "lpp.gnss_AcquisitionAssistance", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_Almanac, + { "gnss-Almanac", "lpp.gnss_Almanac", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_UTC_Model, + { "gnss-UTC-Model", "lpp.gnss_UTC_Model", + FT_UINT32, BASE_DEC, VALS(lpp_GNSS_UTC_Model_vals), 0, + NULL, HFILL }}, + { &hf_lpp_gnss_AuxiliaryInformation, + { "gnss-AuxiliaryInformation", "lpp.gnss_AuxiliaryInformation", + FT_UINT32, BASE_DEC, VALS(lpp_GNSS_AuxiliaryInformation_vals), 0, + NULL, HFILL }}, + { &hf_lpp_gnss_SystemTime, + { "gnss-SystemTime", "lpp.gnss_SystemTime", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_referenceTimeUnc, + { "referenceTimeUnc", "lpp.referenceTimeUnc", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_gnss_ReferenceTimeForCells, + { "gnss-ReferenceTimeForCells", "lpp.gnss_ReferenceTimeForCells", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_16_OF_GNSS_ReferenceTimeForOneCell", HFILL }}, + { &hf_lpp_gnss_ReferenceTimeForCells_item, + { "GNSS-ReferenceTimeForOneCell", "lpp.GNSS_ReferenceTimeForOneCell", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_networkTime, + { "networkTime", "lpp.networkTime", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_bsAlign, + { "bsAlign", "lpp.bsAlign", + FT_UINT32, BASE_DEC, VALS(lpp_T_bsAlign_vals), 0, + NULL, HFILL }}, + { &hf_lpp_gnss_TimeID, + { "gnss-TimeID", "lpp.gnss_TimeID", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_ID", HFILL }}, + { &hf_lpp_gnss_DayNumber, + { "gnss-DayNumber", "lpp.gnss_DayNumber", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_32767", HFILL }}, + { &hf_lpp_gnss_TimeOfDay, + { "gnss-TimeOfDay", "lpp.gnss_TimeOfDay", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_86399", HFILL }}, + { &hf_lpp_gnss_TimeOfDayFrac_msec, + { "gnss-TimeOfDayFrac-msec", "lpp.gnss_TimeOfDayFrac_msec", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_999", HFILL }}, + { &hf_lpp_notificationOfLeapSecond, + { "notificationOfLeapSecond", "lpp.notificationOfLeapSecond", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_2", HFILL }}, + { &hf_lpp_gps_TOW_Assist, + { "gps-TOW-Assist", "lpp.gps_TOW_Assist", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GPS_TOW_Assist_item, + { "GPS-TOW-AssistElement", "lpp.GPS_TOW_AssistElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_satelliteID, + { "satelliteID", "lpp.satelliteID", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_64", HFILL }}, + { &hf_lpp_tlmWord, + { "tlmWord", "lpp.tlmWord", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_16383", HFILL }}, + { &hf_lpp_antiSpoof, + { "antiSpoof", "lpp.antiSpoof", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_alert, + { "alert", "lpp.alert", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_tlmRsvdBits, + { "tlmRsvdBits", "lpp.tlmRsvdBits", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3", HFILL }}, + { &hf_lpp_secondsFromFrameStructureStart, + { "secondsFromFrameStructureStart", "lpp.secondsFromFrameStructureStart", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_12533", HFILL }}, + { &hf_lpp_fractionalSecondsFromFrameStructureStart, + { "fractionalSecondsFromFrameStructureStart", "lpp.fractionalSecondsFromFrameStructureStart", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3999999", HFILL }}, + { &hf_lpp_frameDrift, + { "frameDrift", "lpp.frameDrift", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M64_63", HFILL }}, + { &hf_lpp_cellID, + { "cellID", "lpp.cellID", + FT_UINT32, BASE_DEC, VALS(lpp_T_cellID_vals), 0, + NULL, HFILL }}, + { &hf_lpp_eUTRA, + { "eUTRA", "lpp.eUTRA", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_cellGlobalIdEUTRA, + { "cellGlobalIdEUTRA", "lpp.cellGlobalIdEUTRA", + FT_NONE, BASE_NONE, NULL, 0, + "CellGlobalIdEUTRA_AndUTRA", HFILL }}, + { &hf_lpp_uTRA, + { "uTRA", "lpp.uTRA", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_mode, + { "mode", "lpp.mode", + FT_UINT32, BASE_DEC, VALS(lpp_T_mode_vals), 0, + NULL, HFILL }}, + { &hf_lpp_fdd, + { "fdd", "lpp.fdd", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_primary_CPICH_Info, + { "primary-CPICH-Info", "lpp.primary_CPICH_Info", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_511", HFILL }}, + { &hf_lpp_tdd, + { "tdd", "lpp.tdd", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_cellParameters, + { "cellParameters", "lpp.cellParameters", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_cellGlobalIdUTRA, + { "cellGlobalIdUTRA", "lpp.cellGlobalIdUTRA", + FT_NONE, BASE_NONE, NULL, 0, + "CellGlobalIdEUTRA_AndUTRA", HFILL }}, + { &hf_lpp_uarfcn, + { "uarfcn", "lpp.uarfcn", + FT_UINT32, BASE_DEC, NULL, 0, + "ARFCN_ValueUTRA", HFILL }}, + { &hf_lpp_gSM, + { "gSM", "lpp.gSM", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_bcchCarrier, + { "bcchCarrier", "lpp.bcchCarrier", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1023", HFILL }}, + { &hf_lpp_bsic, + { "bsic", "lpp.bsic", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_63", HFILL }}, + { &hf_lpp_cellGlobalIdGERAN, + { "cellGlobalIdGERAN", "lpp.cellGlobalIdGERAN", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_threeDlocation, + { "threeDlocation", "lpp.threeDlocation", + FT_NONE, BASE_NONE, NULL, 0, + "EllipsoidPointWithAltitudeAndUncertaintyEllipsoid", HFILL }}, + { &hf_lpp_klobucharModel, + { "klobucharModel", "lpp.klobucharModel", + FT_NONE, BASE_NONE, NULL, 0, + "KlobucharModelParameter", HFILL }}, + { &hf_lpp_neQuickModel, + { "neQuickModel", "lpp.neQuickModel", + FT_NONE, BASE_NONE, NULL, 0, + "NeQuickModelParameter", HFILL }}, + { &hf_lpp_dataID, + { "dataID", "lpp.dataID", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_2", HFILL }}, + { &hf_lpp_alfa0, + { "alfa0", "lpp.alfa0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_alfa1, + { "alfa1", "lpp.alfa1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_alfa2, + { "alfa2", "lpp.alfa2", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_alfa3, + { "alfa3", "lpp.alfa3", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_beta0, + { "beta0", "lpp.beta0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_beta1, + { "beta1", "lpp.beta1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_beta2, + { "beta2", "lpp.beta2", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_beta3, + { "beta3", "lpp.beta3", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_ai0, + { "ai0", "lpp.ai0", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4095", HFILL }}, + { &hf_lpp_ai1, + { "ai1", "lpp.ai1", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4095", HFILL }}, + { &hf_lpp_ai2, + { "ai2", "lpp.ai2", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4095", HFILL }}, + { &hf_lpp_ionoStormFlag1, + { "ionoStormFlag1", "lpp.ionoStormFlag1", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_ionoStormFlag2, + { "ionoStormFlag2", "lpp.ionoStormFlag2", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_ionoStormFlag3, + { "ionoStormFlag3", "lpp.ionoStormFlag3", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_ionoStormFlag4, + { "ionoStormFlag4", "lpp.ionoStormFlag4", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_ionoStormFlag5, + { "ionoStormFlag5", "lpp.ionoStormFlag5", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_teop, + { "teop", "lpp.teop", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_65535", HFILL }}, + { &hf_lpp_pmX, + { "pmX", "lpp.pmX", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1048576_1048575", HFILL }}, + { &hf_lpp_pmXdot, + { "pmXdot", "lpp.pmXdot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16384_16383", HFILL }}, + { &hf_lpp_pmY, + { "pmY", "lpp.pmY", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1048576_1048575", HFILL }}, + { &hf_lpp_pmYdot, + { "pmYdot", "lpp.pmYdot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16384_16383", HFILL }}, + { &hf_lpp_deltaUT1, + { "deltaUT1", "lpp.deltaUT1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1073741824_1073741823", HFILL }}, + { &hf_lpp_deltaUT1dot, + { "deltaUT1dot", "lpp.deltaUT1dot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M262144_262143", HFILL }}, + { &hf_lpp_GNSS_TimeModelList_item, + { "GNSS-TimeModelElement", "lpp.GNSS_TimeModelElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_TimeModelRefTime, + { "gnss-TimeModelRefTime", "lpp.gnss_TimeModelRefTime", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_65535", HFILL }}, + { &hf_lpp_tA0, + { "tA0", "lpp.tA0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M67108864_67108863", HFILL }}, + { &hf_lpp_tA1, + { "tA1", "lpp.tA1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4096_4095", HFILL }}, + { &hf_lpp_tA2, + { "tA2", "lpp.tA2", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M64_63", HFILL }}, + { &hf_lpp_gnss_TO_ID, + { "gnss-TO-ID", "lpp.gnss_TO_ID", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_15", HFILL }}, + { &hf_lpp_weekNumber, + { "weekNumber", "lpp.weekNumber", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_8191", HFILL }}, + { &hf_lpp_deltaT, + { "deltaT", "lpp.deltaT", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_dgnss_RefTime, + { "dgnss-RefTime", "lpp.dgnss_RefTime", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3599", HFILL }}, + { &hf_lpp_dgnss_SgnTypeList, + { "dgnss-SgnTypeList", "lpp.dgnss_SgnTypeList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_DGNSS_SgnTypeList_item, + { "DGNSS-SgnTypeElement", "lpp.DGNSS_SgnTypeElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_SignalID, + { "gnss-SignalID", "lpp.gnss_SignalID", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_StatusHealth, + { "gnss-StatusHealth", "lpp.gnss_StatusHealth", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_7", HFILL }}, + { &hf_lpp_dgnss_SatList, + { "dgnss-SatList", "lpp.dgnss_SatList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_DGNSS_SatList_item, + { "DGNSS-CorrectionsElement", "lpp.DGNSS_CorrectionsElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_svID, + { "svID", "lpp.svID", + FT_NONE, BASE_NONE, NULL, 0, + "SV_ID", HFILL }}, + { &hf_lpp_iod, + { "iod", "lpp.iod", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_11", HFILL }}, + { &hf_lpp_udre, + { "udre", "lpp.udre", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3", HFILL }}, + { &hf_lpp_pseudoRangeCor, + { "pseudoRangeCor", "lpp.pseudoRangeCor", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2047_2047", HFILL }}, + { &hf_lpp_rangeRateCor, + { "rangeRateCor", "lpp.rangeRateCor", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M127_127", HFILL }}, + { &hf_lpp_udreGrowthRate, + { "udreGrowthRate", "lpp.udreGrowthRate", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_7", HFILL }}, + { &hf_lpp_udreValidityTime, + { "udreValidityTime", "lpp.udreValidityTime", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_7", HFILL }}, + { &hf_lpp_nonBroadcastIndFlag, + { "nonBroadcastIndFlag", "lpp.nonBroadcastIndFlag", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_gnss_SatelliteList, + { "gnss-SatelliteList", "lpp.gnss_SatelliteList", + FT_UINT32, BASE_DEC, NULL, 0, + "GNSS_NavModelSatelliteList", HFILL }}, + { &hf_lpp_GNSS_NavModelSatelliteList_item, + { "GNSS-NavModelSatelliteElement", "lpp.GNSS_NavModelSatelliteElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_svHealth, + { "svHealth", "lpp.svHealth", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_8", HFILL }}, + { &hf_lpp_gnss_ClockModel, + { "gnss-ClockModel", "lpp.gnss_ClockModel", + FT_UINT32, BASE_DEC, VALS(lpp_GNSS_ClockModel_vals), 0, + NULL, HFILL }}, + { &hf_lpp_gnss_OrbitModel, + { "gnss-OrbitModel", "lpp.gnss_OrbitModel", + FT_UINT32, BASE_DEC, VALS(lpp_GNSS_OrbitModel_vals), 0, + NULL, HFILL }}, + { &hf_lpp_standardClockModelList, + { "standardClockModelList", "lpp.standardClockModelList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_nav_ClockModel, + { "nav-ClockModel", "lpp.nav_ClockModel", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_cnav_ClockModel, + { "cnav-ClockModel", "lpp.cnav_ClockModel", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_glonass_ClockModel, + { "glonass-ClockModel", "lpp.glonass_ClockModel", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_sbas_ClockModel, + { "sbas-ClockModel", "lpp.sbas_ClockModel", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_keplerianSet, + { "keplerianSet", "lpp.keplerianSet", + FT_NONE, BASE_NONE, NULL, 0, + "NavModelKeplerianSet", HFILL }}, + { &hf_lpp_nav_KeplerianSet, + { "nav-KeplerianSet", "lpp.nav_KeplerianSet", + FT_NONE, BASE_NONE, NULL, 0, + "NavModelNAV_KeplerianSet", HFILL }}, + { &hf_lpp_cnav_KeplerianSet, + { "cnav-KeplerianSet", "lpp.cnav_KeplerianSet", + FT_NONE, BASE_NONE, NULL, 0, + "NavModelCNAV_KeplerianSet", HFILL }}, + { &hf_lpp_glonass_ECEF, + { "glonass-ECEF", "lpp.glonass_ECEF", + FT_NONE, BASE_NONE, NULL, 0, + "NavModel_GLONASS_ECEF", HFILL }}, + { &hf_lpp_sbas_ECEF, + { "sbas-ECEF", "lpp.sbas_ECEF", + FT_NONE, BASE_NONE, NULL, 0, + "NavModel_SBAS_ECEF", HFILL }}, + { &hf_lpp_StandardClockModelList_item, + { "StandardClockModelElement", "lpp.StandardClockModelElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_stanClockToc, + { "stanClockToc", "lpp.stanClockToc", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_16383", HFILL }}, + { &hf_lpp_stanClockAF2, + { "stanClockAF2", "lpp.stanClockAF2", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2048_2047", HFILL }}, + { &hf_lpp_stanClockAF1, + { "stanClockAF1", "lpp.stanClockAF1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M131072_131071", HFILL }}, + { &hf_lpp_stanClockAF0, + { "stanClockAF0", "lpp.stanClockAF0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M134217728_134217727", HFILL }}, + { &hf_lpp_stanClockTgd, + { "stanClockTgd", "lpp.stanClockTgd", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M512_511", HFILL }}, + { &hf_lpp_stanModelID, + { "stanModelID", "lpp.stanModelID", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_navToc, + { "navToc", "lpp.navToc", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_37799", HFILL }}, + { &hf_lpp_navaf2, + { "navaf2", "lpp.navaf2", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_navaf1, + { "navaf1", "lpp.navaf1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_navaf0, + { "navaf0", "lpp.navaf0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2097152_2097151", HFILL }}, + { &hf_lpp_navTgd, + { "navTgd", "lpp.navTgd", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_cnavToc, + { "cnavToc", "lpp.cnavToc", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_2015", HFILL }}, + { &hf_lpp_cnavTop, + { "cnavTop", "lpp.cnavTop", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_2015", HFILL }}, + { &hf_lpp_cnavURA0, + { "cnavURA0", "lpp.cnavURA0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16_15", HFILL }}, + { &hf_lpp_cnavURA1, + { "cnavURA1", "lpp.cnavURA1", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_7", HFILL }}, + { &hf_lpp_cnavURA2, + { "cnavURA2", "lpp.cnavURA2", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_7", HFILL }}, + { &hf_lpp_cnavAf2, + { "cnavAf2", "lpp.cnavAf2", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M512_511", HFILL }}, + { &hf_lpp_cnavAf1, + { "cnavAf1", "lpp.cnavAf1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M524288_524287", HFILL }}, + { &hf_lpp_cnavAf0, + { "cnavAf0", "lpp.cnavAf0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M33554432_33554431", HFILL }}, + { &hf_lpp_cnavTgd, + { "cnavTgd", "lpp.cnavTgd", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4096_4095", HFILL }}, + { &hf_lpp_cnavISCl1cp, + { "cnavISCl1cp", "lpp.cnavISCl1cp", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4096_4095", HFILL }}, + { &hf_lpp_cnavISCl1cd, + { "cnavISCl1cd", "lpp.cnavISCl1cd", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4096_4095", HFILL }}, + { &hf_lpp_cnavISCl1ca, + { "cnavISCl1ca", "lpp.cnavISCl1ca", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4096_4095", HFILL }}, + { &hf_lpp_cnavISCl2c, + { "cnavISCl2c", "lpp.cnavISCl2c", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4096_4095", HFILL }}, + { &hf_lpp_cnavISCl5i5, + { "cnavISCl5i5", "lpp.cnavISCl5i5", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4096_4095", HFILL }}, + { &hf_lpp_cnavISCl5q5, + { "cnavISCl5q5", "lpp.cnavISCl5q5", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4096_4095", HFILL }}, + { &hf_lpp_gloTau, + { "gloTau", "lpp.gloTau", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2097152_2097151", HFILL }}, + { &hf_lpp_gloGamma, + { "gloGamma", "lpp.gloGamma", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1024_1023", HFILL }}, + { &hf_lpp_gloDeltaTau, + { "gloDeltaTau", "lpp.gloDeltaTau", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16_15", HFILL }}, + { &hf_lpp_sbasTo, + { "sbasTo", "lpp.sbasTo", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_5399", HFILL }}, + { &hf_lpp_sbasAgfo, + { "sbasAgfo", "lpp.sbasAgfo", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2048_2047", HFILL }}, + { &hf_lpp_sbasAgf1, + { "sbasAgf1", "lpp.sbasAgf1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_keplerToe, + { "keplerToe", "lpp.keplerToe", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_16383", HFILL }}, + { &hf_lpp_keplerW, + { "keplerW", "lpp.keplerW", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_lpp_keplerDeltaN, + { "keplerDeltaN", "lpp.keplerDeltaN", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_keplerM0, + { "keplerM0", "lpp.keplerM0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_lpp_keplerOmegaDot, + { "keplerOmegaDot", "lpp.keplerOmegaDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_keplerE, + { "keplerE", "lpp.keplerE", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4294967295", HFILL }}, + { &hf_lpp_keplerIDot, + { "keplerIDot", "lpp.keplerIDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8192_8191", HFILL }}, + { &hf_lpp_keplerAPowerHalf, + { "keplerAPowerHalf", "lpp.keplerAPowerHalf", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4294967295", HFILL }}, + { &hf_lpp_keplerI0, + { "keplerI0", "lpp.keplerI0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_lpp_keplerOmega0, + { "keplerOmega0", "lpp.keplerOmega0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_lpp_keplerCrs, + { "keplerCrs", "lpp.keplerCrs", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_keplerCis, + { "keplerCis", "lpp.keplerCis", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_keplerCus, + { "keplerCus", "lpp.keplerCus", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_keplerCrc, + { "keplerCrc", "lpp.keplerCrc", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_keplerCic, + { "keplerCic", "lpp.keplerCic", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_keplerCuc, + { "keplerCuc", "lpp.keplerCuc", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_navURA, + { "navURA", "lpp.navURA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_15", HFILL }}, + { &hf_lpp_navFitFlag, + { "navFitFlag", "lpp.navFitFlag", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_navToe, + { "navToe", "lpp.navToe", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_37799", HFILL }}, + { &hf_lpp_navOmega, + { "navOmega", "lpp.navOmega", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_lpp_navDeltaN, + { "navDeltaN", "lpp.navDeltaN", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_navM0, + { "navM0", "lpp.navM0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_lpp_navOmegaADot, + { "navOmegaADot", "lpp.navOmegaADot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_navE, + { "navE", "lpp.navE", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4294967295", HFILL }}, + { &hf_lpp_navIDot, + { "navIDot", "lpp.navIDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8192_8191", HFILL }}, + { &hf_lpp_navAPowerHalf, + { "navAPowerHalf", "lpp.navAPowerHalf", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4294967295", HFILL }}, + { &hf_lpp_navI0, + { "navI0", "lpp.navI0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_lpp_navOmegaA0, + { "navOmegaA0", "lpp.navOmegaA0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_lpp_navCrs, + { "navCrs", "lpp.navCrs", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_navCis, + { "navCis", "lpp.navCis", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_navCus, + { "navCus", "lpp.navCus", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_navCrc, + { "navCrc", "lpp.navCrc", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_navCic, + { "navCic", "lpp.navCic", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_navCuc, + { "navCuc", "lpp.navCuc", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_addNAVparam, + { "addNAVparam", "lpp.addNAVparam", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ephemCodeOnL2, + { "ephemCodeOnL2", "lpp.ephemCodeOnL2", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3", HFILL }}, + { &hf_lpp_ephemL2Pflag, + { "ephemL2Pflag", "lpp.ephemL2Pflag", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_ephemSF1Rsvd, + { "ephemSF1Rsvd", "lpp.ephemSF1Rsvd", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_reserved1, + { "reserved1", "lpp.reserved1", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_8388607", HFILL }}, + { &hf_lpp_reserved2, + { "reserved2", "lpp.reserved2", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_16777215", HFILL }}, + { &hf_lpp_reserved3, + { "reserved3", "lpp.reserved3", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_16777215", HFILL }}, + { &hf_lpp_reserved4, + { "reserved4", "lpp.reserved4", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_65535", HFILL }}, + { &hf_lpp_ephemAODA, + { "ephemAODA", "lpp.ephemAODA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_31", HFILL }}, + { &hf_lpp_cnavURAindex, + { "cnavURAindex", "lpp.cnavURAindex", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16_15", HFILL }}, + { &hf_lpp_cnavDeltaA, + { "cnavDeltaA", "lpp.cnavDeltaA", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M33554432_33554431", HFILL }}, + { &hf_lpp_cnavAdot, + { "cnavAdot", "lpp.cnavAdot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16777216_16777215", HFILL }}, + { &hf_lpp_cnavDeltaNo, + { "cnavDeltaNo", "lpp.cnavDeltaNo", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M65536_65535", HFILL }}, + { &hf_lpp_cnavDeltaNoDot, + { "cnavDeltaNoDot", "lpp.cnavDeltaNoDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4194304_4194303", HFILL }}, + { &hf_lpp_cnavMo, + { "cnavMo", "lpp.cnavMo", + FT_INT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_cnavE, + { "cnavE", "lpp.cnavE", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_cnavOmega, + { "cnavOmega", "lpp.cnavOmega", + FT_INT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_cnavOMEGA0, + { "cnavOMEGA0", "lpp.cnavOMEGA0", + FT_INT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_cnavDeltaOmegaDot, + { "cnavDeltaOmegaDot", "lpp.cnavDeltaOmegaDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M65536_65535", HFILL }}, + { &hf_lpp_cnavIo, + { "cnavIo", "lpp.cnavIo", + FT_INT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_cnavIoDot, + { "cnavIoDot", "lpp.cnavIoDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16384_16383", HFILL }}, + { &hf_lpp_cnavCis, + { "cnavCis", "lpp.cnavCis", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_cnavCic, + { "cnavCic", "lpp.cnavCic", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_cnavCrs, + { "cnavCrs", "lpp.cnavCrs", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_cnavCrc, + { "cnavCrc", "lpp.cnavCrc", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_cnavCus, + { "cnavCus", "lpp.cnavCus", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1048576_1048575", HFILL }}, + { &hf_lpp_cnavCuc, + { "cnavCuc", "lpp.cnavCuc", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1048576_1048575", HFILL }}, + { &hf_lpp_gloEn, + { "gloEn", "lpp.gloEn", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_31", HFILL }}, + { &hf_lpp_gloP1, + { "gloP1", "lpp.gloP1", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_2", HFILL }}, + { &hf_lpp_gloP2, + { "gloP2", "lpp.gloP2", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_gloM, + { "gloM", "lpp.gloM", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3", HFILL }}, + { &hf_lpp_gloX, + { "gloX", "lpp.gloX", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M67108864_67108863", HFILL }}, + { &hf_lpp_gloXdot, + { "gloXdot", "lpp.gloXdot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_gloXdotdot, + { "gloXdotdot", "lpp.gloXdotdot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16_15", HFILL }}, + { &hf_lpp_gloY, + { "gloY", "lpp.gloY", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M67108864_67108863", HFILL }}, + { &hf_lpp_gloYdot, + { "gloYdot", "lpp.gloYdot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_gloYdotdot, + { "gloYdotdot", "lpp.gloYdotdot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16_15", HFILL }}, + { &hf_lpp_gloZ, + { "gloZ", "lpp.gloZ", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M67108864_67108863", HFILL }}, + { &hf_lpp_gloZdot, + { "gloZdot", "lpp.gloZdot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_gloZdotdot, + { "gloZdotdot", "lpp.gloZdotdot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16_15", HFILL }}, + { &hf_lpp_sbasAccuracy, + { "sbasAccuracy", "lpp.sbasAccuracy", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_4", HFILL }}, + { &hf_lpp_sbasXg, + { "sbasXg", "lpp.sbasXg", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M536870912_536870911", HFILL }}, + { &hf_lpp_sbasYg, + { "sbasYg", "lpp.sbasYg", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M536870912_536870911", HFILL }}, + { &hf_lpp_sbasZg, + { "sbasZg", "lpp.sbasZg", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16777216_16777215", HFILL }}, + { &hf_lpp_sbasXgDot, + { "sbasXgDot", "lpp.sbasXgDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M65536_65535", HFILL }}, + { &hf_lpp_sbasYgDot, + { "sbasYgDot", "lpp.sbasYgDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M65536_65535", HFILL }}, + { &hf_lpp_sbasZgDot, + { "sbasZgDot", "lpp.sbasZgDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M131072_131071", HFILL }}, + { &hf_lpp_sbasXgDotDot, + { "sbasXgDotDot", "lpp.sbasXgDotDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M512_511", HFILL }}, + { &hf_lpp_sbagYgDotDot, + { "sbagYgDotDot", "lpp.sbagYgDotDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M512_511", HFILL }}, + { &hf_lpp_sbasZgDotDot, + { "sbasZgDotDot", "lpp.sbasZgDotDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M512_511", HFILL }}, + { &hf_lpp_gnss_BadSignalList, + { "gnss-BadSignalList", "lpp.gnss_BadSignalList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_BadSignalList_item, + { "BadSignalElement", "lpp.BadSignalElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_badSVID, + { "badSVID", "lpp.badSVID", + FT_NONE, BASE_NONE, NULL, 0, + "SV_ID", HFILL }}, + { &hf_lpp_badSignalID, + { "badSignalID", "lpp.badSignalID", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_SignalIDs", HFILL }}, + { &hf_lpp_gnss_TOD, + { "gnss-TOD", "lpp.gnss_TOD", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3599", HFILL }}, + { &hf_lpp_gnss_TODfrac, + { "gnss-TODfrac", "lpp.gnss_TODfrac", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_999", HFILL }}, + { &hf_lpp_gnss_DataBitsSatList, + { "gnss-DataBitsSatList", "lpp.gnss_DataBitsSatList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_DataBitsSatList_item, + { "GNSS-DataBitsSatElement", "lpp.GNSS_DataBitsSatElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_DataBitsSgnList, + { "gnss-DataBitsSgnList", "lpp.gnss_DataBitsSgnList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_DataBitsSgnList_item, + { "GNSS-DataBitsSgnElement", "lpp.GNSS_DataBitsSgnElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_SignalType, + { "gnss-SignalType", "lpp.gnss_SignalType", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_SignalID", HFILL }}, + { &hf_lpp_gnss_DataBits, + { "gnss-DataBits", "lpp.gnss_DataBits", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_1_1024", HFILL }}, + { &hf_lpp_gnss_AcquisitionAssistList, + { "gnss-AcquisitionAssistList", "lpp.gnss_AcquisitionAssistList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_AcquisitionAssistList_item, + { "GNSS-AcquisitionAssistElement", "lpp.GNSS_AcquisitionAssistElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_doppler0, + { "doppler0", "lpp.doppler0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2048_2047", HFILL }}, + { &hf_lpp_doppler1, + { "doppler1", "lpp.doppler1", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_63", HFILL }}, + { &hf_lpp_dopplerUncertainty, + { "dopplerUncertainty", "lpp.dopplerUncertainty", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4", HFILL }}, + { &hf_lpp_codePhase, + { "codePhase", "lpp.codePhase", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1022", HFILL }}, + { &hf_lpp_intCodePhase, + { "intCodePhase", "lpp.intCodePhase", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_codePhaseSearchWindow, + { "codePhaseSearchWindow", "lpp.codePhaseSearchWindow", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_31", HFILL }}, + { &hf_lpp_azimuth, + { "azimuth", "lpp.azimuth", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_511", HFILL }}, + { &hf_lpp_elevation, + { "elevation", "lpp.elevation", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_codePhase1023, + { "codePhase1023", "lpp.codePhase1023", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_weekNumber_01, + { "weekNumber", "lpp.weekNumber", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_toa, + { "toa", "lpp.toa", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_ioda, + { "ioda", "lpp.ioda", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3", HFILL }}, + { &hf_lpp_completeAlmanacProvided, + { "completeAlmanacProvided", "lpp.completeAlmanacProvided", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_gnss_AlmanacList, + { "gnss-AlmanacList", "lpp.gnss_AlmanacList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_AlmanacList_item, + { "GNSS-AlmanacElement", "lpp.GNSS_AlmanacElement", + FT_UINT32, BASE_DEC, VALS(lpp_GNSS_AlmanacElement_vals), 0, + NULL, HFILL }}, + { &hf_lpp_keplerianAlmanacSet, + { "keplerianAlmanacSet", "lpp.keplerianAlmanacSet", + FT_NONE, BASE_NONE, NULL, 0, + "AlmanacKeplerianSet", HFILL }}, + { &hf_lpp_keplerianNAV_Almanac, + { "keplerianNAV-Almanac", "lpp.keplerianNAV_Almanac", + FT_NONE, BASE_NONE, NULL, 0, + "AlmanacNAV_KeplerianSet", HFILL }}, + { &hf_lpp_keplerianReducedAlmanac, + { "keplerianReducedAlmanac", "lpp.keplerianReducedAlmanac", + FT_NONE, BASE_NONE, NULL, 0, + "AlmanacReducedKeplerianSet", HFILL }}, + { &hf_lpp_keplerianMidiAlmanac, + { "keplerianMidiAlmanac", "lpp.keplerianMidiAlmanac", + FT_NONE, BASE_NONE, NULL, 0, + "AlmanacMidiAlmanacSet", HFILL }}, + { &hf_lpp_keplerianGLONASS, + { "keplerianGLONASS", "lpp.keplerianGLONASS", + FT_NONE, BASE_NONE, NULL, 0, + "AlmanacGLONASS_AlmanacSet", HFILL }}, + { &hf_lpp_ecef_SBAS_Almanac, + { "ecef-SBAS-Almanac", "lpp.ecef_SBAS_Almanac", + FT_NONE, BASE_NONE, NULL, 0, + "AlmanacECEF_SBAS_AlmanacSet", HFILL }}, + { &hf_lpp_kepAlmanacE, + { "kepAlmanacE", "lpp.kepAlmanacE", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_2047", HFILL }}, + { &hf_lpp_kepAlmanacDeltaI, + { "kepAlmanacDeltaI", "lpp.kepAlmanacDeltaI", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1024_1023", HFILL }}, + { &hf_lpp_kepAlmanacOmegaDot, + { "kepAlmanacOmegaDot", "lpp.kepAlmanacOmegaDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1024_1023", HFILL }}, + { &hf_lpp_kepSVHealth, + { "kepSVHealth", "lpp.kepSVHealth", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_15", HFILL }}, + { &hf_lpp_kepAlmanacAPowerHalf, + { "kepAlmanacAPowerHalf", "lpp.kepAlmanacAPowerHalf", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M65536_65535", HFILL }}, + { &hf_lpp_kepAlmanacOmega0, + { "kepAlmanacOmega0", "lpp.kepAlmanacOmega0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_kepAlmanacW, + { "kepAlmanacW", "lpp.kepAlmanacW", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_kepAlmanacM0, + { "kepAlmanacM0", "lpp.kepAlmanacM0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_kepAlmanacAF0, + { "kepAlmanacAF0", "lpp.kepAlmanacAF0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8192_8191", HFILL }}, + { &hf_lpp_kepAlmanacAF1, + { "kepAlmanacAF1", "lpp.kepAlmanacAF1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1024_1023", HFILL }}, + { &hf_lpp_navAlmE, + { "navAlmE", "lpp.navAlmE", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_65535", HFILL }}, + { &hf_lpp_navAlmDeltaI, + { "navAlmDeltaI", "lpp.navAlmDeltaI", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_navAlmOMEGADOT, + { "navAlmOMEGADOT", "lpp.navAlmOMEGADOT", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_navAlmSVHealth, + { "navAlmSVHealth", "lpp.navAlmSVHealth", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_navAlmSqrtA, + { "navAlmSqrtA", "lpp.navAlmSqrtA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_16777215", HFILL }}, + { &hf_lpp_navAlmOMEGAo, + { "navAlmOMEGAo", "lpp.navAlmOMEGAo", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_navAlmOmega, + { "navAlmOmega", "lpp.navAlmOmega", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_navAlmMo, + { "navAlmMo", "lpp.navAlmMo", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_navAlmaf0, + { "navAlmaf0", "lpp.navAlmaf0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1024_1023", HFILL }}, + { &hf_lpp_navAlmaf1, + { "navAlmaf1", "lpp.navAlmaf1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1024_1023", HFILL }}, + { &hf_lpp_redAlmDeltaA, + { "redAlmDeltaA", "lpp.redAlmDeltaA", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_redAlmOmega0, + { "redAlmOmega0", "lpp.redAlmOmega0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M64_63", HFILL }}, + { &hf_lpp_redAlmPhi0, + { "redAlmPhi0", "lpp.redAlmPhi0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M64_63", HFILL }}, + { &hf_lpp_redAlmL1Health, + { "redAlmL1Health", "lpp.redAlmL1Health", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_redAlmL2Health, + { "redAlmL2Health", "lpp.redAlmL2Health", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_redAlmL5Health, + { "redAlmL5Health", "lpp.redAlmL5Health", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_midiAlmE, + { "midiAlmE", "lpp.midiAlmE", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_2047", HFILL }}, + { &hf_lpp_midiAlmDeltaI, + { "midiAlmDeltaI", "lpp.midiAlmDeltaI", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1024_1023", HFILL }}, + { &hf_lpp_midiAlmOmegaDot, + { "midiAlmOmegaDot", "lpp.midiAlmOmegaDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1024_1023", HFILL }}, + { &hf_lpp_midiAlmSqrtA, + { "midiAlmSqrtA", "lpp.midiAlmSqrtA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_131071", HFILL }}, + { &hf_lpp_midiAlmOmega0, + { "midiAlmOmega0", "lpp.midiAlmOmega0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_midiAlmOmega, + { "midiAlmOmega", "lpp.midiAlmOmega", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_midiAlmMo, + { "midiAlmMo", "lpp.midiAlmMo", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_midiAlmaf0, + { "midiAlmaf0", "lpp.midiAlmaf0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1024_1023", HFILL }}, + { &hf_lpp_midiAlmaf1, + { "midiAlmaf1", "lpp.midiAlmaf1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M512_511", HFILL }}, + { &hf_lpp_midiAlmL1Health, + { "midiAlmL1Health", "lpp.midiAlmL1Health", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_midiAlmL2Health, + { "midiAlmL2Health", "lpp.midiAlmL2Health", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_midiAlmL5Health, + { "midiAlmL5Health", "lpp.midiAlmL5Health", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_gloAlm_NA, + { "gloAlm-NA", "lpp.gloAlm_NA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_1461", HFILL }}, + { &hf_lpp_gloAlmnA, + { "gloAlmnA", "lpp.gloAlmnA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_24", HFILL }}, + { &hf_lpp_gloAlmHA, + { "gloAlmHA", "lpp.gloAlmHA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_31", HFILL }}, + { &hf_lpp_gloAlmLambdaA, + { "gloAlmLambdaA", "lpp.gloAlmLambdaA", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1048576_1048575", HFILL }}, + { &hf_lpp_gloAlmtlambdaA, + { "gloAlmtlambdaA", "lpp.gloAlmtlambdaA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_2097151", HFILL }}, + { &hf_lpp_gloAlmDeltaIa, + { "gloAlmDeltaIa", "lpp.gloAlmDeltaIa", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M131072_131071", HFILL }}, + { &hf_lpp_gloAlmDeltaTA, + { "gloAlmDeltaTA", "lpp.gloAlmDeltaTA", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2097152_2097151", HFILL }}, + { &hf_lpp_gloAlmDeltaTdotA, + { "gloAlmDeltaTdotA", "lpp.gloAlmDeltaTdotA", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M64_63", HFILL }}, + { &hf_lpp_gloAlmEpsilonA, + { "gloAlmEpsilonA", "lpp.gloAlmEpsilonA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_32767", HFILL }}, + { &hf_lpp_gloAlmOmegaA, + { "gloAlmOmegaA", "lpp.gloAlmOmegaA", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_gloAlmTauA, + { "gloAlmTauA", "lpp.gloAlmTauA", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M512_511", HFILL }}, + { &hf_lpp_gloAlmCA, + { "gloAlmCA", "lpp.gloAlmCA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_1", HFILL }}, + { &hf_lpp_gloAlmMA, + { "gloAlmMA", "lpp.gloAlmMA", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_2", HFILL }}, + { &hf_lpp_sbasAlmDataID, + { "sbasAlmDataID", "lpp.sbasAlmDataID", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3", HFILL }}, + { &hf_lpp_sbasAlmHealth, + { "sbasAlmHealth", "lpp.sbasAlmHealth", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_8", HFILL }}, + { &hf_lpp_sbasAlmXg, + { "sbasAlmXg", "lpp.sbasAlmXg", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16384_16383", HFILL }}, + { &hf_lpp_sbasAlmYg, + { "sbasAlmYg", "lpp.sbasAlmYg", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M16384_16383", HFILL }}, + { &hf_lpp_sbasAlmZg, + { "sbasAlmZg", "lpp.sbasAlmZg", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M256_255", HFILL }}, + { &hf_lpp_sbasAlmXgdot, + { "sbasAlmXgdot", "lpp.sbasAlmXgdot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4_3", HFILL }}, + { &hf_lpp_sbasAlmYgDot, + { "sbasAlmYgDot", "lpp.sbasAlmYgDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4_3", HFILL }}, + { &hf_lpp_sbasAlmZgDot, + { "sbasAlmZgDot", "lpp.sbasAlmZgDot", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8_7", HFILL }}, + { &hf_lpp_sbasAlmTo, + { "sbasAlmTo", "lpp.sbasAlmTo", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_2047", HFILL }}, + { &hf_lpp_utcModel1, + { "utcModel1", "lpp.utcModel1", + FT_NONE, BASE_NONE, NULL, 0, + "UTC_ModelSet1", HFILL }}, + { &hf_lpp_utcModel2, + { "utcModel2", "lpp.utcModel2", + FT_NONE, BASE_NONE, NULL, 0, + "UTC_ModelSet2", HFILL }}, + { &hf_lpp_utcModel3, + { "utcModel3", "lpp.utcModel3", + FT_NONE, BASE_NONE, NULL, 0, + "UTC_ModelSet3", HFILL }}, + { &hf_lpp_utcModel4, + { "utcModel4", "lpp.utcModel4", + FT_NONE, BASE_NONE, NULL, 0, + "UTC_ModelSet4", HFILL }}, + { &hf_lpp_gnss_Utc_A1, + { "gnss-Utc-A1", "lpp.gnss_Utc_A1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_gnss_Utc_A0, + { "gnss-Utc-A0", "lpp.gnss_Utc_A0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_lpp_gnss_Utc_Tot, + { "gnss-Utc-Tot", "lpp.gnss_Utc_Tot", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_gnss_Utc_WNt, + { "gnss-Utc-WNt", "lpp.gnss_Utc_WNt", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_gnss_Utc_DeltaTls, + { "gnss-Utc-DeltaTls", "lpp.gnss_Utc_DeltaTls", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_gnss_Utc_WNlsf, + { "gnss-Utc-WNlsf", "lpp.gnss_Utc_WNlsf", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_gnss_Utc_DN, + { "gnss-Utc-DN", "lpp.gnss_Utc_DN", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_gnss_Utc_DeltaTlsf, + { "gnss-Utc-DeltaTlsf", "lpp.gnss_Utc_DeltaTlsf", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_utcA0, + { "utcA0", "lpp.utcA0", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_utcA1, + { "utcA1", "lpp.utcA1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M4096_4095", HFILL }}, + { &hf_lpp_utcA2, + { "utcA2", "lpp.utcA2", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M64_63", HFILL }}, + { &hf_lpp_utcDeltaTls, + { "utcDeltaTls", "lpp.utcDeltaTls", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_utcTot, + { "utcTot", "lpp.utcTot", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_65535", HFILL }}, + { &hf_lpp_utcWNot, + { "utcWNot", "lpp.utcWNot", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_8191", HFILL }}, + { &hf_lpp_utcWNlsf, + { "utcWNlsf", "lpp.utcWNlsf", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_utcDN, + { "utcDN", "lpp.utcDN", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_4", HFILL }}, + { &hf_lpp_utcDeltaTlsf, + { "utcDeltaTlsf", "lpp.utcDeltaTlsf", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_nA, + { "nA", "lpp.nA", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_1461", HFILL }}, + { &hf_lpp_tauC, + { "tauC", "lpp.tauC", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_lpp_b1, + { "b1", "lpp.b1", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M1024_1023", HFILL }}, + { &hf_lpp_b2, + { "b2", "lpp.b2", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M512_511", HFILL }}, + { &hf_lpp_kp, + { "kp", "lpp.kp", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_2", HFILL }}, + { &hf_lpp_utcA1wnt, + { "utcA1wnt", "lpp.utcA1wnt", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M8388608_8388607", HFILL }}, + { &hf_lpp_utcA0wnt, + { "utcA0wnt", "lpp.utcA0wnt", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_lpp_utcTot_01, + { "utcTot", "lpp.utcTot", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_utcWNt, + { "utcWNt", "lpp.utcWNt", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_utcDN_01, + { "utcDN", "lpp.utcDN", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M128_127", HFILL }}, + { &hf_lpp_utcStandardID, + { "utcStandardID", "lpp.utcStandardID", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_7", HFILL }}, + { &hf_lpp_gnss_ID_GPS, + { "gnss-ID-GPS", "lpp.gnss_ID_GPS", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_ID_GLONASS, + { "gnss-ID-GLONASS", "lpp.gnss_ID_GLONASS", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_ID_GPS_item, + { "GNSS-ID-GPS-SatElement", "lpp.GNSS_ID_GPS_SatElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_signalsAvailable, + { "signalsAvailable", "lpp.signalsAvailable", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_SignalIDs", HFILL }}, + { &hf_lpp_GNSS_ID_GLONASS_item, + { "GNSS-ID-GLONASS-SatElement", "lpp.GNSS_ID_GLONASS_SatElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_channelNumber, + { "channelNumber", "lpp.channelNumber", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M7_13", HFILL }}, + { &hf_lpp_gnss_CommonAssistDataReq, + { "gnss-CommonAssistDataReq", "lpp.gnss_CommonAssistDataReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_GenericAssistDataReq, + { "gnss-GenericAssistDataReq", "lpp.gnss_GenericAssistDataReq", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_ReferenceTimeReq, + { "gnss-ReferenceTimeReq", "lpp.gnss_ReferenceTimeReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_ReferenceLocationReq, + { "gnss-ReferenceLocationReq", "lpp.gnss_ReferenceLocationReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_IonosphericModelReq, + { "gnss-IonosphericModelReq", "lpp.gnss_IonosphericModelReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_EarthOrientationParametersReq, + { "gnss-EarthOrientationParametersReq", "lpp.gnss_EarthOrientationParametersReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_GenericAssistDataReq_item, + { "GNSS-GenericAssistDataReqElement", "lpp.GNSS_GenericAssistDataReqElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_TimeModelsReq, + { "gnss-TimeModelsReq", "lpp.gnss_TimeModelsReq", + FT_UINT32, BASE_DEC, NULL, 0, + "GNSS_TimeModelListReq", HFILL }}, + { &hf_lpp_gnss_DifferentialCorrectionsReq, + { "gnss-DifferentialCorrectionsReq", "lpp.gnss_DifferentialCorrectionsReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_NavigationModelReq, + { "gnss-NavigationModelReq", "lpp.gnss_NavigationModelReq", + FT_UINT32, BASE_DEC, VALS(lpp_GNSS_NavigationModelReq_vals), 0, + NULL, HFILL }}, + { &hf_lpp_gnss_RealTimeIntegrityReq, + { "gnss-RealTimeIntegrityReq", "lpp.gnss_RealTimeIntegrityReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_DataBitAssistanceReq, + { "gnss-DataBitAssistanceReq", "lpp.gnss_DataBitAssistanceReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_AcquisitionAssistanceReq, + { "gnss-AcquisitionAssistanceReq", "lpp.gnss_AcquisitionAssistanceReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_AlmanacReq, + { "gnss-AlmanacReq", "lpp.gnss_AlmanacReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_UTCModelReq, + { "gnss-UTCModelReq", "lpp.gnss_UTCModelReq", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_UTC_ModelReq", HFILL }}, + { &hf_lpp_gnss_AuxiliaryInformationReq, + { "gnss-AuxiliaryInformationReq", "lpp.gnss_AuxiliaryInformationReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_TimeReqPrefList, + { "gnss-TimeReqPrefList", "lpp.gnss_TimeReqPrefList", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_SIZE_1_8_OF_GNSS_ID", HFILL }}, + { &hf_lpp_gnss_TimeReqPrefList_item, + { "GNSS-ID", "lpp.GNSS_ID", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gps_TOW_assistReq, + { "gps-TOW-assistReq", "lpp.gps_TOW_assistReq", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_notOfLeapSecReq, + { "notOfLeapSecReq", "lpp.notOfLeapSecReq", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_klobucharModelReq, + { "klobucharModelReq", "lpp.klobucharModelReq", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_2", HFILL }}, + { &hf_lpp_neQuickModelReq, + { "neQuickModelReq", "lpp.neQuickModelReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_TimeModelListReq_item, + { "GNSS-TimeModelElementReq", "lpp.GNSS_TimeModelElementReq", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_TO_IDsReq, + { "gnss-TO-IDsReq", "lpp.gnss_TO_IDsReq", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_15", HFILL }}, + { &hf_lpp_deltaTreq, + { "deltaTreq", "lpp.deltaTreq", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_dgnss_SignalsReq, + { "dgnss-SignalsReq", "lpp.dgnss_SignalsReq", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_SignalIDs", HFILL }}, + { &hf_lpp_dgnss_ValidityTimeReq, + { "dgnss-ValidityTimeReq", "lpp.dgnss_ValidityTimeReq", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_storedNavList, + { "storedNavList", "lpp.storedNavList", + FT_NONE, BASE_NONE, NULL, 0, + "StoredNavListInfo", HFILL }}, + { &hf_lpp_reqNavList, + { "reqNavList", "lpp.reqNavList", + FT_NONE, BASE_NONE, NULL, 0, + "ReqNavListInfo", HFILL }}, + { &hf_lpp_gnss_WeekOrDay, + { "gnss-WeekOrDay", "lpp.gnss_WeekOrDay", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4095", HFILL }}, + { &hf_lpp_gnss_Toe, + { "gnss-Toe", "lpp.gnss_Toe", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_255", HFILL }}, + { &hf_lpp_t_toeLimit, + { "t-toeLimit", "lpp.t_toeLimit", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_15", HFILL }}, + { &hf_lpp_satListRelatedDataList, + { "satListRelatedDataList", "lpp.satListRelatedDataList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_SatListRelatedDataList_item, + { "SatListRelatedDataElement", "lpp.SatListRelatedDataElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_clockModelID, + { "clockModelID", "lpp.clockModelID", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_8", HFILL }}, + { &hf_lpp_orbitModelID, + { "orbitModelID", "lpp.orbitModelID", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_8", HFILL }}, + { &hf_lpp_svReqList, + { "svReqList", "lpp.svReqList", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_64", HFILL }}, + { &hf_lpp_clockModelID_PrefList, + { "clockModelID-PrefList", "lpp.clockModelID_PrefList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_clockModelID_PrefList_item, + { "clockModelID-PrefList item", "lpp.clockModelID_PrefList_item", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_8", HFILL }}, + { &hf_lpp_orbitModelID_PrefList, + { "orbitModelID-PrefList", "lpp.orbitModelID_PrefList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_orbitModelID_PrefList_item, + { "orbitModelID-PrefList item", "lpp.orbitModelID_PrefList_item", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_8", HFILL }}, + { &hf_lpp_addNavparamReq, + { "addNavparamReq", "lpp.addNavparamReq", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_gnss_TOD_Req, + { "gnss-TOD-Req", "lpp.gnss_TOD_Req", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3599", HFILL }}, + { &hf_lpp_gnss_TOD_FracReq, + { "gnss-TOD-FracReq", "lpp.gnss_TOD_FracReq", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_999", HFILL }}, + { &hf_lpp_dataBitInterval, + { "dataBitInterval", "lpp.dataBitInterval", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_15", HFILL }}, + { &hf_lpp_gnss_SignalType_01, + { "gnss-SignalType", "lpp.gnss_SignalType", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_SignalIDs", HFILL }}, + { &hf_lpp_gnss_DataBitsReq, + { "gnss-DataBitsReq", "lpp.gnss_DataBitsReq", + FT_UINT32, BASE_DEC, NULL, 0, + "GNSS_DataBitsReqSatList", HFILL }}, + { &hf_lpp_GNSS_DataBitsReqSatList_item, + { "GNSS-DataBitsReqSatElement", "lpp.GNSS_DataBitsReqSatElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_SignalID_Req, + { "gnss-SignalID-Req", "lpp.gnss_SignalID_Req", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_SignalID", HFILL }}, + { &hf_lpp_modelID, + { "modelID", "lpp.modelID", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_8", HFILL }}, + { &hf_lpp_gnss_SignalMeasurementInformation, + { "gnss-SignalMeasurementInformation", "lpp.gnss_SignalMeasurementInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_LocationInformation, + { "gnss-LocationInformation", "lpp.gnss_LocationInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_measurementReferenceTime, + { "measurementReferenceTime", "lpp.measurementReferenceTime", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_MeasurementList, + { "gnss-MeasurementList", "lpp.gnss_MeasurementList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_TOD_msec, + { "gnss-TOD-msec", "lpp.gnss_TOD_msec", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3599999", HFILL }}, + { &hf_lpp_gnss_TOD_frac, + { "gnss-TOD-frac", "lpp.gnss_TOD_frac", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3999", HFILL }}, + { &hf_lpp_gnss_TOD_unc, + { "gnss-TOD-unc", "lpp.gnss_TOD_unc", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_networkTime_01, + { "networkTime", "lpp.networkTime", + FT_UINT32, BASE_DEC, VALS(lpp_T_networkTime_vals), 0, + NULL, HFILL }}, + { &hf_lpp_eUTRA_01, + { "eUTRA", "lpp.eUTRA", + FT_NONE, BASE_NONE, NULL, 0, + "T_eUTRA_01", HFILL }}, + { &hf_lpp_cellGlobalId_01, + { "cellGlobalId", "lpp.cellGlobalId", + FT_NONE, BASE_NONE, NULL, 0, + "CellGlobalIdEUTRA_AndUTRA", HFILL }}, + { &hf_lpp_uTRA_01, + { "uTRA", "lpp.uTRA", + FT_NONE, BASE_NONE, NULL, 0, + "T_uTRA_01", HFILL }}, + { &hf_lpp_mode_01, + { "mode", "lpp.mode", + FT_UINT32, BASE_DEC, VALS(lpp_T_mode_01_vals), 0, + "T_mode_01", HFILL }}, + { &hf_lpp_fdd_01, + { "fdd", "lpp.fdd", + FT_NONE, BASE_NONE, NULL, 0, + "T_fdd_01", HFILL }}, + { &hf_lpp_tdd_01, + { "tdd", "lpp.tdd", + FT_NONE, BASE_NONE, NULL, 0, + "T_tdd_01", HFILL }}, + { &hf_lpp_referenceSystemFrameNumber, + { "referenceSystemFrameNumber", "lpp.referenceSystemFrameNumber", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4095", HFILL }}, + { &hf_lpp_gSM_01, + { "gSM", "lpp.gSM", + FT_NONE, BASE_NONE, NULL, 0, + "T_gSM_01", HFILL }}, + { &hf_lpp_cellGlobalId_02, + { "cellGlobalId", "lpp.cellGlobalId", + FT_NONE, BASE_NONE, NULL, 0, + "CellGlobalIdGERAN", HFILL }}, + { &hf_lpp_referenceFrame, + { "referenceFrame", "lpp.referenceFrame", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_referenceFN, + { "referenceFN", "lpp.referenceFN", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_65535", HFILL }}, + { &hf_lpp_referenceFNMSB, + { "referenceFNMSB", "lpp.referenceFNMSB", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_63", HFILL }}, + { &hf_lpp_deltaGNSS_TOD, + { "deltaGNSS-TOD", "lpp.deltaGNSS_TOD", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_GNSS_MeasurementList_item, + { "GNSS-MeasurementForOneGNSS", "lpp.GNSS_MeasurementForOneGNSS", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_SgnMeasList, + { "gnss-SgnMeasList", "lpp.gnss_SgnMeasList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_SgnMeasList_item, + { "GNSS-SgnMeasElement", "lpp.GNSS_SgnMeasElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_CodePhaseAmbiguity, + { "gnss-CodePhaseAmbiguity", "lpp.gnss_CodePhaseAmbiguity", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_gnss_SatMeasList, + { "gnss-SatMeasList", "lpp.gnss_SatMeasList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_SatMeasList_item, + { "GNSS-SatMeasElement", "lpp.GNSS_SatMeasElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_cNo, + { "cNo", "lpp.cNo", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_63", HFILL }}, + { &hf_lpp_mpathDet, + { "mpathDet", "lpp.mpathDet", + FT_UINT32, BASE_DEC, VALS(lpp_T_mpathDet_vals), 0, + NULL, HFILL }}, + { &hf_lpp_carrierQualityInd, + { "carrierQualityInd", "lpp.carrierQualityInd", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_3", HFILL }}, + { &hf_lpp_codePhase_01, + { "codePhase", "lpp.codePhase", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_2097151", HFILL }}, + { &hf_lpp_integerCodePhase, + { "integerCodePhase", "lpp.integerCodePhase", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_127", HFILL }}, + { &hf_lpp_codePhaseRMSError, + { "codePhaseRMSError", "lpp.codePhaseRMSError", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_63", HFILL }}, + { &hf_lpp_doppler, + { "doppler", "lpp.doppler", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER_M32768_32767", HFILL }}, + { &hf_lpp_adr, + { "adr", "lpp.adr", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_33554431", HFILL }}, + { &hf_lpp_agnss_List, + { "agnss-List", "lpp.agnss_List", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_ID_Bitmap", HFILL }}, + { &hf_lpp_gnss_PositioningInstructions, + { "gnss-PositioningInstructions", "lpp.gnss_PositioningInstructions", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_Methods, + { "gnss-Methods", "lpp.gnss_Methods", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_ID_Bitmap", HFILL }}, + { &hf_lpp_fineTimeAssistanceMeasReq, + { "fineTimeAssistanceMeasReq", "lpp.fineTimeAssistanceMeasReq", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_adrMeasReq, + { "adrMeasReq", "lpp.adrMeasReq", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_multiFreqMeasReq, + { "multiFreqMeasReq", "lpp.multiFreqMeasReq", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_gnss_SupportList, + { "gnss-SupportList", "lpp.gnss_SupportList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_assistanceDataSupportList, + { "assistanceDataSupportList", "lpp.assistanceDataSupportList", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_SupportList_item, + { "GNSS-SupportElement", "lpp.GNSS_SupportElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_sbas_IDs, + { "sbas-IDs", "lpp.sbas_IDs", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_agnss_Modes, + { "agnss-Modes", "lpp.agnss_Modes", + FT_NONE, BASE_NONE, NULL, 0, + "PositioningModes", HFILL }}, + { &hf_lpp_gnss_Signals, + { "gnss-Signals", "lpp.gnss_Signals", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_SignalIDs", HFILL }}, + { &hf_lpp_fta_MeasSupport, + { "fta-MeasSupport", "lpp.fta_MeasSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_cellTime, + { "cellTime", "lpp.cellTime", + FT_NONE, BASE_NONE, NULL, 0, + "AccessTypes", HFILL }}, + { &hf_lpp_mode_02, + { "mode", "lpp.mode", + FT_NONE, BASE_NONE, NULL, 0, + "PositioningModes", HFILL }}, + { &hf_lpp_adr_Support, + { "adr-Support", "lpp.adr_Support", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_velocityMeasurementSupport, + { "velocityMeasurementSupport", "lpp.velocityMeasurementSupport", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_gnss_CommonAssistanceDataSupport, + { "gnss-CommonAssistanceDataSupport", "lpp.gnss_CommonAssistanceDataSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_GenericAssistanceDataSupport, + { "gnss-GenericAssistanceDataSupport", "lpp.gnss_GenericAssistanceDataSupport", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_ReferenceTimeSupport, + { "gnss-ReferenceTimeSupport", "lpp.gnss_ReferenceTimeSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_ReferenceLocationSupport, + { "gnss-ReferenceLocationSupport", "lpp.gnss_ReferenceLocationSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_IonosphericModelSupport, + { "gnss-IonosphericModelSupport", "lpp.gnss_IonosphericModelSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_EarthOrientationParametersSupport, + { "gnss-EarthOrientationParametersSupport", "lpp.gnss_EarthOrientationParametersSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_SystemTime_01, + { "gnss-SystemTime", "lpp.gnss_SystemTime", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_ID_Bitmap", HFILL }}, + { &hf_lpp_fta_Support, + { "fta-Support", "lpp.fta_Support", + FT_NONE, BASE_NONE, NULL, 0, + "AccessTypes", HFILL }}, + { &hf_lpp_ionoModel, + { "ionoModel", "lpp.ionoModel", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_GNSS_GenericAssistanceDataSupport_item, + { "GNSS-GenericAssistDataSupportElement", "lpp.GNSS_GenericAssistDataSupportElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_TimeModelsSupport, + { "gnss-TimeModelsSupport", "lpp.gnss_TimeModelsSupport", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_TimeModelListSupport", HFILL }}, + { &hf_lpp_gnss_DifferentialCorrectionsSupport, + { "gnss-DifferentialCorrectionsSupport", "lpp.gnss_DifferentialCorrectionsSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_NavigationModelSupport, + { "gnss-NavigationModelSupport", "lpp.gnss_NavigationModelSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_RealTimeIntegritySupport, + { "gnss-RealTimeIntegritySupport", "lpp.gnss_RealTimeIntegritySupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_DataBitAssistanceSupport, + { "gnss-DataBitAssistanceSupport", "lpp.gnss_DataBitAssistanceSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_AcquisitionAssistanceSupport, + { "gnss-AcquisitionAssistanceSupport", "lpp.gnss_AcquisitionAssistanceSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_AlmanacSupport, + { "gnss-AlmanacSupport", "lpp.gnss_AlmanacSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_UTC_ModelSupport, + { "gnss-UTC-ModelSupport", "lpp.gnss_UTC_ModelSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_AuxiliaryInformationSupport, + { "gnss-AuxiliaryInformationSupport", "lpp.gnss_AuxiliaryInformationSupport", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnssSignalIDs, + { "gnssSignalIDs", "lpp.gnssSignalIDs", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_SignalIDs", HFILL }}, + { &hf_lpp_dgnss_ValidityTimeSup, + { "dgnss-ValidityTimeSup", "lpp.dgnss_ValidityTimeSup", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_clockModel, + { "clockModel", "lpp.clockModel", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_orbitModel, + { "orbitModel", "lpp.orbitModel", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_almanacModel, + { "almanacModel", "lpp.almanacModel", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_utc_Model, + { "utc-Model", "lpp.utc_Model", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_SupportListReq, + { "gnss-SupportListReq", "lpp.gnss_SupportListReq", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_assistanceDataSupportListReq, + { "assistanceDataSupportListReq", "lpp.assistanceDataSupportListReq", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_locationVelocityTypesReq, + { "locationVelocityTypesReq", "lpp.locationVelocityTypesReq", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_lpp_locationServerErrorCauses_01, + { "locationServerErrorCauses", "lpp.locationServerErrorCauses", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_LocationServerErrorCauses", HFILL }}, + { &hf_lpp_targetDeviceErrorCauses_01, + { "targetDeviceErrorCauses", "lpp.targetDeviceErrorCauses", + FT_NONE, BASE_NONE, NULL, 0, + "GNSS_TargetDeviceErrorCauses", HFILL }}, + { &hf_lpp_cause_02, + { "cause", "lpp.cause", + FT_UINT32, BASE_DEC, VALS(lpp_T_cause_02_vals), 0, + "T_cause_02", HFILL }}, + { &hf_lpp_cause_03, + { "cause", "lpp.cause", + FT_UINT32, BASE_DEC, VALS(lpp_T_cause_03_vals), 0, + "T_cause_03", HFILL }}, + { &hf_lpp_fineTimeAssistanceMeasurementsNotPossible, + { "fineTimeAssistanceMeasurementsNotPossible", "lpp.fineTimeAssistanceMeasurementsNotPossible", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_adrMeasurementsNotPossible, + { "adrMeasurementsNotPossible", "lpp.adrMeasurementsNotPossible", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_multiFrequencyMeasurementsNotPossible, + { "multiFrequencyMeasurementsNotPossible", "lpp.multiFrequencyMeasurementsNotPossible", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_id, + { "gnss-id", "lpp.gnss_id", + FT_UINT32, BASE_DEC, VALS(lpp_T_gnss_id_vals), 0, + NULL, HFILL }}, + { &hf_lpp_gnss_ids, + { "gnss-ids", "lpp.gnss_ids", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_gnss_SignalID_01, + { "gnss-SignalID", "lpp.gnss_SignalID", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_7", HFILL }}, + { &hf_lpp_gnss_SignalIDs, + { "gnss-SignalIDs", "lpp.gnss_SignalIDs", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING_SIZE_8", HFILL }}, + { &hf_lpp_sbas_id, + { "sbas-id", "lpp.sbas_id", + FT_UINT32, BASE_DEC, VALS(lpp_T_sbas_id_vals), 0, + NULL, HFILL }}, + { &hf_lpp_sbas_IDs_01, + { "sbas-IDs", "lpp.sbas_IDs", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_satellite_id, + { "satellite-id", "lpp.satellite_id", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_63", HFILL }}, + { &hf_lpp_ecid_SignalMeasurementInformation, + { "ecid-SignalMeasurementInformation", "lpp.ecid_SignalMeasurementInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ecid_Error, + { "ecid-Error", "lpp.ecid_Error", + FT_UINT32, BASE_DEC, VALS(lpp_ECID_Error_vals), 0, + NULL, HFILL }}, + { &hf_lpp_servingCellMeasuredResults, + { "servingCellMeasuredResults", "lpp.servingCellMeasuredResults", + FT_NONE, BASE_NONE, NULL, 0, + "MeasuredResultsElement", HFILL }}, + { &hf_lpp_measuredResultsList, + { "measuredResultsList", "lpp.measuredResultsList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_MeasuredResultsList_item, + { "MeasuredResultsElement", "lpp.MeasuredResultsElement", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_arfcnEUTRA, + { "arfcnEUTRA", "lpp.arfcnEUTRA", + FT_UINT32, BASE_DEC, NULL, 0, + "ARFCN_ValueEUTRA", HFILL }}, + { &hf_lpp_rsrp_Result, + { "rsrp-Result", "lpp.rsrp_Result", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_97", HFILL }}, + { &hf_lpp_rsrq_Result, + { "rsrq-Result", "lpp.rsrq_Result", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_34", HFILL }}, + { &hf_lpp_ue_RxTxTimeDiff, + { "ue-RxTxTimeDiff", "lpp.ue_RxTxTimeDiff", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_0_4095", HFILL }}, + { &hf_lpp_requestedMeasurements, + { "requestedMeasurements", "lpp.requestedMeasurements", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ecid_MeasSupported, + { "ecid-MeasSupported", "lpp.ecid_MeasSupported", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_locationServerErrorCauses_02, + { "locationServerErrorCauses", "lpp.locationServerErrorCauses", + FT_NONE, BASE_NONE, NULL, 0, + "ECID_LocationServerErrorCauses", HFILL }}, + { &hf_lpp_targetDeviceErrorCauses_02, + { "targetDeviceErrorCauses", "lpp.targetDeviceErrorCauses", + FT_NONE, BASE_NONE, NULL, 0, + "ECID_TargetDeviceErrorCauses", HFILL }}, + { &hf_lpp_cause_04, + { "cause", "lpp.cause", + FT_UINT32, BASE_DEC, VALS(lpp_T_cause_04_vals), 0, + "T_cause_04", HFILL }}, + { &hf_lpp_cause_05, + { "cause", "lpp.cause", + FT_UINT32, BASE_DEC, VALS(lpp_T_cause_05_vals), 0, + "T_cause_05", HFILL }}, + { &hf_lpp_rsrpMeasurementNotPossible, + { "rsrpMeasurementNotPossible", "lpp.rsrpMeasurementNotPossible", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_rsrqMeasurementNotPossible, + { "rsrqMeasurementNotPossible", "lpp.rsrqMeasurementNotPossible", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_ueRxTxMeasurementNotPossible, + { "ueRxTxMeasurementNotPossible", "lpp.ueRxTxMeasurementNotPossible", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lpp_T_accessTypes_eutra, + { "eutra", "lpp.eutra", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_accessTypes_utra, + { "utra", "lpp.utra", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_lpp_T_accessTypes_gsm, + { "gsm", "lpp.gsm", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_lpp_T_posModes_standalone, + { "standalone", "lpp.standalone", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_posModes_ue_based, + { "ue-based", "lpp.ue-based", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_lpp_T_posModes_ue_assisted, + { "ue-assisted", "lpp.ue-assisted", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_lpp_T_otdoa_Mode_ue_assisted, + { "ue-assisted", "lpp.ue-assisted", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_ionoModel_klobuchar, + { "klobuchar", "lpp.klobuchar", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_ionoModel_neQuick, + { "neQuick", "lpp.neQuick", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_lpp_T_clockModel_model_1, + { "model-1", "lpp.model-1", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_clockModel_model_2, + { "model-2", "lpp.model-2", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_lpp_T_clockModel_model_3, + { "model-3", "lpp.model-3", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_lpp_T_clockModel_model_4, + { "model-4", "lpp.model-4", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_lpp_T_clockModel_model_5, + { "model-5", "lpp.model-5", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_lpp_T_orbitModel_model_1, + { "model-1", "lpp.model-1", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_orbitModel_model_2, + { "model-2", "lpp.model-2", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_lpp_T_orbitModel_model_3, + { "model-3", "lpp.model-3", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_lpp_T_orbitModel_model_4, + { "model-4", "lpp.model-4", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_lpp_T_orbitModel_model_5, + { "model-5", "lpp.model-5", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_lpp_T_almanacModel_model_1, + { "model-1", "lpp.model-1", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_almanacModel_model_2, + { "model-2", "lpp.model-2", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_lpp_T_almanacModel_model_3, + { "model-3", "lpp.model-3", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_lpp_T_almanacModel_model_4, + { "model-4", "lpp.model-4", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_lpp_T_almanacModel_model_5, + { "model-5", "lpp.model-5", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_lpp_T_almanacModel_model_6, + { "model-6", "lpp.model-6", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_lpp_T_utc_Model_model_1, + { "model-1", "lpp.model-1", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_utc_Model_model_2, + { "model-2", "lpp.model-2", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_lpp_T_utc_Model_model_3, + { "model-3", "lpp.model-3", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_lpp_T_utc_Model_model_4, + { "model-4", "lpp.model-4", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_lpp_T_gnss_ids_gps, + { "gps", "lpp.gps", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_gnss_ids_sbas, + { "sbas", "lpp.sbas", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_lpp_T_gnss_ids_qzss, + { "qzss", "lpp.qzss", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_lpp_T_gnss_ids_galileo, + { "galileo", "lpp.galileo", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_lpp_T_gnss_ids_glonass, + { "glonass", "lpp.glonass", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_lpp_T_sbas_IDs_waas, + { "waas", "lpp.waas", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_sbas_IDs_egnos, + { "egnos", "lpp.egnos", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_lpp_T_sbas_IDs_msas, + { "msas", "lpp.msas", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_lpp_T_sbas_IDs_gagan, + { "gagan", "lpp.gagan", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_lpp_T_requestedMeasurements_rsrpReq, + { "rsrpReq", "lpp.rsrpReq", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_requestedMeasurements_rsrqReq, + { "rsrqReq", "lpp.rsrqReq", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_lpp_T_requestedMeasurements_ueRxTxReq, + { "ueRxTxReq", "lpp.ueRxTxReq", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_lpp_T_ecid_MeasSupported_rsrpSup, + { "rsrpSup", "lpp.rsrpSup", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_lpp_T_ecid_MeasSupported_rsrqSup, + { "rsrqSup", "lpp.rsrqSup", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_lpp_T_ecid_MeasSupported_ueRxTxSup, + { "ueRxTxSup", "lpp.ueRxTxSup", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + +/*--- End of included file: packet-lpp-hfarr.c ---*/ +#line 71 "../../asn1/lpp/packet-lpp-template.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_lpp, + +/*--- Included file: packet-lpp-ettarr.c ---*/ +#line 1 "../../asn1/lpp/packet-lpp-ettarr.c" + &ett_lpp_LPP_Message, + &ett_lpp_Acknowledgement, + &ett_lpp_LPP_MessageBody, + &ett_lpp_T_c1, + &ett_lpp_T_messageClassExtension, + &ett_lpp_LPP_TransactionID, + &ett_lpp_RequestCapabilities, + &ett_lpp_T_criticalExtensions, + &ett_lpp_T_c1_01, + &ett_lpp_T_criticalExtensionsFuture, + &ett_lpp_RequestCapabilities_r9_IEs, + &ett_lpp_ProvideCapabilities, + &ett_lpp_T_criticalExtensions_01, + &ett_lpp_T_c1_02, + &ett_lpp_T_criticalExtensionsFuture_01, + &ett_lpp_ProvideCapabilities_r9_IEs, + &ett_lpp_RequestAssistanceData, + &ett_lpp_T_criticalExtensions_02, + &ett_lpp_T_c1_03, + &ett_lpp_T_criticalExtensionsFuture_02, + &ett_lpp_RequestAssistanceData_r9_IEs, + &ett_lpp_ProvideAssistanceData, + &ett_lpp_T_criticalExtensions_03, + &ett_lpp_T_c1_04, + &ett_lpp_T_criticalExtensionsFuture_03, + &ett_lpp_ProvideAssistanceData_r9_IEs, + &ett_lpp_RequestLocationInformation, + &ett_lpp_T_criticalExtensions_04, + &ett_lpp_T_c1_05, + &ett_lpp_T_criticalExtensionsFuture_04, + &ett_lpp_RequestLocationInformation_r9_IEs, + &ett_lpp_ProvideLocationInformation, + &ett_lpp_T_criticalExtensions_05, + &ett_lpp_T_c1_06, + &ett_lpp_T_criticalExtensionsFuture_05, + &ett_lpp_ProvideLocationInformation_r9_IEs, + &ett_lpp_Abort, + &ett_lpp_T_criticalExtensions_06, + &ett_lpp_T_c1_07, + &ett_lpp_T_criticalExtensionsFuture_06, + &ett_lpp_Abort_r9_IEs, + &ett_lpp_Error, + &ett_lpp_T_criticalExtensionsFuture_07, + &ett_lpp_Error_r9_IEs, + &ett_lpp_AccessTypes, + &ett_lpp_T_accessTypes, + &ett_lpp_CellGlobalIdEUTRA_AndUTRA, + &ett_lpp_T_plmn_Identity, + &ett_lpp_T_mcc, + &ett_lpp_T_mnc, + &ett_lpp_T_cellIdentity, + &ett_lpp_CellGlobalIdGERAN, + &ett_lpp_T_plmn_Identity_01, + &ett_lpp_T_mcc_01, + &ett_lpp_T_mnc_01, + &ett_lpp_ECGI, + &ett_lpp_T_mcc_02, + &ett_lpp_T_mnc_02, + &ett_lpp_Ellipsoid_Point, + &ett_lpp_Ellipsoid_PointWithUncertaintyCircle, + &ett_lpp_EllipsoidPointWithUncertaintyEllipse, + &ett_lpp_EllipsoidPointWithAltitude, + &ett_lpp_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, + &ett_lpp_EllipsoidArc, + &ett_lpp_EPDU_Sequence, + &ett_lpp_EPDU, + &ett_lpp_EPDU_Identifier, + &ett_lpp_HorizontalVelocity, + &ett_lpp_HorizontalWithVerticalVelocity, + &ett_lpp_HorizontalVelocityWithUncertainty, + &ett_lpp_HorizontalWithVerticalVelocityAndUncertainty, + &ett_lpp_LocationCoordinateTypes, + &ett_lpp_Polygon, + &ett_lpp_PolygonPoints, + &ett_lpp_PositioningModes, + &ett_lpp_T_posModes, + &ett_lpp_VelocityTypes, + &ett_lpp_CommonIEsRequestCapabilities, + &ett_lpp_CommonIEsProvideCapabilities, + &ett_lpp_CommonIEsRequestAssistanceData, + &ett_lpp_CommonIEsProvideAssistanceData, + &ett_lpp_CommonIEsRequestLocationInformation, + &ett_lpp_PeriodicalReportingCriteria, + &ett_lpp_TriggeredReportingCriteria, + &ett_lpp_QoS, + &ett_lpp_HorizontalAccuracy, + &ett_lpp_VerticalAccuracy, + &ett_lpp_ResponseTime, + &ett_lpp_CommonIEsProvideLocationInformation, + &ett_lpp_LocationCoordinates, + &ett_lpp_Velocity, + &ett_lpp_LocationError, + &ett_lpp_CommonIEsAbort, + &ett_lpp_CommonIEsError, + &ett_lpp_OTDOA_ProvideAssistanceData, + &ett_lpp_OTDOA_ReferenceCellInfo, + &ett_lpp_PRS_Info, + &ett_lpp_T_prs_MutingInfo_r9, + &ett_lpp_OTDOA_NeighbourCellInfoList, + &ett_lpp_OTDOA_NeighbourFreqInfo, + &ett_lpp_OTDOA_NeighbourCellInfoElement, + &ett_lpp_OTDOA_RequestAssistanceData, + &ett_lpp_OTDOA_ProvideLocationInformation, + &ett_lpp_OTDOA_SignalMeasurementInformation, + &ett_lpp_NeighbourMeasurementList, + &ett_lpp_NeighbourMeasurementElement, + &ett_lpp_OTDOA_MeasQuality, + &ett_lpp_OTDOA_RequestLocationInformation, + &ett_lpp_OTDOA_ProvideCapabilities, + &ett_lpp_T_otdoa_Mode, + &ett_lpp_SEQUENCE_SIZE_1_maxBands_OF_SupportedBandEUTRA, + &ett_lpp_SupportedBandEUTRA, + &ett_lpp_OTDOA_RequestCapabilities, + &ett_lpp_OTDOA_Error, + &ett_lpp_OTDOA_LocationServerErrorCauses, + &ett_lpp_OTDOA_TargetDeviceErrorCauses, + &ett_lpp_A_GNSS_ProvideAssistanceData, + &ett_lpp_GNSS_CommonAssistData, + &ett_lpp_GNSS_GenericAssistData, + &ett_lpp_GNSS_GenericAssistDataElement, + &ett_lpp_GNSS_ReferenceTime, + &ett_lpp_SEQUENCE_SIZE_1_16_OF_GNSS_ReferenceTimeForOneCell, + &ett_lpp_GNSS_ReferenceTimeForOneCell, + &ett_lpp_GNSS_SystemTime, + &ett_lpp_GPS_TOW_Assist, + &ett_lpp_GPS_TOW_AssistElement, + &ett_lpp_NetworkTime, + &ett_lpp_T_cellID, + &ett_lpp_T_eUTRA, + &ett_lpp_T_uTRA, + &ett_lpp_T_mode, + &ett_lpp_T_fdd, + &ett_lpp_T_tdd, + &ett_lpp_T_gSM, + &ett_lpp_GNSS_ReferenceLocation, + &ett_lpp_GNSS_IonosphericModel, + &ett_lpp_KlobucharModelParameter, + &ett_lpp_NeQuickModelParameter, + &ett_lpp_GNSS_EarthOrientationParameters, + &ett_lpp_GNSS_TimeModelList, + &ett_lpp_GNSS_TimeModelElement, + &ett_lpp_GNSS_DifferentialCorrections, + &ett_lpp_DGNSS_SgnTypeList, + &ett_lpp_DGNSS_SgnTypeElement, + &ett_lpp_DGNSS_SatList, + &ett_lpp_DGNSS_CorrectionsElement, + &ett_lpp_GNSS_NavigationModel, + &ett_lpp_GNSS_NavModelSatelliteList, + &ett_lpp_GNSS_NavModelSatelliteElement, + &ett_lpp_GNSS_ClockModel, + &ett_lpp_GNSS_OrbitModel, + &ett_lpp_StandardClockModelList, + &ett_lpp_StandardClockModelElement, + &ett_lpp_NAV_ClockModel, + &ett_lpp_CNAV_ClockModel, + &ett_lpp_GLONASS_ClockModel, + &ett_lpp_SBAS_ClockModel, + &ett_lpp_NavModelKeplerianSet, + &ett_lpp_NavModelNAV_KeplerianSet, + &ett_lpp_T_addNAVparam, + &ett_lpp_T_ephemSF1Rsvd, + &ett_lpp_NavModelCNAV_KeplerianSet, + &ett_lpp_NavModel_GLONASS_ECEF, + &ett_lpp_NavModel_SBAS_ECEF, + &ett_lpp_GNSS_RealTimeIntegrity, + &ett_lpp_GNSS_BadSignalList, + &ett_lpp_BadSignalElement, + &ett_lpp_GNSS_DataBitAssistance, + &ett_lpp_GNSS_DataBitsSatList, + &ett_lpp_GNSS_DataBitsSatElement, + &ett_lpp_GNSS_DataBitsSgnList, + &ett_lpp_GNSS_DataBitsSgnElement, + &ett_lpp_GNSS_AcquisitionAssistance, + &ett_lpp_GNSS_AcquisitionAssistList, + &ett_lpp_GNSS_AcquisitionAssistElement, + &ett_lpp_GNSS_Almanac, + &ett_lpp_GNSS_AlmanacList, + &ett_lpp_GNSS_AlmanacElement, + &ett_lpp_AlmanacKeplerianSet, + &ett_lpp_AlmanacNAV_KeplerianSet, + &ett_lpp_AlmanacReducedKeplerianSet, + &ett_lpp_AlmanacMidiAlmanacSet, + &ett_lpp_AlmanacGLONASS_AlmanacSet, + &ett_lpp_AlmanacECEF_SBAS_AlmanacSet, + &ett_lpp_GNSS_UTC_Model, + &ett_lpp_UTC_ModelSet1, + &ett_lpp_UTC_ModelSet2, + &ett_lpp_UTC_ModelSet3, + &ett_lpp_UTC_ModelSet4, + &ett_lpp_GNSS_AuxiliaryInformation, + &ett_lpp_GNSS_ID_GPS, + &ett_lpp_GNSS_ID_GPS_SatElement, + &ett_lpp_GNSS_ID_GLONASS, + &ett_lpp_GNSS_ID_GLONASS_SatElement, + &ett_lpp_A_GNSS_RequestAssistanceData, + &ett_lpp_GNSS_CommonAssistDataReq, + &ett_lpp_GNSS_GenericAssistDataReq, + &ett_lpp_GNSS_GenericAssistDataReqElement, + &ett_lpp_GNSS_ReferenceTimeReq, + &ett_lpp_SEQUENCE_SIZE_1_8_OF_GNSS_ID, + &ett_lpp_GNSS_ReferenceLocationReq, + &ett_lpp_GNSS_IonosphericModelReq, + &ett_lpp_GNSS_EarthOrientationParametersReq, + &ett_lpp_GNSS_TimeModelListReq, + &ett_lpp_GNSS_TimeModelElementReq, + &ett_lpp_GNSS_DifferentialCorrectionsReq, + &ett_lpp_GNSS_NavigationModelReq, + &ett_lpp_StoredNavListInfo, + &ett_lpp_SatListRelatedDataList, + &ett_lpp_SatListRelatedDataElement, + &ett_lpp_ReqNavListInfo, + &ett_lpp_T_clockModelID_PrefList, + &ett_lpp_T_orbitModelID_PrefList, + &ett_lpp_GNSS_RealTimeIntegrityReq, + &ett_lpp_GNSS_DataBitAssistanceReq, + &ett_lpp_GNSS_DataBitsReqSatList, + &ett_lpp_GNSS_DataBitsReqSatElement, + &ett_lpp_GNSS_AcquisitionAssistanceReq, + &ett_lpp_GNSS_AlmanacReq, + &ett_lpp_GNSS_UTC_ModelReq, + &ett_lpp_GNSS_AuxiliaryInformationReq, + &ett_lpp_A_GNSS_ProvideLocationInformation, + &ett_lpp_GNSS_SignalMeasurementInformation, + &ett_lpp_MeasurementReferenceTime, + &ett_lpp_T_networkTime, + &ett_lpp_T_eUTRA_01, + &ett_lpp_T_uTRA_01, + &ett_lpp_T_mode_01, + &ett_lpp_T_fdd_01, + &ett_lpp_T_tdd_01, + &ett_lpp_T_gSM_01, + &ett_lpp_T_referenceFrame, + &ett_lpp_GNSS_MeasurementList, + &ett_lpp_GNSS_MeasurementForOneGNSS, + &ett_lpp_GNSS_SgnMeasList, + &ett_lpp_GNSS_SgnMeasElement, + &ett_lpp_GNSS_SatMeasList, + &ett_lpp_GNSS_SatMeasElement, + &ett_lpp_GNSS_LocationInformation, + &ett_lpp_A_GNSS_RequestLocationInformation, + &ett_lpp_GNSS_PositioningInstructions, + &ett_lpp_A_GNSS_ProvideCapabilities, + &ett_lpp_GNSS_SupportList, + &ett_lpp_GNSS_SupportElement, + &ett_lpp_T_fta_MeasSupport, + &ett_lpp_AssistanceDataSupportList, + &ett_lpp_GNSS_CommonAssistanceDataSupport, + &ett_lpp_GNSS_ReferenceTimeSupport, + &ett_lpp_GNSS_ReferenceLocationSupport, + &ett_lpp_GNSS_IonosphericModelSupport, + &ett_lpp_T_ionoModel, + &ett_lpp_GNSS_EarthOrientationParametersSupport, + &ett_lpp_GNSS_GenericAssistanceDataSupport, + &ett_lpp_GNSS_GenericAssistDataSupportElement, + &ett_lpp_GNSS_TimeModelListSupport, + &ett_lpp_GNSS_DifferentialCorrectionsSupport, + &ett_lpp_GNSS_NavigationModelSupport, + &ett_lpp_T_clockModel, + &ett_lpp_T_orbitModel, + &ett_lpp_GNSS_RealTimeIntegritySupport, + &ett_lpp_GNSS_DataBitAssistanceSupport, + &ett_lpp_GNSS_AcquisitionAssistanceSupport, + &ett_lpp_GNSS_AlmanacSupport, + &ett_lpp_T_almanacModel, + &ett_lpp_GNSS_UTC_ModelSupport, + &ett_lpp_T_utc_Model, + &ett_lpp_GNSS_AuxiliaryInformationSupport, + &ett_lpp_A_GNSS_RequestCapabilities, + &ett_lpp_A_GNSS_Error, + &ett_lpp_GNSS_LocationServerErrorCauses, + &ett_lpp_GNSS_TargetDeviceErrorCauses, + &ett_lpp_GNSS_ID, + &ett_lpp_GNSS_ID_Bitmap, + &ett_lpp_T_gnss_ids, + &ett_lpp_GNSS_SignalID, + &ett_lpp_GNSS_SignalIDs, + &ett_lpp_SBAS_ID, + &ett_lpp_SBAS_IDs, + &ett_lpp_T_sbas_IDs, + &ett_lpp_SV_ID, + &ett_lpp_ECID_ProvideLocationInformation, + &ett_lpp_ECID_SignalMeasurementInformation, + &ett_lpp_MeasuredResultsList, + &ett_lpp_MeasuredResultsElement, + &ett_lpp_ECID_RequestLocationInformation, + &ett_lpp_T_requestedMeasurements, + &ett_lpp_ECID_ProvideCapabilities, + &ett_lpp_T_ecid_MeasSupported, + &ett_lpp_ECID_RequestCapabilities, + &ett_lpp_ECID_Error, + &ett_lpp_ECID_LocationServerErrorCauses, + &ett_lpp_ECID_TargetDeviceErrorCauses, + +/*--- End of included file: packet-lpp-ettarr.c ---*/ +#line 77 "../../asn1/lpp/packet-lpp-template.c" + }; + + + /* Register protocol */ + proto_lpp = proto_register_protocol(PNAME, PSNAME, PFNAME); + new_register_dissector("lpp", dissect_LPP_Message_PDU, 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) +{ + +} + + diff --git a/epan/dissectors/packet-nas_eps.c b/epan/dissectors/packet-nas_eps.c index 76941cb9b3..0201379b82 100644 --- a/epan/dissectors/packet-nas_eps.c +++ b/epan/dissectors/packet-nas_eps.c @@ -37,6 +37,7 @@ #include "packet-gsm_map.h" #include "packet-gsm_a_common.h" #include "packet-e212.h" +#include "packet-lcsap.h" #define PNAME "Non-Access-Stratum (NAS)PDU" #define PSNAME "NAS-EPS" @@ -47,6 +48,7 @@ static int proto_nas_eps = -1; /* Dissector handles */ static dissector_handle_t gsm_a_dtap_handle; +static dissector_handle_t lpp_handle; /* Forward declaration */ static void disect_nas_eps_esm_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset); @@ -195,7 +197,8 @@ static int hf_nas_eps_service_type = -1; static int hf_nas_eps_nas_msg_cont = -1; static int hf_nas_eps_gen_msg_cont = -1; -static int hf_nas_eps_emm_add_info = -1; + +static int hf_nas_eps_cmn_add_info = -1; /* ESM */ static int hf_nas_eps_msg_esm_type = -1; @@ -207,6 +210,7 @@ static int ett_nas_eps = -1; static int ett_nas_eps_esm_msg_cont = -1; static int ett_nas_eps_nas_msg_cont = -1; static int ett_nas_eps_gen_msg_cont = -1; +static int ett_nas_eps_cmn_add_info = -1; /* Global variables */ static packet_info *gpinfo; @@ -379,9 +383,25 @@ nas_eps_common_elem_idx_t; /* 9.9.2.0 Additional information */ static guint16 -de_eps_cmn_add_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) +de_eps_cmn_add_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_) { - proto_tree_add_item(tree, hf_nas_eps_emm_add_info, tvb, offset, len, ENC_NA); + proto_item *item; + proto_tree *sub_tree; + tvbuff_t *new_tvb; + + item = proto_tree_add_item(tree, hf_nas_eps_cmn_add_info, tvb, offset, len, ENC_NA); + sub_tree = proto_item_add_subtree(item, ett_nas_eps_cmn_add_info); + + new_tvb = tvb_new_subset(tvb, offset, len, len); + + switch (eps_nas_gen_msg_cont_type) { + case 1: + /* LPP */ + dissect_lcsap_Correlation_ID_PDU(new_tvb, pinfo, sub_tree); + break; + default: + break; + } return(len); } @@ -1940,6 +1960,9 @@ de_emm_gen_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 switch (eps_nas_gen_msg_cont_type) { case 1: /* LPP */ + if (lpp_handle) { + call_dissector(lpp_handle, new_tvb, pinfo, sub_tree); + } break; case 2: /* Location services */ @@ -2651,7 +2674,7 @@ nas_emm_attach_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin /* 59 T3423 value GPRS timer 9.9.3.16 O TV 2 */ ELEM_OPT_TV(0x59, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, " - T3423 value"); /* 4A Equivalent PLMNs PLMN list 9.9.2.8 O TLV 5-47 */ - ELEM_OPT_TLV(0x4a, NAS_PDU_TYPE_COMMON, DE_EPS_CMN_PLM_LST, " - Equivalent PLMNs"); + ELEM_OPT_TLV(0x4a, NAS_PDU_TYPE_COMMON, DE_PLMN_LIST, " - Equivalent PLMNs"); /* 34 Emergency Number List 9.9.3.37 O TLV 5-50 */ ELEM_OPT_TLV(0x34, GSM_A_PDU_TYPE_DTAP, DE_EMERGENCY_NUM_LIST, NULL); /* 64 EPS network feature support EPS network feature support 9.9.3.12A O TLV 3 */ @@ -3390,7 +3413,7 @@ nas_emm_trac_area_upd_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U /* 59 T3423 value GPRS timer 9.9.3.16 O TV 2 */ ELEM_OPT_TV(0x59, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER, " - T3423 value"); /* 4A Equivalent PLMNs PLMN list 9.9.2.8 O TLV 5-47 */ - ELEM_OPT_TLV(0x4a, NAS_PDU_TYPE_COMMON, DE_EPS_CMN_PLM_LST, " - PLMN list"); + ELEM_OPT_TLV(0x4a, NAS_PDU_TYPE_COMMON, DE_PLMN_LIST, " - PLMN list"); /* 34 Emergency Number List Emergency Number List 9.9.3.37 O TLV 5-50 */ ELEM_OPT_TLV(0x34, GSM_A_PDU_TYPE_DTAP, DE_EMERGENCY_NUM_LIST, NULL); /* 64 EPS network feature support EPS network feature support 9.9.3.12A O TLV 3 */ @@ -5332,8 +5355,8 @@ void proto_register_nas_eps(void) { FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, - { &hf_nas_eps_emm_add_info, - { "Additional information content", "nas_eps.emm.add_info", + { &hf_nas_eps_cmn_add_info, + { "Additional information content", "nas_eps.cmn.add_info", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, @@ -5361,7 +5384,7 @@ void proto_register_nas_eps(void) { }; /* Setup protocol subtree array */ -#define NUM_INDIVIDUAL_ELEMS 4 +#define NUM_INDIVIDUAL_ELEMS 5 gint *ett[NUM_INDIVIDUAL_ELEMS + NUM_NAS_EPS_COMMON_ELEM + NUM_NAS_MSG_EMM + NUM_NAS_EMM_ELEM+ @@ -5371,6 +5394,7 @@ void proto_register_nas_eps(void) { ett[1] = &ett_nas_eps_esm_msg_cont; ett[2] = &ett_nas_eps_nas_msg_cont; ett[3] = &ett_nas_eps_gen_msg_cont; + ett[4] = &ett_nas_eps_cmn_add_info; last_offset = NUM_INDIVIDUAL_ELEMS; @@ -5421,7 +5445,6 @@ void proto_register_nas_eps(void) { void proto_reg_handoff_nas_eps(void) { - gsm_a_dtap_handle = find_dissector("gsm_a_dtap"); - + lpp_handle = find_dissector("lpp"); }