LPP: upgrade dissector to v14.2.0
authorPascal Quantin <pascal.quantin@gmail.com>
Mon, 17 Jul 2017 21:26:40 +0000 (23:26 +0200)
committerAnders Broman <a.broman58@gmail.com>
Tue, 18 Jul 2017 04:38:05 +0000 (04:38 +0000)
Change-Id: I445c5ef34c1a688310042634eb38bed9b17cadaf
Reviewed-on: https://code.wireshark.org/review/22679
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
epan/dissectors/asn1/lpp/LPP.asn
epan/dissectors/asn1/lpp/lpp.cnf
epan/dissectors/asn1/lpp/packet-lpp-template.c
epan/dissectors/asn1/lpp/packet-lpp-template.h
epan/dissectors/packet-lpp.c
epan/dissectors/packet-lpp.h
tools/extract_asn1_from_spec.pl

index eda4605c76a029da534ecc7f13c017e579c99002..e8bd0d0b3591d0172a0b24a89add9ea164624fba 100644 (file)
@@ -1,4 +1,4 @@
--- 3GPP TS 36.355 V13.2.0 (2016-09)
+-- 3GPP TS 36.355 V14.2.0 (2017-06)
 --
 
 LPP-PDU-Definitions {
@@ -80,7 +80,6 @@ RequestCapabilities-r9-IEs ::= SEQUENCE {
                wlan-RequestCapabilities-r13    WLAN-RequestCapabilities-r13            OPTIONAL,       -- Need ON
                bt-RequestCapabilities-r13              BT-RequestCapabilities-r13                      OPTIONAL        -- Need ON
        ]]
-
 }
 
 
@@ -124,7 +123,12 @@ RequestAssistanceData-r9-IEs ::= SEQUENCE {
        a-gnss-RequestAssistanceData            A-GNSS-RequestAssistanceData            OPTIONAL,
        otdoa-RequestAssistanceData                     OTDOA-RequestAssistanceData                     OPTIONAL,
        epdu-RequestAssistanceData                      EPDU-Sequence                                           OPTIONAL,
-       ...
+       ...,
+       [[      sensor-RequestAssistanceData-r14
+                                                                               Sensor-RequestAssistanceData-r14        OPTIONAL,
+               tbs-RequestAssistanceData-r14   TBS-RequestAssistanceData-r14           OPTIONAL,
+               wlan-RequestAssistanceData-r14  WLAN-RequestAssistanceData-r14          OPTIONAL
+       ]]
 }
 
 
@@ -143,7 +147,12 @@ ProvideAssistanceData-r9-IEs ::= SEQUENCE {
        a-gnss-ProvideAssistanceData            A-GNSS-ProvideAssistanceData            OPTIONAL,       -- Need ON
        otdoa-ProvideAssistanceData                     OTDOA-ProvideAssistanceData                     OPTIONAL,       -- Need ON
        epdu-Provide-Assistance-Data            EPDU-Sequence                                           OPTIONAL,       -- Need ON
-       ...
+       ...,
+       [[
+       sensor-ProvideAssistanceData-r14        Sensor-ProvideAssistanceData-r14        OPTIONAL,       -- Need ON
+       tbs-ProvideAssistanceData-r14           TBS-ProvideAssistanceData-r14           OPTIONAL,       -- Need ON
+       wlan-ProvideAssistanceData-r14          WLAN-ProvideAssistanceData-r14          OPTIONAL        -- Need ON
+       ]]
 }
 
 
@@ -159,7 +168,7 @@ RequestLocationInformation ::= SEQUENCE {
 
 RequestLocationInformation-r9-IEs ::= SEQUENCE {
        commonIEsRequestLocationInformation
-                                                                       CommonIEsRequestLocationInformation             OPTIONAL,       -- Need ON
+                                                                               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
@@ -203,7 +212,6 @@ ProvideLocationInformation-r9-IEs ::= SEQUENCE {
        wlan-ProvideLocationInformation-r13     WLAN-ProvideLocationInformation-r13     OPTIONAL,
        bt-ProvideLocationInformation-r13       BT-ProvideLocationInformation-r13       OPTIONAL
        ]]
-
 }
 
 
@@ -239,7 +247,8 @@ Error-r9-IEs ::= SEQUENCE {
 AccessTypes ::= SEQUENCE {
        accessTypes             BIT STRING {    eutra           (0),
                                                                        utra            (1),
-                                                                       gsm                     (2)      } (SIZE (1..8)),
+                                                                       gsm                     (2),
+                                                                       nb-iot          (3) } (SIZE (1..8)),
        ...
 }
 
@@ -248,6 +257,8 @@ ARFCN-ValueEUTRA ::= INTEGER (0..maxEARFCN)
 
 ARFCN-ValueEUTRA-v9a0 ::=      INTEGER (maxEARFCN-Plus1..maxEARFCN2)
 
+ARFCN-ValueEUTRA-r14  ::=      INTEGER (0..maxEARFCN2)
+
 maxEARFCN                                      INTEGER ::= 65535       -- Maximum value of EUTRA carrier frequency
 
 maxEARFCN-Plus1                                INTEGER ::= 65536       -- Lowest value extended EARFCN range
@@ -258,6 +269,19 @@ maxEARFCN2                                 INTEGER ::= 262143      -- Highest value extended EARFCN range
 ARFCN-ValueUTRA ::=    INTEGER (0..16383)
 
 
+CarrierFreq-NB-r14 ::=         SEQUENCE {
+       carrierFreq-r14                         ARFCN-ValueEUTRA-r14,
+       carrierFreqOffset-r14           CarrierFreqOffsetNB-r14                         OPTIONAL,
+       ...
+}
+
+
+CarrierFreqOffsetNB-r14 ::=            ENUMERATED {
+                                                                       v-10, v-9, v-8, v-7, v-6, v-5, v-4, v-3, v-2, v-1, v-0dot5,
+                                                                         v0,  v1,      v2,      v3,  v4,  v5,  v6,  v7,  v8,  v9
+                                                                       }
+
+
 CellGlobalIdEUTRA-AndUTRA ::= SEQUENCE {
        plmn-Identity           SEQUENCE {
                                                        mcc             SEQUENCE (SIZE (3))     OF INTEGER (0..9),
@@ -471,7 +495,10 @@ CommonIEsRequestLocationInformation ::= SEQUENCE {
        environment                                     Environment                                     OPTIONAL,       -- Need ON
        locationCoordinateTypes         LocationCoordinateTypes         OPTIONAL,       -- Need ON
        velocityTypes                           VelocityTypes                           OPTIONAL,       -- Need ON
-       ...
+       ...,
+       [[
+               messageSizeLimitNB-r14  MessageSizeLimitNB-r14          OPTIONAL        -- Need ON
+       ]]
 }
 
 LocationInformationType ::= ENUMERATED {
@@ -513,7 +540,9 @@ QoS ::= SEQUENCE {
        verticalAccuracy                        VerticalAccuracy                OPTIONAL,       -- Need ON
        responseTime                            ResponseTime                    OPTIONAL,       -- Need ON
        velocityRequest                         BOOLEAN,
-       ...
+       ...,
+       [[      responseTimeNB-r14              ResponseTimeNB-r14              OPTIONAL        -- Need ON
+       ]]
 }
 
 HorizontalAccuracy ::= SEQUENCE {
@@ -535,6 +564,12 @@ ResponseTime ::= SEQUENCE {
        ]]
 }
 
+ResponseTimeNB-r14 ::= SEQUENCE {
+       timeNB-r14                                                      INTEGER (1..512),
+       responseTimeEarlyFixNB-r14                      INTEGER (1..512)                OPTIONAL,               -- Need ON
+       ...
+}
+
 Environment ::= ENUMERATED {
        badArea,
        notBadArea,
@@ -542,6 +577,11 @@ Environment ::= ENUMERATED {
        ...
 }
 
+MessageSizeLimitNB-r14 ::= SEQUENCE {
+       measurementLimit-r14                            INTEGER (1..512)                OPTIONAL,               -- Need ON
+       ...
+}
+
 
 CommonIEsProvideLocationInformation ::= SEQUENCE {
        locationEstimate                        LocationCoordinates             OPTIONAL,
@@ -628,7 +668,11 @@ OTDOA-ProvideAssistanceData ::= SEQUENCE {
        otdoa-ReferenceCellInfo                 OTDOA-ReferenceCellInfo                         OPTIONAL,       -- Need ON
        otdoa-NeighbourCellInfo                 OTDOA-NeighbourCellInfoList                     OPTIONAL,       -- Need ON
        otdoa-Error                                             OTDOA-Error                                                     OPTIONAL,       -- Need ON
-       ...
+       ...,
+       [[
+         otdoa-ReferenceCellInfoNB-r14 OTDOA-ReferenceCellInfoNB-r14           OPTIONAL,       -- Need ON
+         otdoa-NeighbourCellInfoNB-r14 OTDOA-NeighbourCellInfoListNB-r14       OPTIONAL        -- Need ON
+       ]]
 }
 
 
@@ -642,24 +686,53 @@ OTDOA-ReferenceCellInfo ::= SEQUENCE {
        prsInfo                                         PRS-Info                                        OPTIONAL,               -- Cond PRS
        ...,
        [[ earfcnRef-v9a0                       ARFCN-ValueEUTRA-v9a0           OPTIONAL                -- Cond NotSameAsServ2
+       ]],
+       [[ tpId-r14                                     INTEGER (0..4095)                       OPTIONAL,               -- Need ON
+               cpLengthCRS-r14                 ENUMERATED { normal, extended, ... }
+                                                                                                                       OPTIONAL,               -- Cond CRS
+               sameMBSFNconfigRef-r14  BOOLEAN                                         OPTIONAL,               -- Need ON
+               dlBandwidth-r14                 ENUMERATED {n6, n15, n25, n50, n75, n100}
+                                                                                                                       OPTIONAL,               -- Cond NotSameAsServ3
+               addPRSconfigRef-r14             SEQUENCE (SIZE (1..maxAddPRSconfig-r14)) OF PRS-Info
+                                                                                                                       OPTIONAL                -- Need ON
        ]]
 }
 
+maxAddPRSconfig-r14                    INTEGER ::= 2
+
 
 PRS-Info ::= SEQUENCE {
        prs-Bandwidth                   ENUMERATED { n6, n15, n25, n50, n75, n100, ... },
        prs-ConfigurationIndex  INTEGER (0..4095),
-       numDL-Frames                    ENUMERATED {sf-1, sf-2, sf-4, sf-6, ...},
+       numDL-Frames                    ENUMERATED {sf-1, sf-2, sf-4, sf-6, ..., sf-add-v1420},
        ...,
        prs-MutingInfo-r9               CHOICE {
                po2-r9                                  BIT STRING (SIZE(2)),
                po4-r9                                  BIT STRING (SIZE(4)),
                po8-r9                                  BIT STRING (SIZE(8)),
                po16-r9                                 BIT STRING (SIZE(16)),
-               ...
-       }                                                                                                               OPTIONAL                                -- Need OP
+               ...,
+               po32-v1420                              BIT STRING (SIZE(32)),
+               po64-v1420                              BIT STRING (SIZE(64)),
+               po128-v1420                             BIT STRING (SIZE(128)),
+               po256-v1420                             BIT STRING (SIZE(256)),
+               po512-v1420                             BIT STRING (SIZE(512)),
+               po1024-v1420                    BIT STRING (SIZE(1024))
+       }                                                                                                               OPTIONAL,                               -- Need OP
+       [[ prsID-r14                    INTEGER (0..4095)                               OPTIONAL,                               -- Need ON
+               add-numDL-Frames-r14    INTEGER (1..160)                        OPTIONAL,                               -- Cond sf-add
+               prsOccGroupLen-r14      ENUMERATED {g2, g4, g8, g16, g32, g64, g128,... }
+                                                                                                                       OPTIONAL,                               -- Cond Occ-Grp
+               prsHoppingInfo-r14      CHOICE {
+                       nb2-r14                         INTEGER (0.. maxAvailNarrowBands-Minus1-r14),
+                       nb4-r14                         SEQUENCE (SIZE (3))
+                                                                               OF INTEGER (1.. maxAvailNarrowBands-Minus1-r14)
+       }                                                                                                               OPTIONAL                                -- Cond PRS-FH
+       ]]
 }
 
+maxAvailNarrowBands-Minus1-r14         INTEGER ::= 15  -- Maximum number of narrowbands minus 1
+
 
 OTDOA-NeighbourCellInfoList ::= SEQUENCE (SIZE (1..maxFreqLayers)) OF OTDOA-NeighbourFreqInfo
 OTDOA-NeighbourFreqInfo ::= SEQUENCE (SIZE (1..24)) OF OTDOA-NeighbourCellInfoElement
@@ -679,22 +752,125 @@ OTDOA-NeighbourCellInfoElement ::= SEQUENCE {
        expectedRSTD-Uncertainty                        INTEGER (0..1023),
        ...,
        [[ earfcn-v9a0                                  ARFCN-ValueEUTRA-v9a0   OPTIONAL                -- Cond NotSameAsRef5
+       ]],
+       [[ tpId-r14                                             INTEGER (0..4095)               OPTIONAL,               -- Need ON
+               prs-only-tp-r14                         ENUMERATED { true }             OPTIONAL,               -- Cond TBS
+               cpLengthCRS-r14                         ENUMERATED { normal, extended, ... }
+                                                                                                                       OPTIONAL,               -- Cond CRS
+               sameMBSFNconfigNeighbour-r14    BOOLEAN                         OPTIONAL,               -- Need ON
+               dlBandwidth-r14                         ENUMERATED {n6, n15, n25, n50, n75, n100}
+                                                                                                                       OPTIONAL,               -- Cond NotSameAsRef6
+               addPRSconfigNeighbour-r14       SEQUENCE (SIZE (1..maxAddPRSconfig-r14)) OF
+                                                                               Add-PRSconfigNeighbourElement-r14
+                                                                                                                       OPTIONAL                -- Need ON
        ]]
 }
 
+Add-PRSconfigNeighbourElement-r14 ::= SEQUENCE {
+       add-prsInfo-r14                                 PRS-Info                                OPTIONAL,               -- Cond NotSameAsRef7
+       ...
+}
+
 maxFreqLayers  INTEGER ::= 3
 
 
+OTDOA-ReferenceCellInfoNB-r14 ::= SEQUENCE {
+       physCellIdNB-r14                                INTEGER (0..503)                        OPTIONAL,       -- Cond NoPRS-AD1
+       cellGlobalIdNB-r14                              ECGI                                            OPTIONAL,       -- Cond NoPRS-AD2
+       carrierFreqRef-r14                              CarrierFreq-NB-r14                      OPTIONAL,       -- Cond NotSameAsServ1
+       earfcn-r14                                              ARFCN-ValueEUTRA-r14            OPTIONAL,       -- Cond Inband
+       eutra-NumCRS-Ports-r14                  ENUMERATED {ports1-or-2, ports4}
+                                                                                                                               OPTIONAL,       -- Cond NoPRS-AD3
+       otdoa-SIB1-NB-repetitions-r14   ENUMERATED { r4, r8, r16 }      OPTIONAL,       -- Cond NotSameAsServ2
+       nprsInfo-r14                                    PRS-Info-NB-r14                         OPTIONAL,       -- Cond NPRS
+       ...
+}
+
+
+PRS-Info-NB-r14 ::= SEQUENCE (SIZE (1..maxCarrier-r14)) OF NPRS-Info-r14
+
+NPRS-Info-r14 ::= SEQUENCE {
+       operationModeInfoNPRS-r14       ENUMERATED { inband, standalone },
+       nprs-carrier-r14                        CarrierFreq-NB-r14      OPTIONAL,       -- Cond Standalone/Guardband
+       nprsSequenceInfo-r14            INTEGER (0..174)        OPTIONAL,       -- Cond Inband
+       nprsID-r14                                      INTEGER (0..4095)       OPTIONAL,       -- Cond NPRS-ID
+       partA-r14                                       SEQUENCE {
+               nprsBitmap-r14                  CHOICE {
+                       subframePattern10-r14   BIT STRING (SIZE (10)),
+                       subframePattern40-r14   BIT STRING (SIZE (40))
+               },
+               nprs-MutingInfoA-r14    CHOICE {
+                       po2-r14                                 BIT STRING (SIZE(2)),
+                       po4-r14                                 BIT STRING (SIZE(4)),
+                       po8-r14                                 BIT STRING (SIZE(8)),
+                       po16-r14                                BIT STRING (SIZE(16)),
+                       ...
+               }                                                                                                                       OPTIONAL,               -- Cond MutingA
+               ...
+       }                                                                                                                               OPTIONAL,               -- Cond PartA
+       partB-r14                                       SEQUENCE {
+               nprs-Period-r14                 ENUMERATED { ms160, ms320, ms640, ms1280, ... },
+               nprs-startSF-r14                ENUMERATED { zero, one-eighth, two-eighths, three-eighths,
+                                                                                        four-eighths, five-eighths, six-eighths,
+                                                                                        seven-eighths, ...},
+               nprs-NumSF-r14                  ENUMERATED { sf10, sf20, sf40, sf80, sf160, sf320,
+                                                                                        sf640, sf1280, ...},
+               nprs-MutingInfoB-r14    CHOICE {
+                       po2-r14                                 BIT STRING (SIZE(2)),
+                       po4-r14                                 BIT STRING (SIZE(4)),
+                       po8-r14                                 BIT STRING (SIZE(8)),
+                       po16-r14                                BIT STRING (SIZE(16)),
+                       ...
+               }                                                                                                                       OPTIONAL,               -- Cond MutingB
+               ...
+       }                                                                                                                               OPTIONAL,               -- Cond PartB
+       ...
+}
+
+maxCarrier-r14 INTEGER ::= 5
+
+
+OTDOA-NeighbourCellInfoListNB-r14 ::= SEQUENCE (SIZE (1..maxCells-r14)) OF
+                                                                                                               OTDOA-NeighbourCellInfoNB-r14
+
+OTDOA-NeighbourCellInfoNB-r14 ::= SEQUENCE {
+       physCellIdNB-r14                                INTEGER (0..503)                OPTIONAL,               -- Cond NoPRS-AD1
+       cellGlobalIdNB-r14                              ECGI                                    OPTIONAL,               -- Cond NoPRS-AD2
+       carrierFreq-r14                                 CarrierFreq-NB-r14              OPTIONAL,               -- Cond NotSameAsRef1
+       earfcn-r14                                              ARFCN-ValueEUTRA-r14    OPTIONAL,               -- Cond Inband
+       eutra-NumCRS-Ports-r14                  ENUMERATED {ports-1-or-2, ports-4, ...}
+                                                                                                                       OPTIONAL,               -- Cond NotsameAsRef2
+       otdoa-SIB1-NB-repetitions-r14   ENUMERATED { r4, r8, r16 }
+                                                                                                                       OPTIONAL,               -- Cond NotSameAsRef3
+       nprsInfo-r14                                    PRS-Info-NB-r14                 OPTIONAL,               -- Cond NotsameAsRef4
+       nprs-slotNumberOffset-r14               INTEGER (0..19)                 OPTIONAL,               -- Cond NotsameAsRef5
+       nprs-SFN-Offset-r14                             INTEGER (0..63)                 OPTIONAL,               -- Cond NotsameAsRef6
+       nprs-SubframeOffset-r14                 INTEGER (0..1279)               OPTIONAL,               -- Need OP
+       expectedRSTD-r14                                INTEGER (0..16383)              OPTIONAL,               -- Cond NoPRS-AD3
+       expectedRSTD-Uncertainty-r14    INTEGER (0..1023)               OPTIONAL,               -- Cond NoPRS-AD3
+       prsNeighbourCellIndex-r14               INTEGER (1..72)                 OPTIONAL,               -- Cond PRS-AD
+       ...
+}
+
+maxCells-r14   INTEGER ::= 72
+
+
 OTDOA-RequestAssistanceData ::= SEQUENCE {
        physCellId              INTEGER (0..503),
-       ...
+       ...,
+       [[
+         adType-r14    BIT STRING { prs (0), nprs (1) } (SIZE (1..8))          OPTIONAL
+       ]]
 }
 
 
 OTDOA-ProvideLocationInformation ::= SEQUENCE {
        otdoaSignalMeasurementInformation       OTDOA-SignalMeasurementInformation      OPTIONAL,
        otdoa-Error                                                     OTDOA-Error                                                     OPTIONAL,
-       ...
+       ...,
+       [[
+               otdoaSignalMeasurementInformation-NB-r14        OTDOA-SignalMeasurementInformation-NB-r14       OPTIONAL
+       ]]
 }
 
 
@@ -707,6 +883,15 @@ OTDOA-SignalMeasurementInformation ::= SEQUENCE {
        neighbourMeasurementList        NeighbourMeasurementList,
        ...,
        [[ earfcnRef-v9a0               ARFCN-ValueEUTRA-v9a0   OPTIONAL                -- Cond NotSameAsRef1
+       ]],
+       [[ tpIdRef-r14                  INTEGER (0..4095)               OPTIONAL,               -- Cond ProvidedByServer0
+               prsIdRef-r14            INTEGER (0..4095)               OPTIONAL,               -- Cond ProvidedByServer1
+               additionalPathsRef-r14
+                                                       AdditionalPathList-r14  OPTIONAL,
+               nprsIdRef-r14           INTEGER (0..4095)               OPTIONAL,               -- Cond ProvidedByServer2
+               carrierFreqOffsetNB-Ref-r14
+                                                       CarrierFreqOffsetNB-r14 OPTIONAL,               -- Cond NB-IoT
+               hyperSFN-r14            BIT STRING (SIZE (10))  OPTIONAL                -- Cond H-SFN
        ]]
 }
 
@@ -720,9 +905,58 @@ NeighbourMeasurementElement ::= SEQUENCE {
        rstd-Quality                    OTDOA-MeasQuality,
        ...,
        [[ earfcnNeighbour-v9a0 ARFCN-ValueEUTRA-v9a0   OPTIONAL                -- Cond NotSameAsRef3
+       ]],
+       [[ tpIdNeighbour-r14    INTEGER (0..4095)               OPTIONAL,               -- Cond ProvidedByServer0
+               prsIdNeighbour-r14      INTEGER (0..4095)               OPTIONAL,               -- Cond ProvidedByServer1
+               delta-rstd-r14          INTEGER (0..5)                  OPTIONAL,
+               additionalPathsNeighbour-r14
+                                                       AdditionalPathList-r14  OPTIONAL,
+               nprsIdNeighbour-r14     INTEGER (0..4095)               OPTIONAL,               -- Cond ProvidedByServer2
+               carrierFreqOffsetNB-Neighbour-r14
+                                                       CarrierFreqOffsetNB-r14 OPTIONAL                -- Cond NB-IoT
        ]]
 }
 
+AdditionalPathList-r14 ::= SEQUENCE (SIZE(1..maxPaths-r14)) OF AdditionalPath-r14
+
+maxPaths-r14    INTEGER ::= 2
+
+
+OTDOA-SignalMeasurementInformation-NB-r14 ::= SEQUENCE {
+       systemFrameNumber-r14                   BIT STRING (SIZE (10)),
+       physCellIdRef-r14                               INTEGER (0..503),
+       cellGlobalIdRef-r14                             ECGI                                    OPTIONAL,
+       earfcnRef-r14                                   ARFCN-ValueEUTRA-r14    OPTIONAL,       -- Cond NotSameAsRef0
+       referenceQuality-r14                    OTDOA-MeasQuality               OPTIONAL,
+       neighbourMeasurementList-r14    NeighbourMeasurementList-NB-r14,
+       tpIdRef-r14                                             INTEGER (0..4095)               OPTIONAL,       -- Cond ProvidedByServer0
+       prsIdRef-r14                                    INTEGER (0..4095)               OPTIONAL,       -- Cond ProvidedByServer1
+       additionalPathsRef-r14                  AdditionalPathList-r14  OPTIONAL,
+       nprsIdRef-r14                                   INTEGER (0..4095)               OPTIONAL,       -- Cond ProvidedByServer2
+       carrierFreqOffsetNB-Ref-r14             CarrierFreqOffsetNB-r14 OPTIONAL,       -- Cond NB-IoT
+       hyperSFN-r14                                    BIT STRING (SIZE (10))  OPTIONAL,       -- Cond H-SFN
+       ...
+}
+
+NeighbourMeasurementList-NB-r14 ::= SEQUENCE (SIZE(1..24)) OF NeighbourMeasurementElement-NB-r14
+
+NeighbourMeasurementElement-NB-r14 ::= SEQUENCE {
+       physCellIdNeighbour-r14         INTEGER (0..503),
+       cellGlobalIdNeighbour-r14       ECGI                                    OPTIONAL,
+       earfcnNeighbour-r14                     ARFCN-ValueEUTRA-r14    OPTIONAL,               -- Cond NotSameAsRef2
+       rstd-r14                                        INTEGER (0..12711),
+       rstd-Quality-r14                        OTDOA-MeasQuality,
+       tpIdNeighbour-r14                       INTEGER (0..4095)               OPTIONAL,               -- Cond ProvidedByServer0
+       prsIdNeighbour-r14                      INTEGER (0..4095)               OPTIONAL,               -- Cond ProvidedByServer1
+       delta-rstd-r14                          INTEGER (0..5)                  OPTIONAL,
+       additionalPathsNeighbour-r14
+                                                               AdditionalPathList-r14  OPTIONAL,
+       nprsIdNeighbour-r14                     INTEGER (0..4095)               OPTIONAL,               -- Cond ProvidedByServer2
+       carrierFreqOffsetNB-Neighbour-r14
+                                                               CarrierFreqOffsetNB-r14 OPTIONAL,               -- Cond NB-IoT
+       ...
+}
+
 
 OTDOA-MeasQuality ::= SEQUENCE {
        error-Resolution                BIT STRING (SIZE (2)),
@@ -732,20 +966,45 @@ OTDOA-MeasQuality ::= SEQUENCE {
 }
 
 
+AdditionalPath-r14 ::= SEQUENCE {
+       relativeTimeDifference-r14      INTEGER (-256..255),
+       path-Quality-r14                        OTDOA-MeasQuality                               OPTIONAL,
+       ...
+}
+
+
 OTDOA-RequestLocationInformation ::= SEQUENCE {
        assistanceAvailability          BOOLEAN,
-       ...
+       ...,
+       [[
+               multipathRSTD-r14               ENUMERATED { requested }        OPTIONAL,               -- Need ON
+               maxNoOfRSTDmeas-r14             INTEGER (1..32)                         OPTIONAL        -- Need ON
+       ]]
 }
 
 
 OTDOA-ProvideCapabilities ::= SEQUENCE {
-       otdoa-Mode              BIT STRING {    ue-assisted (0) } (SIZE (1..8)),
+       otdoa-Mode              BIT STRING {    ue-assisted             (0),
+                                                                       ue-assisted-NB-r14      (1) } (SIZE (1..8)),
        ...,
        supportedBandListEUTRA          SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA             OPTIONAL,
        supportedBandListEUTRA-v9a0     SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA-v9a0
                                                                                                                                                                                OPTIONAL,
        interFreqRSTDmeasurement-r10            ENUMERATED { supported }                                                OPTIONAL,
-       additionalNeighbourCellInfoList-r10     ENUMERATED { supported }                                                OPTIONAL
+       additionalNeighbourCellInfoList-r10     ENUMERATED { supported }                                                OPTIONAL,
+       prs-id-r14                                                      ENUMERATED { supported }                                                OPTIONAL,
+       tp-separation-via-muting-r14            ENUMERATED { supported }                                                OPTIONAL,
+       additional-prs-config-r14                       ENUMERATED { supported }                                                OPTIONAL,
+       prs-based-tbs-r14                                       ENUMERATED { supported }                                                OPTIONAL,
+       additionalPathsReport-r14                       ENUMERATED { supported }                                                OPTIONAL,
+       densePrsConfig-r14                                      ENUMERATED { supported }                                                OPTIONAL,
+       maxSupportedPrsBandwidth-r14            ENUMERATED { n6, n15, n25, n50, n75, n100, ...} OPTIONAL,
+       prsOccGroup-r14                                         ENUMERATED { supported }                                                OPTIONAL,
+       prsFrequencyHopping-r14                         ENUMERATED { supported }                                                OPTIONAL,
+       maxSupportedPrsConfigs-r14                      ENUMERATED { c2, c3 }                                                   OPTIONAL,
+       periodicalReporting-r14                         ENUMERATED { supported }                                                OPTIONAL,
+       multiPrbNprs-r14                                        ENUMERATED { supported }                                                OPTIONAL,
+       idleStateForMeasurements-r14            ENUMERATED { required }                                                 OPTIONAL
 }
 
 maxBands INTEGER ::= 64
@@ -910,7 +1169,13 @@ NetworkTime ::= SEQUENCE {
                                                        cellGlobalIdGERAN       CellGlobalIdGERAN                       OPTIONAL,       -- Need ON
                                                        ...
                                                        },
-                               ...
+                               ...,
+                               nBIoT-r14       SEQUENCE {
+                                                       nbPhysCellId-r14        INTEGER (0..503),
+                                                       nbCellGlobalId-r14      ECGI                                            OPTIONAL,       -- Need ON
+                                                       nbCarrierFreq-r14       CarrierFreq-NB-r14,
+                                                       ...
+                                                       }
                                },
        ...
 }
@@ -1832,7 +2097,15 @@ MeasurementReferenceTime  ::= SEQUENCE {
                                deltaGNSS-TOD           INTEGER (0 .. 127)              OPTIONAL,
                                ...
                                },
-               ...
+               ...,
+               nbIoT-r14
+                               SEQUENCE {
+                               nbPhysCellId-r14        INTEGER (0..503),
+                               nbCellGlobalId-r14      ECGI                                            OPTIONAL,
+                               sfn-r14                         BIT STRING (SIZE (10)),
+                               hyperSFN-r14            BIT STRING (SIZE (10))          OPTIONAL,
+                               ...
+                               }
                }               OPTIONAL,
        ...
 }
@@ -1899,7 +2172,12 @@ A-GNSS-ProvideCapabilities ::= SEQUENCE {
        assistanceDataSupportList       AssistanceDataSupportList               OPTIONAL,
        locationCoordinateTypes         LocationCoordinateTypes                 OPTIONAL,
        velocityTypes                           VelocityTypes                                   OPTIONAL,
-       ...
+       ...,
+       [[ periodicalReportingNotSupported-r14
+                                                               PositioningModes                                OPTIONAL,
+               idleStateForMeasurements-r14
+                                                               ENUMERATED { required }                 OPTIONAL
+       ]]
 }
 
 GNSS-SupportList ::= SEQUENCE (SIZE(1..16)) OF GNSS-SupportElement
@@ -2199,6 +2477,12 @@ MeasuredResultsElement ::= SEQUENCE {
        ue-RxTxTimeDiff INTEGER (0..4095)                                       OPTIONAL,
        ...,
        [[ arfcnEUTRA-v9a0              ARFCN-ValueEUTRA-v9a0           OPTIONAL                -- Cond EARFCN-max
+       ]],
+       [[ nrsrp-Result-r14             INTEGER (0..113)                        OPTIONAL,
+          nrsrq-Result-r14             INTEGER (0..74)                         OPTIONAL,
+          carrierFreqOffsetNB-r14
+                                                       CarrierFreqOffsetNB-r14         OPTIONAL,               -- Cond NB-IoT
+          hyperSFN-r14                 BIT STRING (SIZE (10))          OPTIONAL
        ]]
 }
 
@@ -2206,7 +2490,9 @@ MeasuredResultsElement ::= SEQUENCE {
 ECID-RequestLocationInformation ::= SEQUENCE {
        requestedMeasurements           BIT STRING {    rsrpReq         (0),
                                                                                                rsrqReq         (1),
-                                                                                               ueRxTxReq       (2)     } (SIZE(1..8)),
+                                                                                               ueRxTxReq       (2),
+                                                                                               nrsrpReq-r14    (3),
+                                                                                               nrsrqReq-r14    (4)} (SIZE(1..8)),
        ...
 }
 
@@ -2214,9 +2500,15 @@ ECID-RequestLocationInformation ::= SEQUENCE {
 ECID-ProvideCapabilities ::= SEQUENCE {
        ecid-MeasSupported      BIT STRING {    rsrpSup         (0),
                                                                                rsrqSup         (1),
-                                                                               ueRxTxSup       (2)     } (SIZE(1..8)),
+                                                                               ueRxTxSup       (2),
+                                                                               nrsrpSup-r14    (3),
+                                                                               nrsrqSup-r14    (4)} (SIZE(1..8)),
        ...,
-       [[      ueRxTxSupTDD-r13                ENUMERATED { true }                             OPTIONAL
+       [[      ueRxTxSupTDD-r13                                        ENUMERATED { true }                             OPTIONAL
+       ]],
+       [[      periodicalReporting-r14                         ENUMERATED { supported }                OPTIONAL,
+               triggeredReporting-r14                          ENUMERATED { supported }                OPTIONAL,
+               idleStateForMeasurements-r14            ENUMERATED { required }                 OPTIONAL
        ]]
 }
 
@@ -2250,20 +2542,24 @@ ECID-TargetDeviceErrorCauses ::= SEQUENCE {
        rsrpMeasurementNotPossible                              NULL            OPTIONAL,
        rsrqMeasurementNotPossible                              NULL            OPTIONAL,
        ueRxTxMeasurementNotPossible                    NULL            OPTIONAL,
-       ...
+       ...,
+       [[
+         nrsrpMeasurementNotPossible-r14               NULL            OPTIONAL,
+         nrsrqMeasurementNotPossible-r14               NULL            OPTIONAL
+       ]]
 }
 
 
 TBS-ProvideLocationInformation-r13 ::= SEQUENCE {
        tbs-MeasurementInformation-r13                  TBS-MeasurementInformation-r13          OPTIONAL,
-               tbs-Error-r13                                   TBS-Error-r13                           OPTIONAL,
-               ...
+       tbs-Error-r13                                                   TBS-Error-r13                                           OPTIONAL,
+       ...
 }
 
 
 TBS-MeasurementInformation-r13 ::= SEQUENCE {
-       measurementReferenceTime-r13    UTCTime OPTIONAL,
-       mbs-SgnMeasList-r13                             MBS-BeaconMeasList-r13 OPTIONAL, -- Cond MBS
+       measurementReferenceTime-r13    UTCTime                                         OPTIONAL,
+       mbs-SgnMeasList-r13                             MBS-BeaconMeasList-r13          OPTIONAL,       -- Cond MBS
        ...
 }
 
@@ -2271,23 +2567,45 @@ TBS-MeasurementInformation-r13 ::= SEQUENCE {
 MBS-BeaconMeasList-r13 ::= SEQUENCE (SIZE(1..64)) OF MBS-BeaconMeasElement-r13
 
 MBS-BeaconMeasElement-r13 ::= SEQUENCE {
-       transmitterID-r13 INTEGER (0..32767),
-       codePhase-r13 INTEGER (0..2097151),
-       codePhaseRMSError-r13 INTEGER (0..63),
-       ...
+       transmitterID-r13                               INTEGER (0..32767),
+       codePhase-r13                                   INTEGER (0..2097151),
+       codePhaseRMSError-r13                   INTEGER (0..63),
+       ...,
+       [[ rssi-r14                                             INTEGER (-130..-30)             OPTIONAL
+       ]]
 }
 
 
 TBS-RequestLocationInformation-r13 ::= SEQUENCE {
        mbsSgnMeasListReq-r13                           BOOLEAN,
-       ...
+       ...,
+       [[      mbsAssistanceAvailability-r14   BOOLEAN                                                 OPTIONAL,       -- Need ON
+               mbsRequestedMeasurements-r14    BIT STRING {
+                                                                               rssi            (0)} (SIZE(1..8))       OPTIONAL        -- Need ON
+       ]]
 }
 
 
 TBS-ProvideCapabilities-r13 ::= SEQUENCE {
-       tbs-Modes-r13                   BIT STRING {    standalone      (0),
-                                                                                       ue-assisted     (1) } (SIZE (1..8)),
-...
+       tbs-Modes-r13                   BIT STRING {    standalone              (0),
+                                                                                       ue-assisted             (1),
+                                                                                       ue-based                (2)} (SIZE (1..8)),
+       ...,
+       [[      mbs-AssistanceDataSupportList-r14       MBS-AssistanceDataSupportList-r14               OPTIONAL,
+               periodicalReportingSupported-r14        PositioningModes                                                OPTIONAL,
+               mbs-ConfigSupport-r14   BIT STRING {    tb1             (0),
+                                                                                               tb2             (1),
+                                                                                               tb3             (2),
+                                                                                               tb4             (3)} (SIZE (1..8))                      OPTIONAL,
+               mbs-IdleStateForMeasurements-r14                ENUMERATED { required }                         OPTIONAL
+       ]]
+}
+
+
+MBS-AssistanceDataSupportList-r14 ::= SEQUENCE {
+       mbs-AcquisitionAssistanceDataSupport-r14        BOOLEAN,
+       mbs-AlmanacAssistanceDataSupport-r14            BOOLEAN,
+       ...
 }
 
 
@@ -2295,6 +2613,7 @@ TBS-RequestCapabilities-r13 ::= SEQUENCE {
        ...
 }
 
+
 TBS-Error-r13 ::= CHOICE {
        locationServerErrorCauses-r13           TBS-LocationServerErrorCauses-r13,
        targetDeviceErrorCauses-r13                     TBS-TargetDeviceErrorCauses-r13,
@@ -2304,7 +2623,9 @@ TBS-Error-r13 ::= CHOICE {
 
 TBS-LocationServerErrorCauses-r13 ::= SEQUENCE {
        cause-r13               ENUMERATED      {       undefined,
-                                                                       ...
+                                                                       ...,
+                                                                       assistanceDataNotSupportedByServer-v1420,
+                                                                       assistanceDataSupportedButCurrentlyNotAvailableByServer-v1420
                                                                },
        ...
 }
@@ -2313,36 +2634,104 @@ TBS-LocationServerErrorCauses-r13 ::= SEQUENCE {
 TBS-TargetDeviceErrorCauses-r13 ::= SEQUENCE {
        cause-r13               ENUMERATED {    undefined,
                                                                        thereWereNotEnoughMBSBeaconsReceived,
-                                                                       ...
-                                                       },
+                                                                       ...,
+                                                                       assistanceDataMissing-v1420
+                                                               },
+       ...
+}
+
+
+TBS-ProvideAssistanceData-r14 ::= SEQUENCE {
+       tbs-AssistanceDataList-r14      TBS-AssistanceDataList-r14      OPTIONAL,       -- Need ON
+       tbs-Error-r14                           TBS-Error-r13                           OPTIONAL,       -- Need ON
+       ...
+}
+
+
+TBS-AssistanceDataList-r14 ::= SEQUENCE {
+       mbs-AssistanceDataList-r14              MBS-AssistanceDataList-r14              OPTIONAL,       -- Need ON
+       ...
+}
+
+MBS-AssistanceDataList-r14 ::= SEQUENCE (SIZE (1..maxMBS-r14)) OF MBS-AssistanceDataElement-r14
+
+MBS-AssistanceDataElement-r14 ::= SEQUENCE {
+       mbs-AlmanacAssistance-r14               MBS-AlmanacAssistance-r14                       OPTIONAL,       -- Need ON
+       mbs-AcquisitionAssistance-r14   MBS-AcquisitionAssistance-r14           OPTIONAL,       -- Need ON
+       ...
+}
+
+maxMBS-r14             INTEGER ::= 64
+
+
+MBS-AlmanacAssistance-r14 ::= SEQUENCE {
+       transmitterID-r14                       INTEGER (0..32767),
+       transmitterLatitude-r14         BIT STRING (SIZE (26)),
+       transmitterLongitude-r14        BIT STRING (SIZE (27)),
+       transmitterAltitude-r14         BIT STRING (SIZE (15)),
+       timeCorrection-r14                      INTEGER (0..25)         OPTIONAL,       -- Need ON
+       ...
+}
+
+
+MBS-AcquisitionAssistance-r14 ::= SEQUENCE {
+       transmitterID-r14                               INTEGER (0..32767)                                              OPTIONAL,       -- Need ON
+       mbsConfiguration-r14                    ENUMERATED {tb1, tb2, tb3, tb4, ...}    OPTIONAL,       -- Need ON
+       pnCodeIndex-r14                                 INTEGER (1..128)                                                OPTIONAL,       -- Need ON
+       freq-r14                                                INTEGER (919750000..927250000)                  OPTIONAL,       -- Need ON
+       ...
+}
+
+
+TBS-RequestAssistanceData-r14 ::= SEQUENCE {
+       mbs-AlmanacAssistanceDataReq-r14                BOOLEAN,
+       mbs-AcquisitionAssistanceDataReq-r14    BOOLEAN,
        ...
 }
 
 
 Sensor-ProvideLocationInformation-r13 ::= SEQUENCE {
        sensor-MeasurementInformation-r13               Sensor-MeasurementInformation-r13               OPTIONAL,
-       sensor-Error-r13                                                                        Sensor-Error-r13        OPTIONAL,
+       sensor-Error-r13                                                Sensor-Error-r13                                                OPTIONAL,
        ...
 }
 
 
 Sensor-MeasurementInformation-r13 ::= SEQUENCE {
-       measurementReferenceTime-r13                    UTCTime         OPTIONAL,
-       uncompensatedBarometricPressure-r13     INTEGER (30000..115000) OPTIONAL, -- Cond Barometer
-       ...
+       measurementReferenceTime-r13                    UTCTime                                         OPTIONAL,
+       uncompensatedBarometricPressure-r13     INTEGER (30000..115000)         OPTIONAL, -- Cond Barometer
+       ...,
+       [[
+       uncertainty-r14                                 SEQUENCE {
+                                                                       range-r14               INTEGER (0..1000),
+                                                                       confidence-r14  INTEGER (1..100)
+                                                                       }                                                                       OPTIONAL
+       ]]
 }
 
 
 Sensor-RequestLocationInformation-r13 ::= SEQUENCE {
        uncompensatedBarometricPressureReq-r13          BOOLEAN,
-       ...
+       ...,
+       [[      assistanceAvailability-r14                              BOOLEAN         OPTIONAL        -- Need ON
+       ]]
 }
 
 
 Sensor-ProvideCapabilities-r13 ::= SEQUENCE {
        sensor-Modes-r13                        BIT STRING {    standalone      (0),
-                                                                                               ue-assisted     (1)  } (SIZE (1..8)),
+                                                                                               ue-assisted     (1),
+                                                                                               ue-based        (2)} (SIZE (1..8)),
+       ...,
+       [[      sensor-AssistanceDataSupportList-r14    Sensor-AssistanceDataSupportList-r14    OPTIONAL,
+               periodicalReportingSupported-r14                PositioningModes                                                OPTIONAL,
+               idleStateForMeasurements-r14                    ENUMERATED { required }                                 OPTIONAL
+       ]]
+}
+
+Sensor-AssistanceDataSupportList-r14 ::= SEQUENCE {
        ...
+
 }
 
 
@@ -2350,6 +2739,7 @@ Sensor-RequestCapabilities-r13 ::= SEQUENCE {
        ...
 }
 
+
 Sensor-Error-r13 ::= CHOICE {
        locationServerErrorCauses-r13           Sensor-LocationServerErrorCauses-r13,
        targetDeviceErrorCauses-r13                     Sensor-TargetDeviceErrorCauses-r13,
@@ -2358,24 +2748,47 @@ Sensor-Error-r13 ::= CHOICE {
 
 
 Sensor-LocationServerErrorCauses-r13 ::= SEQUENCE {
-       cause-r13                                       ENUMERATED      {       undefined,
-                                                                                               ...
-                                                                                       },
-...
+       cause-r13               ENUMERATED      {       undefined,
+                                                                       ...,
+                                                                       assistanceDataNotSupportedByServer-v1420,
+                                                                       assistanceDataSupportedButCurrentlyNotAvailableByServer-v1420
+                                                                       },
+       ...
 }
 
 
 Sensor-TargetDeviceErrorCauses-r13 ::= SEQUENCE {
        cause-r13                       ENUMERATED              {       undefined,
-                                                                                       ...
+                                                                                       ...,
+                                                                                       assistanceDataMissing-v1420
                                                                                },
-...
+       ...
+}
+
+
+Sensor-ProvideAssistanceData-r14 ::= SEQUENCE {
+       sensor-AssistanceDataList-r14           Sensor-AssistanceDataList-r14           OPTIONAL,       -- Need ON
+       sensor-Error-r14                                        Sensor-Error-r13                                        OPTIONAL,       -- Need ON
+       ...
+}
+
+
+Sensor-AssistanceDataList-r14::= SEQUENCE {
+       refPressure-r14         INTEGER (-20000..10000),
+       refPosition-r14         EllipsoidPointWithAltitudeAndUncertaintyEllipsoid       OPTIONAL,       -- Need ON
+       refTemperature-r14      INTEGER (-64..63)                                                                       OPTIONAL,       -- Need ON
+       ...
+}
+
+
+Sensor-RequestAssistanceData-r14 ::= SEQUENCE {
+       ...
 }
 
 
 WLAN-ProvideLocationInformation-r13 ::= SEQUENCE {
        wlan-MeasurementInformation-r13         WLAN-MeasurementInformation-r13         OPTIONAL,
-       wlan-Error-r13                                  WLAN-Error-r13                          OPTIONAL,
+       wlan-Error-r13                                          WLAN-Error-r13                                          OPTIONAL,
        ...
 }
 
@@ -2385,12 +2798,13 @@ WLAN-MeasurementInformation-r13 ::= SEQUENCE {
        wlan-MeasurementList-r13                        WLAN-MeasurementList-r13        OPTIONAL,
        ...
 }
+
 WLAN-MeasurementList-r13 ::= SEQUENCE (SIZE(1..maxWLAN-AP-r13)) OF WLAN-MeasurementElement-r13
 
 WLAN-MeasurementElement-r13 ::= SEQUENCE {
        wlan-AP-Identifier-r13          WLAN-AP-Identifier-r13,
-       rssi-r13                                        INTEGER(-127..128)      OPTIONAL,
-       rtt-r13                                         WLAN-RTT-r13    OPTIONAL,
+       rssi-r13                                        INTEGER (-127..128)                                     OPTIONAL,
+       rtt-r13                                         WLAN-RTT-r13                                            OPTIONAL,
        apChannelFrequency-r13          INTEGER (0..256)                                        OPTIONAL,
        servingFlag-r13                         BOOLEAN                                                         OPTIONAL,
        ...
@@ -2403,34 +2817,46 @@ WLAN-AP-Identifier-r13 ::= SEQUENCE {
 }
 
 WLAN-RTT-r13 ::= SEQUENCE {
-       rttValue-r13     INTEGER(0..16777215),
+       rttValue-r13     INTEGER (0..16777215),
        rttUnits-r13     ENUMERATED {   microseconds,
                                                                        hundredsofnanoseconds,
                                                                        tensofnanoseconds,
                                                                        nanoseconds,
                                                                        tenthsofnanoseconds,
                                                                        ... },
-       rttAccuracy-r13  INTEGER(0..255)                OPTIONAL,
+       rttAccuracy-r13  INTEGER (0..255)                                                               OPTIONAL,
        ...
 }
 
 maxWLAN-AP-r13                 INTEGER ::= 64
 
+
 WLAN-RequestLocationInformation-r13 ::= SEQUENCE {
        requestedMeasurements-r13       BIT STRING {
                                                                                        rssi            (0),
                                                                                        rtt                     (1)} (SIZE(1..8)),
-       ...
+       ...,
+       [[      assistanceAvailability-r14      BOOLEAN                 OPTIONAL        -- Need ON
+       ]]
 }
 
 
 WLAN-ProvideCapabilities-r13 ::= SEQUENCE {
-       wlan-Modes-r13                  BIT STRING {    standalone              (0),
-                                                                                       ue-assisted             (1)}    (SIZE (1..8)),
+       wlan-Modes-r13                  BIT STRING      {       standalone              (0),
+                                                                                       ue-assisted             (1),
+                                                                                       ue-based                (2)}    (SIZE (1..8)),
        wlan-MeasSupported-r13  BIT STRING      {
                                                                                        rssi-r13                (0),
                                                                                        rtt-r13                 (1)}    (SIZE(1..8)),
-       ...
+       ...     ,
+       [[      wlan-AP-AD-Supported-r14
+                                                       BIT STRING {    ap-identifier   (0),
+                                                                                       ap-location             (1)}    (SIZE (1..8))
+                                                                                                                                                                       OPTIONAL,
+               periodicalReportingSupported-r14        PositioningModes                                                OPTIONAL,
+               idleStateForMeasurements-r14
+                                                       ENUMERATED {    required        }                                                       OPTIONAL
+       ]]
 }
 
 
@@ -2447,13 +2873,19 @@ WLAN-Error-r13 ::= CHOICE {
 
 
 WLAN-LocationServerErrorCauses-r13 ::= SEQUENCE {
-       cause-r13                                                               ENUMERATED      {undefined,     ...},
-       ...
+       cause-r13                                                               ENUMERATED      {undefined,
+                                                                                                               ...,
+                                                                                                               requestedADNotAvailable-v1420,
+                                                                                                               notAllrequestedADAvailable-v1420
+                                                                                                               },
+       ...,
+       [[      apLocationDataUnavailable-r14           NULL    OPTIONAL                -- Need ON
+       ]]
 }
 
 
 WLAN-TargetDeviceErrorCauses-r13 ::= SEQUENCE {
-       cause-r13                                                                       ENUMERATED {undefined,
+       cause-r13                                                               ENUMERATED {undefined,
                                                                                                                requestedMeasurementsNotAvailable,
                                                                                                                notAllrequestedMeasurementsPossible,
                                                                                                                ...
@@ -2464,9 +2896,101 @@ WLAN-TargetDeviceErrorCauses-r13 ::= SEQUENCE {
 }
 
 
+WLAN-ProvideAssistanceData-r14 ::= SEQUENCE {
+       wlan-DataSet-r14        SEQUENCE (SIZE (1..maxWLAN-DataSets-r14)) OF WLAN-DataSet-r14
+                                                                                                                                                       OPTIONAL,       -- Need ON
+       wlan-Error-r14          WLAN-Error-r13                                                                          OPTIONAL,       -- Need ON
+       ...
+}
+
+maxWLAN-DataSets-r14           INTEGER ::= 8
+
+
+WLAN-DataSet-r14 ::= SEQUENCE {
+       wlan-AP-List-r14                                SEQUENCE (SIZE (1..maxWLAN-AP-r14)) OF WLAN-AP-Data-r14,
+       supportedChannels-11a-r14               SupportedChannels-11a-r14               OPTIONAL,       -- Need ON
+       supportedChannels-11bg-r14              SupportedChannels-11bg-r14              OPTIONAL,       -- Need ON
+       ...
+}
+
+SupportedChannels-11a-r14 ::= SEQUENCE {
+       ch34-r14                BOOLEAN,
+       ch36-r14                BOOLEAN,
+       ch38-r14                BOOLEAN,
+       ch40-r14                BOOLEAN,
+       ch42-r14                BOOLEAN,
+       ch44-r14                BOOLEAN,
+       ch46-r14                BOOLEAN,
+       ch48-r14                BOOLEAN,
+       ch52-r14                BOOLEAN,
+       ch56-r14                BOOLEAN,
+       ch60-r14                BOOLEAN,
+       ch64-r14                BOOLEAN,
+       ch149-r14               BOOLEAN,
+       ch153-r14               BOOLEAN,
+       ch157-r14               BOOLEAN,
+       ch161-r14               BOOLEAN
+}
+
+SupportedChannels-11bg-r14 ::= SEQUENCE {
+       ch1-r14                 BOOLEAN,
+       ch2-r14                 BOOLEAN,
+       ch3-r14                 BOOLEAN,
+       ch4-r14                 BOOLEAN,
+       ch5-r14                 BOOLEAN,
+       ch6-r14                 BOOLEAN,
+       ch7-r14                 BOOLEAN,
+       ch8-r14                 BOOLEAN,
+       ch9-r14                 BOOLEAN,
+       ch10-r14                BOOLEAN,
+       ch11-r14                BOOLEAN,
+       ch12-r14                BOOLEAN,
+       ch13-r14                BOOLEAN,
+       ch14-r14                BOOLEAN
+}
+
+maxWLAN-AP-r14         INTEGER ::= 128
+
+
+
+WLAN-AP-Data-r14 ::= SEQUENCE {
+       wlan-AP-Identifier-r14                          WLAN-AP-Identifier-r13,
+       wlan-AP-Location-r14                            WLAN-AP-Location-r14            OPTIONAL,       -- Need ON
+       ...
+}
+
+WLAN-AP-Location-r14 ::= SEQUENCE {
+       locationDataLCI-r14                                     LocationDataLCI-r14,
+       ...
+}
+
+LocationDataLCI-r14 ::= SEQUENCE {
+       latitudeUncertainty-r14                         BIT STRING (SIZE (6)),
+       latitude-r14                                            BIT STRING (SIZE (34)),
+       longitudeUncertainty-r14                        BIT STRING (SIZE (6)),
+       longitude-r14                                           BIT STRING (SIZE (34)),
+       altitudeUncertainty-r14                         BIT STRING (SIZE (6))           OPTIONAL,       -- Need ON
+       altitude-r14                                            BIT STRING (SIZE (30))          OPTIONAL,       -- Need ON
+       datum-r14                                                       BIT STRING (SIZE (8)),
+       ...
+}
+
+
+WLAN-RequestAssistanceData-r14 ::= SEQUENCE {
+       requestedAD-r14                 BIT STRING {    ap-identifier           (0),
+                                                                                       ap-location                     (1)}    (SIZE (1..8)),
+       visibleAPs-r14                  SEQUENCE (SIZE (1..maxVisibleAPs-r14)) OF WLAN-AP-Identifier-r13        OPTIONAL,
+       wlan-AP-StoredData-r14  SEQUENCE (SIZE (1..maxKnownAPs-r14)) OF WLAN-AP-Identifier-r13  OPTIONAL,
+       ...
+}
+
+maxVisibleAPs-r14                      INTEGER ::= 32
+maxKnownAPs-r14                                INTEGER ::= 2048
+
+
 BT-ProvideLocationInformation-r13 ::= SEQUENCE {
        bt-MeasurementInformation-r13           BT-MeasurementInformation-r13   OPTIONAL,
-       bt-Error-r13                                            BT-Error-r13                    OPTIONAL,
+       bt-Error-r13                                            BT-Error-r13                                    OPTIONAL,
        ...
 }
 
@@ -2476,17 +3000,19 @@ BT-MeasurementInformation-r13 ::= SEQUENCE {
        bt-MeasurementList-r13                          BT-MeasurementList-r13          OPTIONAL,
        ...
 }
+
 BT-MeasurementList-r13 ::= SEQUENCE (SIZE(1..maxBT-Beacon-r13)) OF BT-MeasurementElement-r13
 
 
 BT-MeasurementElement-r13 ::= SEQUENCE {
        btAddr-r13                                              BIT STRING (SIZE (48)),
-       rssi-r13                                                INTEGER(-128..127)              OPTIONAL,
+       rssi-r13                                                INTEGER (-128..127)                             OPTIONAL,
        ...
 }
 
 maxBT-Beacon-r13                               INTEGER ::= 32
 
+
 BT-RequestLocationInformation-r13 ::= SEQUENCE {
        requestedMeasurements-r13       BIT STRING {
                                                                                        rssi            (0)} (SIZE(1..8)),
@@ -2498,7 +3024,13 @@ BT-ProvideCapabilities-r13 ::= SEQUENCE {
        bt-Modes-r13                    BIT STRING {    standalone              (0),
                                                                                        ue-assisted             (1)}    (SIZE (1..8)),
        bt-MeasSupported-r13    BIT STRING {    rssi-r13                (0)}    (SIZE (1..8)),
-       ...
+       ...,
+       [[
+       idleStateForMeasurements-r14
+                                                       ENUMERATED {    required        }                                                       OPTIONAL,
+       periodicalReportingSupported-r14
+                                                       PositioningModes                                                                                OPTIONAL
+       ]]
 }
 
 
@@ -2521,13 +3053,13 @@ BT-LocationServerErrorCauses-r13 ::= SEQUENCE {
 
 
 BT-TargetDeviceErrorCauses-r13 ::= SEQUENCE {
-       cause-r13                                                                       ENUMERATED {undefined,
+       cause-r13                                                               ENUMERATED {undefined,
                                                                                                                requestedMeasurementsNotAvailable,
                                                                                                                notAllrequestedMeasurementsPossible,
                                                                                                                ...
                                                                                                                },
        bt-Beacon-rssiMeasurementNotPossible-r13        NULL            OPTIONAL,
-...
+       ...
 }
 
 
index ec4e084bf491ea85b6255e107cdda9cc425bfa76..b35ca98b08a43888de08a493574d5fdb53888b27 100644 (file)
@@ -1,6 +1,6 @@
 # lpp.cnf
 # lpp conformation file
-# Copyright 2011-2016 Pascal Quantin
+# Copyright 2011-2017 Pascal Quantin
 
 #.OPT
 PER
@@ -118,6 +118,9 @@ EPDU-ID STRINGS=VALS(lpp_ePDU_ID_vals)
     if (len >= 3) {
       proto_tree_add_item(subtree, hf_lpp_T_accessTypes_gsm, accessTypes_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
+    if (len >= 4) {
+      proto_tree_add_item(subtree, hf_lpp_T_accessTypes_nb_iot, accessTypes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
   }
 
 #.TYPE_ATTR
@@ -304,6 +307,12 @@ ResponseTime/time DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
 #.TYPE_ATTR
 ResponseTime/eag_1/responseTimeEarlyFix-r12 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
 
+#.TYPE_ATTR
+ResponseTimeNB-r14/timeNB-r14 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_seconds
+
+#.TYPE_ATTR
+MessageSizeLimitNB-r14/measurementLimit-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_measurementLimit_fmt)
+
 #.FN_BODY LocationSource-r13 VAL_PTR = &locSource_tvb LEN_PTR = &len
   tvbuff_t *locSource_tvb = NULL;
   int len;
@@ -336,6 +345,24 @@ OTDOA-NeighbourCellInfoElement/expectedRSTD DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(
 #.TYPE_ATTR
 OTDOA-NeighbourCellInfoElement/expectedRSTD-Uncertainty DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_expectedRSTD_Uncertainty_fmt)
 
+#.FN_BODY OTDOA-RequestAssistanceData/eag_1/adType-r14 VAL_PTR = &adType_tvb LEN_PTR = &len
+  tvbuff_t *adType_tvb = NULL;
+  int len;
+
+%(DEFAULT_BODY)s
+  if(adType_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_adType_r14_prs, adType_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_adType_r14_nprs, adType_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
+
+
 #.TYPE_ATTR
 NeighbourMeasurementElement/rstd DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_rstd_fmt)
 
@@ -378,6 +405,9 @@ OTDOA-MeasQuality/error-Value TYPE=FT_UINT8 DISPLAY=BASE_DEC|BASE_EXT_STRING STR
 #.TYPE_ATTR
 OTDOA-MeasQuality/error-NumSamples TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_error_NumSamples_vals)
 
+#.TYPE_ATTR
+AdditionalPath-r14/relativeTimeDifference-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_relativeTimeDifference_fmt)
+
 #.FN_BODY OTDOA-ProvideCapabilities/otdoa-Mode VAL_PTR = &otdoa_Mode_tvb LEN_PTR = &len
   tvbuff_t *otdoa_Mode_tvb = NULL;
   int len;
@@ -390,6 +420,9 @@ OTDOA-MeasQuality/error-NumSamples TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(l
     if (len >= 1) {
       proto_tree_add_item(subtree, hf_lpp_T_otdoa_Mode_ue_assisted, otdoa_Mode_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_otdoa_Mode_ue_assisted_NB_r14, otdoa_Mode_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
   }
 
 #.TYPE_ATTR
@@ -1634,6 +1667,12 @@ MeasuredResultsElement/rsrq-Result DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_rsrq_
 #.TYPE_ATTR
 MeasuredResultsElement/ue-RxTxTimeDiff DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_ue_RxTxTimeDiff_fmt)
 
+#.TYPE_ATTR
+MeasuredResultsElement/eag_2/nrsrp-Result-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_nrsrp_Result_fmt)
+
+#.TYPE_ATTR
+MeasuredResultsElement/eag_2/nrsrq-Result-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_nrsrq_Result_fmt)
+
 #.FN_BODY ECID-RequestLocationInformation/requestedMeasurements VAL_PTR = &requestedMeasurements_tvb LEN_PTR = &len
   tvbuff_t *requestedMeasurements_tvb = NULL;
   int len;
@@ -1652,6 +1691,12 @@ MeasuredResultsElement/ue-RxTxTimeDiff DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_u
     if (len >= 3) {
       proto_tree_add_item(subtree, hf_lpp_T_requestedMeasurements_ueRxTxReq, requestedMeasurements_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
+    if (len >= 4) {
+      proto_tree_add_item(subtree, hf_lpp_T_requestedMeasurements_nrsrpReq_r14, requestedMeasurements_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 5) {
+      proto_tree_add_item(subtree, hf_lpp_T_requestedMeasurements_nrsrqReq_r14, requestedMeasurements_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
   }
 
 #.FN_BODY ECID-ProvideCapabilities/ecid-MeasSupported VAL_PTR = &ecid_MeasSupported_tvb LEN_PTR = &len
@@ -1672,6 +1717,12 @@ MeasuredResultsElement/ue-RxTxTimeDiff DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_u
     if (len >= 3) {
       proto_tree_add_item(subtree, hf_lpp_T_ecid_MeasSupported_ueRxTxSup, ecid_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
+    if (len >= 4) {
+      proto_tree_add_item(subtree, hf_lpp_T_ecid_MeasSupported_nrsrpSup_r14, ecid_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 5) {
+      proto_tree_add_item(subtree, hf_lpp_T_ecid_MeasSupported_nrsrqSup_r14, ecid_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
   }
 
 #.TYPE_ATTR
@@ -1680,6 +1731,23 @@ MBS-BeaconMeasElement-r13/codePhase-r13 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_
 #.TYPE_ATTR
 MBS-BeaconMeasElement-r13/codePhaseRMSError-r13 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_codePhaseRMSError_fmt)
 
+#.TYPE_ATTR
+MBS-BeaconMeasElement-r13/eag_1/rssi-r14 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_dbm
+
+#.FN_BODY TBS-RequestLocationInformation-r13/eag_1/mbsRequestedMeasurements-r14 VAL_PTR = &mbsRequestedMeasurements_tvb LEN_PTR = &len
+  tvbuff_t *mbsRequestedMeasurements_tvb = NULL;
+  int len;
+
+%(DEFAULT_BODY)s
+  if(mbsRequestedMeasurements_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_mbsRequestedMeasurements_r14_rssi, mbsRequestedMeasurements_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
+
 #.FN_BODY TBS-ProvideCapabilities-r13/tbs-Modes-r13 VAL_PTR = &tbs_Modes_tvb LEN_PTR = &len
   tvbuff_t *tbs_Modes_tvb = NULL;
   int len;
@@ -1695,11 +1763,82 @@ MBS-BeaconMeasElement-r13/codePhaseRMSError-r13 DISPLAY=BASE_CUSTOM STRINGS=CF_F
     if (len >= 2) {
       proto_tree_add_item(subtree, hf_lpp_T_tbs_Modes_r13_ue_assisted, tbs_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
+    if (len >= 3) {
+      proto_tree_add_item(subtree, hf_lpp_T_tbs_Modes_r13_ue_based, tbs_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
+
+#.FN_BODY TBS-ProvideCapabilities-r13/eag_1/mbs-ConfigSupport-r14 VAL_PTR = &mbs_ConfigSupport_tvb LEN_PTR = &len
+  tvbuff_t *mbs_ConfigSupport_tvb = NULL;
+  int len;
+
+%(DEFAULT_BODY)s
+  if(mbs_ConfigSupport_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_mbs_ConfigSupport_r14_tb1, mbs_ConfigSupport_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_mbs_ConfigSupport_r14_tb2, mbs_ConfigSupport_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 3) {
+      proto_tree_add_item(subtree, hf_lpp_T_mbs_ConfigSupport_r14_tb3, mbs_ConfigSupport_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 4) {
+      proto_tree_add_item(subtree, hf_lpp_T_mbs_ConfigSupport_r14_tb4, mbs_ConfigSupport_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
   }
 
 #.TYPE_ATTR
 Sensor-MeasurementInformation-r13/uncompensatedBarometricPressure-r13 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_pa
 
+#.TYPE_ATTR
+Sensor-MeasurementInformation-r13/eag_1/uncertainty-r14/range-r14 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_pa
+
+#.TYPE_ATTR
+Sensor-MeasurementInformation-r13/eag_1/uncertainty-r14/confidence-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_confidence_fmt)
+
+#.FN_BODY MBS-AlmanacAssistance-r14/transmitterLatitude-r14 VAL_PTR = &transmitterLatitude_tvb HF_INDEX=-1
+  tvbuff_t *transmitterLatitude_tvb = NULL;
+  guint32 val;
+
+%(DEFAULT_BODY)s
+  val = tvb_get_bits32(transmitterLatitude_tvb, 0, 26, ENC_BIG_ENDIAN);
+  actx->created_item = proto_tree_add_uint(tree, hf_index, transmitterLatitude_tvb, 0, 4, val);
+
+#.TYPE_ATTR
+MBS-AlmanacAssistance-r14/transmitterLatitude-r14 TYPE=FT_UINT32 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_transmitterLatitude_fmt)
+
+#.FN_BODY MBS-AlmanacAssistance-r14/transmitterLongitude-r14 VAL_PTR = &transmitterLongitude_tvb HF_INDEX=-1
+  tvbuff_t *transmitterLongitude_tvb = NULL;
+  guint32 val;
+
+%(DEFAULT_BODY)s
+  val = tvb_get_bits32(transmitterLongitude_tvb, 0, 27, ENC_BIG_ENDIAN);
+  actx->created_item = proto_tree_add_uint(tree, hf_index, transmitterLongitude_tvb, 0, 4, val);
+
+#.TYPE_ATTR
+MBS-AlmanacAssistance-r14/transmitterLongitude-r14 TYPE=FT_UINT32 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_transmitterLongitude_fmt)
+
+#.FN_BODY MBS-AlmanacAssistance-r14/transmitterAltitude-r14 VAL_PTR = &transmitterAltitude_tvb HF_INDEX=-1
+  tvbuff_t *transmitterAltitude_tvb = NULL;
+  guint32 val;
+
+%(DEFAULT_BODY)s
+  val = tvb_get_bits16(transmitterAltitude_tvb, 0, 15, ENC_BIG_ENDIAN);
+  actx->created_item = proto_tree_add_uint(tree, hf_index, transmitterAltitude_tvb, 0, 2, val);
+
+#.TYPE_ATTR
+MBS-AlmanacAssistance-r14/transmitterAltitude-r14 TYPE=FT_UINT16 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_transmitterAltitude_fmt)
+
+#.TYPE_ATTR
+MBS-AlmanacAssistance-r14/timeCorrection-r14 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_nanoseconds
+
+#.TYPE_ATTR
+MBS-AcquisitionAssistance-r14/freq-r14 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_hz
+
 #.FN_BODY Sensor-ProvideCapabilities-r13/sensor-Modes-r13 VAL_PTR = &sensor_Modes_tvb LEN_PTR = &len
   tvbuff_t *sensor_Modes_tvb = NULL;
   int len;
@@ -1715,8 +1854,17 @@ Sensor-MeasurementInformation-r13/uncompensatedBarometricPressure-r13 DISPLAY=BA
     if (len >= 2) {
       proto_tree_add_item(subtree, hf_lpp_T_sensor_Modes_r13_ue_assisted, sensor_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
+    if (len >= 3) {
+      proto_tree_add_item(subtree, hf_lpp_T_sensor_Modes_r13_ue_based, sensor_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
   }
 
+#.TYPE_ATTR
+Sensor-AssistanceDataList-r14/refPressure-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_refPressure_fmt)
+
+#.TYPE_ATTR
+Sensor-AssistanceDataList-r14/refTemperature-r14 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lpp_refTemperature_fmt)
+
 #.TYPE_ATTR
 WLAN-MeasurementElement-r13/rssi-r13 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_dbm
 
@@ -1764,6 +1912,9 @@ WLAN-AP-Identifier-r13/ssid-r13 TYPE=FT_STRING DISPLAY=STR_ASCII
     if (len >= 2) {
       proto_tree_add_item(subtree, hf_lpp_T_wlan_Modes_r13_ue_assisted, wlan_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
+    if (len >= 3) {
+      proto_tree_add_item(subtree, hf_lpp_T_wlan_Modes_r13_ue_based, wlan_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
   }
 
 #.FN_BODY WLAN-ProvideCapabilities-r13/wlan-MeasSupported-r13 VAL_PTR = &wlan_MeasSupported_tvb LEN_PTR = &len
@@ -1783,6 +1934,40 @@ WLAN-AP-Identifier-r13/ssid-r13 TYPE=FT_STRING DISPLAY=STR_ASCII
     }
   }
 
+#.FN_BODY WLAN-ProvideCapabilities-r13/eag_1/wlan-AP-AD-Supported-r14 VAL_PTR = &wlan_AP_AD_Supported_tvb LEN_PTR = &len
+  tvbuff_t *wlan_AP_AD_Supported_tvb = NULL;
+  int len;
+
+%(DEFAULT_BODY)s
+  if(wlan_AP_AD_Supported_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_wlan_AP_AD_Supported_r14_ap_identifier, wlan_AP_AD_Supported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_wlan_AP_AD_Supported_r14_ap_location, wlan_AP_AD_Supported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
+
+#.FN_BODY WLAN-RequestAssistanceData-r14/requestedAD-r14 VAL_PTR = &requestedAD_tvb LEN_PTR = &len
+  tvbuff_t *requestedAD_tvb = NULL;
+  int len;
+
+%(DEFAULT_BODY)s
+  if(requestedAD_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_requestedAD_r14_ap_identifier, requestedAD_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_requestedAD_r14_ap_location, requestedAD_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
+
 #.TYPE_ATTR
 BT-MeasurementElement-r13/btAddr-r13 TYPE=FT_ETHER DISPLAY=BASE_NONE
 
index b675e9beaae81188c97f697176a604bcfbe87bac..86e7849ba221df0aa7ed795d700f33bf89f31fd3 100644 (file)
@@ -1,6 +1,6 @@
 /* packet-lpp.c
  * Routines for 3GPP LTE Positioning Protocol (LPP) packet dissection
- * Copyright 2011-2016 Pascal Quantin <pascal.quantin@gmail.com>
+ * Copyright 2011-2017 Pascal Quantin <pascal.quantin@gmail.com>
  *
  * Wireshark - Network traffic analyzer
  * By Gerald Combs <gerald@wireshark.org>
@@ -20,7 +20,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Ref 3GPP TS 36.355 version 13.2.0 Release 13
+ * Ref 3GPP TS 36.355 version 14.2.0 Release 14
  * http://www.3gpp.org
  */
 
@@ -121,6 +121,12 @@ lpp_confidence_fmt(gchar *s, guint32 v)
   }
 }
 
+static void
+lpp_measurementLimit_fmt(gchar *s, guint32 v)
+{
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%u octets (%u)", 100*v, v);
+}
+
 static void
 lpp_altitude_fmt(gchar *s, guint32 v)
 {
@@ -232,6 +238,14 @@ static const value_string lpp_error_NumSamples_vals[] = {
   { 0, NULL}
 };
 
+static void
+lpp_relativeTimeDifference_fmt(gchar *s, guint32 v)
+{
+  double rtd = (double)((gint32)v)*0.5;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%.1f Ts (%d)", rtd, (gint32)v);
+}
+
 static void
 lpp_referenceTimeUnc_fmt(gchar *s, guint32 v)
 {
@@ -1580,6 +1594,46 @@ lpp_codePhaseRMSError_fmt(gchar *s, guint32 v)
   }
 }
 
+static void
+lpp_transmitterLatitude_fmt(gchar *s, guint32 v)
+{
+  double lat = ((double)v*4.0/pow(2, 20))-90.0;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", lat, v);
+}
+
+static void
+lpp_transmitterLongitude_fmt(gchar *s, guint32 v)
+{
+  double longitude = ((double)v*4.0/pow(2, 20))-180.0;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", longitude, v);
+}
+
+static void
+lpp_transmitterAltitude_fmt(gchar *s, guint32 v)
+{
+  double alt = ((double)v*0.29)-500.0;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%gm (%u)", alt, v);
+}
+
+static void
+lpp_refPressure_fmt(gchar *s, guint32 v)
+{
+  gint32 pressure = (gint32)v;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%dPa (%d)", 101325+pressure, pressure);
+}
+
+static void
+lpp_refTemperature_fmt(gchar *s, guint32 v)
+{
+  gint32 temp = (gint32)v;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%dK (%d)", 273+temp, temp);
+}
+
 static void
 lpp_doppler_fmt(gchar *s, guint32 v)
 {
@@ -1597,7 +1651,13 @@ lpp_adr_fmt(gchar *s, guint32 v)
 static void
 lpp_rsrp_Result_fmt(gchar *s, guint32 v)
 {
-  g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm (%u)", v-140, v);
+  if (v == 0) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "RSRP < -140dBm (0)");
+  } else if (v < 97) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm < RSRP <= %ddBm (%u)", v-141, v-140, v);
+  } else {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "-44dBm <= RSRP (97)");
+  }
 }
 
 static void
@@ -1612,6 +1672,30 @@ lpp_rsrq_Result_fmt(gchar *s, guint32 v)
   }
 }
 
+static void
+lpp_nrsrp_Result_fmt(gchar *s, guint32 v)
+{
+  if (v == 0) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "NRSRP < -156dBm (0)");
+  } else if (v < 113) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm < NRSRP <= %ddBm (%u)", v-157, v-156, v);
+  } else {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "-44dBm <= NRSRP (97)");
+  }
+}
+
+static void
+lpp_nrsrq_Result_fmt(gchar *s, guint32 v)
+{
+  if (v == 0) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "NRSRQ < -19.5dB (0)");
+  } else if (v < 46) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB < NRSRQ <= %.1fdB (%u)", ((float)v/2)-20, (((float)v+1)/2)-20, v);
+  } else {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "2.5dB <= NRSRQ (%u)", v);
+  }
+}
+
 static void
 lpp_ue_RxTxTimeDiff_fmt(gchar *s, guint32 v)
 {
index 410b5708cd12a2e58160e4e704ed108f618a5081..158588bb5640216c3fba6db1debff9a5ddb5a03a 100644 (file)
@@ -1,6 +1,6 @@
 /* packet-lpp.h
  * Routines for 3GPP LTE Positioning Protocol (LPP) packet dissection
- * Copyright 2011-2016 Pascal Quantin <pascal.quantin@gmail.com>
+ * Copyright 2011-2017 Pascal Quantin <pascal.quantin@gmail.com>
  *
  * Wireshark - Network traffic analyzer
  * By Gerald Combs <gerald@wireshark.org>
@@ -20,7 +20,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Ref 3GPP TS 36.355 version 13.2.0 Release 13
+ * Ref 3GPP TS 36.355 version 14.2.0 Release 14
  * http://www.3gpp.org
  */
 
index e9c182d52d82be6e6fd73bd9b4c1e293eae4978b..74620a9d29964be7d31a28572b55d50bc7dc212c 100644 (file)
@@ -8,7 +8,7 @@
 #line 1 "./asn1/lpp/packet-lpp-template.c"
 /* packet-lpp.c
  * Routines for 3GPP LTE Positioning Protocol (LPP) packet dissection
- * Copyright 2011-2016 Pascal Quantin <pascal.quantin@gmail.com>
+ * Copyright 2011-2017 Pascal Quantin <pascal.quantin@gmail.com>
  *
  * Wireshark - Network traffic analyzer
  * By Gerald Combs <gerald@wireshark.org>
@@ -28,7 +28,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Ref 3GPP TS 36.355 version 13.2.0 Release 13
+ * Ref 3GPP TS 36.355 version 14.2.0 Release 14
  * http://www.3gpp.org
  */
 
@@ -126,6 +126,9 @@ static int hf_lpp_commonIEsRequestAssistanceData = -1;  /* CommonIEsRequestAssis
 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_sensor_RequestAssistanceData_r14 = -1;  /* Sensor_RequestAssistanceData_r14 */
+static int hf_lpp_tbs_RequestAssistanceData_r14 = -1;  /* TBS_RequestAssistanceData_r14 */
+static int hf_lpp_wlan_RequestAssistanceData_r14 = -1;  /* WLAN_RequestAssistanceData_r14 */
 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 */
@@ -134,6 +137,9 @@ static int hf_lpp_commonIEsProvideAssistanceData = -1;  /* CommonIEsProvideAssis
 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_sensor_ProvideAssistanceData_r14 = -1;  /* Sensor_ProvideAssistanceData_r14 */
+static int hf_lpp_tbs_ProvideAssistanceData_r14 = -1;  /* TBS_ProvideAssistanceData_r14 */
+static int hf_lpp_wlan_ProvideAssistanceData_r14 = -1;  /* WLAN_ProvideAssistanceData_r14 */
 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 */
@@ -171,6 +177,8 @@ static int hf_lpp_criticalExtensionsFuture_07 = -1;  /* T_criticalExtensionsFutu
 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_carrierFreq_r14 = -1;           /* ARFCN_ValueEUTRA_r14 */
+static int hf_lpp_carrierFreqOffset_r14 = -1;     /* CarrierFreqOffsetNB_r14 */
 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 */
@@ -244,6 +252,7 @@ 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_messageSizeLimitNB_r14 = -1;    /* MessageSizeLimitNB_r14 */
 static int hf_lpp_reportingAmount = -1;           /* T_reportingAmount */
 static int hf_lpp_reportingInterval = -1;         /* T_reportingInterval */
 static int hf_lpp_cellChange = -1;                /* BOOLEAN */
@@ -253,9 +262,13 @@ 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_responseTimeNB_r14 = -1;        /* ResponseTimeNB_r14 */
 static int hf_lpp_accuracy = -1;                  /* INTEGER_0_127 */
 static int hf_lpp_time = -1;                      /* INTEGER_1_128 */
 static int hf_lpp_responseTimeEarlyFix_r12 = -1;  /* INTEGER_1_128 */
+static int hf_lpp_timeNB_r14 = -1;                /* INTEGER_1_512 */
+static int hf_lpp_responseTimeEarlyFixNB_r14 = -1;  /* INTEGER_1_512 */
+static int hf_lpp_measurementLimit_r14 = -1;      /* INTEGER_1_512 */
 static int hf_lpp_locationEstimate = -1;          /* LocationCoordinates */
 static int hf_lpp_velocityEstimate = -1;          /* Velocity */
 static int hf_lpp_locationError = -1;             /* LocationError */
@@ -279,6 +292,8 @@ 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_otdoa_ReferenceCellInfoNB_r14 = -1;  /* OTDOA_ReferenceCellInfoNB_r14 */
+static int hf_lpp_otdoa_NeighbourCellInfoNB_r14 = -1;  /* OTDOA_NeighbourCellInfoListNB_r14 */
 static int hf_lpp_physCellId = -1;                /* INTEGER_0_503 */
 static int hf_lpp_cellGlobalId = -1;              /* ECGI */
 static int hf_lpp_earfcnRef = -1;                 /* ARFCN_ValueEUTRA */
@@ -286,6 +301,12 @@ 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_earfcnRef_v9a0 = -1;            /* ARFCN_ValueEUTRA_v9a0 */
+static int hf_lpp_tpId_r14 = -1;                  /* INTEGER_0_4095 */
+static int hf_lpp_cpLengthCRS_r14 = -1;           /* T_cpLengthCRS_r14 */
+static int hf_lpp_sameMBSFNconfigRef_r14 = -1;    /* BOOLEAN */
+static int hf_lpp_dlBandwidth_r14 = -1;           /* T_dlBandwidth_r14 */
+static int hf_lpp_addPRSconfigRef_r14 = -1;       /* SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_PRS_Info */
+static int hf_lpp_addPRSconfigRef_r14_item = -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 */
@@ -294,6 +315,19 @@ 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_po32_v1420 = -1;                /* BIT_STRING_SIZE_32 */
+static int hf_lpp_po64_v1420 = -1;                /* BIT_STRING_SIZE_64 */
+static int hf_lpp_po128_v1420 = -1;               /* BIT_STRING_SIZE_128 */
+static int hf_lpp_po256_v1420 = -1;               /* BIT_STRING_SIZE_256 */
+static int hf_lpp_po512_v1420 = -1;               /* BIT_STRING_SIZE_512 */
+static int hf_lpp_po1024_v1420 = -1;              /* BIT_STRING_SIZE_1024 */
+static int hf_lpp_prsID_r14 = -1;                 /* INTEGER_0_4095 */
+static int hf_lpp_add_numDL_Frames_r14 = -1;      /* INTEGER_1_160 */
+static int hf_lpp_prsOccGroupLen_r14 = -1;        /* T_prsOccGroupLen_r14 */
+static int hf_lpp_prsHoppingInfo_r14 = -1;        /* T_prsHoppingInfo_r14 */
+static int hf_lpp_nb2_r14 = -1;                   /* INTEGER_0_maxAvailNarrowBands_Minus1_r14 */
+static int hf_lpp_nb4_r14 = -1;                   /* T_nb4_r14 */
+static int hf_lpp_nb4_r14_item = -1;              /* INTEGER_1_maxAvailNarrowBands_Minus1_r14 */
 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 */
@@ -304,12 +338,63 @@ 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_earfcn_v9a0 = -1;               /* ARFCN_ValueEUTRA_v9a0 */
+static int hf_lpp_prs_only_tp_r14 = -1;           /* T_prs_only_tp_r14 */
+static int hf_lpp_cpLengthCRS_r14_01 = -1;        /* T_cpLengthCRS_r14_01 */
+static int hf_lpp_sameMBSFNconfigNeighbour_r14 = -1;  /* BOOLEAN */
+static int hf_lpp_dlBandwidth_r14_01 = -1;        /* T_dlBandwidth_r14_01 */
+static int hf_lpp_addPRSconfigNeighbour_r14 = -1;  /* SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_Add_PRSconfigNeighbourElement_r14 */
+static int hf_lpp_addPRSconfigNeighbour_r14_item = -1;  /* Add_PRSconfigNeighbourElement_r14 */
+static int hf_lpp_add_prsInfo_r14 = -1;           /* PRS_Info */
+static int hf_lpp_physCellIdNB_r14 = -1;          /* INTEGER_0_503 */
+static int hf_lpp_cellGlobalIdNB_r14 = -1;        /* ECGI */
+static int hf_lpp_carrierFreqRef_r14 = -1;        /* CarrierFreq_NB_r14 */
+static int hf_lpp_earfcn_r14 = -1;                /* ARFCN_ValueEUTRA_r14 */
+static int hf_lpp_eutra_NumCRS_Ports_r14 = -1;    /* T_eutra_NumCRS_Ports_r14 */
+static int hf_lpp_otdoa_SIB1_NB_repetitions_r14 = -1;  /* T_otdoa_SIB1_NB_repetitions_r14 */
+static int hf_lpp_nprsInfo_r14 = -1;              /* PRS_Info_NB_r14 */
+static int hf_lpp_PRS_Info_NB_r14_item = -1;      /* NPRS_Info_r14 */
+static int hf_lpp_operationModeInfoNPRS_r14 = -1;  /* T_operationModeInfoNPRS_r14 */
+static int hf_lpp_nprs_carrier_r14 = -1;          /* CarrierFreq_NB_r14 */
+static int hf_lpp_nprsSequenceInfo_r14 = -1;      /* INTEGER_0_174 */
+static int hf_lpp_nprsID_r14 = -1;                /* INTEGER_0_4095 */
+static int hf_lpp_partA_r14 = -1;                 /* T_partA_r14 */
+static int hf_lpp_nprsBitmap_r14 = -1;            /* T_nprsBitmap_r14 */
+static int hf_lpp_subframePattern10_r14 = -1;     /* BIT_STRING_SIZE_10 */
+static int hf_lpp_subframePattern40_r14 = -1;     /* BIT_STRING_SIZE_40 */
+static int hf_lpp_nprs_MutingInfoA_r14 = -1;      /* T_nprs_MutingInfoA_r14 */
+static int hf_lpp_po2_r14 = -1;                   /* BIT_STRING_SIZE_2 */
+static int hf_lpp_po4_r14 = -1;                   /* BIT_STRING_SIZE_4 */
+static int hf_lpp_po8_r14 = -1;                   /* BIT_STRING_SIZE_8 */
+static int hf_lpp_po16_r14 = -1;                  /* BIT_STRING_SIZE_16 */
+static int hf_lpp_partB_r14 = -1;                 /* T_partB_r14 */
+static int hf_lpp_nprs_Period_r14 = -1;           /* T_nprs_Period_r14 */
+static int hf_lpp_nprs_startSF_r14 = -1;          /* T_nprs_startSF_r14 */
+static int hf_lpp_nprs_NumSF_r14 = -1;            /* T_nprs_NumSF_r14 */
+static int hf_lpp_nprs_MutingInfoB_r14 = -1;      /* T_nprs_MutingInfoB_r14 */
+static int hf_lpp_OTDOA_NeighbourCellInfoListNB_r14_item = -1;  /* OTDOA_NeighbourCellInfoNB_r14 */
+static int hf_lpp_carrierFreq_r14_01 = -1;        /* CarrierFreq_NB_r14 */
+static int hf_lpp_eutra_NumCRS_Ports_r14_01 = -1;  /* T_eutra_NumCRS_Ports_r14_01 */
+static int hf_lpp_otdoa_SIB1_NB_repetitions_r14_01 = -1;  /* T_otdoa_SIB1_NB_repetitions_r14_01 */
+static int hf_lpp_nprs_slotNumberOffset_r14 = -1;  /* INTEGER_0_19 */
+static int hf_lpp_nprs_SFN_Offset_r14 = -1;       /* INTEGER_0_63 */
+static int hf_lpp_nprs_SubframeOffset_r14 = -1;   /* INTEGER_0_1279 */
+static int hf_lpp_expectedRSTD_r14 = -1;          /* INTEGER_0_16383 */
+static int hf_lpp_expectedRSTD_Uncertainty_r14 = -1;  /* INTEGER_0_1023 */
+static int hf_lpp_prsNeighbourCellIndex_r14 = -1;  /* INTEGER_1_72 */
+static int hf_lpp_adType_r14 = -1;                /* T_adType_r14 */
 static int hf_lpp_otdoaSignalMeasurementInformation = -1;  /* OTDOA_SignalMeasurementInformation */
+static int hf_lpp_otdoaSignalMeasurementInformation_NB_r14 = -1;  /* OTDOA_SignalMeasurementInformation_NB_r14 */
 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_tpIdRef_r14 = -1;               /* INTEGER_0_4095 */
+static int hf_lpp_prsIdRef_r14 = -1;              /* INTEGER_0_4095 */
+static int hf_lpp_additionalPathsRef_r14 = -1;    /* AdditionalPathList_r14 */
+static int hf_lpp_nprsIdRef_r14 = -1;             /* INTEGER_0_4095 */
+static int hf_lpp_carrierFreqOffsetNB_Ref_r14 = -1;  /* CarrierFreqOffsetNB_r14 */
+static int hf_lpp_hyperSFN_r14 = -1;              /* BIT_STRING_SIZE_10 */
 static int hf_lpp_NeighbourMeasurementList_item = -1;  /* NeighbourMeasurementElement */
 static int hf_lpp_physCellIdNeighbour = -1;       /* INTEGER_0_503 */
 static int hf_lpp_cellGlobalIdNeighbour = -1;     /* ECGI */
@@ -317,10 +402,33 @@ 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_earfcnNeighbour_v9a0 = -1;      /* ARFCN_ValueEUTRA_v9a0 */
+static int hf_lpp_tpIdNeighbour_r14 = -1;         /* INTEGER_0_4095 */
+static int hf_lpp_prsIdNeighbour_r14 = -1;        /* INTEGER_0_4095 */
+static int hf_lpp_delta_rstd_r14 = -1;            /* INTEGER_0_5 */
+static int hf_lpp_additionalPathsNeighbour_r14 = -1;  /* AdditionalPathList_r14 */
+static int hf_lpp_nprsIdNeighbour_r14 = -1;       /* INTEGER_0_4095 */
+static int hf_lpp_carrierFreqOffsetNB_Neighbour_r14 = -1;  /* CarrierFreqOffsetNB_r14 */
+static int hf_lpp_AdditionalPathList_r14_item = -1;  /* AdditionalPath_r14 */
+static int hf_lpp_systemFrameNumber_r14 = -1;     /* BIT_STRING_SIZE_10 */
+static int hf_lpp_physCellIdRef_r14 = -1;         /* INTEGER_0_503 */
+static int hf_lpp_cellGlobalIdRef_r14 = -1;       /* ECGI */
+static int hf_lpp_earfcnRef_r14 = -1;             /* ARFCN_ValueEUTRA_r14 */
+static int hf_lpp_referenceQuality_r14 = -1;      /* OTDOA_MeasQuality */
+static int hf_lpp_neighbourMeasurementList_r14 = -1;  /* NeighbourMeasurementList_NB_r14 */
+static int hf_lpp_NeighbourMeasurementList_NB_r14_item = -1;  /* NeighbourMeasurementElement_NB_r14 */
+static int hf_lpp_physCellIdNeighbour_r14 = -1;   /* INTEGER_0_503 */
+static int hf_lpp_cellGlobalIdNeighbour_r14 = -1;  /* ECGI */
+static int hf_lpp_earfcnNeighbour_r14 = -1;       /* ARFCN_ValueEUTRA_r14 */
+static int hf_lpp_rstd_r14 = -1;                  /* INTEGER_0_12711 */
+static int hf_lpp_rstd_Quality_r14 = -1;          /* OTDOA_MeasQuality */
 static int hf_lpp_error_Resolution = -1;          /* T_error_Resolution */
 static int hf_lpp_error_Value = -1;               /* T_error_Value */
 static int hf_lpp_error_NumSamples = -1;          /* T_error_NumSamples */
+static int hf_lpp_relativeTimeDifference_r14 = -1;  /* INTEGER_M256_255 */
+static int hf_lpp_path_Quality_r14 = -1;          /* OTDOA_MeasQuality */
 static int hf_lpp_assistanceAvailability = -1;    /* BOOLEAN */
+static int hf_lpp_multipathRSTD_r14 = -1;         /* T_multipathRSTD_r14 */
+static int hf_lpp_maxNoOfRSTDmeas_r14 = -1;       /* INTEGER_1_32 */
 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 */
@@ -328,6 +436,19 @@ static int hf_lpp_supportedBandListEUTRA_v9a0 = -1;  /* SEQUENCE_SIZE_1_maxBands
 static int hf_lpp_supportedBandListEUTRA_v9a0_item = -1;  /* SupportedBandEUTRA_v9a0 */
 static int hf_lpp_interFreqRSTDmeasurement_r10 = -1;  /* T_interFreqRSTDmeasurement_r10 */
 static int hf_lpp_additionalNeighbourCellInfoList_r10 = -1;  /* T_additionalNeighbourCellInfoList_r10 */
+static int hf_lpp_prs_id_r14 = -1;                /* T_prs_id_r14 */
+static int hf_lpp_tp_separation_via_muting_r14 = -1;  /* T_tp_separation_via_muting_r14 */
+static int hf_lpp_additional_prs_config_r14 = -1;  /* T_additional_prs_config_r14 */
+static int hf_lpp_prs_based_tbs_r14 = -1;         /* T_prs_based_tbs_r14 */
+static int hf_lpp_additionalPathsReport_r14 = -1;  /* T_additionalPathsReport_r14 */
+static int hf_lpp_densePrsConfig_r14 = -1;        /* T_densePrsConfig_r14 */
+static int hf_lpp_maxSupportedPrsBandwidth_r14 = -1;  /* T_maxSupportedPrsBandwidth_r14 */
+static int hf_lpp_prsOccGroup_r14 = -1;           /* T_prsOccGroup_r14 */
+static int hf_lpp_prsFrequencyHopping_r14 = -1;   /* T_prsFrequencyHopping_r14 */
+static int hf_lpp_maxSupportedPrsConfigs_r14 = -1;  /* T_maxSupportedPrsConfigs_r14 */
+static int hf_lpp_periodicalReporting_r14 = -1;   /* T_periodicalReporting_r14 */
+static int hf_lpp_multiPrbNprs_r14 = -1;          /* T_multiPrbNprs_r14 */
+static int hf_lpp_idleStateForMeasurements_r14 = -1;  /* T_idleStateForMeasurements_r14 */
 static int hf_lpp_bandEUTRA = -1;                 /* INTEGER_1_maxFBI */
 static int hf_lpp_bandEUTRA_v9a0 = -1;            /* INTEGER_maxFBI_Plus1_maxFBI2 */
 static int hf_lpp_locationServerErrorCauses = -1;  /* OTDOA_LocationServerErrorCauses */
@@ -391,6 +512,10 @@ 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_nBIoT_r14 = -1;                 /* T_nBIoT_r14 */
+static int hf_lpp_nbPhysCellId_r14 = -1;          /* INTEGER_0_503 */
+static int hf_lpp_nbCellGlobalId_r14 = -1;        /* ECGI */
+static int hf_lpp_nbCarrierFreq_r14 = -1;         /* CarrierFreq_NB_r14 */
 static int hf_lpp_threeDlocation = -1;            /* EllipsoidPointWithAltitudeAndUncertaintyEllipsoid */
 static int hf_lpp_klobucharModel = -1;            /* KlobucharModelParameter */
 static int hf_lpp_neQuickModel = -1;              /* NeQuickModelParameter */
@@ -845,6 +970,8 @@ 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_nbIoT_r14 = -1;                 /* T_nbIoT_r14 */
+static int hf_lpp_sfn_r14 = -1;                   /* BIT_STRING_SIZE_10 */
 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 */
@@ -867,6 +994,8 @@ 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_periodicalReportingNotSupported_r14 = -1;  /* PositioningModes */
+static int hf_lpp_idleStateForMeasurements_r14_01 = -1;  /* T_idleStateForMeasurements_r14_01 */
 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 */
@@ -932,9 +1061,15 @@ 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_arfcnEUTRA_v9a0 = -1;           /* ARFCN_ValueEUTRA_v9a0 */
+static int hf_lpp_nrsrp_Result_r14 = -1;          /* INTEGER_0_113 */
+static int hf_lpp_nrsrq_Result_r14 = -1;          /* INTEGER_0_74 */
+static int hf_lpp_carrierFreqOffsetNB_r14 = -1;   /* CarrierFreqOffsetNB_r14 */
 static int hf_lpp_requestedMeasurements = -1;     /* T_requestedMeasurements */
 static int hf_lpp_ecid_MeasSupported = -1;        /* T_ecid_MeasSupported */
 static int hf_lpp_ueRxTxSupTDD_r13 = -1;          /* T_ueRxTxSupTDD_r13 */
+static int hf_lpp_periodicalReporting_r14_01 = -1;  /* T_periodicalReporting_r14_01 */
+static int hf_lpp_triggeredReporting_r14 = -1;    /* T_triggeredReporting_r14 */
+static int hf_lpp_idleStateForMeasurements_r14_02 = -1;  /* T_idleStateForMeasurements_r14_02 */
 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 */
@@ -942,6 +1077,8 @@ 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 */
+static int hf_lpp_nrsrpMeasurementNotPossible_r14 = -1;  /* NULL */
+static int hf_lpp_nrsrqMeasurementNotPossible_r14 = -1;  /* NULL */
 static int hf_lpp_tbs_MeasurementInformation_r13 = -1;  /* TBS_MeasurementInformation_r13 */
 static int hf_lpp_tbs_Error_r13 = -1;             /* TBS_Error_r13 */
 static int hf_lpp_measurementReferenceTime_r13 = -1;  /* UTCTime */
@@ -950,21 +1087,57 @@ static int hf_lpp_MBS_BeaconMeasList_r13_item = -1;  /* MBS_BeaconMeasElement_r1
 static int hf_lpp_transmitterID_r13 = -1;         /* INTEGER_0_32767 */
 static int hf_lpp_codePhase_r13 = -1;             /* INTEGER_0_2097151 */
 static int hf_lpp_codePhaseRMSError_r13 = -1;     /* INTEGER_0_63 */
+static int hf_lpp_rssi_r14 = -1;                  /* INTEGER_M130_M30 */
 static int hf_lpp_mbsSgnMeasListReq_r13 = -1;     /* BOOLEAN */
+static int hf_lpp_mbsAssistanceAvailability_r14 = -1;  /* BOOLEAN */
+static int hf_lpp_mbsRequestedMeasurements_r14 = -1;  /* T_mbsRequestedMeasurements_r14 */
 static int hf_lpp_tbs_Modes_r13 = -1;             /* T_tbs_Modes_r13 */
+static int hf_lpp_mbs_AssistanceDataSupportList_r14 = -1;  /* MBS_AssistanceDataSupportList_r14 */
+static int hf_lpp_periodicalReportingSupported_r14 = -1;  /* PositioningModes */
+static int hf_lpp_mbs_ConfigSupport_r14 = -1;     /* T_mbs_ConfigSupport_r14 */
+static int hf_lpp_mbs_IdleStateForMeasurements_r14 = -1;  /* T_mbs_IdleStateForMeasurements_r14 */
+static int hf_lpp_mbs_AcquisitionAssistanceDataSupport_r14 = -1;  /* BOOLEAN */
+static int hf_lpp_mbs_AlmanacAssistanceDataSupport_r14 = -1;  /* BOOLEAN */
 static int hf_lpp_locationServerErrorCauses_r13 = -1;  /* TBS_LocationServerErrorCauses_r13 */
 static int hf_lpp_targetDeviceErrorCauses_r13 = -1;  /* TBS_TargetDeviceErrorCauses_r13 */
 static int hf_lpp_cause_r13 = -1;                 /* T_cause_r13 */
 static int hf_lpp_cause_r13_01 = -1;              /* T_cause_r13_01 */
+static int hf_lpp_tbs_AssistanceDataList_r14 = -1;  /* TBS_AssistanceDataList_r14 */
+static int hf_lpp_tbs_Error_r14 = -1;             /* TBS_Error_r13 */
+static int hf_lpp_mbs_AssistanceDataList_r14 = -1;  /* MBS_AssistanceDataList_r14 */
+static int hf_lpp_MBS_AssistanceDataList_r14_item = -1;  /* MBS_AssistanceDataElement_r14 */
+static int hf_lpp_mbs_AlmanacAssistance_r14 = -1;  /* MBS_AlmanacAssistance_r14 */
+static int hf_lpp_mbs_AcquisitionAssistance_r14 = -1;  /* MBS_AcquisitionAssistance_r14 */
+static int hf_lpp_transmitterID_r14 = -1;         /* INTEGER_0_32767 */
+static int hf_lpp_transmitterLatitude_r14 = -1;   /* T_transmitterLatitude_r14 */
+static int hf_lpp_transmitterLongitude_r14 = -1;  /* T_transmitterLongitude_r14 */
+static int hf_lpp_transmitterAltitude_r14 = -1;   /* T_transmitterAltitude_r14 */
+static int hf_lpp_timeCorrection_r14 = -1;        /* INTEGER_0_25 */
+static int hf_lpp_mbsConfiguration_r14 = -1;      /* T_mbsConfiguration_r14 */
+static int hf_lpp_pnCodeIndex_r14 = -1;           /* INTEGER_1_128 */
+static int hf_lpp_freq_r14 = -1;                  /* INTEGER_919750000_927250000 */
+static int hf_lpp_mbs_AlmanacAssistanceDataReq_r14 = -1;  /* BOOLEAN */
+static int hf_lpp_mbs_AcquisitionAssistanceDataReq_r14 = -1;  /* BOOLEAN */
 static int hf_lpp_sensor_MeasurementInformation_r13 = -1;  /* Sensor_MeasurementInformation_r13 */
 static int hf_lpp_sensor_Error_r13 = -1;          /* Sensor_Error_r13 */
 static int hf_lpp_uncompensatedBarometricPressure_r13 = -1;  /* INTEGER_30000_115000 */
+static int hf_lpp_uncertainty_r14 = -1;           /* T_uncertainty_r14 */
+static int hf_lpp_range_r14 = -1;                 /* INTEGER_0_1000 */
+static int hf_lpp_confidence_r14 = -1;            /* INTEGER_1_100 */
 static int hf_lpp_uncompensatedBarometricPressureReq_r13 = -1;  /* BOOLEAN */
+static int hf_lpp_assistanceAvailability_r14 = -1;  /* BOOLEAN */
 static int hf_lpp_sensor_Modes_r13 = -1;          /* T_sensor_Modes_r13 */
+static int hf_lpp_sensor_AssistanceDataSupportList_r14 = -1;  /* Sensor_AssistanceDataSupportList_r14 */
+static int hf_lpp_idleStateForMeasurements_r14_03 = -1;  /* T_idleStateForMeasurements_r14_03 */
 static int hf_lpp_locationServerErrorCauses_r13_01 = -1;  /* Sensor_LocationServerErrorCauses_r13 */
 static int hf_lpp_targetDeviceErrorCauses_r13_01 = -1;  /* Sensor_TargetDeviceErrorCauses_r13 */
 static int hf_lpp_cause_r13_02 = -1;              /* T_cause_r13_02 */
 static int hf_lpp_cause_r13_03 = -1;              /* T_cause_r13_03 */
+static int hf_lpp_sensor_AssistanceDataList_r14 = -1;  /* Sensor_AssistanceDataList_r14 */
+static int hf_lpp_sensor_Error_r14 = -1;          /* Sensor_Error_r13 */
+static int hf_lpp_refPressure_r14 = -1;           /* INTEGER_M20000_10000 */
+static int hf_lpp_refPosition_r14 = -1;           /* EllipsoidPointWithAltitudeAndUncertaintyEllipsoid */
+static int hf_lpp_refTemperature_r14 = -1;        /* INTEGER_M64_63 */
 static int hf_lpp_wlan_MeasurementInformation_r13 = -1;  /* WLAN_MeasurementInformation_r13 */
 static int hf_lpp_wlan_Error_r13 = -1;            /* WLAN_Error_r13 */
 static int hf_lpp_wlan_MeasurementList_r13 = -1;  /* WLAN_MeasurementList_r13 */
@@ -982,12 +1155,67 @@ static int hf_lpp_rttAccuracy_r13 = -1;           /* INTEGER_0_255 */
 static int hf_lpp_requestedMeasurements_r13 = -1;  /* T_requestedMeasurements_r13 */
 static int hf_lpp_wlan_Modes_r13 = -1;            /* T_wlan_Modes_r13 */
 static int hf_lpp_wlan_MeasSupported_r13 = -1;    /* T_wlan_MeasSupported_r13 */
+static int hf_lpp_wlan_AP_AD_Supported_r14 = -1;  /* T_wlan_AP_AD_Supported_r14 */
+static int hf_lpp_idleStateForMeasurements_r14_04 = -1;  /* T_idleStateForMeasurements_r14_04 */
 static int hf_lpp_locationServerErrorCauses_r13_02 = -1;  /* WLAN_LocationServerErrorCauses_r13 */
 static int hf_lpp_targetDeviceErrorCauses_r13_02 = -1;  /* WLAN_TargetDeviceErrorCauses_r13 */
 static int hf_lpp_cause_r13_04 = -1;              /* T_cause_r13_04 */
+static int hf_lpp_apLocationDataUnavailable_r14 = -1;  /* NULL */
 static int hf_lpp_cause_r13_05 = -1;              /* T_cause_r13_05 */
 static int hf_lpp_wlan_AP_RSSI_MeasurementNotPossible_r13 = -1;  /* NULL */
 static int hf_lpp_wlan_AP_RTT_MeasurementNotPossible_r13 = -1;  /* NULL */
+static int hf_lpp_wlan_DataSet_r14 = -1;          /* SEQUENCE_SIZE_1_maxWLAN_DataSets_r14_OF_WLAN_DataSet_r14 */
+static int hf_lpp_wlan_DataSet_r14_item = -1;     /* WLAN_DataSet_r14 */
+static int hf_lpp_wlan_Error_r14 = -1;            /* WLAN_Error_r13 */
+static int hf_lpp_wlan_AP_List_r14 = -1;          /* SEQUENCE_SIZE_1_maxWLAN_AP_r14_OF_WLAN_AP_Data_r14 */
+static int hf_lpp_wlan_AP_List_r14_item = -1;     /* WLAN_AP_Data_r14 */
+static int hf_lpp_supportedChannels_11a_r14 = -1;  /* SupportedChannels_11a_r14 */
+static int hf_lpp_supportedChannels_11bg_r14 = -1;  /* SupportedChannels_11bg_r14 */
+static int hf_lpp_ch34_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch36_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch38_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch40_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch42_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch44_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch46_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch48_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch52_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch56_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch60_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch64_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch149_r14 = -1;                 /* BOOLEAN */
+static int hf_lpp_ch153_r14 = -1;                 /* BOOLEAN */
+static int hf_lpp_ch157_r14 = -1;                 /* BOOLEAN */
+static int hf_lpp_ch161_r14 = -1;                 /* BOOLEAN */
+static int hf_lpp_ch1_r14 = -1;                   /* BOOLEAN */
+static int hf_lpp_ch2_r14 = -1;                   /* BOOLEAN */
+static int hf_lpp_ch3_r14 = -1;                   /* BOOLEAN */
+static int hf_lpp_ch4_r14 = -1;                   /* BOOLEAN */
+static int hf_lpp_ch5_r14 = -1;                   /* BOOLEAN */
+static int hf_lpp_ch6_r14 = -1;                   /* BOOLEAN */
+static int hf_lpp_ch7_r14 = -1;                   /* BOOLEAN */
+static int hf_lpp_ch8_r14 = -1;                   /* BOOLEAN */
+static int hf_lpp_ch9_r14 = -1;                   /* BOOLEAN */
+static int hf_lpp_ch10_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch11_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch12_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch13_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_ch14_r14 = -1;                  /* BOOLEAN */
+static int hf_lpp_wlan_AP_Identifier_r14 = -1;    /* WLAN_AP_Identifier_r13 */
+static int hf_lpp_wlan_AP_Location_r14 = -1;      /* WLAN_AP_Location_r14 */
+static int hf_lpp_locationDataLCI_r14 = -1;       /* LocationDataLCI_r14 */
+static int hf_lpp_latitudeUncertainty_r14 = -1;   /* BIT_STRING_SIZE_6 */
+static int hf_lpp_latitude_r14 = -1;              /* BIT_STRING_SIZE_34 */
+static int hf_lpp_longitudeUncertainty_r14 = -1;  /* BIT_STRING_SIZE_6 */
+static int hf_lpp_longitude_r14 = -1;             /* BIT_STRING_SIZE_34 */
+static int hf_lpp_altitudeUncertainty_r14 = -1;   /* BIT_STRING_SIZE_6 */
+static int hf_lpp_altitude_r14 = -1;              /* BIT_STRING_SIZE_30 */
+static int hf_lpp_datum_r14 = -1;                 /* BIT_STRING_SIZE_8 */
+static int hf_lpp_requestedAD_r14 = -1;           /* T_requestedAD_r14 */
+static int hf_lpp_visibleAPs_r14 = -1;            /* SEQUENCE_SIZE_1_maxVisibleAPs_r14_OF_WLAN_AP_Identifier_r13 */
+static int hf_lpp_visibleAPs_r14_item = -1;       /* WLAN_AP_Identifier_r13 */
+static int hf_lpp_wlan_AP_StoredData_r14 = -1;    /* SEQUENCE_SIZE_1_maxKnownAPs_r14_OF_WLAN_AP_Identifier_r13 */
+static int hf_lpp_wlan_AP_StoredData_r14_item = -1;  /* WLAN_AP_Identifier_r13 */
 static int hf_lpp_bt_MeasurementInformation_r13 = -1;  /* BT_MeasurementInformation_r13 */
 static int hf_lpp_bt_Error_r13 = -1;              /* BT_Error_r13 */
 static int hf_lpp_bt_MeasurementList_r13 = -1;    /* BT_MeasurementList_r13 */
@@ -997,6 +1225,7 @@ static int hf_lpp_rssi_r13_01 = -1;               /* INTEGER_M128_127 */
 static int hf_lpp_requestedMeasurements_r13_01 = -1;  /* T_requestedMeasurements_r13_01 */
 static int hf_lpp_bt_Modes_r13 = -1;              /* T_bt_Modes_r13 */
 static int hf_lpp_bt_MeasSupported_r13 = -1;      /* T_bt_MeasSupported_r13 */
+static int hf_lpp_idleStateForMeasurements_r14_05 = -1;  /* T_idleStateForMeasurements_r14_05 */
 static int hf_lpp_locationServerErrorCauses_r13_03 = -1;  /* BT_LocationServerErrorCauses_r13 */
 static int hf_lpp_targetDeviceErrorCauses_r13_03 = -1;  /* BT_TargetDeviceErrorCauses_r13 */
 static int hf_lpp_cause_r13_06 = -1;              /* T_cause_r13_06 */
@@ -1006,6 +1235,7 @@ static int hf_lpp_bt_Beacon_rssiMeasurementNotPossible_r13 = -1;  /* NULL */
 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_accessTypes_nb_iot = -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;
@@ -1014,7 +1244,10 @@ static int hf_lpp_LocationSource_r13_wlan = -1;
 static int hf_lpp_LocationSource_r13_bt = -1;
 static int hf_lpp_LocationSource_r13_tbs = -1;
 static int hf_lpp_LocationSource_r13_sensor = -1;
+static int hf_lpp_T_adType_r14_prs = -1;
+static int hf_lpp_T_adType_r14_nprs = -1;
 static int hf_lpp_T_otdoa_Mode_ue_assisted = -1;
+static int hf_lpp_T_otdoa_Mode_ue_assisted_NB_r14 = -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;
@@ -1054,19 +1287,35 @@ 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_requestedMeasurements_nrsrpReq_r14 = -1;
+static int hf_lpp_T_requestedMeasurements_nrsrqReq_r14 = -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;
+static int hf_lpp_T_ecid_MeasSupported_nrsrpSup_r14 = -1;
+static int hf_lpp_T_ecid_MeasSupported_nrsrqSup_r14 = -1;
+static int hf_lpp_T_mbsRequestedMeasurements_r14_rssi = -1;
 static int hf_lpp_T_tbs_Modes_r13_standalone = -1;
 static int hf_lpp_T_tbs_Modes_r13_ue_assisted = -1;
+static int hf_lpp_T_tbs_Modes_r13_ue_based = -1;
+static int hf_lpp_T_mbs_ConfigSupport_r14_tb1 = -1;
+static int hf_lpp_T_mbs_ConfigSupport_r14_tb2 = -1;
+static int hf_lpp_T_mbs_ConfigSupport_r14_tb3 = -1;
+static int hf_lpp_T_mbs_ConfigSupport_r14_tb4 = -1;
 static int hf_lpp_T_sensor_Modes_r13_standalone = -1;
 static int hf_lpp_T_sensor_Modes_r13_ue_assisted = -1;
+static int hf_lpp_T_sensor_Modes_r13_ue_based = -1;
 static int hf_lpp_T_requestedMeasurements_r13_rssi = -1;
 static int hf_lpp_T_requestedMeasurements_r13_rtt = -1;
 static int hf_lpp_T_wlan_Modes_r13_standalone = -1;
 static int hf_lpp_T_wlan_Modes_r13_ue_assisted = -1;
+static int hf_lpp_T_wlan_Modes_r13_ue_based = -1;
 static int hf_lpp_T_wlan_MeasSupported_r13_rssi_r13 = -1;
 static int hf_lpp_T_wlan_MeasSupported_r13_rtt_r13 = -1;
+static int hf_lpp_T_wlan_AP_AD_Supported_r14_ap_identifier = -1;
+static int hf_lpp_T_wlan_AP_AD_Supported_r14_ap_location = -1;
+static int hf_lpp_T_requestedAD_r14_ap_identifier = -1;
+static int hf_lpp_T_requestedAD_r14_ap_location = -1;
 static int hf_lpp_T_requestedMeasurements_r13_01_rssi = -1;
 static int hf_lpp_T_bt_Modes_r13_standalone = -1;
 static int hf_lpp_T_bt_Modes_r13_ue_assisted = -1;
@@ -1145,6 +1394,7 @@ 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_CarrierFreq_NB_r14 = -1;
 static gint ett_lpp_CellGlobalIdEUTRA_AndUTRA = -1;
 static gint ett_lpp_T_plmn_Identity = -1;
 static gint ett_lpp_T_mcc = -1;
@@ -1187,6 +1437,8 @@ 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_ResponseTimeNB_r14 = -1;
+static gint ett_lpp_MessageSizeLimitNB_r14 = -1;
 static gint ett_lpp_CommonIEsProvideLocationInformation = -1;
 static gint ett_lpp_LocationCoordinates = -1;
 static gint ett_lpp_Velocity = -1;
@@ -1196,17 +1448,38 @@ 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_SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_PRS_Info = -1;
 static gint ett_lpp_PRS_Info = -1;
 static gint ett_lpp_T_prs_MutingInfo_r9 = -1;
+static gint ett_lpp_T_prsHoppingInfo_r14 = -1;
+static gint ett_lpp_T_nb4_r14 = -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_SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_Add_PRSconfigNeighbourElement_r14 = -1;
+static gint ett_lpp_Add_PRSconfigNeighbourElement_r14 = -1;
+static gint ett_lpp_OTDOA_ReferenceCellInfoNB_r14 = -1;
+static gint ett_lpp_PRS_Info_NB_r14 = -1;
+static gint ett_lpp_NPRS_Info_r14 = -1;
+static gint ett_lpp_T_partA_r14 = -1;
+static gint ett_lpp_T_nprsBitmap_r14 = -1;
+static gint ett_lpp_T_nprs_MutingInfoA_r14 = -1;
+static gint ett_lpp_T_partB_r14 = -1;
+static gint ett_lpp_T_nprs_MutingInfoB_r14 = -1;
+static gint ett_lpp_OTDOA_NeighbourCellInfoListNB_r14 = -1;
+static gint ett_lpp_OTDOA_NeighbourCellInfoNB_r14 = -1;
 static gint ett_lpp_OTDOA_RequestAssistanceData = -1;
+static gint ett_lpp_T_adType_r14 = -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_AdditionalPathList_r14 = -1;
+static gint ett_lpp_OTDOA_SignalMeasurementInformation_NB_r14 = -1;
+static gint ett_lpp_NeighbourMeasurementList_NB_r14 = -1;
+static gint ett_lpp_NeighbourMeasurementElement_NB_r14 = -1;
 static gint ett_lpp_OTDOA_MeasQuality = -1;
+static gint ett_lpp_AdditionalPath_r14 = -1;
 static gint ett_lpp_OTDOA_RequestLocationInformation = -1;
 static gint ett_lpp_OTDOA_ProvideCapabilities = -1;
 static gint ett_lpp_T_otdoa_Mode = -1;
@@ -1236,6 +1509,7 @@ 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_T_nBIoT_r14 = -1;
 static gint ett_lpp_GNSS_ReferenceLocation = -1;
 static gint ett_lpp_GNSS_IonosphericModel = -1;
 static gint ett_lpp_KlobucharModelParameter = -1;
@@ -1348,6 +1622,7 @@ 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_T_nbIoT_r14 = -1;
 static gint ett_lpp_GNSS_MeasurementList = -1;
 static gint ett_lpp_GNSS_MeasurementForOneGNSS = -1;
 static gint ett_lpp_GNSS_SgnMeasList = -1;
@@ -1415,21 +1690,36 @@ static gint ett_lpp_TBS_MeasurementInformation_r13 = -1;
 static gint ett_lpp_MBS_BeaconMeasList_r13 = -1;
 static gint ett_lpp_MBS_BeaconMeasElement_r13 = -1;
 static gint ett_lpp_TBS_RequestLocationInformation_r13 = -1;
+static gint ett_lpp_T_mbsRequestedMeasurements_r14 = -1;
 static gint ett_lpp_TBS_ProvideCapabilities_r13 = -1;
 static gint ett_lpp_T_tbs_Modes_r13 = -1;
+static gint ett_lpp_T_mbs_ConfigSupport_r14 = -1;
+static gint ett_lpp_MBS_AssistanceDataSupportList_r14 = -1;
 static gint ett_lpp_TBS_RequestCapabilities_r13 = -1;
 static gint ett_lpp_TBS_Error_r13 = -1;
 static gint ett_lpp_TBS_LocationServerErrorCauses_r13 = -1;
 static gint ett_lpp_TBS_TargetDeviceErrorCauses_r13 = -1;
+static gint ett_lpp_TBS_ProvideAssistanceData_r14 = -1;
+static gint ett_lpp_TBS_AssistanceDataList_r14 = -1;
+static gint ett_lpp_MBS_AssistanceDataList_r14 = -1;
+static gint ett_lpp_MBS_AssistanceDataElement_r14 = -1;
+static gint ett_lpp_MBS_AlmanacAssistance_r14 = -1;
+static gint ett_lpp_MBS_AcquisitionAssistance_r14 = -1;
+static gint ett_lpp_TBS_RequestAssistanceData_r14 = -1;
 static gint ett_lpp_Sensor_ProvideLocationInformation_r13 = -1;
 static gint ett_lpp_Sensor_MeasurementInformation_r13 = -1;
+static gint ett_lpp_T_uncertainty_r14 = -1;
 static gint ett_lpp_Sensor_RequestLocationInformation_r13 = -1;
 static gint ett_lpp_Sensor_ProvideCapabilities_r13 = -1;
 static gint ett_lpp_T_sensor_Modes_r13 = -1;
+static gint ett_lpp_Sensor_AssistanceDataSupportList_r14 = -1;
 static gint ett_lpp_Sensor_RequestCapabilities_r13 = -1;
 static gint ett_lpp_Sensor_Error_r13 = -1;
 static gint ett_lpp_Sensor_LocationServerErrorCauses_r13 = -1;
 static gint ett_lpp_Sensor_TargetDeviceErrorCauses_r13 = -1;
+static gint ett_lpp_Sensor_ProvideAssistanceData_r14 = -1;
+static gint ett_lpp_Sensor_AssistanceDataList_r14 = -1;
+static gint ett_lpp_Sensor_RequestAssistanceData_r14 = -1;
 static gint ett_lpp_WLAN_ProvideLocationInformation_r13 = -1;
 static gint ett_lpp_WLAN_MeasurementInformation_r13 = -1;
 static gint ett_lpp_WLAN_MeasurementList_r13 = -1;
@@ -1441,10 +1731,24 @@ static gint ett_lpp_T_requestedMeasurements_r13 = -1;
 static gint ett_lpp_WLAN_ProvideCapabilities_r13 = -1;
 static gint ett_lpp_T_wlan_Modes_r13 = -1;
 static gint ett_lpp_T_wlan_MeasSupported_r13 = -1;
+static gint ett_lpp_T_wlan_AP_AD_Supported_r14 = -1;
 static gint ett_lpp_WLAN_RequestCapabilities_r13 = -1;
 static gint ett_lpp_WLAN_Error_r13 = -1;
 static gint ett_lpp_WLAN_LocationServerErrorCauses_r13 = -1;
 static gint ett_lpp_WLAN_TargetDeviceErrorCauses_r13 = -1;
+static gint ett_lpp_WLAN_ProvideAssistanceData_r14 = -1;
+static gint ett_lpp_SEQUENCE_SIZE_1_maxWLAN_DataSets_r14_OF_WLAN_DataSet_r14 = -1;
+static gint ett_lpp_WLAN_DataSet_r14 = -1;
+static gint ett_lpp_SEQUENCE_SIZE_1_maxWLAN_AP_r14_OF_WLAN_AP_Data_r14 = -1;
+static gint ett_lpp_SupportedChannels_11a_r14 = -1;
+static gint ett_lpp_SupportedChannels_11bg_r14 = -1;
+static gint ett_lpp_WLAN_AP_Data_r14 = -1;
+static gint ett_lpp_WLAN_AP_Location_r14 = -1;
+static gint ett_lpp_LocationDataLCI_r14 = -1;
+static gint ett_lpp_WLAN_RequestAssistanceData_r14 = -1;
+static gint ett_lpp_T_requestedAD_r14 = -1;
+static gint ett_lpp_SEQUENCE_SIZE_1_maxVisibleAPs_r14_OF_WLAN_AP_Identifier_r13 = -1;
+static gint ett_lpp_SEQUENCE_SIZE_1_maxKnownAPs_r14_OF_WLAN_AP_Identifier_r13 = -1;
 static gint ett_lpp_BT_ProvideLocationInformation_r13 = -1;
 static gint ett_lpp_BT_MeasurementInformation_r13 = -1;
 static gint ett_lpp_BT_MeasurementList_r13 = -1;
@@ -1470,12 +1774,22 @@ static gint ett_lpp_BT_TargetDeviceErrorCauses_r13 = -1;
 #define maxEARFCN_Plus1                65536
 #define maxEARFCN2                     262143
 #define maxEPDU                        16
+#define maxAddPRSconfig_r14            2
+#define maxAvailNarrowBands_Minus1_r14 15
 #define maxFreqLayers                  3
+#define maxCarrier_r14                 5
+#define maxCells_r14                   72
+#define maxPaths_r14                   2
 #define maxBands                       64
 #define maxFBI                         64
 #define maxFBI_Plus1                   65
 #define maxFBI2                        256
+#define maxMBS_r14                     64
 #define maxWLAN_AP_r13                 64
+#define maxWLAN_DataSets_r14           8
+#define maxWLAN_AP_r14                 128
+#define maxVisibleAPs_r14              32
+#define maxKnownAPs_r14                2048
 #define maxBT_Beacon_r13               32
 
 typedef enum _T_GNSS_ID_enum {
@@ -1539,6 +1853,12 @@ lpp_confidence_fmt(gchar *s, guint32 v)
   }
 }
 
+static void
+lpp_measurementLimit_fmt(gchar *s, guint32 v)
+{
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%u octets (%u)", 100*v, v);
+}
+
 static void
 lpp_altitude_fmt(gchar *s, guint32 v)
 {
@@ -1650,6 +1970,14 @@ static const value_string lpp_error_NumSamples_vals[] = {
   { 0, NULL}
 };
 
+static void
+lpp_relativeTimeDifference_fmt(gchar *s, guint32 v)
+{
+  double rtd = (double)((gint32)v)*0.5;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%.1f Ts (%d)", rtd, (gint32)v);
+}
+
 static void
 lpp_referenceTimeUnc_fmt(gchar *s, guint32 v)
 {
@@ -2998,6 +3326,46 @@ lpp_codePhaseRMSError_fmt(gchar *s, guint32 v)
   }
 }
 
+static void
+lpp_transmitterLatitude_fmt(gchar *s, guint32 v)
+{
+  double lat = ((double)v*4.0/pow(2, 20))-90.0;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", lat, v);
+}
+
+static void
+lpp_transmitterLongitude_fmt(gchar *s, guint32 v)
+{
+  double longitude = ((double)v*4.0/pow(2, 20))-180.0;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", longitude, v);
+}
+
+static void
+lpp_transmitterAltitude_fmt(gchar *s, guint32 v)
+{
+  double alt = ((double)v*0.29)-500.0;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%gm (%u)", alt, v);
+}
+
+static void
+lpp_refPressure_fmt(gchar *s, guint32 v)
+{
+  gint32 pressure = (gint32)v;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%dPa (%d)", 101325+pressure, pressure);
+}
+
+static void
+lpp_refTemperature_fmt(gchar *s, guint32 v)
+{
+  gint32 temp = (gint32)v;
+
+  g_snprintf(s, ITEM_LABEL_LENGTH, "%dK (%d)", 273+temp, temp);
+}
+
 static void
 lpp_doppler_fmt(gchar *s, guint32 v)
 {
@@ -3015,7 +3383,13 @@ lpp_adr_fmt(gchar *s, guint32 v)
 static void
 lpp_rsrp_Result_fmt(gchar *s, guint32 v)
 {
-  g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm (%u)", v-140, v);
+  if (v == 0) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "RSRP < -140dBm (0)");
+  } else if (v < 97) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm < RSRP <= %ddBm (%u)", v-141, v-140, v);
+  } else {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "-44dBm <= RSRP (97)");
+  }
 }
 
 static void
@@ -3030,6 +3404,30 @@ lpp_rsrq_Result_fmt(gchar *s, guint32 v)
   }
 }
 
+static void
+lpp_nrsrp_Result_fmt(gchar *s, guint32 v)
+{
+  if (v == 0) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "NRSRP < -156dBm (0)");
+  } else if (v < 113) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm < NRSRP <= %ddBm (%u)", v-157, v-156, v);
+  } else {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "-44dBm <= NRSRP (97)");
+  }
+}
+
+static void
+lpp_nrsrq_Result_fmt(gchar *s, guint32 v)
+{
+  if (v == 0) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "NRSRQ < -19.5dB (0)");
+  } else if (v < 46) {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB < NRSRQ <= %.1fdB (%u)", ((float)v/2)-20, (((float)v+1)/2)-20, v);
+  } else {
+    g_snprintf(s, ITEM_LABEL_LENGTH, "2.5dB <= NRSRQ (%u)", v);
+  }
+}
+
 static void
 lpp_ue_RxTxTimeDiff_fmt(gchar *s, guint32 v)
 {
@@ -3483,7 +3881,7 @@ static const value_string lpp_T_gnss_id_vals[] = {
 
 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_) {
-#line 1572 "./asn1/lpp/lpp.cnf"
+#line 1605 "./asn1/lpp/lpp.cnf"
   guint32 gnss_id;
   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
                                      5, &gnss_id, TRUE, 1, NULL);
@@ -3513,7 +3911,7 @@ dissect_lpp_GNSS_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
 
 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_) {
-#line 1606 "./asn1/lpp/lpp.cnf"
+#line 1639 "./asn1/lpp/lpp.cnf"
   tvbuff_t *sbas_IDs_tvb = NULL;
   int len;
 
@@ -3561,7 +3959,7 @@ dissect_lpp_SBAS_IDs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
 
 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_) {
-#line 247 "./asn1/lpp/lpp.cnf"
+#line 250 "./asn1/lpp/lpp.cnf"
   tvbuff_t *posModes_tvb = NULL;
   int len;
 
@@ -3650,6 +4048,9 @@ dissect_lpp_T_accessTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
     if (len >= 3) {
       proto_tree_add_item(subtree, hf_lpp_T_accessTypes_gsm, accessTypes_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
+    if (len >= 4) {
+      proto_tree_add_item(subtree, hf_lpp_T_accessTypes_nb_iot, accessTypes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
   }
 
 
@@ -3724,7 +4125,7 @@ dissect_lpp_GNSS_SupportList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 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_) {
-#line 1577 "./asn1/lpp/lpp.cnf"
+#line 1610 "./asn1/lpp/lpp.cnf"
   tvbuff_t *gnss_ids_tvb = NULL;
   int len;
 
@@ -3806,7 +4207,7 @@ dissect_lpp_GNSS_ReferenceLocationSupport(tvbuff_t *tvb _U_, int offset _U_, asn
 
 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_) {
-#line 1439 "./asn1/lpp/lpp.cnf"
+#line 1472 "./asn1/lpp/lpp.cnf"
   tvbuff_t *ionoModel_tvb = NULL;
   int len;
 
@@ -3938,7 +4339,7 @@ dissect_lpp_GNSS_DifferentialCorrectionsSupport(tvbuff_t *tvb _U_, int offset _U
 
 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_) {
-#line 1456 "./asn1/lpp/lpp.cnf"
+#line 1489 "./asn1/lpp/lpp.cnf"
   tvbuff_t *clockModel_tvb = NULL;
   int len;
 
@@ -3978,7 +4379,7 @@ dissect_lpp_T_clockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
 
 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_) {
-#line 1485 "./asn1/lpp/lpp.cnf"
+#line 1518 "./asn1/lpp/lpp.cnf"
   tvbuff_t *orbitModel_tvb = NULL;
   int len;
 
@@ -4104,7 +4505,7 @@ dissect_lpp_GNSS_AcquisitionAssistanceSupport(tvbuff_t *tvb _U_, int offset _U_,
 
 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_) {
-#line 1514 "./asn1/lpp/lpp.cnf"
+#line 1547 "./asn1/lpp/lpp.cnf"
   tvbuff_t *almanacModel_tvb = NULL;
   int len;
 
@@ -4161,7 +4562,7 @@ dissect_lpp_GNSS_AlmanacSupport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
 
 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_) {
-#line 1546 "./asn1/lpp/lpp.cnf"
+#line 1579 "./asn1/lpp/lpp.cnf"
   tvbuff_t *utc_Model_tvb = NULL;
   int len;
 
@@ -4354,11 +4755,41 @@ dissect_lpp_VelocityTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
 }
 
 
+static const value_string lpp_T_idleStateForMeasurements_r14_01_vals[] = {
+  {   0, "required" },
+  { 0, NULL }
+};
+
+
+static int
+dissect_lpp_T_idleStateForMeasurements_r14_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     1, NULL, FALSE, 0, NULL);
+
+  return offset;
+}
+
+
+static const per_sequence_t A_GNSS_ProvideCapabilities_eag_1_sequence[] = {
+  { &hf_lpp_periodicalReportingNotSupported_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_PositioningModes },
+  { &hf_lpp_idleStateForMeasurements_r14_01, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_idleStateForMeasurements_r14_01 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_A_GNSS_ProvideCapabilities_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, A_GNSS_ProvideCapabilities_eag_1_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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_A_GNSS_ProvideCapabilities_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
@@ -4374,7 +4805,7 @@ dissect_lpp_A_GNSS_ProvideCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_c
 
 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_) {
-#line 382 "./asn1/lpp/lpp.cnf"
+#line 412 "./asn1/lpp/lpp.cnf"
   tvbuff_t *otdoa_Mode_tvb = NULL;
   int len;
 
@@ -4388,6 +4819,9 @@ dissect_lpp_T_otdoa_Mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
     if (len >= 1) {
       proto_tree_add_item(subtree, hf_lpp_T_otdoa_Mode_ue_assisted, otdoa_Mode_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_otdoa_Mode_ue_assisted_NB_r14, otdoa_Mode_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
   }
 
 
@@ -4502,63 +4936,59 @@ dissect_lpp_T_additionalNeighbourCellInfoList_r10(tvbuff_t *tvb _U_, int 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 },
-  { &hf_lpp_supportedBandListEUTRA_v9a0, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_SEQUENCE_SIZE_1_maxBands_OF_SupportedBandEUTRA_v9a0 },
-  { &hf_lpp_interFreqRSTDmeasurement_r10, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_interFreqRSTDmeasurement_r10 },
-  { &hf_lpp_additionalNeighbourCellInfoList_r10, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_additionalNeighbourCellInfoList_r10 },
-  { NULL, 0, 0, NULL }
+static const value_string lpp_T_prs_id_r14_vals[] = {
+  {   0, "supported" },
+  { 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);
+dissect_lpp_T_prs_id_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     1, NULL, FALSE, 0, NULL);
 
   return offset;
 }
 
 
+static const value_string lpp_T_tp_separation_via_muting_r14_vals[] = {
+  {   0, "supported" },
+  { 0, NULL }
+};
+
 
 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_) {
-#line 1658 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *ecid_MeasSupported_tvb = NULL;
-  int len;
+dissect_lpp_T_tp_separation_via_muting_r14(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);
 
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     1, 8, FALSE, &ecid_MeasSupported_tvb, &len);
+  return offset;
+}
 
-  if(ecid_MeasSupported_tvb){
-    proto_tree *subtree;
 
-    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
-    if (len >= 1) {
-      proto_tree_add_item(subtree, hf_lpp_T_ecid_MeasSupported_rsrpSup, ecid_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-    if (len >= 2) {
-      proto_tree_add_item(subtree, hf_lpp_T_ecid_MeasSupported_rsrqSup, ecid_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-    if (len >= 3) {
-      proto_tree_add_item(subtree, hf_lpp_T_ecid_MeasSupported_ueRxTxSup, ecid_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-  }
+static const value_string lpp_T_additional_prs_config_r14_vals[] = {
+  {   0, "supported" },
+  { 0, NULL }
+};
 
 
+static int
+dissect_lpp_T_additional_prs_config_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     1, NULL, FALSE, 0, NULL);
 
   return offset;
 }
 
 
-static const value_string lpp_T_ueRxTxSupTDD_r13_vals[] = {
-  {   0, "true" },
+static const value_string lpp_T_prs_based_tbs_r14_vals[] = {
+  {   0, "supported" },
   { 0, NULL }
 };
 
 
 static int
-dissect_lpp_T_ueRxTxSupTDD_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_T_prs_based_tbs_r14(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);
 
@@ -4566,141 +4996,173 @@ dissect_lpp_T_ueRxTxSupTDD_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
 }
 
 
-static const per_sequence_t ECID_ProvideCapabilities_eag_1_sequence[] = {
-  { &hf_lpp_ueRxTxSupTDD_r13, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_ueRxTxSupTDD_r13 },
-  { NULL, 0, 0, NULL }
+static const value_string lpp_T_additionalPathsReport_r14_vals[] = {
+  {   0, "supported" },
+  { 0, NULL }
 };
 
+
 static int
-dissect_lpp_ECID_ProvideCapabilities_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, ECID_ProvideCapabilities_eag_1_sequence);
+dissect_lpp_T_additionalPathsReport_r14(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 ECID_ProvideCapabilities_sequence[] = {
-  { &hf_lpp_ecid_MeasSupported, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_ecid_MeasSupported },
-  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_ECID_ProvideCapabilities_eag_1 },
-  { NULL, 0, 0, NULL }
+static const value_string lpp_T_densePrsConfig_r14_vals[] = {
+  {   0, "supported" },
+  { 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);
+dissect_lpp_T_densePrsConfig_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     1, NULL, FALSE, 0, NULL);
 
   return offset;
 }
 
 
+static const value_string lpp_T_maxSupportedPrsBandwidth_r14_vals[] = {
+  {   0, "n6" },
+  {   1, "n15" },
+  {   2, "n25" },
+  {   3, "n50" },
+  {   4, "n75" },
+  {   5, "n100" },
+  { 0, NULL }
+};
+
 
 static int
-dissect_lpp_T_sensor_Modes_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1704 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *sensor_Modes_tvb = NULL;
-  int len;
+dissect_lpp_T_maxSupportedPrsBandwidth_r14(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);
 
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     1, 8, FALSE, &sensor_Modes_tvb, &len);
+  return offset;
+}
 
-  if(sensor_Modes_tvb){
-    proto_tree *subtree;
 
-    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
-    if (len >= 1) {
-      proto_tree_add_item(subtree, hf_lpp_T_sensor_Modes_r13_standalone, sensor_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-    if (len >= 2) {
-      proto_tree_add_item(subtree, hf_lpp_T_sensor_Modes_r13_ue_assisted, sensor_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-  }
+static const value_string lpp_T_prsOccGroup_r14_vals[] = {
+  {   0, "supported" },
+  { 0, NULL }
+};
 
 
+static int
+dissect_lpp_T_prsOccGroup_r14(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 Sensor_ProvideCapabilities_r13_sequence[] = {
-  { &hf_lpp_sensor_Modes_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_sensor_Modes_r13 },
-  { NULL, 0, 0, NULL }
+static const value_string lpp_T_prsFrequencyHopping_r14_vals[] = {
+  {   0, "supported" },
+  { 0, NULL }
 };
 
+
 static int
-dissect_lpp_Sensor_ProvideCapabilities_r13(tvbuff_t *tvb _U_, int offset _U_, 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_Sensor_ProvideCapabilities_r13, Sensor_ProvideCapabilities_r13_sequence);
+dissect_lpp_T_prsFrequencyHopping_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     1, NULL, FALSE, 0, NULL);
 
   return offset;
 }
 
 
+static const value_string lpp_T_maxSupportedPrsConfigs_r14_vals[] = {
+  {   0, "c2" },
+  {   1, "c3" },
+  { 0, NULL }
+};
+
 
 static int
-dissect_lpp_T_tbs_Modes_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1684 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *tbs_Modes_tvb = NULL;
-  int len;
+dissect_lpp_T_maxSupportedPrsConfigs_r14(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);
 
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     1, 8, FALSE, &tbs_Modes_tvb, &len);
+  return offset;
+}
 
-  if(tbs_Modes_tvb){
-    proto_tree *subtree;
 
-    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
-    if (len >= 1) {
-      proto_tree_add_item(subtree, hf_lpp_T_tbs_Modes_r13_standalone, tbs_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-    if (len >= 2) {
-      proto_tree_add_item(subtree, hf_lpp_T_tbs_Modes_r13_ue_assisted, tbs_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-  }
+static const value_string lpp_T_periodicalReporting_r14_vals[] = {
+  {   0, "supported" },
+  { 0, NULL }
+};
 
 
+static int
+dissect_lpp_T_periodicalReporting_r14(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 TBS_ProvideCapabilities_r13_sequence[] = {
-  { &hf_lpp_tbs_Modes_r13   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_tbs_Modes_r13 },
-  { NULL, 0, 0, NULL }
+static const value_string lpp_T_multiPrbNprs_r14_vals[] = {
+  {   0, "supported" },
+  { 0, NULL }
 };
 
+
 static int
-dissect_lpp_TBS_ProvideCapabilities_r13(tvbuff_t *tvb _U_, int offset _U_, 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_TBS_ProvideCapabilities_r13, TBS_ProvideCapabilities_r13_sequence);
+dissect_lpp_T_multiPrbNprs_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     1, NULL, FALSE, 0, NULL);
 
   return offset;
 }
 
 
+static const value_string lpp_T_idleStateForMeasurements_r14_vals[] = {
+  {   0, "required" },
+  { 0, NULL }
+};
 
-static int
-dissect_lpp_T_wlan_Modes_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1753 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *wlan_Modes_tvb = NULL;
-  int len;
 
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     1, 8, FALSE, &wlan_Modes_tvb, &len);
+static int
+dissect_lpp_T_idleStateForMeasurements_r14(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);
 
-  if(wlan_Modes_tvb){
-    proto_tree *subtree;
+  return offset;
+}
 
-    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
-    if (len >= 1) {
-      proto_tree_add_item(subtree, hf_lpp_T_wlan_Modes_r13_standalone, wlan_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-    if (len >= 2) {
-      proto_tree_add_item(subtree, hf_lpp_T_wlan_Modes_r13_ue_assisted, wlan_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-  }
 
+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 },
+  { &hf_lpp_supportedBandListEUTRA_v9a0, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_SEQUENCE_SIZE_1_maxBands_OF_SupportedBandEUTRA_v9a0 },
+  { &hf_lpp_interFreqRSTDmeasurement_r10, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_interFreqRSTDmeasurement_r10 },
+  { &hf_lpp_additionalNeighbourCellInfoList_r10, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_additionalNeighbourCellInfoList_r10 },
+  { &hf_lpp_prs_id_r14      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_prs_id_r14 },
+  { &hf_lpp_tp_separation_via_muting_r14, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_tp_separation_via_muting_r14 },
+  { &hf_lpp_additional_prs_config_r14, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_additional_prs_config_r14 },
+  { &hf_lpp_prs_based_tbs_r14, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_prs_based_tbs_r14 },
+  { &hf_lpp_additionalPathsReport_r14, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_additionalPathsReport_r14 },
+  { &hf_lpp_densePrsConfig_r14, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_densePrsConfig_r14 },
+  { &hf_lpp_maxSupportedPrsBandwidth_r14, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_maxSupportedPrsBandwidth_r14 },
+  { &hf_lpp_prsOccGroup_r14 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_prsOccGroup_r14 },
+  { &hf_lpp_prsFrequencyHopping_r14, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_prsFrequencyHopping_r14 },
+  { &hf_lpp_maxSupportedPrsConfigs_r14, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_maxSupportedPrsConfigs_r14 },
+  { &hf_lpp_periodicalReporting_r14, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_periodicalReporting_r14 },
+  { &hf_lpp_multiPrbNprs_r14, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_multiPrbNprs_r14 },
+  { &hf_lpp_idleStateForMeasurements_r14, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_idleStateForMeasurements_r14 },
+  { 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;
 }
@@ -4708,23 +5170,32 @@ dissect_lpp_T_wlan_Modes_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 
 static int
-dissect_lpp_T_wlan_MeasSupported_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1770 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *wlan_MeasSupported_tvb = NULL;
+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_) {
+#line 1703 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *ecid_MeasSupported_tvb = NULL;
   int len;
 
   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     1, 8, FALSE, &wlan_MeasSupported_tvb, &len);
+                                     1, 8, FALSE, &ecid_MeasSupported_tvb, &len);
 
-  if(wlan_MeasSupported_tvb){
+  if(ecid_MeasSupported_tvb){
     proto_tree *subtree;
 
     subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
     if (len >= 1) {
-      proto_tree_add_item(subtree, hf_lpp_T_wlan_MeasSupported_r13_rssi_r13, wlan_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
+      proto_tree_add_item(subtree, hf_lpp_T_ecid_MeasSupported_rsrpSup, ecid_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
     if (len >= 2) {
-      proto_tree_add_item(subtree, hf_lpp_T_wlan_MeasSupported_r13_rtt_r13, wlan_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
+      proto_tree_add_item(subtree, hf_lpp_T_ecid_MeasSupported_rsrqSup, ecid_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 3) {
+      proto_tree_add_item(subtree, hf_lpp_T_ecid_MeasSupported_ueRxTxSup, ecid_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 4) {
+      proto_tree_add_item(subtree, hf_lpp_T_ecid_MeasSupported_nrsrpSup_r14, ecid_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 5) {
+      proto_tree_add_item(subtree, hf_lpp_T_ecid_MeasSupported_nrsrqSup_r14, ecid_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
   }
 
@@ -4734,318 +5205,320 @@ dissect_lpp_T_wlan_MeasSupported_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
 }
 
 
-static const per_sequence_t WLAN_ProvideCapabilities_r13_sequence[] = {
-  { &hf_lpp_wlan_Modes_r13  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_wlan_Modes_r13 },
-  { &hf_lpp_wlan_MeasSupported_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_wlan_MeasSupported_r13 },
-  { NULL, 0, 0, NULL }
+static const value_string lpp_T_ueRxTxSupTDD_r13_vals[] = {
+  {   0, "true" },
+  { 0, NULL }
 };
 
+
 static int
-dissect_lpp_WLAN_ProvideCapabilities_r13(tvbuff_t *tvb _U_, int offset _U_, 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_WLAN_ProvideCapabilities_r13, WLAN_ProvideCapabilities_r13_sequence);
+dissect_lpp_T_ueRxTxSupTDD_r13(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 ECID_ProvideCapabilities_eag_1_sequence[] = {
+  { &hf_lpp_ueRxTxSupTDD_r13, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_ueRxTxSupTDD_r13 },
+  { NULL, 0, 0, NULL }
+};
 
 static int
-dissect_lpp_T_bt_Modes_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1813 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *bt_Modes_tvb = NULL;
-  int len;
+dissect_lpp_ECID_ProvideCapabilities_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, ECID_ProvideCapabilities_eag_1_sequence);
 
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     1, 8, FALSE, &bt_Modes_tvb, &len);
+  return offset;
+}
 
-  if(bt_Modes_tvb){
-    proto_tree *subtree;
 
-    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
-    if (len >= 1) {
-      proto_tree_add_item(subtree, hf_lpp_T_bt_Modes_r13_standalone, bt_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-    if (len >= 2) {
-      proto_tree_add_item(subtree, hf_lpp_T_bt_Modes_r13_ue_assisted, bt_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-  }
+static const value_string lpp_T_periodicalReporting_r14_01_vals[] = {
+  {   0, "supported" },
+  { 0, NULL }
+};
 
 
+static int
+dissect_lpp_T_periodicalReporting_r14_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     1, NULL, FALSE, 0, NULL);
 
   return offset;
 }
 
 
+static const value_string lpp_T_triggeredReporting_r14_vals[] = {
+  {   0, "supported" },
+  { 0, NULL }
+};
 
-static int
-dissect_lpp_T_bt_MeasSupported_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1830 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *bt_MeasSupported_tvb = NULL;
-  int len;
-
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     1, 8, FALSE, &bt_MeasSupported_tvb, &len);
-
-  if(bt_MeasSupported_tvb){
-    proto_tree *subtree;
-
-    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
-    if (len >= 1) {
-      proto_tree_add_item(subtree, hf_lpp_T_bt_MeasSupported_r13_rssi_r13, bt_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
-    }
-  }
 
+static int
+dissect_lpp_T_triggeredReporting_r14(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 BT_ProvideCapabilities_r13_sequence[] = {
-  { &hf_lpp_bt_Modes_r13    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_bt_Modes_r13 },
-  { &hf_lpp_bt_MeasSupported_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_bt_MeasSupported_r13 },
-  { NULL, 0, 0, NULL }
+static const value_string lpp_T_idleStateForMeasurements_r14_02_vals[] = {
+  {   0, "required" },
+  { 0, NULL }
 };
 
+
 static int
-dissect_lpp_BT_ProvideCapabilities_r13(tvbuff_t *tvb _U_, int offset _U_, 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_BT_ProvideCapabilities_r13, BT_ProvideCapabilities_r13_sequence);
+dissect_lpp_T_idleStateForMeasurements_r14_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     1, NULL, FALSE, 0, NULL);
 
   return offset;
 }
 
 
-static const per_sequence_t ProvideCapabilities_r9_IEs_eag_1_sequence[] = {
-  { &hf_lpp_sensor_ProvideCapabilities_r13, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_Sensor_ProvideCapabilities_r13 },
-  { &hf_lpp_tbs_ProvideCapabilities_r13, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_TBS_ProvideCapabilities_r13 },
-  { &hf_lpp_wlan_ProvideCapabilities_r13, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_WLAN_ProvideCapabilities_r13 },
-  { &hf_lpp_bt_ProvideCapabilities_r13, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BT_ProvideCapabilities_r13 },
+static const per_sequence_t ECID_ProvideCapabilities_eag_2_sequence[] = {
+  { &hf_lpp_periodicalReporting_r14_01, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_periodicalReporting_r14_01 },
+  { &hf_lpp_triggeredReporting_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_triggeredReporting_r14 },
+  { &hf_lpp_idleStateForMeasurements_r14_02, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_idleStateForMeasurements_r14_02 },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_ProvideCapabilities_r9_IEs_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, ProvideCapabilities_r9_IEs_eag_1_sequence);
+dissect_lpp_ECID_ProvideCapabilities_eag_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, ECID_ProvideCapabilities_eag_2_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 },
-  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_ProvideCapabilities_r9_IEs_eag_1 },
+static const per_sequence_t ECID_ProvideCapabilities_sequence[] = {
+  { &hf_lpp_ecid_MeasSupported, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_ecid_MeasSupported },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_ECID_ProvideCapabilities_eag_1 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_ECID_ProvideCapabilities_eag_2 },
   { 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_) {
+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_ProvideCapabilities_r9_IEs, ProvideCapabilities_r9_IEs_sequence);
+                                   ett_lpp_ECID_ProvideCapabilities, ECID_ProvideCapabilities_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);
+dissect_lpp_T_sensor_Modes_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1843 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *sensor_Modes_tvb = NULL;
+  int len;
+
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     1, 8, FALSE, &sensor_Modes_tvb, &len);
+
+  if(sensor_Modes_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_sensor_Modes_r13_standalone, sensor_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_sensor_Modes_r13_ue_assisted, sensor_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 3) {
+      proto_tree_add_item(subtree, hf_lpp_T_sensor_Modes_r13_ue_based, sensor_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
+
+
 
   return offset;
 }
 
 
-static const per_sequence_t T_criticalExtensionsFuture_01_sequence[] = {
-  { NULL, 0, 0, NULL }
+static const per_sequence_t Sensor_AssistanceDataSupportList_r14_sequence[] = {
+  { NULL, ASN1_EXTENSION_ROOT, 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_) {
+dissect_lpp_Sensor_AssistanceDataSupportList_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_Sensor_AssistanceDataSupportList_r14, Sensor_AssistanceDataSupportList_r14_sequence);
 
   return offset;
 }
 
 
-static const value_string lpp_T_criticalExtensions_01_vals[] = {
-  {   0, "c1" },
-  {   1, "criticalExtensionsFuture" },
+static const value_string lpp_T_idleStateForMeasurements_r14_03_vals[] = {
+  {   0, "required" },
   { 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);
+dissect_lpp_T_idleStateForMeasurements_r14_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,
+                                     1, NULL, FALSE, 0, 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 },
+static const per_sequence_t Sensor_ProvideCapabilities_r13_eag_1_sequence[] = {
+  { &hf_lpp_sensor_AssistanceDataSupportList_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_Sensor_AssistanceDataSupportList_r14 },
+  { &hf_lpp_periodicalReportingSupported_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_PositioningModes },
+  { &hf_lpp_idleStateForMeasurements_r14_03, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_idleStateForMeasurements_r14_03 },
   { 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 63 "./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);
+dissect_lpp_Sensor_ProvideCapabilities_r13_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, Sensor_ProvideCapabilities_r13_eag_1_sequence);
 
   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 const per_sequence_t Sensor_ProvideCapabilities_r13_sequence[] = {
+  { &hf_lpp_sensor_Modes_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_sensor_Modes_r13 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_Sensor_ProvideCapabilities_r13_eag_1 },
+  { NULL, 0, 0, NULL }
 };
 
 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);
+dissect_lpp_Sensor_ProvideCapabilities_r13(tvbuff_t *tvb _U_, int offset _U_, 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_Sensor_ProvideCapabilities_r13, Sensor_ProvideCapabilities_r13_sequence);
 
   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);
+dissect_lpp_T_tbs_Modes_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1752 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *tbs_Modes_tvb = NULL;
+  int len;
 
-  return offset;
-}
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     1, 8, FALSE, &tbs_Modes_tvb, &len);
+
+  if(tbs_Modes_tvb){
+    proto_tree *subtree;
 
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_tbs_Modes_r13_standalone, tbs_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_tbs_Modes_r13_ue_assisted, tbs_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 3) {
+      proto_tree_add_item(subtree, hf_lpp_T_tbs_Modes_r13_ue_based, tbs_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
 
 
-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, 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 },
+static const per_sequence_t MBS_AssistanceDataSupportList_r14_sequence[] = {
+  { &hf_lpp_mbs_AcquisitionAssistanceDataSupport_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_mbs_AlmanacAssistanceDataSupport_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
   { 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_) {
+dissect_lpp_MBS_AssistanceDataSupportList_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_MBS_AssistanceDataSupportList_r14, MBS_AssistanceDataSupportList_r14_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t CommonIEsRequestAssistanceData_sequence[] = {
-  { &hf_lpp_primaryCellID   , 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);
+dissect_lpp_T_mbs_ConfigSupport_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1772 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *mbs_ConfigSupport_tvb = NULL;
+  int len;
+
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     1, 8, FALSE, &mbs_ConfigSupport_tvb, &len);
+
+  if(mbs_ConfigSupport_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_mbs_ConfigSupport_r14_tb1, mbs_ConfigSupport_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_mbs_ConfigSupport_r14_tb2, mbs_ConfigSupport_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 3) {
+      proto_tree_add_item(subtree, hf_lpp_T_mbs_ConfigSupport_r14_tb3, mbs_ConfigSupport_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 4) {
+      proto_tree_add_item(subtree, hf_lpp_T_mbs_ConfigSupport_r14_tb4, mbs_ConfigSupport_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
+
+
 
   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 const value_string lpp_T_mbs_IdleStateForMeasurements_r14_vals[] = {
+  {   0, "required" },
+  { 0, NULL }
 };
 
+
 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);
+dissect_lpp_T_mbs_IdleStateForMeasurements_r14(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_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 },
+static const per_sequence_t TBS_ProvideCapabilities_r13_eag_1_sequence[] = {
+  { &hf_lpp_mbs_AssistanceDataSupportList_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_MBS_AssistanceDataSupportList_r14 },
+  { &hf_lpp_periodicalReportingSupported_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_PositioningModes },
+  { &hf_lpp_mbs_ConfigSupport_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_mbs_ConfigSupport_r14 },
+  { &hf_lpp_mbs_IdleStateForMeasurements_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_mbs_IdleStateForMeasurements_r14 },
   { 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);
+dissect_lpp_TBS_ProvideCapabilities_r13_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, TBS_ProvideCapabilities_r13_eag_1_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t GNSS_ReferenceLocationReq_sequence[] = {
-  { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
+static const per_sequence_t TBS_ProvideCapabilities_r13_sequence[] = {
+  { &hf_lpp_tbs_Modes_r13   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_tbs_Modes_r13 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_TBS_ProvideCapabilities_r13_eag_1 },
+  { NULL, 0, 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_) {
+dissect_lpp_TBS_ProvideCapabilities_r13(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_TBS_ProvideCapabilities_r13, TBS_ProvideCapabilities_r13_sequence);
 
   return offset;
 }
@@ -5053,54 +5526,58 @@ dissect_lpp_GNSS_ReferenceLocationReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
 
 
 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_) {
+dissect_lpp_T_wlan_Modes_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1901 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *wlan_Modes_tvb = NULL;
+  int len;
+
   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     2, 2, FALSE, NULL, NULL);
+                                     1, 8, FALSE, &wlan_Modes_tvb, &len);
 
-  return offset;
-}
+  if(wlan_Modes_tvb){
+    proto_tree *subtree;
 
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_wlan_Modes_r13_standalone, wlan_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_wlan_Modes_r13_ue_assisted, wlan_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 3) {
+      proto_tree_add_item(subtree, hf_lpp_T_wlan_Modes_r13_ue_based, wlan_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
 
-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);
+dissect_lpp_T_wlan_MeasSupported_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1921 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *wlan_MeasSupported_tvb = NULL;
+  int len;
 
-  return offset;
-}
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     1, 8, FALSE, &wlan_MeasSupported_tvb, &len);
+
+  if(wlan_MeasSupported_tvb){
+    proto_tree *subtree;
 
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_wlan_MeasSupported_r13_rssi_r13, wlan_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_wlan_MeasSupported_r13_rtt_r13, wlan_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
 
-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;
 }
@@ -5108,53 +5585,73 @@ dissect_lpp_GNSS_CommonAssistDataReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
 
 
 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);
+dissect_lpp_T_wlan_AP_AD_Supported_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1938 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *wlan_AP_AD_Supported_tvb = NULL;
+  int len;
+
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     1, 8, FALSE, &wlan_AP_AD_Supported_tvb, &len);
+
+  if(wlan_AP_AD_Supported_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_wlan_AP_AD_Supported_r14_ap_identifier, wlan_AP_AD_Supported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_wlan_AP_AD_Supported_r14_ap_location, wlan_AP_AD_Supported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
+
+
 
   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 const value_string lpp_T_idleStateForMeasurements_r14_04_vals[] = {
+  {   0, "required" },
+  { 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);
+dissect_lpp_T_idleStateForMeasurements_r14_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, FALSE, 0, NULL);
 
   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 const per_sequence_t WLAN_ProvideCapabilities_r13_eag_1_sequence[] = {
+  { &hf_lpp_wlan_AP_AD_Supported_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_wlan_AP_AD_Supported_r14 },
+  { &hf_lpp_periodicalReportingSupported_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_PositioningModes },
+  { &hf_lpp_idleStateForMeasurements_r14_04, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_idleStateForMeasurements_r14_04 },
+  { NULL, 0, 0, NULL }
 };
 
 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);
+dissect_lpp_WLAN_ProvideCapabilities_r13_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, WLAN_ProvideCapabilities_r13_eag_1_sequence);
 
   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 },
+static const per_sequence_t WLAN_ProvideCapabilities_r13_sequence[] = {
+  { &hf_lpp_wlan_Modes_r13  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_wlan_Modes_r13 },
+  { &hf_lpp_wlan_MeasSupported_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_wlan_MeasSupported_r13 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_WLAN_ProvideCapabilities_r13_eag_1 },
   { 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_) {
+dissect_lpp_WLAN_ProvideCapabilities_r13(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_WLAN_ProvideCapabilities_r13, WLAN_ProvideCapabilities_r13_sequence);
 
   return offset;
 }
@@ -5162,12 +5659,26 @@ dissect_lpp_GNSS_DifferentialCorrectionsReq(tvbuff_t *tvb _U_, int offset _U_, a
 
 
 static int
-dissect_lpp_T_gnss_WeekOrDay(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);
+dissect_lpp_T_bt_Modes_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1998 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *bt_Modes_tvb = NULL;
+  int len;
+
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     1, 8, FALSE, &bt_Modes_tvb, &len);
+
+  if(bt_Modes_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_bt_Modes_r13_standalone, bt_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_bt_Modes_r13_ue_assisted, bt_Modes_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
 
-#line 1385 "./asn1/lpp/lpp.cnf"
-  proto_item_append_text(actx->created_item, " (days for glonass, weeks otherwise)");
 
 
   return offset;
@@ -5176,119 +5687,182 @@ dissect_lpp_T_gnss_WeekOrDay(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 
 static int
-dissect_lpp_T_gnss_Toe(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);
+dissect_lpp_T_bt_MeasSupported_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 2015 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *bt_MeasSupported_tvb = NULL;
+  int len;
 
-#line 1388 "./asn1/lpp/lpp.cnf"
-  proto_item_append_text(actx->created_item, " (units of 15 mns for glonass, hours otherwise)");
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     1, 8, FALSE, &bt_MeasSupported_tvb, &len);
+
+  if(bt_MeasSupported_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_bt_MeasSupported_r13_rssi_r13, bt_MeasSupported_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
 
 
   return offset;
 }
 
 
+static const value_string lpp_T_idleStateForMeasurements_r14_05_vals[] = {
+  {   0, "required" },
+  { 0, NULL }
+};
 
-static int
-dissect_lpp_T_t_toeLimit(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);
-
-#line 1391 "./asn1/lpp/lpp.cnf"
-  proto_item_append_text(actx->created_item, " (units of 30 mns for glonass, hours otherwise)");
 
+static int
+dissect_lpp_T_idleStateForMeasurements_r14_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,
+                                     1, NULL, FALSE, 0, NULL);
 
   return offset;
 }
 
 
+static const per_sequence_t BT_ProvideCapabilities_r13_eag_1_sequence[] = {
+  { &hf_lpp_idleStateForMeasurements_r14_05, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_idleStateForMeasurements_r14_05 },
+  { &hf_lpp_periodicalReportingSupported_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_PositioningModes },
+  { NULL, 0, 0, NULL }
+};
 
 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);
+dissect_lpp_BT_ProvideCapabilities_r13_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, BT_ProvideCapabilities_r13_eag_1_sequence);
 
   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 },
+static const per_sequence_t BT_ProvideCapabilities_r13_sequence[] = {
+  { &hf_lpp_bt_Modes_r13    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_bt_Modes_r13 },
+  { &hf_lpp_bt_MeasSupported_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_bt_MeasSupported_r13 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_BT_ProvideCapabilities_r13_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
-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_) {
+static int
+dissect_lpp_BT_ProvideCapabilities_r13(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_BT_ProvideCapabilities_r13, BT_ProvideCapabilities_r13_sequence);
 
   return offset;
 }
 
 
+static const per_sequence_t ProvideCapabilities_r9_IEs_eag_1_sequence[] = {
+  { &hf_lpp_sensor_ProvideCapabilities_r13, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_Sensor_ProvideCapabilities_r13 },
+  { &hf_lpp_tbs_ProvideCapabilities_r13, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_TBS_ProvideCapabilities_r13 },
+  { &hf_lpp_wlan_ProvideCapabilities_r13, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_WLAN_ProvideCapabilities_r13 },
+  { &hf_lpp_bt_ProvideCapabilities_r13, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BT_ProvideCapabilities_r13 },
+  { NULL, 0, 0, NULL }
+};
 
 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, NULL);
+dissect_lpp_ProvideCapabilities_r9_IEs_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, ProvideCapabilities_r9_IEs_eag_1_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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_ProvideCapabilities_r9_IEs_eag_1 },
+  { NULL, 0, 0, NULL }
+};
 
 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);
+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 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 },
+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_SatListRelatedDataElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_SatListRelatedDataElement, SatListRelatedDataElement_sequence);
+                                   ett_lpp_T_criticalExtensionsFuture_01, T_criticalExtensionsFuture_01_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 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_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);
+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 StoredNavListInfo_sequence[] = {
-  { &hf_lpp_gnss_WeekOrDay  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_gnss_WeekOrDay },
-  { &hf_lpp_gnss_Toe        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_gnss_Toe },
-  { &hf_lpp_t_toeLimit      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_t_toeLimit },
-  { &hf_lpp_satListRelatedDataList, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_SatListRelatedDataList },
+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_StoredNavListInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_ProvideCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 63 "./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_StoredNavListInfo, StoredNavListInfo_sequence);
+                                   ett_lpp_ProvideCapabilities, ProvideCapabilities_sequence);
 
   return offset;
 }
@@ -5296,109 +5870,120 @@ dissect_lpp_StoredNavListInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
 
 
 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, NULL);
+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_clockModelID_PrefList_sequence_of[1] = {
-  { &hf_lpp_clockModelID_PrefList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_8 },
+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_clockModelID_PrefList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_clockModelID_PrefList, T_clockModelID_PrefList_sequence_of,
-                                                  1, 8, FALSE);
+                                                  ett_lpp_T_mcc_02, T_mcc_02_sequence_of,
+                                                  3, 3, 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 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_orbitModelID_PrefList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_orbitModelID_PrefList, T_orbitModelID_PrefList_sequence_of,
-                                                  1, 8, FALSE);
+                                                  ett_lpp_T_mnc_02, T_mnc_02_sequence_of,
+                                                  2, 3, 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 },
+
+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, 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_ReqNavListInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_ReqNavListInfo, ReqNavListInfo_sequence);
+                                   ett_lpp_ECGI, ECGI_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 const per_sequence_t CommonIEsRequestAssistanceData_sequence[] = {
+  { &hf_lpp_primaryCellID   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_ECGI },
+  { NULL, 0, 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);
+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 GNSS_RealTimeIntegrityReq_sequence[] = {
-  { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
+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_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);
+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_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);
+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_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);
+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;
 }
@@ -5406,55 +5991,54 @@ dissect_lpp_INTEGER_0_999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
 
 
 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);
+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, NULL);
 
   return offset;
 }
 
 
-static const per_sequence_t GNSS_DataBitsReqSatElement_sequence[] = {
-  { &hf_lpp_svID            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID },
+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_DataBitsReqSatElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_DataBitsReqSatElement, GNSS_DataBitsReqSatElement_sequence);
+                                   ett_lpp_GNSS_IonosphericModelReq, GNSS_IonosphericModelReq_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 const per_sequence_t GNSS_EarthOrientationParametersReq_sequence[] = {
+  { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
 };
 
 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);
+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_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 },
+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_DataBitAssistanceReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_DataBitAssistanceReq, GNSS_DataBitAssistanceReq_sequence);
+                                   ett_lpp_GNSS_CommonAssistDataReq, GNSS_CommonAssistDataReq_sequence);
 
   return offset;
 }
@@ -5462,306 +6046,287 @@ dissect_lpp_GNSS_DataBitAssistanceReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
 
 
 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_) {
+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,
-                                                            0U, 7U, NULL, FALSE);
+                                                            1U, 15U, 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 },
+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 }
 };
 
-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_) {
+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_SignalID, GNSS_SignalID_sequence);
+                                   ett_lpp_GNSS_TimeModelElementReq, GNSS_TimeModelElementReq_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 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_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);
+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_AlmanacReq_sequence[] = {
-  { &hf_lpp_modelID         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_1_8 },
+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_AlmanacReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_AlmanacReq, GNSS_AlmanacReq_sequence);
+                                   ett_lpp_GNSS_DifferentialCorrectionsReq, GNSS_DifferentialCorrectionsReq_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);
-
+dissect_lpp_T_gnss_WeekOrDay(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);
+
+#line 1418 "./asn1/lpp/lpp.cnf"
+  proto_item_append_text(actx->created_item, " (days for glonass, weeks otherwise)");
+
+
   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);
+dissect_lpp_T_gnss_Toe(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);
+
+#line 1421 "./asn1/lpp/lpp.cnf"
+  proto_item_append_text(actx->created_item, " (units of 15 mns for glonass, hours otherwise)");
+
 
   return offset;
 }
 
 
-static const per_sequence_t BDS_DifferentialCorrectionsReq_r12_sequence[] = {
-  { &hf_lpp_dgnss_SignalsReq, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalIDs },
-  { NULL, 0, 0, NULL }
-};
 
 static int
-dissect_lpp_BDS_DifferentialCorrectionsReq_r12(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_DifferentialCorrectionsReq_r12, BDS_DifferentialCorrectionsReq_r12_sequence);
+dissect_lpp_T_t_toeLimit(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);
+
+#line 1424 "./asn1/lpp/lpp.cnf"
+  proto_item_append_text(actx->created_item, " (units of 30 mns for glonass, hours otherwise)");
+
 
   return offset;
 }
 
 
-static const per_sequence_t BDS_GridModelReq_r12_sequence[] = {
-  { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
-};
 
 static int
-dissect_lpp_BDS_GridModelReq_r12(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_GridModelReq_r12, BDS_GridModelReq_r12_sequence);
+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 GNSS_GenericAssistDataReqElement_eag_1_sequence[] = {
-  { &hf_lpp_bds_DifferentialCorrectionsReq_r12, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BDS_DifferentialCorrectionsReq_r12 },
-  { &hf_lpp_bds_GridModelReq_r12, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BDS_GridModelReq_r12 },
+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_GNSS_GenericAssistDataReqElement_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, GNSS_GenericAssistDataReqElement_eag_1_sequence);
+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 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 },
-  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_GenericAssistDataReqElement_eag_1 },
-  { 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);
+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, NULL);
 
   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);
+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 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 },
+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_A_GNSS_RequestAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_A_GNSS_RequestAssistanceData, A_GNSS_RequestAssistanceData_sequence);
+                                   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_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);
+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 OTDOA_RequestAssistanceData_sequence[] = {
-  { &hf_lpp_physCellId      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 },
+static const per_sequence_t StoredNavListInfo_sequence[] = {
+  { &hf_lpp_gnss_WeekOrDay  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_gnss_WeekOrDay },
+  { &hf_lpp_gnss_Toe        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_gnss_Toe },
+  { &hf_lpp_t_toeLimit      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_t_toeLimit },
+  { &hf_lpp_satListRelatedDataList, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_SatListRelatedDataList },
   { 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_) {
+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_OTDOA_RequestAssistanceData, OTDOA_RequestAssistanceData_sequence);
+                                   ett_lpp_StoredNavListInfo, StoredNavListInfo_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);
+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, NULL);
 
   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_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 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_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_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);
+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 T_criticalExtensionsFuture_02_sequence[] = {
+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_T_criticalExtensionsFuture_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_T_criticalExtensionsFuture_02, T_criticalExtensionsFuture_02_sequence);
+                                   ett_lpp_ReqNavListInfo, ReqNavListInfo_sequence);
 
   return offset;
 }
 
 
-static const value_string lpp_T_criticalExtensions_02_vals[] = {
-  {   0, "c1" },
-  {   1, "criticalExtensionsFuture" },
+static const value_string lpp_GNSS_NavigationModelReq_vals[] = {
+  {   0, "storedNavList" },
+  {   1, "reqNavList" },
   { 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 },
+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_T_criticalExtensions_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_T_criticalExtensions_02, T_criticalExtensions_02_choice,
+                                 ett_lpp_GNSS_NavigationModelReq, GNSS_NavigationModelReq_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 const per_sequence_t GNSS_RealTimeIntegrityReq_sequence[] = {
+  { NULL, ASN1_EXTENSION_ROOT, 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 66 "./asn1/lpp/lpp.cnf"
-  col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Request Assistance Data");
-
-
+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_RequestAssistanceData, RequestAssistanceData_sequence);
+                                   ett_lpp_GNSS_RealTimeIntegrityReq, GNSS_RealTimeIntegrityReq_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);
+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;
 }
@@ -5769,9 +6334,9 @@ dissect_lpp_CommonIEsProvideAssistanceData(tvbuff_t *tvb _U_, int offset _U_, as
 
 
 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_) {
+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, 32767U, NULL, FALSE);
+                                                            0U, 999U, NULL, FALSE);
 
   return offset;
 }
@@ -5779,205 +6344,229 @@ dissect_lpp_INTEGER_0_32767(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 
 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_) {
+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, 86399U, NULL, FALSE);
+                                                            0U, 15U, 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_T_notificationOfLeapSecond(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 402 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *notificationOfLeapSecond_tvb = NULL;
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
-                                     2, 2, FALSE, &notificationOfLeapSecond_tvb, NULL);
-
-
-
-
-#line 406 "./asn1/lpp/lpp.cnf"
-  if (notificationOfLeapSecond_tvb) {
-    guint bitvalue = tvb_get_bits8(notificationOfLeapSecond_tvb, 0, 2);
-    actx->created_item = proto_tree_add_uint(tree, hf_index, notificationOfLeapSecond_tvb, 0, 1, bitvalue);
-  }
-
+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_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);
+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 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);
-
+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_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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, 1U, NULL, FALSE);
+                                                            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_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);
+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 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 },
+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_GPS_TOW_AssistElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_GPS_TOW_AssistElement, GPS_TOW_AssistElement_sequence);
+                                   ett_lpp_GNSS_AcquisitionAssistanceReq, GNSS_AcquisitionAssistanceReq_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 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_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);
+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_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_T_notificationOfLeapSecond },
-  { &hf_lpp_gps_TOW_Assist  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_GPS_TOW_Assist },
+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 }
 };
 
-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_) {
+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_SystemTime, GNSS_SystemTime_sequence);
+                                   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_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);
+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 BDS_DifferentialCorrectionsReq_r12_sequence[] = {
+  { &hf_lpp_dgnss_SignalsReq, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalIDs },
+  { NULL, 0, 0, NULL }
+};
 
 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);
+dissect_lpp_BDS_DifferentialCorrectionsReq_r12(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_DifferentialCorrectionsReq_r12, BDS_DifferentialCorrectionsReq_r12_sequence);
 
   return offset;
 }
 
 
+static const per_sequence_t BDS_GridModelReq_r12_sequence[] = {
+  { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
+};
 
 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);
+dissect_lpp_BDS_GridModelReq_r12(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_GridModelReq_r12, BDS_GridModelReq_r12_sequence);
 
   return offset;
 }
 
 
+static const per_sequence_t GNSS_GenericAssistDataReqElement_eag_1_sequence[] = {
+  { &hf_lpp_bds_DifferentialCorrectionsReq_r12, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BDS_DifferentialCorrectionsReq_r12 },
+  { &hf_lpp_bds_GridModelReq_r12, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BDS_GridModelReq_r12 },
+  { NULL, 0, 0, NULL }
+};
 
 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);
+dissect_lpp_GNSS_GenericAssistDataReqElement_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, GNSS_GenericAssistDataReqElement_eag_1_sequence);
 
   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 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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_GenericAssistDataReqElement_eag_1 },
+  { NULL, 0, 0, NULL }
 };
 
 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);
+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 T_mnc_sequence_of[1] = {
-  { &hf_lpp_mnc_item        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_9 },
+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_T_mnc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_T_mnc, T_mnc_sequence_of,
-                                                  2, 3, FALSE);
+                                                  ett_lpp_GNSS_GenericAssistDataReq, GNSS_GenericAssistDataReq_sequence_of,
+                                                  1, 16, 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 },
+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_T_plmn_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_T_plmn_Identity, T_plmn_Identity_sequence);
+                                   ett_lpp_A_GNSS_RequestAssistanceData, A_GNSS_RequestAssistanceData_sequence);
 
   return offset;
 }
@@ -5985,96 +6574,94 @@ dissect_lpp_T_plmn_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 
 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, NULL);
+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 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);
+dissect_lpp_T_adType_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 349 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *adType_tvb = NULL;
+  int len;
 
-  return offset;
-}
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     1, 8, FALSE, &adType_tvb, &len);
+
+  if(adType_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_adType_r14_prs, adType_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_adType_r14_nprs, adType_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
 
 
-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 }
-};
 
-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 const per_sequence_t OTDOA_RequestAssistanceData_eag_1_sequence[] = {
+  { &hf_lpp_adType_r14      , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_adType_r14 },
+  { NULL, 0, 0, NULL }
+};
 
-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, maxEARFCN, NULL, FALSE);
+static int
+dissect_lpp_OTDOA_RequestAssistanceData_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, OTDOA_RequestAssistanceData_eag_1_sequence);
 
   return offset;
 }
 
 
+static const per_sequence_t OTDOA_RequestAssistanceData_sequence[] = {
+  { &hf_lpp_physCellId      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_RequestAssistanceData_eag_1 },
+  { NULL, 0, 0, NULL }
+};
 
 static int
-dissect_lpp_ARFCN_ValueEUTRA_v9a0(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,
-                                                            maxEARFCN_Plus1, maxEARFCN2, NULL, FALSE);
+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 T_eag_1_sequence[] = {
-  { &hf_lpp_earfcn_v9a0     , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_v9a0 },
-  { NULL, 0, 0, NULL }
+static const per_sequence_t Sensor_RequestAssistanceData_r14_sequence[] = {
+  { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
 };
 
 static int
-dissect_lpp_T_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, T_eag_1_sequence);
+dissect_lpp_Sensor_RequestAssistanceData_r14(tvbuff_t *tvb _U_, int offset _U_, 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_Sensor_RequestAssistanceData_r14, Sensor_RequestAssistanceData_r14_sequence);
 
   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 },
-  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_T_eag_1 },
+static const per_sequence_t TBS_RequestAssistanceData_r14_sequence[] = {
+  { &hf_lpp_mbs_AlmanacAssistanceDataReq_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_mbs_AcquisitionAssistanceDataReq_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
   { 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_) {
+dissect_lpp_TBS_RequestAssistanceData_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_TBS_RequestAssistanceData_r14, TBS_RequestAssistanceData_r14_sequence);
 
   return offset;
 }
@@ -6082,298 +6669,258 @@ dissect_lpp_T_eUTRA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
 
 
 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);
+dissect_lpp_T_requestedAD_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1955 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *requestedAD_tvb = NULL;
+  int len;
+
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     1, 8, FALSE, &requestedAD_tvb, &len);
+
+  if(requestedAD_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_requestedAD_r14_ap_identifier, requestedAD_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 2) {
+      proto_tree_add_item(subtree, hf_lpp_T_requestedAD_r14_ap_location, requestedAD_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
+
+
 
   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);
+dissect_lpp_OCTET_STRING_SIZE_6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+                                       6, 6, FALSE, NULL);
 
   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);
+dissect_lpp_T_ssid_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1878 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *ssid_tvb = NULL;
 
-  return offset;
-}
+  offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
+                                       1, 32, FALSE, &ssid_tvb);
 
+  actx->created_item = proto_tree_add_item(tree, hf_index, ssid_tvb, 0, -1, ENC_ASCII|ENC_NA);
 
 
-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 },
+static const per_sequence_t WLAN_AP_Identifier_r13_sequence[] = {
+  { &hf_lpp_bssid_r13       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_OCTET_STRING_SIZE_6 },
+  { &hf_lpp_ssid_r13        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_ssid_r13 },
   { 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_) {
+dissect_lpp_WLAN_AP_Identifier_r13(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_WLAN_AP_Identifier_r13, WLAN_AP_Identifier_r13_sequence);
 
   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 const per_sequence_t SEQUENCE_SIZE_1_maxVisibleAPs_r14_OF_WLAN_AP_Identifier_r13_sequence_of[1] = {
+  { &hf_lpp_visibleAPs_r14_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_WLAN_AP_Identifier_r13 },
 };
 
 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_) {
+dissect_lpp_SEQUENCE_SIZE_1_maxVisibleAPs_r14_OF_WLAN_AP_Identifier_r13(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);
+                                                  ett_lpp_SEQUENCE_SIZE_1_maxVisibleAPs_r14_OF_WLAN_AP_Identifier_r13, SEQUENCE_SIZE_1_maxVisibleAPs_r14_OF_WLAN_AP_Identifier_r13_sequence_of,
+                                                  1, maxVisibleAPs_r14, 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 const per_sequence_t SEQUENCE_SIZE_1_maxKnownAPs_r14_OF_WLAN_AP_Identifier_r13_sequence_of[1] = {
+  { &hf_lpp_wlan_AP_StoredData_r14_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_WLAN_AP_Identifier_r13 },
 };
 
 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_) {
+dissect_lpp_SEQUENCE_SIZE_1_maxKnownAPs_r14_OF_WLAN_AP_Identifier_r13(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);
+                                                  ett_lpp_SEQUENCE_SIZE_1_maxKnownAPs_r14_OF_WLAN_AP_Identifier_r13, SEQUENCE_SIZE_1_maxKnownAPs_r14_OF_WLAN_AP_Identifier_r13_sequence_of,
+                                                  1, maxKnownAPs_r14, 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 },
+static const per_sequence_t WLAN_RequestAssistanceData_r14_sequence[] = {
+  { &hf_lpp_requestedAD_r14 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_requestedAD_r14 },
+  { &hf_lpp_visibleAPs_r14  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_SEQUENCE_SIZE_1_maxVisibleAPs_r14_OF_WLAN_AP_Identifier_r13 },
+  { &hf_lpp_wlan_AP_StoredData_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_SEQUENCE_SIZE_1_maxKnownAPs_r14_OF_WLAN_AP_Identifier_r13 },
   { 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_) {
+dissect_lpp_WLAN_RequestAssistanceData_r14(tvbuff_t *tvb _U_, int offset _U_, 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, NULL);
+                                   ett_lpp_WLAN_RequestAssistanceData_r14, WLAN_RequestAssistanceData_r14_sequence);
 
   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 },
+static const per_sequence_t RequestAssistanceData_r9_IEs_eag_1_sequence[] = {
+  { &hf_lpp_sensor_RequestAssistanceData_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_Sensor_RequestAssistanceData_r14 },
+  { &hf_lpp_tbs_RequestAssistanceData_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_TBS_RequestAssistanceData_r14 },
+  { &hf_lpp_wlan_RequestAssistanceData_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_WLAN_RequestAssistanceData_r14 },
   { NULL, 0, 0, NULL }
 };
 
-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);
+static int
+dissect_lpp_RequestAssistanceData_r9_IEs_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, RequestAssistanceData_r9_IEs_eag_1_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 },
+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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_RequestAssistanceData_r9_IEs_eag_1 },
   { 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_) {
+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_T_gSM, T_gSM_sequence);
+                                   ett_lpp_RequestAssistanceData_r9_IEs, RequestAssistanceData_r9_IEs_sequence);
 
   return offset;
 }
 
 
-static const value_string lpp_T_cellID_vals[] = {
-  {   0, "eUTRA" },
-  {   1, "uTRA" },
-  {   2, "gSM" },
+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_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 },
+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_cellID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_cellID, T_cellID_choice,
+                                 ett_lpp_T_c1_03, T_c1_03_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 },
+static const per_sequence_t T_criticalExtensionsFuture_02_sequence[] = {
   { NULL, 0, 0, NULL }
 };
 
-int
-dissect_lpp_NetworkTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_NetworkTime, NetworkTime_sequence);
+                                   ett_lpp_T_criticalExtensionsFuture_02, T_criticalExtensionsFuture_02_sequence);
 
   return offset;
 }
 
 
-static const value_string lpp_T_bsAlign_vals[] = {
-  {   0, "true" },
+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_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);
+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 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 },
+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_GNSS_ReferenceTimeForOneCell(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_RequestAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 66 "./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_GNSS_ReferenceTimeForOneCell, GNSS_ReferenceTimeForOneCell_sequence);
+                                   ett_lpp_RequestAssistanceData, RequestAssistanceData_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 const per_sequence_t CommonIEsProvideAssistanceData_sequence[] = {
+  { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
 };
 
 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);
+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 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 }
-};
 
-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);
+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 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);
+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;
 }
@@ -6381,9 +6928,21 @@ dissect_lpp_T_latitudeSign_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
 
 
 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);
+dissect_lpp_T_notificationOfLeapSecond(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 435 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *notificationOfLeapSecond_tvb = NULL;
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
+                                     2, 2, FALSE, &notificationOfLeapSecond_tvb, NULL);
+
+
+
+
+#line 439 "./asn1/lpp/lpp.cnf"
+  if (notificationOfLeapSecond_tvb) {
+    guint bitvalue = tvb_get_bits8(notificationOfLeapSecond_tvb, 0, 2);
+    actx->created_item = proto_tree_add_uint(tree, hf_index, notificationOfLeapSecond_tvb, 0, 1, bitvalue);
+  }
+
 
   return offset;
 }
@@ -6391,25 +6950,19 @@ dissect_lpp_INTEGER_0_8388607(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
 
 
 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_) {
+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,
-                                                            -8388608, 8388607U, NULL, FALSE);
+                                                            1U, 64U, 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);
+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;
 }
@@ -6417,9 +6970,9 @@ dissect_lpp_T_altitudeDirection_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
 
 
 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_) {
+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, 179U, NULL, FALSE);
+                                                            0U, 1U, NULL, FALSE);
 
   return offset;
 }
@@ -6427,68 +6980,60 @@ dissect_lpp_INTEGER_0_179(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
 
 
 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_) {
+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, 100U, NULL, FALSE);
+                                                            0U, 3U, 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 },
+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 }
 };
 
-int
-dissect_lpp_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid, EllipsoidPointWithAltitudeAndUncertaintyEllipsoid_sequence);
+                                   ett_lpp_GPS_TOW_AssistElement, GPS_TOW_AssistElement_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 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_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);
+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_T_notificationOfLeapSecond },
+  { &hf_lpp_gps_TOW_Assist  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_GPS_TOW_Assist },
+  { NULL, 0, 0, NULL }
+};
 
-static int
-dissect_lpp_T_dataID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 421 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *dataID_tvb = NULL;
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
-                                     2, 2, FALSE, &dataID_tvb, NULL);
-
-
-
-
-#line 425 "./asn1/lpp/lpp.cnf"
-  if (dataID_tvb) {
-    guint bitvalue = tvb_get_bits8(dataID_tvb, 0, 2);
-    actx->created_item = proto_tree_add_uint(tree, hf_index, dataID_tvb, 0, 1, bitvalue);
-  }
-
+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;
 }
@@ -6496,31 +7041,19 @@ dissect_lpp_T_dataID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
 
 
 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_) {
+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,
-                                                            -128, 127U, NULL, FALSE);
+                                                            0U, 127U, NULL, FALSE);
 
   return offset;
 }
 
 
-static const per_sequence_t KlobucharModelParameter_sequence[] = {
-  { &hf_lpp_dataID          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_dataID },
-  { &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);
+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;
 }
@@ -6528,9 +7061,9 @@ dissect_lpp_KlobucharModelParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
 
 
 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_) {
+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, 2047U, NULL, FALSE);
+                                                            0U, 3999999U, NULL, FALSE);
 
   return offset;
 }
@@ -6538,55 +7071,52 @@ dissect_lpp_INTEGER_0_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
 
 
 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_) {
+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,
-                                                            -1024, 1023U, NULL, FALSE);
+                                                            -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_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);
+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 NeQuickModelParameter_sequence[] = {
-  { &hf_lpp_ai0             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2047 },
-  { &hf_lpp_ai1             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
-  { &hf_lpp_ai2             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8192_8191 },
-  { &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 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_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);
+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 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 },
+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_GNSS_IonosphericModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_GNSS_IonosphericModel, GNSS_IonosphericModel_sequence);
+                                   ett_lpp_T_plmn_Identity, T_plmn_Identity_sequence);
 
   return offset;
 }
@@ -6594,39 +7124,56 @@ dissect_lpp_GNSS_IonosphericModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
 
 
 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);
+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, 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_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);
+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_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);
+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_INTEGER_M1073741824_1073741823(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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,
-                                                            -1073741824, 1073741823U, NULL, FALSE);
+                                                            0U, maxEARFCN, NULL, FALSE);
 
   return offset;
 }
@@ -6634,56 +7181,39 @@ dissect_lpp_INTEGER_M1073741824_1073741823(tvbuff_t *tvb _U_, int offset _U_, as
 
 
 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_) {
+dissect_lpp_ARFCN_ValueEUTRA_v9a0(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);
+                                                            maxEARFCN_Plus1, maxEARFCN2, 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 },
+static const per_sequence_t T_eag_1_sequence[] = {
+  { &hf_lpp_earfcn_v9a0     , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_v9a0 },
   { 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);
+dissect_lpp_T_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, T_eag_1_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 },
+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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_T_eag_1 },
   { 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_) {
+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_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);
+                                   ett_lpp_T_eUTRA, T_eUTRA_sequence);
 
   return offset;
 }
@@ -6691,162 +7221,180 @@ dissect_lpp_INTEGER_M67108864_67108863(tvbuff_t *tvb _U_, int offset _U_, asn1_c
 
 
 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_) {
+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,
-                                                            -4096, 4095U, NULL, FALSE);
+                                                            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_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);
+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 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 },
+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_GNSS_TimeModelElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_GNSS_TimeModelElement, GNSS_TimeModelElement_sequence);
+                                   ett_lpp_T_tdd, T_tdd_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 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_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);
+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_INTEGER_M2047_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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,
-                                                            -2047, 2047U, NULL, FALSE);
+                                                            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_INTEGER_M127_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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,
-                                                            -127, 127U, NULL, FALSE);
+                                                            0U, 1023U, 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 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_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);
+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 DGNSS_SatList_sequence_of[1] = {
-  { &hf_lpp_DGNSS_SatList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_DGNSS_CorrectionsElement },
+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_DGNSS_SatList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_DGNSS_SatList, DGNSS_SatList_sequence_of,
-                                                  1, 64, FALSE);
+                                                  ett_lpp_T_mnc_01, T_mnc_01_sequence_of,
+                                                  2, 3, 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 },
+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_DGNSS_SgnTypeElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_DGNSS_SgnTypeElement, DGNSS_SgnTypeElement_sequence);
+                                   ett_lpp_T_plmn_Identity_01, T_plmn_Identity_01_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);
+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, NULL);
 
   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 },
+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_GNSS_DifferentialCorrections(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_GNSS_DifferentialCorrections, GNSS_DifferentialCorrections_sequence);
+                                   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_INTEGER_M32_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,
-                                                            -32, 31U, NULL, FALSE);
+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;
 }
@@ -6854,131 +7402,195 @@ dissect_lpp_INTEGER_M32_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
 
 
 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_) {
+dissect_lpp_ARFCN_ValueEUTRA_r14(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;
-}
-
+                                                            0U, maxEARFCN2, NULL, FALSE);
+
+  return offset;
+}
+
+
+static const value_string lpp_CarrierFreqOffsetNB_r14_vals[] = {
+  {   0, "v-10" },
+  {   1, "v-9" },
+  {   2, "v-8" },
+  {   3, "v-7" },
+  {   4, "v-6" },
+  {   5, "v-5" },
+  {   6, "v-4" },
+  {   7, "v-3" },
+  {   8, "v-2" },
+  {   9, "v-1" },
+  {  10, "v-0dot5" },
+  {  11, "v0" },
+  {  12, "v1" },
+  {  13, "v2" },
+  {  14, "v3" },
+  {  15, "v4" },
+  {  16, "v5" },
+  {  17, "v6" },
+  {  18, "v7" },
+  {  19, "v8" },
+  {  20, "v9" },
+  { 0, NULL }
+};
 
 
 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);
+dissect_lpp_CarrierFreqOffsetNB_r14(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,
+                                     21, NULL, FALSE, 0, NULL);
 
   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_M32_31 },
-  { &hf_lpp_stanClockAF1    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1048576_1048575 },
-  { &hf_lpp_stanClockAF0    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1073741824_1073741823 },
-  { &hf_lpp_stanClockTgd    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_M512_511 },
-  { &hf_lpp_sisa            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 },
-  { &hf_lpp_stanModelID     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_1 },
+static const per_sequence_t CarrierFreq_NB_r14_sequence[] = {
+  { &hf_lpp_carrierFreq_r14 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_ARFCN_ValueEUTRA_r14 },
+  { &hf_lpp_carrierFreqOffset_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_CarrierFreqOffsetNB_r14 },
   { 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_) {
+dissect_lpp_CarrierFreq_NB_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_CarrierFreq_NB_r14, CarrierFreq_NB_r14_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 const per_sequence_t T_nBIoT_r14_sequence[] = {
+  { &hf_lpp_nbPhysCellId_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 },
+  { &hf_lpp_nbCellGlobalId_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_ECGI },
+  { &hf_lpp_nbCarrierFreq_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_CarrierFreq_NB_r14 },
+  { NULL, 0, 0, NULL }
 };
 
 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);
+dissect_lpp_T_nBIoT_r14(tvbuff_t *tvb _U_, int offset _U_, 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_nBIoT_r14, T_nBIoT_r14_sequence);
 
   return offset;
 }
 
 
+static const value_string lpp_T_cellID_vals[] = {
+  {   0, "eUTRA" },
+  {   1, "uTRA" },
+  {   2, "gSM" },
+  {   3, "nBIoT-r14" },
+  { 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 },
+  {   3, &hf_lpp_nBIoT_r14       , ASN1_NOT_EXTENSION_ROOT, dissect_lpp_T_nBIoT_r14 },
+  { 0, NULL, 0, NULL }
+};
 
 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);
+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_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);
+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_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);
+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 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 },
+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_NAV_ClockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_NAV_ClockModel, NAV_ClockModel_sequence);
+                                   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_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);
+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_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);
+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_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);
+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;
 }
@@ -6986,53 +7598,35 @@ dissect_lpp_INTEGER_M524288_524287(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
 
 
 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_) {
+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,
-                                                            -33554432, 33554431U, NULL, FALSE);
+                                                            0U, 8388607U, 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);
+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 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 const value_string lpp_T_altitudeDirection_01_vals[] = {
+  {   0, "height" },
+  {   1, "depth" },
+  { 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);
+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;
 }
@@ -7040,9 +7634,9 @@ dissect_lpp_GLONASS_ClockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
 
 
 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_) {
+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, 5399U, NULL, FALSE);
+                                                            0U, 179U, NULL, FALSE);
 
   return offset;
 }
@@ -7050,35 +7644,46 @@ dissect_lpp_INTEGER_0_5399(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
 
 
 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_) {
+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,
-                                                            -2048, 2047U, NULL, FALSE);
+                                                            0U, 100U, 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 },
+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_SBAS_ClockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_SBAS_ClockModel, SBAS_ClockModel_sequence);
+                                   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_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);
+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;
 }
@@ -7086,68 +7691,53 @@ dissect_lpp_INTEGER_0_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
 
 
 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);
+dissect_lpp_T_dataID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 454 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *dataID_tvb = NULL;
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
+                                     2, 2, FALSE, &dataID_tvb, NULL);
 
-  return offset;
-}
 
 
-static const per_sequence_t BDS_ClockModel_r12_sequence[] = {
-  { &hf_lpp_bdsAODC_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_31 },
-  { &hf_lpp_bdsToc_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_131071 },
-  { &hf_lpp_bdsA0_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
-  { &hf_lpp_bdsA1_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2097152_2097151 },
-  { &hf_lpp_bdsA2_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
-  { &hf_lpp_bdsTgd1_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M512_511 },
-  { NULL, 0, 0, NULL }
-};
 
-static int
-dissect_lpp_BDS_ClockModel_r12(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_ClockModel_r12, BDS_ClockModel_r12_sequence);
+#line 458 "./asn1/lpp/lpp.cnf"
+  if (dataID_tvb) {
+    guint bitvalue = tvb_get_bits8(dataID_tvb, 0, 2);
+    actx->created_item = proto_tree_add_uint(tree, hf_index, dataID_tvb, 0, 1, bitvalue);
+  }
+
 
   return offset;
 }
 
 
-static const value_string lpp_GNSS_ClockModel_vals[] = {
-  {   0, "standardClockModelList" },
-  {   1, "nav-ClockModel" },
-  {   2, "cnav-ClockModel" },
-  {   3, "glonass-ClockModel" },
-  {   4, "sbas-ClockModel" },
-  {   5, "bds-ClockModel-r12" },
-  { 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 },
-  {   5, &hf_lpp_bds_ClockModel_r12, ASN1_NOT_EXTENSION_ROOT, dissect_lpp_BDS_ClockModel_r12 },
-  { 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);
+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_T_dataID },
+  { &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_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,
-                                                            G_MININT32, 2147483647U, NULL, FALSE);
+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;
 }
@@ -7155,38 +7745,19 @@ dissect_lpp_INTEGER_M2147483648_2147483647(tvbuff_t *tvb _U_, int offset _U_, as
 
 
 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_) {
+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, 4294967295U, NULL, FALSE);
+                                                            0U, 2047U, 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);
+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;
 }
@@ -7194,75 +7765,55 @@ dissect_lpp_NavModelKeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
 
 
 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_) {
+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,
-                                                            0U, 16777215U, NULL, FALSE);
+                                                            -8192, 8191U, 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 },
+static const per_sequence_t NeQuickModelParameter_sequence[] = {
+  { &hf_lpp_ai0             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2047 },
+  { &hf_lpp_ai1             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
+  { &hf_lpp_ai2             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8192_8191 },
+  { &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_T_ephemSF1Rsvd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_T_ephemSF1Rsvd, T_ephemSF1Rsvd_sequence);
+                                   ett_lpp_NeQuickModelParameter, NeQuickModelParameter_sequence);
 
   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 },
+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_T_addNAVparam(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_T_addNAVparam, T_addNAVparam_sequence);
+                                   ett_lpp_GNSS_IonosphericModel, GNSS_IonosphericModel_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);
+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;
 }
@@ -7270,9 +7821,9 @@ dissect_lpp_NavModelNAV_KeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
 
 
 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_) {
+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,
-                                                            -16777216, 16777215U, NULL, FALSE);
+                                                            -1048576, 1048575U, NULL, FALSE);
 
   return offset;
 }
@@ -7280,9 +7831,9 @@ dissect_lpp_INTEGER_M16777216_16777215(tvbuff_t *tvb _U_, int offset _U_, asn1_c
 
 
 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_) {
+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,
-                                                            -65536, 65535U, NULL, FALSE);
+                                                            -16384, 16383U, NULL, FALSE);
 
   return offset;
 }
@@ -7290,9 +7841,9 @@ dissect_lpp_INTEGER_M65536_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
 
 
 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_) {
+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,
-                                                            -4194304, 4194303U, NULL, FALSE);
+                                                            -1073741824, 1073741823U, NULL, FALSE);
 
   return offset;
 }
@@ -7300,45 +7851,56 @@ dissect_lpp_INTEGER_M4194304_4194303(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
 
 
 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_) {
-#line 758 "./asn1/lpp/lpp.cnf"
-  gint64 cnavMo;
-  int curr_offset = offset;
-  offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
-                                                            G_GINT64_CONSTANT(-4294967296), 4294967295U, &cnavMo, FALSE);
-
+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;
+}
 
 
-#line 763 "./asn1/lpp/lpp.cnf"
-  PROTO_ITEM_SET_HIDDEN(actx->created_item);
-  actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
-                                                         cnavMo, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
-                                                         (double)cnavMo*pow(2, -32), cnavMo);
+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_T_cnavE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 769 "./asn1/lpp/lpp.cnf"
-  guint64 cnavE;
-  int curr_offset = offset;
-  offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
-                                                            0U, G_GUINT64_CONSTANT(8589934591), &cnavE, FALSE);
-
+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;
+}
 
 
-#line 774 "./asn1/lpp/lpp.cnf"
-  PROTO_ITEM_SET_HIDDEN(actx->created_item);
-  actx->created_item = proto_tree_add_uint64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
-                                                          cnavE, "%g (%"G_GINT64_MODIFIER"u)",
-                                                          (double)cnavE*pow(2, -34), cnavE);
 
+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;
 }
@@ -7346,45 +7908,53 @@ dissect_lpp_T_cnavE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
 
 
 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_) {
-#line 780 "./asn1/lpp/lpp.cnf"
-  gint64 cnavOmega;
-  int curr_offset = offset;
-  offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
-                                                            G_GINT64_CONSTANT(-4294967296), 4294967295U, &cnavOmega, FALSE);
-
+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;
+}
 
 
-#line 785 "./asn1/lpp/lpp.cnf"
-  PROTO_ITEM_SET_HIDDEN(actx->created_item);
-  actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
-                                                         cnavOmega, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
-                                                         (double)cnavOmega*pow(2, -32), cnavOmega);
 
+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_T_cnavOMEGA0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 791 "./asn1/lpp/lpp.cnf"
-  gint64 cnavOMEGA0;
-  int curr_offset = offset;
-  offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
-                                                            G_GINT64_CONSTANT(-4294967296), 4294967295U, &cnavOMEGA0, FALSE);
-
+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;
+}
 
 
-#line 796 "./asn1/lpp/lpp.cnf"
-  PROTO_ITEM_SET_HIDDEN(actx->created_item);
-  actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
-                                                         cnavOMEGA0, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
-                                                         (double)cnavOMEGA0*pow(2, -32), cnavOMEGA0);
+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;
 }
@@ -7392,102 +7962,98 @@ dissect_lpp_T_cnavOMEGA0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
 
 
 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_) {
-#line 805 "./asn1/lpp/lpp.cnf"
-  gint64 cnavIo;
-  int curr_offset = offset;
-  offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
-                                                            G_GINT64_CONSTANT(-4294967296), 4294967295U, &cnavIo, FALSE);
-
+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;
+}
 
 
-#line 810 "./asn1/lpp/lpp.cnf"
-  PROTO_ITEM_SET_HIDDEN(actx->created_item);
-  actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
-                                                         cnavIo, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
-                                                         (double)cnavIo*pow(2, -32), cnavIo);
 
+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 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 },
+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_NavModelCNAV_KeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_NavModelCNAV_KeplerianSet, NavModelCNAV_KeplerianSet_sequence);
+                                   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_T_gloP1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 840 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *gloP1_tvb = NULL;
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
-                                     2, 2, FALSE, &gloP1_tvb, NULL);
+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);
 
-#line 844 "./asn1/lpp/lpp.cnf"
-  if (gloP1_tvb) {
-    guint bitvalue = tvb_get_bits8(gloP1_tvb, 0, 2);
-    actx->created_item = proto_tree_add_uint(tree, hf_index, gloP1_tvb, 0, 1, bitvalue);
-  }
+  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 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_T_gloP1 },
-  { &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 },
+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_NavModel_GLONASS_ECEF(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_NavModel_GLONASS_ECEF, NavModel_GLONASS_ECEF_sequence);
+                                   ett_lpp_GNSS_DifferentialCorrections, GNSS_DifferentialCorrections_sequence);
 
   return offset;
 }
@@ -7495,9 +8061,9 @@ dissect_lpp_NavModel_GLONASS_ECEF(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
 
 
 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, NULL);
+dissect_lpp_INTEGER_M32_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,
+                                                            -32, 31U, NULL, FALSE);
 
   return offset;
 }
@@ -7505,9 +8071,9 @@ dissect_lpp_BIT_STRING_SIZE_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
 
 
 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_) {
+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,
-                                                            -536870912, 536870911U, NULL, FALSE);
+                                                            -512, 511U, NULL, FALSE);
 
   return offset;
 }
@@ -7515,94 +8081,2104 @@ dissect_lpp_INTEGER_M536870912_536870911(tvbuff_t *tvb _U_, int offset _U_, asn1
 
 
 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_) {
+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,
-                                                            -131072, 131071U, NULL, FALSE);
+                                                            0U, 255U, 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 },
+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_M32_31 },
+  { &hf_lpp_stanClockAF1    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1048576_1048575 },
+  { &hf_lpp_stanClockAF0    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1073741824_1073741823 },
+  { &hf_lpp_stanClockTgd    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_M512_511 },
+  { &hf_lpp_sisa            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 },
+  { &hf_lpp_stanModelID     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_1 },
   { 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_) {
+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_NavModel_SBAS_ECEF, NavModel_SBAS_ECEF_sequence);
+                                   ett_lpp_StandardClockModelElement, StandardClockModelElement_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t NavModel_BDS_KeplerianSet_r12_sequence[] = {
-  { &hf_lpp_bdsAODE_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_31 },
-  { &hf_lpp_bdsURAI_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 },
-  { &hf_lpp_bdsToe_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_131071 },
-  { &hf_lpp_bdsAPowerHalf_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4294967295 },
-  { &hf_lpp_bdsE_r12        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4294967295 },
-  { &hf_lpp_bdsW_r12        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 },
-  { &hf_lpp_bdsDeltaN_r12   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 },
-  { &hf_lpp_bdsM0_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 },
-  { &hf_lpp_bdsOmega0_r12   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 },
-  { &hf_lpp_bdsOmegaDot_r12 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
-  { &hf_lpp_bdsI0_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 },
-  { &hf_lpp_bdsIDot_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8192_8191 },
-  { &hf_lpp_bdsCuc_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
-  { &hf_lpp_bdsCus_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
-  { &hf_lpp_bdsCrc_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
-  { &hf_lpp_bdsCrs_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
-  { &hf_lpp_bdsCic_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
-  { &hf_lpp_bdsCis_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
-  { NULL, 0, 0, NULL }
+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_NavModel_BDS_KeplerianSet_r12(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_KeplerianSet_r12, NavModel_BDS_KeplerianSet_r12_sequence);
+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 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 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 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 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 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 BDS_ClockModel_r12_sequence[] = {
+  { &hf_lpp_bdsAODC_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_31 },
+  { &hf_lpp_bdsToc_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_131071 },
+  { &hf_lpp_bdsA0_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
+  { &hf_lpp_bdsA1_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2097152_2097151 },
+  { &hf_lpp_bdsA2_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
+  { &hf_lpp_bdsTgd1_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M512_511 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_BDS_ClockModel_r12(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_ClockModel_r12, BDS_ClockModel_r12_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" },
+  {   5, "bds-ClockModel-r12" },
+  { 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 },
+  {   5, &hf_lpp_bds_ClockModel_r12, ASN1_NOT_EXTENSION_ROOT, dissect_lpp_BDS_ClockModel_r12 },
+  { 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,
+                                                            G_MININT32, 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 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 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_) {
+#line 791 "./asn1/lpp/lpp.cnf"
+  gint64 cnavMo;
+  int curr_offset = offset;
+  offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
+                                                            G_GINT64_CONSTANT(-4294967296), 4294967295U, &cnavMo, FALSE);
+
+
+
+
+#line 796 "./asn1/lpp/lpp.cnf"
+  PROTO_ITEM_SET_HIDDEN(actx->created_item);
+  actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
+                                                         cnavMo, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
+                                                         (double)cnavMo*pow(2, -32), cnavMo);
+
+
+  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_) {
+#line 802 "./asn1/lpp/lpp.cnf"
+  guint64 cnavE;
+  int curr_offset = offset;
+  offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
+                                                            0U, G_GUINT64_CONSTANT(8589934591), &cnavE, FALSE);
+
+
+
+
+#line 807 "./asn1/lpp/lpp.cnf"
+  PROTO_ITEM_SET_HIDDEN(actx->created_item);
+  actx->created_item = proto_tree_add_uint64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
+                                                          cnavE, "%g (%"G_GINT64_MODIFIER"u)",
+                                                          (double)cnavE*pow(2, -34), cnavE);
+
+
+  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_) {
+#line 813 "./asn1/lpp/lpp.cnf"
+  gint64 cnavOmega;
+  int curr_offset = offset;
+  offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
+                                                            G_GINT64_CONSTANT(-4294967296), 4294967295U, &cnavOmega, FALSE);
+
+
+
+
+#line 818 "./asn1/lpp/lpp.cnf"
+  PROTO_ITEM_SET_HIDDEN(actx->created_item);
+  actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
+                                                         cnavOmega, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
+                                                         (double)cnavOmega*pow(2, -32), cnavOmega);
+
+
+  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_) {
+#line 824 "./asn1/lpp/lpp.cnf"
+  gint64 cnavOMEGA0;
+  int curr_offset = offset;
+  offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
+                                                            G_GINT64_CONSTANT(-4294967296), 4294967295U, &cnavOMEGA0, FALSE);
+
+
+
+
+#line 829 "./asn1/lpp/lpp.cnf"
+  PROTO_ITEM_SET_HIDDEN(actx->created_item);
+  actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
+                                                         cnavOMEGA0, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
+                                                         (double)cnavOMEGA0*pow(2, -32), cnavOMEGA0);
+
+
+  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_) {
+#line 838 "./asn1/lpp/lpp.cnf"
+  gint64 cnavIo;
+  int curr_offset = offset;
+  offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
+                                                            G_GINT64_CONSTANT(-4294967296), 4294967295U, &cnavIo, FALSE);
+
+
+
+
+#line 843 "./asn1/lpp/lpp.cnf"
+  PROTO_ITEM_SET_HIDDEN(actx->created_item);
+  actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
+                                                         cnavIo, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
+                                                         (double)cnavIo*pow(2, -32), cnavIo);
+
+
+  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 int
+dissect_lpp_T_gloP1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 873 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *gloP1_tvb = NULL;
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
+                                     2, 2, FALSE, &gloP1_tvb, NULL);
+
+
+
+
+#line 877 "./asn1/lpp/lpp.cnf"
+  if (gloP1_tvb) {
+    guint bitvalue = tvb_get_bits8(gloP1_tvb, 0, 2);
+    actx->created_item = proto_tree_add_uint(tree, hf_index, gloP1_tvb, 0, 1, bitvalue);
+  }
+
+
+  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_T_gloP1 },
+  { &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, 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 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 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 per_sequence_t NavModel_BDS_KeplerianSet_r12_sequence[] = {
+  { &hf_lpp_bdsAODE_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_31 },
+  { &hf_lpp_bdsURAI_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 },
+  { &hf_lpp_bdsToe_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_131071 },
+  { &hf_lpp_bdsAPowerHalf_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4294967295 },
+  { &hf_lpp_bdsE_r12        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4294967295 },
+  { &hf_lpp_bdsW_r12        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 },
+  { &hf_lpp_bdsDeltaN_r12   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 },
+  { &hf_lpp_bdsM0_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 },
+  { &hf_lpp_bdsOmega0_r12   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 },
+  { &hf_lpp_bdsOmegaDot_r12 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
+  { &hf_lpp_bdsI0_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 },
+  { &hf_lpp_bdsIDot_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8192_8191 },
+  { &hf_lpp_bdsCuc_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
+  { &hf_lpp_bdsCus_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
+  { &hf_lpp_bdsCrc_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
+  { &hf_lpp_bdsCrs_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
+  { &hf_lpp_bdsCic_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
+  { &hf_lpp_bdsCis_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_NavModel_BDS_KeplerianSet_r12(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_KeplerianSet_r12, NavModel_BDS_KeplerianSet_r12_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" },
+  {   5, "bds-KeplerianSet-r12" },
+  { 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 },
+  {   5, &hf_lpp_bds_KeplerianSet_r12, ASN1_NOT_EXTENSION_ROOT, dissect_lpp_NavModel_BDS_KeplerianSet_r12 },
+  { 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 int
+dissect_lpp_T_svHealthExt_v1240(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 560 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *svHealthExt_tvb = NULL;
+  proto_tree *subtree;
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     4, 4, FALSE, &svHealthExt_tvb, NULL);
+
+
+
+
+#line 565 "./asn1/lpp/lpp.cnf"
+  if (svHealthExt_tvb) {
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_svHealthExt_v1240);
+    proto_tree_add_bits_item(subtree, hf_lpp_svHealthExt_v1240_e5bhs, svHealthExt_tvb, 0, 2, ENC_BIG_ENDIAN);
+    proto_tree_add_bits_item(subtree, hf_lpp_svHealthExt_v1240_e1_bhs, svHealthExt_tvb, 2, 2, ENC_BIG_ENDIAN);
+  }
+
+
+  return offset;
+}
+
+
+static const per_sequence_t GNSS_NavModelSatelliteElement_eag_1_sequence[] = {
+  { &hf_lpp_svHealthExt_v1240, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_svHealthExt_v1240 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_GNSS_NavModelSatelliteElement_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, GNSS_NavModelSatelliteElement_eag_1_sequence);
+
+  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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_NavModelSatelliteElement_eag_1 },
+  { 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, 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 value_string lpp_T_dopplerUncertaintyExt_r10_vals[] = {
+  {   0, "d60" },
+  {   1, "d80" },
+  {   2, "d100" },
+  {   3, "d120" },
+  {   4, "noInformation" },
+  { 0, NULL }
+};
+
+
+static int
+dissect_lpp_T_dopplerUncertaintyExt_r10(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_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 },
+  { &hf_lpp_dopplerUncertaintyExt_r10, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_dopplerUncertaintyExt_r10 },
+  { 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 },
+  { &hf_lpp_confidence_r10  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_100 },
+  { 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_T_toa(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1030 "./asn1/lpp/lpp.cnf"
+  guint32 toa, val;
+  int len, old_offset = offset;
+  T_GNSS_ID_enum gnss_id = (T_GNSS_ID_enum)GPOINTER_TO_UINT(actx->private_data);
+  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+                                                            0U, 255U, &toa, FALSE);
+
+
+
+
+#line 1036 "./asn1/lpp/lpp.cnf"
+  len = (offset-old_offset) >> 3 ? (offset-old_offset) >> 3 : 1;
+  val = (gnss_id == T_GNSS_ID_GALILEO) ? 600*toa : 4096*toa;
+  actx->created_item = proto_tree_add_uint_format_value(tree, hf_lpp_toa, tvb, old_offset, len,
+                                                        toa, "%u s (%u)", val, toa);
+
+
+  return offset;
+}
+
+
+
+static int
+dissect_lpp_T_kepSV_StatusINAV(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1063 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *statusINAV_tvb = NULL;
+  proto_tree *subtree;
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     4, 4, FALSE, &statusINAV_tvb, NULL);
+
+
+
+
+#line 1068 "./asn1/lpp/lpp.cnf"
+  if (statusINAV_tvb) {
+    subtree = proto_item_add_subtree(actx->created_item, ett_kepSV_StatusINAV);
+    proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusINAV_e5bhs, statusINAV_tvb, 0, 2, ENC_BIG_ENDIAN);
+    proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusINAV_e1_bhs, statusINAV_tvb, 2, 2, ENC_BIG_ENDIAN);
+  }
+
+
+  return offset;
+}
+
+
+
+static int
+dissect_lpp_T_kepSV_StatusFNAV(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1075 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *statusFNAV_tvb = NULL;
+  proto_tree *subtree;
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     2, 2, FALSE, &statusFNAV_tvb, NULL);
+
+
+
+
+#line 1080 "./asn1/lpp/lpp.cnf"
+  if (statusFNAV_tvb) {
+    subtree = proto_item_add_subtree(actx->created_item, ett_kepSV_StatusFNAV);
+    proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusFNAV_e5ahs, statusFNAV_tvb, 0, 2, ENC_BIG_ENDIAN);
+  }
+
+
+  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_kepSV_StatusINAV, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_kepSV_StatusINAV },
+  { &hf_lpp_kepSV_StatusFNAV, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_kepSV_StatusFNAV },
+  { &hf_lpp_kepAlmanacAPowerHalf, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M4096_4095 },
+  { &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_M32768_32767 },
+  { &hf_lpp_kepAlmanacAF1   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M4096_4095 },
+  { 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 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 int
+dissect_lpp_T_bdsSvHealth_r12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1242 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *bdsSvHealth_tvb = NULL;
+  proto_tree *subtree;
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     9, 9, FALSE, &bdsSvHealth_tvb, NULL);
+
+
+
+
+#line 1247 "./asn1/lpp/lpp.cnf"
+  if (bdsSvHealth_tvb) {
+    guint16 bits;
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bdsSvHealth_r12);
+    bits = tvb_get_bits16(bdsSvHealth_tvb, 0, 9,ENC_BIG_ENDIAN);
+    if (bits == 0x1ff) {
+      proto_tree_add_boolean_bits_format_value(subtree, hf_lpp_bdsSvHealth_r12_sat_clock, bdsSvHealth_tvb, 0, 1, 1,
+                                               "Satellite is in failure or permanently shut off (1)");
+    } else if (bits == 0x100) {
+      proto_tree_add_boolean_bits_format_value(subtree, hf_lpp_bdsSvHealth_r12_sat_clock, bdsSvHealth_tvb, 0, 1, 1,
+                                               "Satellite clock is unavailable (1)");
+    } else {
+      proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_sat_clock, bdsSvHealth_tvb, 0, 1, ENC_BIG_ENDIAN);
+      proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_b1i, bdsSvHealth_tvb, 1, 1, ENC_BIG_ENDIAN);
+      proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_b2i, bdsSvHealth_tvb, 2, 1, ENC_BIG_ENDIAN);
+      proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_nav, bdsSvHealth_tvb, 7, 1, ENC_BIG_ENDIAN);
+    }
+  }
+
+
+  return offset;
+}
+
+
+static const per_sequence_t AlmanacBDS_AlmanacSet_r12_sequence[] = {
+  { &hf_lpp_svID            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID },
+  { &hf_lpp_bdsAlmToa_r12   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_255 },
+  { &hf_lpp_bdsAlmSqrtA_r12 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_16777215 },
+  { &hf_lpp_bdsAlmE_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_131071 },
+  { &hf_lpp_bdsAlmW_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
+  { &hf_lpp_bdsAlmM0_r12    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
+  { &hf_lpp_bdsAlmOmega0_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
+  { &hf_lpp_bdsAlmOmegaDot_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M65536_65535 },
+  { &hf_lpp_bdsAlmDeltaI_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 },
+  { &hf_lpp_bdsAlmA0_r12    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
+  { &hf_lpp_bdsAlmA1_r12    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
+  { &hf_lpp_bdsSvHealth_r12 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_bdsSvHealth_r12 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_AlmanacBDS_AlmanacSet_r12(tvbuff_t *tvb _U_, int offset _U_, 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_AlmanacBDS_AlmanacSet_r12, AlmanacBDS_AlmanacSet_r12_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" },
+  {   6, "keplerianBDS-Almanac-r12" },
+  { 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 },
+  {   6, &hf_lpp_keplerianBDS_Almanac_r12, ASN1_NOT_EXTENSION_ROOT, dissect_lpp_AlmanacBDS_AlmanacSet_r12 },
+  { 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 int
+dissect_lpp_T_toa_ext_v1240(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1042 "./asn1/lpp/lpp.cnf"
+  guint32 toa_ext, val;
+  int len, old_offset = offset;
+  T_GNSS_ID_enum gnss_id = (T_GNSS_ID_enum)GPOINTER_TO_UINT(actx->private_data);
+  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+                                                            256U, 1023U, &toa_ext, FALSE);
+
+
+
+
+#line 1048 "./asn1/lpp/lpp.cnf"
+  len = (offset-old_offset) >> 3 ? (offset-old_offset) >> 3 : 1;
+  val = (gnss_id == T_GNSS_ID_GALILEO) ? 600*toa_ext : 4096*toa_ext;
+  actx->created_item = proto_tree_add_uint_format_value(tree, hf_lpp_toa_ext_v1240, tvb, old_offset, len,
+                                                        toa_ext, "%u s (%u)", val, toa_ext);
+
+
+  return offset;
+}
+
+
+
+static int
+dissect_lpp_INTEGER_4_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,
+                                                            4U, 15U, NULL, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t GNSS_Almanac_eag_1_sequence[] = {
+  { &hf_lpp_toa_ext_v1240   , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_toa_ext_v1240 },
+  { &hf_lpp_ioda_ext_v1240  , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_4_15 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_GNSS_Almanac_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, GNSS_Almanac_eag_1_sequence);
+
+  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_T_toa },
+  { &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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_Almanac_eag_1 },
+  { 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 int
+dissect_lpp_T_utcDN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1311 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *utcDN_tvb = NULL;
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
+                                     4, 4, FALSE, &utcDN_tvb, NULL);
+
+
+
+
+#line 1315 "./asn1/lpp/lpp.cnf"
+  if (utcDN_tvb) {
+    guint bitvalue = tvb_get_bits8(utcDN_tvb, 0, 4);
+    actx->created_item = proto_tree_add_uint(tree, hf_index, utcDN_tvb, 0, 1, bitvalue);
+  }
+
+
+  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_T_utcDN },
+  { &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 int
+dissect_lpp_T_kp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1339 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *kp_tvb = NULL;
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
+                                     2, 2, FALSE, &kp_tvb, NULL);
+
+
+
+
+#line 1343 "./asn1/lpp/lpp.cnf"
+  if (kp_tvb) {
+    guint bitvalue = tvb_get_bits8(kp_tvb, 0, 2);
+    actx->created_item = proto_tree_add_uint(tree, hf_index, kp_tvb, 0, 1, bitvalue);
+  }
+
+
+  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_T_kp },
+  { 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 per_sequence_t UTC_ModelSet5_r12_sequence[] = {
+  { &hf_lpp_utcA0_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 },
+  { &hf_lpp_utcA1_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
+  { &hf_lpp_utcDeltaTls_r12 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 },
+  { &hf_lpp_utcWNlsf_r12    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 },
+  { &hf_lpp_utcDN_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 },
+  { &hf_lpp_utcDeltaTlsf_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_UTC_ModelSet5_r12(tvbuff_t *tvb _U_, int offset _U_, 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_ModelSet5_r12, UTC_ModelSet5_r12_sequence);
+
+  return offset;
+}
+
+
+static const value_string lpp_GNSS_UTC_Model_vals[] = {
+  {   0, "utcModel1" },
+  {   1, "utcModel2" },
+  {   2, "utcModel3" },
+  {   3, "utcModel4" },
+  {   4, "utcModel5-r12" },
+  { 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 },
+  {   4, &hf_lpp_utcModel5_r12   , ASN1_NOT_EXTENSION_ROOT, dissect_lpp_UTC_ModelSet5_r12 },
+  { 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 DBDS_CorrectionElement_r12_sequence[] = {
+  { &hf_lpp_svID            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID },
+  { &hf_lpp_bds_UDREI_r12   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 },
+  { &hf_lpp_bds_RURAI_r12   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 },
+  { &hf_lpp_bds_ECC_DeltaT_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M4096_4095 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_DBDS_CorrectionElement_r12(tvbuff_t *tvb _U_, int offset _U_, 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_DBDS_CorrectionElement_r12, DBDS_CorrectionElement_r12_sequence);
+
+  return offset;
+}
+
+
+static const per_sequence_t DBDS_CorrectionList_r12_sequence_of[1] = {
+  { &hf_lpp_DBDS_CorrectionList_r12_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_DBDS_CorrectionElement_r12 },
+};
+
+static int
+dissect_lpp_DBDS_CorrectionList_r12(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_DBDS_CorrectionList_r12, DBDS_CorrectionList_r12_sequence_of,
+                                                  1, 64, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t BDS_SgnTypeElement_r12_sequence[] = {
+  { &hf_lpp_gnss_SignalID   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_GNSS_SignalID },
+  { &hf_lpp_dbds_CorrectionList_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_DBDS_CorrectionList_r12 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_BDS_SgnTypeElement_r12(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_SgnTypeElement_r12, BDS_SgnTypeElement_r12_sequence);
+
+  return offset;
+}
+
+
+static const per_sequence_t BDS_SgnTypeList_r12_sequence_of[1] = {
+  { &hf_lpp_BDS_SgnTypeList_r12_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BDS_SgnTypeElement_r12 },
+};
+
+static int
+dissect_lpp_BDS_SgnTypeList_r12(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_BDS_SgnTypeList_r12, BDS_SgnTypeList_r12_sequence_of,
+                                                  1, 3, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t BDS_DifferentialCorrections_r12_sequence[] = {
+  { &hf_lpp_dbds_RefTime_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3599 },
+  { &hf_lpp_bds_SgnTypeList_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BDS_SgnTypeList_r12 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_BDS_DifferentialCorrections_r12(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_DifferentialCorrections_r12, BDS_DifferentialCorrections_r12_sequence);
+
+  return offset;
+}
+
+
+
+static int
+dissect_lpp_INTEGER_1_320(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, 320U, NULL, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t GridIonElement_r12_sequence[] = {
+  { &hf_lpp_igp_ID_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_320 },
+  { &hf_lpp_dt_r12          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_511 },
+  { &hf_lpp_givei_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_GridIonElement_r12(tvbuff_t *tvb _U_, int offset _U_, 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_GridIonElement_r12, GridIonElement_r12_sequence);
+
+  return offset;
+}
+
+
+static const per_sequence_t GridIonList_r12_sequence_of[1] = {
+  { &hf_lpp_GridIonList_r12_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_GridIonElement_r12 },
+};
+
+static int
+dissect_lpp_GridIonList_r12(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_GridIonList_r12, GridIonList_r12_sequence_of,
+                                                  1, 320, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t BDS_GridModelParameter_r12_sequence[] = {
+  { &hf_lpp_bds_RefTime_r12 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3599 },
+  { &hf_lpp_gridIonList_r12 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_GridIonList_r12 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_BDS_GridModelParameter_r12(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_GridModelParameter_r12, BDS_GridModelParameter_r12_sequence);
+
+  return offset;
+}
+
+
+static const per_sequence_t GNSS_GenericAssistDataElement_eag_1_sequence[] = {
+  { &hf_lpp_bds_DifferentialCorrections_r12, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BDS_DifferentialCorrections_r12 },
+  { &hf_lpp_bds_GridModel_r12, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BDS_GridModelParameter_r12 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_GNSS_GenericAssistDataElement_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, GNSS_GenericAssistDataElement_eag_1_sequence);
+
+  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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_GenericAssistDataElement_eag_1 },
+  { 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_GNSS_OrbitModel_vals[] = {
-  {   0, "keplerianSet" },
-  {   1, "nav-KeplerianSet" },
-  {   2, "cnav-KeplerianSet" },
-  {   3, "glonass-ECEF" },
-  {   4, "sbas-ECEF" },
-  {   5, "bds-KeplerianSet-r12" },
+static const value_string lpp_T_cpLength_vals[] = {
+  {   0, "normal" },
+  {   1, "extended" },
   { 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 },
-  {   5, &hf_lpp_bds_KeplerianSet_r12, ASN1_NOT_EXTENSION_ROOT, dissect_lpp_NavModel_BDS_KeplerianSet_r12 },
-  { 0, NULL, 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_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);
+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;
 }
@@ -7610,127 +10186,137 @@ dissect_lpp_GNSS_OrbitModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 
 static int
-dissect_lpp_T_svHealthExt_v1240(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 527 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *svHealthExt_tvb = NULL;
-  proto_tree *subtree;
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     4, 4, FALSE, &svHealthExt_tvb, NULL);
+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 const value_string lpp_T_numDL_Frames_vals[] = {
+  {   0, "sf-1" },
+  {   1, "sf-2" },
+  {   2, "sf-4" },
+  {   3, "sf-6" },
+  {   4, "sf-add-v1420" },
+  { 0, NULL }
+};
 
-#line 532 "./asn1/lpp/lpp.cnf"
-  if (svHealthExt_tvb) {
-    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_svHealthExt_v1240);
-    proto_tree_add_bits_item(subtree, hf_lpp_svHealthExt_v1240_e5bhs, svHealthExt_tvb, 0, 2, ENC_BIG_ENDIAN);
-    proto_tree_add_bits_item(subtree, hf_lpp_svHealthExt_v1240_e1_bhs, svHealthExt_tvb, 2, 2, ENC_BIG_ENDIAN);
-  }
 
+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, 1, NULL);
 
   return offset;
 }
 
 
-static const per_sequence_t GNSS_NavModelSatelliteElement_eag_1_sequence[] = {
-  { &hf_lpp_svHealthExt_v1240, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_svHealthExt_v1240 },
-  { NULL, 0, 0, NULL }
-};
 
 static int
-dissect_lpp_GNSS_NavModelSatelliteElement_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, GNSS_NavModelSatelliteElement_eag_1_sequence);
+dissect_lpp_BIT_STRING_SIZE_128(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,
+                                     128, 128, FALSE, NULL, 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 },
-  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_NavModelSatelliteElement_eag_1 },
-  { 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);
+dissect_lpp_BIT_STRING_SIZE_256(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,
+                                     256, 256, FALSE, NULL, NULL);
 
   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);
+dissect_lpp_BIT_STRING_SIZE_512(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,
+                                     512, 512, FALSE, NULL, NULL);
 
   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);
+dissect_lpp_BIT_STRING_SIZE_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,
+                                     1024, 1024, FALSE, NULL, NULL);
 
   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 const value_string lpp_T_prs_MutingInfo_r9_vals[] = {
+  {   0, "po2-r9" },
+  {   1, "po4-r9" },
+  {   2, "po8-r9" },
+  {   3, "po16-r9" },
+  {   4, "po32-v1420" },
+  {   5, "po64-v1420" },
+  {   6, "po128-v1420" },
+  {   7, "po256-v1420" },
+  {   8, "po512-v1420" },
+  {   9, "po1024-v1420" },
+  { 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 },
+  {   4, &hf_lpp_po32_v1420      , ASN1_NOT_EXTENSION_ROOT, dissect_lpp_BIT_STRING_SIZE_32 },
+  {   5, &hf_lpp_po64_v1420      , ASN1_NOT_EXTENSION_ROOT, dissect_lpp_BIT_STRING_SIZE_64 },
+  {   6, &hf_lpp_po128_v1420     , ASN1_NOT_EXTENSION_ROOT, dissect_lpp_BIT_STRING_SIZE_128 },
+  {   7, &hf_lpp_po256_v1420     , ASN1_NOT_EXTENSION_ROOT, dissect_lpp_BIT_STRING_SIZE_256 },
+  {   8, &hf_lpp_po512_v1420     , ASN1_NOT_EXTENSION_ROOT, dissect_lpp_BIT_STRING_SIZE_512 },
+  {   9, &hf_lpp_po1024_v1420    , ASN1_NOT_EXTENSION_ROOT, dissect_lpp_BIT_STRING_SIZE_1024 },
+  { 0, NULL, 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);
+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 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);
+dissect_lpp_INTEGER_1_160(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+                                                            1U, 160U, NULL, 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 const value_string lpp_T_prsOccGroupLen_r14_vals[] = {
+  {   0, "g2" },
+  {   1, "g4" },
+  {   2, "g8" },
+  {   3, "g16" },
+  {   4, "g32" },
+  {   5, "g64" },
+  {   6, "g128" },
+  { 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);
+dissect_lpp_T_prsOccGroupLen_r14(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,
+                                     7, NULL, TRUE, 0, NULL);
 
   return offset;
 }
@@ -7738,200 +10324,222 @@ dissect_lpp_GNSS_RealTimeIntegrity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
 
 
 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, NULL);
+dissect_lpp_INTEGER_0_maxAvailNarrowBands_Minus1_r14(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, maxAvailNarrowBands_Minus1_r14, NULL, FALSE);
 
   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);
+dissect_lpp_INTEGER_1_maxAvailNarrowBands_Minus1_r14(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, maxAvailNarrowBands_Minus1_r14, NULL, FALSE);
 
   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 const per_sequence_t T_nb4_r14_sequence_of[1] = {
+  { &hf_lpp_nb4_r14_item    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_maxAvailNarrowBands_Minus1_r14 },
 };
 
 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_) {
+dissect_lpp_T_nb4_r14(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);
+                                                  ett_lpp_T_nb4_r14, T_nb4_r14_sequence_of,
+                                                  3, 3, 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 const value_string lpp_T_prsHoppingInfo_r14_vals[] = {
+  {   0, "nb2-r14" },
+  {   1, "nb4-r14" },
+  { 0, NULL }
+};
+
+static const per_choice_t T_prsHoppingInfo_r14_choice[] = {
+  {   0, &hf_lpp_nb2_r14         , ASN1_NO_EXTENSIONS     , dissect_lpp_INTEGER_0_maxAvailNarrowBands_Minus1_r14 },
+  {   1, &hf_lpp_nb4_r14         , ASN1_NO_EXTENSIONS     , dissect_lpp_T_nb4_r14 },
+  { 0, NULL, 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);
+dissect_lpp_T_prsHoppingInfo_r14(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_prsHoppingInfo_r14, T_prsHoppingInfo_r14_choice,
+                                 NULL);
 
   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 const per_sequence_t PRS_Info_eag_1_sequence[] = {
+  { &hf_lpp_prsID_r14       , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_add_numDL_Frames_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_1_160 },
+  { &hf_lpp_prsOccGroupLen_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_prsOccGroupLen_r14 },
+  { &hf_lpp_prsHoppingInfo_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_prsHoppingInfo_r14 },
+  { NULL, 0, 0, NULL }
 };
 
 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);
+dissect_lpp_PRS_Info_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, PRS_Info_eag_1_sequence);
 
   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 },
+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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_PRS_Info_eag_1 },
   { 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_) {
+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_GNSS_DataBitAssistance, GNSS_DataBitAssistance_sequence);
+                                   ett_lpp_PRS_Info, PRS_Info_sequence);
 
   return offset;
 }
 
 
+static const per_sequence_t OTDOA_ReferenceCellInfo_eag_1_sequence[] = {
+  { &hf_lpp_earfcnRef_v9a0  , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_v9a0 },
+  { NULL, 0, 0, NULL }
+};
 
 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);
+dissect_lpp_OTDOA_ReferenceCellInfo_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, OTDOA_ReferenceCellInfo_eag_1_sequence);
 
   return offset;
 }
 
 
+static const value_string lpp_T_cpLengthCRS_r14_vals[] = {
+  {   0, "normal" },
+  {   1, "extended" },
+  { 0, NULL }
+};
+
 
 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);
+dissect_lpp_T_cpLengthCRS_r14(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_dopplerUncertaintyExt_r10_vals[] = {
-  {   0, "d60" },
-  {   1, "d80" },
-  {   2, "d100" },
-  {   3, "d120" },
-  {   4, "noInformation" },
+static const value_string lpp_T_dlBandwidth_r14_vals[] = {
+  {   0, "n6" },
+  {   1, "n15" },
+  {   2, "n25" },
+  {   3, "n50" },
+  {   4, "n75" },
+  {   5, "n100" },
   { 0, NULL }
 };
 
 
 static int
-dissect_lpp_T_dopplerUncertaintyExt_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_T_dlBandwidth_r14(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);
+                                     6, NULL, FALSE, 0, NULL);
 
   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 },
-  { &hf_lpp_dopplerUncertaintyExt_r10, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_T_dopplerUncertaintyExt_r10 },
-  { NULL, 0, 0, NULL }
+static const per_sequence_t SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_PRS_Info_sequence_of[1] = {
+  { &hf_lpp_addPRSconfigRef_r14_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_PRS_Info },
 };
 
 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);
+dissect_lpp_SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_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_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+                                                  ett_lpp_SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_PRS_Info, SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_PRS_Info_sequence_of,
+                                                  1, maxAddPRSconfig_r14, FALSE);
 
   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 const per_sequence_t OTDOA_ReferenceCellInfo_eag_2_sequence[] = {
+  { &hf_lpp_tpId_r14        , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_cpLengthCRS_r14 , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_cpLengthCRS_r14 },
+  { &hf_lpp_sameMBSFNconfigRef_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BOOLEAN },
+  { &hf_lpp_dlBandwidth_r14 , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_dlBandwidth_r14 },
+  { &hf_lpp_addPRSconfigRef_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_PRS_Info },
+  { NULL, 0, 0, NULL }
 };
 
 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);
+dissect_lpp_OTDOA_ReferenceCellInfo_eag_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, OTDOA_ReferenceCellInfo_eag_2_sequence);
 
   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 },
-  { &hf_lpp_confidence_r10  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_100 },
+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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_ReferenceCellInfo_eag_1 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_ReferenceCellInfo_eag_2 },
   { 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_) {
+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_GNSS_AcquisitionAssistance, GNSS_AcquisitionAssistance_sequence);
+                                   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_toa(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 997 "./asn1/lpp/lpp.cnf"
-  guint32 toa, val;
-  int len, old_offset = offset;
-  T_GNSS_ID_enum gnss_id = (T_GNSS_ID_enum)GPOINTER_TO_UINT(actx->private_data);
-  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-                                                            0U, 255U, &toa, FALSE);
+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 }
+};
 
-#line 1003 "./asn1/lpp/lpp.cnf"
-  len = (offset-old_offset) >> 3 ? (offset-old_offset) >> 3 : 1;
-  val = (gnss_id == T_GNSS_ID_GALILEO) ? 600*toa : 4096*toa;
-  actx->created_item = proto_tree_add_uint_format_value(tree, hf_lpp_toa, tvb, old_offset, len,
-                                                        toa, "%u s (%u)", val, toa);
 
+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;
 }
@@ -7939,23 +10547,9 @@ dissect_lpp_T_toa(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto
 
 
 static int
-dissect_lpp_T_kepSV_StatusINAV(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1030 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *statusINAV_tvb = NULL;
-  proto_tree *subtree;
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     4, 4, FALSE, &statusINAV_tvb, NULL);
-
-
-
-
-#line 1035 "./asn1/lpp/lpp.cnf"
-  if (statusINAV_tvb) {
-    subtree = proto_item_add_subtree(actx->created_item, ett_kepSV_StatusINAV);
-    proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusINAV_e5bhs, statusINAV_tvb, 0, 2, ENC_BIG_ENDIAN);
-    proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusINAV_e1_bhs, statusINAV_tvb, 2, 2, ENC_BIG_ENDIAN);
-  }
-
+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;
 }
@@ -7963,357 +10557,307 @@ dissect_lpp_T_kepSV_StatusINAV(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
 
 
 static int
-dissect_lpp_T_kepSV_StatusFNAV(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1042 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *statusFNAV_tvb = NULL;
-  proto_tree *subtree;
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     2, 2, FALSE, &statusFNAV_tvb, NULL);
-
-
-
-
-#line 1047 "./asn1/lpp/lpp.cnf"
-  if (statusFNAV_tvb) {
-    subtree = proto_item_add_subtree(actx->created_item, ett_kepSV_StatusFNAV);
-    proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusFNAV_e5ahs, statusFNAV_tvb, 0, 2, ENC_BIG_ENDIAN);
-  }
-
+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 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_kepSV_StatusINAV, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_kepSV_StatusINAV },
-  { &hf_lpp_kepSV_StatusFNAV, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_kepSV_StatusFNAV },
-  { &hf_lpp_kepAlmanacAPowerHalf, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M4096_4095 },
-  { &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_M32768_32767 },
-  { &hf_lpp_kepAlmanacAF1   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M4096_4095 },
+static const per_sequence_t OTDOA_NeighbourCellInfoElement_eag_1_sequence[] = {
+  { &hf_lpp_earfcn_v9a0     , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_v9a0 },
   { 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);
+dissect_lpp_OTDOA_NeighbourCellInfoElement_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, OTDOA_NeighbourCellInfoElement_eag_1_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 const value_string lpp_T_prs_only_tp_r14_vals[] = {
+  {   0, "true" },
+  { 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);
+dissect_lpp_T_prs_only_tp_r14(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 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 const value_string lpp_T_cpLengthCRS_r14_01_vals[] = {
+  {   0, "normal" },
+  {   1, "extended" },
+  { 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);
+dissect_lpp_T_cpLengthCRS_r14_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 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 const value_string lpp_T_dlBandwidth_r14_01_vals[] = {
+  {   0, "n6" },
+  {   1, "n15" },
+  {   2, "n25" },
+  {   3, "n50" },
+  {   4, "n75" },
+  {   5, "n100" },
+  { 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);
+dissect_lpp_T_dlBandwidth_r14_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,
+                                     6, NULL, FALSE, 0, NULL);
 
   return offset;
 }
 
 
+static const per_sequence_t Add_PRSconfigNeighbourElement_r14_sequence[] = {
+  { &hf_lpp_add_prsInfo_r14 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_PRS_Info },
+  { NULL, 0, 0, NULL }
+};
 
 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);
+dissect_lpp_Add_PRSconfigNeighbourElement_r14(tvbuff_t *tvb _U_, int offset _U_, 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_Add_PRSconfigNeighbourElement_r14, Add_PRSconfigNeighbourElement_r14_sequence);
 
   return offset;
 }
 
 
+static const per_sequence_t SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_Add_PRSconfigNeighbourElement_r14_sequence_of[1] = {
+  { &hf_lpp_addPRSconfigNeighbour_r14_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_Add_PRSconfigNeighbourElement_r14 },
+};
 
 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);
+dissect_lpp_SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_Add_PRSconfigNeighbourElement_r14(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_maxAddPRSconfig_r14_OF_Add_PRSconfigNeighbourElement_r14, SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_Add_PRSconfigNeighbourElement_r14_sequence_of,
+                                                  1, maxAddPRSconfig_r14, FALSE);
 
   return offset;
 }
 
 
+static const per_sequence_t OTDOA_NeighbourCellInfoElement_eag_2_sequence[] = {
+  { &hf_lpp_tpId_r14        , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_prs_only_tp_r14 , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_prs_only_tp_r14 },
+  { &hf_lpp_cpLengthCRS_r14_01, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_cpLengthCRS_r14_01 },
+  { &hf_lpp_sameMBSFNconfigNeighbour_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BOOLEAN },
+  { &hf_lpp_dlBandwidth_r14_01, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_dlBandwidth_r14_01 },
+  { &hf_lpp_addPRSconfigNeighbour_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_Add_PRSconfigNeighbourElement_r14 },
+  { NULL, 0, 0, NULL }
+};
 
 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);
+dissect_lpp_OTDOA_NeighbourCellInfoElement_eag_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, OTDOA_NeighbourCellInfoElement_eag_2_sequence);
 
   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 },
+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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_NeighbourCellInfoElement_eag_1 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_NeighbourCellInfoElement_eag_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_) {
+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_AlmanacGLONASS_AlmanacSet, AlmanacGLONASS_AlmanacSet_sequence);
+                                   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_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);
+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_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);
+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_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);
+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 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 },
+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_AlmanacECEF_SBAS_AlmanacSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_AlmanacECEF_SBAS_AlmanacSet, AlmanacECEF_SBAS_AlmanacSet_sequence);
+                                   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_bdsSvHealth_r12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1209 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *bdsSvHealth_tvb = NULL;
-  proto_tree *subtree;
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
-                                     9, 9, FALSE, &bdsSvHealth_tvb, NULL);
-
-
-
-
-#line 1214 "./asn1/lpp/lpp.cnf"
-  if (bdsSvHealth_tvb) {
-    guint16 bits;
-    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bdsSvHealth_r12);
-    bits = tvb_get_bits16(bdsSvHealth_tvb, 0, 9,ENC_BIG_ENDIAN);
-    if (bits == 0x1ff) {
-      proto_tree_add_boolean_bits_format_value(subtree, hf_lpp_bdsSvHealth_r12_sat_clock, bdsSvHealth_tvb, 0, 1, 1,
-                                               "Satellite is in failure or permanently shut off (1)");
-    } else if (bits == 0x100) {
-      proto_tree_add_boolean_bits_format_value(subtree, hf_lpp_bdsSvHealth_r12_sat_clock, bdsSvHealth_tvb, 0, 1, 1,
-                                               "Satellite clock is unavailable (1)");
-    } else {
-      proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_sat_clock, bdsSvHealth_tvb, 0, 1, ENC_BIG_ENDIAN);
-      proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_b1i, bdsSvHealth_tvb, 1, 1, ENC_BIG_ENDIAN);
-      proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_b2i, bdsSvHealth_tvb, 2, 1, ENC_BIG_ENDIAN);
-      proto_tree_add_bits_item(subtree, hf_lpp_bdsSvHealth_r12_nav, bdsSvHealth_tvb, 7, 1, ENC_BIG_ENDIAN);
-    }
-  }
 
+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 AlmanacBDS_AlmanacSet_r12_sequence[] = {
-  { &hf_lpp_svID            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID },
-  { &hf_lpp_bdsAlmToa_r12   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_255 },
-  { &hf_lpp_bdsAlmSqrtA_r12 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_16777215 },
-  { &hf_lpp_bdsAlmE_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_131071 },
-  { &hf_lpp_bdsAlmW_r12     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
-  { &hf_lpp_bdsAlmM0_r12    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
-  { &hf_lpp_bdsAlmOmega0_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
-  { &hf_lpp_bdsAlmOmegaDot_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M65536_65535 },
-  { &hf_lpp_bdsAlmDeltaI_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M32768_32767 },
-  { &hf_lpp_bdsAlmA0_r12    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
-  { &hf_lpp_bdsAlmA1_r12    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
-  { &hf_lpp_bdsSvHealth_r12 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_bdsSvHealth_r12 },
+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_AlmanacBDS_AlmanacSet_r12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_AlmanacBDS_AlmanacSet_r12, AlmanacBDS_AlmanacSet_r12_sequence);
+                                   ett_lpp_OTDOA_TargetDeviceErrorCauses, OTDOA_TargetDeviceErrorCauses_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" },
-  {   6, "keplerianBDS-Almanac-r12" },
+static const value_string lpp_OTDOA_Error_vals[] = {
+  {   0, "locationServerErrorCauses" },
+  {   1, "targetDeviceErrorCauses" },
   { 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 },
-  {   6, &hf_lpp_keplerianBDS_Almanac_r12, ASN1_NOT_EXTENSION_ROOT, dissect_lpp_AlmanacBDS_AlmanacSet_r12 },
+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_GNSS_AlmanacElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_GNSS_AlmanacElement, GNSS_AlmanacElement_choice,
+                                 ett_lpp_OTDOA_Error, OTDOA_Error_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 const value_string lpp_T_eutra_NumCRS_Ports_r14_vals[] = {
+  {   0, "ports1-or-2" },
+  {   1, "ports4" },
+  { 0, NULL }
 };
 
+
 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);
+dissect_lpp_T_eutra_NumCRS_Ports_r14(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_otdoa_SIB1_NB_repetitions_r14_vals[] = {
+  {   0, "r4" },
+  {   1, "r8" },
+  {   2, "r16" },
+  { 0, NULL }
+};
+
 
 static int
-dissect_lpp_T_toa_ext_v1240(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1009 "./asn1/lpp/lpp.cnf"
-  guint32 toa_ext, val;
-  int len, old_offset = offset;
-  T_GNSS_ID_enum gnss_id = (T_GNSS_ID_enum)GPOINTER_TO_UINT(actx->private_data);
-  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-                                                            256U, 1023U, &toa_ext, FALSE);
+dissect_lpp_T_otdoa_SIB1_NB_repetitions_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     3, NULL, FALSE, 0, NULL);
 
+  return offset;
+}
 
 
+static const value_string lpp_T_operationModeInfoNPRS_r14_vals[] = {
+  {   0, "inband" },
+  {   1, "standalone" },
+  { 0, NULL }
+};
 
-#line 1015 "./asn1/lpp/lpp.cnf"
-  len = (offset-old_offset) >> 3 ? (offset-old_offset) >> 3 : 1;
-  val = (gnss_id == T_GNSS_ID_GALILEO) ? 600*toa_ext : 4096*toa_ext;
-  actx->created_item = proto_tree_add_uint_format_value(tree, hf_lpp_toa_ext_v1240, tvb, old_offset, len,
-                                                        toa_ext, "%u s (%u)", val, toa_ext);
 
+static int
+dissect_lpp_T_operationModeInfoNPRS_r14(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;
 }
@@ -8321,245 +10865,283 @@ dissect_lpp_T_toa_ext_v1240(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 
 static int
-dissect_lpp_INTEGER_4_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_INTEGER_0_174(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-                                                            4U, 15U, NULL, FALSE);
+                                                            0U, 174U, NULL, FALSE);
 
   return offset;
 }
 
 
-static const per_sequence_t GNSS_Almanac_eag_1_sequence[] = {
-  { &hf_lpp_toa_ext_v1240   , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_toa_ext_v1240 },
-  { &hf_lpp_ioda_ext_v1240  , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_4_15 },
-  { NULL, 0, 0, NULL }
-};
 
 static int
-dissect_lpp_GNSS_Almanac_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, GNSS_Almanac_eag_1_sequence);
+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, NULL);
 
   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_T_toa },
-  { &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 },
-  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_Almanac_eag_1 },
-  { 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);
+dissect_lpp_BIT_STRING_SIZE_40(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,
+                                     40, 40, FALSE, NULL, NULL);
 
   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 const value_string lpp_T_nprsBitmap_r14_vals[] = {
+  {   0, "subframePattern10-r14" },
+  {   1, "subframePattern40-r14" },
+  { 0, NULL }
+};
+
+static const per_choice_t T_nprsBitmap_r14_choice[] = {
+  {   0, &hf_lpp_subframePattern10_r14, ASN1_NO_EXTENSIONS     , dissect_lpp_BIT_STRING_SIZE_10 },
+  {   1, &hf_lpp_subframePattern40_r14, ASN1_NO_EXTENSIONS     , dissect_lpp_BIT_STRING_SIZE_40 },
+  { 0, NULL, 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);
+dissect_lpp_T_nprsBitmap_r14(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_nprsBitmap_r14, T_nprsBitmap_r14_choice,
+                                 NULL);
 
   return offset;
 }
 
 
+static const value_string lpp_T_nprs_MutingInfoA_r14_vals[] = {
+  {   0, "po2-r14" },
+  {   1, "po4-r14" },
+  {   2, "po8-r14" },
+  {   3, "po16-r14" },
+  { 0, NULL }
+};
 
-static int
-dissect_lpp_T_utcDN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1278 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *utcDN_tvb = NULL;
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
-                                     4, 4, FALSE, &utcDN_tvb, NULL);
+static const per_choice_t T_nprs_MutingInfoA_r14_choice[] = {
+  {   0, &hf_lpp_po2_r14         , ASN1_EXTENSION_ROOT    , dissect_lpp_BIT_STRING_SIZE_2 },
+  {   1, &hf_lpp_po4_r14         , ASN1_EXTENSION_ROOT    , dissect_lpp_BIT_STRING_SIZE_4 },
+  {   2, &hf_lpp_po8_r14         , ASN1_EXTENSION_ROOT    , dissect_lpp_BIT_STRING_SIZE_8 },
+  {   3, &hf_lpp_po16_r14        , ASN1_EXTENSION_ROOT    , dissect_lpp_BIT_STRING_SIZE_16 },
+  { 0, NULL, 0, NULL }
+};
 
+static int
+dissect_lpp_T_nprs_MutingInfoA_r14(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_nprs_MutingInfoA_r14, T_nprs_MutingInfoA_r14_choice,
+                                 NULL);
 
+  return offset;
+}
 
 
-#line 1282 "./asn1/lpp/lpp.cnf"
-  if (utcDN_tvb) {
-    guint bitvalue = tvb_get_bits8(utcDN_tvb, 0, 4);
-    actx->created_item = proto_tree_add_uint(tree, hf_index, utcDN_tvb, 0, 1, bitvalue);
-  }
+static const per_sequence_t T_partA_r14_sequence[] = {
+  { &hf_lpp_nprsBitmap_r14  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_nprsBitmap_r14 },
+  { &hf_lpp_nprs_MutingInfoA_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_nprs_MutingInfoA_r14 },
+  { NULL, 0, 0, NULL }
+};
 
+static int
+dissect_lpp_T_partA_r14(tvbuff_t *tvb _U_, int offset _U_, 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_partA_r14, T_partA_r14_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_T_utcDN },
-  { &hf_lpp_utcDeltaTlsf    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 },
-  { NULL, 0, 0, NULL }
+static const value_string lpp_T_nprs_Period_r14_vals[] = {
+  {   0, "ms160" },
+  {   1, "ms320" },
+  {   2, "ms640" },
+  {   3, "ms1280" },
+  { 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);
+dissect_lpp_T_nprs_Period_r14(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_nprs_startSF_r14_vals[] = {
+  {   0, "zero" },
+  {   1, "one-eighth" },
+  {   2, "two-eighths" },
+  {   3, "three-eighths" },
+  {   4, "four-eighths" },
+  {   5, "five-eighths" },
+  {   6, "six-eighths" },
+  {   7, "seven-eighths" },
+  { 0, NULL }
+};
+
 
 static int
-dissect_lpp_T_kp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1306 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *kp_tvb = NULL;
-  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
-                                     2, 2, FALSE, &kp_tvb, NULL);
+dissect_lpp_T_nprs_startSF_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     8, NULL, TRUE, 0, NULL);
 
+  return offset;
+}
 
 
+static const value_string lpp_T_nprs_NumSF_r14_vals[] = {
+  {   0, "sf10" },
+  {   1, "sf20" },
+  {   2, "sf40" },
+  {   3, "sf80" },
+  {   4, "sf160" },
+  {   5, "sf320" },
+  {   6, "sf640" },
+  {   7, "sf1280" },
+  { 0, NULL }
+};
 
-#line 1310 "./asn1/lpp/lpp.cnf"
-  if (kp_tvb) {
-    guint bitvalue = tvb_get_bits8(kp_tvb, 0, 2);
-    actx->created_item = proto_tree_add_uint(tree, hf_index, kp_tvb, 0, 1, bitvalue);
-  }
 
+static int
+dissect_lpp_T_nprs_NumSF_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     8, NULL, TRUE, 0, NULL);
 
   return offset;
 }
 
 
-static const per_sequence_t 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_T_kp },
+static const value_string lpp_T_nprs_MutingInfoB_r14_vals[] = {
+  {   0, "po2-r14" },
+  {   1, "po4-r14" },
+  {   2, "po8-r14" },
+  {   3, "po16-r14" },
+  { 0, NULL }
+};
+
+static const per_choice_t T_nprs_MutingInfoB_r14_choice[] = {
+  {   0, &hf_lpp_po2_r14         , ASN1_EXTENSION_ROOT    , dissect_lpp_BIT_STRING_SIZE_2 },
+  {   1, &hf_lpp_po4_r14         , ASN1_EXTENSION_ROOT    , dissect_lpp_BIT_STRING_SIZE_4 },
+  {   2, &hf_lpp_po8_r14         , ASN1_EXTENSION_ROOT    , dissect_lpp_BIT_STRING_SIZE_8 },
+  {   3, &hf_lpp_po16_r14        , ASN1_EXTENSION_ROOT    , dissect_lpp_BIT_STRING_SIZE_16 },
+  { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_lpp_T_nprs_MutingInfoB_r14(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_nprs_MutingInfoB_r14, T_nprs_MutingInfoB_r14_choice,
+                                 NULL);
+
+  return offset;
+}
+
+
+static const per_sequence_t T_partB_r14_sequence[] = {
+  { &hf_lpp_nprs_Period_r14 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_nprs_Period_r14 },
+  { &hf_lpp_nprs_startSF_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_nprs_startSF_r14 },
+  { &hf_lpp_nprs_NumSF_r14  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_nprs_NumSF_r14 },
+  { &hf_lpp_nprs_MutingInfoB_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_nprs_MutingInfoB_r14 },
   { 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_) {
+dissect_lpp_T_partB_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_T_partB_r14, T_partB_r14_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 },
+static const per_sequence_t NPRS_Info_r14_sequence[] = {
+  { &hf_lpp_operationModeInfoNPRS_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_operationModeInfoNPRS_r14 },
+  { &hf_lpp_nprs_carrier_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_CarrierFreq_NB_r14 },
+  { &hf_lpp_nprsSequenceInfo_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_174 },
+  { &hf_lpp_nprsID_r14      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_partA_r14       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_partA_r14 },
+  { &hf_lpp_partB_r14       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_partB_r14 },
   { 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_) {
+dissect_lpp_NPRS_Info_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_NPRS_Info_r14, NPRS_Info_r14_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t UTC_ModelSet5_r12_sequence[] = {
-  { &hf_lpp_utcA0_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 },
-  { &hf_lpp_utcA1_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M8388608_8388607 },
-  { &hf_lpp_utcDeltaTls_r12 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 },
-  { &hf_lpp_utcWNlsf_r12    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 },
-  { &hf_lpp_utcDN_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_255 },
-  { &hf_lpp_utcDeltaTlsf_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M128_127 },
-  { NULL, 0, 0, NULL }
+static const per_sequence_t PRS_Info_NB_r14_sequence_of[1] = {
+  { &hf_lpp_PRS_Info_NB_r14_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_NPRS_Info_r14 },
 };
 
 static int
-dissect_lpp_UTC_ModelSet5_r12(tvbuff_t *tvb _U_, int offset _U_, 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_ModelSet5_r12, UTC_ModelSet5_r12_sequence);
+dissect_lpp_PRS_Info_NB_r14(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_PRS_Info_NB_r14, PRS_Info_NB_r14_sequence_of,
+                                                  1, maxCarrier_r14, FALSE);
 
   return offset;
 }
 
 
-static const value_string lpp_GNSS_UTC_Model_vals[] = {
-  {   0, "utcModel1" },
-  {   1, "utcModel2" },
-  {   2, "utcModel3" },
-  {   3, "utcModel4" },
-  {   4, "utcModel5-r12" },
-  { 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 },
-  {   4, &hf_lpp_utcModel5_r12   , ASN1_NOT_EXTENSION_ROOT, dissect_lpp_UTC_ModelSet5_r12 },
-  { 0, NULL, 0, NULL }
+static const per_sequence_t OTDOA_ReferenceCellInfoNB_r14_sequence[] = {
+  { &hf_lpp_physCellIdNB_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_503 },
+  { &hf_lpp_cellGlobalIdNB_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_ECGI },
+  { &hf_lpp_carrierFreqRef_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_CarrierFreq_NB_r14 },
+  { &hf_lpp_earfcn_r14      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_r14 },
+  { &hf_lpp_eutra_NumCRS_Ports_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_eutra_NumCRS_Ports_r14 },
+  { &hf_lpp_otdoa_SIB1_NB_repetitions_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_otdoa_SIB1_NB_repetitions_r14 },
+  { &hf_lpp_nprsInfo_r14    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_PRS_Info_NB_r14 },
+  { NULL, 0, 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);
+dissect_lpp_OTDOA_ReferenceCellInfoNB_r14(tvbuff_t *tvb _U_, int offset _U_, 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_ReferenceCellInfoNB_r14, OTDOA_ReferenceCellInfoNB_r14_sequence);
 
   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 const value_string lpp_T_eutra_NumCRS_Ports_r14_01_vals[] = {
+  {   0, "ports-1-or-2" },
+  {   1, "ports-4" },
+  { 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);
+dissect_lpp_T_eutra_NumCRS_Ports_r14_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 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 const value_string lpp_T_otdoa_SIB1_NB_repetitions_r14_01_vals[] = {
+  {   0, "r4" },
+  {   1, "r8" },
+  {   2, "r16" },
+  { 0, NULL }
 };
 
+
 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);
+dissect_lpp_T_otdoa_SIB1_NB_repetitions_r14_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,
+                                     3, NULL, FALSE, 0, NULL);
 
   return offset;
 }
@@ -8567,292 +11149,305 @@ dissect_lpp_GNSS_ID_GPS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
 
 
 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_) {
+dissect_lpp_INTEGER_1_72(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);
+                                                            1U, 72U, 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 },
+static const per_sequence_t OTDOA_NeighbourCellInfoNB_r14_sequence[] = {
+  { &hf_lpp_physCellIdNB_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_503 },
+  { &hf_lpp_cellGlobalIdNB_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_ECGI },
+  { &hf_lpp_carrierFreq_r14_01, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_CarrierFreq_NB_r14 },
+  { &hf_lpp_earfcn_r14      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_r14 },
+  { &hf_lpp_eutra_NumCRS_Ports_r14_01, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_eutra_NumCRS_Ports_r14_01 },
+  { &hf_lpp_otdoa_SIB1_NB_repetitions_r14_01, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_otdoa_SIB1_NB_repetitions_r14_01 },
+  { &hf_lpp_nprsInfo_r14    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_PRS_Info_NB_r14 },
+  { &hf_lpp_nprs_slotNumberOffset_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_19 },
+  { &hf_lpp_nprs_SFN_Offset_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_63 },
+  { &hf_lpp_nprs_SubframeOffset_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_1279 },
+  { &hf_lpp_expectedRSTD_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_16383 },
+  { &hf_lpp_expectedRSTD_Uncertainty_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_1023 },
+  { &hf_lpp_prsNeighbourCellIndex_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_1_72 },
   { 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_) {
+dissect_lpp_OTDOA_NeighbourCellInfoNB_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_OTDOA_NeighbourCellInfoNB_r14, OTDOA_NeighbourCellInfoNB_r14_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 const per_sequence_t OTDOA_NeighbourCellInfoListNB_r14_sequence_of[1] = {
+  { &hf_lpp_OTDOA_NeighbourCellInfoListNB_r14_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_NeighbourCellInfoNB_r14 },
 };
 
 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_) {
+dissect_lpp_OTDOA_NeighbourCellInfoListNB_r14(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);
+                                                  ett_lpp_OTDOA_NeighbourCellInfoListNB_r14, OTDOA_NeighbourCellInfoListNB_r14_sequence_of,
+                                                  1, maxCells_r14, 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 const per_sequence_t OTDOA_ProvideAssistanceData_eag_1_sequence[] = {
+  { &hf_lpp_otdoa_ReferenceCellInfoNB_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_OTDOA_ReferenceCellInfoNB_r14 },
+  { &hf_lpp_otdoa_NeighbourCellInfoNB_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_OTDOA_NeighbourCellInfoListNB_r14 },
+  { NULL, 0, 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);
+dissect_lpp_OTDOA_ProvideAssistanceData_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, OTDOA_ProvideAssistanceData_eag_1_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t DBDS_CorrectionElement_r12_sequence[] = {
-  { &hf_lpp_svID            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID },
-  { &hf_lpp_bds_UDREI_r12   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 },
-  { &hf_lpp_bds_RURAI_r12   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 },
-  { &hf_lpp_bds_ECC_DeltaT_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M4096_4095 },
+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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_ProvideAssistanceData_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_DBDS_CorrectionElement_r12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_DBDS_CorrectionElement_r12, DBDS_CorrectionElement_r12_sequence);
+                                   ett_lpp_OTDOA_ProvideAssistanceData, OTDOA_ProvideAssistanceData_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t DBDS_CorrectionList_r12_sequence_of[1] = {
-  { &hf_lpp_DBDS_CorrectionList_r12_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_DBDS_CorrectionElement_r12 },
-};
 
 static int
-dissect_lpp_DBDS_CorrectionList_r12(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_DBDS_CorrectionList_r12, DBDS_CorrectionList_r12_sequence_of,
-                                                  1, 64, FALSE);
+dissect_lpp_INTEGER_M20000_10000(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,
+                                                            -20000, 10000U, NULL, FALSE);
 
   return offset;
 }
 
 
-static const per_sequence_t BDS_SgnTypeElement_r12_sequence[] = {
-  { &hf_lpp_gnss_SignalID   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_GNSS_SignalID },
-  { &hf_lpp_dbds_CorrectionList_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_DBDS_CorrectionList_r12 },
+static const per_sequence_t Sensor_AssistanceDataList_r14_sequence[] = {
+  { &hf_lpp_refPressure_r14 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M20000_10000 },
+  { &hf_lpp_refPosition_r14 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid },
+  { &hf_lpp_refTemperature_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_M64_63 },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_BDS_SgnTypeElement_r12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_Sensor_AssistanceDataList_r14(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_SgnTypeElement_r12, BDS_SgnTypeElement_r12_sequence);
+                                   ett_lpp_Sensor_AssistanceDataList_r14, Sensor_AssistanceDataList_r14_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t BDS_SgnTypeList_r12_sequence_of[1] = {
-  { &hf_lpp_BDS_SgnTypeList_r12_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BDS_SgnTypeElement_r12 },
+static const value_string lpp_T_cause_r13_02_vals[] = {
+  {   0, "undefined" },
+  {   1, "assistanceDataNotSupportedByServer-v1420" },
+  {   2, "assistanceDataSupportedButCurrentlyNotAvailableByServer-v1420" },
+  { 0, NULL }
 };
 
+
 static int
-dissect_lpp_BDS_SgnTypeList_r12(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_BDS_SgnTypeList_r12, BDS_SgnTypeList_r12_sequence_of,
-                                                  1, 3, FALSE);
+dissect_lpp_T_cause_r13_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     1, NULL, TRUE, 2, NULL);
 
   return offset;
 }
 
 
-static const per_sequence_t BDS_DifferentialCorrections_r12_sequence[] = {
-  { &hf_lpp_dbds_RefTime_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3599 },
-  { &hf_lpp_bds_SgnTypeList_r12, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BDS_SgnTypeList_r12 },
+static const per_sequence_t Sensor_LocationServerErrorCauses_r13_sequence[] = {
+  { &hf_lpp_cause_r13_02    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13_02 },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_BDS_DifferentialCorrections_r12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_Sensor_LocationServerErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_DifferentialCorrections_r12, BDS_DifferentialCorrections_r12_sequence);
+                                   ett_lpp_Sensor_LocationServerErrorCauses_r13, Sensor_LocationServerErrorCauses_r13_sequence);
 
   return offset;
 }
 
 
+static const value_string lpp_T_cause_r13_03_vals[] = {
+  {   0, "undefined" },
+  {   1, "assistanceDataMissing-v1420" },
+  { 0, NULL }
+};
+
 
 static int
-dissect_lpp_INTEGER_1_320(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, 320U, NULL, FALSE);
+dissect_lpp_T_cause_r13_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,
+                                     1, NULL, TRUE, 1, NULL);
 
   return offset;
 }
 
 
-static const per_sequence_t GridIonElement_r12_sequence[] = {
-  { &hf_lpp_igp_ID_r12      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_320 },
-  { &hf_lpp_dt_r12          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_511 },
-  { &hf_lpp_givei_r12       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 },
+static const per_sequence_t Sensor_TargetDeviceErrorCauses_r13_sequence[] = {
+  { &hf_lpp_cause_r13_03    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13_03 },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_GridIonElement_r12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_Sensor_TargetDeviceErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, 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_GridIonElement_r12, GridIonElement_r12_sequence);
+                                   ett_lpp_Sensor_TargetDeviceErrorCauses_r13, Sensor_TargetDeviceErrorCauses_r13_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t GridIonList_r12_sequence_of[1] = {
-  { &hf_lpp_GridIonList_r12_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_GridIonElement_r12 },
+static const value_string lpp_Sensor_Error_r13_vals[] = {
+  {   0, "locationServerErrorCauses-r13" },
+  {   1, "targetDeviceErrorCauses-r13" },
+  { 0, NULL }
+};
+
+static const per_choice_t Sensor_Error_r13_choice[] = {
+  {   0, &hf_lpp_locationServerErrorCauses_r13_01, ASN1_EXTENSION_ROOT    , dissect_lpp_Sensor_LocationServerErrorCauses_r13 },
+  {   1, &hf_lpp_targetDeviceErrorCauses_r13_01, ASN1_EXTENSION_ROOT    , dissect_lpp_Sensor_TargetDeviceErrorCauses_r13 },
+  { 0, NULL, 0, NULL }
 };
 
 static int
-dissect_lpp_GridIonList_r12(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_GridIonList_r12, GridIonList_r12_sequence_of,
-                                                  1, 320, FALSE);
+dissect_lpp_Sensor_Error_r13(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_Sensor_Error_r13, Sensor_Error_r13_choice,
+                                 NULL);
 
   return offset;
 }
 
 
-static const per_sequence_t BDS_GridModelParameter_r12_sequence[] = {
-  { &hf_lpp_bds_RefTime_r12 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3599 },
-  { &hf_lpp_gridIonList_r12 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_GridIonList_r12 },
+static const per_sequence_t Sensor_ProvideAssistanceData_r14_sequence[] = {
+  { &hf_lpp_sensor_AssistanceDataList_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_Sensor_AssistanceDataList_r14 },
+  { &hf_lpp_sensor_Error_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_Sensor_Error_r13 },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_BDS_GridModelParameter_r12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_Sensor_ProvideAssistanceData_r14(tvbuff_t *tvb _U_, int offset _U_, 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_BDS_GridModelParameter_r12, BDS_GridModelParameter_r12_sequence);
+                                   ett_lpp_Sensor_ProvideAssistanceData_r14, Sensor_ProvideAssistanceData_r14_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t GNSS_GenericAssistDataElement_eag_1_sequence[] = {
-  { &hf_lpp_bds_DifferentialCorrections_r12, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BDS_DifferentialCorrections_r12 },
-  { &hf_lpp_bds_GridModel_r12, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BDS_GridModelParameter_r12 },
-  { NULL, 0, 0, NULL }
-};
 
 static int
-dissect_lpp_GNSS_GenericAssistDataElement_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, GNSS_GenericAssistDataElement_eag_1_sequence);
+dissect_lpp_T_transmitterLatitude_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1804 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *transmitterLatitude_tvb = NULL;
+  guint32 val;
+
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
+                                     26, 26, FALSE, &transmitterLatitude_tvb, NULL);
+
+  val = tvb_get_bits32(transmitterLatitude_tvb, 0, 26, ENC_BIG_ENDIAN);
+  actx->created_item = proto_tree_add_uint(tree, hf_index, transmitterLatitude_tvb, 0, 4, val);
+
+
 
   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 },
-  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_GenericAssistDataElement_eag_1 },
-  { 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);
+dissect_lpp_T_transmitterLongitude_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1815 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *transmitterLongitude_tvb = NULL;
+  guint32 val;
+
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
+                                     27, 27, FALSE, &transmitterLongitude_tvb, NULL);
+
+  val = tvb_get_bits32(transmitterLongitude_tvb, 0, 27, ENC_BIG_ENDIAN);
+  actx->created_item = proto_tree_add_uint(tree, hf_index, transmitterLongitude_tvb, 0, 4, val);
+
+
 
   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);
+dissect_lpp_T_transmitterAltitude_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1826 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *transmitterAltitude_tvb = NULL;
+  guint32 val;
+
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
+                                     15, 15, FALSE, &transmitterAltitude_tvb, NULL);
+
+  val = tvb_get_bits16(transmitterAltitude_tvb, 0, 15, ENC_BIG_ENDIAN);
+  actx->created_item = proto_tree_add_uint(tree, hf_index, transmitterAltitude_tvb, 0, 2, val);
+
+
 
   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);
+dissect_lpp_INTEGER_0_25(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, 25U, NULL, FALSE);
 
   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 },
+static const per_sequence_t MBS_AlmanacAssistance_r14_sequence[] = {
+  { &hf_lpp_transmitterID_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_32767 },
+  { &hf_lpp_transmitterLatitude_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_transmitterLatitude_r14 },
+  { &hf_lpp_transmitterLongitude_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_transmitterLongitude_r14 },
+  { &hf_lpp_transmitterAltitude_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_transmitterAltitude_r14 },
+  { &hf_lpp_timeCorrection_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_25 },
   { 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_) {
+dissect_lpp_MBS_AlmanacAssistance_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_MBS_AlmanacAssistance_r14, MBS_AlmanacAssistance_r14_sequence);
 
   return offset;
 }
 
 
-static const value_string lpp_T_cause_03_vals[] = {
-  {   0, "undefined" },
-  {   1, "thereWereNotEnoughSatellitesReceived" },
-  {   2, "assistanceDataMissing" },
-  {   3, "notAllRequestedMeasurementsPossible" },
+static const value_string lpp_T_mbsConfiguration_r14_vals[] = {
+  {   0, "tb1" },
+  {   1, "tb2" },
+  {   2, "tb3" },
+  {   3, "tb4" },
   { 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_) {
+dissect_lpp_T_mbsConfiguration_r14(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);
 
@@ -8860,431 +11455,489 @@ dissect_lpp_T_cause_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
 }
 
 
-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);
+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 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_INTEGER_919750000_927250000(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,
+                                                            919750000U, 927250000U, NULL, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t MBS_AcquisitionAssistance_r14_sequence[] = {
+  { &hf_lpp_transmitterID_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_32767 },
+  { &hf_lpp_mbsConfiguration_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_mbsConfiguration_r14 },
+  { &hf_lpp_pnCodeIndex_r14 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_1_128 },
+  { &hf_lpp_freq_r14        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_919750000_927250000 },
+  { NULL, 0, 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);
+dissect_lpp_MBS_AcquisitionAssistance_r14(tvbuff_t *tvb _U_, int offset _U_, 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_MBS_AcquisitionAssistance_r14, MBS_AcquisitionAssistance_r14_sequence);
 
   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 },
+static const per_sequence_t MBS_AssistanceDataElement_r14_sequence[] = {
+  { &hf_lpp_mbs_AlmanacAssistance_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_MBS_AlmanacAssistance_r14 },
+  { &hf_lpp_mbs_AcquisitionAssistance_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_MBS_AcquisitionAssistance_r14 },
   { 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_) {
+dissect_lpp_MBS_AssistanceDataElement_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_MBS_AssistanceDataElement_r14, MBS_AssistanceDataElement_r14_sequence);
 
   return offset;
 }
 
 
-static const value_string lpp_T_antennaPortConfig_vals[] = {
-  {   0, "ports1-or-2" },
-  {   1, "ports4" },
-  { 0, NULL }
+static const per_sequence_t MBS_AssistanceDataList_r14_sequence_of[1] = {
+  { &hf_lpp_MBS_AssistanceDataList_r14_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_MBS_AssistanceDataElement_r14 },
 };
 
-
 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);
+dissect_lpp_MBS_AssistanceDataList_r14(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_MBS_AssistanceDataList_r14, MBS_AssistanceDataList_r14_sequence_of,
+                                                  1, maxMBS_r14, FALSE);
 
   return offset;
 }
 
 
-static const value_string lpp_T_cpLength_vals[] = {
-  {   0, "normal" },
-  {   1, "extended" },
-  { 0, NULL }
+static const per_sequence_t TBS_AssistanceDataList_r14_sequence[] = {
+  { &hf_lpp_mbs_AssistanceDataList_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_MBS_AssistanceDataList_r14 },
+  { NULL, 0, 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);
+dissect_lpp_TBS_AssistanceDataList_r14(tvbuff_t *tvb _U_, int offset _U_, 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_TBS_AssistanceDataList_r14, TBS_AssistanceDataList_r14_sequence);
 
   return offset;
 }
 
 
-static const value_string lpp_T_prs_Bandwidth_vals[] = {
-  {   0, "n6" },
-  {   1, "n15" },
-  {   2, "n25" },
-  {   3, "n50" },
-  {   4, "n75" },
-  {   5, "n100" },
+static const value_string lpp_T_cause_r13_vals[] = {
+  {   0, "undefined" },
+  {   1, "assistanceDataNotSupportedByServer-v1420" },
+  {   2, "assistanceDataSupportedButCurrentlyNotAvailableByServer-v1420" },
   { 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_) {
+dissect_lpp_T_cause_r13(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);
+                                     1, NULL, TRUE, 2, NULL);
 
   return offset;
 }
 
 
+static const per_sequence_t TBS_LocationServerErrorCauses_r13_sequence[] = {
+  { &hf_lpp_cause_r13       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13 },
+  { NULL, 0, 0, NULL }
+};
 
 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);
+dissect_lpp_TBS_LocationServerErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, 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_TBS_LocationServerErrorCauses_r13, TBS_LocationServerErrorCauses_r13_sequence);
 
   return offset;
 }
 
 
-static const value_string lpp_T_numDL_Frames_vals[] = {
-  {   0, "sf-1" },
-  {   1, "sf-2" },
-  {   2, "sf-4" },
-  {   3, "sf-6" },
+static const value_string lpp_T_cause_r13_01_vals[] = {
+  {   0, "undefined" },
+  {   1, "thereWereNotEnoughMBSBeaconsReceived" },
+  {   2, "assistanceDataMissing-v1420" },
   { 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_) {
+dissect_lpp_T_cause_r13_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
-                                     4, NULL, TRUE, 0, NULL);
+                                     2, NULL, TRUE, 1, 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" },
+static const per_sequence_t TBS_TargetDeviceErrorCauses_r13_sequence[] = {
+  { &hf_lpp_cause_r13_01    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13_01 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_TBS_TargetDeviceErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, 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_TBS_TargetDeviceErrorCauses_r13, TBS_TargetDeviceErrorCauses_r13_sequence);
+
+  return offset;
+}
+
+
+static const value_string lpp_TBS_Error_r13_vals[] = {
+  {   0, "locationServerErrorCauses-r13" },
+  {   1, "targetDeviceErrorCauses-r13" },
   { 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 },
+static const per_choice_t TBS_Error_r13_choice[] = {
+  {   0, &hf_lpp_locationServerErrorCauses_r13, ASN1_EXTENSION_ROOT    , dissect_lpp_TBS_LocationServerErrorCauses_r13 },
+  {   1, &hf_lpp_targetDeviceErrorCauses_r13, ASN1_EXTENSION_ROOT    , dissect_lpp_TBS_TargetDeviceErrorCauses_r13 },
   { 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_) {
+dissect_lpp_TBS_Error_r13(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,
+                                 ett_lpp_TBS_Error_r13, TBS_Error_r13_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 },
+static const per_sequence_t TBS_ProvideAssistanceData_r14_sequence[] = {
+  { &hf_lpp_tbs_AssistanceDataList_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_TBS_AssistanceDataList_r14 },
+  { &hf_lpp_tbs_Error_r14   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_TBS_Error_r13 },
   { 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_) {
+dissect_lpp_TBS_ProvideAssistanceData_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_TBS_ProvideAssistanceData_r14, TBS_ProvideAssistanceData_r14_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t OTDOA_ReferenceCellInfo_eag_1_sequence[] = {
-  { &hf_lpp_earfcnRef_v9a0  , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_v9a0 },
-  { NULL, 0, 0, NULL }
-};
 
 static int
-dissect_lpp_OTDOA_ReferenceCellInfo_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, OTDOA_ReferenceCellInfo_eag_1_sequence);
+dissect_lpp_BIT_STRING_SIZE_6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     6, 6, FALSE, NULL, NULL);
 
   return offset;
 }
 
 
-static 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 },
-  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_ReferenceCellInfo_eag_1 },
-  { NULL, 0, 0, NULL }
-};
 
-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);
+static int
+dissect_lpp_BIT_STRING_SIZE_34(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,
+                                     34, 34, FALSE, NULL, NULL);
 
   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);
+dissect_lpp_BIT_STRING_SIZE_30(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,
+                                     30, 30, FALSE, NULL, NULL);
 
   return offset;
 }
 
 
-static const value_string lpp_T_antennaPortConfig_01_vals[] = {
-  {   0, "ports-1-or-2" },
-  {   1, "ports-4" },
-  { 0, NULL }
+static const per_sequence_t LocationDataLCI_r14_sequence[] = {
+  { &hf_lpp_latitudeUncertainty_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_6 },
+  { &hf_lpp_latitude_r14    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_34 },
+  { &hf_lpp_longitudeUncertainty_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_6 },
+  { &hf_lpp_longitude_r14   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_34 },
+  { &hf_lpp_altitudeUncertainty_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_BIT_STRING_SIZE_6 },
+  { &hf_lpp_altitude_r14    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_BIT_STRING_SIZE_30 },
+  { &hf_lpp_datum_r14       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_8 },
+  { NULL, 0, 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);
+dissect_lpp_LocationDataLCI_r14(tvbuff_t *tvb _U_, int offset _U_, 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_LocationDataLCI_r14, LocationDataLCI_r14_sequence);
 
   return offset;
 }
 
 
+static const per_sequence_t WLAN_AP_Location_r14_sequence[] = {
+  { &hf_lpp_locationDataLCI_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_LocationDataLCI_r14 },
+  { NULL, 0, 0, NULL }
+};
 
 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);
+dissect_lpp_WLAN_AP_Location_r14(tvbuff_t *tvb _U_, int offset _U_, 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_WLAN_AP_Location_r14, WLAN_AP_Location_r14_sequence);
 
   return offset;
 }
 
 
+static const per_sequence_t WLAN_AP_Data_r14_sequence[] = {
+  { &hf_lpp_wlan_AP_Identifier_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_WLAN_AP_Identifier_r13 },
+  { &hf_lpp_wlan_AP_Location_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_WLAN_AP_Location_r14 },
+  { NULL, 0, 0, NULL }
+};
 
 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);
+dissect_lpp_WLAN_AP_Data_r14(tvbuff_t *tvb _U_, int offset _U_, 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_WLAN_AP_Data_r14, WLAN_AP_Data_r14_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t OTDOA_NeighbourCellInfoElement_eag_1_sequence[] = {
-  { &hf_lpp_earfcn_v9a0     , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_v9a0 },
+static const per_sequence_t SEQUENCE_SIZE_1_maxWLAN_AP_r14_OF_WLAN_AP_Data_r14_sequence_of[1] = {
+  { &hf_lpp_wlan_AP_List_r14_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_WLAN_AP_Data_r14 },
+};
+
+static int
+dissect_lpp_SEQUENCE_SIZE_1_maxWLAN_AP_r14_OF_WLAN_AP_Data_r14(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_maxWLAN_AP_r14_OF_WLAN_AP_Data_r14, SEQUENCE_SIZE_1_maxWLAN_AP_r14_OF_WLAN_AP_Data_r14_sequence_of,
+                                                  1, maxWLAN_AP_r14, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t SupportedChannels_11a_r14_sequence[] = {
+  { &hf_lpp_ch34_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch36_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch38_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch40_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch42_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch44_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch46_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch48_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch52_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch56_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch60_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch64_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch149_r14       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch153_r14       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch157_r14       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch161_r14       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_OTDOA_NeighbourCellInfoElement_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, OTDOA_NeighbourCellInfoElement_eag_1_sequence);
+dissect_lpp_SupportedChannels_11a_r14(tvbuff_t *tvb _U_, int offset _U_, 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_SupportedChannels_11a_r14, SupportedChannels_11a_r14_sequence);
 
   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 },
-  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_NeighbourCellInfoElement_eag_1 },
+static const per_sequence_t SupportedChannels_11bg_r14_sequence[] = {
+  { &hf_lpp_ch1_r14         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch2_r14         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch3_r14         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch4_r14         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch5_r14         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch6_r14         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch7_r14         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch8_r14         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch9_r14         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch10_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch11_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch12_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch13_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &hf_lpp_ch14_r14        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
   { NULL, 0, 0, NULL }
 };
 
-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_) {
+static int
+dissect_lpp_SupportedChannels_11bg_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_SupportedChannels_11bg_r14, SupportedChannels_11bg_r14_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 const per_sequence_t WLAN_DataSet_r14_sequence[] = {
+  { &hf_lpp_wlan_AP_List_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_SEQUENCE_SIZE_1_maxWLAN_AP_r14_OF_WLAN_AP_Data_r14 },
+  { &hf_lpp_supportedChannels_11a_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_SupportedChannels_11a_r14 },
+  { &hf_lpp_supportedChannels_11bg_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_SupportedChannels_11bg_r14 },
+  { NULL, 0, 0, NULL }
 };
 
 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);
+dissect_lpp_WLAN_DataSet_r14(tvbuff_t *tvb _U_, int offset _U_, 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_WLAN_DataSet_r14, WLAN_DataSet_r14_sequence);
 
   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 const per_sequence_t SEQUENCE_SIZE_1_maxWLAN_DataSets_r14_OF_WLAN_DataSet_r14_sequence_of[1] = {
+  { &hf_lpp_wlan_DataSet_r14_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_WLAN_DataSet_r14 },
 };
 
 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_) {
+dissect_lpp_SEQUENCE_SIZE_1_maxWLAN_DataSets_r14_OF_WLAN_DataSet_r14(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);
+                                                  ett_lpp_SEQUENCE_SIZE_1_maxWLAN_DataSets_r14_OF_WLAN_DataSet_r14, SEQUENCE_SIZE_1_maxWLAN_DataSets_r14_OF_WLAN_DataSet_r14_sequence_of,
+                                                  1, maxWLAN_DataSets_r14, FALSE);
 
   return offset;
 }
 
 
-static const value_string lpp_T_cause_vals[] = {
+static const value_string lpp_T_cause_r13_04_vals[] = {
   {   0, "undefined" },
-  {   1, "assistanceDataNotSupportedByServer" },
-  {   2, "assistanceDataSupportedButCurrentlyNotAvailableByServer" },
+  {   1, "requestedADNotAvailable-v1420" },
+  {   2, "notAllrequestedADAvailable-v1420" },
   { 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_) {
+dissect_lpp_T_cause_r13_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,
-                                     3, NULL, TRUE, 0, NULL);
+                                     1, NULL, TRUE, 2, NULL);
 
   return offset;
 }
 
 
-static const per_sequence_t OTDOA_LocationServerErrorCauses_sequence[] = {
-  { &hf_lpp_cause           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause },
+static const per_sequence_t WLAN_LocationServerErrorCauses_r13_eag_1_sequence[] = {
+  { &hf_lpp_apLocationDataUnavailable_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_NULL },
   { 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_) {
+dissect_lpp_WLAN_LocationServerErrorCauses_r13_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, WLAN_LocationServerErrorCauses_r13_eag_1_sequence);
+
+  return offset;
+}
+
+
+static const per_sequence_t WLAN_LocationServerErrorCauses_r13_sequence[] = {
+  { &hf_lpp_cause_r13_04    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13_04 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_WLAN_LocationServerErrorCauses_r13_eag_1 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_WLAN_LocationServerErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_WLAN_LocationServerErrorCauses_r13, WLAN_LocationServerErrorCauses_r13_sequence);
 
   return offset;
 }
 
 
-static const value_string lpp_T_cause_01_vals[] = {
+static const value_string lpp_T_cause_r13_05_vals[] = {
   {   0, "undefined" },
-  {   1, "assistance-data-missing" },
-  {   2, "unableToMeasureReferenceCell" },
-  {   3, "unableToMeasureAnyNeighbourCell" },
-  {   4, "attemptedButUnableToMeasureSomeNeighbourCells" },
+  {   1, "requestedMeasurementsNotAvailable" },
+  {   2, "notAllrequestedMeasurementsPossible" },
   { 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_) {
+dissect_lpp_T_cause_r13_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,
-                                     5, NULL, TRUE, 0, NULL);
+                                     3, 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 },
+static const per_sequence_t WLAN_TargetDeviceErrorCauses_r13_sequence[] = {
+  { &hf_lpp_cause_r13_05    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13_05 },
+  { &hf_lpp_wlan_AP_RSSI_MeasurementNotPossible_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_NULL },
+  { &hf_lpp_wlan_AP_RTT_MeasurementNotPossible_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_NULL },
   { 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_) {
+dissect_lpp_WLAN_TargetDeviceErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_WLAN_TargetDeviceErrorCauses_r13, WLAN_TargetDeviceErrorCauses_r13_sequence);
 
   return offset;
 }
 
 
-static const value_string lpp_OTDOA_Error_vals[] = {
-  {   0, "locationServerErrorCauses" },
-  {   1, "targetDeviceErrorCauses" },
+static const value_string lpp_WLAN_Error_r13_vals[] = {
+  {   0, "locationServerErrorCauses-r13" },
+  {   1, "targetDeviceErrorCauses-r13" },
   { 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 },
+static const per_choice_t WLAN_Error_r13_choice[] = {
+  {   0, &hf_lpp_locationServerErrorCauses_r13_02, ASN1_EXTENSION_ROOT    , dissect_lpp_WLAN_LocationServerErrorCauses_r13 },
+  {   1, &hf_lpp_targetDeviceErrorCauses_r13_02, ASN1_EXTENSION_ROOT    , dissect_lpp_WLAN_TargetDeviceErrorCauses_r13 },
   { 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_) {
+dissect_lpp_WLAN_Error_r13(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,
+                                 ett_lpp_WLAN_Error_r13, WLAN_Error_r13_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 },
+static const per_sequence_t WLAN_ProvideAssistanceData_r14_sequence[] = {
+  { &hf_lpp_wlan_DataSet_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_SEQUENCE_SIZE_1_maxWLAN_DataSets_r14_OF_WLAN_DataSet_r14 },
+  { &hf_lpp_wlan_Error_r14  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_WLAN_Error_r13 },
   { 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_) {
+dissect_lpp_WLAN_ProvideAssistanceData_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_WLAN_ProvideAssistanceData_r14, WLAN_ProvideAssistanceData_r14_sequence);
+
+  return offset;
+}
+
+
+static const per_sequence_t ProvideAssistanceData_r9_IEs_eag_1_sequence[] = {
+  { &hf_lpp_sensor_ProvideAssistanceData_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_Sensor_ProvideAssistanceData_r14 },
+  { &hf_lpp_tbs_ProvideAssistanceData_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_TBS_ProvideAssistanceData_r14 },
+  { &hf_lpp_wlan_ProvideAssistanceData_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_WLAN_ProvideAssistanceData_r14 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_ProvideAssistanceData_r9_IEs_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, ProvideAssistanceData_r9_IEs_eag_1_sequence);
 
   return offset;
 }
@@ -9295,6 +11948,7 @@ static const per_sequence_t ProvideAssistanceData_r9_IEs_sequence[] = {
   { &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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_ProvideAssistanceData_r9_IEs_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
@@ -9407,7 +12061,7 @@ dissect_lpp_LocationInformationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
 
 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_) {
-#line 279 "./asn1/lpp/lpp.cnf"
+#line 282 "./asn1/lpp/lpp.cnf"
   guint32 duration;
 
   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
@@ -9477,7 +12131,7 @@ static const value_string lpp_T_reportingInterval_vals[] = {
 
 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_) {
-#line 267 "./asn1/lpp/lpp.cnf"
+#line 270 "./asn1/lpp/lpp.cnf"
   guint32 idx;
   const gchar *interval[10] = {"", ": 1s", ": 2s", ": 4s", ": 8s", ": 10s",
                                ": 16s", ": 20s", ": 32s", ": 64s"};
@@ -9488,7 +12142,7 @@ dissect_lpp_T_reportingInterval(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
 
 
 
-#line 274 "./asn1/lpp/lpp.cnf"
+#line 277 "./asn1/lpp/lpp.cnf"
   if (idx < 10) {
     proto_item_append_text(actx->created_item, "%s", interval[idx]);
   }
@@ -9559,16 +12213,6 @@ dissect_lpp_VerticalAccuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 }
 
 
-
-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_eag_1_sequence[] = {
   { &hf_lpp_responseTimeEarlyFix_r12, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_1_128 },
   { NULL, 0, 0, NULL }
@@ -9597,12 +12241,51 @@ dissect_lpp_ResponseTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
 }
 
 
+
+static int
+dissect_lpp_INTEGER_1_512(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, 512U, NULL, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t ResponseTimeNB_r14_sequence[] = {
+  { &hf_lpp_timeNB_r14      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_512 },
+  { &hf_lpp_responseTimeEarlyFixNB_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_1_512 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_ResponseTimeNB_r14(tvbuff_t *tvb _U_, int offset _U_, 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_ResponseTimeNB_r14, ResponseTimeNB_r14_sequence);
+
+  return offset;
+}
+
+
+static const per_sequence_t QoS_eag_1_sequence[] = {
+  { &hf_lpp_responseTimeNB_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_ResponseTimeNB_r14 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_QoS_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, QoS_eag_1_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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_QoS_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
@@ -9632,6 +12315,33 @@ dissect_lpp_Environment(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
 }
 
 
+static const per_sequence_t MessageSizeLimitNB_r14_sequence[] = {
+  { &hf_lpp_measurementLimit_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_1_512 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_MessageSizeLimitNB_r14(tvbuff_t *tvb _U_, int offset _U_, 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_MessageSizeLimitNB_r14, MessageSizeLimitNB_r14_sequence);
+
+  return offset;
+}
+
+
+static const per_sequence_t CommonIEsRequestLocationInformation_eag_1_sequence[] = {
+  { &hf_lpp_messageSizeLimitNB_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_MessageSizeLimitNB_r14 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_CommonIEsRequestLocationInformation_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, CommonIEsRequestLocationInformation_eag_1_sequence);
+
+  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 },
@@ -9641,6 +12351,7 @@ static const per_sequence_t CommonIEsRequestLocationInformation_sequence[] = {
   { &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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_CommonIEsRequestLocationInformation_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
@@ -9685,8 +12396,48 @@ dissect_lpp_A_GNSS_RequestLocationInformation(tvbuff_t *tvb _U_, int offset _U_,
 }
 
 
+static const value_string lpp_T_multipathRSTD_r14_vals[] = {
+  {   0, "requested" },
+  { 0, NULL }
+};
+
+
+static int
+dissect_lpp_T_multipathRSTD_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+                                     1, NULL, FALSE, 0, NULL);
+
+  return offset;
+}
+
+
+
+static int
+dissect_lpp_INTEGER_1_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+                                                            1U, 32U, NULL, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t OTDOA_RequestLocationInformation_eag_1_sequence[] = {
+  { &hf_lpp_multipathRSTD_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_multipathRSTD_r14 },
+  { &hf_lpp_maxNoOfRSTDmeas_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_1_32 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_OTDOA_RequestLocationInformation_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, OTDOA_RequestLocationInformation_eag_1_sequence);
+
+  return offset;
+}
+
+
 static const per_sequence_t OTDOA_RequestLocationInformation_sequence[] = {
   { &hf_lpp_assistanceAvailability, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_RequestLocationInformation_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
@@ -9702,7 +12453,7 @@ dissect_lpp_OTDOA_RequestLocationInformation(tvbuff_t *tvb _U_, int offset _U_,
 
 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_) {
-#line 1638 "./asn1/lpp/lpp.cnf"
+#line 1677 "./asn1/lpp/lpp.cnf"
   tvbuff_t *requestedMeasurements_tvb = NULL;
   int len;
 
@@ -9722,6 +12473,12 @@ dissect_lpp_T_requestedMeasurements(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
     if (len >= 3) {
       proto_tree_add_item(subtree, hf_lpp_T_requestedMeasurements_ueRxTxReq, requestedMeasurements_tvb, 0, 1, ENC_BIG_ENDIAN);
     }
+    if (len >= 4) {
+      proto_tree_add_item(subtree, hf_lpp_T_requestedMeasurements_nrsrpReq_r14, requestedMeasurements_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+    if (len >= 5) {
+      proto_tree_add_item(subtree, hf_lpp_T_requestedMeasurements_nrsrqReq_r14, requestedMeasurements_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
   }
 
 
@@ -9744,8 +12501,22 @@ dissect_lpp_ECID_RequestLocationInformation(tvbuff_t *tvb _U_, int offset _U_, a
 }
 
 
+static const per_sequence_t Sensor_RequestLocationInformation_r13_eag_1_sequence[] = {
+  { &hf_lpp_assistanceAvailability_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BOOLEAN },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_Sensor_RequestLocationInformation_r13_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, Sensor_RequestLocationInformation_r13_eag_1_sequence);
+
+  return offset;
+}
+
+
 static const per_sequence_t Sensor_RequestLocationInformation_r13_sequence[] = {
   { &hf_lpp_uncompensatedBarometricPressureReq_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_Sensor_RequestLocationInformation_r13_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
@@ -9758,8 +12529,48 @@ dissect_lpp_Sensor_RequestLocationInformation_r13(tvbuff_t *tvb _U_, int offset
 }
 
 
+
+static int
+dissect_lpp_T_mbsRequestedMeasurements_r14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1738 "./asn1/lpp/lpp.cnf"
+  tvbuff_t *mbsRequestedMeasurements_tvb = NULL;
+  int len;
+
+  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+                                     1, 8, FALSE, &mbsRequestedMeasurements_tvb, &len);
+
+  if(mbsRequestedMeasurements_tvb){
+    proto_tree *subtree;
+
+    subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bitmap);
+    if (len >= 1) {
+      proto_tree_add_item(subtree, hf_lpp_T_mbsRequestedMeasurements_r14_rssi, mbsRequestedMeasurements_tvb, 0, 1, ENC_BIG_ENDIAN);
+    }
+  }
+
+
+
+  return offset;
+}
+
+
+static const per_sequence_t TBS_RequestLocationInformation_r13_eag_1_sequence[] = {
+  { &hf_lpp_mbsAssistanceAvailability_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BOOLEAN },
+  { &hf_lpp_mbsRequestedMeasurements_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_mbsRequestedMeasurements_r14 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_TBS_RequestLocationInformation_r13_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, TBS_RequestLocationInformation_r13_eag_1_sequence);
+
+  return offset;
+}
+
+
 static const per_sequence_t TBS_RequestLocationInformation_r13_sequence[] = {
   { &hf_lpp_mbsSgnMeasListReq_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BOOLEAN },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_TBS_RequestLocationInformation_r13_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
@@ -9775,7 +12586,7 @@ dissect_lpp_TBS_RequestLocationInformation_r13(tvbuff_t *tvb _U_, int offset _U_
 
 static int
 dissect_lpp_T_requestedMeasurements_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1736 "./asn1/lpp/lpp.cnf"
+#line 1884 "./asn1/lpp/lpp.cnf"
   tvbuff_t *requestedMeasurements_tvb = NULL;
   int len;
 
@@ -9800,8 +12611,22 @@ dissect_lpp_T_requestedMeasurements_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_
 }
 
 
+static const per_sequence_t WLAN_RequestLocationInformation_r13_eag_1_sequence[] = {
+  { &hf_lpp_assistanceAvailability_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BOOLEAN },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_WLAN_RequestLocationInformation_r13_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, WLAN_RequestLocationInformation_r13_eag_1_sequence);
+
+  return offset;
+}
+
+
 static const per_sequence_t WLAN_RequestLocationInformation_r13_sequence[] = {
   { &hf_lpp_requestedMeasurements_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_requestedMeasurements_r13 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_WLAN_RequestLocationInformation_r13_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
@@ -9817,7 +12642,7 @@ dissect_lpp_WLAN_RequestLocationInformation_r13(tvbuff_t *tvb _U_, int offset _U
 
 static int
 dissect_lpp_T_requestedMeasurements_r13_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1799 "./asn1/lpp/lpp.cnf"
+#line 1984 "./asn1/lpp/lpp.cnf"
   tvbuff_t *requestedMeasurements_tvb = NULL;
   int len;
 
@@ -10432,7 +13257,7 @@ dissect_lpp_CommonIEsProvideLocationInformation_eag_1(tvbuff_t *tvb _U_, int off
 
 static int
 dissect_lpp_LocationSource_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 308 "./asn1/lpp/lpp.cnf"
+#line 317 "./asn1/lpp/lpp.cnf"
   tvbuff_t *locSource_tvb = NULL;
   int len;
 
@@ -10528,16 +13353,6 @@ dissect_lpp_INTEGER_0_3999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
 }
 
 
-
-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, 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 },
@@ -10653,10 +13468,28 @@ dissect_lpp_T_gSM_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
 }
 
 
+static const per_sequence_t T_nbIoT_r14_sequence[] = {
+  { &hf_lpp_nbPhysCellId_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 },
+  { &hf_lpp_nbCellGlobalId_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_ECGI },
+  { &hf_lpp_sfn_r14         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_10 },
+  { &hf_lpp_hyperSFN_r14    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_BIT_STRING_SIZE_10 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_T_nbIoT_r14(tvbuff_t *tvb _U_, int offset _U_, 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_nbIoT_r14, T_nbIoT_r14_sequence);
+
+  return offset;
+}
+
+
 static const value_string lpp_T_networkTime_vals[] = {
   {   0, "eUTRA" },
   {   1, "uTRA" },
   {   2, "gSM" },
+  {   3, "nbIoT-r14" },
   { 0, NULL }
 };
 
@@ -10664,6 +13497,7 @@ 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 },
+  {   3, &hf_lpp_nbIoT_r14       , ASN1_NOT_EXTENSION_ROOT, dissect_lpp_T_nbIoT_r14 },
   { 0, NULL, 0, NULL }
 };
 
@@ -10867,7 +13701,7 @@ dissect_lpp_A_GNSS_ProvideLocationInformation(tvbuff_t *tvb _U_, int offset _U_,
 
 static int
 dissect_lpp_T_error_Resolution(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 343 "./asn1/lpp/lpp.cnf"
+#line 370 "./asn1/lpp/lpp.cnf"
   tvbuff_t *error_Resolution_tvb = NULL;
   offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
                                      2, 2, FALSE, &error_Resolution_tvb, NULL);
@@ -10875,7 +13709,7 @@ dissect_lpp_T_error_Resolution(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
 
 
 
-#line 347 "./asn1/lpp/lpp.cnf"
+#line 374 "./asn1/lpp/lpp.cnf"
   if (error_Resolution_tvb) {
     guint bitvalue = tvb_get_bits8(error_Resolution_tvb, 0, 2);
     actx->created_item = proto_tree_add_uint(tree, hf_index, error_Resolution_tvb, 0, 1, bitvalue);
@@ -10889,7 +13723,7 @@ dissect_lpp_T_error_Resolution(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
 
 static int
 dissect_lpp_T_error_Value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 356 "./asn1/lpp/lpp.cnf"
+#line 383 "./asn1/lpp/lpp.cnf"
   tvbuff_t *error_Value_tvb = NULL;
   offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
                                      5, 5, FALSE, &error_Value_tvb, NULL);
@@ -10897,7 +13731,7 @@ dissect_lpp_T_error_Value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
 
 
 
-#line 360 "./asn1/lpp/lpp.cnf"
+#line 387 "./asn1/lpp/lpp.cnf"
   if (error_Value_tvb) {
     guint bitvalue = tvb_get_bits8(error_Value_tvb, 0, 5);
     actx->created_item = proto_tree_add_uint(tree, hf_index, error_Value_tvb, 0, 1, bitvalue);
@@ -10911,7 +13745,7 @@ dissect_lpp_T_error_Value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
 
 static int
 dissect_lpp_T_error_NumSamples(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 369 "./asn1/lpp/lpp.cnf"
+#line 396 "./asn1/lpp/lpp.cnf"
   tvbuff_t *error_NumSamples_tvb = NULL;
   offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
                                      3, 3, FALSE, &error_NumSamples_tvb, NULL);
@@ -10919,7 +13753,7 @@ dissect_lpp_T_error_NumSamples(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
 
 
 
-#line 373 "./asn1/lpp/lpp.cnf"
+#line 400 "./asn1/lpp/lpp.cnf"
   if (error_NumSamples_tvb) {
     guint bitvalue = tvb_get_bits8(error_NumSamples_tvb, 0, 3);
     actx->created_item = proto_tree_add_uint(tree, hf_index, error_NumSamples_tvb, 0, 1, bitvalue);
@@ -10930,40 +13764,97 @@ dissect_lpp_T_error_NumSamples(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
 }
 
 
-static const per_sequence_t OTDOA_MeasQuality_sequence[] = {
-  { &hf_lpp_error_Resolution, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_error_Resolution },
-  { &hf_lpp_error_Value     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_error_Value },
-  { &hf_lpp_error_NumSamples, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_error_NumSamples },
+static const per_sequence_t OTDOA_MeasQuality_sequence[] = {
+  { &hf_lpp_error_Resolution, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_error_Resolution },
+  { &hf_lpp_error_Value     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_error_Value },
+  { &hf_lpp_error_NumSamples, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_error_NumSamples },
+  { 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_eag_1_sequence[] = {
+  { &hf_lpp_earfcnNeighbour_v9a0, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_v9a0 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_NeighbourMeasurementElement_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, NeighbourMeasurementElement_eag_1_sequence);
+
+  return offset;
+}
+
+
+
+static int
+dissect_lpp_INTEGER_0_5(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, 5U, NULL, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t AdditionalPath_r14_sequence[] = {
+  { &hf_lpp_relativeTimeDifference_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M256_255 },
+  { &hf_lpp_path_Quality_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_OTDOA_MeasQuality },
   { 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_) {
+dissect_lpp_AdditionalPath_r14(tvbuff_t *tvb _U_, int offset _U_, 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);
+                                   ett_lpp_AdditionalPath_r14, AdditionalPath_r14_sequence);
 
   return offset;
 }
 
 
+static const per_sequence_t AdditionalPathList_r14_sequence_of[1] = {
+  { &hf_lpp_AdditionalPathList_r14_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_AdditionalPath_r14 },
+};
 
 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);
+dissect_lpp_AdditionalPathList_r14(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_AdditionalPathList_r14, AdditionalPathList_r14_sequence_of,
+                                                  1, maxPaths_r14, FALSE);
 
   return offset;
 }
 
 
-static const per_sequence_t NeighbourMeasurementElement_eag_1_sequence[] = {
-  { &hf_lpp_earfcnNeighbour_v9a0, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_v9a0 },
+static const per_sequence_t NeighbourMeasurementElement_eag_2_sequence[] = {
+  { &hf_lpp_tpIdNeighbour_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_prsIdNeighbour_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_delta_rstd_r14  , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_5 },
+  { &hf_lpp_additionalPathsNeighbour_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_AdditionalPathList_r14 },
+  { &hf_lpp_nprsIdNeighbour_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_carrierFreqOffsetNB_Neighbour_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_CarrierFreqOffsetNB_r14 },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_NeighbourMeasurementElement_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, NeighbourMeasurementElement_eag_1_sequence);
+dissect_lpp_NeighbourMeasurementElement_eag_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, NeighbourMeasurementElement_eag_2_sequence);
 
   return offset;
 }
@@ -10976,6 +13867,7 @@ static const per_sequence_t NeighbourMeasurementElement_sequence[] = {
   { &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 },
   { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_NeighbourMeasurementElement_eag_1 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_NeighbourMeasurementElement_eag_2 },
   { NULL, 0, 0, NULL }
 };
 
@@ -11015,6 +13907,24 @@ dissect_lpp_OTDOA_SignalMeasurementInformation_eag_1(tvbuff_t *tvb _U_, int offs
 }
 
 
+static const per_sequence_t OTDOA_SignalMeasurementInformation_eag_2_sequence[] = {
+  { &hf_lpp_tpIdRef_r14     , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_prsIdRef_r14    , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_additionalPathsRef_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_AdditionalPathList_r14 },
+  { &hf_lpp_nprsIdRef_r14   , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_carrierFreqOffsetNB_Ref_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_CarrierFreqOffsetNB_r14 },
+  { &hf_lpp_hyperSFN_r14    , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BIT_STRING_SIZE_10 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_OTDOA_SignalMeasurementInformation_eag_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, OTDOA_SignalMeasurementInformation_eag_2_sequence);
+
+  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 },
@@ -11023,6 +13933,7 @@ static const per_sequence_t OTDOA_SignalMeasurementInformation_sequence[] = {
   { &hf_lpp_referenceQuality, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_OTDOA_MeasQuality },
   { &hf_lpp_neighbourMeasurementList, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_NeighbourMeasurementList },
   { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_SignalMeasurementInformation_eag_1 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_SignalMeasurementInformation_eag_2 },
   { NULL, 0, 0, NULL }
 };
 
@@ -11035,9 +13946,86 @@ dissect_lpp_OTDOA_SignalMeasurementInformation(tvbuff_t *tvb _U_, int offset _U_
 }
 
 
+static const per_sequence_t NeighbourMeasurementElement_NB_r14_sequence[] = {
+  { &hf_lpp_physCellIdNeighbour_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 },
+  { &hf_lpp_cellGlobalIdNeighbour_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_ECGI },
+  { &hf_lpp_earfcnNeighbour_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_r14 },
+  { &hf_lpp_rstd_r14        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_12711 },
+  { &hf_lpp_rstd_Quality_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_MeasQuality },
+  { &hf_lpp_tpIdNeighbour_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_prsIdNeighbour_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_delta_rstd_r14  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_5 },
+  { &hf_lpp_additionalPathsNeighbour_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_AdditionalPathList_r14 },
+  { &hf_lpp_nprsIdNeighbour_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_carrierFreqOffsetNB_Neighbour_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_CarrierFreqOffsetNB_r14 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_NeighbourMeasurementElement_NB_r14(tvbuff_t *tvb _U_, int offset _U_, 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_NB_r14, NeighbourMeasurementElement_NB_r14_sequence);
+
+  return offset;
+}
+
+
+static const per_sequence_t NeighbourMeasurementList_NB_r14_sequence_of[1] = {
+  { &hf_lpp_NeighbourMeasurementList_NB_r14_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_NeighbourMeasurementElement_NB_r14 },
+};
+
+static int
+dissect_lpp_NeighbourMeasurementList_NB_r14(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_NB_r14, NeighbourMeasurementList_NB_r14_sequence_of,
+                                                  1, 24, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t OTDOA_SignalMeasurementInformation_NB_r14_sequence[] = {
+  { &hf_lpp_systemFrameNumber_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_BIT_STRING_SIZE_10 },
+  { &hf_lpp_physCellIdRef_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_503 },
+  { &hf_lpp_cellGlobalIdRef_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_ECGI },
+  { &hf_lpp_earfcnRef_r14   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_ARFCN_ValueEUTRA_r14 },
+  { &hf_lpp_referenceQuality_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_OTDOA_MeasQuality },
+  { &hf_lpp_neighbourMeasurementList_r14, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_NeighbourMeasurementList_NB_r14 },
+  { &hf_lpp_tpIdRef_r14     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_prsIdRef_r14    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_additionalPathsRef_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_AdditionalPathList_r14 },
+  { &hf_lpp_nprsIdRef_r14   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_4095 },
+  { &hf_lpp_carrierFreqOffsetNB_Ref_r14, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_CarrierFreqOffsetNB_r14 },
+  { &hf_lpp_hyperSFN_r14    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_BIT_STRING_SIZE_10 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_OTDOA_SignalMeasurementInformation_NB_r14(tvbuff_t *tvb _U_, int offset _U_, 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_NB_r14, OTDOA_SignalMeasurementInformation_NB_r14_sequence);
+
+  return offset;
+}
+
+
+static const per_sequence_t OTDOA_ProvideLocationInformation_eag_1_sequence[] = {
+  { &hf_lpp_otdoaSignalMeasurementInformation_NB_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_OTDOA_SignalMeasurementInformation_NB_r14 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_OTDOA_ProvideLocationInformation_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, OTDOA_ProvideLocationInformation_eag_1_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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_OTDOA_ProvideLocationInformation_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
@@ -11083,6 +14071,42 @@ dissect_lpp_MeasuredResultsElement_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1
 }
 
 
+
+static int
+dissect_lpp_INTEGER_0_113(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, 113U, NULL, FALSE);
+
+  return offset;
+}
+
+
+
+static int
+dissect_lpp_INTEGER_0_74(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, 74U, NULL, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t MeasuredResultsElement_eag_2_sequence[] = {
+  { &hf_lpp_nrsrp_Result_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_113 },
+  { &hf_lpp_nrsrq_Result_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_0_74 },
+  { &hf_lpp_carrierFreqOffsetNB_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_CarrierFreqOffsetNB_r14 },
+  { &hf_lpp_hyperSFN_r14    , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_BIT_STRING_SIZE_10 },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_MeasuredResultsElement_eag_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, MeasuredResultsElement_eag_2_sequence);
+
+  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 },
@@ -11092,6 +14116,7 @@ static const per_sequence_t MeasuredResultsElement_sequence[] = {
   { &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 },
   { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_MeasuredResultsElement_eag_1 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_MeasuredResultsElement_eag_2 },
   { NULL, 0, 0, NULL }
 };
 
@@ -11179,11 +14204,26 @@ dissect_lpp_T_cause_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
 }
 
 
+static const per_sequence_t ECID_TargetDeviceErrorCauses_eag_1_sequence[] = {
+  { &hf_lpp_nrsrpMeasurementNotPossible_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_NULL },
+  { &hf_lpp_nrsrqMeasurementNotPossible_r14, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_NULL },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_ECID_TargetDeviceErrorCauses_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, ECID_TargetDeviceErrorCauses_eag_1_sequence);
+
+  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 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_ECID_TargetDeviceErrorCauses_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
@@ -11243,96 +14283,65 @@ dissect_lpp_INTEGER_30000_115000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
 }
 
 
-static const per_sequence_t Sensor_MeasurementInformation_r13_sequence[] = {
-  { &hf_lpp_measurementReferenceTime_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_UTCTime },
-  { &hf_lpp_uncompensatedBarometricPressure_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_30000_115000 },
-  { NULL, 0, 0, NULL }
-};
 
 static int
-dissect_lpp_Sensor_MeasurementInformation_r13(tvbuff_t *tvb _U_, int offset _U_, 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_Sensor_MeasurementInformation_r13, Sensor_MeasurementInformation_r13_sequence);
+dissect_lpp_INTEGER_0_1000(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, 1000U, NULL, FALSE);
 
   return offset;
 }
 
 
-static const value_string lpp_T_cause_r13_02_vals[] = {
-  {   0, "undefined" },
-  { 0, NULL }
-};
-
 
 static int
-dissect_lpp_T_cause_r13_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
-                                     1, NULL, TRUE, 0, NULL);
+dissect_lpp_INTEGER_1_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,
+                                                            1U, 100U, NULL, FALSE);
 
   return offset;
 }
 
 
-static const per_sequence_t Sensor_LocationServerErrorCauses_r13_sequence[] = {
-  { &hf_lpp_cause_r13_02    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13_02 },
+static const per_sequence_t T_uncertainty_r14_sequence[] = {
+  { &hf_lpp_range_r14       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1000 },
+  { &hf_lpp_confidence_r14  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_1_100 },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_Sensor_LocationServerErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_T_uncertainty_r14(tvbuff_t *tvb _U_, int offset _U_, 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_Sensor_LocationServerErrorCauses_r13, Sensor_LocationServerErrorCauses_r13_sequence);
+                                   ett_lpp_T_uncertainty_r14, T_uncertainty_r14_sequence);
 
   return offset;
 }
 
 
-static const value_string lpp_T_cause_r13_03_vals[] = {
-  {   0, "undefined" },
-  { 0, NULL }
+static const per_sequence_t Sensor_MeasurementInformation_r13_eag_1_sequence[] = {
+  { &hf_lpp_uncertainty_r14 , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_T_uncertainty_r14 },
+  { NULL, 0, 0, NULL }
 };
 
-
 static int
-dissect_lpp_T_cause_r13_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,
-                                     1, NULL, TRUE, 0, NULL);
+dissect_lpp_Sensor_MeasurementInformation_r13_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, Sensor_MeasurementInformation_r13_eag_1_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t Sensor_TargetDeviceErrorCauses_r13_sequence[] = {
-  { &hf_lpp_cause_r13_03    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13_03 },
+static const per_sequence_t Sensor_MeasurementInformation_r13_sequence[] = {
+  { &hf_lpp_measurementReferenceTime_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_UTCTime },
+  { &hf_lpp_uncompensatedBarometricPressure_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_INTEGER_30000_115000 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_Sensor_MeasurementInformation_r13_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_Sensor_TargetDeviceErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_Sensor_MeasurementInformation_r13(tvbuff_t *tvb _U_, int offset _U_, 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_Sensor_TargetDeviceErrorCauses_r13, Sensor_TargetDeviceErrorCauses_r13_sequence);
-
-  return offset;
-}
-
-
-static const value_string lpp_Sensor_Error_r13_vals[] = {
-  {   0, "locationServerErrorCauses-r13" },
-  {   1, "targetDeviceErrorCauses-r13" },
-  { 0, NULL }
-};
-
-static const per_choice_t Sensor_Error_r13_choice[] = {
-  {   0, &hf_lpp_locationServerErrorCauses_r13_01, ASN1_EXTENSION_ROOT    , dissect_lpp_Sensor_LocationServerErrorCauses_r13 },
-  {   1, &hf_lpp_targetDeviceErrorCauses_r13_01, ASN1_EXTENSION_ROOT    , dissect_lpp_Sensor_TargetDeviceErrorCauses_r13 },
-  { 0, NULL, 0, NULL }
-};
-
-static int
-dissect_lpp_Sensor_Error_r13(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_Sensor_Error_r13, Sensor_Error_r13_choice,
-                                 NULL);
+                                   ett_lpp_Sensor_MeasurementInformation_r13, Sensor_MeasurementInformation_r13_sequence);
 
   return offset;
 }
@@ -11353,184 +14362,85 @@ dissect_lpp_Sensor_ProvideLocationInformation_r13(tvbuff_t *tvb _U_, int offset
 }
 
 
-static const per_sequence_t MBS_BeaconMeasElement_r13_sequence[] = {
-  { &hf_lpp_transmitterID_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_32767 },
-  { &hf_lpp_codePhase_r13   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2097151 },
-  { &hf_lpp_codePhaseRMSError_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_63 },
-  { NULL, 0, 0, NULL }
-};
-
-static int
-dissect_lpp_MBS_BeaconMeasElement_r13(tvbuff_t *tvb _U_, int offset _U_, 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_MBS_BeaconMeasElement_r13, MBS_BeaconMeasElement_r13_sequence);
-
-  return offset;
-}
-
-
-static const per_sequence_t MBS_BeaconMeasList_r13_sequence_of[1] = {
-  { &hf_lpp_MBS_BeaconMeasList_r13_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_MBS_BeaconMeasElement_r13 },
-};
-
-static int
-dissect_lpp_MBS_BeaconMeasList_r13(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_MBS_BeaconMeasList_r13, MBS_BeaconMeasList_r13_sequence_of,
-                                                  1, 64, FALSE);
-
-  return offset;
-}
-
-
-static const per_sequence_t TBS_MeasurementInformation_r13_sequence[] = {
-  { &hf_lpp_measurementReferenceTime_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_UTCTime },
-  { &hf_lpp_mbs_SgnMeasList_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_MBS_BeaconMeasList_r13 },
-  { NULL, 0, 0, NULL }
-};
-
-static int
-dissect_lpp_TBS_MeasurementInformation_r13(tvbuff_t *tvb _U_, int offset _U_, 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_TBS_MeasurementInformation_r13, TBS_MeasurementInformation_r13_sequence);
-
-  return offset;
-}
-
-
-static const value_string lpp_T_cause_r13_vals[] = {
-  {   0, "undefined" },
-  { 0, NULL }
-};
-
-
-static int
-dissect_lpp_T_cause_r13(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 TBS_LocationServerErrorCauses_r13_sequence[] = {
-  { &hf_lpp_cause_r13       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13 },
-  { NULL, 0, 0, NULL }
-};
-
-static int
-dissect_lpp_TBS_LocationServerErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, 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_TBS_LocationServerErrorCauses_r13, TBS_LocationServerErrorCauses_r13_sequence);
-
-  return offset;
-}
-
-
-static const value_string lpp_T_cause_r13_01_vals[] = {
-  {   0, "undefined" },
-  {   1, "thereWereNotEnoughMBSBeaconsReceived" },
-  { 0, NULL }
-};
-
-
-static int
-dissect_lpp_T_cause_r13_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 per_sequence_t TBS_TargetDeviceErrorCauses_r13_sequence[] = {
-  { &hf_lpp_cause_r13_01    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13_01 },
-  { NULL, 0, 0, NULL }
-};
 
 static int
-dissect_lpp_TBS_TargetDeviceErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, 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_TBS_TargetDeviceErrorCauses_r13, TBS_TargetDeviceErrorCauses_r13_sequence);
+dissect_lpp_INTEGER_M130_M30(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,
+                                                            -130, -30, NULL, FALSE);
 
   return offset;
 }
 
 
-static const value_string lpp_TBS_Error_r13_vals[] = {
-  {   0, "locationServerErrorCauses-r13" },
-  {   1, "targetDeviceErrorCauses-r13" },
-  { 0, NULL }
-};
-
-static const per_choice_t TBS_Error_r13_choice[] = {
-  {   0, &hf_lpp_locationServerErrorCauses_r13, ASN1_EXTENSION_ROOT    , dissect_lpp_TBS_LocationServerErrorCauses_r13 },
-  {   1, &hf_lpp_targetDeviceErrorCauses_r13, ASN1_EXTENSION_ROOT    , dissect_lpp_TBS_TargetDeviceErrorCauses_r13 },
-  { 0, NULL, 0, NULL }
+static const per_sequence_t MBS_BeaconMeasElement_r13_eag_1_sequence[] = {
+  { &hf_lpp_rssi_r14        , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_lpp_INTEGER_M130_M30 },
+  { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_TBS_Error_r13(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_TBS_Error_r13, TBS_Error_r13_choice,
-                                 NULL);
+dissect_lpp_MBS_BeaconMeasElement_r13_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_per_sequence_eag(tvb, offset, actx, tree, MBS_BeaconMeasElement_r13_eag_1_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t TBS_ProvideLocationInformation_r13_sequence[] = {
-  { &hf_lpp_tbs_MeasurementInformation_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_TBS_MeasurementInformation_r13 },
-  { &hf_lpp_tbs_Error_r13   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_TBS_Error_r13 },
+static const per_sequence_t MBS_BeaconMeasElement_r13_sequence[] = {
+  { &hf_lpp_transmitterID_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_32767 },
+  { &hf_lpp_codePhase_r13   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2097151 },
+  { &hf_lpp_codePhaseRMSError_r13, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_63 },
+  { &dummy_hf_lpp_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_MBS_BeaconMeasElement_r13_eag_1 },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_TBS_ProvideLocationInformation_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_MBS_BeaconMeasElement_r13(tvbuff_t *tvb _U_, int offset _U_, 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_TBS_ProvideLocationInformation_r13, TBS_ProvideLocationInformation_r13_sequence);
+                                   ett_lpp_MBS_BeaconMeasElement_r13, MBS_BeaconMeasElement_r13_sequence);
 
   return offset;
 }
 
 
+static const per_sequence_t MBS_BeaconMeasList_r13_sequence_of[1] = {
+  { &hf_lpp_MBS_BeaconMeasList_r13_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_lpp_MBS_BeaconMeasElement_r13 },
+};
 
 static int
-dissect_lpp_OCTET_STRING_SIZE_6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
-                                       6, 6, FALSE, NULL);
+dissect_lpp_MBS_BeaconMeasList_r13(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_MBS_BeaconMeasList_r13, MBS_BeaconMeasList_r13_sequence_of,
+                                                  1, 64, FALSE);
 
   return offset;
 }
 
 
+static const per_sequence_t TBS_MeasurementInformation_r13_sequence[] = {
+  { &hf_lpp_measurementReferenceTime_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_UTCTime },
+  { &hf_lpp_mbs_SgnMeasList_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_MBS_BeaconMeasList_r13 },
+  { NULL, 0, 0, NULL }
+};
 
 static int
-dissect_lpp_T_ssid_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1730 "./asn1/lpp/lpp.cnf"
-  tvbuff_t *ssid_tvb = NULL;
-
-  offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
-                                       1, 32, FALSE, &ssid_tvb);
-
-  actx->created_item = proto_tree_add_item(tree, hf_index, ssid_tvb, 0, -1, ENC_ASCII|ENC_NA);
-
-
+dissect_lpp_TBS_MeasurementInformation_r13(tvbuff_t *tvb _U_, int offset _U_, 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_TBS_MeasurementInformation_r13, TBS_MeasurementInformation_r13_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t WLAN_AP_Identifier_r13_sequence[] = {
-  { &hf_lpp_bssid_r13       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_OCTET_STRING_SIZE_6 },
-  { &hf_lpp_ssid_r13        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_T_ssid_r13 },
+static const per_sequence_t TBS_ProvideLocationInformation_r13_sequence[] = {
+  { &hf_lpp_tbs_MeasurementInformation_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_TBS_MeasurementInformation_r13 },
+  { &hf_lpp_tbs_Error_r13   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_TBS_Error_r13 },
   { NULL, 0, 0, NULL }
 };
 
 static int
-dissect_lpp_WLAN_AP_Identifier_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_lpp_TBS_ProvideLocationInformation_r13(tvbuff_t *tvb _U_, int offset _U_, 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_WLAN_AP_Identifier_r13, WLAN_AP_Identifier_r13_sequence);
+                                   ett_lpp_TBS_ProvideLocationInformation_r13, TBS_ProvideLocationInformation_r13_sequence);
 
   return offset;
 }
@@ -11638,90 +14548,6 @@ dissect_lpp_WLAN_MeasurementInformation_r13(tvbuff_t *tvb _U_, int offset _U_, a
 }
 
 
-static const value_string lpp_T_cause_r13_04_vals[] = {
-  {   0, "undefined" },
-  { 0, NULL }
-};
-
-
-static int
-dissect_lpp_T_cause_r13_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 WLAN_LocationServerErrorCauses_r13_sequence[] = {
-  { &hf_lpp_cause_r13_04    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13_04 },
-  { NULL, 0, 0, NULL }
-};
-
-static int
-dissect_lpp_WLAN_LocationServerErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, 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_WLAN_LocationServerErrorCauses_r13, WLAN_LocationServerErrorCauses_r13_sequence);
-
-  return offset;
-}
-
-
-static const value_string lpp_T_cause_r13_05_vals[] = {
-  {   0, "undefined" },
-  {   1, "requestedMeasurementsNotAvailable" },
-  {   2, "notAllrequestedMeasurementsPossible" },
-  { 0, NULL }
-};
-
-
-static int
-dissect_lpp_T_cause_r13_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 WLAN_TargetDeviceErrorCauses_r13_sequence[] = {
-  { &hf_lpp_cause_r13_05    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_lpp_T_cause_r13_05 },
-  { &hf_lpp_wlan_AP_RSSI_MeasurementNotPossible_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_NULL },
-  { &hf_lpp_wlan_AP_RTT_MeasurementNotPossible_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_NULL },
-  { NULL, 0, 0, NULL }
-};
-
-static int
-dissect_lpp_WLAN_TargetDeviceErrorCauses_r13(tvbuff_t *tvb _U_, int offset _U_, 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_WLAN_TargetDeviceErrorCauses_r13, WLAN_TargetDeviceErrorCauses_r13_sequence);
-
-  return offset;
-}
-
-
-static const value_string lpp_WLAN_Error_r13_vals[] = {
-  {   0, "locationServerErrorCauses-r13" },
-  {   1, "targetDeviceErrorCauses-r13" },
-  { 0, NULL }
-};
-
-static const per_choice_t WLAN_Error_r13_choice[] = {
-  {   0, &hf_lpp_locationServerErrorCauses_r13_02, ASN1_EXTENSION_ROOT    , dissect_lpp_WLAN_LocationServerErrorCauses_r13 },
-  {   1, &hf_lpp_targetDeviceErrorCauses_r13_02, ASN1_EXTENSION_ROOT    , dissect_lpp_WLAN_TargetDeviceErrorCauses_r13 },
-  { 0, NULL, 0, NULL }
-};
-
-static int
-dissect_lpp_WLAN_Error_r13(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_WLAN_Error_r13, WLAN_Error_r13_choice,
-                                 NULL);
-
-  return offset;
-}
-
-
 static const per_sequence_t WLAN_ProvideLocationInformation_r13_sequence[] = {
   { &hf_lpp_wlan_MeasurementInformation_r13, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_WLAN_MeasurementInformation_r13 },
   { &hf_lpp_wlan_Error_r13  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_lpp_WLAN_Error_r13 },
@@ -11740,7 +14566,7 @@ dissect_lpp_WLAN_ProvideLocationInformation_r13(tvbuff_t *tvb _U_, int offset _U
 
 static int
 dissect_lpp_T_btAddr_r13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1790 "./asn1/lpp/lpp.cnf"
+#line 1975 "./asn1/lpp/lpp.cnf"
   tvbuff_t *btAddr_tvb = NULL;
 
   offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
@@ -12402,7 +15228,7 @@ int dissect_lpp_Polygon_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tre
 
 
 /*--- End of included file: packet-lpp-fn.c ---*/
-#line 1641 "./asn1/lpp/packet-lpp-template.c"
+#line 1725 "./asn1/lpp/packet-lpp-template.c"
 
 static int dissect_lpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) {
   proto_tree *subtree;
@@ -12704,6 +15530,18 @@ void proto_register_lpp(void) {
       { "epdu-RequestAssistanceData", "lpp.epdu_RequestAssistanceData",
         FT_UINT32, BASE_DEC, NULL, 0,
         "EPDU_Sequence", HFILL }},
+    { &hf_lpp_sensor_RequestAssistanceData_r14,
+      { "sensor-RequestAssistanceData-r14", "lpp.sensor_RequestAssistanceData_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_tbs_RequestAssistanceData_r14,
+      { "tbs-RequestAssistanceData-r14", "lpp.tbs_RequestAssistanceData_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_wlan_RequestAssistanceData_r14,
+      { "wlan-RequestAssistanceData-r14", "lpp.wlan_RequestAssistanceData_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_lpp_criticalExtensions_03,
       { "criticalExtensions", "lpp.criticalExtensions",
         FT_UINT32, BASE_DEC, VALS(lpp_T_criticalExtensions_03_vals), 0,
@@ -12736,6 +15574,18 @@ void proto_register_lpp(void) {
       { "epdu-Provide-Assistance-Data", "lpp.epdu_Provide_Assistance_Data",
         FT_UINT32, BASE_DEC, NULL, 0,
         "EPDU_Sequence", HFILL }},
+    { &hf_lpp_sensor_ProvideAssistanceData_r14,
+      { "sensor-ProvideAssistanceData-r14", "lpp.sensor_ProvideAssistanceData_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_tbs_ProvideAssistanceData_r14,
+      { "tbs-ProvideAssistanceData-r14", "lpp.tbs_ProvideAssistanceData_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_wlan_ProvideAssistanceData_r14,
+      { "wlan-ProvideAssistanceData-r14", "lpp.wlan_ProvideAssistanceData_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_lpp_criticalExtensions_04,
       { "criticalExtensions", "lpp.criticalExtensions",
         FT_UINT32, BASE_DEC, VALS(lpp_T_criticalExtensions_04_vals), 0,
@@ -12884,6 +15734,14 @@ void proto_register_lpp(void) {
       { "accessTypes", "lpp.accessTypes",
         FT_BYTES, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_lpp_carrierFreq_r14,
+      { "carrierFreq-r14", "lpp.carrierFreq_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ARFCN_ValueEUTRA_r14", HFILL }},
+    { &hf_lpp_carrierFreqOffset_r14,
+      { "carrierFreqOffset-r14", "lpp.carrierFreqOffset_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_CarrierFreqOffsetNB_r14_vals), 0,
+        "CarrierFreqOffsetNB_r14", HFILL }},
     { &hf_lpp_plmn_Identity,
       { "plmn-Identity", "lpp.plmn_Identity_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -13176,6 +16034,10 @@ void proto_register_lpp(void) {
       { "velocityTypes", "lpp.velocityTypes_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_lpp_messageSizeLimitNB_r14,
+      { "messageSizeLimitNB-r14", "lpp.messageSizeLimitNB_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_lpp_reportingAmount,
       { "reportingAmount", "lpp.reportingAmount",
         FT_UINT32, BASE_DEC, VALS(lpp_T_reportingAmount_vals), 0,
@@ -13212,6 +16074,10 @@ void proto_register_lpp(void) {
       { "velocityRequest", "lpp.velocityRequest",
         FT_BOOLEAN, BASE_NONE, NULL, 0,
         "BOOLEAN", HFILL }},
+    { &hf_lpp_responseTimeNB_r14,
+      { "responseTimeNB-r14", "lpp.responseTimeNB_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_lpp_accuracy,
       { "accuracy", "lpp.accuracy",
         FT_UINT32, BASE_CUSTOM, CF_FUNC(lpp_uncertainty_fmt), 0,
@@ -13224,6 +16090,18 @@ void proto_register_lpp(void) {
       { "responseTimeEarlyFix-r12", "lpp.responseTimeEarlyFix_r12",
         FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &units_seconds, 0,
         "INTEGER_1_128", HFILL }},
+    { &hf_lpp_timeNB_r14,
+      { "timeNB-r14", "lpp.timeNB_r14",
+        FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &units_seconds, 0,
+        "INTEGER_1_512", HFILL }},
+    { &hf_lpp_responseTimeEarlyFixNB_r14,
+      { "responseTimeEarlyFixNB-r14", "lpp.responseTimeEarlyFixNB_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_1_512", HFILL }},
+    { &hf_lpp_measurementLimit_r14,
+      { "measurementLimit-r14", "lpp.measurementLimit_r14",
+        FT_UINT32, BASE_CUSTOM, CF_FUNC(lpp_measurementLimit_fmt), 0,
+        "INTEGER_1_512", HFILL }},
     { &hf_lpp_locationEstimate,
       { "locationEstimate", "lpp.locationEstimate",
         FT_UINT32, BASE_DEC, VALS(lpp_LocationCoordinates_vals), 0,
@@ -13316,6 +16194,14 @@ void proto_register_lpp(void) {
       { "otdoa-Error", "lpp.otdoa_Error",
         FT_UINT32, BASE_DEC, VALS(lpp_OTDOA_Error_vals), 0,
         NULL, HFILL }},
+    { &hf_lpp_otdoa_ReferenceCellInfoNB_r14,
+      { "otdoa-ReferenceCellInfoNB-r14", "lpp.otdoa_ReferenceCellInfoNB_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_otdoa_NeighbourCellInfoNB_r14,
+      { "otdoa-NeighbourCellInfoNB-r14", "lpp.otdoa_NeighbourCellInfoNB_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "OTDOA_NeighbourCellInfoListNB_r14", HFILL }},
     { &hf_lpp_physCellId,
       { "physCellId", "lpp.physCellId",
         FT_UINT32, BASE_DEC, NULL, 0,
@@ -13344,6 +16230,30 @@ void proto_register_lpp(void) {
       { "earfcnRef-v9a0", "lpp.earfcnRef_v9a0",
         FT_UINT32, BASE_DEC, NULL, 0,
         "ARFCN_ValueEUTRA_v9a0", HFILL }},
+    { &hf_lpp_tpId_r14,
+      { "tpId-r14", "lpp.tpId_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_4095", HFILL }},
+    { &hf_lpp_cpLengthCRS_r14,
+      { "cpLengthCRS-r14", "lpp.cpLengthCRS_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_cpLengthCRS_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_sameMBSFNconfigRef_r14,
+      { "sameMBSFNconfigRef-r14", "lpp.sameMBSFNconfigRef_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_dlBandwidth_r14,
+      { "dlBandwidth-r14", "lpp.dlBandwidth_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_dlBandwidth_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_addPRSconfigRef_r14,
+      { "addPRSconfigRef-r14", "lpp.addPRSconfigRef_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_PRS_Info", HFILL }},
+    { &hf_lpp_addPRSconfigRef_r14_item,
+      { "PRS-Info", "lpp.PRS_Info_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_lpp_prs_Bandwidth,
       { "prs-Bandwidth", "lpp.prs_Bandwidth",
         FT_UINT32, BASE_DEC, VALS(lpp_T_prs_Bandwidth_vals), 0,
@@ -13376,6 +16286,58 @@ void proto_register_lpp(void) {
       { "po16-r9", "lpp.po16_r9",
         FT_BYTES, BASE_NONE, NULL, 0,
         "BIT_STRING_SIZE_16", HFILL }},
+    { &hf_lpp_po32_v1420,
+      { "po32-v1420", "lpp.po32_v1420",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_32", HFILL }},
+    { &hf_lpp_po64_v1420,
+      { "po64-v1420", "lpp.po64_v1420",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_64", HFILL }},
+    { &hf_lpp_po128_v1420,
+      { "po128-v1420", "lpp.po128_v1420",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_128", HFILL }},
+    { &hf_lpp_po256_v1420,
+      { "po256-v1420", "lpp.po256_v1420",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_256", HFILL }},
+    { &hf_lpp_po512_v1420,
+      { "po512-v1420", "lpp.po512_v1420",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_512", HFILL }},
+    { &hf_lpp_po1024_v1420,
+      { "po1024-v1420", "lpp.po1024_v1420",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_1024", HFILL }},
+    { &hf_lpp_prsID_r14,
+      { "prsID-r14", "lpp.prsID_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_4095", HFILL }},
+    { &hf_lpp_add_numDL_Frames_r14,
+      { "add-numDL-Frames-r14", "lpp.add_numDL_Frames_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_1_160", HFILL }},
+    { &hf_lpp_prsOccGroupLen_r14,
+      { "prsOccGroupLen-r14", "lpp.prsOccGroupLen_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_prsOccGroupLen_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_prsHoppingInfo_r14,
+      { "prsHoppingInfo-r14", "lpp.prsHoppingInfo_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_prsHoppingInfo_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_nb2_r14,
+      { "nb2-r14", "lpp.nb2_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_maxAvailNarrowBands_Minus1_r14", HFILL }},
+    { &hf_lpp_nb4_r14,
+      { "nb4-r14", "lpp.nb4_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_nb4_r14_item,
+      { "nb4-r14 item", "lpp.nb4_r14_item",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_1_maxAvailNarrowBands_Minus1_r14", HFILL }},
     { &hf_lpp_OTDOA_NeighbourCellInfoList_item,
       { "OTDOA-NeighbourFreqInfo", "lpp.OTDOA_NeighbourFreqInfo",
         FT_UINT32, BASE_DEC, NULL, 0,
@@ -13412,14 +16374,194 @@ void proto_register_lpp(void) {
       { "expectedRSTD-Uncertainty", "lpp.expectedRSTD_Uncertainty",
         FT_UINT32, BASE_CUSTOM, CF_FUNC(lpp_expectedRSTD_Uncertainty_fmt), 0,
         "INTEGER_0_1023", HFILL }},
-    { &hf_lpp_earfcn_v9a0,
-      { "earfcn-v9a0", "lpp.earfcn_v9a0",
+    { &hf_lpp_earfcn_v9a0,
+      { "earfcn-v9a0", "lpp.earfcn_v9a0",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ARFCN_ValueEUTRA_v9a0", HFILL }},
+    { &hf_lpp_prs_only_tp_r14,
+      { "prs-only-tp-r14", "lpp.prs_only_tp_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_prs_only_tp_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_cpLengthCRS_r14_01,
+      { "cpLengthCRS-r14", "lpp.cpLengthCRS_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_cpLengthCRS_r14_01_vals), 0,
+        "T_cpLengthCRS_r14_01", HFILL }},
+    { &hf_lpp_sameMBSFNconfigNeighbour_r14,
+      { "sameMBSFNconfigNeighbour-r14", "lpp.sameMBSFNconfigNeighbour_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_dlBandwidth_r14_01,
+      { "dlBandwidth-r14", "lpp.dlBandwidth_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_dlBandwidth_r14_01_vals), 0,
+        "T_dlBandwidth_r14_01", HFILL }},
+    { &hf_lpp_addPRSconfigNeighbour_r14,
+      { "addPRSconfigNeighbour-r14", "lpp.addPRSconfigNeighbour_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_Add_PRSconfigNeighbourElement_r14", HFILL }},
+    { &hf_lpp_addPRSconfigNeighbour_r14_item,
+      { "Add-PRSconfigNeighbourElement-r14", "lpp.Add_PRSconfigNeighbourElement_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_add_prsInfo_r14,
+      { "add-prsInfo-r14", "lpp.add_prsInfo_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "PRS_Info", HFILL }},
+    { &hf_lpp_physCellIdNB_r14,
+      { "physCellIdNB-r14", "lpp.physCellIdNB_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_503", HFILL }},
+    { &hf_lpp_cellGlobalIdNB_r14,
+      { "cellGlobalIdNB-r14", "lpp.cellGlobalIdNB_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ECGI", HFILL }},
+    { &hf_lpp_carrierFreqRef_r14,
+      { "carrierFreqRef-r14", "lpp.carrierFreqRef_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "CarrierFreq_NB_r14", HFILL }},
+    { &hf_lpp_earfcn_r14,
+      { "earfcn-r14", "lpp.earfcn_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ARFCN_ValueEUTRA_r14", HFILL }},
+    { &hf_lpp_eutra_NumCRS_Ports_r14,
+      { "eutra-NumCRS-Ports-r14", "lpp.eutra_NumCRS_Ports_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_eutra_NumCRS_Ports_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_otdoa_SIB1_NB_repetitions_r14,
+      { "otdoa-SIB1-NB-repetitions-r14", "lpp.otdoa_SIB1_NB_repetitions_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_otdoa_SIB1_NB_repetitions_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_nprsInfo_r14,
+      { "nprsInfo-r14", "lpp.nprsInfo_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "PRS_Info_NB_r14", HFILL }},
+    { &hf_lpp_PRS_Info_NB_r14_item,
+      { "NPRS-Info-r14", "lpp.NPRS_Info_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_operationModeInfoNPRS_r14,
+      { "operationModeInfoNPRS-r14", "lpp.operationModeInfoNPRS_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_operationModeInfoNPRS_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_nprs_carrier_r14,
+      { "nprs-carrier-r14", "lpp.nprs_carrier_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "CarrierFreq_NB_r14", HFILL }},
+    { &hf_lpp_nprsSequenceInfo_r14,
+      { "nprsSequenceInfo-r14", "lpp.nprsSequenceInfo_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_174", HFILL }},
+    { &hf_lpp_nprsID_r14,
+      { "nprsID-r14", "lpp.nprsID_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_4095", HFILL }},
+    { &hf_lpp_partA_r14,
+      { "partA-r14", "lpp.partA_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_nprsBitmap_r14,
+      { "nprsBitmap-r14", "lpp.nprsBitmap_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_nprsBitmap_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_subframePattern10_r14,
+      { "subframePattern10-r14", "lpp.subframePattern10_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_10", HFILL }},
+    { &hf_lpp_subframePattern40_r14,
+      { "subframePattern40-r14", "lpp.subframePattern40_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_40", HFILL }},
+    { &hf_lpp_nprs_MutingInfoA_r14,
+      { "nprs-MutingInfoA-r14", "lpp.nprs_MutingInfoA_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_nprs_MutingInfoA_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_po2_r14,
+      { "po2-r14", "lpp.po2_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_2", HFILL }},
+    { &hf_lpp_po4_r14,
+      { "po4-r14", "lpp.po4_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_4", HFILL }},
+    { &hf_lpp_po8_r14,
+      { "po8-r14", "lpp.po8_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_8", HFILL }},
+    { &hf_lpp_po16_r14,
+      { "po16-r14", "lpp.po16_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_16", HFILL }},
+    { &hf_lpp_partB_r14,
+      { "partB-r14", "lpp.partB_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_nprs_Period_r14,
+      { "nprs-Period-r14", "lpp.nprs_Period_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_nprs_Period_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_nprs_startSF_r14,
+      { "nprs-startSF-r14", "lpp.nprs_startSF_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_nprs_startSF_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_nprs_NumSF_r14,
+      { "nprs-NumSF-r14", "lpp.nprs_NumSF_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_nprs_NumSF_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_nprs_MutingInfoB_r14,
+      { "nprs-MutingInfoB-r14", "lpp.nprs_MutingInfoB_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_nprs_MutingInfoB_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_OTDOA_NeighbourCellInfoListNB_r14_item,
+      { "OTDOA-NeighbourCellInfoNB-r14", "lpp.OTDOA_NeighbourCellInfoNB_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_carrierFreq_r14_01,
+      { "carrierFreq-r14", "lpp.carrierFreq_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "CarrierFreq_NB_r14", HFILL }},
+    { &hf_lpp_eutra_NumCRS_Ports_r14_01,
+      { "eutra-NumCRS-Ports-r14", "lpp.eutra_NumCRS_Ports_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_eutra_NumCRS_Ports_r14_01_vals), 0,
+        "T_eutra_NumCRS_Ports_r14_01", HFILL }},
+    { &hf_lpp_otdoa_SIB1_NB_repetitions_r14_01,
+      { "otdoa-SIB1-NB-repetitions-r14", "lpp.otdoa_SIB1_NB_repetitions_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_otdoa_SIB1_NB_repetitions_r14_01_vals), 0,
+        "T_otdoa_SIB1_NB_repetitions_r14_01", HFILL }},
+    { &hf_lpp_nprs_slotNumberOffset_r14,
+      { "nprs-slotNumberOffset-r14", "lpp.nprs_slotNumberOffset_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_19", HFILL }},
+    { &hf_lpp_nprs_SFN_Offset_r14,
+      { "nprs-SFN-Offset-r14", "lpp.nprs_SFN_Offset_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_63", HFILL }},
+    { &hf_lpp_nprs_SubframeOffset_r14,
+      { "nprs-SubframeOffset-r14", "lpp.nprs_SubframeOffset_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_1279", HFILL }},
+    { &hf_lpp_expectedRSTD_r14,
+      { "expectedRSTD-r14", "lpp.expectedRSTD_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_16383", HFILL }},
+    { &hf_lpp_expectedRSTD_Uncertainty_r14,
+      { "expectedRSTD-Uncertainty-r14", "lpp.expectedRSTD_Uncertainty_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_1023", HFILL }},
+    { &hf_lpp_prsNeighbourCellIndex_r14,
+      { "prsNeighbourCellIndex-r14", "lpp.prsNeighbourCellIndex_r14",
         FT_UINT32, BASE_DEC, NULL, 0,
-        "ARFCN_ValueEUTRA_v9a0", HFILL }},
+        "INTEGER_1_72", HFILL }},
+    { &hf_lpp_adType_r14,
+      { "adType-r14", "lpp.adType_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_lpp_otdoaSignalMeasurementInformation,
       { "otdoaSignalMeasurementInformation", "lpp.otdoaSignalMeasurementInformation_element",
         FT_NONE, BASE_NONE, NULL, 0,
         "OTDOA_SignalMeasurementInformation", HFILL }},
+    { &hf_lpp_otdoaSignalMeasurementInformation_NB_r14,
+      { "otdoaSignalMeasurementInformation-NB-r14", "lpp.otdoaSignalMeasurementInformation_NB_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "OTDOA_SignalMeasurementInformation_NB_r14", HFILL }},
     { &hf_lpp_systemFrameNumber,
       { "systemFrameNumber", "lpp.systemFrameNumber",
         FT_BYTES, BASE_NONE, NULL, 0,
@@ -13440,6 +16582,30 @@ void proto_register_lpp(void) {
       { "neighbourMeasurementList", "lpp.neighbourMeasurementList",
         FT_UINT32, BASE_DEC, NULL, 0,
         NULL, HFILL }},
+    { &hf_lpp_tpIdRef_r14,
+      { "tpIdRef-r14", "lpp.tpIdRef_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_4095", HFILL }},
+    { &hf_lpp_prsIdRef_r14,
+      { "prsIdRef-r14", "lpp.prsIdRef_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_4095", HFILL }},
+    { &hf_lpp_additionalPathsRef_r14,
+      { "additionalPathsRef-r14", "lpp.additionalPathsRef_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "AdditionalPathList_r14", HFILL }},
+    { &hf_lpp_nprsIdRef_r14,
+      { "nprsIdRef-r14", "lpp.nprsIdRef_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_4095", HFILL }},
+    { &hf_lpp_carrierFreqOffsetNB_Ref_r14,
+      { "carrierFreqOffsetNB-Ref-r14", "lpp.carrierFreqOffsetNB_Ref_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_CarrierFreqOffsetNB_r14_vals), 0,
+        "CarrierFreqOffsetNB_r14", HFILL }},
+    { &hf_lpp_hyperSFN_r14,
+      { "hyperSFN-r14", "lpp.hyperSFN_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_10", HFILL }},
     { &hf_lpp_NeighbourMeasurementList_item,
       { "NeighbourMeasurementElement", "lpp.NeighbourMeasurementElement_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -13468,6 +16634,82 @@ void proto_register_lpp(void) {
       { "earfcnNeighbour-v9a0", "lpp.earfcnNeighbour_v9a0",
         FT_UINT32, BASE_DEC, NULL, 0,
         "ARFCN_ValueEUTRA_v9a0", HFILL }},
+    { &hf_lpp_tpIdNeighbour_r14,
+      { "tpIdNeighbour-r14", "lpp.tpIdNeighbour_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_4095", HFILL }},
+    { &hf_lpp_prsIdNeighbour_r14,
+      { "prsIdNeighbour-r14", "lpp.prsIdNeighbour_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_4095", HFILL }},
+    { &hf_lpp_delta_rstd_r14,
+      { "delta-rstd-r14", "lpp.delta_rstd_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_5", HFILL }},
+    { &hf_lpp_additionalPathsNeighbour_r14,
+      { "additionalPathsNeighbour-r14", "lpp.additionalPathsNeighbour_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "AdditionalPathList_r14", HFILL }},
+    { &hf_lpp_nprsIdNeighbour_r14,
+      { "nprsIdNeighbour-r14", "lpp.nprsIdNeighbour_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_4095", HFILL }},
+    { &hf_lpp_carrierFreqOffsetNB_Neighbour_r14,
+      { "carrierFreqOffsetNB-Neighbour-r14", "lpp.carrierFreqOffsetNB_Neighbour_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_CarrierFreqOffsetNB_r14_vals), 0,
+        "CarrierFreqOffsetNB_r14", HFILL }},
+    { &hf_lpp_AdditionalPathList_r14_item,
+      { "AdditionalPath-r14", "lpp.AdditionalPath_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_systemFrameNumber_r14,
+      { "systemFrameNumber-r14", "lpp.systemFrameNumber_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_10", HFILL }},
+    { &hf_lpp_physCellIdRef_r14,
+      { "physCellIdRef-r14", "lpp.physCellIdRef_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_503", HFILL }},
+    { &hf_lpp_cellGlobalIdRef_r14,
+      { "cellGlobalIdRef-r14", "lpp.cellGlobalIdRef_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ECGI", HFILL }},
+    { &hf_lpp_earfcnRef_r14,
+      { "earfcnRef-r14", "lpp.earfcnRef_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ARFCN_ValueEUTRA_r14", HFILL }},
+    { &hf_lpp_referenceQuality_r14,
+      { "referenceQuality-r14", "lpp.referenceQuality_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "OTDOA_MeasQuality", HFILL }},
+    { &hf_lpp_neighbourMeasurementList_r14,
+      { "neighbourMeasurementList-r14", "lpp.neighbourMeasurementList_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "NeighbourMeasurementList_NB_r14", HFILL }},
+    { &hf_lpp_NeighbourMeasurementList_NB_r14_item,
+      { "NeighbourMeasurementElement-NB-r14", "lpp.NeighbourMeasurementElement_NB_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_physCellIdNeighbour_r14,
+      { "physCellIdNeighbour-r14", "lpp.physCellIdNeighbour_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_503", HFILL }},
+    { &hf_lpp_cellGlobalIdNeighbour_r14,
+      { "cellGlobalIdNeighbour-r14", "lpp.cellGlobalIdNeighbour_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ECGI", HFILL }},
+    { &hf_lpp_earfcnNeighbour_r14,
+      { "earfcnNeighbour-r14", "lpp.earfcnNeighbour_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ARFCN_ValueEUTRA_r14", HFILL }},
+    { &hf_lpp_rstd_r14,
+      { "rstd-r14", "lpp.rstd_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_12711", HFILL }},
+    { &hf_lpp_rstd_Quality_r14,
+      { "rstd-Quality-r14", "lpp.rstd_Quality_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "OTDOA_MeasQuality", HFILL }},
     { &hf_lpp_error_Resolution,
       { "error-Resolution", "lpp.error_Resolution",
         FT_UINT8, BASE_DEC, VALS(lpp_error_Resolution_vals), 0,
@@ -13480,10 +16722,26 @@ void proto_register_lpp(void) {
       { "error-NumSamples", "lpp.error_NumSamples",
         FT_UINT8, BASE_DEC, VALS(lpp_error_NumSamples_vals), 0,
         NULL, HFILL }},
+    { &hf_lpp_relativeTimeDifference_r14,
+      { "relativeTimeDifference-r14", "lpp.relativeTimeDifference_r14",
+        FT_INT32, BASE_CUSTOM, CF_FUNC(lpp_relativeTimeDifference_fmt), 0,
+        "INTEGER_M256_255", HFILL }},
+    { &hf_lpp_path_Quality_r14,
+      { "path-Quality-r14", "lpp.path_Quality_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "OTDOA_MeasQuality", HFILL }},
     { &hf_lpp_assistanceAvailability,
       { "assistanceAvailability", "lpp.assistanceAvailability",
         FT_BOOLEAN, BASE_NONE, NULL, 0,
         "BOOLEAN", HFILL }},
+    { &hf_lpp_multipathRSTD_r14,
+      { "multipathRSTD-r14", "lpp.multipathRSTD_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_multipathRSTD_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_maxNoOfRSTDmeas_r14,
+      { "maxNoOfRSTDmeas-r14", "lpp.maxNoOfRSTDmeas_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_1_32", HFILL }},
     { &hf_lpp_otdoa_Mode,
       { "otdoa-Mode", "lpp.otdoa_Mode",
         FT_BYTES, BASE_NONE, NULL, 0,
@@ -13512,6 +16770,58 @@ void proto_register_lpp(void) {
       { "additionalNeighbourCellInfoList-r10", "lpp.additionalNeighbourCellInfoList_r10",
         FT_UINT32, BASE_DEC, VALS(lpp_T_additionalNeighbourCellInfoList_r10_vals), 0,
         "T_additionalNeighbourCellInfoList_r10", HFILL }},
+    { &hf_lpp_prs_id_r14,
+      { "prs-id-r14", "lpp.prs_id_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_prs_id_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_tp_separation_via_muting_r14,
+      { "tp-separation-via-muting-r14", "lpp.tp_separation_via_muting_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_tp_separation_via_muting_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_additional_prs_config_r14,
+      { "additional-prs-config-r14", "lpp.additional_prs_config_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_additional_prs_config_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_prs_based_tbs_r14,
+      { "prs-based-tbs-r14", "lpp.prs_based_tbs_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_prs_based_tbs_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_additionalPathsReport_r14,
+      { "additionalPathsReport-r14", "lpp.additionalPathsReport_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_additionalPathsReport_r14_vals), 0,
+        "T_additionalPathsReport_r14", HFILL }},
+    { &hf_lpp_densePrsConfig_r14,
+      { "densePrsConfig-r14", "lpp.densePrsConfig_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_densePrsConfig_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_maxSupportedPrsBandwidth_r14,
+      { "maxSupportedPrsBandwidth-r14", "lpp.maxSupportedPrsBandwidth_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_maxSupportedPrsBandwidth_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_prsOccGroup_r14,
+      { "prsOccGroup-r14", "lpp.prsOccGroup_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_prsOccGroup_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_prsFrequencyHopping_r14,
+      { "prsFrequencyHopping-r14", "lpp.prsFrequencyHopping_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_prsFrequencyHopping_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_maxSupportedPrsConfigs_r14,
+      { "maxSupportedPrsConfigs-r14", "lpp.maxSupportedPrsConfigs_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_maxSupportedPrsConfigs_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_periodicalReporting_r14,
+      { "periodicalReporting-r14", "lpp.periodicalReporting_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_periodicalReporting_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_multiPrbNprs_r14,
+      { "multiPrbNprs-r14", "lpp.multiPrbNprs_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_multiPrbNprs_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_idleStateForMeasurements_r14,
+      { "idleStateForMeasurements-r14", "lpp.idleStateForMeasurements_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_idleStateForMeasurements_r14_vals), 0,
+        NULL, HFILL }},
     { &hf_lpp_bandEUTRA,
       { "bandEUTRA", "lpp.bandEUTRA",
         FT_UINT32, BASE_DEC, NULL, 0,
@@ -13764,6 +17074,22 @@ void proto_register_lpp(void) {
       { "cellGlobalIdGERAN", "lpp.cellGlobalIdGERAN_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_lpp_nBIoT_r14,
+      { "nBIoT-r14", "lpp.nBIoT_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "T_nBIoT_r14", HFILL }},
+    { &hf_lpp_nbPhysCellId_r14,
+      { "nbPhysCellId-r14", "lpp.nbPhysCellId_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_503", HFILL }},
+    { &hf_lpp_nbCellGlobalId_r14,
+      { "nbCellGlobalId-r14", "lpp.nbCellGlobalId_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ECGI", HFILL }},
+    { &hf_lpp_nbCarrierFreq_r14,
+      { "nbCarrierFreq-r14", "lpp.nbCarrierFreq_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "CarrierFreq_NB_r14", HFILL }},
     { &hf_lpp_threeDlocation,
       { "threeDlocation", "lpp.threeDlocation_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -15580,6 +18906,14 @@ void proto_register_lpp(void) {
       { "deltaGNSS-TOD", "lpp.deltaGNSS_TOD",
         FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &units_milliseconds, 0,
         "INTEGER_0_127", HFILL }},
+    { &hf_lpp_nbIoT_r14,
+      { "nbIoT-r14", "lpp.nbIoT_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "T_nbIoT_r14", HFILL }},
+    { &hf_lpp_sfn_r14,
+      { "sfn-r14", "lpp.sfn_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_10", HFILL }},
     { &hf_lpp_GNSS_MeasurementList_item,
       { "GNSS-MeasurementForOneGNSS", "lpp.GNSS_MeasurementForOneGNSS_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -15668,6 +19002,14 @@ void proto_register_lpp(void) {
       { "assistanceDataSupportList", "lpp.assistanceDataSupportList_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_lpp_periodicalReportingNotSupported_r14,
+      { "periodicalReportingNotSupported-r14", "lpp.periodicalReportingNotSupported_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "PositioningModes", HFILL }},
+    { &hf_lpp_idleStateForMeasurements_r14_01,
+      { "idleStateForMeasurements-r14", "lpp.idleStateForMeasurements_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_idleStateForMeasurements_r14_01_vals), 0,
+        "T_idleStateForMeasurements_r14_01", HFILL }},
     { &hf_lpp_GNSS_SupportList_item,
       { "GNSS-SupportElement", "lpp.GNSS_SupportElement_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -15928,6 +19270,18 @@ void proto_register_lpp(void) {
       { "arfcnEUTRA-v9a0", "lpp.arfcnEUTRA_v9a0",
         FT_UINT32, BASE_DEC, NULL, 0,
         "ARFCN_ValueEUTRA_v9a0", HFILL }},
+    { &hf_lpp_nrsrp_Result_r14,
+      { "nrsrp-Result-r14", "lpp.nrsrp_Result_r14",
+        FT_UINT32, BASE_CUSTOM, CF_FUNC(lpp_nrsrp_Result_fmt), 0,
+        "INTEGER_0_113", HFILL }},
+    { &hf_lpp_nrsrq_Result_r14,
+      { "nrsrq-Result-r14", "lpp.nrsrq_Result_r14",
+        FT_UINT32, BASE_CUSTOM, CF_FUNC(lpp_nrsrq_Result_fmt), 0,
+        "INTEGER_0_74", HFILL }},
+    { &hf_lpp_carrierFreqOffsetNB_r14,
+      { "carrierFreqOffsetNB-r14", "lpp.carrierFreqOffsetNB_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_CarrierFreqOffsetNB_r14_vals), 0,
+        NULL, HFILL }},
     { &hf_lpp_requestedMeasurements,
       { "requestedMeasurements", "lpp.requestedMeasurements",
         FT_BYTES, BASE_NONE, NULL, 0,
@@ -15940,6 +19294,18 @@ void proto_register_lpp(void) {
       { "ueRxTxSupTDD-r13", "lpp.ueRxTxSupTDD_r13",
         FT_UINT32, BASE_DEC, VALS(lpp_T_ueRxTxSupTDD_r13_vals), 0,
         NULL, HFILL }},
+    { &hf_lpp_periodicalReporting_r14_01,
+      { "periodicalReporting-r14", "lpp.periodicalReporting_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_periodicalReporting_r14_01_vals), 0,
+        "T_periodicalReporting_r14_01", HFILL }},
+    { &hf_lpp_triggeredReporting_r14,
+      { "triggeredReporting-r14", "lpp.triggeredReporting_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_triggeredReporting_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_idleStateForMeasurements_r14_02,
+      { "idleStateForMeasurements-r14", "lpp.idleStateForMeasurements_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_idleStateForMeasurements_r14_02_vals), 0,
+        "T_idleStateForMeasurements_r14_02", HFILL }},
     { &hf_lpp_locationServerErrorCauses_02,
       { "locationServerErrorCauses", "lpp.locationServerErrorCauses_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -15968,6 +19334,14 @@ void proto_register_lpp(void) {
       { "ueRxTxMeasurementNotPossible", "lpp.ueRxTxMeasurementNotPossible_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_lpp_nrsrpMeasurementNotPossible_r14,
+      { "nrsrpMeasurementNotPossible-r14", "lpp.nrsrpMeasurementNotPossible_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_nrsrqMeasurementNotPossible_r14,
+      { "nrsrqMeasurementNotPossible-r14", "lpp.nrsrqMeasurementNotPossible_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_lpp_tbs_MeasurementInformation_r13,
       { "tbs-MeasurementInformation-r13", "lpp.tbs_MeasurementInformation_r13_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -16000,14 +19374,50 @@ void proto_register_lpp(void) {
       { "codePhaseRMSError-r13", "lpp.codePhaseRMSError_r13",
         FT_UINT32, BASE_CUSTOM, CF_FUNC(lpp_codePhaseRMSError_fmt), 0,
         "INTEGER_0_63", HFILL }},
+    { &hf_lpp_rssi_r14,
+      { "rssi-r14", "lpp.rssi_r14",
+        FT_INT32, BASE_DEC|BASE_UNIT_STRING, &units_dbm, 0,
+        "INTEGER_M130_M30", HFILL }},
     { &hf_lpp_mbsSgnMeasListReq_r13,
       { "mbsSgnMeasListReq-r13", "lpp.mbsSgnMeasListReq_r13",
         FT_BOOLEAN, BASE_NONE, NULL, 0,
         "BOOLEAN", HFILL }},
+    { &hf_lpp_mbsAssistanceAvailability_r14,
+      { "mbsAssistanceAvailability-r14", "lpp.mbsAssistanceAvailability_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_mbsRequestedMeasurements_r14,
+      { "mbsRequestedMeasurements-r14", "lpp.mbsRequestedMeasurements_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_lpp_tbs_Modes_r13,
       { "tbs-Modes-r13", "lpp.tbs_Modes_r13",
         FT_BYTES, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_lpp_mbs_AssistanceDataSupportList_r14,
+      { "mbs-AssistanceDataSupportList-r14", "lpp.mbs_AssistanceDataSupportList_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_periodicalReportingSupported_r14,
+      { "periodicalReportingSupported-r14", "lpp.periodicalReportingSupported_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "PositioningModes", HFILL }},
+    { &hf_lpp_mbs_ConfigSupport_r14,
+      { "mbs-ConfigSupport-r14", "lpp.mbs_ConfigSupport_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "T_mbs_ConfigSupport_r14", HFILL }},
+    { &hf_lpp_mbs_IdleStateForMeasurements_r14,
+      { "mbs-IdleStateForMeasurements-r14", "lpp.mbs_IdleStateForMeasurements_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_mbs_IdleStateForMeasurements_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_mbs_AcquisitionAssistanceDataSupport_r14,
+      { "mbs-AcquisitionAssistanceDataSupport-r14", "lpp.mbs_AcquisitionAssistanceDataSupport_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_mbs_AlmanacAssistanceDataSupport_r14,
+      { "mbs-AlmanacAssistanceDataSupport-r14", "lpp.mbs_AlmanacAssistanceDataSupport_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
     { &hf_lpp_locationServerErrorCauses_r13,
       { "locationServerErrorCauses-r13", "lpp.locationServerErrorCauses_r13_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -16024,6 +19434,70 @@ void proto_register_lpp(void) {
       { "cause-r13", "lpp.cause_r13",
         FT_UINT32, BASE_DEC, VALS(lpp_T_cause_r13_01_vals), 0,
         "T_cause_r13_01", HFILL }},
+    { &hf_lpp_tbs_AssistanceDataList_r14,
+      { "tbs-AssistanceDataList-r14", "lpp.tbs_AssistanceDataList_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_tbs_Error_r14,
+      { "tbs-Error-r14", "lpp.tbs_Error_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_TBS_Error_r13_vals), 0,
+        "TBS_Error_r13", HFILL }},
+    { &hf_lpp_mbs_AssistanceDataList_r14,
+      { "mbs-AssistanceDataList-r14", "lpp.mbs_AssistanceDataList_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_MBS_AssistanceDataList_r14_item,
+      { "MBS-AssistanceDataElement-r14", "lpp.MBS_AssistanceDataElement_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_mbs_AlmanacAssistance_r14,
+      { "mbs-AlmanacAssistance-r14", "lpp.mbs_AlmanacAssistance_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_mbs_AcquisitionAssistance_r14,
+      { "mbs-AcquisitionAssistance-r14", "lpp.mbs_AcquisitionAssistance_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_transmitterID_r14,
+      { "transmitterID-r14", "lpp.transmitterID_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_0_32767", HFILL }},
+    { &hf_lpp_transmitterLatitude_r14,
+      { "transmitterLatitude-r14", "lpp.transmitterLatitude_r14",
+        FT_UINT32, BASE_CUSTOM, CF_FUNC(lpp_transmitterLatitude_fmt), 0,
+        NULL, HFILL }},
+    { &hf_lpp_transmitterLongitude_r14,
+      { "transmitterLongitude-r14", "lpp.transmitterLongitude_r14",
+        FT_UINT32, BASE_CUSTOM, CF_FUNC(lpp_transmitterLongitude_fmt), 0,
+        NULL, HFILL }},
+    { &hf_lpp_transmitterAltitude_r14,
+      { "transmitterAltitude-r14", "lpp.transmitterAltitude_r14",
+        FT_UINT16, BASE_CUSTOM, CF_FUNC(lpp_transmitterAltitude_fmt), 0,
+        NULL, HFILL }},
+    { &hf_lpp_timeCorrection_r14,
+      { "timeCorrection-r14", "lpp.timeCorrection_r14",
+        FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &units_nanoseconds, 0,
+        "INTEGER_0_25", HFILL }},
+    { &hf_lpp_mbsConfiguration_r14,
+      { "mbsConfiguration-r14", "lpp.mbsConfiguration_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_mbsConfiguration_r14_vals), 0,
+        NULL, HFILL }},
+    { &hf_lpp_pnCodeIndex_r14,
+      { "pnCodeIndex-r14", "lpp.pnCodeIndex_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "INTEGER_1_128", HFILL }},
+    { &hf_lpp_freq_r14,
+      { "freq-r14", "lpp.freq_r14",
+        FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &units_hz, 0,
+        "INTEGER_919750000_927250000", HFILL }},
+    { &hf_lpp_mbs_AlmanacAssistanceDataReq_r14,
+      { "mbs-AlmanacAssistanceDataReq-r14", "lpp.mbs_AlmanacAssistanceDataReq_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_mbs_AcquisitionAssistanceDataReq_r14,
+      { "mbs-AcquisitionAssistanceDataReq-r14", "lpp.mbs_AcquisitionAssistanceDataReq_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
     { &hf_lpp_sensor_MeasurementInformation_r13,
       { "sensor-MeasurementInformation-r13", "lpp.sensor_MeasurementInformation_r13_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -16036,14 +19510,38 @@ void proto_register_lpp(void) {
       { "uncompensatedBarometricPressure-r13", "lpp.uncompensatedBarometricPressure_r13",
         FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &units_pa, 0,
         "INTEGER_30000_115000", HFILL }},
+    { &hf_lpp_uncertainty_r14,
+      { "uncertainty-r14", "lpp.uncertainty_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_range_r14,
+      { "range-r14", "lpp.range_r14",
+        FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &units_pa, 0,
+        "INTEGER_0_1000", HFILL }},
+    { &hf_lpp_confidence_r14,
+      { "confidence-r14", "lpp.confidence_r14",
+        FT_UINT32, BASE_CUSTOM, CF_FUNC(lpp_confidence_fmt), 0,
+        "INTEGER_1_100", HFILL }},
     { &hf_lpp_uncompensatedBarometricPressureReq_r13,
       { "uncompensatedBarometricPressureReq-r13", "lpp.uncompensatedBarometricPressureReq_r13",
         FT_BOOLEAN, BASE_NONE, NULL, 0,
         "BOOLEAN", HFILL }},
+    { &hf_lpp_assistanceAvailability_r14,
+      { "assistanceAvailability-r14", "lpp.assistanceAvailability_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
     { &hf_lpp_sensor_Modes_r13,
       { "sensor-Modes-r13", "lpp.sensor_Modes_r13",
         FT_BYTES, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_lpp_sensor_AssistanceDataSupportList_r14,
+      { "sensor-AssistanceDataSupportList-r14", "lpp.sensor_AssistanceDataSupportList_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_idleStateForMeasurements_r14_03,
+      { "idleStateForMeasurements-r14", "lpp.idleStateForMeasurements_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_idleStateForMeasurements_r14_03_vals), 0,
+        "T_idleStateForMeasurements_r14_03", HFILL }},
     { &hf_lpp_locationServerErrorCauses_r13_01,
       { "locationServerErrorCauses-r13", "lpp.locationServerErrorCauses_r13_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -16060,6 +19558,26 @@ void proto_register_lpp(void) {
       { "cause-r13", "lpp.cause_r13",
         FT_UINT32, BASE_DEC, VALS(lpp_T_cause_r13_03_vals), 0,
         "T_cause_r13_03", HFILL }},
+    { &hf_lpp_sensor_AssistanceDataList_r14,
+      { "sensor-AssistanceDataList-r14", "lpp.sensor_AssistanceDataList_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_sensor_Error_r14,
+      { "sensor-Error-r14", "lpp.sensor_Error_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_Sensor_Error_r13_vals), 0,
+        "Sensor_Error_r13", HFILL }},
+    { &hf_lpp_refPressure_r14,
+      { "refPressure-r14", "lpp.refPressure_r14",
+        FT_INT32, BASE_CUSTOM, CF_FUNC(lpp_refPressure_fmt), 0,
+        "INTEGER_M20000_10000", HFILL }},
+    { &hf_lpp_refPosition_r14,
+      { "refPosition-r14", "lpp.refPosition_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "EllipsoidPointWithAltitudeAndUncertaintyEllipsoid", HFILL }},
+    { &hf_lpp_refTemperature_r14,
+      { "refTemperature-r14", "lpp.refTemperature_r14",
+        FT_INT32, BASE_CUSTOM, CF_FUNC(lpp_refTemperature_fmt), 0,
+        "INTEGER_M64_63", HFILL }},
     { &hf_lpp_wlan_MeasurementInformation_r13,
       { "wlan-MeasurementInformation-r13", "lpp.wlan_MeasurementInformation_r13_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -16128,6 +19646,14 @@ void proto_register_lpp(void) {
       { "wlan-MeasSupported-r13", "lpp.wlan_MeasSupported_r13",
         FT_BYTES, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_lpp_wlan_AP_AD_Supported_r14,
+      { "wlan-AP-AD-Supported-r14", "lpp.wlan_AP_AD_Supported_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_idleStateForMeasurements_r14_04,
+      { "idleStateForMeasurements-r14", "lpp.idleStateForMeasurements_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_idleStateForMeasurements_r14_04_vals), 0,
+        "T_idleStateForMeasurements_r14_04", HFILL }},
     { &hf_lpp_locationServerErrorCauses_r13_02,
       { "locationServerErrorCauses-r13", "lpp.locationServerErrorCauses_r13_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -16140,6 +19666,10 @@ void proto_register_lpp(void) {
       { "cause-r13", "lpp.cause_r13",
         FT_UINT32, BASE_DEC, VALS(lpp_T_cause_r13_04_vals), 0,
         "T_cause_r13_04", HFILL }},
+    { &hf_lpp_apLocationDataUnavailable_r14,
+      { "apLocationDataUnavailable-r14", "lpp.apLocationDataUnavailable_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_lpp_cause_r13_05,
       { "cause-r13", "lpp.cause_r13",
         FT_UINT32, BASE_DEC, VALS(lpp_T_cause_r13_05_vals), 0,
@@ -16152,6 +19682,214 @@ void proto_register_lpp(void) {
       { "wlan-AP-RTT-MeasurementNotPossible-r13", "lpp.wlan_AP_RTT_MeasurementNotPossible_r13_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_lpp_wlan_DataSet_r14,
+      { "wlan-DataSet-r14", "lpp.wlan_DataSet_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "SEQUENCE_SIZE_1_maxWLAN_DataSets_r14_OF_WLAN_DataSet_r14", HFILL }},
+    { &hf_lpp_wlan_DataSet_r14_item,
+      { "WLAN-DataSet-r14", "lpp.WLAN_DataSet_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_wlan_Error_r14,
+      { "wlan-Error-r14", "lpp.wlan_Error_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_WLAN_Error_r13_vals), 0,
+        "WLAN_Error_r13", HFILL }},
+    { &hf_lpp_wlan_AP_List_r14,
+      { "wlan-AP-List-r14", "lpp.wlan_AP_List_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "SEQUENCE_SIZE_1_maxWLAN_AP_r14_OF_WLAN_AP_Data_r14", HFILL }},
+    { &hf_lpp_wlan_AP_List_r14_item,
+      { "WLAN-AP-Data-r14", "lpp.WLAN_AP_Data_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_supportedChannels_11a_r14,
+      { "supportedChannels-11a-r14", "lpp.supportedChannels_11a_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_supportedChannels_11bg_r14,
+      { "supportedChannels-11bg-r14", "lpp.supportedChannels_11bg_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_ch34_r14,
+      { "ch34-r14", "lpp.ch34_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch36_r14,
+      { "ch36-r14", "lpp.ch36_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch38_r14,
+      { "ch38-r14", "lpp.ch38_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch40_r14,
+      { "ch40-r14", "lpp.ch40_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch42_r14,
+      { "ch42-r14", "lpp.ch42_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch44_r14,
+      { "ch44-r14", "lpp.ch44_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch46_r14,
+      { "ch46-r14", "lpp.ch46_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch48_r14,
+      { "ch48-r14", "lpp.ch48_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch52_r14,
+      { "ch52-r14", "lpp.ch52_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch56_r14,
+      { "ch56-r14", "lpp.ch56_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch60_r14,
+      { "ch60-r14", "lpp.ch60_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch64_r14,
+      { "ch64-r14", "lpp.ch64_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch149_r14,
+      { "ch149-r14", "lpp.ch149_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch153_r14,
+      { "ch153-r14", "lpp.ch153_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch157_r14,
+      { "ch157-r14", "lpp.ch157_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch161_r14,
+      { "ch161-r14", "lpp.ch161_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch1_r14,
+      { "ch1-r14", "lpp.ch1_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch2_r14,
+      { "ch2-r14", "lpp.ch2_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch3_r14,
+      { "ch3-r14", "lpp.ch3_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch4_r14,
+      { "ch4-r14", "lpp.ch4_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch5_r14,
+      { "ch5-r14", "lpp.ch5_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch6_r14,
+      { "ch6-r14", "lpp.ch6_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch7_r14,
+      { "ch7-r14", "lpp.ch7_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch8_r14,
+      { "ch8-r14", "lpp.ch8_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch9_r14,
+      { "ch9-r14", "lpp.ch9_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch10_r14,
+      { "ch10-r14", "lpp.ch10_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch11_r14,
+      { "ch11-r14", "lpp.ch11_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch12_r14,
+      { "ch12-r14", "lpp.ch12_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch13_r14,
+      { "ch13-r14", "lpp.ch13_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_ch14_r14,
+      { "ch14-r14", "lpp.ch14_r14",
+        FT_BOOLEAN, BASE_NONE, NULL, 0,
+        "BOOLEAN", HFILL }},
+    { &hf_lpp_wlan_AP_Identifier_r14,
+      { "wlan-AP-Identifier-r14", "lpp.wlan_AP_Identifier_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "WLAN_AP_Identifier_r13", HFILL }},
+    { &hf_lpp_wlan_AP_Location_r14,
+      { "wlan-AP-Location-r14", "lpp.wlan_AP_Location_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_locationDataLCI_r14,
+      { "locationDataLCI-r14", "lpp.locationDataLCI_r14_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_latitudeUncertainty_r14,
+      { "latitudeUncertainty-r14", "lpp.latitudeUncertainty_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_6", HFILL }},
+    { &hf_lpp_latitude_r14,
+      { "latitude-r14", "lpp.latitude_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_34", HFILL }},
+    { &hf_lpp_longitudeUncertainty_r14,
+      { "longitudeUncertainty-r14", "lpp.longitudeUncertainty_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_6", HFILL }},
+    { &hf_lpp_longitude_r14,
+      { "longitude-r14", "lpp.longitude_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_34", HFILL }},
+    { &hf_lpp_altitudeUncertainty_r14,
+      { "altitudeUncertainty-r14", "lpp.altitudeUncertainty_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_6", HFILL }},
+    { &hf_lpp_altitude_r14,
+      { "altitude-r14", "lpp.altitude_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_30", HFILL }},
+    { &hf_lpp_datum_r14,
+      { "datum-r14", "lpp.datum_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "BIT_STRING_SIZE_8", HFILL }},
+    { &hf_lpp_requestedAD_r14,
+      { "requestedAD-r14", "lpp.requestedAD_r14",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_visibleAPs_r14,
+      { "visibleAPs-r14", "lpp.visibleAPs_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "SEQUENCE_SIZE_1_maxVisibleAPs_r14_OF_WLAN_AP_Identifier_r13", HFILL }},
+    { &hf_lpp_visibleAPs_r14_item,
+      { "WLAN-AP-Identifier-r13", "lpp.WLAN_AP_Identifier_r13_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_lpp_wlan_AP_StoredData_r14,
+      { "wlan-AP-StoredData-r14", "lpp.wlan_AP_StoredData_r14",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "SEQUENCE_SIZE_1_maxKnownAPs_r14_OF_WLAN_AP_Identifier_r13", HFILL }},
+    { &hf_lpp_wlan_AP_StoredData_r14_item,
+      { "WLAN-AP-Identifier-r13", "lpp.WLAN_AP_Identifier_r13_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_lpp_bt_MeasurementInformation_r13,
       { "bt-MeasurementInformation-r13", "lpp.bt_MeasurementInformation_r13_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -16188,6 +19926,10 @@ void proto_register_lpp(void) {
       { "bt-MeasSupported-r13", "lpp.bt_MeasSupported_r13",
         FT_BYTES, BASE_NONE, NULL, 0,
         "T_bt_MeasSupported_r13", HFILL }},
+    { &hf_lpp_idleStateForMeasurements_r14_05,
+      { "idleStateForMeasurements-r14", "lpp.idleStateForMeasurements_r14",
+        FT_UINT32, BASE_DEC, VALS(lpp_T_idleStateForMeasurements_r14_05_vals), 0,
+        "T_idleStateForMeasurements_r14_05", HFILL }},
     { &hf_lpp_locationServerErrorCauses_r13_03,
       { "locationServerErrorCauses-r13", "lpp.locationServerErrorCauses_r13_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -16220,6 +19962,10 @@ void proto_register_lpp(void) {
       { "gsm", "lpp.gsm",
         FT_BOOLEAN, 8, NULL, 0x20,
         NULL, HFILL }},
+    { &hf_lpp_T_accessTypes_nb_iot,
+      { "nb-iot", "lpp.nb-iot",
+        FT_BOOLEAN, 8, NULL, 0x10,
+        NULL, HFILL }},
     { &hf_lpp_T_posModes_standalone,
       { "standalone", "lpp.standalone",
         FT_BOOLEAN, 8, NULL, 0x80,
@@ -16252,10 +19998,22 @@ void proto_register_lpp(void) {
       { "sensor", "lpp.sensor",
         FT_BOOLEAN, 8, NULL, 0x08,
         NULL, HFILL }},
+    { &hf_lpp_T_adType_r14_prs,
+      { "prs", "lpp.prs",
+        FT_BOOLEAN, 8, NULL, 0x80,
+        NULL, HFILL }},
+    { &hf_lpp_T_adType_r14_nprs,
+      { "nprs", "lpp.nprs",
+        FT_BOOLEAN, 8, NULL, 0x40,
+        NULL, HFILL }},
     { &hf_lpp_T_otdoa_Mode_ue_assisted,
       { "ue-assisted", "lpp.ue-assisted",
         FT_BOOLEAN, 8, NULL, 0x80,
         NULL, HFILL }},
+    { &hf_lpp_T_otdoa_Mode_ue_assisted_NB_r14,
+      { "ue-assisted-NB-r14", "lpp.ue-assisted-NB-r14",
+        FT_BOOLEAN, 8, NULL, 0x40,
+        NULL, HFILL }},
     { &hf_lpp_T_ionoModel_klobuchar,
       { "klobuchar", "lpp.klobuchar",
         FT_BOOLEAN, 8, NULL, 0x80,
@@ -16412,6 +20170,14 @@ void proto_register_lpp(void) {
       { "ueRxTxReq", "lpp.ueRxTxReq",
         FT_BOOLEAN, 8, NULL, 0x20,
         NULL, HFILL }},
+    { &hf_lpp_T_requestedMeasurements_nrsrpReq_r14,
+      { "nrsrpReq-r14", "lpp.nrsrpReq-r14",
+        FT_BOOLEAN, 8, NULL, 0x10,
+        NULL, HFILL }},
+    { &hf_lpp_T_requestedMeasurements_nrsrqReq_r14,
+      { "nrsrqReq-r14", "lpp.nrsrqReq-r14",
+        FT_BOOLEAN, 8, NULL, 0x08,
+        NULL, HFILL }},
     { &hf_lpp_T_ecid_MeasSupported_rsrpSup,
       { "rsrpSup", "lpp.rsrpSup",
         FT_BOOLEAN, 8, NULL, 0x80,
@@ -16424,6 +20190,18 @@ void proto_register_lpp(void) {
       { "ueRxTxSup", "lpp.ueRxTxSup",
         FT_BOOLEAN, 8, NULL, 0x20,
         NULL, HFILL }},
+    { &hf_lpp_T_ecid_MeasSupported_nrsrpSup_r14,
+      { "nrsrpSup-r14", "lpp.nrsrpSup-r14",
+        FT_BOOLEAN, 8, NULL, 0x10,
+        NULL, HFILL }},
+    { &hf_lpp_T_ecid_MeasSupported_nrsrqSup_r14,
+      { "nrsrqSup-r14", "lpp.nrsrqSup-r14",
+        FT_BOOLEAN, 8, NULL, 0x08,
+        NULL, HFILL }},
+    { &hf_lpp_T_mbsRequestedMeasurements_r14_rssi,
+      { "rssi", "lpp.rssi",
+        FT_BOOLEAN, 8, NULL, 0x80,
+        NULL, HFILL }},
     { &hf_lpp_T_tbs_Modes_r13_standalone,
       { "standalone", "lpp.standalone",
         FT_BOOLEAN, 8, NULL, 0x80,
@@ -16432,6 +20210,26 @@ void proto_register_lpp(void) {
       { "ue-assisted", "lpp.ue-assisted",
         FT_BOOLEAN, 8, NULL, 0x40,
         NULL, HFILL }},
+    { &hf_lpp_T_tbs_Modes_r13_ue_based,
+      { "ue-based", "lpp.ue-based",
+        FT_BOOLEAN, 8, NULL, 0x20,
+        NULL, HFILL }},
+    { &hf_lpp_T_mbs_ConfigSupport_r14_tb1,
+      { "tb1", "lpp.tb1",
+        FT_BOOLEAN, 8, NULL, 0x80,
+        NULL, HFILL }},
+    { &hf_lpp_T_mbs_ConfigSupport_r14_tb2,
+      { "tb2", "lpp.tb2",
+        FT_BOOLEAN, 8, NULL, 0x40,
+        NULL, HFILL }},
+    { &hf_lpp_T_mbs_ConfigSupport_r14_tb3,
+      { "tb3", "lpp.tb3",
+        FT_BOOLEAN, 8, NULL, 0x20,
+        NULL, HFILL }},
+    { &hf_lpp_T_mbs_ConfigSupport_r14_tb4,
+      { "tb4", "lpp.tb4",
+        FT_BOOLEAN, 8, NULL, 0x10,
+        NULL, HFILL }},
     { &hf_lpp_T_sensor_Modes_r13_standalone,
       { "standalone", "lpp.standalone",
         FT_BOOLEAN, 8, NULL, 0x80,
@@ -16440,6 +20238,10 @@ void proto_register_lpp(void) {
       { "ue-assisted", "lpp.ue-assisted",
         FT_BOOLEAN, 8, NULL, 0x40,
         NULL, HFILL }},
+    { &hf_lpp_T_sensor_Modes_r13_ue_based,
+      { "ue-based", "lpp.ue-based",
+        FT_BOOLEAN, 8, NULL, 0x20,
+        NULL, HFILL }},
     { &hf_lpp_T_requestedMeasurements_r13_rssi,
       { "rssi", "lpp.rssi",
         FT_BOOLEAN, 8, NULL, 0x80,
@@ -16456,6 +20258,10 @@ void proto_register_lpp(void) {
       { "ue-assisted", "lpp.ue-assisted",
         FT_BOOLEAN, 8, NULL, 0x40,
         NULL, HFILL }},
+    { &hf_lpp_T_wlan_Modes_r13_ue_based,
+      { "ue-based", "lpp.ue-based",
+        FT_BOOLEAN, 8, NULL, 0x20,
+        NULL, HFILL }},
     { &hf_lpp_T_wlan_MeasSupported_r13_rssi_r13,
       { "rssi-r13", "lpp.rssi-r13",
         FT_BOOLEAN, 8, NULL, 0x80,
@@ -16464,6 +20270,22 @@ void proto_register_lpp(void) {
       { "rtt-r13", "lpp.rtt-r13",
         FT_BOOLEAN, 8, NULL, 0x40,
         NULL, HFILL }},
+    { &hf_lpp_T_wlan_AP_AD_Supported_r14_ap_identifier,
+      { "ap-identifier", "lpp.ap-identifier",
+        FT_BOOLEAN, 8, NULL, 0x80,
+        NULL, HFILL }},
+    { &hf_lpp_T_wlan_AP_AD_Supported_r14_ap_location,
+      { "ap-location", "lpp.ap-location",
+        FT_BOOLEAN, 8, NULL, 0x40,
+        NULL, HFILL }},
+    { &hf_lpp_T_requestedAD_r14_ap_identifier,
+      { "ap-identifier", "lpp.ap-identifier",
+        FT_BOOLEAN, 8, NULL, 0x80,
+        NULL, HFILL }},
+    { &hf_lpp_T_requestedAD_r14_ap_location,
+      { "ap-location", "lpp.ap-location",
+        FT_BOOLEAN, 8, NULL, 0x40,
+        NULL, HFILL }},
     { &hf_lpp_T_requestedMeasurements_r13_01_rssi,
       { "rssi", "lpp.rssi",
         FT_BOOLEAN, 8, NULL, 0x80,
@@ -16482,7 +20304,7 @@ void proto_register_lpp(void) {
         NULL, HFILL }},
 
 /*--- End of included file: packet-lpp-hfarr.c ---*/
-#line 1660 "./asn1/lpp/packet-lpp-template.c"
+#line 1744 "./asn1/lpp/packet-lpp-template.c"
     { &hf_lpp_svHealthExt_v1240_e5bhs,
       { "E5b Signal Health Status", "lpp.svHealthExt_v1240.e5bhs",
         FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
@@ -16578,6 +20400,7 @@ void proto_register_lpp(void) {
     &ett_lpp_Error_r9_IEs,
     &ett_lpp_AccessTypes,
     &ett_lpp_T_accessTypes,
+    &ett_lpp_CarrierFreq_NB_r14,
     &ett_lpp_CellGlobalIdEUTRA_AndUTRA,
     &ett_lpp_T_plmn_Identity,
     &ett_lpp_T_mcc,
@@ -16620,6 +20443,8 @@ void proto_register_lpp(void) {
     &ett_lpp_HorizontalAccuracy,
     &ett_lpp_VerticalAccuracy,
     &ett_lpp_ResponseTime,
+    &ett_lpp_ResponseTimeNB_r14,
+    &ett_lpp_MessageSizeLimitNB_r14,
     &ett_lpp_CommonIEsProvideLocationInformation,
     &ett_lpp_LocationCoordinates,
     &ett_lpp_Velocity,
@@ -16629,17 +20454,38 @@ void proto_register_lpp(void) {
     &ett_lpp_CommonIEsError,
     &ett_lpp_OTDOA_ProvideAssistanceData,
     &ett_lpp_OTDOA_ReferenceCellInfo,
+    &ett_lpp_SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_PRS_Info,
     &ett_lpp_PRS_Info,
     &ett_lpp_T_prs_MutingInfo_r9,
+    &ett_lpp_T_prsHoppingInfo_r14,
+    &ett_lpp_T_nb4_r14,
     &ett_lpp_OTDOA_NeighbourCellInfoList,
     &ett_lpp_OTDOA_NeighbourFreqInfo,
     &ett_lpp_OTDOA_NeighbourCellInfoElement,
+    &ett_lpp_SEQUENCE_SIZE_1_maxAddPRSconfig_r14_OF_Add_PRSconfigNeighbourElement_r14,
+    &ett_lpp_Add_PRSconfigNeighbourElement_r14,
+    &ett_lpp_OTDOA_ReferenceCellInfoNB_r14,
+    &ett_lpp_PRS_Info_NB_r14,
+    &ett_lpp_NPRS_Info_r14,
+    &ett_lpp_T_partA_r14,
+    &ett_lpp_T_nprsBitmap_r14,
+    &ett_lpp_T_nprs_MutingInfoA_r14,
+    &ett_lpp_T_partB_r14,
+    &ett_lpp_T_nprs_MutingInfoB_r14,
+    &ett_lpp_OTDOA_NeighbourCellInfoListNB_r14,
+    &ett_lpp_OTDOA_NeighbourCellInfoNB_r14,
     &ett_lpp_OTDOA_RequestAssistanceData,
+    &ett_lpp_T_adType_r14,
     &ett_lpp_OTDOA_ProvideLocationInformation,
     &ett_lpp_OTDOA_SignalMeasurementInformation,
     &ett_lpp_NeighbourMeasurementList,
     &ett_lpp_NeighbourMeasurementElement,
+    &ett_lpp_AdditionalPathList_r14,
+    &ett_lpp_OTDOA_SignalMeasurementInformation_NB_r14,
+    &ett_lpp_NeighbourMeasurementList_NB_r14,
+    &ett_lpp_NeighbourMeasurementElement_NB_r14,
     &ett_lpp_OTDOA_MeasQuality,
+    &ett_lpp_AdditionalPath_r14,
     &ett_lpp_OTDOA_RequestLocationInformation,
     &ett_lpp_OTDOA_ProvideCapabilities,
     &ett_lpp_T_otdoa_Mode,
@@ -16669,6 +20515,7 @@ void proto_register_lpp(void) {
     &ett_lpp_T_fdd,
     &ett_lpp_T_tdd,
     &ett_lpp_T_gSM,
+    &ett_lpp_T_nBIoT_r14,
     &ett_lpp_GNSS_ReferenceLocation,
     &ett_lpp_GNSS_IonosphericModel,
     &ett_lpp_KlobucharModelParameter,
@@ -16781,6 +20628,7 @@ void proto_register_lpp(void) {
     &ett_lpp_T_tdd_01,
     &ett_lpp_T_gSM_01,
     &ett_lpp_T_referenceFrame,
+    &ett_lpp_T_nbIoT_r14,
     &ett_lpp_GNSS_MeasurementList,
     &ett_lpp_GNSS_MeasurementForOneGNSS,
     &ett_lpp_GNSS_SgnMeasList,
@@ -16848,21 +20696,36 @@ void proto_register_lpp(void) {
     &ett_lpp_MBS_BeaconMeasList_r13,
     &ett_lpp_MBS_BeaconMeasElement_r13,
     &ett_lpp_TBS_RequestLocationInformation_r13,
+    &ett_lpp_T_mbsRequestedMeasurements_r14,
     &ett_lpp_TBS_ProvideCapabilities_r13,
     &ett_lpp_T_tbs_Modes_r13,
+    &ett_lpp_T_mbs_ConfigSupport_r14,
+    &ett_lpp_MBS_AssistanceDataSupportList_r14,
     &ett_lpp_TBS_RequestCapabilities_r13,
     &ett_lpp_TBS_Error_r13,
     &ett_lpp_TBS_LocationServerErrorCauses_r13,
     &ett_lpp_TBS_TargetDeviceErrorCauses_r13,
+    &ett_lpp_TBS_ProvideAssistanceData_r14,
+    &ett_lpp_TBS_AssistanceDataList_r14,
+    &ett_lpp_MBS_AssistanceDataList_r14,
+    &ett_lpp_MBS_AssistanceDataElement_r14,
+    &ett_lpp_MBS_AlmanacAssistance_r14,
+    &ett_lpp_MBS_AcquisitionAssistance_r14,
+    &ett_lpp_TBS_RequestAssistanceData_r14,
     &ett_lpp_Sensor_ProvideLocationInformation_r13,
     &ett_lpp_Sensor_MeasurementInformation_r13,
+    &ett_lpp_T_uncertainty_r14,
     &ett_lpp_Sensor_RequestLocationInformation_r13,
     &ett_lpp_Sensor_ProvideCapabilities_r13,
     &ett_lpp_T_sensor_Modes_r13,
+    &ett_lpp_Sensor_AssistanceDataSupportList_r14,
     &ett_lpp_Sensor_RequestCapabilities_r13,
     &ett_lpp_Sensor_Error_r13,
     &ett_lpp_Sensor_LocationServerErrorCauses_r13,
     &ett_lpp_Sensor_TargetDeviceErrorCauses_r13,
+    &ett_lpp_Sensor_ProvideAssistanceData_r14,
+    &ett_lpp_Sensor_AssistanceDataList_r14,
+    &ett_lpp_Sensor_RequestAssistanceData_r14,
     &ett_lpp_WLAN_ProvideLocationInformation_r13,
     &ett_lpp_WLAN_MeasurementInformation_r13,
     &ett_lpp_WLAN_MeasurementList_r13,
@@ -16874,10 +20737,24 @@ void proto_register_lpp(void) {
     &ett_lpp_WLAN_ProvideCapabilities_r13,
     &ett_lpp_T_wlan_Modes_r13,
     &ett_lpp_T_wlan_MeasSupported_r13,
+    &ett_lpp_T_wlan_AP_AD_Supported_r14,
     &ett_lpp_WLAN_RequestCapabilities_r13,
     &ett_lpp_WLAN_Error_r13,
     &ett_lpp_WLAN_LocationServerErrorCauses_r13,
     &ett_lpp_WLAN_TargetDeviceErrorCauses_r13,
+    &ett_lpp_WLAN_ProvideAssistanceData_r14,
+    &ett_lpp_SEQUENCE_SIZE_1_maxWLAN_DataSets_r14_OF_WLAN_DataSet_r14,
+    &ett_lpp_WLAN_DataSet_r14,
+    &ett_lpp_SEQUENCE_SIZE_1_maxWLAN_AP_r14_OF_WLAN_AP_Data_r14,
+    &ett_lpp_SupportedChannels_11a_r14,
+    &ett_lpp_SupportedChannels_11bg_r14,
+    &ett_lpp_WLAN_AP_Data_r14,
+    &ett_lpp_WLAN_AP_Location_r14,
+    &ett_lpp_LocationDataLCI_r14,
+    &ett_lpp_WLAN_RequestAssistanceData_r14,
+    &ett_lpp_T_requestedAD_r14,
+    &ett_lpp_SEQUENCE_SIZE_1_maxVisibleAPs_r14_OF_WLAN_AP_Identifier_r13,
+    &ett_lpp_SEQUENCE_SIZE_1_maxKnownAPs_r14_OF_WLAN_AP_Identifier_r13,
     &ett_lpp_BT_ProvideLocationInformation_r13,
     &ett_lpp_BT_MeasurementInformation_r13,
     &ett_lpp_BT_MeasurementList_r13,
@@ -16893,7 +20770,7 @@ void proto_register_lpp(void) {
     &ett_lpp_BT_TargetDeviceErrorCauses_r13,
 
 /*--- End of included file: packet-lpp-ettarr.c ---*/
-#line 1707 "./asn1/lpp/packet-lpp-template.c"
+#line 1791 "./asn1/lpp/packet-lpp-template.c"
   };
 
 
index b7c0f7cd514d244bcf6f69765d2d198b1dc6ece9..7b53ecd1cb6221171d69b9278b4aad7c21119866 100644 (file)
@@ -8,7 +8,7 @@
 #line 1 "./asn1/lpp/packet-lpp-template.h"
 /* packet-lpp.h
  * Routines for 3GPP LTE Positioning Protocol (LPP) packet dissection
- * Copyright 2011-2016 Pascal Quantin <pascal.quantin@gmail.com>
+ * Copyright 2011-2017 Pascal Quantin <pascal.quantin@gmail.com>
  *
  * Wireshark - Network traffic analyzer
  * By Gerald Combs <gerald@wireshark.org>
@@ -28,7 +28,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Ref 3GPP TS 36.355 version 13.2.0 Release 13
+ * Ref 3GPP TS 36.355 version 14.2.0 Release 14
  * http://www.3gpp.org
  */
 
index add9c4df38edd23553d6d1fcbae6cdab2a9c7df4..43db8f87487c98765bdc915da1273553f1be748b 100755 (executable)
@@ -69,7 +69,7 @@ sub extract_asn1 {
       $is_asn1 = 0;
     }
 
-    if($line =~ m/\96    LPP-PDU-Definitions/){
+    if($line =~ m/     LPP-PDU-Definitions/){
       $output_file_name = "LPP.asn";
       print  "generating $output_file_name\n";
       open(OUTPUT_FILE, "> $output_file_name") or die "Can not open file $output_file_name";