GuidesAPI Reference
Guides

LPP Specification (Compact)

This file contains more compact schema, with a focus on A-GNSS-ProvideAssistanceData definitions. It can be used if the data is requested by specifying lpp=data query parameter.

-- ASN.1 schema generated from https://www.3gpp.org/ftp/Specs/archive/37_series/37.355/37355-i30.zip
-- Subset of the full LPP schema; A-GNSS-ProvideAssistanceData and all transitively referenced types

-- 3GPP TS 37.355 V18.3.0 (2024-09)
-- Technical Specification
-- 3rd Generation Partnership Project;
-- Technical Specification Group Radio Access Network;
-- LTE Positioning Protocol (LPP)
-- (Release 18)
--


LPP-PDU-Definitions
DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

Error ::= CHOICE {
    error-r9                    Error-r9-IEs,
    criticalExtensionsFuture    SEQUENCE {}
}

Error-r9-IEs ::= SEQUENCE {
    commonIEsError      CommonIEsError          OPTIONAL,   -- Need ON
    ...,
    epdu-Error          EPDU-Sequence           OPTIONAL    -- Need ON
}

ARFCN-ValueEUTRA ::= INTEGER (0..maxEARFCN)

ARFCN-ValueEUTRA-v9a0 ::=   INTEGER (maxEARFCN-Plus1..maxEARFCN2)

ARFCN-ValueEUTRA-r14 ::=    INTEGER (0..maxEARFCN2)

ARFCN-ValueNR-r15 ::= INTEGER (0..3279165)

ARFCN-ValueUTRA ::= INTEGER (0..16383)

CarrierFreq-NB-r14 ::=      SEQUENCE {
    carrierFreq-r14             ARFCN-ValueEUTRA-r14,
    carrierFreqOffset-r14       CarrierFreqOffsetNB-r14             OPTIONAL,
    ...
}

CarrierFreqOffsetNB-r14 ::=     ENUMERATED {
                                    v-10, v-9, v-8, v-7, v-6, v-5, v-4, v-3, v-2, v-1, v-0dot5,
                                    v0, v1, v2, v3, v4, v5, v6, v7, v8, v9
                                    }

CellGlobalIdEUTRA-AndUTRA ::= SEQUENCE {
    plmn-Identity       SEQUENCE {
                            mcc     SEQUENCE (SIZE (3)) OF INTEGER (0..9),
                            mnc     SEQUENCE (SIZE (2..3))  OF INTEGER (0..9)
                        },
    cellIdentity        CHOICE {
        eutra   BIT STRING (SIZE (28)),
        utra    BIT STRING (SIZE (32))
    },
    ...
}

CellGlobalIdGERAN ::= SEQUENCE {
    plmn-Identity       SEQUENCE {
                            mcc     SEQUENCE (SIZE (3)) OF INTEGER (0..9),
                            mnc     SEQUENCE (SIZE (2..3))  OF INTEGER (0..9)
                            },
    locationAreaCode        BIT STRING (SIZE (16)),
    cellIdentity            BIT STRING (SIZE (16)),
    ...
}

ECGI ::= SEQUENCE {
    mcc             SEQUENCE (SIZE (3)) OF INTEGER (0..9),
    mnc             SEQUENCE (SIZE (2..3))  OF INTEGER (0..9),
    cellidentity    BIT STRING (SIZE (28))
}

EllipsoidPointWithAltitudeAndUncertaintyEllipsoid ::= SEQUENCE {
    latitudeSign                ENUMERATED {north, south},
    degreesLatitude             INTEGER (0..8388607),           -- 23 bit field
    degreesLongitude            INTEGER (-8388608..8388607),    -- 24 bit field
    altitudeDirection           ENUMERATED {height, depth},
    altitude                    INTEGER (0..32767),             -- 15 bit field
    uncertaintySemiMajor        INTEGER (0..127),
    uncertaintySemiMinor        INTEGER (0..127),
    orientationMajorAxis        INTEGER (0..179),
    uncertaintyAltitude         INTEGER (0..127),
    confidence                  INTEGER (0..100)
}

EPDU-Sequence ::= SEQUENCE (SIZE (1..maxEPDU)) OF EPDU

maxEPDU INTEGER ::= 16

EPDU ::= SEQUENCE {
    ePDU-Identifier         EPDU-Identifier,
    ePDU-Body               EPDU-Body
}

EPDU-Identifier ::= SEQUENCE {
    ePDU-ID                 EPDU-ID,
    ePDU-Name               EPDU-Name       OPTIONAL,
    ...
}

EPDU-ID ::= INTEGER (1..256)

EPDU-Name ::= VisibleString (SIZE (1..32))

EPDU-Body ::= OCTET STRING

NCGI-r15 ::= SEQUENCE {
    mcc-r15                 SEQUENCE (SIZE (3))     OF INTEGER (0..9),
    mnc-r15                 SEQUENCE (SIZE (2..3))  OF INTEGER (0..9),
    nr-cellidentity-r15     BIT STRING (SIZE (36))
}

CommonIEsError ::= SEQUENCE {
    errorCause      ENUMERATED {
        undefined,
        lppMessageHeaderError,
        lppMessageBodyError,
        epduError,
        incorrectDataValue,
        ...,
        lppSegmentationError-v1450
    }
}

A-GNSS-ProvideAssistanceData ::= SEQUENCE {
    gnss-CommonAssistData           GNSS-CommonAssistData               OPTIONAL,   -- Need ON
    gnss-GenericAssistData          GNSS-GenericAssistData              OPTIONAL,   -- Need ON
    gnss-Error                      A-GNSS-Error                        OPTIONAL,   -- Need ON
    ...,
    [[
        gnss-PeriodicAssistData-r15 GNSS-PeriodicAssistData-r15         OPTIONAL    -- Cond CtrTrans
    ]]
}

GNSS-CommonAssistData ::= SEQUENCE {
    gnss-ReferenceTime              GNSS-ReferenceTime                  OPTIONAL,   -- Need ON
    gnss-ReferenceLocation          GNSS-ReferenceLocation              OPTIONAL,   -- Need ON
    gnss-IonosphericModel           GNSS-IonosphericModel               OPTIONAL,   -- Need ON
    gnss-EarthOrientationParameters GNSS-EarthOrientationParameters     OPTIONAL,   -- Need ON
    ...,
    [[
        gnss-RTK-ReferenceStationInfo-r15
                                    GNSS-RTK-ReferenceStationInfo-r15   OPTIONAL,   -- Need ON
        gnss-RTK-CommonObservationInfo-r15
                                    GNSS-RTK-CommonObservationInfo-r15  OPTIONAL,   -- Cond RTK
        gnss-RTK-AuxiliaryStationData-r15
                                    GNSS-RTK-AuxiliaryStationData-r15   OPTIONAL    -- Need ON
    ]],
    [[
        gnss-SSR-CorrectionPoints-r16
                                    GNSS-SSR-CorrectionPoints-r16       OPTIONAL    -- Need ON
    ]],
    [[
        gnss-Integrity-ServiceParameters-r17
                            GNSS-Integrity-ServiceParameters-r17        OPTIONAL,   -- Need ON
        gnss-Integrity-ServiceAlert-r17
                            GNSS-Integrity-ServiceAlert-r17             OPTIONAL    -- Need OR
    ]],
    [[
        gnss-los-nlos-GridPoints-r18    GNSS-LOS-NLOS-GridPoints-r18    OPTIONAL,   -- Need ON
        gnss-SSR-IOD-Update-r18         GNSS-SSR-IOD-Update-r18         OPTIONAL    -- Need OR
    ]]
}

GNSS-GenericAssistData ::= SEQUENCE (SIZE (1..16)) OF GNSS-GenericAssistDataElement

GNSS-GenericAssistDataElement ::= SEQUENCE {
    gnss-ID                         GNSS-ID,
    sbas-ID                         SBAS-ID                         OPTIONAL,   -- Cond GNSS-ID-SBAS
    gnss-TimeModels                 GNSS-TimeModelList              OPTIONAL,   -- Need ON
    gnss-DifferentialCorrections    GNSS-DifferentialCorrections    OPTIONAL,   -- Need ON
    gnss-NavigationModel            GNSS-NavigationModel            OPTIONAL,   -- Need ON
    gnss-RealTimeIntegrity          GNSS-RealTimeIntegrity          OPTIONAL,   -- Need ON
    gnss-DataBitAssistance          GNSS-DataBitAssistance          OPTIONAL,   -- Need ON
    gnss-AcquisitionAssistance      GNSS-AcquisitionAssistance      OPTIONAL,   -- Need ON
    gnss-Almanac                    GNSS-Almanac                    OPTIONAL,   -- Need ON
    gnss-UTC-Model                  GNSS-UTC-Model                  OPTIONAL,   -- Need ON
    gnss-AuxiliaryInformation       GNSS-AuxiliaryInformation       OPTIONAL,   -- Need ON
    ...,
    [[
        bds-DifferentialCorrections-r12
                                    BDS-DifferentialCorrections-r12 OPTIONAL,   -- Cond GNSS-ID-BDS
        bds-GridModel-r12           BDS-GridModelParameter-r12      OPTIONAL    -- Cond GNSS-ID-BDS
    ]],
    [[
        gnss-RTK-Observations-r15   GNSS-RTK-Observations-r15       OPTIONAL,   -- Need ON
        glo-RTK-BiasInformation-r15 GLO-RTK-BiasInformation-r15     OPTIONAL,   -- Cond GNSS-ID-GLO
        gnss-RTK-MAC-CorrectionDifferences-r15
                                    GNSS-RTK-MAC-CorrectionDifferences-r15
                                                                    OPTIONAL,   -- Need ON
        gnss-RTK-Residuals-r15      GNSS-RTK-Residuals-r15          OPTIONAL,   -- Need ON
        gnss-RTK-FKP-Gradients-r15  GNSS-RTK-FKP-Gradients-r15      OPTIONAL,   -- Need ON
        gnss-SSR-OrbitCorrections-r15
                                    GNSS-SSR-OrbitCorrections-r15   OPTIONAL,   -- Need ON
        gnss-SSR-ClockCorrections-r15
                                    GNSS-SSR-ClockCorrections-r15   OPTIONAL,   -- Need ON
        gnss-SSR-CodeBias-r15       GNSS-SSR-CodeBias-r15           OPTIONAL    -- Need ON
    ]],
    [[
        gnss-SSR-URA-r16                    GNSS-SSR-URA-r16        OPTIONAL,   -- Need ON
        gnss-SSR-PhaseBias-r16              GNSS-SSR-PhaseBias-r16  OPTIONAL,   -- Need ON
        gnss-SSR-STEC-Correction-r16        GNSS-SSR-STEC-Correction-r16
                                                                    OPTIONAL,   -- Need ON
        gnss-SSR-GriddedCorrection-r16      GNSS-SSR-GriddedCorrection-r16
                                                                    OPTIONAL,   -- Need ON
        navic-DifferentialCorrections-r16   NavIC-DifferentialCorrections-r16
                                                                OPTIONAL,   -- Cond GNSS-ID-NavIC
        navic-GridModel-r16                 NavIC-GridModelParameter-r16
                                                                OPTIONAL    -- Cond GNSS-ID-NavIC
    ]],
    [[
        gnss-SSR-OrbitCorrectionsSet2-r17   GNSS-SSR-OrbitCorrectionsSet2-r17
                                                                            OPTIONAL,   -- Need ON
        gnss-SSR-ClockCorrectionsSet2-r17   GNSS-SSR-ClockCorrectionsSet2-r17
                                                                            OPTIONAL,   -- Need ON
        gnss-SSR-URA-Set2-r17               GNSS-SSR-URA-Set2-r17           OPTIONAL    -- Need ON
    ]],
    [[
        gnss-LOS-NLOS-GriddedIndications-r18    GNSS-LOS-NLOS-GriddedIndications-r18
                                                                            OPTIONAL,   -- Need ON
        gnss-SSR-SatellitePCVResiduals-r18  GNSS-SSR-SatellitePCVResiduals-r18
                                                                            OPTIONAL    -- Need ON
    ]]
}

GNSS-PeriodicAssistData-r15 ::= SEQUENCE {
    gnss-RTK-PeriodicObservations-r15       GNSS-PeriodicControlParam-r15   OPTIONAL,   -- Need ON
    glo-RTK-PeriodicBiasInformation-r15     GNSS-PeriodicControlParam-r15   OPTIONAL,   -- Need ON
    gnss-RTK-MAC-PeriodicCorrectionDifferences-r15
                                            GNSS-PeriodicControlParam-r15   OPTIONAL,   -- Need ON
    gnss-RTK-PeriodicResiduals-r15          GNSS-PeriodicControlParam-r15   OPTIONAL,   -- Need ON
    gnss-RTK-FKP-PeriodicGradients-r15      GNSS-PeriodicControlParam-r15   OPTIONAL,   -- Need ON
    gnss-SSR-PeriodicOrbitCorrections-r15
                                            GNSS-PeriodicControlParam-r15   OPTIONAL,   -- Need ON
    gnss-SSR-PeriodicClockCorrections-r15
                                            GNSS-PeriodicControlParam-r15   OPTIONAL,   -- Need ON
    gnss-SSR-PeriodicCodeBias-r15           GNSS-PeriodicControlParam-r15   OPTIONAL,   -- Need ON
    ...,
    [[
    gnss-SSR-PeriodicURA-r16                GNSS-PeriodicControlParam-r15   OPTIONAL,   -- Need ON
    gnss-SSR-PeriodicPhaseBias-r16          GNSS-PeriodicControlParam-r15   OPTIONAL,   -- Need ON
    gnss-SSR-PeriodicSTEC-Correction-r16    GNSS-PeriodicControlParam-r15   OPTIONAL,   -- Need ON
    gnss-SSR-PeriodicGriddedCorrection-r16  GNSS-PeriodicControlParam-r15   OPTIONAL    -- Need ON
    ]],
    [[
    gnss-Integrity-PeriodicServiceAlert-r17 GNSS-PeriodicControlParam-r15   OPTIONAL    -- Need ON
    ]],
    [[
    gnss-SSR-PeriodicOrbitCorrectionsSet2-r17
                                        GNSS-PeriodicControlParam-r15       OPTIONAL,   -- Need ON
    gnss-SSR-PeriodicClockCorrectionsSet2-r17
                                        GNSS-PeriodicControlParam-r15       OPTIONAL,   -- Need ON
    gnss-SSR-PeriodicURA-Set2-r17       GNSS-PeriodicControlParam-r15       OPTIONAL    -- Need ON
    ]],
    [[
    gnss-SSR-PeriodicIOD-Update-r18     GNSS-PeriodicControlParam-r15       OPTIONAL    -- Need OR
    ]]
}

GNSS-ReferenceTime ::= SEQUENCE {
    gnss-SystemTime             GNSS-SystemTime,
    referenceTimeUnc            INTEGER (0..127)                    OPTIONAL,   -- Cond noFTA
    gnss-ReferenceTimeForCells  SEQUENCE (SIZE (1..16)) OF
                                    GNSS-ReferenceTimeForOneCell    OPTIONAL,   -- Need ON
    ...
}

GNSS-ReferenceTimeForOneCell ::= SEQUENCE {
    networkTime             NetworkTime,
    referenceTimeUnc            INTEGER (0..127),
    bsAlign                     ENUMERATED {true}   OPTIONAL,
    ...
}

GNSS-SystemTime ::= SEQUENCE {
    gnss-TimeID                     GNSS-ID,
    gnss-DayNumber                  INTEGER (0..32767),
    gnss-TimeOfDay                  INTEGER (0..86399),
    gnss-TimeOfDayFrac-msec         INTEGER (0..999)        OPTIONAL,   -- Need ON
    notificationOfLeapSecond        BIT STRING (SIZE(2))    OPTIONAL,   -- Cond gnss-TimeID-glonass
    gps-TOW-Assist                  GPS-TOW-Assist          OPTIONAL,   -- Cond gnss-TimeID-gps
    ...
}

GPS-TOW-Assist ::= SEQUENCE (SIZE(1..64)) OF GPS-TOW-AssistElement

GPS-TOW-AssistElement ::= SEQUENCE {
    satelliteID     INTEGER (1..64),
    tlmWord         INTEGER (0..16383),
    antiSpoof       INTEGER (0..1),
    alert           INTEGER (0..1),
    tlmRsvdBits     INTEGER (0..3),
    ...
}

NetworkTime ::= SEQUENCE {
    secondsFromFrameStructureStart              INTEGER(0..12533),
    fractionalSecondsFromFrameStructureStart    INTEGER(0..3999999),
    frameDrift                                  INTEGER (-64..63)   OPTIONAL,   -- Cond GNSSsynch
    cellID      CHOICE {
                eUTRA       SEQUENCE {
                            physCellId          INTEGER (0..503),
                            cellGlobalIdEUTRA   CellGlobalIdEUTRA-AndUTRA   OPTIONAL,   -- Need ON
                            earfcn              ARFCN-ValueEUTRA,
                            ...,
                            [[ earfcn-v9a0      ARFCN-ValueEUTRA-v9a0 OPTIONAL  -- Cond EARFCN-max
                            ]]
                            },
                uTRA        SEQUENCE {
                            mode    CHOICE {
                                    fdd     SEQUENCE {
                                            primary-CPICH-Info  INTEGER (0..511),
                                            ...
                                            },
                                    tdd     SEQUENCE {
                                            cellParameters      INTEGER (0..127),
                                            ...
                                            }
                                    },
                            cellGlobalIdUTRA    CellGlobalIdEUTRA-AndUTRA   OPTIONAL,   -- Need ON
                            uarfcn              ARFCN-ValueUTRA,
                            ...
                            },
                gSM         SEQUENCE {
                            bcchCarrier         INTEGER (0..1023),
                            bsic                INTEGER (0..63),
                            cellGlobalIdGERAN   CellGlobalIdGERAN           OPTIONAL,   -- Need ON
                            ...
                            },
                ...,
                nBIoT-r14   SEQUENCE {
                            nbPhysCellId-r14    INTEGER (0..503),
                            nbCellGlobalId-r14  ECGI                        OPTIONAL,   -- Need ON
                            nbCarrierFreq-r14   CarrierFreq-NB-r14,
                            ...
                            },
                nr-r15      SEQUENCE {
                            nrPhysCellId-r15    INTEGER (0..1007),
                            nrCellGlobalID-r15  NCGI-r15                    OPTIONAL,   -- Need ON
                            nrARFCN-r15         ARFCN-ValueNR-r15,
                            ...
                            }
                },
    ...
}

GNSS-ReferenceLocation ::= SEQUENCE {
        threeDlocation          EllipsoidPointWithAltitudeAndUncertaintyEllipsoid,
        ...
}

GNSS-IonosphericModel ::= SEQUENCE {
    klobucharModel          KlobucharModelParameter     OPTIONAL,   -- Need ON
    neQuickModel            NeQuickModelParameter       OPTIONAL,   -- Need ON
    ...,
    [[  klobucharModel2-r16     KlobucharModel2Parameter-r16    OPTIONAL    -- Need ON
    ]]

}

KlobucharModelParameter ::= SEQUENCE {
    dataID          BIT STRING (SIZE (2)),
    alfa0           INTEGER (-128..127),
    alfa1           INTEGER (-128..127),
    alfa2           INTEGER (-128..127),
    alfa3           INTEGER (-128..127),
    beta0           INTEGER (-128..127),
    beta1           INTEGER (-128..127),
    beta2           INTEGER (-128..127),
    beta3           INTEGER (-128..127),
    ...
}

KlobucharModel2Parameter-r16 ::= SEQUENCE {
    alfa1-r16           INTEGER (0..1023),
    alfa2-r16           INTEGER (-128..127),
    alfa3-r16           INTEGER (0..255),
    alfa4-r16           INTEGER (0..255),
    alfa5-r16           INTEGER (0..255),
    alfa6-r16           INTEGER (-128..127),
    alfa7-r16           INTEGER (-128..127),
    alfa8-r16           INTEGER (-128..127),
    alfa9-r16           INTEGER (-128..127),
    ...
}

NeQuickModelParameter ::= SEQUENCE {
    ai0         INTEGER (0..2047),
    ai1         INTEGER (-1024..1023),
    ai2         INTEGER (-8192..8191),
    ionoStormFlag1  INTEGER (0..1)      OPTIONAL,   -- Need OP
    ionoStormFlag2  INTEGER (0..1)      OPTIONAL,   -- Need OP
    ionoStormFlag3  INTEGER (0..1)      OPTIONAL,   -- Need OP
    ionoStormFlag4  INTEGER (0..1)      OPTIONAL,   -- Need OP
    ionoStormFlag5  INTEGER (0..1)      OPTIONAL,   -- Need OP
    ...
}

GNSS-EarthOrientationParameters ::= SEQUENCE {
    teop                INTEGER (0..65535),
    pmX                 INTEGER (-1048576..1048575),
    pmXdot              INTEGER (-16384..16383),
    pmY                 INTEGER (-1048576..1048575),
    pmYdot              INTEGER (-16384..16383),
    deltaUT1            INTEGER (-1073741824..1073741823),
    deltaUT1dot         INTEGER (-262144..262143),
    ...
}

GNSS-RTK-ReferenceStationInfo-r15 ::= SEQUENCE {
    referenceStationID-r15                  GNSS-ReferenceStationID-r15,
    referenceStationIndicator-r15           ENUMERATED {physical, non-physical},
    antenna-reference-point-ECEF-X-r15      INTEGER (-137438953472..137438953471),
    antenna-reference-point-ECEF-Y-r15      INTEGER (-137438953472..137438953471),
    antenna-reference-point-ECEF-Z-r15      INTEGER (-137438953472..137438953471),
    antennaHeight-r15                       INTEGER (0..65535)                  OPTIONAL, -- Need ON
    antennaDescription-r15                  AntennaDescription-r15              OPTIONAL, -- Need ON
    antenna-reference-point-unc-r15         AntennaReferencePointUnc-r15        OPTIONAL, -- Need ON
    physical-reference-station-info-r15     PhysicalReferenceStationInfo-r15    OPTIONAL, -- Cond NP
    ...,
    [[
    equalIntegerAmbiguityLevel-r16          EqualIntegerAmbiguityLevel-r16      OPTIONAL -- Need ON
    ]]
}

AntennaDescription-r15 ::= SEQUENCE {
    antennaDescriptor-r15                   VisibleString (SIZE (1..256)),
    antennaSetUpID-r15                      ENUMERATED { non-zero }             OPTIONAL, -- Need OP
    ...
}

AntennaReferencePointUnc-r15 ::= SEQUENCE {
    uncertainty-X-r15                       INTEGER (0..255),
    confidence-X-r15                        INTEGER (0..100),
    uncertainty-Y-r15                       INTEGER (0..255),
    confidence-Y-r15                        INTEGER (0..100),
    uncertainty-Z-r15                       INTEGER (0..255),
    confidence-Z-r15                        INTEGER (0..100),
    ...
}

PhysicalReferenceStationInfo-r15 ::= SEQUENCE {
    physicalReferenceStationID-r15          GNSS-ReferenceStationID-r15,
    physical-ARP-ECEF-X-r15                 INTEGER (-137438953472..137438953471),
    physical-ARP-ECEF-Y-r15                 INTEGER (-137438953472..137438953471),
    physical-ARP-ECEF-Z-r15                 INTEGER (-137438953472..137438953471),
    physical-ARP-unc-r15                    AntennaReferencePointUnc-r15        OPTIONAL, -- Need ON
    ...
}

EqualIntegerAmbiguityLevel-r16 ::= CHOICE {
    allReferenceStations-r16                NULL,
    referenceStationList-r16                ReferenceStationList-r16
}

ReferenceStationList-r16 ::= SEQUENCE (SIZE(1..16)) OF GNSS-ReferenceStationID-r15

GNSS-RTK-CommonObservationInfo-r15 ::= SEQUENCE {
    referenceStationID-r15              GNSS-ReferenceStationID-r15,
    clockSteeringIndicator-r15          INTEGER (0..3),
    externalClockIndicator-r15          INTEGER (0..3),
    smoothingIndicator-r15              BIT STRING (SIZE(1)),
    smoothingInterval-r15               BIT STRING (SIZE(3)),
    ...
}

GNSS-RTK-AuxiliaryStationData-r15 ::= SEQUENCE {
    networkID-r15                   GNSS-NetworkID-r15,
    subNetworkID-r15                GNSS-SubNetworkID-r15                   OPTIONAL,   -- Need ON
    master-referenceStationID-r15   GNSS-ReferenceStationID-r15,
    auxiliaryStationList-r15        AuxiliaryStationList-r15,
    ...
}

AuxiliaryStationList-r15 ::= SEQUENCE (SIZE (1..32)) OF AuxiliaryStationElement-r15

AuxiliaryStationElement-r15 ::= SEQUENCE {
    aux-referenceStationID-r15              GNSS-ReferenceStationID-r15,
    aux-master-delta-latitude-r15           INTEGER (-524288..524287),
    aux-master-delta-longitude-r15          INTEGER (-1048576..1048575),
    aux-master-delta-height-r15             INTEGER (-4194304..4194303),
    aux-ARP-unc-r15                         Aux-ARP-Unc-r15                 OPTIONAL,   -- Need ON
    ...
}

Aux-ARP-Unc-r15 ::= SEQUENCE {
    horizontalUncertainty-r15               INTEGER (0..255),
    horizontalConfidence-r15                INTEGER (0..100),
    verticalUncertainty-r15                 INTEGER (0..255)                OPTIONAL,   -- Need ON
    verticalConfidence-r15                  INTEGER (0..100)                OPTIONAL,   -- Need ON
    ...
}

GNSS-SSR-CorrectionPoints-r16 ::= SEQUENCE {
    correctionPointSetID-r16            INTEGER (0..16383),
    correctionPoints-r16                CHOICE {
        listOfCorrectionPoints-r16          GNSS-SSR-ListOfCorrectionPoints-r16,
        arrayOfCorrectionPoints-r16         GNSS-SSR-ArrayOfCorrectionPoints-r16
    },
    ...
}

GNSS-SSR-ListOfCorrectionPoints-r16 ::= SEQUENCE {
    referencePointLatitude-r16      INTEGER (-16384..16383),
    referencePointLongitude-r16     INTEGER (-32768..32767),
    relativeLocationsList-r16       SEQUENCE (SIZE (0..63)) OF RelativeLocationElement-r16,
    ...
}

RelativeLocationElement-r16 ::= SEQUENCE {
    deltaLatitude-r16               INTEGER (-512..511),
    deltaLongitude-r16              INTEGER (-1024..1023),
    ...
}

GNSS-SSR-ArrayOfCorrectionPoints-r16 ::=SEQUENCE {
    referencePointLatitude-r16          INTEGER (-16384..16383),
    referencePointLongitude-r16         INTEGER (-32768..32767),
    numberOfStepsLatitude-r16           INTEGER (0..63),
    numberOfStepsLongitude-r16          INTEGER (0..63),
    stepOfLatitude-r16                  INTEGER (1..511),
    stepOfLongitude-r16                 INTEGER (1..1023),
    bitmaskOfGrids-r16                  BIT STRING (SIZE(64))               OPTIONAL,   -- Need OP
    ...
}

GNSS-Integrity-ServiceParameters-r17 ::= SEQUENCE {
    irMinimum-r17                       INTEGER (0..255),
    irMaximum-r17                       INTEGER (0..255),
    ...
}

GNSS-Integrity-ServiceAlert-r17 ::= SEQUENCE {
    ionosphereDoNotUse-r17              BOOLEAN,
    troposphereDoNotUse-r17             BOOLEAN,
    ...
}

GNSS-LOS-NLOS-GridPoints-r18 ::= SEQUENCE {
    gridPointsSetID-r18             INTEGER (0..16383),
    horizontalGridPoints-r18        ArrayOfGridPoints-r18,
    referenceAltitudeFine-r18       INTEGER (0..9)                  OPTIONAL, -- Need OP
    verticalGridPoints-r18          VerticalGridPoints-r18          OPTIONAL, -- Cond 3D
    ...
}

ArrayOfGridPoints-r18 ::= SEQUENCE {
    referencePointLatitude-r18      INTEGER (-16777216.. 16777215),
    referencePointLongitude-r18     INTEGER (-33554432.. 33554431),
    numberOfStepsSouth-r18          INTEGER (0.. 255),
    numberOfStepsEast-r18           INTEGER (0.. 255),
    stepSouth-r18                   SpatialDelta-r18,
    stepEast-r18                    SpatialDelta-r18,
    bitmaskOfGrids-r18              CHOICE {
        bog16-r18                       BIT STRING (SIZE(16)),
        bog64-r18                       BIT STRING (SIZE(64)),
        bog256-r18                      BIT STRING (SIZE(256)),
        ...
    }                                                               OPTIONAL, -- Need OP
    ...
}

VerticalGridPoints-r18 ::=SEQUENCE {
    referenceAltitudeCoarse-r18     INTEGER (-50..900),
    numberOfStepsDown-r18           INTEGER (1..3),
    stepDown-r18                    SpatialDelta-r18,
    upperValidityDeltaAltitude-r18  SpatialDelta-r18                OPTIONAL, -- Need OP
    lowerValidityDeltaAltitude-r18  SpatialDelta-r18                OPTIONAL, -- Need OP
    ...
}

SpatialDelta-r18 ::= ENUMERATED {n1, n2, n3, n4, n5, n10, n20, n50, n100}

GNSS-SSR-IOD-Update-r18 ::= SEQUENCE {
    epochTime-r18                       GNSS-SystemTime,
    ssrUpdateInterval-r18               INTEGER (0..15),
    iod-ssr-r18                         INTEGER (0..15),
    iod-ssr-PCVResiduals-r18            INTEGER (0..64),
    ...
}

GNSS-TimeModelList ::= SEQUENCE (SIZE (1..15)) OF GNSS-TimeModelElement

GNSS-TimeModelElement ::= SEQUENCE {
    gnss-TimeModelRefTime       INTEGER (0..65535),
    tA0                         INTEGER (-67108864..67108863),
    tA1                         INTEGER (-4096..4095)                   OPTIONAL,   -- Need ON
    tA2                         INTEGER (-64..63)                       OPTIONAL,   -- Need ON
    gnss-TO-ID                  INTEGER (1..15),
    weekNumber                  INTEGER (0..8191)                       OPTIONAL,   -- Need ON
    deltaT                      INTEGER (-128..127)                     OPTIONAL,   -- Need ON
    ...
}

GNSS-DifferentialCorrections ::= SEQUENCE {
    dgnss-RefTime       INTEGER (0..3599),
    dgnss-SgnTypeList   DGNSS-SgnTypeList,
    ...
}

DGNSS-SgnTypeList ::= SEQUENCE (SIZE (1..3)) OF DGNSS-SgnTypeElement

DGNSS-SgnTypeElement ::= SEQUENCE {
    gnss-SignalID       GNSS-SignalID,
    gnss-StatusHealth   INTEGER (0..7),
    dgnss-SatList       DGNSS-SatList,
    ...
}

DGNSS-SatList ::= SEQUENCE (SIZE (1..64)) OF DGNSS-CorrectionsElement

DGNSS-CorrectionsElement ::= SEQUENCE {
    svID                SV-ID,
    iod                 BIT STRING (SIZE(11)),
    udre                INTEGER (0..3),
    pseudoRangeCor      INTEGER (-2047..2047),
    rangeRateCor        INTEGER (-127..127),
    udreGrowthRate      INTEGER (0..7)          OPTIONAL,   -- Need ON
    udreValidityTime    INTEGER (0..7)          OPTIONAL,   -- Need ON
    ...
}

GNSS-NavigationModel ::= SEQUENCE {
    nonBroadcastIndFlag     INTEGER (0..1),
    gnss-SatelliteList      GNSS-NavModelSatelliteList,
    ...
}

GNSS-NavModelSatelliteList ::= SEQUENCE (SIZE(1..64)) OF GNSS-NavModelSatelliteElement

GNSS-NavModelSatelliteElement ::= SEQUENCE {
    svID                SV-ID,
    svHealth            BIT STRING (SIZE(8)),
    iod                 BIT STRING (SIZE(11)),
    gnss-ClockModel     GNSS-ClockModel,
    gnss-OrbitModel     GNSS-OrbitModel,
    ...,
    [[  svHealthExt-v1240 BIT STRING (SIZE(4))          OPTIONAL        -- Need ON
    ]]
}

GNSS-ClockModel ::= CHOICE {
    standardClockModelList  StandardClockModelList,         -- Model-1
    nav-ClockModel          NAV-ClockModel,                 -- Model-2
    cnav-ClockModel         CNAV-ClockModel,                -- Model-3
    glonass-ClockModel      GLONASS-ClockModel,             -- Model-4
    sbas-ClockModel         SBAS-ClockModel,                -- Model-5
    ...,
    bds-ClockModel-r12      BDS-ClockModel-r12,             -- Model-6
            bds-ClockModel2-r16     BDS-ClockModel2-r16,            -- Model-7
    navic-ClockModel-r16    NavIC-ClockModel-r16            -- Model-8
}

GNSS-OrbitModel ::= CHOICE {
    keplerianSet            NavModelKeplerianSet,           -- Model-1
    nav-KeplerianSet        NavModelNAV-KeplerianSet,       -- Model-2
    cnav-KeplerianSet       NavModelCNAV-KeplerianSet,      -- Model-3
    glonass-ECEF            NavModel-GLONASS-ECEF,          -- Model-4
    sbas-ECEF               NavModel-SBAS-ECEF,             -- Model-5
    ...,
    bds-KeplerianSet-r12    NavModel-BDS-KeplerianSet-r12,  -- Model-6
    bds-KeplerianSet2-r16   NavModel-BDS-KeplerianSet2-r16, -- Model-7
    navic-KeplerianSet-r16  NavModel-NavIC-KeplerianSet-r16 -- Model-8
}

StandardClockModelList ::= SEQUENCE (SIZE(1..2)) OF StandardClockModelElement

StandardClockModelElement ::= SEQUENCE {
    stanClockToc            INTEGER (0..16383),
    stanClockAF2            INTEGER (-32..31),
    stanClockAF1            INTEGER (-1048576..1048575),
    stanClockAF0            INTEGER (-1073741824..1073741823),
    stanClockTgd            INTEGER (-512..511)             OPTIONAL,   -- Need ON
    sisa                    INTEGER (0..255),
    stanModelID             INTEGER (0..1)                  OPTIONAL,   -- Need ON
    ...
}

NAV-ClockModel ::= SEQUENCE {
    navToc          INTEGER (0..37799),
    navaf2          INTEGER (-128..127),
    navaf1          INTEGER (-32768..32767),
    navaf0          INTEGER (-2097152..2097151),
    navTgd          INTEGER (-128..127),
    ...
}

CNAV-ClockModel ::= SEQUENCE {
    cnavToc         INTEGER (0..2015),
    cnavTop         INTEGER (0..2015),
    cnavURA0        INTEGER (-16..15),
    cnavURA1        INTEGER (0..7),
    cnavURA2        INTEGER (0..7),
    cnavAf2         INTEGER (-512..511),
    cnavAf1         INTEGER (-524288..524287),
    cnavAf0         INTEGER (-33554432..33554431),
    cnavTgd         INTEGER (-4096..4095),
    cnavISCl1cp     INTEGER (-4096..4095)           OPTIONAL,   -- Need ON
    cnavISCl1cd     INTEGER (-4096..4095)           OPTIONAL,   -- Need ON
    cnavISCl1ca     INTEGER (-4096..4095)           OPTIONAL,   -- Need ON
    cnavISCl2c      INTEGER (-4096..4095)           OPTIONAL,   -- Need ON
    cnavISCl5i5     INTEGER (-4096..4095)           OPTIONAL,   -- Need ON
    cnavISCl5q5     INTEGER (-4096..4095)           OPTIONAL,   -- Need ON
    ...
}

GLONASS-ClockModel ::= SEQUENCE {
    gloTau          INTEGER (-2097152..2097151),
    gloGamma        INTEGER (-1024..1023),
    gloDeltaTau     INTEGER (-16..15)               OPTIONAL,   -- Need ON
    ...
}

SBAS-ClockModel ::= SEQUENCE {
    sbasTo          INTEGER (0..5399),
    sbasAgfo        INTEGER (-2048..2047),
    sbasAgf1        INTEGER (-128..127),
    ...
}

BDS-ClockModel-r12 ::= SEQUENCE {
    bdsAODC-r12         INTEGER (0..31),
    bdsToc-r12          INTEGER (0..131071),
    bdsA0-r12           INTEGER (-8388608..8388607),
    bdsA1-r12           INTEGER (-2097152..2097151),
    bdsA2-r12           INTEGER (-1024..1023),
    bdsTgd1-r12         INTEGER (-512..511),
    ...,
    [[ bdsTgd2-r16      INTEGER (-512..511)         OPTIONAL        -- Need ON
    ]]
}

BDS-ClockModel2-r16 ::= SEQUENCE {
    bdsToc-r16      INTEGER (0..2047),
    bdsA0-r16       INTEGER (-16777216..16777215),
    bdsA1-r16       INTEGER (-2097152..2097151),
    bdsA2-r16       INTEGER (-1024..1023),
    bdsTgdB1Cp-r16  INTEGER (-2048..2047),
    bdsIscB1Cd-r16  INTEGER (-2048..2047),
    ...,
    [[  bdsTgdB2ap-r17  INTEGER (-2048..2047)               OPTIONAL,  -- Need ON
        bdsIscB2ad-r17  INTEGER (-2048..2047)               OPTIONAL   -- Need ON
    ]]
}

NavIC-ClockModel-r16 ::= SEQUENCE {
    navic-Toc-r16           INTEGER (0..65535),
    navic-af2-r16           INTEGER (-128..127),
    navic-af1-r16           INTEGER (-32768..32767),
    navic-af0-r16           INTEGER (-2097152..2097151),
    navic-Tgd-r16           INTEGER (-128..127),
    ...
}

NavModelKeplerianSet ::= SEQUENCE {
    keplerToe       INTEGER (0 .. 16383),
    keplerW         INTEGER (-2147483648..2147483647),
    keplerDeltaN    INTEGER (-32768..32767),
    keplerM0        INTEGER (-2147483648..2147483647),
    keplerOmegaDot  INTEGER (-8388608.. 8388607),
    keplerE     INTEGER (0..4294967295),
    keplerIDot      INTEGER (-8192..8191),
    keplerAPowerHalf INTEGER (0.. 4294967295),
    keplerI0        INTEGER (-2147483648..2147483647),
    keplerOmega0    INTEGER (-2147483648..2147483647),
    keplerCrs       INTEGER (-32768..32767),
    keplerCis       INTEGER (-32768..32767),
    keplerCus       INTEGER (-32768..32767),
    keplerCrc       INTEGER (-32768..32767),
    keplerCic       INTEGER (-32768..32767),
    keplerCuc       INTEGER (-32768..32767),
    ...
}

NavModelNAV-KeplerianSet ::= SEQUENCE {
    navURA          INTEGER (0..15),
    navFitFlag      INTEGER (0..1),
    navToe          INTEGER (0..37799),
    navOmega        INTEGER (-2147483648..2147483647),
    navDeltaN       INTEGER (-32768..32767),
    navM0           INTEGER (-2147483648..2147483647),
    navOmegaADot    INTEGER (-8388608..8388607),
    navE            INTEGER (0..4294967295),
    navIDot         INTEGER (-8192..8191),
    navAPowerHalf   INTEGER (0..4294967295),
    navI0           INTEGER (-2147483648..2147483647),
    navOmegaA0      INTEGER (-2147483648..2147483647),
    navCrs          INTEGER (-32768..32767),
    navCis          INTEGER (-32768..32767),
    navCus          INTEGER (-32768..32767),
    navCrc          INTEGER (-32768..32767),
    navCic          INTEGER (-32768..32767),
    navCuc          INTEGER (-32768..32767),
    addNAVparam     SEQUENCE {
        ephemCodeOnL2   INTEGER (0..3),
        ephemL2Pflag    INTEGER (0..1),
        ephemSF1Rsvd    SEQUENCE {
            reserved1       INTEGER (0..8388607),   -- 23-bit field
            reserved2       INTEGER (0..16777215),  -- 24-bit field
            reserved3       INTEGER (0..16777215),  -- 24-bit field
            reserved4       INTEGER (0..65535)      -- 16-bit field
        },
        ephemAODA       INTEGER (0..31)
    }   OPTIONAL,   -- Need ON
    ...
}

NavModelCNAV-KeplerianSet ::= SEQUENCE {
    cnavTop             INTEGER (0..2015),
    cnavURAindex        INTEGER (-16..15),
    cnavDeltaA          INTEGER (-33554432..33554431),
    cnavAdot            INTEGER (-16777216..16777215),
    cnavDeltaNo         INTEGER (-65536..65535),
    cnavDeltaNoDot      INTEGER (-4194304..4194303),
    cnavMo              INTEGER (-4294967296..4294967295),
    cnavE               INTEGER (0..8589934591),
    cnavOmega           INTEGER (-4294967296..4294967295),
    cnavOMEGA0          INTEGER (-4294967296..4294967295),
    cnavDeltaOmegaDot   INTEGER (-65536..65535),
    cnavIo              INTEGER (-4294967296..4294967295),
    cnavIoDot           INTEGER (-16384..16383),
    cnavCis             INTEGER (-32768..32767),
    cnavCic             INTEGER (-32768..32767),
    cnavCrs             INTEGER (-8388608..8388607),
    cnavCrc             INTEGER (-8388608..8388607),
    cnavCus             INTEGER (-1048576..1048575),
    cnavCuc             INTEGER (-1048576..1048575),
    ...
}

NavModel-GLONASS-ECEF ::= SEQUENCE {
    gloEn               INTEGER (0..31),
    gloP1               BIT STRING (SIZE(2)),
    gloP2               BOOLEAN,
    gloM                INTEGER (0..3),
    gloX                INTEGER (-67108864..67108863),
    gloXdot             INTEGER (-8388608..8388607),
    gloXdotdot          INTEGER (-16..15),
    gloY                INTEGER (-67108864..67108863),
    gloYdot             INTEGER (-8388608..8388607),
    gloYdotdot          INTEGER (-16..15),
    gloZ                INTEGER (-67108864..67108863),
    gloZdot             INTEGER (-8388608..8388607),
    gloZdotdot          INTEGER (-16..15),
    ...
}

NavModel-SBAS-ECEF ::= SEQUENCE {
    sbasTo              INTEGER (0..5399)                   OPTIONAL,   -- Cond ClockModel
    sbasAccuracy        BIT STRING (SIZE(4)),
    sbasXg              INTEGER (-536870912..536870911),
    sbasYg              INTEGER (-536870912..536870911),
    sbasZg              INTEGER (-16777216..16777215),
    sbasXgDot           INTEGER (-65536..65535),
    sbasYgDot           INTEGER (-65536..65535),
    sbasZgDot           INTEGER (-131072..131071),
    sbasXgDotDot        INTEGER (-512..511),
    sbagYgDotDot        INTEGER (-512..511),
    sbasZgDotDot        INTEGER (-512..511),
    ...
}

NavModel-BDS-KeplerianSet-r12 ::= SEQUENCE {
            bdsAODE-r12             INTEGER (0..31),
            bdsURAI-r12             INTEGER (0..15),
            bdsToe-r12              INTEGER (0..131071),
    bdsAPowerHalf-r12       INTEGER (0..4294967295),
    bdsE-r12                INTEGER (0..4294967295),
    bdsW-r12                INTEGER (-2147483648..2147483647),
    bdsDeltaN-r12           INTEGER (-32768..32767),
    bdsM0-r12               INTEGER (-2147483648..2147483647),
    bdsOmega0-r12           INTEGER (-2147483648..2147483647),
    bdsOmegaDot-r12         INTEGER (-8388608..8388607),
    bdsI0-r12               INTEGER (-2147483648..2147483647),
    bdsIDot-r12             INTEGER (-8192..8191),
    bdsCuc-r12              INTEGER (-131072..131071),
    bdsCus-r12              INTEGER (-131072..131071),
    bdsCrc-r12              INTEGER (-131072..131071),
    bdsCrs-r12              INTEGER (-131072..131071),
    bdsCic-r12              INTEGER (-131072..131071),
    bdsCis-r12              INTEGER (-131072..131071),
    ...
}

NavModel-BDS-KeplerianSet2-r16 ::= SEQUENCE {
        bdsIODE-r16         INTEGER (0..255),
        bdsToe-r16                  INTEGER (0..2047),
        bdsDeltaA-r16           INTEGER (-33554432..33554431),
        bdsAdot-r16                 INTEGER (-16777216..16777216),
        bdsDeltaN0-r16          INTEGER (-65536..65535),
        bdsDeltaN0dot-r16       INTEGER (-4194304..4194303),
        bdsM0-r16                   INTEGER (-4294967296..4294967295),
        bdsE-r16                    INTEGER (0..8589934591),
        bdsOmega-r16            INTEGER (-4294967296..4294967295),
        bdsOmega0-r16           INTEGER (-4294967296..4294967295),
        bdsI0-r16                   INTEGER (-4294967296..4294967295),
        bdsOmegaDot-r16     INTEGER (-262144..262143),
            bdsI0Dot-r16            INTEGER (-16384..16383),
    bdsCuc-r16              INTEGER (-1048576..1048575),
    bdsCus-r16              INTEGER (-1048576..1048575),
        bdsCrc-r16              INTEGER (-8388608..8388607),
        bdsCrs-r16              INTEGER (-8388608..8388607),
    bdsCic-r16              INTEGER (-32768..32767),
    bdsCis-r16              INTEGER (-32768..32767),
    ...
}

NavModel-NavIC-KeplerianSet-r16  ::= SEQUENCE {
    navic-Toe-r16           INTEGER (0..65536),
    navic-URAI-r16          INTEGER (0..15),
    navic-W-r16             INTEGER (-2147483648..2147483647),
    navic-DeltaN-r16        INTEGER (-2097152..2097151),
    navic-M0-r16            INTEGER (-2147483648..2147483647),
    navic-OmegaDot-r16      INTEGER (-2147483648..2147483647),
    navic-E-r16             INTEGER (0..4294967295),
    navic-IDot-r16          INTEGER (-8192..8191),
    navic-APowerHalf-r16    INTEGER (0.. 4294967295),
    navic-I0-r16            INTEGER (-2147483648..2147483647),
    navic-Omega0-r16        INTEGER (-2147483648..2147483647),
    navic-Crs-r16           INTEGER (-32768..32767),
    navic-Cis-r16           INTEGER (-32768..32767),
    navic-Cus-r16           INTEGER (-32768..32767),
    navic-Crc-r16           INTEGER (-32768..32767),
    navic-Cic-r16           INTEGER (-32768..32767),
    navic-Cuc-r16           INTEGER (-32768..32767),
    ...
}

GNSS-RealTimeIntegrity ::= SEQUENCE {
    gnss-BadSignalList  GNSS-BadSignalList,
    ...
}

GNSS-BadSignalList ::= SEQUENCE (SIZE(1..64)) OF BadSignalElement

BadSignalElement ::= SEQUENCE {
    badSVID         SV-ID,
    badSignalID     GNSS-SignalIDs  OPTIONAL,   -- Need OP
    ...
}

GNSS-DataBitAssistance ::= SEQUENCE {
    gnss-TOD                INTEGER (0..3599),
    gnss-TODfrac            INTEGER (0..999)        OPTIONAL,   -- Need ON
    gnss-DataBitsSatList    GNSS-DataBitsSatList,
    ...
}

GNSS-DataBitsSatList ::= SEQUENCE (SIZE(1..64))OF GNSS-DataBitsSatElement

GNSS-DataBitsSatElement ::= SEQUENCE {
    svID                    SV-ID,
    gnss-DataBitsSgnList    GNSS-DataBitsSgnList,
    ...
}

GNSS-DataBitsSgnList ::= SEQUENCE (SIZE(1..8)) OF GNSS-DataBitsSgnElement

GNSS-DataBitsSgnElement ::= SEQUENCE {
    gnss-SignalType         GNSS-SignalID,
    gnss-DataBits           BIT STRING (SIZE (1..1024)),
    ...
}

GNSS-AcquisitionAssistance ::= SEQUENCE {
    gnss-SignalID               GNSS-SignalID,
    gnss-AcquisitionAssistList  GNSS-AcquisitionAssistList,
    ...,
    confidence-r10              INTEGER (0..100)    OPTIONAL    -- Need ON
}

GNSS-AcquisitionAssistList ::= SEQUENCE (SIZE(1..64)) OF GNSS-AcquisitionAssistElement

GNSS-AcquisitionAssistElement ::= SEQUENCE {
    svID                        SV-ID,
    doppler0                    INTEGER (-2048..2047),
    doppler1                    INTEGER (0..63),
    dopplerUncertainty          INTEGER (0..4),
    codePhase                   INTEGER (0..1022),
    intCodePhase                INTEGER (0..127),
    codePhaseSearchWindow       INTEGER (0..31),
    azimuth                     INTEGER (0..511),
    elevation                   INTEGER (0..127),
    ...,
    codePhase1023               BOOLEAN             OPTIONAL,   -- Need OP
    dopplerUncertaintyExt-r10   ENUMERATED {    d60,
                                                d80,
                                                d100,
                                                d120,
                                                noInformation, ... }    OPTIONAL    -- Need ON
}

GNSS-Almanac ::= SEQUENCE {
    weekNumber                  INTEGER (0..255)    OPTIONAL,   -- Need ON
    toa                         INTEGER (0..255)    OPTIONAL,   -- Need ON
    ioda                        INTEGER (0..3)      OPTIONAL,   -- Need ON
    completeAlmanacProvided     BOOLEAN,
    gnss-AlmanacList            GNSS-AlmanacList,
    ...,
    [[  toa-ext-v1240           INTEGER (256..1023) OPTIONAL,   -- Need ON
        ioda-ext-v1240          INTEGER (4..15)     OPTIONAL    -- Need ON
    ]],
    [[
        weekNumber-ext-r16      INTEGER (256..8191)         OPTIONAL,   -- Need ON
        toa-ext2-r16            INTEGER (256..65535)        OPTIONAL    -- Need ON
    ]]
}

GNSS-AlmanacList ::= SEQUENCE (SIZE(1..64)) OF GNSS-AlmanacElement

GNSS-AlmanacElement ::= CHOICE {
    keplerianAlmanacSet             AlmanacKeplerianSet,        -- Model-1
    keplerianNAV-Almanac            AlmanacNAV-KeplerianSet,    -- Model-2
    keplerianReducedAlmanac         AlmanacReducedKeplerianSet, -- Model-3
    keplerianMidiAlmanac            AlmanacMidiAlmanacSet,      -- Model-4
    keplerianGLONASS                AlmanacGLONASS-AlmanacSet,  -- Model-5
    ecef-SBAS-Almanac               AlmanacECEF-SBAS-AlmanacSet,-- Model-6
    ...,
    keplerianBDS-Almanac-r12        AlmanacBDS-AlmanacSet-r12,  -- Model-7
    keplerianNavIC-Almanac-r16      AlmanacNavIC-AlmanacSet-r16 -- Model-8
}

AlmanacKeplerianSet ::= SEQUENCE {
    svID                    SV-ID,
    kepAlmanacE             INTEGER (0..2047),
    kepAlmanacDeltaI        INTEGER (-1024..1023),
    kepAlmanacOmegaDot      INTEGER (-1024..1023),
    kepSV-StatusINAV        BIT STRING (SIZE (4)),
    kepSV-StatusFNAV        BIT STRING (SIZE (2))           OPTIONAL,   -- Need ON
    kepAlmanacAPowerHalf    INTEGER (-4096..4095),
    kepAlmanacOmega0        INTEGER (-32768..32767),
    kepAlmanacW             INTEGER (-32768..32767),
    kepAlmanacM0            INTEGER (-32768..32767),
    kepAlmanacAF0           INTEGER (-32768..32767),
    kepAlmanacAF1           INTEGER (-4096..4095),
    ...
}

AlmanacNAV-KeplerianSet ::= SEQUENCE {
    svID                    SV-ID,
    navAlmE                 INTEGER (0..65535),
    navAlmDeltaI            INTEGER (-32768..32767),
    navAlmOMEGADOT          INTEGER (-32768..32767),
    navAlmSVHealth          INTEGER (0..255),
    navAlmSqrtA             INTEGER (0..16777215),
    navAlmOMEGAo            INTEGER (-8388608..8388607),
    navAlmOmega             INTEGER (-8388608..8388607),
    navAlmMo                INTEGER (-8388608..8388607),
    navAlmaf0               INTEGER (-1024..1023),
    navAlmaf1               INTEGER (-1024..1023),
    ...
}

AlmanacReducedKeplerianSet ::= SEQUENCE {
    svID                    SV-ID,
    redAlmDeltaA            INTEGER (-128..127),
    redAlmOmega0            INTEGER (-64..63),
    redAlmPhi0              INTEGER (-64..63),
    redAlmL1Health          BOOLEAN,
    redAlmL2Health          BOOLEAN,
    redAlmL5Health          BOOLEAN,
    ...
}

AlmanacMidiAlmanacSet ::= SEQUENCE {
    svID                    SV-ID,
    midiAlmE                INTEGER (0..2047),
    midiAlmDeltaI           INTEGER (-1024..1023),
    midiAlmOmegaDot         INTEGER (-1024..1023),
    midiAlmSqrtA            INTEGER (0..131071),
    midiAlmOmega0           INTEGER (-32768..32767),
    midiAlmOmega            INTEGER (-32768..32767),
    midiAlmMo               INTEGER (-32768..32767),
    midiAlmaf0              INTEGER (-1024..1023),
    midiAlmaf1              INTEGER (-512..511),
    midiAlmL1Health         BOOLEAN,
    midiAlmL2Health         BOOLEAN,
    midiAlmL5Health         BOOLEAN,
    ...
}

AlmanacGLONASS-AlmanacSet ::= SEQUENCE {
    gloAlm-NA               INTEGER (1..1461),
    gloAlmnA                INTEGER (1..24),
    gloAlmHA                INTEGER (0..31),
    gloAlmLambdaA           INTEGER (-1048576..1048575),
    gloAlmtlambdaA          INTEGER (0..2097151),
    gloAlmDeltaIa           INTEGER (-131072..131071),
    gloAlmDeltaTA           INTEGER (-2097152..2097151),
    gloAlmDeltaTdotA        INTEGER (-64..63),
    gloAlmEpsilonA          INTEGER (0..32767),
    gloAlmOmegaA            INTEGER (-32768..32767),
    gloAlmTauA              INTEGER (-512..511),
    gloAlmCA                INTEGER (0..1),
    gloAlmMA                BIT STRING (SIZE(2))            OPTIONAL,   -- Need ON
    ...
}

AlmanacECEF-SBAS-AlmanacSet ::= SEQUENCE {
    sbasAlmDataID           INTEGER (0..3),
    svID                    SV-ID,
    sbasAlmHealth           BIT STRING (SIZE(8)),
    sbasAlmXg               INTEGER (-16384..16383),
    sbasAlmYg               INTEGER (-16384..16383),
    sbasAlmZg               INTEGER (-256..255),
    sbasAlmXgdot            INTEGER (-4..3),
    sbasAlmYgDot            INTEGER (-4..3),
    sbasAlmZgDot            INTEGER (-8..7),
    sbasAlmTo               INTEGER (0..2047),
    ...
}

AlmanacBDS-AlmanacSet-r12 ::= SEQUENCE {
    svID                    SV-ID,
    bdsAlmToa-r12           INTEGER (0..255)                    OPTIONAL,   -- Cond NotSameForAllSV
        bdsAlmSqrtA-r12         INTEGER (0..16777215),
    bdsAlmE-r12             INTEGER (0..131071),
    bdsAlmW-r12             INTEGER (-8388608..8388607),
    bdsAlmM0-r12            INTEGER (-8388608..8388607),
    bdsAlmOmega0-r12        INTEGER (-8388608..8388607),
    bdsAlmOmegaDot-r12      INTEGER (-65536..65535),
    bdsAlmDeltaI-r12        INTEGER (-32768..32767),
    bdsAlmA0-r12            INTEGER (-1024..1023),
    bdsAlmA1-r12            INTEGER (-1024..1023),
    bdsSvHealth-r12         BIT STRING (SIZE(9))                OPTIONAL,   -- Cond SV-ID
    ...
}

AlmanacNavIC-AlmanacSet-r16  ::= SEQUENCE {
    svID-r16                    SV-ID,
    navic-AlmToa-r16            INTEGER (0..65535)          OPTIONAL,   -- Cond NotSameForAllSV
    navic-AlmE-r16              INTEGER (0..65535),
    navic-AlmOMEGADOT-r16       INTEGER (-32768..32767),
    navic-AlmSqrtA-r16          INTEGER (0..16777215),
    navic-AlmOMEGAo-r16         INTEGER (-8388608..8388607),
    navic-AlmOmega-r16          INTEGER (-8388608..8388607),
    navic-AlmMo-r16             INTEGER (-8388608..8388607),
    navic-Almaf0-r16            INTEGER (-1024..1023),
    navic-Almaf1-r16            INTEGER (-1024..1023),
    ...
}

GNSS-UTC-Model ::= CHOICE {
    utcModel1           UTC-ModelSet1,          -- Model-1
    utcModel2           UTC-ModelSet2,          -- Model-2
    utcModel3           UTC-ModelSet3,          -- Model-3
    utcModel4           UTC-ModelSet4,          -- Model-4
    ...,
    utcModel5-r12       UTC-ModelSet5-r12       -- Model-5
}

UTC-ModelSet1 ::= SEQUENCE {
    gnss-Utc-A1         INTEGER (-8388608..8388607),
    gnss-Utc-A0         INTEGER (-2147483648..2147483647),
    gnss-Utc-Tot        INTEGER (0..255),
    gnss-Utc-WNt        INTEGER (0..255),
    gnss-Utc-DeltaTls   INTEGER (-128..127),
    gnss-Utc-WNlsf      INTEGER (0..255),
    gnss-Utc-DN         INTEGER (-128..127),
    gnss-Utc-DeltaTlsf  INTEGER (-128..127),
    ...
}

UTC-ModelSet2 ::= SEQUENCE {
    utcA0               INTEGER (-32768..32767),
    utcA1               INTEGER (-4096..4095),
    utcA2               INTEGER (-64..63),
    utcDeltaTls         INTEGER (-128..127),
    utcTot              INTEGER (0..65535),
    utcWNot             INTEGER (0..8191),
    utcWNlsf            INTEGER (0..255),
    utcDN               BIT STRING (SIZE(4)),
    utcDeltaTlsf        INTEGER (-128..127),
    ...,
    [[
        utcWNlsf-ext-r16    INTEGER (256..8191) OPTIONAL    -- Need ON
    ]]
}

UTC-ModelSet3 ::= SEQUENCE {
    nA                  INTEGER (1..1461),
    tauC                INTEGER (-2147483648..2147483647),
    b1                  INTEGER (-1024..1023)                   OPTIONAL,   -- Cond GLONASS-M
    b2                  INTEGER (-512..511)                     OPTIONAL,   -- Cond GLONASS-M
    kp                  BIT STRING (SIZE(2))                    OPTIONAL,   -- Cond GLONASS-M
    ...
}

UTC-ModelSet4 ::= SEQUENCE {
    utcA1wnt            INTEGER (-8388608..8388607),
    utcA0wnt            INTEGER (-2147483648..2147483647),
    utcTot              INTEGER (0..255),
    utcWNt              INTEGER (0..255),
    utcDeltaTls         INTEGER (-128..127),
    utcWNlsf            INTEGER (0..255),
    utcDN               INTEGER (-128..127),
    utcDeltaTlsf        INTEGER (-128..127),
    utcStandardID       INTEGER (0..7),
    ...
}

UTC-ModelSet5-r12 ::= SEQUENCE {
    utcA0-r12           INTEGER (-2147483648..2147483647),
    utcA1-r12           INTEGER (-8388608..8388607),
    utcDeltaTls-r12     INTEGER (-128..127),
    utcWNlsf-r12        INTEGER (0..255),
    utcDN-r12           INTEGER (0..255),
    utcDeltaTlsf-r12    INTEGER (-128..127),
    ...
}

GNSS-AuxiliaryInformation ::= CHOICE {
    gnss-ID-GPS     GNSS-ID-GPS,
    gnss-ID-GLONASS GNSS-ID-GLONASS,
    ...,
    [[  gnss-ID-BDS-r16     GNSS-ID-BDS-r16
    ]]
}

GNSS-ID-GPS ::= SEQUENCE    (SIZE(1..64)) OF GNSS-ID-GPS-SatElement

GNSS-ID-GPS-SatElement ::= SEQUENCE {
    svID                SV-ID,
    signalsAvailable    GNSS-SignalIDs,
    ...
}

GNSS-ID-GLONASS ::= SEQUENCE (SIZE(1..64)) OF GNSS-ID-GLONASS-SatElement

GNSS-ID-GLONASS-SatElement ::= SEQUENCE {
    svID                SV-ID,
    signalsAvailable    GNSS-SignalIDs,
    channelNumber       INTEGER (-7..13)        OPTIONAL,       -- Cond FDMA
    ...
}

GNSS-ID-BDS-r16 ::= SEQUENCE    (SIZE(1..64)) OF GNSS-ID-BDS-SatElement-r16

GNSS-ID-BDS-SatElement-r16 ::= SEQUENCE {
    svID-r16            SV-ID,
            satType-r16             INTEGER (0..3),
    ...
}

BDS-DifferentialCorrections-r12 ::= SEQUENCE {
    dbds-RefTime-r12            INTEGER (0..3599),
    bds-SgnTypeList-r12         BDS-SgnTypeList-r12,
    ...
}

BDS-SgnTypeList-r12 ::= SEQUENCE (SIZE (1..3)) OF BDS-SgnTypeElement-r12

BDS-SgnTypeElement-r12 ::= SEQUENCE {
    gnss-SignalID               GNSS-SignalID               OPTIONAL,   -- Need ON
    dbds-CorrectionList-r12     DBDS-CorrectionList-r12,
    ...
}

DBDS-CorrectionList-r12 ::= SEQUENCE (SIZE (1..64)) OF DBDS-CorrectionElement-r12

DBDS-CorrectionElement-r12 ::= SEQUENCE {
    svID                        SV-ID,
    bds-UDREI-r12               INTEGER (0..15),
    bds-RURAI-r12               INTEGER (0..15),
    bds-ECC-DeltaT-r12          INTEGER (-4096..4095),
    ...
}

BDS-GridModelParameter-r12 ::= SEQUENCE {
    bds-RefTime-r12         INTEGER (0..3599),
        gridIonList-r12         GridIonList-r12,
    ...
}

GridIonList-r12 ::= SEQUENCE (SIZE (1..320)) OF GridIonElement-r12

GridIonElement-r12 ::= SEQUENCE {
    igp-ID-r12              INTEGER (1..320),
    dt-r12                  INTEGER (0..511),
    givei-r12               INTEGER (0..15) ,
    ...
}

GNSS-RTK-Observations-r15 ::= SEQUENCE {
                                                                                                    epochTime-r15                           GNSS-SystemTime,
                                                                                                    gnss-ObservationList-r15                GNSS-ObservationList-r15,
                                                                                                    ...
                                                                                                }

GNSS-ObservationList-r15 ::= SEQUENCE (SIZE(1..64)) OF GNSS-RTK-SatelliteDataElement-r15

GNSS-RTK-SatelliteDataElement-r15 ::= SEQUENCE{
    svID-r15                                SV-ID,
    integer-ms-r15                          INTEGER (0..254)                OPTIONAL,   -- Need ON
    rough-range-r15                         INTEGER (0..1023),
    rough-phase-range-rate-r15              INTEGER (-8192..8191)           OPTIONAL,   -- Need ON
    gnss-rtk-SatelliteSignalDataList-r15    GNSS-RTK-SatelliteSignalDataList-r15,
    ...
}

GNSS-RTK-SatelliteSignalDataList-r15 ::= SEQUENCE (SIZE(1..24)) OF
                                                        GNSS-RTK-SatelliteSignalDataElement-r15

GNSS-RTK-SatelliteSignalDataElement-r15 ::= SEQUENCE {
    gnss-SignalID-r15                   GNSS-SignalID,
    fine-PseudoRange-r15                INTEGER (-524288..524287),
    fine-PhaseRange-r15                 INTEGER (-8388608..8388607),
    lockTimeIndicator-r15               INTEGER (0..1023),
    halfCycleAmbiguityIndicator-r15     BIT STRING (SIZE (1)),
    carrier-to-noise-ratio-r15          INTEGER (0..1023)                   OPTIONAL,   -- Need ON
    fine-PhaseRangeRate-r15             INTEGER (-16384..16383)             OPTIONAL,   -- Need ON
    ...
}

GLO-RTK-BiasInformation-r15 ::= SEQUENCE{
    referenceStationID-r15      GNSS-ReferenceStationID-r15,
    cpbIndicator-r15            BIT STRING (SIZE(1)),
    l1-ca-cpBias-r15            INTEGER (-32768..32767)         OPTIONAL,       -- Need ON
    l1-p-cpBias-r15             INTEGER (-32768..32767)         OPTIONAL,       -- Need ON
    l2-ca-cpBias-r15            INTEGER (-32768..32767)         OPTIONAL,       -- Need ON
    l2-p-cpBias-r15             INTEGER (-32768..32767)         OPTIONAL,       -- Need ON
    ...
}

GNSS-RTK-MAC-CorrectionDifferences-r15 ::= SEQUENCE {
    networkID-r15                       GNSS-NetworkID-r15,
    subNetworkID-r15                    GNSS-SubNetworkID-r15               OPTIONAL,   -- Need ON
    master-ReferenceStationID-r15       GNSS-ReferenceStationID-r15,
    l1-r15                              GNSS-FrequencyID-r15                OPTIONAL,   -- Need OP
    l2-r15                              GNSS-FrequencyID-r15                OPTIONAL,   -- Need OP
    rtkCorrectionDifferencesList-r15    RTK-CorrectionDifferencesList-r15,
    ...
}

RTK-CorrectionDifferencesList-r15 ::= SEQUENCE (SIZE (1..32)) OF
                                            RTK-CorrectionDifferencesElement-r15

RTK-CorrectionDifferencesElement-r15 ::= SEQUENCE {
    epochTime-r15                           GNSS-SystemTime,
    auxiliary-referenceStationID-r15        GNSS-ReferenceStationID-r15,
    geometric-ionospheric-corrections-differences-r15
                                            Geometric-Ionospheric-Corrections-Differences-r15,
    ...
}

Geometric-Ionospheric-Corrections-Differences-r15 ::= SEQUENCE (SIZE(1..64)) OF
                                    Geometric-Ionospheric-Corrections-Differences-Element-r15

Geometric-Ionospheric-Corrections-Differences-Element-r15 ::= SEQUENCE {
    svID-r15                                        SV-ID,
    ambiguityStatusFlag-r15                         INTEGER (0..3),
    non-synch-count-r15                             INTEGER (0..7),
    geometricCarrierPhaseCorrectionDifference-r15   INTEGER (-65536..65535),
    iod-r15                                         BIT STRING (SIZE(11)),
    ionosphericCarrierPhaseCorrectionDifference-r15 INTEGER (-65536..65535),
    ...
}

GNSS-RTK-Residuals-r15 ::= SEQUENCE {
    epochTime-r15                       GNSS-SystemTime,
    referenceStationID-r15              GNSS-ReferenceStationID-r15,
    n-Refs-r15                          INTEGER (0..127),
    l1-r15                              GNSS-FrequencyID-r15                OPTIONAL,   -- Need OP
    l2-r15                              GNSS-FrequencyID-r15                OPTIONAL,   -- Need OP
    rtk-residuals-list-r15              RTK-Residuals-List-r15,
    ...
}

RTK-Residuals-List-r15 ::= SEQUENCE (SIZE(1..64)) OF RTK-Residuals-Element-r15

RTK-Residuals-Element-r15 ::= SEQUENCE {
    svID-r15            SV-ID,
    s-oc-r15            INTEGER (0..255),
    s-od-r15            INTEGER (0..511),
    s-oh-r15            INTEGER (0..63),
    s-lc-r15            INTEGER (0..1023),
    s-ld-r15            INTEGER (0..1023),
    ...
}

GNSS-RTK-FKP-Gradients-r15 ::= SEQUENCE {
    referenceStationID-r15              GNSS-ReferenceStationID-r15,
    epochTime-r15                       GNSS-SystemTime,
    l1-r15                              GNSS-FrequencyID-r15                OPTIONAL,   -- Need OP
    l2-r15                              GNSS-FrequencyID-r15                OPTIONAL,   -- Need OP
    fkp-gradients-list-r15              FKP-Gradients-List-r15,
    ...
}

FKP-Gradients-List-r15 ::= SEQUENCE (SIZE(1..64)) OF FKP-Gradients-Element-r15

FKP-Gradients-Element-r15 ::= SEQUENCE {
    svID-r15                            SV-ID,
    iod-r15                             BIT STRING (SIZE(11)),
    north-geometric-gradient-r15        INTEGER (-2048..2047),
    east-geometric-gradient-r15         INTEGER (-2048..2047),
    north-ionospheric-gradient-r15      INTEGER (-8192..8191),
    east-ionospheric-gradient-r15       INTEGER (-8192..8191),
    ...
}

GNSS-SSR-OrbitCorrections-r15 ::= SEQUENCE {
    epochTime-r15                       GNSS-SystemTime,
    ssrUpdateInterval-r15               INTEGER (0..15),
    satelliteReferenceDatum-r15         ENUMERATED { itrf, regional, ... },
    iod-ssr-r15                         INTEGER (0..15),
    ssr-OrbitCorrectionList-r15         SSR-OrbitCorrectionList-r15,
    ...,
    [[
        orbit-IntegrityParameters-r17   ORBIT-IntegrityParameters-r17   OPTIONAL -- Need OR
    ]]
}

SSR-OrbitCorrectionList-r15 ::= SEQUENCE (SIZE(1..64)) OF SSR-OrbitCorrectionSatelliteElement-r15

SSR-OrbitCorrectionSatelliteElement-r15 ::= SEQUENCE {
    svID-r15                            SV-ID,
    iod-r15                             BIT STRING (SIZE(11)),
    delta-radial-r15                    INTEGER (-2097152..2097151),
    delta-AlongTrack-r15                INTEGER (-524288..524287),
    delta-CrossTrack-r15                INTEGER (-524288..524287),
    dot-delta-radial-r15                INTEGER (-1048576..1048575)     OPTIONAL, -- Need ON
    dot-delta-AlongTrack-r15            INTEGER (-262144..262143)       OPTIONAL, -- Need ON
    dot-delta-CrossTrack-r15            INTEGER (-262144..262143)       OPTIONAL, -- Need ON
    ...,
    [[
        ssr-IntegrityOrbitBounds-r17    SSR-IntegrityOrbitBounds-r17    OPTIONAL  -- Cond Integrity1
    ]]
}

ORBIT-IntegrityParameters-r17 ::= SEQUENCE {
    probOnsetConstFault-r17                 INTEGER (0..255),
    meanConstFaultDuration-r17              INTEGER (1..3600),
    probOnsetSatFault-r17                   INTEGER (0..255),
    meanSatFaultDuration-r17                INTEGER (1..3600),
    orbitRangeErrorCorrelationTime-r17      INTEGER (0..255)            OPTIONAL, -- Need OR
    orbitRangeRateErrorCorrelationTime-r17  INTEGER (0..255)            OPTIONAL, -- Cond Integrity2
    ...
}

SSR-IntegrityOrbitBounds-r17 ::= SEQUENCE {
    meanOrbitError-r17              RAC-OrbitalErrorComponents-r17,
    stdDevOrbitError-r17            RAC-OrbitalErrorComponents-r17,
    meanOrbitRateError-r17          RAC-OrbitalErrorComponents-r17,
    stdDevOrbitRateError-r17        RAC-OrbitalErrorComponents-r17,
    ...
}

RAC-OrbitalErrorComponents-r17  ::= SEQUENCE {
    radial-r17          INTEGER (0..255),
    alongTrack-r17      INTEGER (0..255),
    crossTrack-r17      INTEGER (0..255)
}

GNSS-SSR-ClockCorrections-r15 ::= SEQUENCE {
    epochTime-r15                       GNSS-SystemTime,
    ssrUpdateInterval-r15               INTEGER (0..15),
    iod-ssr-r15                         INTEGER (0..15),
    ssr-ClockCorrectionList-r15         SSR-ClockCorrectionList-r15,
    ...,
    [[
        clock-IntegrityParameters-r17   CLOCK-IntegrityParameters-r17       OPTIONAL   -- Need OR
    ]]
}

SSR-ClockCorrectionList-r15 ::= SEQUENCE (SIZE(1..64)) OF SSR-ClockCorrectionSatelliteElement-r15

SSR-ClockCorrectionSatelliteElement-r15 ::= SEQUENCE {
    svID-r15                            SV-ID,
    delta-Clock-C0-r15                  INTEGER (-2097152..2097151),
    delta-Clock-C1-r15                  INTEGER (-1048576..1048575)         OPTIONAL, -- Need ON
    delta-Clock-C2-r15                  INTEGER (-67108864..67108863)       OPTIONAL, -- Need ON
    ...,
    [[
        ssr-IntegrityClockBounds-r17    SSR-IntegrityClockBounds-r17        OPTIONAL  -- Need OR
    ]]
}

CLOCK-IntegrityParameters-r17 ::= SEQUENCE {
    clockRangeErrorCorrelationTime-r17      INTEGER (0..255),
    clockRangeRateErrorCorrelationTime-r17  INTEGER (0..255),
    ...
}

SSR-IntegrityClockBounds-r17 ::= SEQUENCE {
    meanClock-r17                           INTEGER (0..255),
    stdDevClock-r17                         INTEGER (0..255),
    meanClockRate-r17                       INTEGER (0..255),
    stdDevClockRate-r17                     INTEGER (0..255),
    ...
}

GNSS-SSR-CodeBias-r15 ::= SEQUENCE {
    epochTime-r15                       GNSS-SystemTime,
    ssrUpdateInterval-r15               INTEGER (0..15),
    iod-ssr-r15                         INTEGER (0..15),
    ssr-CodeBiasSatList-r15             SSR-CodeBiasSatList-r15,
    ...
}

SSR-CodeBiasSatList-r15 ::= SEQUENCE (SIZE(1..64)) OF SSR-CodeBiasSatElement-r15

SSR-CodeBiasSatElement-r15 ::= SEQUENCE {
    svID-r15                            SV-ID,
    ssr-CodeBiasSignalList-r15          SSR-CodeBiasSignalList-r15,
    ...
}

SSR-CodeBiasSignalList-r15 ::= SEQUENCE (SIZE(1..16)) OF SSR-CodeBiasSignalElement-r15

SSR-CodeBiasSignalElement-r15 ::= SEQUENCE {
    signal-and-tracking-mode-ID-r15     GNSS-SignalID,
    codeBias-r15                        INTEGER (-8192..8191),
    ...,
    [[
    ssr-IntegrityCodeBiasBounds-r17     SSR-IntegrityCodeBiasBounds-r17     OPTIONAL    -- Need OR
    ]]
}

SSR-IntegrityCodeBiasBounds-r17 ::= SEQUENCE {
    meanCodeBias-r17                    INTEGER (0..255),
    stdDevCodeBias-r17                  INTEGER (0..255),
    meanCodeBiasRate-r17                INTEGER (0..255),
    stdDevCodeBiasRate-r17              INTEGER (0..255),
    ...
}

GNSS-SSR-URA-r16 ::= SEQUENCE {
    epochTime-r16                       GNSS-SystemTime,
    ssrUpdateInterval-r16               INTEGER (0..15),
    iod-ssr-r16                         INTEGER (0..15),
    ssr-URA-SatList-r16                 SSR-URA-SatList-r16,
    ...
}

SSR-URA-SatList-r16 ::= SEQUENCE (SIZE(1..64)) OF SSR-URA-SatElement-r16

SSR-URA-SatElement-r16 ::= SEQUENCE {
    svID-r16                            SV-ID,
    ssr-URA-r16                         BIT STRING (SIZE (6)),
    ...
}

GNSS-SSR-PhaseBias-r16 ::= SEQUENCE {
    epochTime-r16                       GNSS-SystemTime,
    ssrUpdateInterval-r16               INTEGER (0..15),
    iod-ssr-r16                         INTEGER (0..15),
    ssr-PhaseBiasSatList-r16            SSR-PhaseBiasSatList-r16,
    ...
}

SSR-PhaseBiasSatList-r16 ::= SEQUENCE (SIZE(1..64)) OF SSR-PhaseBiasSatElement-r16

SSR-PhaseBiasSatElement-r16 ::= SEQUENCE {
    svID-r16                            SV-ID,
    ssr-PhaseBiasSignalList-r16         SSR-PhaseBiasSignalList-r16,
    ...
}

SSR-PhaseBiasSignalList-r16 ::= SEQUENCE (SIZE(1..16)) OF SSR-PhaseBiasSignalElement-r16

SSR-PhaseBiasSignalElement-r16 ::= SEQUENCE {
    signal-and-tracking-mode-ID-r16     GNSS-SignalID,
    phaseBias-r16                       INTEGER (-16384..16383),
    phaseDiscontinuityIndicator-r16     INTEGER (0..3),
    phaseBiasIntegerIndicator-r16       INTEGER (0..3)                  OPTIONAL,   -- Need OP
    ...,
    [[
    ssr-IntegrityPhaseBiasBounds-r17    SSR-IntegrityPhaseBiasBounds-r17    OPTIONAL    -- Need OR
    ]]
}

SSR-IntegrityPhaseBiasBounds-r17 ::= SEQUENCE {
    meanPhaseBias-r17                   INTEGER (0..255),
    stdDevPhaseBias-r17                 INTEGER (0..255),
    meanPhaseBiasRate-r17               INTEGER (0..255),
    stdDevPhaseBiasRate-r17             INTEGER (0..255),
    ...
}

GNSS-SSR-STEC-Correction-r16 ::= SEQUENCE {
    epochTime-r16                       GNSS-SystemTime,
    ssrUpdateInterval-r16               INTEGER (0..15),
    iod-ssr-r16                         INTEGER (0..15),
    correctionPointSetID-r16            INTEGER (0..16383),
    stec-SatList-r16                    STEC-SatList-r16,
    ...,
    [[
        stec-IntegrityParameters-r17    STEC-IntegrityParameters-r17        OPTIONAL    -- Need OR
    ]]
}

STEC-SatList-r16 ::= SEQUENCE (SIZE(1..64)) OF STEC-SatElement-r16

STEC-SatElement-r16 ::= SEQUENCE {
    svID-r16                            SV-ID,
    stecQualityIndicator-r16            BIT STRING (SIZE(6)),
    stec-C00-r16                        INTEGER (-8192..8191),
    stec-C01-r16                        INTEGER (-2048..2047)               OPTIONAL, -- Need ON
    stec-C10-r16                        INTEGER (-2048..2047)               OPTIONAL, -- Need ON
    stec-C11-r16                        INTEGER (-512..511)                 OPTIONAL, -- Need ON
    ...,
    [[
        stec-IntegrityErrorBounds-r17   STEC-IntegrityErrorBounds-r17   OPTIONAL  -- Cond Integrity1
    ]]
}

STEC-IntegrityParameters-r17 ::= SEQUENCE {
    probOnsetIonoFault-r17                      INTEGER (0..255),
    meanIonoFaultDuration-r17                   INTEGER (1..256),
    ionoRangeErrorCorrelationTime-r17           INTEGER (1..255)        OPTIONAL, -- Need OR
    ionoRangeRateErrorCorrelationTime-r17       INTEGER (1..255)        OPTIONAL, -- Cond Integrity2
    ...
}

STEC-IntegrityErrorBounds-r17 ::= SEQUENCE {
    meanIonosphere-r17                          INTEGER (0..255),
    stdDevIonosphere-r17                        INTEGER (0..255),
    meanIonosphereRate-r17                      INTEGER (0..255),
    stdDevIonosphereRate-r17                    INTEGER (0..255),
    ...
}

GNSS-SSR-GriddedCorrection-r16 ::= SEQUENCE {
    epochTime-r16                               GNSS-SystemTime,
    ssrUpdateInterval-r16                       INTEGER (0..15),
    iod-ssr-r16                                 INTEGER (0..15),
    troposphericDelayQualityIndicator-r16       BIT STRING (SIZE(6))        OPTIONAL, -- Cond Tropo
    correctionPointSetID-r16                    INTEGER (0..16383),
    gridList-r16                                GridList-r16,
    ...,
    [[
    ssr-GriddedCorrectionIntegrityParameters-r17
                                                SSR-GriddedCorrectionIntegrityParameters-r17
                                                                            OPTIONAL  -- Need OR
    ]]
}

GridList-r16 ::= SEQUENCE (SIZE(1..64)) OF GridElement-r16

GridElement-r16 ::= SEQUENCE {
    tropospericDelayCorrection-r16  TropospericDelayCorrection-r16  OPTIONAL, -- Need ON
    stec-ResidualSatList-r16        STEC-ResidualSatList-r16        OPTIONAL, -- Need ON
    ...
}

TropospericDelayCorrection-r16 ::= SEQUENCE {
    tropoHydroStaticVerticalDelay-r16       INTEGER (-256..255),
    tropoWetVerticalDelay-r16               INTEGER (-128..127),
    ...,
    [[
    tropoDelayIntegrityErrorBounds-r17      TropoDelayIntegrityErrorBounds-r17
                                                                    OPTIONAL -- Cond Integrity1
    ]]
}

STEC-ResidualSatList-r16 ::= SEQUENCE (SIZE(1..64)) OF STEC-ResidualSatElement-r16

STEC-ResidualSatElement-r16 ::= SEQUENCE {
    svID-r16                            SV-ID,
    stecResidualCorrection-r16          CHOICE {
                    b7-r16                  INTEGER (-64..63),
                    b16-r16                 INTEGER (-32768..32767)
    },
    ...
}

SSR-GriddedCorrectionIntegrityParameters-r17 ::= SEQUENCE {
    probOnsetTroposphereFault-r17                   INTEGER (0..255),
    meanTroposphereFaultDuration-r17                INTEGER (1..256),
    troposphereRangeErrorCorrelationTime-r17        INTEGER (1..255)    OPTIONAL, -- Need OR
    troposphereRangeRateErrorCorrelationTime-r17    INTEGER (1..255)    OPTIONAL, -- Cond Integrity2
    ...
}

TropoDelayIntegrityErrorBounds-r17 ::= SEQUENCE {
    meanTroposphereVerticalHydroStaticDelay-r17         INTEGER (0..255),
    stdDevTroposphereVerticalHydroStaticDelay-r17       INTEGER (0..255),
    meanTroposphereVerticalWetDelay-r17                 INTEGER (0..255),
    stdDevTroposphereVerticalWetDelay-r17               INTEGER (0..255),
    meanTroposphereVerticalHydroStaticDelayRate-r17     INTEGER (0..255),
    stdDevTroposphereVerticalHydroStaticDelayRate-r17   INTEGER (0..255),
    meanTroposphereVerticalWetDelayRate-r17             INTEGER (0..255),
    stdDevTroposphereVerticalWetDelayRate-r17           INTEGER (0..255),
    ...
}

NavIC-DifferentialCorrections-r16 ::= SEQUENCE {
    navic-RefTOWC-r16               INTEGER (0..50400),
    navic-CorrectionListAutoNav-r16 NavIC-CorrectionListAutoNav-r16,
    ...
}

NavIC-CorrectionListAutoNav-r16 ::= SEQUENCE (SIZE (1..64)) OF NavIC-CorrectionElementAutoNav-r16

NavIC-CorrectionElementAutoNav-r16 ::= SEQUENCE {
    svID                        SV-ID,
    navic-Tod-r16               INTEGER (0..65535),
    navic-iodec-r16             INTEGER (0..255),
    navic-UDRAI-r16             INTEGER (-16..15),
    navic-UDRArateI-r16         INTEGER (-16..15),
    navic-EDC-r16               NavIC-EDC-r16,
    navic-CDC-r16               NavIC-CDC-r16,
    ...
}

NavIC-EDC-r16 ::= SEQUENCE {
    navic-AlphaEDC-r16              INTEGER (-8192..8191),
    navic-BetaEDC-r16               INTEGER (-8192..8191),
    navic-GammaEDC-r16              INTEGER (-16384..16383),
    navic-AoIcorrection-r16         INTEGER (-2048..2047),
    navic-AoRAcorrection-r16        INTEGER (-2048..2047),
    navic-SemiMajorcorrection-r16   INTEGER (-2048..2047),
    ...
}

NavIC-CDC-r16 ::= SEQUENCE {
    navic-ClockBiasCorrection-r16   INTEGER (-4096..4095),
    navic-ClockDriftCorrection-r16  INTEGER (-128..127),
    ...
}

        NavIC-GridModelParameter-r16 ::= SEQUENCE {
            navic-RefTOWC-r16   INTEGER (0..50400),
            regionMasked-r16    INTEGER (0..1023),
            regionIgpList-r16   RegionIgpList-r16,
            ...
        }

        RegionIgpList-r16 ::= SEQUENCE (SIZE (1..16)) OF RegionIgpElement-r16

        RegionIgpElement-r16 ::= SEQUENCE {
            regionID-r16    INTEGER (0..15),
            givei1-r16      INTEGER (0..15),
            givd1-r16       INTEGER (0..511),
            givei2-r16      INTEGER (0..15),
            givd2-r16       INTEGER (0..511),
            givei3-r16      INTEGER (0..15),
            givd3-r16       INTEGER (0..511),
            givei4-r16      INTEGER (0..15),
            givd4-r16       INTEGER (0..511),
            givei5-r16      INTEGER (0..15),
            givd5-r16       INTEGER (0..511),
            givei6-r16      INTEGER (0..15),
            givd6-r16       INTEGER (0..511),
            givei7-r16      INTEGER (0..15),
            givd7-r16       INTEGER (0..511),
            givei8-r16      INTEGER (0..15),
            givd8-r16       INTEGER (0..511),
            givei9-r16      INTEGER (0..15),
            givd9-r16       INTEGER (0..511),
            givei10-r16     INTEGER (0..15),
            givd10-r16      INTEGER (0..511),
            givei11-r16     INTEGER (0..15),
            givd11-r16      INTEGER (0..511),
            givei12-r16     INTEGER (0..15),
            givd12-r16      INTEGER (0..511),
            givei13-r16     INTEGER (0..15),
            givd13-r16      INTEGER (0..511),
            givei14-r16     INTEGER (0..15),
            givd14-r16      INTEGER (0..511),
            givei15-r16     INTEGER (0..15),
            givd15-r16      INTEGER (0..511),
            ...
        }

GNSS-SSR-OrbitCorrectionsSet2-r17 ::= SEQUENCE {
    refEph-r17                                  ENUMERATED { b1c,...},
    gnss-SSR-OrbitCorrections-r17               GNSS-SSR-OrbitCorrections-r15,
    ...
}

GNSS-SSR-ClockCorrectionsSet2-r17 ::= SEQUENCE {
    refEph-r17                              ENUMERATED { b1c,...},
    gnss-SSR-ClockCorrections-r17           GNSS-SSR-ClockCorrections-r15,
    ...
}

GNSS-SSR-URA-Set2-r17 ::= SEQUENCE {
    refEph-r17                          ENUMERATED { b1c,...},
    gnss-SSR-URA-r17                    GNSS-SSR-URA-r16,
    ...
}

GNSS-LOS-NLOS-GriddedIndications-r18 ::= SEQUENCE {
    gridPointsSetID-r18                         INTEGER (0..16383),
    expirationTime-r18                          UTCTime             OPTIONAL, -- Need ON
    gridList-r18                                GridList-r18,
    ...
}

GridList-r18 ::= SEQUENCE (SIZE(1..1024)) OF GridElement-r18

GridElement-r18 ::= SEQUENCE {
    gnss-LOS-InfoList-r18               GNSS-LOS-InfoList-r18       OPTIONAL, -- Need ON
    ...
}

GNSS-LOS-InfoList-r18 ::= SEQUENCE (SIZE(1..64)) OF GNSS-LOS-InfoElement-r18

GNSS-LOS-InfoElement-r18 ::= SEQUENCE {
    svID-r18                        SV-ID,
    los-r18                         ENUMERATED{true, false, uncertain},
    ...
}

GNSS-SSR-SatellitePCVResiduals-r18 ::= SEQUENCE {
    iod-ssr-PCVResiduals-r18            INTEGER (0..64),
    ssr-SatellitePCV-List-r18           SSR-SatellitePCV-List-r18,
    ...
}

SSR-SatellitePCV-List-r18 ::= SEQUENCE (SIZE(1..64)) OF SSR-SatellitePCV-Element-r18

SSR-SatellitePCV-Element-r18 ::= SEQUENCE {
    svID-r18                            SV-ID,
    ssr-SatellitePCV-FrequencyList-r18  SSR-SatellitePCV-FrequencyList-r18,
    ...
}

SSR-SatellitePCV-FrequencyList-r18 ::= SEQUENCE (SIZE(1..8)) OF
                                                        SSR-SatellitePCV-FrequencyElement-r18

SSR-SatellitePCV-FrequencyElement-r18 ::= SEQUENCE {
    frequencyID-r18                         GNSS-FrequencyID-r15,
    phaseCenterVariations-r18               SSR-PhaseCenterVariationList-r18,
    ...
}

SSR-PhaseCenterVariationList-r18 ::= SEQUENCE (SIZE(1..32)) OF INTEGER(-1024..1023)

A-GNSS-Error ::= CHOICE {
    locationServerErrorCauses       GNSS-LocationServerErrorCauses,
    targetDeviceErrorCauses         GNSS-TargetDeviceErrorCauses,
    ...
}

GNSS-LocationServerErrorCauses ::= SEQUENCE {
    cause       ENUMERATED  {
                    undefined,
                    undeliveredAssistanceDataIsNotSupportedByServer,
                    undeliveredAssistanceDataIsSupportedButCurrentlyNotAvailableByServer,                               undeliveredAssistanceDataIsPartlyNotSupportedAndPartlyNotAvailableByServer,
                    ...,
                unconfirmedPeriodicAssistanceDataIsNotSupported-v1510,
                unconfirmedPeriodicAssistanceDataIsSupportedButCurrentlyNotAvailable-v1510,
                unconfirmedPeriodicAssistanceDataIsPartlyNotSupportedAndPartlyNotAvailable-v1510,
                undeliveredPeriodicAssistanceDataIsCurrentlyNotAvailable-v1510
                    },
    ...
}

GNSS-TargetDeviceErrorCauses ::= SEQUENCE {
    cause       ENUMERATED {    undefined,
                                thereWereNotEnoughSatellitesReceived,
                                assistanceDataMissing,
                                notAllRequestedMeasurementsPossible,
                                ...
                            },
    fineTimeAssistanceMeasurementsNotPossible       NULL        OPTIONAL,
    adrMeasurementsNotPossible                      NULL        OPTIONAL,
    multiFrequencyMeasurementsNotPossible           NULL        OPTIONAL,
    ...,
    [[
    remoteUE-Indication-r18             ENUMERATED {true}       OPTIONAL    -- Cond NR
    ]]
}

GNSS-FrequencyID-r15    ::= SEQUENCE {
    gnss-FrequencyID-r15        INTEGER (0 .. 7),
    ...
}

GNSS-ID ::= SEQUENCE {
    gnss-id             ENUMERATED{ gps, sbas, qzss, galileo, glonass, ..., bds, navic-v1610 },
    ...
}

GNSS-NetworkID-r15 ::= SEQUENCE {
    networkID-r15                   INTEGER (0..255),
    ...
}

GNSS-PeriodicControlParam-r15 ::= SEQUENCE {
    deliveryAmount-r15          INTEGER (1..32),
    deliveryInterval-r15        INTEGER (1..64),
    ...
}

GNSS-ReferenceStationID-r15 ::= SEQUENCE {
    referenceStationID-r15          INTEGER (0..65535),
    providerName-r15                VisibleString (SIZE (1..32))        OPTIONAL, -- Need ON
    ...
}

GNSS-SignalID   ::= SEQUENCE {
    gnss-SignalID       INTEGER (0 .. 7),
    ...,
    [[
        gnss-SignalID-Ext-r15   INTEGER (8..23)         OPTIONAL    -- Need ON
    ]]
}

GNSS-SignalIDs  ::= SEQUENCE {
    gnss-SignalIDs      BIT STRING (SIZE(8)),
    ...,
    [[
        gnss-SignalIDs-Ext-r15  BIT STRING (SIZE(16))           OPTIONAL    -- Need ON
    ]]
}

GNSS-SubNetworkID-r15 ::= SEQUENCE {
    subNetworkID-r15                INTEGER (0..15),
    ...
}

SBAS-ID ::= SEQUENCE {
    sbas-id             ENUMERATED { waas, egnos, msas, gagan, ...},
    ...
}

SV-ID ::= SEQUENCE {
    satellite-id        INTEGER(0..63),
    ...
}

END