summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-02-04 22:35:24 +0100
committerPascal Quantin <pascal.quantin@gmail.com>2015-02-04 22:47:34 +0000
commit86d24b0486014136137c98e2bb9d1651d01c8606 (patch)
tree9bc1818c5e1bc8b2d76b2d8185b1ca60a73dc801
parent40d06bd6ea1d6a00f0306610f0ec415eb0aa245b (diff)
downloadwireshark-86d24b0486014136137c98e2bb9d1651d01c8606.tar.gz
LPP: upgrade dissector to v12.3.0
Change-Id: Ibc2aa3127efcfbae33e6f3729d0e1e427db1c0fe Reviewed-on: https://code.wireshark.org/review/6959 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
-rw-r--r--asn1/lpp/LPP.asn400
-rw-r--r--asn1/lpp/lpp.cnf264
-rw-r--r--asn1/lpp/packet-lpp-template.c528
-rw-r--r--asn1/lpp/packet-lpp-template.h4
-rw-r--r--epan/dissectors/packet-lpp.c2085
-rw-r--r--epan/dissectors/packet-lpp.h4
6 files changed, 2741 insertions, 544 deletions
diff --git a/asn1/lpp/LPP.asn b/asn1/lpp/LPP.asn
index 2617174de3..021e3d45bd 100644
--- a/asn1/lpp/LPP.asn
+++ b/asn1/lpp/LPP.asn
@@ -1,8 +1,8 @@
--- 3GPP TS 36.355 V11.6.0 (2014-06)
+-- 3GPP TS 36.355 V12.3.0 (2014-12)
--
LPP-PDU-Definitions {
-itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) lpp (7) version1 (1) lpp-PDU-Definitions (1) }
DEFINITIONS AUTOMATIC TAGS ::=
@@ -215,11 +215,11 @@ AccessTypes ::= SEQUENCE {
}
-ARFCN-ValueEUTRA ::= INTEGER (0..maxEARFCN)
+ARFCN-ValueEUTRA ::= INTEGER (0..maxEARFCN)
ARFCN-ValueEUTRA-v9a0 ::= INTEGER (maxEARFCN-Plus1..maxEARFCN2)
-maxEARFCN INTEGER ::= 65535 -- Maximum value of EUTRA carrier frequency
+maxEARFCN INTEGER ::= 65535 -- Maximum value of EUTRA carrier frequency
maxEARFCN-Plus1 INTEGER ::= 65536 -- Lowest value extended EARFCN range
@@ -340,7 +340,7 @@ EPDU-ID ::= INTEGER (1..256)
EPDU-Name ::= VisibleString (SIZE (1..32))
-EPDU-Body ::= OCTET STRING
+EPDU-Body ::= OCTET STRING
HorizontalVelocity ::= SEQUENCE {
@@ -448,7 +448,7 @@ CommonIEsRequestLocationInformation ::= SEQUENCE {
LocationInformationType ::= ENUMERATED {
locationEstimateRequired,
locationMeasurementsRequired,
- locationEstimatePreferred,
+ locationEstimatePreferred,
locationMeasurementsPreferred,
...
}
@@ -483,9 +483,9 @@ QoS ::= SEQUENCE {
verticalCoordinateRequest BOOLEAN,
verticalAccuracy VerticalAccuracy OPTIONAL, -- Need ON
responseTime ResponseTime OPTIONAL, -- Need ON
- velocityRequest BOOLEAN,
+ velocityRequest BOOLEAN,
...
-}
+}
HorizontalAccuracy ::= SEQUENCE {
accuracy INTEGER(0..127),
@@ -494,14 +494,16 @@ HorizontalAccuracy ::= SEQUENCE {
}
VerticalAccuracy ::= SEQUENCE {
- accuracy INTEGER(0..127),
+ accuracy INTEGER(0..127),
confidence INTEGER(0..100),
...
}
ResponseTime ::= SEQUENCE {
- time INTEGER (1..128),
- ...
+ time INTEGER (1..128),
+ ...,
+ [[ responseTimeEarlyFix-r12 INTEGER (1..128) OPTIONAL -- Need ON
+ ]]
}
Environment ::= ENUMERATED {
@@ -516,7 +518,9 @@ CommonIEsProvideLocationInformation ::= SEQUENCE {
locationEstimate LocationCoordinates OPTIONAL,
velocityEstimate Velocity OPTIONAL,
locationError LocationError OPTIONAL,
- ...
+ ...,
+ [[ earlyFixReport-r12 EarlyFixReport-r12 OPTIONAL
+ ]]
}
LocationCoordinates ::= CHOICE {
@@ -548,11 +552,16 @@ LocationError ::= SEQUENCE {
LocationFailureCause ::= ENUMERATED {
undefined,
requestedMethodNotSupported,
- positionMethodFailure,
+ positionMethodFailure,
periodicLocationMeasurementsNotAvailable,
...
}
+EarlyFixReport-r12 ::= ENUMERATED {
+ noMoreMessages,
+ moreMessagesOnTheWay
+}
+
CommonIEsAbort ::= SEQUENCE {
abortCause ENUMERATED {
@@ -568,7 +577,7 @@ CommonIEsAbort ::= SEQUENCE {
CommonIEsError ::= SEQUENCE {
errorCause ENUMERATED {
undefined,
- lppMessageHeaderError,
+ lppMessageHeaderError,
lppMessageBodyError,
epduError,
incorrectDataValue,
@@ -621,7 +630,7 @@ OTDOA-NeighbourCellInfoElement ::= SEQUENCE {
physCellId INTEGER (0..503),
cellGlobalId ECGI OPTIONAL, -- Need ON
earfcn ARFCN-ValueEUTRA OPTIONAL, -- Cond NotSameAsRef0
- cpLength ENUMERATED {normal, extended, ...}
+ cpLength ENUMERATED {normal, extended, ...}
OPTIONAL, -- Cond NotSameAsRef1
prsInfo PRS-Info OPTIONAL, -- Cond NotSameAsRef2
antennaPortConfig ENUMERATED {ports-1-or-2, ports-4, ...}
@@ -781,19 +790,24 @@ GNSS-GenericAssistDataElement ::= SEQUENCE {
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-ReferenceTime ::= SEQUENCE {
gnss-SystemTime GNSS-SystemTime,
referenceTimeUnc INTEGER (0..127) OPTIONAL, -- Cond noFTA
- gnss-ReferenceTimeForCells SEQUENCE (SIZE (1..16)) OF
+ gnss-ReferenceTimeForCells SEQUENCE (SIZE (1..16)) OF
GNSS-ReferenceTimeForOneCell OPTIONAL, -- Need ON
...
}
-GNSS-ReferenceTimeForOneCell ::= SEQUENCE {
+GNSS-ReferenceTimeForOneCell ::= SEQUENCE {
networkTime NetworkTime,
referenceTimeUnc INTEGER (0..127),
bsAlign ENUMERATED {true} OPTIONAL,
@@ -828,13 +842,13 @@ NetworkTime ::= SEQUENCE {
secondsFromFrameStructureStart INTEGER(0..12533),
fractionalSecondsFromFrameStructureStart INTEGER(0..3999999),
frameDrift INTEGER (-64..63) OPTIONAL, -- Cond GNSSsynch
- cellID CHOICE {
+ 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
+ [[ earfcn-v9a0 ARFCN-ValueEUTRA-v9a0 OPTIONAL -- Cond EARFCN-max
]]
},
uTRA SEQUENCE {
@@ -892,9 +906,9 @@ KlobucharModelParameter ::= SEQUENCE {
NeQuickModelParameter ::= SEQUENCE {
- ai0 INTEGER (0..4095),
- ai1 INTEGER (0..4095),
- ai2 INTEGER (0..4095),
+ 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
@@ -939,7 +953,7 @@ GNSS-DifferentialCorrections ::= SEQUENCE {
DGNSS-SgnTypeList ::= SEQUENCE (SIZE (1..3)) OF DGNSS-SgnTypeElement
DGNSS-SgnTypeElement ::= SEQUENCE {
- gnss-SignalID GNSS-SignalID,
+ gnss-SignalID GNSS-SignalID,
gnss-StatusHealth INTEGER (0..7),
dgnss-SatList DGNSS-SatList,
...
@@ -950,17 +964,17 @@ DGNSS-SatList ::= SEQUENCE (SIZE (1..64)) OF DGNSS-CorrectionsElement
DGNSS-CorrectionsElement ::= SEQUENCE {
svID SV-ID,
iod BIT STRING (SIZE(11)),
- udre INTEGER (0..3),
+ 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
+ udreValidityTime INTEGER (0..7) OPTIONAL, -- Need ON
...
}
GNSS-NavigationModel ::= SEQUENCE {
- nonBroadcastIndFlag INTEGER (0..1),
+ nonBroadcastIndFlag INTEGER (0..1),
gnss-SatelliteList GNSS-NavModelSatelliteList,
...
}
@@ -969,11 +983,13 @@ GNSS-NavModelSatelliteList ::= SEQUENCE (SIZE(1..64)) OF GNSS-NavModelSatelliteE
GNSS-NavModelSatelliteElement ::= SEQUENCE {
svID SV-ID,
- svHealth BIT STRING (SIZE(8)),
- iod BIT STRING (SIZE(11)),
+ svHealth BIT STRING (SIZE(8)),
+ iod BIT STRING (SIZE(11)),
gnss-ClockModel GNSS-ClockModel,
gnss-OrbitModel GNSS-OrbitModel,
- ...
+ ...,
+ [[ svHealthExt-v12xy BIT STRING (SIZE(4)) OPTIONAL -- Need ON
+ ]]
}
GNSS-ClockModel ::= CHOICE {
@@ -982,8 +998,9 @@ GNSS-ClockModel ::= CHOICE {
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
+}
GNSS-OrbitModel ::= CHOICE {
keplerianSet NavModelKeplerianSet, -- Model-1
@@ -991,21 +1008,23 @@ GNSS-OrbitModel ::= CHOICE {
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
}
StandardClockModelList ::= SEQUENCE (SIZE(1..2)) OF StandardClockModelElement
StandardClockModelElement ::= SEQUENCE {
- stanClockToc INTEGER (0..16383),
- stanClockAF2 INTEGER (-2048..2047),
- stanClockAF1 INTEGER (-131072..131071),
- stanClockAF0 INTEGER (-134217728..134217727),
- stanClockTgd INTEGER (-512..511) OPTIONAL, -- Need ON
- stanModelID INTEGER (0..1) OPTIONAL, -- Need ON
- ...
-}
+ 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 {
@@ -1054,8 +1073,19 @@ SBAS-ClockModel ::= SEQUENCE {
}
+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),
+ ...
+}
+
+
NavModelKeplerianSet ::= SEQUENCE {
- keplerToe INTEGER (0 .. 16383),
+ keplerToe INTEGER (0 .. 16383),
keplerW INTEGER (-2147483648..2147483647),
keplerDeltaN INTEGER (-32768..32767),
keplerM0 INTEGER (-2147483648..2147483647),
@@ -1167,7 +1197,30 @@ NavModel-SBAS-ECEF ::= SEQUENCE {
}
-GNSS-RealTimeIntegrity ::= SEQUENCE {
+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),
+ ...
+}
+
+
+GNSS-RealTimeIntegrity ::= SEQUENCE {
gnss-BadSignalList GNSS-BadSignalList,
...
}
@@ -1175,7 +1228,7 @@ GNSS-RealTimeIntegrity ::= SEQUENCE {
GNSS-BadSignalList ::= SEQUENCE (SIZE(1..64)) OF BadSignalElement
BadSignalElement ::= SEQUENCE {
- badSVID SV-ID,
+ badSVID SV-ID,
badSignalID GNSS-SignalIDs OPTIONAL, -- Need OP
...
}
@@ -1223,10 +1276,10 @@ GNSS-AcquisitionAssistElement ::= SEQUENCE {
intCodePhase INTEGER (0..127),
codePhaseSearchWindow INTEGER (0..31),
azimuth INTEGER (0..511),
- elevation INTEGER (0..127),
+ elevation INTEGER (0..127),
...,
codePhase1023 BOOLEAN OPTIONAL, -- Need OP
- dopplerUncertaintyExt-r10 ENUMERATED { d60,
+ dopplerUncertaintyExt-r10 ENUMERATED { d60,
d80,
d100,
d120,
@@ -1235,39 +1288,44 @@ GNSS-AcquisitionAssistElement ::= SEQUENCE {
GNSS-Almanac ::= SEQUENCE {
- weekNumber INTEGER (0..255) OPTIONAL, -- Need ON
+ 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-v12xy INTEGER (256..1023) OPTIONAL, -- Need ON
+ ioda-ext-v12xy INTEGER (4..15) 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
- ...
+ 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
}
AlmanacKeplerianSet ::= SEQUENCE {
svID SV-ID,
- kepAlmanacE INTEGER (0..2047),
+ kepAlmanacE INTEGER (0..2047),
kepAlmanacDeltaI INTEGER (-1024..1023),
kepAlmanacOmegaDot INTEGER (-1024..1023),
- kepSVHealth INTEGER (0..15),
- kepAlmanacAPowerHalf INTEGER (-65536..65535),
+ 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 (-8192..8191),
- kepAlmanacAF1 INTEGER (-1024..1023),
+ kepAlmanacAF0 INTEGER (-32768..32767),
+ kepAlmanacAF1 INTEGER (-4096..4095),
...
}
@@ -1351,15 +1409,33 @@ AlmanacECEF-SBAS-AlmanacSet ::= SEQUENCE {
}
-GNSS-UTC-Model ::= CHOICE {
- utcModel1 UTC-ModelSet1, -- Model-1
- utcModel2 UTC-ModelSet2, -- Model-2
- utcModel3 UTC-ModelSet3, -- Model-3
- utcModel4 UTC-ModelSet4, -- Model-4
+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
...
}
+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),
@@ -1411,6 +1487,17 @@ UTC-ModelSet4 ::= SEQUENCE {
}
+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,
@@ -1432,7 +1519,48 @@ GNSS-ID-GLONASS-SatElement ::= SEQUENCE {
signalsAvailable GNSS-SignalIDs,
channelNumber INTEGER (-7..13) OPTIONAL, -- Cond FDMA
...
-}
+}
+
+
+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) ,
+ ...
+}
A-GNSS-RequestAssistanceData ::= SEQUENCE {
@@ -1443,13 +1571,13 @@ A-GNSS-RequestAssistanceData ::= SEQUENCE {
GNSS-CommonAssistDataReq ::= SEQUENCE {
- gnss-ReferenceTimeReq GNSS-ReferenceTimeReq
+ gnss-ReferenceTimeReq GNSS-ReferenceTimeReq
OPTIONAL, -- Cond RefTimeReq
- gnss-ReferenceLocationReq GNSS-ReferenceLocationReq
+ gnss-ReferenceLocationReq GNSS-ReferenceLocationReq
OPTIONAL, -- Cond RefLocReq
- gnss-IonosphericModelReq GNSS-IonosphericModelReq
+ gnss-IonosphericModelReq GNSS-IonosphericModelReq
OPTIONAL, -- Cond IonoModReq
- gnss-EarthOrientationParametersReq GNSS-EarthOrientationParametersReq
+ gnss-EarthOrientationParametersReq GNSS-EarthOrientationParametersReq
OPTIONAL, -- Cond EOPReq
...
}
@@ -1469,14 +1597,20 @@ GNSS-GenericAssistDataReqElement ::= SEQUENCE {
gnss-AlmanacReq GNSS-AlmanacReq OPTIONAL, -- Cond AlmanacReq
gnss-UTCModelReq GNSS-UTC-ModelReq OPTIONAL, -- Cond UTCModReq
gnss-AuxiliaryInformationReq GNSS-AuxiliaryInformationReq OPTIONAL, -- Cond AuxInfoReq
- ...
+ ...,
+ [[
+ bds-DifferentialCorrectionsReq-r12
+ BDS-DifferentialCorrectionsReq-r12
+ OPTIONAL, -- Cond DBDS-Req
+ bds-GridModelReq-r12 BDS-GridModelReq-r12 OPTIONAL -- Cond BDS-GridModReq
+ ]]
}
GNSS-ReferenceTimeReq ::= SEQUENCE {
- gnss-TimeReqPrefList SEQUENCE (SIZE (1..8)) OF GNSS-ID,
- gps-TOW-assistReq BOOLEAN OPTIONAL, -- Cond gps
- notOfLeapSecReq BOOLEAN OPTIONAL, -- Cond glonass
+ gnss-TimeReqPrefList SEQUENCE (SIZE (1..8)) OF GNSS-ID,
+ gps-TOW-assistReq BOOLEAN OPTIONAL, -- Cond gps
+ notOfLeapSecReq BOOLEAN OPTIONAL, -- Cond glonass
...
}
@@ -1521,7 +1655,7 @@ GNSS-NavigationModelReq ::= CHOICE {
}
-StoredNavListInfo ::= SEQUENCE {
+StoredNavListInfo ::= SEQUENCE {
gnss-WeekOrDay INTEGER (0..4095),
gnss-Toe INTEGER (0..255),
t-toeLimit INTEGER (0..15),
@@ -1533,16 +1667,16 @@ SatListRelatedDataList ::= SEQUENCE (SIZE (1..64)) OF SatListRelatedDataElement
SatListRelatedDataElement ::= SEQUENCE {
svID SV-ID,
- iod BIT STRING (SIZE(11)),
- clockModelID INTEGER (1..8) OPTIONAL,
-orbitModelID INTEGER (1..8) OPTIONAL,
- ...
+ iod BIT STRING (SIZE(11)),
+ clockModelID INTEGER (1..8) OPTIONAL,
+ orbitModelID INTEGER (1..8) OPTIONAL,
+ ...
}
-ReqNavListInfo ::= SEQUENCE {
+ReqNavListInfo ::= SEQUENCE {
svReqList BIT STRING (SIZE (64)),
- clockModelID-PrefList SEQUENCE (SIZE (1..8)) OF INTEGER (1..8) OPTIONAL,
- orbitModelID-PrefList SEQUENCE (SIZE (1..8)) OF INTEGER (1..8) OPTIONAL,
+ clockModelID-PrefList SEQUENCE (SIZE (1..8)) OF INTEGER (1..8) OPTIONAL,
+ orbitModelID-PrefList SEQUENCE (SIZE (1..8)) OF INTEGER (1..8) OPTIONAL,
addNavparamReq BOOLEAN OPTIONAL, -- Cond orbitModelID-2
...
}
@@ -1559,7 +1693,7 @@ GNSS-DataBitAssistanceReq ::= SEQUENCE {
gnss-TOD-FracReq INTEGER (0..999) OPTIONAL,
dataBitInterval INTEGER (0..15),
gnss-SignalType GNSS-SignalIDs,
- gnss-DataBitsReq GNSS-DataBitsReqSatList OPTIONAL,
+ gnss-DataBitsReq GNSS-DataBitsReqSatList OPTIONAL,
...
}
@@ -1594,6 +1728,17 @@ GNSS-AuxiliaryInformationReq ::= SEQUENCE {
}
+BDS-DifferentialCorrectionsReq-r12 ::= SEQUENCE {
+ dgnss-SignalsReq GNSS-SignalIDs,
+ ...
+}
+
+
+BDS-GridModelReq-r12 ::= SEQUENCE {
+ ...
+}
+
+
A-GNSS-ProvideLocationInformation ::= SEQUENCE {
gnss-SignalMeasurementInformation GNSS-SignalMeasurementInformation OPTIONAL,
gnss-LocationInformation GNSS-LocationInformation OPTIONAL,
@@ -1611,8 +1756,8 @@ GNSS-SignalMeasurementInformation ::= SEQUENCE {
MeasurementReferenceTime ::= SEQUENCE {
gnss-TOD-msec INTEGER (0..3599999),
- gnss-TOD-frac INTEGER (0..3999) OPTIONAL,
- gnss-TOD-unc INTEGER (0..127) OPTIONAL,
+ gnss-TOD-frac INTEGER (0..3999) OPTIONAL,
+ gnss-TOD-unc INTEGER (0..127) OPTIONAL,
gnss-TimeID GNSS-ID,
networkTime CHOICE {
eUTRA SEQUENCE {
@@ -1650,7 +1795,7 @@ MeasurementReferenceTime ::= SEQUENCE {
...
},
...
- } OPTIONAL,
+ } OPTIONAL,
...
}
@@ -1678,10 +1823,10 @@ GNSS-SatMeasElement ::= SEQUENCE {
svID SV-ID,
cNo INTEGER (0..63),
mpathDet ENUMERATED {notMeasured (0), low (1), medium (2), high (3), ...},
- carrierQualityInd INTEGER (0..3) OPTIONAL,
+ carrierQualityInd INTEGER (0..3) OPTIONAL,
codePhase INTEGER (0..2097151),
integerCodePhase INTEGER (0..127) OPTIONAL,
- codePhaseRMSError INTEGER (0..63),
+ codePhaseRMSError INTEGER (0..63),
doppler INTEGER (-32768..32767) OPTIONAL,
adr INTEGER (0..33554431) OPTIONAL,
...
@@ -1690,7 +1835,7 @@ GNSS-SatMeasElement ::= SEQUENCE {
GNSS-LocationInformation ::= SEQUENCE {
measurementReferenceTime MeasurementReferenceTime,
- agnss-List GNSS-ID-Bitmap,
+ agnss-List GNSS-ID-Bitmap,
...
}
@@ -1702,7 +1847,7 @@ A-GNSS-RequestLocationInformation ::= SEQUENCE {
GNSS-PositioningInstructions ::= SEQUENCE {
- gnss-Methods GNSS-ID-Bitmap,
+ gnss-Methods GNSS-ID-Bitmap,
fineTimeAssistanceMeasReq BOOLEAN,
adrMeasReq BOOLEAN,
multiFreqMeasReq BOOLEAN,
@@ -1724,7 +1869,7 @@ GNSS-SupportList ::= SEQUENCE (SIZE(1..16)) OF GNSS-SupportElement
GNSS-SupportElement ::= SEQUENCE {
gnss-ID GNSS-ID,
sbas-IDs SBAS-IDs OPTIONAL, -- Cond GNSS-ID-SBAS
- agnss-Modes PositioningModes,
+ agnss-Modes PositioningModes,
gnss-Signals GNSS-SignalIDs,
fta-MeasSupport SEQUENCE {
cellTime AccessTypes,
@@ -1737,7 +1882,7 @@ GNSS-SupportElement ::= SEQUENCE {
}
AssistanceDataSupportList ::= SEQUENCE {
- gnss-CommonAssistanceDataSupport GNSS-CommonAssistanceDataSupport,
+ gnss-CommonAssistanceDataSupport GNSS-CommonAssistanceDataSupport,
gnss-GenericAssistanceDataSupport GNSS-GenericAssistanceDataSupport,
...
}
@@ -1745,13 +1890,13 @@ AssistanceDataSupportList ::= SEQUENCE {
GNSS-CommonAssistanceDataSupport ::= SEQUENCE {
- gnss-ReferenceTimeSupport GNSS-ReferenceTimeSupport
+ gnss-ReferenceTimeSupport GNSS-ReferenceTimeSupport
OPTIONAL, -- Cond RefTimeSup
- gnss-ReferenceLocationSupport GNSS-ReferenceLocationSupport
+ gnss-ReferenceLocationSupport GNSS-ReferenceLocationSupport
OPTIONAL, -- Cond RefLocSup
- gnss-IonosphericModelSupport GNSS-IonosphericModelSupport
+ gnss-IonosphericModelSupport GNSS-IonosphericModelSupport
OPTIONAL, -- Cond IonoModSup
- gnss-EarthOrientationParametersSupport GNSS-EarthOrientationParametersSupport
+ gnss-EarthOrientationParametersSupport GNSS-EarthOrientationParametersSupport
OPTIONAL, -- Cond EOPSup
...
}
@@ -1781,12 +1926,12 @@ GNSS-EarthOrientationParametersSupport ::= SEQUENCE {
}
-GNSS-GenericAssistanceDataSupport ::=
+GNSS-GenericAssistanceDataSupport ::=
SEQUENCE (SIZE (1..16)) OF GNSS-GenericAssistDataSupportElement
GNSS-GenericAssistDataSupportElement ::= SEQUENCE {
gnss-ID GNSS-ID,
- sbas-ID SBAS-ID OPTIONAL, -- Cond GNSS-ID-SBAS
+ sbas-ID SBAS-ID OPTIONAL, -- Cond GNSSIDSBAS
gnss-TimeModelsSupport GNSS-TimeModelListSupport
OPTIONAL, -- Cond TimeModSup
gnss-DifferentialCorrectionsSupport GNSS-DifferentialCorrectionsSupport
@@ -1805,7 +1950,14 @@ GNSS-GenericAssistDataSupportElement ::= SEQUENCE {
OPTIONAL, -- Cond UTCModSup
gnss-AuxiliaryInformationSupport GNSS-AuxiliaryInformationSupport
OPTIONAL, -- Cond AuxInfoSup
- ...
+ ...,
+ [[
+ bds-DifferentialCorrectionsSupport-r12
+ BDS-DifferentialCorrectionsSupport-r12
+ OPTIONAL, -- Cond DBDS-Sup
+ bds-GridModelSupport-r12 BDS-GridModelSupport-r12
+ OPTIONAL -- Cond BDS-GridModSup
+ ]]
}
@@ -1826,12 +1978,14 @@ GNSS-NavigationModelSupport ::= SEQUENCE {
model-2 (1),
model-3 (2),
model-4 (3),
- model-5 (4) } (SIZE (1..8)) OPTIONAL,
+ model-5 (4),
+ model-6 (5) } (SIZE (1..8)) OPTIONAL,
orbitModel BIT STRING { model-1 (0),
model-2 (1),
model-3 (2),
model-4 (3),
- model-5 (4) } (SIZE (1..8)) OPTIONAL,
+ model-5 (4),
+ model-6 (5) } (SIZE (1..8)) OPTIONAL,
...
}
@@ -1859,7 +2013,8 @@ GNSS-AlmanacSupport ::= SEQUENCE {
model-3 (2),
model-4 (3),
model-5 (4),
- model-6 (5) } (SIZE (1..8)) OPTIONAL,
+ model-6 (5),
+ model-7 (6) } (SIZE (1..8)) OPTIONAL,
...
}
@@ -1868,7 +2023,8 @@ GNSS-UTC-ModelSupport ::= SEQUENCE {
utc-Model BIT STRING { model-1 (0),
model-2 (1),
model-3 (2),
- model-4 (3) } (SIZE (1..8)) OPTIONAL,
+ model-4 (3),
+ model-5 (4) } (SIZE (1..8)) OPTIONAL,
...
}
@@ -1878,6 +2034,17 @@ GNSS-AuxiliaryInformationSupport ::= SEQUENCE {
}
+BDS-DifferentialCorrectionsSupport-r12 ::= SEQUENCE {
+ gnssSignalIDs GNSS-SignalIDs,
+ ...
+}
+
+
+BDS-GridModelSupport-r12 ::= SEQUENCE {
+ ...
+}
+
+
A-GNSS-RequestCapabilities ::= SEQUENCE {
gnss-SupportListReq BOOLEAN,
assistanceDataSupportListReq BOOLEAN,
@@ -1894,7 +2061,7 @@ A-GNSS-Error ::= CHOICE {
GNSS-LocationServerErrorCauses ::= SEQUENCE {
- cause ENUMERATED {
+ cause ENUMERATED {
undefined,
undeliveredAssistanceDataIsNotSupportedByServer,
undeliveredAssistanceDataIsSupportedButCurrentlyNotAvailableByServer, undeliveredAssistanceDataIsPartlyNotSupportedAndPartlyNotAvailableByServer,
@@ -1906,7 +2073,7 @@ GNSS-LocationServerErrorCauses ::= SEQUENCE {
GNSS-TargetDeviceErrorCauses ::= SEQUENCE {
cause ENUMERATED { undefined,
- thereWereNotEnoughSatellitesReceived,
+ thereWereNotEnoughSatellitesReceived,
assistanceDataMissing,
notAllRequestedMeasurementsPossible,
...
@@ -1919,41 +2086,42 @@ GNSS-TargetDeviceErrorCauses ::= SEQUENCE {
GNSS-ID ::= SEQUENCE {
- gnss-id ENUMERATED{ gps, sbas, qzss, galileo, glonass, ...},
+ gnss-id ENUMERATED{ gps, sbas, qzss, galileo, glonass, ..., bds },
...
}
GNSS-ID-Bitmap ::= SEQUENCE {
- gnss-ids BIT STRING { gps (0),
+ gnss-ids BIT STRING { gps (0),
sbas (1),
qzss (2),
galileo (3),
- glonass (4) } (SIZE (1..16)),
+ glonass (4),
+ bds (5) } (SIZE (1..16)),
...
}
-GNSS-SignalID ::= SEQUENCE {
+GNSS-SignalID ::= SEQUENCE {
gnss-SignalID INTEGER (0 .. 7),
...
}
-GNSS-SignalIDs ::= SEQUENCE {
+GNSS-SignalIDs ::= SEQUENCE {
gnss-SignalIDs BIT STRING (SIZE(8)),
...
}
-SBAS-ID ::= SEQUENCE {
+SBAS-ID ::= SEQUENCE {
sbas-id ENUMERATED { waas, egnos, msas, gagan, ...},
...
}
-SBAS-IDs ::= SEQUENCE {
- sbas-IDs BIT STRING { waas (0),
+SBAS-IDs ::= SEQUENCE {
+ sbas-IDs BIT STRING { waas (0),
egnos (1),
msas (2),
gagan (3) } (SIZE (1..8)),
@@ -1961,7 +2129,7 @@ SBAS-IDs ::= SEQUENCE {
}
-SV-ID ::= SEQUENCE {
+SV-ID ::= SEQUENCE {
satellite-id INTEGER(0..63),
...
}
@@ -1992,7 +2160,7 @@ MeasuredResultsElement ::= SEQUENCE {
rsrq-Result INTEGER (0..34) OPTIONAL,
ue-RxTxTimeDiff INTEGER (0..4095) OPTIONAL,
...,
- [[ arfcnEUTRA-v9a0 ARFCN-ValueEUTRA-v9a0 OPTIONAL -- Cond EARFCN-max
+ [[ arfcnEUTRA-v9a0 ARFCN-ValueEUTRA-v9a0 OPTIONAL -- Cond EARFCN-max
]]
}
@@ -2026,7 +2194,7 @@ ECID-Error ::= CHOICE {
ECID-LocationServerErrorCauses ::= SEQUENCE {
- cause ENUMERATED { undefined,
+ cause ENUMERATED { undefined,
...
},
...
diff --git a/asn1/lpp/lpp.cnf b/asn1/lpp/lpp.cnf
index 6a111685a0..47d2dbe0f8 100644
--- a/asn1/lpp/lpp.cnf
+++ b/asn1/lpp/lpp.cnf
@@ -53,6 +53,9 @@ EllipsoidPointWithUncertaintyEllipse
Polygon
#.END
+#.MAKE_ENUM
+GNSS-ID/gnss-id TYPE_PREFIX UPPER_CASE
+
#.FN_HDR RequestCapabilities
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Request Capabilities");
@@ -296,6 +299,9 @@ VerticalAccuracy/confidence DISPLAY=BASE_CUSTOM STRINGS=&lpp_confidence_fmt
#.FN_FTR ResponseTime/time
proto_item_append_text(actx->created_item, " s");
+#.FN_FTR ResponseTime/eag_1/responseTimeEarlyFix-r12
+ proto_item_append_text(actx->created_item, " s");
+
#.TYPE_ATTR
OTDOA-NeighbourCellInfoElement/expectedRSTD DISPLAY=BASE_CUSTOM STRINGS=&lpp_expectedRSTD_fmt
@@ -484,6 +490,18 @@ DGNSS-CorrectionsElement/udreGrowthRate STRINGS=VALS(lpp_udreGrowthRate_vals)
#.TYPE_ATTR
DGNSS-CorrectionsElement/udreValidityTime STRINGS=VALS(lpp_udreValidityTime_vals)
+#.FN_BODY GNSS-NavModelSatelliteElement/eag_1/svHealthExt-v12xy VAL_PTR = &svHealthExt_tvb
+ tvbuff_t *svHealthExt_tvb = NULL;
+ proto_tree *subtree;
+%(DEFAULT_BODY)s
+
+#.FN_FTR GNSS-NavModelSatelliteElement/eag_1/svHealthExt-v12xy
+ if (svHealthExt_tvb) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_lpp_svHealthExt_v12xy);
+ proto_tree_add_bits_item(subtree, hf_lpp_svHealthExt_v12xy_e5bhs, svHealthExt_tvb, 0, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(subtree, hf_lpp_svHealthExt_v12xy_e1_bhs, svHealthExt_tvb, 2, 2, ENC_BIG_ENDIAN);
+ }
+
#.TYPE_ATTR
StandardClockModelElement/stanClockToc DISPLAY=BASE_CUSTOM STRINGS=&lpp_stanClockToc_fmt
@@ -500,6 +518,9 @@ StandardClockModelElement/stanClockAF0 DISPLAY=BASE_CUSTOM STRINGS=&lpp_stanCloc
StandardClockModelElement/stanClockTgd DISPLAY=BASE_CUSTOM STRINGS=&lpp_stanClockTgd_fmt
#.TYPE_ATTR
+StandardClockModelElement/sisa DISPLAY=BASE_CUSTOM STRINGS=&lpp_sisa_fmt
+
+#.TYPE_ATTR
StandardClockModelElement/stanModelID STRINGS=VALS(lpp_stanModelID_vals)
#.TYPE_ATTR
@@ -572,6 +593,24 @@ SBAS-ClockModel/sbasAgfo DISPLAY=BASE_CUSTOM STRINGS=&lpp_sbasAgfo_fmt
SBAS-ClockModel/sbasAgf1 DISPLAY=BASE_CUSTOM STRINGS=&lpp_sbasAgf1_fmt
#.TYPE_ATTR
+BDS-ClockModel-r12/bdsAODC-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAODC_AODE_r12_fmt
+
+#.TYPE_ATTR
+BDS-ClockModel-r12/bdsToc-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsToc_Toe_r12_fmt
+
+#.TYPE_ATTR
+BDS-ClockModel-r12/bdsA0-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsA0_r12_fmt
+
+#.TYPE_ATTR
+BDS-ClockModel-r12/bdsA1-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsA1_r12_fmt
+
+#.TYPE_ATTR
+BDS-ClockModel-r12/bdsA2-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsA2_r12_fmt
+
+#.TYPE_ATTR
+BDS-ClockModel-r12/bdsTgd1-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsTgd1_r12_fmt
+
+#.TYPE_ATTR
NavModelKeplerianSet/keplerToe DISPLAY=BASE_CUSTOM STRINGS=&lpp_keplerToe_fmt
#.TYPE_ATTR
@@ -690,7 +729,7 @@ NavModelCNAV-KeplerianSet/cnavDeltaNoDot DISPLAY=BASE_CUSTOM STRINGS=&lpp_cnavDe
#.FN_FTR NavModelCNAV-KeplerianSet/cnavMo
PROTO_ITEM_SET_HIDDEN(actx->created_item);
actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
- cnavMo, "%e semi-circles (%"G_GINT64_MODIFIER"d)",
+ cnavMo, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
(double)cnavMo*pow(2, -32), cnavMo);
#.FN_BODY NavModelCNAV-KeplerianSet/cnavE VAL_PTR=&cnavE
@@ -701,7 +740,7 @@ NavModelCNAV-KeplerianSet/cnavDeltaNoDot DISPLAY=BASE_CUSTOM STRINGS=&lpp_cnavDe
#.FN_FTR NavModelCNAV-KeplerianSet/cnavE
PROTO_ITEM_SET_HIDDEN(actx->created_item);
actx->created_item = proto_tree_add_uint64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
- cnavE, "%e (%"G_GINT64_MODIFIER"u)",
+ cnavE, "%g (%"G_GINT64_MODIFIER"u)",
(double)cnavE*pow(2, -34), cnavE);
#.FN_BODY NavModelCNAV-KeplerianSet/cnavOmega VAL_PTR=&cnavOmega
@@ -712,7 +751,7 @@ NavModelCNAV-KeplerianSet/cnavDeltaNoDot DISPLAY=BASE_CUSTOM STRINGS=&lpp_cnavDe
#.FN_FTR NavModelCNAV-KeplerianSet/cnavOmega
PROTO_ITEM_SET_HIDDEN(actx->created_item);
actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
- cnavOmega, "%e semi-circles (%"G_GINT64_MODIFIER"d)",
+ cnavOmega, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
(double)cnavOmega*pow(2, -32), cnavOmega);
#.FN_BODY NavModelCNAV-KeplerianSet/cnavOMEGA0 VAL_PTR=&cnavOMEGA0
@@ -723,7 +762,7 @@ NavModelCNAV-KeplerianSet/cnavDeltaNoDot DISPLAY=BASE_CUSTOM STRINGS=&lpp_cnavDe
#.FN_FTR NavModelCNAV-KeplerianSet/cnavOMEGA0
PROTO_ITEM_SET_HIDDEN(actx->created_item);
actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
- cnavOMEGA0, "%e semi-circles (%"G_GINT64_MODIFIER"d)",
+ cnavOMEGA0, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
(double)cnavOMEGA0*pow(2, -32), cnavOMEGA0);
#.TYPE_ATTR
@@ -737,7 +776,7 @@ NavModelCNAV-KeplerianSet/cnavDeltaOmegaDot DISPLAY=BASE_CUSTOM STRINGS=&lpp_cna
#.FN_FTR NavModelCNAV-KeplerianSet/cnavIo
PROTO_ITEM_SET_HIDDEN(actx->created_item);
actx->created_item = proto_tree_add_int64_format_value(tree, hf_index, tvb, curr_offset>>3, (offset+7-curr_offset)>>3,
- cnavIo, "%e semi-circles (%"G_GINT64_MODIFIER"d)",
+ cnavIo, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
(double)cnavIo*pow(2, -32), cnavIo);
#.TYPE_ATTR
@@ -834,6 +873,60 @@ NavModel-SBAS-ECEF/sbasYgDotDot DISPLAY=BASE_CUSTOM STRINGS=&lpp_sbasXgDotDot_Yg
#.TYPE_ATTR
NavModel-SBAS-ECEF/sbasZgDotDot DISPLAY=BASE_CUSTOM STRINGS=&lpp_sbasZgDotDot_fmt
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsAODE-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAODC_AODE_r12_fmt
+
+#.FN_FTR NavModel-BDS-KeplerianSet-r12/bdsURAI-r12
+ proto_item_append_text(actx->created_item, " m");
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsToe-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsToc_Toe_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsAPowerHalf-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAPowerHalf_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsE-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsE_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsW-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsW_M0_Omega0_I0_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsDeltaN-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsM0-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsW_M0_Omega0_I0_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsOmega0-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsW_M0_Omega0_I0_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsOmegaDot-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsI0-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsW_M0_Omega0_I0_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsIDot-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCuc-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsCuc_Cus_Cic_Cis_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCus-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsCuc_Cus_Cic_Cis_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCrc-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsCrc_Crs_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCrs-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsCrc_Crs_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCic-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsCuc_Cus_Cic_Cis_r12_fmt
+
+#.TYPE_ATTR
+NavModel-BDS-KeplerianSet-r12/bdsCis-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsCuc_Cus_Cic_Cis_r12_fmt
+
#.FN_FTR GNSS-DataBitAssistance/gnss-TOD
proto_item_append_text(actx->created_item, " s");
@@ -867,8 +960,29 @@ GNSS-AcquisitionAssistElement/azimuth DISPLAY=BASE_CUSTOM STRINGS=&lpp_azimuth_e
#.TYPE_ATTR
GNSS-AcquisitionAssistElement/elevation DISPLAY=BASE_CUSTOM STRINGS=&lpp_azimuth_elevation_fmt
-#.TYPE_ATTR
-GNSS-Almanac/toa DISPLAY=BASE_CUSTOM STRINGS=&lpp_toa_fmt
+#.FN_BODY GNSS-Almanac/toa VAL_PTR = &toa
+ guint32 toa, val;
+ int len, old_offset = offset;
+ T_GNSS_ID_enum gnss_id = (T_GNSS_ID_enum)GPOINTER_TO_UINT(actx->private_data);
+%(DEFAULT_BODY)s
+
+#.FN_FTR GNSS-Almanac/toa
+ len = (offset-old_offset) >> 3 ? (offset-old_offset) >> 3 : 1;
+ val = (gnss_id == T_GNSS_ID_GALILEO) ? 600*toa : 4096*toa;
+ actx->created_item = proto_tree_add_uint_format_value(tree, hf_lpp_toa, tvb, old_offset, len,
+ toa, "%u s (%u)", val, toa);
+
+#.FN_BODY GNSS-Almanac/eag_1/toa-ext-v12xy VAL_PTR = &toa_ext
+ guint32 toa_ext, val;
+ int len, old_offset = offset;
+ T_GNSS_ID_enum gnss_id = (T_GNSS_ID_enum)GPOINTER_TO_UINT(actx->private_data);
+%(DEFAULT_BODY)s
+
+#.FN_FTR GNSS-Almanac/eag_1/toa-ext-v12xy
+ 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_v12xy, tvb, old_offset, len,
+ toa_ext, "%u s (%u)", val, toa_ext);
#.TYPE_ATTR
AlmanacKeplerianSet/kepAlmanacE DISPLAY=BASE_CUSTOM STRINGS=&lpp_kepAlmanacE_fmt
@@ -879,6 +993,29 @@ AlmanacKeplerianSet/kepAlmanacDeltaI DISPLAY=BASE_CUSTOM STRINGS=&lpp_kepAlmanac
#.TYPE_ATTR
AlmanacKeplerianSet/kepAlmanacOmegaDot DISPLAY=BASE_CUSTOM STRINGS=&lpp_kepAlmanacOmegaDot_fmt
+#.FN_BODY AlmanacKeplerianSet/kepSV-StatusINAV VAL_PTR = &statusINAV_tvb
+ tvbuff_t *statusINAV_tvb = NULL;
+ proto_tree *subtree;
+%(DEFAULT_BODY)s
+
+#.FN_FTR AlmanacKeplerianSet/kepSV-StatusINAV
+ if (statusINAV_tvb) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_kepSV_StatusINAV);
+ proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusINAV_e5bhs, statusINAV_tvb, 0, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusINAV_e1_bhs, statusINAV_tvb, 2, 2, ENC_BIG_ENDIAN);
+ }
+
+#.FN_BODY AlmanacKeplerianSet/kepSV-StatusFNAV VAL_PTR = &statusFNAV_tvb
+ tvbuff_t *statusFNAV_tvb = NULL;
+ proto_tree *subtree;
+%(DEFAULT_BODY)s
+
+#.FN_FTR AlmanacKeplerianSet/kepSV-StatusFNAV
+ if (statusFNAV_tvb) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_kepSV_StatusFNAV);
+ proto_tree_add_bits_item(subtree, hf_lpp_kepSV_StatusFNAV_e5ahs, statusFNAV_tvb, 0, 2, ENC_BIG_ENDIAN);
+ }
+
#.TYPE_ATTR
AlmanacKeplerianSet/kepAlmanacAPowerHalf DISPLAY=BASE_CUSTOM STRINGS=&lpp_kepAlmanacAPowerHalf_fmt
@@ -1006,6 +1143,60 @@ AlmanacECEF-SBAS-AlmanacSet/sbasAlmZgDot DISPLAY=BASE_CUSTOM STRINGS=&lpp_sbasAl
AlmanacECEF-SBAS-AlmanacSet/sbasAlmTo DISPLAY=BASE_CUSTOM STRINGS=&lpp_sbasAlmTo_fmt
#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmToa-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAlmToa_r12_fmt
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmSqrtA-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAlmSqrtA_r12_fmt
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmE-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAlmE_r12_fmt
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmW-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAlmW_M0_Omega0_r12_fmt
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmM0-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAlmW_M0_Omega0_r12_fmt
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmOmega0-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAlmW_M0_Omega0_r12_fmt
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmOmegaDot-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAlmOmegaDot_r12_fmt
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmDeltaI-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAlmDeltaI_r12_fmt
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmA0-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAlmA0_r12_fmt
+
+#.TYPE_ATTR
+AlmanacBDS-AlmanacSet-r12/bdsAlmA1-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bdsAlmA1_r12_fmt
+
+#.FN_BODY AlmanacBDS-AlmanacSet-r12/bdsSvHealth-r12 VAL_PTR = &bdsSvHealth_tvb
+ tvbuff_t *bdsSvHealth_tvb = NULL;
+ proto_tree *subtree;
+%(DEFAULT_BODY)s
+
+#.FN_FTR AlmanacBDS-AlmanacSet-r12/bdsSvHealth-r12
+ if (bdsSvHealth_tvb) {
+ guint16 bits;
+ subtree = proto_item_add_subtree(actx->created_item, ett_lpp_bdsSvHealth_r12);
+ bits = tvb_get_bits16(bdsSvHealth_tvb, 0, 9,ENC_BIG_ENDIAN);
+ if (bits == 0x1ff) {
+ proto_tree_add_boolean_bits_format_value(subtree, hf_lpp_bdsSvHealth_r12_sat_clock, bdsSvHealth_tvb, 0, 1, 1,
+ "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);
+ }
+ }
+
+#.TYPE_ATTR
UTC-ModelSet1/gnss-Utc-A1 DISPLAY=BASE_CUSTOM STRINGS=&lpp_gnss_Utc_A1_fmt
#.TYPE_ATTR
@@ -1107,6 +1298,45 @@ UTC-ModelSet4/utcTot DISPLAY=BASE_CUSTOM STRINGS=&lpp_gnss_Utc_Tot_fmt
#.TYPE_ATTR
UTC-ModelSet4/utcStandardID TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lpp_utcStandardID_vals)
+#.TYPE_ATTR
+UTC-ModelSet5-r12/utcA0-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_gnss_Utc_A0_fmt
+
+#.TYPE_ATTR
+UTC-ModelSet5-r12/utcA1-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_gnss_Utc_A1_fmt
+
+#.FN_FTR UTC-ModelSet5-r12/utcDeltaTls-r12
+ proto_item_append_text(actx->created_item, " s");
+
+#.FN_FTR UTC-ModelSet5-r12/utcWNlsf-r12
+ proto_item_append_text(actx->created_item, " weeks");
+
+#.FN_FTR UTC-ModelSet5-r12/utcDN-r12
+ proto_item_append_text(actx->created_item, " days");
+
+#.FN_FTR UTC-ModelSet5-r12/utcDeltaTlsf-r12
+ proto_item_append_text(actx->created_item, " s");
+
+#.FN_FTR BDS-DifferentialCorrections-r12/dbds-RefTime-r12
+ proto_item_append_text(actx->created_item, " s");
+
+#.TYPE_ATTR
+DBDS-CorrectionElement-r12/bds-UDREI-r12 TYPE=FT_UINT8 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lpp_bds_UDREI_vals_ext
+
+#.TYPE_ATTR
+DBDS-CorrectionElement-r12/bds-RURAI-r12 TYPE=FT_UINT8 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lpp_bds_RURAI_vals_ext
+
+#.TYPE_ATTR
+DBDS-CorrectionElement-r12/bds-ECC-DeltaT-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bds_ECC_DeltaT_r12_fmt
+
+#.FN_FTR BDS-GridModelParameter-r12/bds-RefTime-r12
+ proto_item_append_text(actx->created_item, " s");
+
+#.TYPE_ATTR
+GridIonElement-r12/dt-r12 DISPLAY=BASE_CUSTOM STRINGS=&lpp_bds_GridIonElement_dt_r12_fmt
+
+#.TYPE_ATTR
+GridIonElement-r12/givei-r12 TYPE=FT_UINT8 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lpp_bds_givei_vals_ext
+
#.FN_FTR StoredNavListInfo/gnss-WeekOrDay
proto_item_append_text(actx->created_item, " (days for glonass, weeks otherwise)");
@@ -1202,6 +1432,9 @@ GNSS-SatMeasElement/adr DISPLAY=BASE_CUSTOM STRINGS=&lpp_adr_fmt
if (len >= 5) {
proto_tree_add_item(subtree, hf_lpp_T_clockModel_model_5, clockModel_tvb, 0, 1, ENC_BIG_ENDIAN);
}
+ if (len >= 6) {
+ proto_tree_add_item(subtree, hf_lpp_T_clockModel_model_6, clockModel_tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
}
#.FN_BODY GNSS-NavigationModelSupport/orbitModel VAL_PTR = &orbitModel_tvb LEN_PTR = &len
@@ -1228,6 +1461,9 @@ GNSS-SatMeasElement/adr DISPLAY=BASE_CUSTOM STRINGS=&lpp_adr_fmt
if (len >= 5) {
proto_tree_add_item(subtree, hf_lpp_T_orbitModel_model_5, orbitModel_tvb, 0, 1, ENC_BIG_ENDIAN);
}
+ if (len >= 6) {
+ proto_tree_add_item(subtree, hf_lpp_T_orbitModel_model_6, orbitModel_tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
}
#.FN_BODY GNSS-AlmanacSupport/almanacModel VAL_PTR = &almanacModel_tvb LEN_PTR = &len
@@ -1257,6 +1493,9 @@ GNSS-SatMeasElement/adr DISPLAY=BASE_CUSTOM STRINGS=&lpp_adr_fmt
if (len >= 6) {
proto_tree_add_item(subtree, hf_lpp_T_almanacModel_model_6, almanacModel_tvb, 0, 1, ENC_BIG_ENDIAN);
}
+ if (len >= 7) {
+ proto_tree_add_item(subtree, hf_lpp_T_almanacModel_model_7, almanacModel_tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
}
#.FN_BODY GNSS-UTC-ModelSupport/utc-Model VAL_PTR = &utc_Model_tvb LEN_PTR = &len
@@ -1280,8 +1519,16 @@ GNSS-SatMeasElement/adr DISPLAY=BASE_CUSTOM STRINGS=&lpp_adr_fmt
if (len >= 4) {
proto_tree_add_item(subtree, hf_lpp_T_utc_Model_model_4, utc_Model_tvb, 0, 1, ENC_BIG_ENDIAN);
}
+ if (len >= 5) {
+ proto_tree_add_item(subtree, hf_lpp_T_utc_Model_model_5, utc_Model_tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
}
+#.FN_BODY GNSS-ID/gnss-id VAL_PTR = &gnss_id
+ guint32 gnss_id;
+%(DEFAULT_BODY)s
+ actx->private_data = GUINT_TO_POINTER(gnss_id);
+
#.FN_BODY GNSS-ID-Bitmap/gnss-ids VAL_PTR = &gnss_ids_tvb LEN_PTR = &len
tvbuff_t *gnss_ids_tvb = NULL;
int len;
@@ -1306,6 +1553,9 @@ GNSS-SatMeasElement/adr DISPLAY=BASE_CUSTOM STRINGS=&lpp_adr_fmt
if (len >= 5) {
proto_tree_add_item(subtree, hf_lpp_T_gnss_ids_glonass, gnss_ids_tvb, 0, 1, ENC_BIG_ENDIAN);
}
+ if (len >= 6) {
+ proto_tree_add_item(subtree, hf_lpp_T_gnss_ids_bds, gnss_ids_tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
}
#.FN_BODY SBAS-IDs/sbas-IDs VAL_PTR = &sbas_IDs_tvb LEN_PTR = &len
diff --git a/asn1/lpp/packet-lpp-template.c b/asn1/lpp/packet-lpp-template.c
index 15a8818109..a883128793 100644
--- a/asn1/lpp/packet-lpp-template.c
+++ b/asn1/lpp/packet-lpp-template.c
@@ -1,6 +1,6 @@
/* packet-lpp.c
* Routines for 3GPP LTE Positioning Protocol (LLP) packet dissection
- * Copyright 2011-2013 Pascal Quantin <pascal.quantin@gmail.com>
+ * Copyright 2011-2015 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 11.6.0 Release 11
+ * Ref 3GPP TS 36.355 version 12.3.0 Release 12
* http://www.3gpp.org
*/
@@ -30,6 +30,7 @@
#include <epan/packet.h>
#include <epan/asn1.h>
+#include <epan/tfs.h>
#include "packet-per.h"
#include "packet-lpp.h"
@@ -45,6 +46,15 @@ void proto_reg_handoff_lpp(void);
static int proto_lpp = -1;
#include "packet-lpp-hf.c"
+static int hf_lpp_svHealthExt_v12xy_e5bhs = -1;
+static int hf_lpp_svHealthExt_v12xy_e1_bhs = -1;
+static int hf_lpp_kepSV_StatusINAV_e5bhs = -1;
+static int hf_lpp_kepSV_StatusINAV_e1_bhs = -1;
+static int hf_lpp_kepSV_StatusFNAV_e5ahs = -1;
+static int hf_lpp_bdsSvHealth_r12_sat_clock = -1;
+static int hf_lpp_bdsSvHealth_r12_b1i = -1;
+static int hf_lpp_bdsSvHealth_r12_b2i = -1;
+static int hf_lpp_bdsSvHealth_r12_nav = -1;
static dissector_handle_t lppe_handle = NULL;
@@ -53,6 +63,10 @@ static guint32 lpp_epdu_id = -1;
/* Initialize the subtree pointers */
static gint ett_lpp = -1;
static gint ett_lpp_bitmap = -1;
+static gint ett_lpp_svHealthExt_v12xy = -1;
+static gint ett_kepSV_StatusINAV = -1;
+static gint ett_kepSV_StatusFNAV = -1;
+static gint ett_lpp_bdsSvHealth_r12 = -1;
#include "packet-lpp-ett.c"
/* Include constants */
@@ -246,11 +260,12 @@ lpp_frameDrift_fmt(gchar *s, guint32 v)
{
double drift = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", drift, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", drift, (gint32)v);
}
static const value_string lpp_dataID_vals[] = {
{ 0, "Parameters are applicable worldwide"},
+ { 1, "Parameters have been generated by BDS"},
{ 3, "Parameters have been generated by QZSS"},
{ 0, NULL}
};
@@ -260,7 +275,7 @@ lpp_alpha0_fmt(gchar *s, guint32 v)
{
double alpha = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", alpha, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", alpha, (gint32)v);
}
static void
@@ -268,7 +283,7 @@ lpp_alpha1_fmt(gchar *s, guint32 v)
{
double alpha = (double)((gint32)v)*pow(2, -27);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/semi-circle (%d)", alpha, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/semi-circle (%d)", alpha, (gint32)v);
}
static void
@@ -276,7 +291,7 @@ lpp_alpha2_3_fmt(gchar *s, guint32 v)
{
double alpha = (double)((gint32)v)*pow(2, -24);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/semi-circle (%d)", alpha, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/semi-circle (%d)", alpha, (gint32)v);
}
static void
@@ -284,7 +299,7 @@ lpp_beta0_fmt(gchar *s, guint32 v)
{
double beta = (double)((gint32)v)*pow(2, 11);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", beta, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", beta, (gint32)v);
}
static void
@@ -292,7 +307,7 @@ lpp_beta1_fmt(gchar *s, guint32 v)
{
double beta = (double)((gint32)v)*pow(2, 14);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/semi-circle (%d)", beta, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/semi-circle (%d)", beta, (gint32)v);
}
static void
@@ -300,7 +315,7 @@ lpp_beta2_3_fmt(gchar *s, guint32 v)
{
double beta = (double)((gint32)v)*pow(2, 16);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/semi-circle (%d)", beta, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/semi-circle (%d)", beta, (gint32)v);
}
static void
@@ -308,7 +323,7 @@ lpp_ai0_fmt(gchar *s, guint32 v)
{
double ai = (double)v*pow(2, -2);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e sfu (%u)", ai, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g sfu (%u)", ai, v);
}
static void
@@ -316,7 +331,7 @@ lpp_ai1_fmt(gchar *s, guint32 v)
{
double ai = (double)v*pow(2, -8);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e sfu/degree (%u)", ai, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g sfu/degree (%u)", ai, v);
}
static void
@@ -324,7 +339,7 @@ lpp_ai2_fmt(gchar *s, guint32 v)
{
double ai = (double)v*pow(2, -15);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e sfu/degree (%u)", ai, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g sfu/degree2 (%u)", ai, v);
}
static void
@@ -338,7 +353,7 @@ lpp_pmX_Y_fmt(gchar *s, guint32 v)
{
double pm = (double)((gint32)v)*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e arc-seconds (%d)", pm, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g arc-seconds (%d)", pm, (gint32)v);
}
static void
@@ -346,7 +361,7 @@ lpp_pmX_Ydot_fmt(gchar *s, guint32 v)
{
double pmDot = (double)((gint32)v)*pow(2, -21);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e arc-seconds/day (%d)", pmDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g arc-seconds/day (%d)", pmDot, (gint32)v);
}
static void
@@ -354,7 +369,7 @@ lpp_deltaUT1_fmt(gchar *s, guint32 v)
{
double deltaUT1 = (double)((gint32)v)*pow(2, -24);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", deltaUT1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", deltaUT1, (gint32)v);
}
static void
@@ -362,7 +377,7 @@ lpp_deltaUT1dot_fmt(gchar *s, guint32 v)
{
double deltaUT1dot = (double)((gint32)v)*pow(2, -25);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/day (%d)", deltaUT1dot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/day (%d)", deltaUT1dot, (gint32)v);
}
static void
@@ -376,7 +391,7 @@ lpp_tA0_fmt(gchar *s, guint32 v)
{
double tA0 = (double)((gint32)v)*pow(2, -35);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", tA0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", tA0, (gint32)v);
}
static void
@@ -384,7 +399,7 @@ lpp_tA1_fmt(gchar *s, guint32 v)
{
double tA1 = (double)((gint32)v)*pow(2, -51);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", tA1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", tA1, (gint32)v);
}
static void
@@ -392,7 +407,7 @@ lpp_tA2_fmt(gchar *s, guint32 v)
{
double tA2 = (double)((gint32)v)*pow(2, -68);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s2 (%d)", tA2, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s2 (%d)", tA2, (gint32)v);
}
static const value_string lpp_gnss_TO_ID_vals[] = {
@@ -463,6 +478,13 @@ static const value_string lpp_udreValidityTime_vals[] = {
{ 0, NULL}
};
+static const value_string lpp_signal_health_status_vals[] = {
+ { 0, "Signal OK"},
+ { 1, "Signal out of service"},
+ { 2, "Signal will be out of service"},
+ { 3, "Signal Component currently in Test"},
+ { 0, NULL}
+};
static void
lpp_stanClockToc_fmt(gchar *s, guint32 v)
{
@@ -472,25 +494,25 @@ lpp_stanClockToc_fmt(gchar *s, guint32 v)
static void
lpp_stanClockAF2_fmt(gchar *s, guint32 v)
{
- double stanClockAF2 = (double)((gint32)v)*pow(2, -65);
+ double stanClockAF2 = (double)((gint32)v)*pow(2, -59);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s2 (%d)", stanClockAF2, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s2 (%d)", stanClockAF2, (gint32)v);
}
static void
lpp_stanClockAF1_fmt(gchar *s, guint32 v)
{
- double stanClockAF1 = (double)((gint32)v)*pow(2, -45);
+ double stanClockAF1 = (double)((gint32)v)*pow(2, -46);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", stanClockAF1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", stanClockAF1, (gint32)v);
}
static void
lpp_stanClockAF0_fmt(gchar *s, guint32 v)
{
- double stanClockAF0 = (double)((gint32)v)*pow(2, -33);
+ double stanClockAF0 = (double)((gint32)v)*pow(2, -34);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", stanClockAF0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", stanClockAF0, (gint32)v);
}
static void
@@ -498,7 +520,25 @@ lpp_stanClockTgd_fmt(gchar *s, guint32 v)
{
double stanClockTgd = (double)((gint32)v)*pow(2, -32);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", stanClockTgd, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", stanClockTgd, (gint32)v);
+}
+
+static void
+lpp_sisa_fmt(gchar *s, guint32 v)
+{
+ if (v < 50) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u cm (%u)", v, v);
+ } else if (v < 75) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u cm (%u)", 50+((v-50)*2), v);
+ } else if (v < 100) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u cm (%u)", 100+((v-75)*4), v);
+ } else if (v < 126) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u cm (%u)", 200+((v-100)*16), v);
+ } else if (v < 255) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v);
+ } else {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "No Accuracy Prediction Available (255)");
+ }
}
static const value_string lpp_stanModelID_vals[] = {
@@ -518,7 +558,7 @@ lpp_navaf2_fmt(gchar *s, guint32 v)
{
double navaf2 = (double)((gint32)v)*pow(2, -55);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s2 (%d)", navaf2, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s2 (%d)", navaf2, (gint32)v);
}
static void
@@ -526,7 +566,7 @@ lpp_navaf1_fmt(gchar *s, guint32 v)
{
double navaf1 = (double)((gint32)v)*pow(2, -43);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", navaf1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", navaf1, (gint32)v);
}
static void
@@ -534,7 +574,7 @@ lpp_navaf0_navTgd_fmt(gchar *s, guint32 v)
{
double navaf0_navTgd = (double)((gint32)v)*pow(2, -31);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", navaf0_navTgd, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", navaf0_navTgd, (gint32)v);
}
static void
@@ -548,7 +588,7 @@ lpp_cnavAf2_fmt(gchar *s, guint32 v)
{
double cnavAf2 = (double)((gint32)v)*pow(2, -60);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s2 (%d)", cnavAf2, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s2 (%d)", cnavAf2, (gint32)v);
}
static void
@@ -556,7 +596,7 @@ lpp_cnavAf1_fmt(gchar *s, guint32 v)
{
double cnavAf1 = (double)((gint32)v)*pow(2, -48);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", cnavAf1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", cnavAf1, (gint32)v);
}
static void
@@ -564,7 +604,7 @@ lpp_cnavX_fmt(gchar *s, guint32 v)
{
double cnavX = (double)((gint32)v)*pow(2, -35);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", cnavX, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", cnavX, (gint32)v);
}
static void
@@ -572,7 +612,7 @@ lpp_gloTau_gloDeltaTau_fmt(gchar *s, guint32 v)
{
double gloTau_gloDeltaTau = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", gloTau_gloDeltaTau, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", gloTau_gloDeltaTau, (gint32)v);
}
static void
@@ -580,7 +620,7 @@ lpp_gloGamma_fmt(gchar *s, guint32 v)
{
double gloGamma = (double)((gint32)v)*pow(2, -40);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%d)", gloGamma, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%d)", gloGamma, (gint32)v);
}
static void
@@ -594,7 +634,7 @@ lpp_sbasAgfo_fmt(gchar *s, guint32 v)
{
double sbasAgfo = (double)((gint32)v)*pow(2, -31);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", sbasAgfo, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", sbasAgfo, (gint32)v);
}
static void
@@ -602,7 +642,58 @@ lpp_sbasAgf1_fmt(gchar *s, guint32 v)
{
double sbasAgf1 = (double)((gint32)v)*pow(2, -40);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", sbasAgf1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", sbasAgf1, (gint32)v);
+}
+
+static void
+lpp_bdsAODC_AODE_r12_fmt(gchar *s, guint32 v)
+{
+ if (v < 25) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "Age of the satellite clock correction parameters is %u hours (%u)", v, v);
+ } else if (v < 31) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "Age of the satellite clock correction parameters is %u days (%u)", v-23, v);
+ } else {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "Age of the satellite clock correction parameters is over 7 days (%u)", v);
+ }
+}
+
+
+static void
+lpp_bdsToc_Toe_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsToc = (double)((gint32)v)*pow(2, 3);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", bdsToc, (gint32)v);
+}
+
+static void
+lpp_bdsA0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsA0 = (double)((gint32)v)*pow(2, -33);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", bdsA0, (gint32)v);
+}
+
+static void
+lpp_bdsA1_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsA1 = (double)((gint32)v)*pow(2, -50);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", bdsA1, (gint32)v);
+}
+
+static void
+lpp_bdsA2_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsA2 = (double)((gint32)v)*pow(2, -66);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s2 (%d)", bdsA2, (gint32)v);
+}
+
+static void
+lpp_bdsTgd1_r12_fmt(gchar *s, guint32 v)
+{
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g ns (%d)", (float)((gint32)v)*0.1, (gint32)v);
}
static void
@@ -616,7 +707,7 @@ lpp_keplerW_M0_I0_Omega0_fmt(gchar *s, guint32 v)
{
double keplerW_M0_I0_Omega0 = (double)((gint32)v)*pow(2, -31);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", keplerW_M0_I0_Omega0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", keplerW_M0_I0_Omega0, (gint32)v);
}
static void
@@ -624,7 +715,7 @@ lpp_keplerDeltaN_OmegaDot_IDot_fmt(gchar *s, guint32 v)
{
double keplerDeltaN_OmegaDot_IDot = (double)((gint32)v)*pow(2, -43);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", keplerDeltaN_OmegaDot_IDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", keplerDeltaN_OmegaDot_IDot, (gint32)v);
}
static void
@@ -632,7 +723,7 @@ lpp_keplerE_fmt(gchar *s, guint32 v)
{
double keplerE = (double)v*pow(2, -33);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", keplerE, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", keplerE, v);
}
static void
@@ -640,7 +731,7 @@ lpp_keplerAPowerHalf_fmt(gchar *s, guint32 v)
{
double keplerAPowerHalf = (double)v*pow(2, -19);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m1/2 (%u)", keplerAPowerHalf, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", keplerAPowerHalf, v);
}
static void
@@ -648,7 +739,7 @@ lpp_keplerCrs_Crc_fmt(gchar *s, guint32 v)
{
double keplerCrs_Crc = (double)((gint32)v)*pow(2, -5);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m (%d)", keplerCrs_Crc, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", keplerCrs_Crc, (gint32)v);
}
static void
@@ -656,7 +747,7 @@ lpp_keplerCx_fmt(gchar *s, guint32 v)
{
double keplerCx = (double)((gint32)v)*pow(2, -29);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e rad (%d)", keplerCx, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g rad (%d)", keplerCx, (gint32)v);
}
static void
@@ -670,7 +761,7 @@ lpp_navOmega_M0_I0_OmegaA0_fmt(gchar *s, guint32 v)
{
double navOmega_M0_I0_OmegaA0 = (double)((gint32)v)*pow(2, -31);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", navOmega_M0_I0_OmegaA0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", navOmega_M0_I0_OmegaA0, (gint32)v);
}
static void
@@ -678,7 +769,7 @@ lpp_navDeltaN_OmegaADot_IDot_fmt(gchar *s, guint32 v)
{
double navDeltaN_OmegaADot_IDot = (double)((gint32)v)*pow(2, -43);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", navDeltaN_OmegaADot_IDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", navDeltaN_OmegaADot_IDot, (gint32)v);
}
static void
@@ -686,7 +777,7 @@ lpp_navE_fmt(gchar *s, guint32 v)
{
double navE = (double)v*pow(2, -33);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", navE, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", navE, v);
}
static void
@@ -694,7 +785,7 @@ lpp_navAPowerHalf_fmt(gchar *s, guint32 v)
{
double navAPowerHalf = (double)v*pow(2, -19);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m1/2 (%u)", navAPowerHalf, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", navAPowerHalf, v);
}
static void
@@ -702,7 +793,7 @@ lpp_navCrs_Crc_fmt(gchar *s, guint32 v)
{
double navCrs_Crc = (double)((gint32)v)*pow(2, -5);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m (%d)", navCrs_Crc, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", navCrs_Crc, (gint32)v);
}
static void
@@ -710,7 +801,7 @@ lpp_navCx_fmt(gchar *s, guint32 v)
{
double navCx = (double)((gint32)v)*pow(2, -29);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e rad (%d)", navCx, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g rad (%d)", navCx, (gint32)v);
}
static void
@@ -718,7 +809,7 @@ lpp_cnavDeltaA_fmt(gchar *s, guint32 v)
{
double cnavDeltaA = (double)((gint32)v)*pow(2, -9);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m (%d)", cnavDeltaA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", cnavDeltaA, (gint32)v);
}
static void
@@ -726,7 +817,7 @@ lpp_cnavAdot_fmt(gchar *s, guint32 v)
{
double cnavAdot = (double)((gint32)v)*pow(2, -21);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m/s (%d)", cnavAdot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m/s (%d)", cnavAdot, (gint32)v);
}
static void
@@ -734,7 +825,7 @@ lpp_cnavDeltaNo_fmt(gchar *s, guint32 v)
{
double cnavDeltaNo = (double)((gint32)v)*pow(2, -44);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", cnavDeltaNo, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", cnavDeltaNo, (gint32)v);
}
static void
@@ -742,7 +833,7 @@ lpp_cnavDeltaNoDot_fmt(gchar *s, guint32 v)
{
double cnavDeltaNoDot = (double)((gint32)v)*pow(2, -57);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s2 (%d)", cnavDeltaNoDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s2 (%d)", cnavDeltaNoDot, (gint32)v);
}
static void
@@ -750,7 +841,7 @@ lpp_cnavDeltaOmegaDot_IoDot_fmt(gchar *s, guint32 v)
{
double cnavDeltaOmegaDot_IoDot = (double)((gint32)v)*pow(2, -44);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", cnavDeltaOmegaDot_IoDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", cnavDeltaOmegaDot_IoDot, (gint32)v);
}
static void
@@ -758,7 +849,7 @@ lpp_cnavCx_fmt(gchar *s, guint32 v)
{
double cnavCx = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e rad (%d)", cnavCx, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g rad (%d)", cnavCx, (gint32)v);
}
static void
@@ -766,7 +857,7 @@ lpp_cnavCrs_Crc_fmt(gchar *s, guint32 v)
{
double cnavCrs_Crc = (double)((gint32)v)*pow(2, -8);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m (%d)", cnavCrs_Crc, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", cnavCrs_Crc, (gint32)v);
}
static void
@@ -774,7 +865,7 @@ lpp_gloX_Y_Z_fmt(gchar *s, guint32 v)
{
double gloX_Y_Z = (double)((gint32)v)*pow(2, -11);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e km (%d)", gloX_Y_Z, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g km (%d)", gloX_Y_Z, (gint32)v);
}
static void
@@ -782,7 +873,7 @@ lpp_gloXdot_Ydot_Zdot_fmt(gchar *s, guint32 v)
{
double gloXdot_Ydot_Zdot = (double)((gint32)v)*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e km/s (%d)", gloXdot_Ydot_Zdot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g km/s (%d)", gloXdot_Ydot_Zdot, (gint32)v);
}
static void
@@ -790,7 +881,7 @@ lpp_gloXdotdot_Ydotdot_Zdotdot_fmt(gchar *s, guint32 v)
{
double gloXdotdot_Ydotdot_Zdotdot = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e km/s2 (%d)", gloXdotdot_Ydotdot_Zdotdot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g km/s2 (%d)", gloXdotdot_Ydotdot_Zdotdot, (gint32)v);
}
static void
@@ -830,7 +921,7 @@ lpp_sbasXgDotDot_YgDotDot_fmt(gchar *s, guint32 v)
{
double sbasXgDotDot_YgDotDot = (double)((gint32)v)*0.0000125;
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m/s2 (%d)", sbasXgDotDot_YgDotDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m/s2 (%d)", sbasXgDotDot_YgDotDot, (gint32)v);
}
static void
@@ -838,7 +929,55 @@ lpp_sbasZgDotDot_fmt(gchar *s, guint32 v)
{
double sbasZgDotDot = (double)((gint32)v)*0.0000625;
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m/s2 (%d)", sbasZgDotDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m/s2 (%d)", sbasZgDotDot, (gint32)v);
+}
+
+static void
+lpp_bdsAPowerHalf_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAPowerHalf = (double)v*pow(2, -19);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", bdsAPowerHalf, v);
+}
+
+static void
+lpp_bdsE_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsE = (double)v*pow(2, -33);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", bdsE, v);
+}
+
+static void
+lpp_bdsW_M0_Omega0_I0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsW_M0_Omega0_I0 = (double)((gint32)v)*pow(2, -31);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", bdsW_M0_Omega0_I0, (gint32)v);
+}
+
+static void
+lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsDeltaN_OmegaDot_IDot = (double)((gint32)v)*pow(2, -43);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", bdsDeltaN_OmegaDot_IDot, (gint32)v);
+}
+
+static void
+lpp_bdsCuc_Cus_Cic_Cis_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsCuc_Cus_Cic_Cis = (double)((gint32)v)*pow(2, -31);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g rad (%d)", bdsCuc_Cus_Cic_Cis, (gint32)v);
+}
+
+static void
+lpp_bdsCrc_Crs_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsCrc_Crs = (double)((gint32)v)*pow(2, -6);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g rad (%d)", bdsCrc_Crs, (gint32)v);
}
static void
@@ -871,7 +1010,7 @@ lpp_codePhase_fmt(gchar *s, guint32 v)
{
double codePhase = (double)v*pow(2, -10);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e ms (%u)", codePhase, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g ms (%u)", codePhase, v);
}
static const value_string lpp_codePhaseSearchWindow_vals[] = {
@@ -918,17 +1057,11 @@ lpp_azimuth_elevation_fmt(gchar *s, guint32 v)
}
static void
-lpp_toa_fmt(gchar *s, guint32 v)
-{
- g_snprintf(s, ITEM_LABEL_LENGTH, "%u s (%u)", 4096*v, v);
-}
-
-static void
lpp_kepAlmanacE_fmt(gchar *s, guint32 v)
{
double kepAlmanacE = (double)v*pow(2, -16);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", kepAlmanacE, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", kepAlmanacE, v);
}
static void
@@ -936,7 +1069,7 @@ lpp_kepAlmanacDeltaI_fmt(gchar *s, guint32 v)
{
double kepAlmanacDeltaI = (double)((gint32)v)*pow(2, -14);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", kepAlmanacDeltaI, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", kepAlmanacDeltaI, (gint32)v);
}
static void
@@ -944,7 +1077,7 @@ lpp_kepAlmanacOmegaDot_fmt(gchar *s, guint32 v)
{
double kepAlmanacOmegaDot = (double)((gint32)v)*pow(2, -33);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", kepAlmanacOmegaDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", kepAlmanacOmegaDot, (gint32)v);
}
static void
@@ -952,7 +1085,7 @@ lpp_kepAlmanacAPowerHalf_fmt(gchar *s, guint32 v)
{
double kepAlmanacAPowerHalf = (double)((gint32)v)*pow(2, -9);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m1/2 (%d)", kepAlmanacAPowerHalf, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%d)", kepAlmanacAPowerHalf, (gint32)v);
}
static void
@@ -960,7 +1093,7 @@ lpp_kepAlmanacOmega0_W_M0_fmt(gchar *s, guint32 v)
{
double kepAlmanacOmega0_W_M0 = (double)((gint32)v)*pow(2, -15);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", kepAlmanacOmega0_W_M0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", kepAlmanacOmega0_W_M0, (gint32)v);
}
static void
@@ -968,7 +1101,7 @@ lpp_kepAlmanacAF0_fmt(gchar *s, guint32 v)
{
double kepAlmanacAF0 = (double)((gint32)v)*pow(2, -19);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", kepAlmanacAF0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", kepAlmanacAF0, (gint32)v);
}
static void
@@ -976,7 +1109,7 @@ lpp_kepAlmanacAF1_fmt(gchar *s, guint32 v)
{
double kepAlmanacAF1 = (double)((gint32)v)*pow(2, -38);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", kepAlmanacAF1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", kepAlmanacAF1, (gint32)v);
}
static void
@@ -984,7 +1117,7 @@ lpp_navAlmE_fmt(gchar *s, guint32 v)
{
double navAlmE = (double)v*pow(2, -21);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", navAlmE, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", navAlmE, v);
}
static void
@@ -992,7 +1125,7 @@ lpp_navAlmDeltaI_fmt(gchar *s, guint32 v)
{
double navAlmDeltaI = (double)((gint32)v)*pow(2, -19);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", navAlmDeltaI, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", navAlmDeltaI, (gint32)v);
}
static void
@@ -1000,7 +1133,7 @@ lpp_navAlmOMEGADOT_fmt(gchar *s, guint32 v)
{
double navAlmOMEGADOT = (double)((gint32)v)*pow(2, -38);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", navAlmOMEGADOT, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", navAlmOMEGADOT, (gint32)v);
}
static void
@@ -1008,7 +1141,7 @@ lpp_navAlmSqrtA_fmt(gchar *s, guint32 v)
{
double navAlmSqrtA = (double)v*pow(2, -11);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m1/2 (%u)", navAlmSqrtA, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", navAlmSqrtA, v);
}
static void
@@ -1016,7 +1149,7 @@ lpp_navAlmOMEGAo_Omega_Mo_fmt(gchar *s, guint32 v)
{
double navAlmOMEGAo_Omega_Mo = (double)((gint32)v)*pow(2, -23);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", navAlmOMEGAo_Omega_Mo, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", navAlmOMEGAo_Omega_Mo, (gint32)v);
}
static void
@@ -1024,7 +1157,7 @@ lpp_navAlmaf0_fmt(gchar *s, guint32 v)
{
double navAlmaf0 = (double)((gint32)v)*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", navAlmaf0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", navAlmaf0, (gint32)v);
}
static void
@@ -1032,7 +1165,7 @@ lpp_navAlmaf1_fmt(gchar *s, guint32 v)
{
double navAlmaf1 = (double)((gint32)v)*pow(2, -38);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", navAlmaf1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", navAlmaf1, (gint32)v);
}
static void
@@ -1046,7 +1179,7 @@ lpp_redAlmOmega0_Phi0_fmt(gchar *s, guint32 v)
{
double redAlmOmega0_Phi0 = (double)((gint32)v)*pow(2, -6);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", redAlmOmega0_Phi0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", redAlmOmega0_Phi0, (gint32)v);
}
static void
@@ -1054,7 +1187,7 @@ lpp_midiAlmE_fmt(gchar *s, guint32 v)
{
double midiAlmE = (double)v*pow(2, -16);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", midiAlmE, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", midiAlmE, v);
}
static void
@@ -1062,7 +1195,7 @@ lpp_midiAlmDeltaI_fmt(gchar *s, guint32 v)
{
double midiAlmDeltaI = (double)((gint32)v)*pow(2, -14);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", midiAlmDeltaI, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", midiAlmDeltaI, (gint32)v);
}
static void
@@ -1070,7 +1203,7 @@ lpp_midiAlmOmegaDot_fmt(gchar *s, guint32 v)
{
double midiAlmOmegaDot = (double)((gint32)v)*pow(2, -33);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", midiAlmOmegaDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", midiAlmOmegaDot, (gint32)v);
}
static void
@@ -1084,7 +1217,7 @@ lpp_midiAlmOmega0_Omega_Mo_fmt(gchar *s, guint32 v)
{
double midiAlmOmega0_Omega_Mo = (double)((gint32)v)*pow(2, -15);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", midiAlmOmega0_Omega_Mo, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", midiAlmOmega0_Omega_Mo, (gint32)v);
}
static void
@@ -1092,7 +1225,7 @@ lpp_midiAlmaf0_fmt(gchar *s, guint32 v)
{
double midiAlmaf0 = (double)((gint32)v)*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", midiAlmaf0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", midiAlmaf0, (gint32)v);
}
static void
@@ -1100,7 +1233,7 @@ lpp_midiAlmaf1_fmt(gchar *s, guint32 v)
{
double midiAlmaf1 = (double)((gint32)v)*pow(2, -37);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", midiAlmaf1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", midiAlmaf1, (gint32)v);
}
static void
@@ -1108,7 +1241,7 @@ lpp_gloAlmLambdaA_DeltaIa_fmt(gchar *s, guint32 v)
{
double gloAlmLambdaA_DeltaIa = (double)((gint32)v)*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", gloAlmLambdaA_DeltaIa, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", gloAlmLambdaA_DeltaIa, (gint32)v);
}
static void
@@ -1122,7 +1255,7 @@ lpp_gloAlmDeltaTA_fmt(gchar *s, guint32 v)
{
double gloAlmDeltaTA = (double)((gint32)v)*pow(2, -9);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/orbit period (%d)", gloAlmDeltaTA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/orbit period (%d)", gloAlmDeltaTA, (gint32)v);
}
static void
@@ -1130,7 +1263,7 @@ lpp_gloAlmDeltaTdotA_fmt(gchar *s, guint32 v)
{
double gloAlmDeltaTdotA = (double)((gint32)v)*pow(2, -14);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/orbit period (%d)", gloAlmDeltaTdotA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/orbit period (%d)", gloAlmDeltaTdotA, (gint32)v);
}
static void
@@ -1138,7 +1271,7 @@ lpp_gloAlmEpsilonA_fmt(gchar *s, guint32 v)
{
double gloAlmEpsilonA = (double)v*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", gloAlmEpsilonA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", gloAlmEpsilonA, (gint32)v);
}
static void
@@ -1146,7 +1279,7 @@ lpp_gloAlmOmegaA_fmt(gchar *s, guint32 v)
{
double gloAlmOmegaA = (double)((gint32)v)*pow(2, -15);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", gloAlmOmegaA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", gloAlmOmegaA, (gint32)v);
}
static void
@@ -1154,7 +1287,7 @@ lpp_gloAlmTauA_fmt(gchar *s, guint32 v)
{
double gloAlmTauA = (double)((gint32)v)*pow(2, -18);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", gloAlmTauA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", gloAlmTauA, (gint32)v);
}
static void
@@ -1188,11 +1321,83 @@ lpp_sbasAlmTo_fmt(gchar *s, guint32 v)
}
static void
+lpp_bdsAlmToa_r12_fmt(gchar *s, guint32 v)
+{
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u s (%u)", v*4096, v);
+}
+
+static void
+lpp_bdsAlmSqrtA_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmSqrtA = (double)v*pow(2, -11);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", bdsAlmSqrtA, v);
+}
+
+static void
+lpp_bdsAlmE_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmE = (double)v*pow(2, -21);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", bdsAlmE, v);
+}
+
+static void
+lpp_bdsAlmW_M0_Omega0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmW_M0_Omega0 = (double)((gint32)v)*pow(2, -23);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", bdsAlmW_M0_Omega0, (gint32)v);
+}
+
+static void
+lpp_bdsAlmOmegaDot_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmOmegaDot = (double)((gint32)v)*pow(2, -38);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", bdsAlmOmegaDot, (gint32)v);
+}
+
+static void
+lpp_bdsAlmDeltaI_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmDeltaI = (double)((gint32)v)*pow(2, -19);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", bdsAlmDeltaI, (gint32)v);
+}
+
+static void
+lpp_bdsAlmA0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmA0 = (double)((gint32)v)*pow(2, -20);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", bdsAlmA0, (gint32)v);
+}
+
+static void
+lpp_bdsAlmA1_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmA1 = (double)((gint32)v)*pow(2, -38);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", bdsAlmA1, (gint32)v);
+}
+
+static const true_false_string lpp_bdsSvHealth_r12_b1i_b2i_value = {
+ "OK",
+ "Weak"
+};
+
+static const true_false_string lpp_bdsSvHealth_r12_nav_value = {
+ "OK",
+ "Bad (IOD over limit)"
+};
+
+static void
lpp_gnss_Utc_A1_fmt(gchar *s, guint32 v)
{
double gnss_Utc_A1 = (double)((gint32)v)*pow(2, -50);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", gnss_Utc_A1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", gnss_Utc_A1, (gint32)v);
}
static void
@@ -1200,7 +1405,7 @@ lpp_gnss_Utc_A0_fmt(gchar *s, guint32 v)
{
double gnss_Utc_A0 = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", gnss_Utc_A0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", gnss_Utc_A0, (gint32)v);
}
static void
@@ -1209,12 +1414,91 @@ lpp_gnss_Utc_Tot_fmt(gchar *s, guint32 v)
g_snprintf(s, ITEM_LABEL_LENGTH, "%u s (%u)", v*4096, v);
}
+static const value_string lpp_bds_UDREI_vals[] = {
+ { 0, "1 meter"},
+ { 1, "1.5 meters"},
+ { 2, "2 meters"},
+ { 3, "3 meters"},
+ { 4, "4 meters"},
+ { 5, "5 meters"},
+ { 6, "6 meters"},
+ { 7, "8 meters"},
+ { 8, "10 meters"},
+ { 9, "15 meters"},
+ { 10, "20 meters"},
+ { 11, "50 meters"},
+ { 12, "100 meters"},
+ { 13, "150 meters"},
+ { 14, "Not monitored"},
+ { 15, "Not available"},
+ { 0, NULL}
+};
+static value_string_ext lpp_bds_UDREI_vals_ext = VALUE_STRING_EXT_INIT(lpp_bds_UDREI_vals);
+
+static const value_string lpp_bds_RURAI_vals[] = {
+ { 0, "0.75 meter"},
+ { 1, "1 meter"},
+ { 2, "1.25 meters"},
+ { 3, "1.75 meters"},
+ { 4, "2.25 meters"},
+ { 5, "3 meters"},
+ { 6, "3.75 meters"},
+ { 7, "4.5 meters"},
+ { 8, "5.25 meters"},
+ { 9, "6 meters"},
+ { 10, "7.5 meters"},
+ { 11, "15 meters"},
+ { 12, "50 meters"},
+ { 13, "150 meters"},
+ { 14, "300 meters"},
+ { 15, "> 300 meters"},
+ { 0, NULL}
+};
+static value_string_ext lpp_bds_RURAI_vals_ext = VALUE_STRING_EXT_INIT(lpp_bds_RURAI_vals);
+
+static void
+lpp_bds_ECC_DeltaT_r12_fmt(gchar *s, guint32 v)
+{
+ if ((gint32)v == -4096) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "Not available (%d)", (gint32)v);
+ } else {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", (float)((gint32)v)*0.1, (gint32)v);
+ }
+}
+
+static void
+lpp_bds_GridIonElement_dt_r12_fmt(gchar *s, guint32 v)
+{
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", (float)((gint32)v)*0.125, (gint32)v);
+}
+
+static const value_string lpp_bds_givei_vals[] = {
+ { 0, "0.3 meter"},
+ { 1, "0.6 meter"},
+ { 2, "0.9 meter"},
+ { 3, "1.2 meters"},
+ { 4, "1.5 meters"},
+ { 5, "1.8 meters"},
+ { 6, "2.1 meters"},
+ { 7, "2.4 meters"},
+ { 8, "2.7 meters"},
+ { 9, "3 meters"},
+ { 10, "3.6 meters"},
+ { 11, "4.5 meters"},
+ { 12, "6 meters"},
+ { 13, "9 meters"},
+ { 14, "15 meters"},
+ { 15, "45 meters"},
+ { 0, NULL}
+};
+static value_string_ext lpp_bds_givei_vals_ext = VALUE_STRING_EXT_INIT(lpp_bds_givei_vals);
+
static void
lpp_tauC_fmt(gchar *s, guint32 v)
{
double tauC = (double)((gint32)v)*pow(2, -31);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", tauC, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", tauC, (gint32)v);
}
static void
@@ -1222,7 +1506,7 @@ lpp_b1_fmt(gchar *s, guint32 v)
{
double b1 = (double)((gint32)v)*pow(2, -10);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", b1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", b1, (gint32)v);
}
static void
@@ -1230,7 +1514,7 @@ lpp_b2_fmt(gchar *s, guint32 v)
{
double b2 = (double)((gint32)v)*pow(2, -16);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/msd (%d)", b2, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/msd (%d)", b2, (gint32)v);
}
static const value_string lpp_utcStandardID_vals[] = {
@@ -1275,7 +1559,7 @@ lpp_GNSS_SatMeas_codePhase_fmt(gchar *s, guint32 v)
{
double codePhase = (double)v*pow(2, -21);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e ms (%u)", codePhase, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g ms (%u)", codePhase, v);
}
static void
@@ -1299,7 +1583,7 @@ lpp_codePhaseRMSError_fmt(gchar *s, guint32 v)
static void
lpp_doppler_fmt(gchar *s, guint32 v)
{
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m/s (%d)", (gint32)v*0.04, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m/s (%d)", (gint32)v*0.04, (gint32)v);
}
static void
@@ -1307,7 +1591,7 @@ lpp_adr_fmt(gchar *s, guint32 v)
{
double adr = (double)v*pow(2, -10);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m (%u)", adr, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%u)", adr, v);
}
static void
@@ -1362,12 +1646,52 @@ void proto_register_lpp(void) {
static hf_register_info hf[] = {
#include "packet-lpp-hfarr.c"
+ { &hf_lpp_svHealthExt_v12xy_e5bhs,
+ { "E5b Signal Health Status", "lpp.svHealthExt_v12xy.e5bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_svHealthExt_v12xy_e1_bhs,
+ { "E1-B Signal Health Status", "lpp.svHealthExt_v12xy.e1_bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_kepSV_StatusINAV_e5bhs,
+ { "E5b Signal Health Status", "lpp.kepSV_StatusINAV.e5bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_kepSV_StatusINAV_e1_bhs,
+ { "E1-B Signal Health Status", "lpp.kepSV_StatusINAV.e1_bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_kepSV_StatusFNAV_e5ahs,
+ { "E5a Signal Health Status", "lpp.kepSV_StatusFNAV.e5ahs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_sat_clock,
+ { "Satellite Clock", "lpp.bdsSvHealth_r12.sat_clock",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_ok_error), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_b1i,
+ { "B1I Signal", "lpp.bdsSvHealth_r12.b1i",
+ FT_BOOLEAN, BASE_NONE, TFS(&lpp_bdsSvHealth_r12_b1i_b2i_value), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_b2i,
+ { "B2I Signal", "lpp.bdsSvHealth_r12.b2i",
+ FT_BOOLEAN, BASE_NONE, TFS(&lpp_bdsSvHealth_r12_b1i_b2i_value), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_nav,
+ { "NAV Message", "lpp.bdsSvHealth_r12.nav",
+ FT_BOOLEAN, BASE_NONE, TFS(&lpp_bdsSvHealth_r12_nav_value), 0,
+ NULL, HFILL }}
};
/* List of subtrees */
static gint *ett[] = {
&ett_lpp,
&ett_lpp_bitmap,
+ &ett_lpp_svHealthExt_v12xy,
+ &ett_kepSV_StatusINAV,
+ &ett_kepSV_StatusFNAV,
+ &ett_lpp_bdsSvHealth_r12,
#include "packet-lpp-ettarr.c"
};
diff --git a/asn1/lpp/packet-lpp-template.h b/asn1/lpp/packet-lpp-template.h
index b7c605b465..ee119284d4 100644
--- a/asn1/lpp/packet-lpp-template.h
+++ b/asn1/lpp/packet-lpp-template.h
@@ -1,6 +1,6 @@
/* packet-lpp.h
* Routines for 3GPP LTE Positioning Protocol (LLP) packet dissection
- * Copyright 2011, Pascal Quantin <pascal.quantin@gmail.com>
+ * Copyright 2011-2015 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 11.6.0 Release 11
+ * Ref 3GPP TS 36.355 version 12.3.0 Release 12
* http://www.3gpp.org
*/
diff --git a/epan/dissectors/packet-lpp.c b/epan/dissectors/packet-lpp.c
index a60151cf0d..a5a3c86605 100644
--- a/epan/dissectors/packet-lpp.c
+++ b/epan/dissectors/packet-lpp.c
@@ -8,7 +8,7 @@
#line 1 "../../asn1/lpp/packet-lpp-template.c"
/* packet-lpp.c
* Routines for 3GPP LTE Positioning Protocol (LLP) packet dissection
- * Copyright 2011-2013 Pascal Quantin <pascal.quantin@gmail.com>
+ * Copyright 2011-2015 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 11.6.0 Release 11
+ * Ref 3GPP TS 36.355 version 12.3.0 Release 12
* http://www.3gpp.org
*/
@@ -38,6 +38,7 @@
#include <epan/packet.h>
#include <epan/asn1.h>
+#include <epan/tfs.h>
#include "packet-per.h"
#include "packet-lpp.h"
@@ -245,9 +246,11 @@ static int hf_lpp_responseTime = -1; /* ResponseTime */
static int hf_lpp_velocityRequest = -1; /* BOOLEAN */
static int hf_lpp_accuracy = -1; /* INTEGER_0_127 */
static int hf_lpp_time = -1; /* T_time */
+static int hf_lpp_responseTimeEarlyFix_r12 = -1; /* T_responseTimeEarlyFix_r12 */
static int hf_lpp_locationEstimate = -1; /* LocationCoordinates */
static int hf_lpp_velocityEstimate = -1; /* Velocity */
static int hf_lpp_locationError = -1; /* LocationError */
+static int hf_lpp_earlyFixReport_r12 = -1; /* EarlyFixReport_r12 */
static int hf_lpp_ellipsoidPoint_01 = -1; /* Ellipsoid_Point */
static int hf_lpp_ellipsoidPointWithUncertaintyCircle_01 = -1; /* Ellipsoid_PointWithUncertaintyCircle */
static int hf_lpp_ellipsoidPointWithUncertaintyEllipse_01 = -1; /* EllipsoidPointWithUncertaintyEllipse */
@@ -339,6 +342,8 @@ static int hf_lpp_gnss_AcquisitionAssistance = -1; /* GNSS_AcquisitionAssistanc
static int hf_lpp_gnss_Almanac = -1; /* GNSS_Almanac */
static int hf_lpp_gnss_UTC_Model = -1; /* GNSS_UTC_Model */
static int hf_lpp_gnss_AuxiliaryInformation = -1; /* GNSS_AuxiliaryInformation */
+static int hf_lpp_bds_DifferentialCorrections_r12 = -1; /* BDS_DifferentialCorrections_r12 */
+static int hf_lpp_bds_GridModel_r12 = -1; /* BDS_GridModelParameter_r12 */
static int hf_lpp_gnss_SystemTime = -1; /* GNSS_SystemTime */
static int hf_lpp_referenceTimeUnc = -1; /* INTEGER_0_127 */
static int hf_lpp_gnss_ReferenceTimeForCells = -1; /* SEQUENCE_SIZE_1_16_OF_GNSS_ReferenceTimeForOneCell */
@@ -387,9 +392,9 @@ static int hf_lpp_beta0 = -1; /* INTEGER_M128_127 */
static int hf_lpp_beta1 = -1; /* INTEGER_M128_127 */
static int hf_lpp_beta2 = -1; /* INTEGER_M128_127 */
static int hf_lpp_beta3 = -1; /* INTEGER_M128_127 */
-static int hf_lpp_ai0 = -1; /* INTEGER_0_4095 */
-static int hf_lpp_ai1 = -1; /* INTEGER_0_4095 */
-static int hf_lpp_ai2 = -1; /* INTEGER_0_4095 */
+static int hf_lpp_ai0 = -1; /* INTEGER_0_2047 */
+static int hf_lpp_ai1 = -1; /* INTEGER_M1024_1023 */
+static int hf_lpp_ai2 = -1; /* INTEGER_M8192_8191 */
static int hf_lpp_ionoStormFlag1 = -1; /* INTEGER_0_1 */
static int hf_lpp_ionoStormFlag2 = -1; /* INTEGER_0_1 */
static int hf_lpp_ionoStormFlag3 = -1; /* INTEGER_0_1 */
@@ -430,22 +435,26 @@ static int hf_lpp_GNSS_NavModelSatelliteList_item = -1; /* GNSS_NavModelSatelli
static int hf_lpp_svHealth = -1; /* BIT_STRING_SIZE_8 */
static int hf_lpp_gnss_ClockModel = -1; /* GNSS_ClockModel */
static int hf_lpp_gnss_OrbitModel = -1; /* GNSS_OrbitModel */
+static int hf_lpp_svHealthExt_v12xy = -1; /* T_svHealthExt_v12xy */
static int hf_lpp_standardClockModelList = -1; /* StandardClockModelList */
static int hf_lpp_nav_ClockModel = -1; /* NAV_ClockModel */
static int hf_lpp_cnav_ClockModel = -1; /* CNAV_ClockModel */
static int hf_lpp_glonass_ClockModel = -1; /* GLONASS_ClockModel */
static int hf_lpp_sbas_ClockModel = -1; /* SBAS_ClockModel */
+static int hf_lpp_bds_ClockModel_r12 = -1; /* BDS_ClockModel_r12 */
static int hf_lpp_keplerianSet = -1; /* NavModelKeplerianSet */
static int hf_lpp_nav_KeplerianSet = -1; /* NavModelNAV_KeplerianSet */
static int hf_lpp_cnav_KeplerianSet = -1; /* NavModelCNAV_KeplerianSet */
static int hf_lpp_glonass_ECEF = -1; /* NavModel_GLONASS_ECEF */
static int hf_lpp_sbas_ECEF = -1; /* NavModel_SBAS_ECEF */
+static int hf_lpp_bds_KeplerianSet_r12 = -1; /* NavModel_BDS_KeplerianSet_r12 */
static int hf_lpp_StandardClockModelList_item = -1; /* StandardClockModelElement */
static int hf_lpp_stanClockToc = -1; /* INTEGER_0_16383 */
-static int hf_lpp_stanClockAF2 = -1; /* INTEGER_M2048_2047 */
-static int hf_lpp_stanClockAF1 = -1; /* INTEGER_M131072_131071 */
-static int hf_lpp_stanClockAF0 = -1; /* INTEGER_M134217728_134217727 */
+static int hf_lpp_stanClockAF2 = -1; /* INTEGER_M32_31 */
+static int hf_lpp_stanClockAF1 = -1; /* INTEGER_M1048576_1048575 */
+static int hf_lpp_stanClockAF0 = -1; /* INTEGER_M1073741824_1073741823 */
static int hf_lpp_stanClockTgd = -1; /* INTEGER_M512_511 */
+static int hf_lpp_sisa = -1; /* INTEGER_0_255 */
static int hf_lpp_stanModelID = -1; /* INTEGER_0_1 */
static int hf_lpp_navToc = -1; /* INTEGER_0_37799 */
static int hf_lpp_navaf2 = -1; /* INTEGER_M128_127 */
@@ -473,6 +482,12 @@ static int hf_lpp_gloDeltaTau = -1; /* INTEGER_M16_15 */
static int hf_lpp_sbasTo = -1; /* INTEGER_0_5399 */
static int hf_lpp_sbasAgfo = -1; /* INTEGER_M2048_2047 */
static int hf_lpp_sbasAgf1 = -1; /* INTEGER_M128_127 */
+static int hf_lpp_bdsAODC_r12 = -1; /* INTEGER_0_31 */
+static int hf_lpp_bdsToc_r12 = -1; /* INTEGER_0_131071 */
+static int hf_lpp_bdsA0_r12 = -1; /* INTEGER_M8388608_8388607 */
+static int hf_lpp_bdsA1_r12 = -1; /* INTEGER_M2097152_2097151 */
+static int hf_lpp_bdsA2_r12 = -1; /* INTEGER_M1024_1023 */
+static int hf_lpp_bdsTgd1_r12 = -1; /* INTEGER_M512_511 */
static int hf_lpp_keplerToe = -1; /* INTEGER_0_16383 */
static int hf_lpp_keplerW = -1; /* INTEGER_M2147483648_2147483647 */
static int hf_lpp_keplerDeltaN = -1; /* INTEGER_M32768_32767 */
@@ -557,6 +572,24 @@ static int hf_lpp_sbasZgDot = -1; /* INTEGER_M131072_131071 */
static int hf_lpp_sbasXgDotDot = -1; /* INTEGER_M512_511 */
static int hf_lpp_sbagYgDotDot = -1; /* INTEGER_M512_511 */
static int hf_lpp_sbasZgDotDot = -1; /* INTEGER_M512_511 */
+static int hf_lpp_bdsAODE_r12 = -1; /* INTEGER_0_31 */
+static int hf_lpp_bdsURAI_r12 = -1; /* T_bdsURAI_r12 */
+static int hf_lpp_bdsToe_r12 = -1; /* INTEGER_0_131071 */
+static int hf_lpp_bdsAPowerHalf_r12 = -1; /* INTEGER_0_4294967295 */
+static int hf_lpp_bdsE_r12 = -1; /* INTEGER_0_4294967295 */
+static int hf_lpp_bdsW_r12 = -1; /* INTEGER_M2147483648_2147483647 */
+static int hf_lpp_bdsDeltaN_r12 = -1; /* INTEGER_M32768_32767 */
+static int hf_lpp_bdsM0_r12 = -1; /* INTEGER_M2147483648_2147483647 */
+static int hf_lpp_bdsOmega0_r12 = -1; /* INTEGER_M2147483648_2147483647 */
+static int hf_lpp_bdsOmegaDot_r12 = -1; /* INTEGER_M8388608_8388607 */
+static int hf_lpp_bdsI0_r12 = -1; /* INTEGER_M2147483648_2147483647 */
+static int hf_lpp_bdsIDot_r12 = -1; /* INTEGER_M8192_8191 */
+static int hf_lpp_bdsCuc_r12 = -1; /* INTEGER_M131072_131071 */
+static int hf_lpp_bdsCus_r12 = -1; /* INTEGER_M131072_131071 */
+static int hf_lpp_bdsCrc_r12 = -1; /* INTEGER_M131072_131071 */
+static int hf_lpp_bdsCrs_r12 = -1; /* INTEGER_M131072_131071 */
+static int hf_lpp_bdsCic_r12 = -1; /* INTEGER_M131072_131071 */
+static int hf_lpp_bdsCis_r12 = -1; /* INTEGER_M131072_131071 */
static int hf_lpp_gnss_BadSignalList = -1; /* GNSS_BadSignalList */
static int hf_lpp_GNSS_BadSignalList_item = -1; /* BadSignalElement */
static int hf_lpp_badSVID = -1; /* SV_ID */
@@ -583,10 +616,12 @@ static int hf_lpp_elevation = -1; /* INTEGER_0_127 */
static int hf_lpp_codePhase1023 = -1; /* BOOLEAN */
static int hf_lpp_dopplerUncertaintyExt_r10 = -1; /* T_dopplerUncertaintyExt_r10 */
static int hf_lpp_weekNumber_01 = -1; /* INTEGER_0_255 */
-static int hf_lpp_toa = -1; /* INTEGER_0_255 */
+static int hf_lpp_toa = -1; /* T_toa */
static int hf_lpp_ioda = -1; /* INTEGER_0_3 */
static int hf_lpp_completeAlmanacProvided = -1; /* BOOLEAN */
static int hf_lpp_gnss_AlmanacList = -1; /* GNSS_AlmanacList */
+static int hf_lpp_toa_ext_v12xy = -1; /* T_toa_ext_v12xy */
+static int hf_lpp_ioda_ext_v12xy = -1; /* INTEGER_4_15 */
static int hf_lpp_GNSS_AlmanacList_item = -1; /* GNSS_AlmanacElement */
static int hf_lpp_keplerianAlmanacSet = -1; /* AlmanacKeplerianSet */
static int hf_lpp_keplerianNAV_Almanac = -1; /* AlmanacNAV_KeplerianSet */
@@ -594,16 +629,18 @@ static int hf_lpp_keplerianReducedAlmanac = -1; /* AlmanacReducedKeplerianSet
static int hf_lpp_keplerianMidiAlmanac = -1; /* AlmanacMidiAlmanacSet */
static int hf_lpp_keplerianGLONASS = -1; /* AlmanacGLONASS_AlmanacSet */
static int hf_lpp_ecef_SBAS_Almanac = -1; /* AlmanacECEF_SBAS_AlmanacSet */
+static int hf_lpp_keplerianBDS_Almanac_r12 = -1; /* AlmanacBDS_AlmanacSet_r12 */
static int hf_lpp_kepAlmanacE = -1; /* INTEGER_0_2047 */
static int hf_lpp_kepAlmanacDeltaI = -1; /* INTEGER_M1024_1023 */
static int hf_lpp_kepAlmanacOmegaDot = -1; /* INTEGER_M1024_1023 */
-static int hf_lpp_kepSVHealth = -1; /* INTEGER_0_15 */
-static int hf_lpp_kepAlmanacAPowerHalf = -1; /* INTEGER_M65536_65535 */
+static int hf_lpp_kepSV_StatusINAV = -1; /* T_kepSV_StatusINAV */
+static int hf_lpp_kepSV_StatusFNAV = -1; /* T_kepSV_StatusFNAV */
+static int hf_lpp_kepAlmanacAPowerHalf = -1; /* INTEGER_M4096_4095 */
static int hf_lpp_kepAlmanacOmega0 = -1; /* INTEGER_M32768_32767 */
static int hf_lpp_kepAlmanacW = -1; /* INTEGER_M32768_32767 */
static int hf_lpp_kepAlmanacM0 = -1; /* INTEGER_M32768_32767 */
-static int hf_lpp_kepAlmanacAF0 = -1; /* INTEGER_M8192_8191 */
-static int hf_lpp_kepAlmanacAF1 = -1; /* INTEGER_M1024_1023 */
+static int hf_lpp_kepAlmanacAF0 = -1; /* INTEGER_M32768_32767 */
+static int hf_lpp_kepAlmanacAF1 = -1; /* INTEGER_M4096_4095 */
static int hf_lpp_navAlmE = -1; /* INTEGER_0_65535 */
static int hf_lpp_navAlmDeltaI = -1; /* INTEGER_M32768_32767 */
static int hf_lpp_navAlmOMEGADOT = -1; /* INTEGER_M32768_32767 */
@@ -654,10 +691,22 @@ static int hf_lpp_sbasAlmXgdot = -1; /* INTEGER_M4_3 */
static int hf_lpp_sbasAlmYgDot = -1; /* INTEGER_M4_3 */
static int hf_lpp_sbasAlmZgDot = -1; /* INTEGER_M8_7 */
static int hf_lpp_sbasAlmTo = -1; /* INTEGER_0_2047 */
+static int hf_lpp_bdsAlmToa_r12 = -1; /* INTEGER_0_255 */
+static int hf_lpp_bdsAlmSqrtA_r12 = -1; /* INTEGER_0_16777215 */
+static int hf_lpp_bdsAlmE_r12 = -1; /* INTEGER_0_131071 */
+static int hf_lpp_bdsAlmW_r12 = -1; /* INTEGER_M8388608_8388607 */
+static int hf_lpp_bdsAlmM0_r12 = -1; /* INTEGER_M8388608_8388607 */
+static int hf_lpp_bdsAlmOmega0_r12 = -1; /* INTEGER_M8388608_8388607 */
+static int hf_lpp_bdsAlmOmegaDot_r12 = -1; /* INTEGER_M65536_65535 */
+static int hf_lpp_bdsAlmDeltaI_r12 = -1; /* INTEGER_M32768_32767 */
+static int hf_lpp_bdsAlmA0_r12 = -1; /* INTEGER_M1024_1023 */
+static int hf_lpp_bdsAlmA1_r12 = -1; /* INTEGER_M1024_1023 */
+static int hf_lpp_bdsSvHealth_r12 = -1; /* T_bdsSvHealth_r12 */
static int hf_lpp_utcModel1 = -1; /* UTC_ModelSet1 */
static int hf_lpp_utcModel2 = -1; /* UTC_ModelSet2 */
static int hf_lpp_utcModel3 = -1; /* UTC_ModelSet3 */
static int hf_lpp_utcModel4 = -1; /* UTC_ModelSet4 */
+static int hf_lpp_utcModel5_r12 = -1; /* UTC_ModelSet5_r12 */
static int hf_lpp_gnss_Utc_A1 = -1; /* INTEGER_M8388608_8388607 */
static int hf_lpp_gnss_Utc_A0 = -1; /* INTEGER_M2147483648_2147483647 */
static int hf_lpp_gnss_Utc_Tot = -1; /* INTEGER_0_255 */
@@ -689,12 +738,32 @@ static int hf_lpp_utcWNlsf_01 = -1; /* T_utcWNlsf_01 */
static int hf_lpp_utcDN_01 = -1; /* T_utcDN_01 */
static int hf_lpp_utcDeltaTlsf_01 = -1; /* T_utcDeltaTlsf_01 */
static int hf_lpp_utcStandardID = -1; /* INTEGER_0_7 */
+static int hf_lpp_utcA0_r12 = -1; /* INTEGER_M2147483648_2147483647 */
+static int hf_lpp_utcA1_r12 = -1; /* INTEGER_M8388608_8388607 */
+static int hf_lpp_utcDeltaTls_r12 = -1; /* T_utcDeltaTls_r12 */
+static int hf_lpp_utcWNlsf_r12 = -1; /* T_utcWNlsf_r12 */
+static int hf_lpp_utcDN_r12 = -1; /* T_utcDN_r12 */
+static int hf_lpp_utcDeltaTlsf_r12 = -1; /* T_utcDeltaTlsf_r12 */
static int hf_lpp_gnss_ID_GPS = -1; /* GNSS_ID_GPS */
static int hf_lpp_gnss_ID_GLONASS = -1; /* GNSS_ID_GLONASS */
static int hf_lpp_GNSS_ID_GPS_item = -1; /* GNSS_ID_GPS_SatElement */
static int hf_lpp_signalsAvailable = -1; /* GNSS_SignalIDs */
static int hf_lpp_GNSS_ID_GLONASS_item = -1; /* GNSS_ID_GLONASS_SatElement */
static int hf_lpp_channelNumber = -1; /* INTEGER_M7_13 */
+static int hf_lpp_dbds_RefTime_r12 = -1; /* T_dbds_RefTime_r12 */
+static int hf_lpp_bds_SgnTypeList_r12 = -1; /* BDS_SgnTypeList_r12 */
+static int hf_lpp_BDS_SgnTypeList_r12_item = -1; /* BDS_SgnTypeElement_r12 */
+static int hf_lpp_dbds_CorrectionList_r12 = -1; /* DBDS_CorrectionList_r12 */
+static int hf_lpp_DBDS_CorrectionList_r12_item = -1; /* DBDS_CorrectionElement_r12 */
+static int hf_lpp_bds_UDREI_r12 = -1; /* INTEGER_0_15 */
+static int hf_lpp_bds_RURAI_r12 = -1; /* INTEGER_0_15 */
+static int hf_lpp_bds_ECC_DeltaT_r12 = -1; /* INTEGER_M4096_4095 */
+static int hf_lpp_bds_RefTime_r12 = -1; /* T_bds_RefTime_r12 */
+static int hf_lpp_gridIonList_r12 = -1; /* GridIonList_r12 */
+static int hf_lpp_GridIonList_r12_item = -1; /* GridIonElement_r12 */
+static int hf_lpp_igp_ID_r12 = -1; /* INTEGER_1_320 */
+static int hf_lpp_dt_r12 = -1; /* INTEGER_0_511 */
+static int hf_lpp_givei_r12 = -1; /* INTEGER_0_15 */
static int hf_lpp_gnss_CommonAssistDataReq = -1; /* GNSS_CommonAssistDataReq */
static int hf_lpp_gnss_GenericAssistDataReq = -1; /* GNSS_GenericAssistDataReq */
static int hf_lpp_gnss_ReferenceTimeReq = -1; /* GNSS_ReferenceTimeReq */
@@ -711,6 +780,8 @@ static int hf_lpp_gnss_AcquisitionAssistanceReq = -1; /* GNSS_AcquisitionAssist
static int hf_lpp_gnss_AlmanacReq = -1; /* GNSS_AlmanacReq */
static int hf_lpp_gnss_UTCModelReq = -1; /* GNSS_UTC_ModelReq */
static int hf_lpp_gnss_AuxiliaryInformationReq = -1; /* GNSS_AuxiliaryInformationReq */
+static int hf_lpp_bds_DifferentialCorrectionsReq_r12 = -1; /* BDS_DifferentialCorrectionsReq_r12 */
+static int hf_lpp_bds_GridModelReq_r12 = -1; /* BDS_GridModelReq_r12 */
static int hf_lpp_gnss_TimeReqPrefList = -1; /* SEQUENCE_SIZE_1_8_OF_GNSS_ID */
static int hf_lpp_gnss_TimeReqPrefList_item = -1; /* GNSS_ID */
static int hf_lpp_gps_TOW_assistReq = -1; /* BOOLEAN */
@@ -816,6 +887,8 @@ static int hf_lpp_gnss_AcquisitionAssistanceSupport = -1; /* GNSS_AcquisitionAs
static int hf_lpp_gnss_AlmanacSupport = -1; /* GNSS_AlmanacSupport */
static int hf_lpp_gnss_UTC_ModelSupport = -1; /* GNSS_UTC_ModelSupport */
static int hf_lpp_gnss_AuxiliaryInformationSupport = -1; /* GNSS_AuxiliaryInformationSupport */
+static int hf_lpp_bds_DifferentialCorrectionsSupport_r12 = -1; /* BDS_DifferentialCorrectionsSupport_r12 */
+static int hf_lpp_bds_GridModelSupport_r12 = -1; /* BDS_GridModelSupport_r12 */
static int hf_lpp_gnssSignalIDs = -1; /* GNSS_SignalIDs */
static int hf_lpp_dgnss_ValidityTimeSup = -1; /* BOOLEAN */
static int hf_lpp_clockModel = -1; /* T_clockModel */
@@ -875,26 +948,31 @@ static int hf_lpp_T_clockModel_model_2 = -1;
static int hf_lpp_T_clockModel_model_3 = -1;
static int hf_lpp_T_clockModel_model_4 = -1;
static int hf_lpp_T_clockModel_model_5 = -1;
+static int hf_lpp_T_clockModel_model_6 = -1;
static int hf_lpp_T_orbitModel_model_1 = -1;
static int hf_lpp_T_orbitModel_model_2 = -1;
static int hf_lpp_T_orbitModel_model_3 = -1;
static int hf_lpp_T_orbitModel_model_4 = -1;
static int hf_lpp_T_orbitModel_model_5 = -1;
+static int hf_lpp_T_orbitModel_model_6 = -1;
static int hf_lpp_T_almanacModel_model_1 = -1;
static int hf_lpp_T_almanacModel_model_2 = -1;
static int hf_lpp_T_almanacModel_model_3 = -1;
static int hf_lpp_T_almanacModel_model_4 = -1;
static int hf_lpp_T_almanacModel_model_5 = -1;
static int hf_lpp_T_almanacModel_model_6 = -1;
+static int hf_lpp_T_almanacModel_model_7 = -1;
static int hf_lpp_T_utc_Model_model_1 = -1;
static int hf_lpp_T_utc_Model_model_2 = -1;
static int hf_lpp_T_utc_Model_model_3 = -1;
static int hf_lpp_T_utc_Model_model_4 = -1;
+static int hf_lpp_T_utc_Model_model_5 = -1;
static int hf_lpp_T_gnss_ids_gps = -1;
static int hf_lpp_T_gnss_ids_sbas = -1;
static int hf_lpp_T_gnss_ids_qzss = -1;
static int hf_lpp_T_gnss_ids_galileo = -1;
static int hf_lpp_T_gnss_ids_glonass = -1;
+static int hf_lpp_T_gnss_ids_bds = -1;
static int hf_lpp_T_sbas_IDs_waas = -1;
static int hf_lpp_T_sbas_IDs_egnos = -1;
static int hf_lpp_T_sbas_IDs_msas = -1;
@@ -908,7 +986,16 @@ static int hf_lpp_T_ecid_MeasSupported_ueRxTxSup = -1;
static int hf_lpp_dummy_eag_field = -1; /* never registered */
/*--- End of included file: packet-lpp-hf.c ---*/
-#line 48 "../../asn1/lpp/packet-lpp-template.c"
+#line 49 "../../asn1/lpp/packet-lpp-template.c"
+static int hf_lpp_svHealthExt_v12xy_e5bhs = -1;
+static int hf_lpp_svHealthExt_v12xy_e1_bhs = -1;
+static int hf_lpp_kepSV_StatusINAV_e5bhs = -1;
+static int hf_lpp_kepSV_StatusINAV_e1_bhs = -1;
+static int hf_lpp_kepSV_StatusFNAV_e5ahs = -1;
+static int hf_lpp_bdsSvHealth_r12_sat_clock = -1;
+static int hf_lpp_bdsSvHealth_r12_b1i = -1;
+static int hf_lpp_bdsSvHealth_r12_b2i = -1;
+static int hf_lpp_bdsSvHealth_r12_nav = -1;
static dissector_handle_t lppe_handle = NULL;
@@ -917,6 +1004,10 @@ static guint32 lpp_epdu_id = -1;
/* Initialize the subtree pointers */
static gint ett_lpp = -1;
static gint ett_lpp_bitmap = -1;
+static gint ett_lpp_svHealthExt_v12xy = -1;
+static gint ett_kepSV_StatusINAV = -1;
+static gint ett_kepSV_StatusFNAV = -1;
+static gint ett_lpp_bdsSvHealth_r12 = -1;
/*--- Included file: packet-lpp-ett.c ---*/
#line 1 "../../asn1/lpp/packet-lpp-ett.c"
@@ -1079,6 +1170,7 @@ static gint ett_lpp_NAV_ClockModel = -1;
static gint ett_lpp_CNAV_ClockModel = -1;
static gint ett_lpp_GLONASS_ClockModel = -1;
static gint ett_lpp_SBAS_ClockModel = -1;
+static gint ett_lpp_BDS_ClockModel_r12 = -1;
static gint ett_lpp_NavModelKeplerianSet = -1;
static gint ett_lpp_NavModelNAV_KeplerianSet = -1;
static gint ett_lpp_T_addNAVparam = -1;
@@ -1086,6 +1178,7 @@ static gint ett_lpp_T_ephemSF1Rsvd = -1;
static gint ett_lpp_NavModelCNAV_KeplerianSet = -1;
static gint ett_lpp_NavModel_GLONASS_ECEF = -1;
static gint ett_lpp_NavModel_SBAS_ECEF = -1;
+static gint ett_lpp_NavModel_BDS_KeplerianSet_r12 = -1;
static gint ett_lpp_GNSS_RealTimeIntegrity = -1;
static gint ett_lpp_GNSS_BadSignalList = -1;
static gint ett_lpp_BadSignalElement = -1;
@@ -1106,16 +1199,26 @@ static gint ett_lpp_AlmanacReducedKeplerianSet = -1;
static gint ett_lpp_AlmanacMidiAlmanacSet = -1;
static gint ett_lpp_AlmanacGLONASS_AlmanacSet = -1;
static gint ett_lpp_AlmanacECEF_SBAS_AlmanacSet = -1;
+static gint ett_lpp_AlmanacBDS_AlmanacSet_r12 = -1;
static gint ett_lpp_GNSS_UTC_Model = -1;
static gint ett_lpp_UTC_ModelSet1 = -1;
static gint ett_lpp_UTC_ModelSet2 = -1;
static gint ett_lpp_UTC_ModelSet3 = -1;
static gint ett_lpp_UTC_ModelSet4 = -1;
+static gint ett_lpp_UTC_ModelSet5_r12 = -1;
static gint ett_lpp_GNSS_AuxiliaryInformation = -1;
static gint ett_lpp_GNSS_ID_GPS = -1;
static gint ett_lpp_GNSS_ID_GPS_SatElement = -1;
static gint ett_lpp_GNSS_ID_GLONASS = -1;
static gint ett_lpp_GNSS_ID_GLONASS_SatElement = -1;
+static gint ett_lpp_BDS_DifferentialCorrections_r12 = -1;
+static gint ett_lpp_BDS_SgnTypeList_r12 = -1;
+static gint ett_lpp_BDS_SgnTypeElement_r12 = -1;
+static gint ett_lpp_DBDS_CorrectionList_r12 = -1;
+static gint ett_lpp_DBDS_CorrectionElement_r12 = -1;
+static gint ett_lpp_BDS_GridModelParameter_r12 = -1;
+static gint ett_lpp_GridIonList_r12 = -1;
+static gint ett_lpp_GridIonElement_r12 = -1;
static gint ett_lpp_A_GNSS_RequestAssistanceData = -1;
static gint ett_lpp_GNSS_CommonAssistDataReq = -1;
static gint ett_lpp_GNSS_GenericAssistDataReq = -1;
@@ -1143,6 +1246,8 @@ static gint ett_lpp_GNSS_AcquisitionAssistanceReq = -1;
static gint ett_lpp_GNSS_AlmanacReq = -1;
static gint ett_lpp_GNSS_UTC_ModelReq = -1;
static gint ett_lpp_GNSS_AuxiliaryInformationReq = -1;
+static gint ett_lpp_BDS_DifferentialCorrectionsReq_r12 = -1;
+static gint ett_lpp_BDS_GridModelReq_r12 = -1;
static gint ett_lpp_A_GNSS_ProvideLocationInformation = -1;
static gint ett_lpp_GNSS_SignalMeasurementInformation = -1;
static gint ett_lpp_MeasurementReferenceTime = -1;
@@ -1189,6 +1294,8 @@ static gint ett_lpp_T_almanacModel = -1;
static gint ett_lpp_GNSS_UTC_ModelSupport = -1;
static gint ett_lpp_T_utc_Model = -1;
static gint ett_lpp_GNSS_AuxiliaryInformationSupport = -1;
+static gint ett_lpp_BDS_DifferentialCorrectionsSupport_r12 = -1;
+static gint ett_lpp_BDS_GridModelSupport_r12 = -1;
static gint ett_lpp_A_GNSS_RequestCapabilities = -1;
static gint ett_lpp_A_GNSS_Error = -1;
static gint ett_lpp_GNSS_LocationServerErrorCauses = -1;
@@ -1216,7 +1323,7 @@ static gint ett_lpp_ECID_LocationServerErrorCauses = -1;
static gint ett_lpp_ECID_TargetDeviceErrorCauses = -1;
/*--- End of included file: packet-lpp-ett.c ---*/
-#line 57 "../../asn1/lpp/packet-lpp-template.c"
+#line 71 "../../asn1/lpp/packet-lpp-template.c"
/* Include constants */
@@ -1232,8 +1339,17 @@ static gint ett_lpp_ECID_TargetDeviceErrorCauses = -1;
#define maxFBI_Plus1 65
#define maxFBI2 256
+typedef enum _T_GNSS_ID_enum {
+ T_GNSS_ID_GPS = 0,
+ T_GNSS_ID_SBAS = 1,
+ T_GNSS_ID_QZSS = 2,
+ T_GNSS_ID_GALILEO = 3,
+ T_GNSS_ID_GLONASS = 4,
+ T_GNSS_ID_BDS = 5
+} T_GNSS_ID_enum;
+
/*--- End of included file: packet-lpp-val.h ---*/
-#line 60 "../../asn1/lpp/packet-lpp-template.c"
+#line 74 "../../asn1/lpp/packet-lpp-template.c"
static const value_string lpp_ePDU_ID_vals[] = {
{ 1, "OMA LPP extensions (LPPe)"},
@@ -1423,11 +1539,12 @@ lpp_frameDrift_fmt(gchar *s, guint32 v)
{
double drift = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", drift, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", drift, (gint32)v);
}
static const value_string lpp_dataID_vals[] = {
{ 0, "Parameters are applicable worldwide"},
+ { 1, "Parameters have been generated by BDS"},
{ 3, "Parameters have been generated by QZSS"},
{ 0, NULL}
};
@@ -1437,7 +1554,7 @@ lpp_alpha0_fmt(gchar *s, guint32 v)
{
double alpha = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", alpha, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", alpha, (gint32)v);
}
static void
@@ -1445,7 +1562,7 @@ lpp_alpha1_fmt(gchar *s, guint32 v)
{
double alpha = (double)((gint32)v)*pow(2, -27);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/semi-circle (%d)", alpha, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/semi-circle (%d)", alpha, (gint32)v);
}
static void
@@ -1453,7 +1570,7 @@ lpp_alpha2_3_fmt(gchar *s, guint32 v)
{
double alpha = (double)((gint32)v)*pow(2, -24);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/semi-circle (%d)", alpha, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/semi-circle (%d)", alpha, (gint32)v);
}
static void
@@ -1461,7 +1578,7 @@ lpp_beta0_fmt(gchar *s, guint32 v)
{
double beta = (double)((gint32)v)*pow(2, 11);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", beta, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", beta, (gint32)v);
}
static void
@@ -1469,7 +1586,7 @@ lpp_beta1_fmt(gchar *s, guint32 v)
{
double beta = (double)((gint32)v)*pow(2, 14);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/semi-circle (%d)", beta, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/semi-circle (%d)", beta, (gint32)v);
}
static void
@@ -1477,7 +1594,7 @@ lpp_beta2_3_fmt(gchar *s, guint32 v)
{
double beta = (double)((gint32)v)*pow(2, 16);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/semi-circle (%d)", beta, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/semi-circle (%d)", beta, (gint32)v);
}
static void
@@ -1485,7 +1602,7 @@ lpp_ai0_fmt(gchar *s, guint32 v)
{
double ai = (double)v*pow(2, -2);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e sfu (%u)", ai, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g sfu (%u)", ai, v);
}
static void
@@ -1493,7 +1610,7 @@ lpp_ai1_fmt(gchar *s, guint32 v)
{
double ai = (double)v*pow(2, -8);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e sfu/degree (%u)", ai, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g sfu/degree (%u)", ai, v);
}
static void
@@ -1501,7 +1618,7 @@ lpp_ai2_fmt(gchar *s, guint32 v)
{
double ai = (double)v*pow(2, -15);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e sfu/degree (%u)", ai, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g sfu/degree2 (%u)", ai, v);
}
static void
@@ -1515,7 +1632,7 @@ lpp_pmX_Y_fmt(gchar *s, guint32 v)
{
double pm = (double)((gint32)v)*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e arc-seconds (%d)", pm, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g arc-seconds (%d)", pm, (gint32)v);
}
static void
@@ -1523,7 +1640,7 @@ lpp_pmX_Ydot_fmt(gchar *s, guint32 v)
{
double pmDot = (double)((gint32)v)*pow(2, -21);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e arc-seconds/day (%d)", pmDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g arc-seconds/day (%d)", pmDot, (gint32)v);
}
static void
@@ -1531,7 +1648,7 @@ lpp_deltaUT1_fmt(gchar *s, guint32 v)
{
double deltaUT1 = (double)((gint32)v)*pow(2, -24);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", deltaUT1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", deltaUT1, (gint32)v);
}
static void
@@ -1539,7 +1656,7 @@ lpp_deltaUT1dot_fmt(gchar *s, guint32 v)
{
double deltaUT1dot = (double)((gint32)v)*pow(2, -25);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/day (%d)", deltaUT1dot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/day (%d)", deltaUT1dot, (gint32)v);
}
static void
@@ -1553,7 +1670,7 @@ lpp_tA0_fmt(gchar *s, guint32 v)
{
double tA0 = (double)((gint32)v)*pow(2, -35);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", tA0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", tA0, (gint32)v);
}
static void
@@ -1561,7 +1678,7 @@ lpp_tA1_fmt(gchar *s, guint32 v)
{
double tA1 = (double)((gint32)v)*pow(2, -51);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", tA1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", tA1, (gint32)v);
}
static void
@@ -1569,7 +1686,7 @@ lpp_tA2_fmt(gchar *s, guint32 v)
{
double tA2 = (double)((gint32)v)*pow(2, -68);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s2 (%d)", tA2, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s2 (%d)", tA2, (gint32)v);
}
static const value_string lpp_gnss_TO_ID_vals[] = {
@@ -1640,6 +1757,13 @@ static const value_string lpp_udreValidityTime_vals[] = {
{ 0, NULL}
};
+static const value_string lpp_signal_health_status_vals[] = {
+ { 0, "Signal OK"},
+ { 1, "Signal out of service"},
+ { 2, "Signal will be out of service"},
+ { 3, "Signal Component currently in Test"},
+ { 0, NULL}
+};
static void
lpp_stanClockToc_fmt(gchar *s, guint32 v)
{
@@ -1649,25 +1773,25 @@ lpp_stanClockToc_fmt(gchar *s, guint32 v)
static void
lpp_stanClockAF2_fmt(gchar *s, guint32 v)
{
- double stanClockAF2 = (double)((gint32)v)*pow(2, -65);
+ double stanClockAF2 = (double)((gint32)v)*pow(2, -59);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s2 (%d)", stanClockAF2, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s2 (%d)", stanClockAF2, (gint32)v);
}
static void
lpp_stanClockAF1_fmt(gchar *s, guint32 v)
{
- double stanClockAF1 = (double)((gint32)v)*pow(2, -45);
+ double stanClockAF1 = (double)((gint32)v)*pow(2, -46);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", stanClockAF1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", stanClockAF1, (gint32)v);
}
static void
lpp_stanClockAF0_fmt(gchar *s, guint32 v)
{
- double stanClockAF0 = (double)((gint32)v)*pow(2, -33);
+ double stanClockAF0 = (double)((gint32)v)*pow(2, -34);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", stanClockAF0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", stanClockAF0, (gint32)v);
}
static void
@@ -1675,7 +1799,25 @@ lpp_stanClockTgd_fmt(gchar *s, guint32 v)
{
double stanClockTgd = (double)((gint32)v)*pow(2, -32);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", stanClockTgd, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", stanClockTgd, (gint32)v);
+}
+
+static void
+lpp_sisa_fmt(gchar *s, guint32 v)
+{
+ if (v < 50) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u cm (%u)", v, v);
+ } else if (v < 75) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u cm (%u)", 50+((v-50)*2), v);
+ } else if (v < 100) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u cm (%u)", 100+((v-75)*4), v);
+ } else if (v < 126) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u cm (%u)", 200+((v-100)*16), v);
+ } else if (v < 255) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v);
+ } else {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "No Accuracy Prediction Available (255)");
+ }
}
static const value_string lpp_stanModelID_vals[] = {
@@ -1695,7 +1837,7 @@ lpp_navaf2_fmt(gchar *s, guint32 v)
{
double navaf2 = (double)((gint32)v)*pow(2, -55);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s2 (%d)", navaf2, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s2 (%d)", navaf2, (gint32)v);
}
static void
@@ -1703,7 +1845,7 @@ lpp_navaf1_fmt(gchar *s, guint32 v)
{
double navaf1 = (double)((gint32)v)*pow(2, -43);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", navaf1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", navaf1, (gint32)v);
}
static void
@@ -1711,7 +1853,7 @@ lpp_navaf0_navTgd_fmt(gchar *s, guint32 v)
{
double navaf0_navTgd = (double)((gint32)v)*pow(2, -31);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", navaf0_navTgd, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", navaf0_navTgd, (gint32)v);
}
static void
@@ -1725,7 +1867,7 @@ lpp_cnavAf2_fmt(gchar *s, guint32 v)
{
double cnavAf2 = (double)((gint32)v)*pow(2, -60);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s2 (%d)", cnavAf2, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s2 (%d)", cnavAf2, (gint32)v);
}
static void
@@ -1733,7 +1875,7 @@ lpp_cnavAf1_fmt(gchar *s, guint32 v)
{
double cnavAf1 = (double)((gint32)v)*pow(2, -48);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", cnavAf1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", cnavAf1, (gint32)v);
}
static void
@@ -1741,7 +1883,7 @@ lpp_cnavX_fmt(gchar *s, guint32 v)
{
double cnavX = (double)((gint32)v)*pow(2, -35);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", cnavX, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", cnavX, (gint32)v);
}
static void
@@ -1749,7 +1891,7 @@ lpp_gloTau_gloDeltaTau_fmt(gchar *s, guint32 v)
{
double gloTau_gloDeltaTau = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", gloTau_gloDeltaTau, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", gloTau_gloDeltaTau, (gint32)v);
}
static void
@@ -1757,7 +1899,7 @@ lpp_gloGamma_fmt(gchar *s, guint32 v)
{
double gloGamma = (double)((gint32)v)*pow(2, -40);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%d)", gloGamma, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%d)", gloGamma, (gint32)v);
}
static void
@@ -1771,7 +1913,7 @@ lpp_sbasAgfo_fmt(gchar *s, guint32 v)
{
double sbasAgfo = (double)((gint32)v)*pow(2, -31);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", sbasAgfo, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", sbasAgfo, (gint32)v);
}
static void
@@ -1779,7 +1921,58 @@ lpp_sbasAgf1_fmt(gchar *s, guint32 v)
{
double sbasAgf1 = (double)((gint32)v)*pow(2, -40);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", sbasAgf1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", sbasAgf1, (gint32)v);
+}
+
+static void
+lpp_bdsAODC_AODE_r12_fmt(gchar *s, guint32 v)
+{
+ if (v < 25) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "Age of the satellite clock correction parameters is %u hours (%u)", v, v);
+ } else if (v < 31) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "Age of the satellite clock correction parameters is %u days (%u)", v-23, v);
+ } else {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "Age of the satellite clock correction parameters is over 7 days (%u)", v);
+ }
+}
+
+
+static void
+lpp_bdsToc_Toe_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsToc = (double)((gint32)v)*pow(2, 3);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", bdsToc, (gint32)v);
+}
+
+static void
+lpp_bdsA0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsA0 = (double)((gint32)v)*pow(2, -33);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", bdsA0, (gint32)v);
+}
+
+static void
+lpp_bdsA1_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsA1 = (double)((gint32)v)*pow(2, -50);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", bdsA1, (gint32)v);
+}
+
+static void
+lpp_bdsA2_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsA2 = (double)((gint32)v)*pow(2, -66);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s2 (%d)", bdsA2, (gint32)v);
+}
+
+static void
+lpp_bdsTgd1_r12_fmt(gchar *s, guint32 v)
+{
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g ns (%d)", (float)((gint32)v)*0.1, (gint32)v);
}
static void
@@ -1793,7 +1986,7 @@ lpp_keplerW_M0_I0_Omega0_fmt(gchar *s, guint32 v)
{
double keplerW_M0_I0_Omega0 = (double)((gint32)v)*pow(2, -31);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", keplerW_M0_I0_Omega0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", keplerW_M0_I0_Omega0, (gint32)v);
}
static void
@@ -1801,7 +1994,7 @@ lpp_keplerDeltaN_OmegaDot_IDot_fmt(gchar *s, guint32 v)
{
double keplerDeltaN_OmegaDot_IDot = (double)((gint32)v)*pow(2, -43);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", keplerDeltaN_OmegaDot_IDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", keplerDeltaN_OmegaDot_IDot, (gint32)v);
}
static void
@@ -1809,7 +2002,7 @@ lpp_keplerE_fmt(gchar *s, guint32 v)
{
double keplerE = (double)v*pow(2, -33);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", keplerE, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", keplerE, v);
}
static void
@@ -1817,7 +2010,7 @@ lpp_keplerAPowerHalf_fmt(gchar *s, guint32 v)
{
double keplerAPowerHalf = (double)v*pow(2, -19);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m1/2 (%u)", keplerAPowerHalf, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", keplerAPowerHalf, v);
}
static void
@@ -1825,7 +2018,7 @@ lpp_keplerCrs_Crc_fmt(gchar *s, guint32 v)
{
double keplerCrs_Crc = (double)((gint32)v)*pow(2, -5);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m (%d)", keplerCrs_Crc, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", keplerCrs_Crc, (gint32)v);
}
static void
@@ -1833,7 +2026,7 @@ lpp_keplerCx_fmt(gchar *s, guint32 v)
{
double keplerCx = (double)((gint32)v)*pow(2, -29);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e rad (%d)", keplerCx, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g rad (%d)", keplerCx, (gint32)v);
}
static void
@@ -1847,7 +2040,7 @@ lpp_navOmega_M0_I0_OmegaA0_fmt(gchar *s, guint32 v)
{
double navOmega_M0_I0_OmegaA0 = (double)((gint32)v)*pow(2, -31);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", navOmega_M0_I0_OmegaA0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", navOmega_M0_I0_OmegaA0, (gint32)v);
}
static void
@@ -1855,7 +2048,7 @@ lpp_navDeltaN_OmegaADot_IDot_fmt(gchar *s, guint32 v)
{
double navDeltaN_OmegaADot_IDot = (double)((gint32)v)*pow(2, -43);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", navDeltaN_OmegaADot_IDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", navDeltaN_OmegaADot_IDot, (gint32)v);
}
static void
@@ -1863,7 +2056,7 @@ lpp_navE_fmt(gchar *s, guint32 v)
{
double navE = (double)v*pow(2, -33);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", navE, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", navE, v);
}
static void
@@ -1871,7 +2064,7 @@ lpp_navAPowerHalf_fmt(gchar *s, guint32 v)
{
double navAPowerHalf = (double)v*pow(2, -19);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m1/2 (%u)", navAPowerHalf, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", navAPowerHalf, v);
}
static void
@@ -1879,7 +2072,7 @@ lpp_navCrs_Crc_fmt(gchar *s, guint32 v)
{
double navCrs_Crc = (double)((gint32)v)*pow(2, -5);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m (%d)", navCrs_Crc, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", navCrs_Crc, (gint32)v);
}
static void
@@ -1887,7 +2080,7 @@ lpp_navCx_fmt(gchar *s, guint32 v)
{
double navCx = (double)((gint32)v)*pow(2, -29);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e rad (%d)", navCx, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g rad (%d)", navCx, (gint32)v);
}
static void
@@ -1895,7 +2088,7 @@ lpp_cnavDeltaA_fmt(gchar *s, guint32 v)
{
double cnavDeltaA = (double)((gint32)v)*pow(2, -9);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m (%d)", cnavDeltaA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", cnavDeltaA, (gint32)v);
}
static void
@@ -1903,7 +2096,7 @@ lpp_cnavAdot_fmt(gchar *s, guint32 v)
{
double cnavAdot = (double)((gint32)v)*pow(2, -21);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m/s (%d)", cnavAdot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m/s (%d)", cnavAdot, (gint32)v);
}
static void
@@ -1911,7 +2104,7 @@ lpp_cnavDeltaNo_fmt(gchar *s, guint32 v)
{
double cnavDeltaNo = (double)((gint32)v)*pow(2, -44);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", cnavDeltaNo, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", cnavDeltaNo, (gint32)v);
}
static void
@@ -1919,7 +2112,7 @@ lpp_cnavDeltaNoDot_fmt(gchar *s, guint32 v)
{
double cnavDeltaNoDot = (double)((gint32)v)*pow(2, -57);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s2 (%d)", cnavDeltaNoDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s2 (%d)", cnavDeltaNoDot, (gint32)v);
}
static void
@@ -1927,7 +2120,7 @@ lpp_cnavDeltaOmegaDot_IoDot_fmt(gchar *s, guint32 v)
{
double cnavDeltaOmegaDot_IoDot = (double)((gint32)v)*pow(2, -44);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", cnavDeltaOmegaDot_IoDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", cnavDeltaOmegaDot_IoDot, (gint32)v);
}
static void
@@ -1935,7 +2128,7 @@ lpp_cnavCx_fmt(gchar *s, guint32 v)
{
double cnavCx = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e rad (%d)", cnavCx, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g rad (%d)", cnavCx, (gint32)v);
}
static void
@@ -1943,7 +2136,7 @@ lpp_cnavCrs_Crc_fmt(gchar *s, guint32 v)
{
double cnavCrs_Crc = (double)((gint32)v)*pow(2, -8);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m (%d)", cnavCrs_Crc, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", cnavCrs_Crc, (gint32)v);
}
static void
@@ -1951,7 +2144,7 @@ lpp_gloX_Y_Z_fmt(gchar *s, guint32 v)
{
double gloX_Y_Z = (double)((gint32)v)*pow(2, -11);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e km (%d)", gloX_Y_Z, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g km (%d)", gloX_Y_Z, (gint32)v);
}
static void
@@ -1959,7 +2152,7 @@ lpp_gloXdot_Ydot_Zdot_fmt(gchar *s, guint32 v)
{
double gloXdot_Ydot_Zdot = (double)((gint32)v)*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e km/s (%d)", gloXdot_Ydot_Zdot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g km/s (%d)", gloXdot_Ydot_Zdot, (gint32)v);
}
static void
@@ -1967,7 +2160,7 @@ lpp_gloXdotdot_Ydotdot_Zdotdot_fmt(gchar *s, guint32 v)
{
double gloXdotdot_Ydotdot_Zdotdot = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e km/s2 (%d)", gloXdotdot_Ydotdot_Zdotdot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g km/s2 (%d)", gloXdotdot_Ydotdot_Zdotdot, (gint32)v);
}
static void
@@ -2007,7 +2200,7 @@ lpp_sbasXgDotDot_YgDotDot_fmt(gchar *s, guint32 v)
{
double sbasXgDotDot_YgDotDot = (double)((gint32)v)*0.0000125;
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m/s2 (%d)", sbasXgDotDot_YgDotDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m/s2 (%d)", sbasXgDotDot_YgDotDot, (gint32)v);
}
static void
@@ -2015,7 +2208,55 @@ lpp_sbasZgDotDot_fmt(gchar *s, guint32 v)
{
double sbasZgDotDot = (double)((gint32)v)*0.0000625;
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m/s2 (%d)", sbasZgDotDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m/s2 (%d)", sbasZgDotDot, (gint32)v);
+}
+
+static void
+lpp_bdsAPowerHalf_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAPowerHalf = (double)v*pow(2, -19);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", bdsAPowerHalf, v);
+}
+
+static void
+lpp_bdsE_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsE = (double)v*pow(2, -33);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", bdsE, v);
+}
+
+static void
+lpp_bdsW_M0_Omega0_I0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsW_M0_Omega0_I0 = (double)((gint32)v)*pow(2, -31);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", bdsW_M0_Omega0_I0, (gint32)v);
+}
+
+static void
+lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsDeltaN_OmegaDot_IDot = (double)((gint32)v)*pow(2, -43);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", bdsDeltaN_OmegaDot_IDot, (gint32)v);
+}
+
+static void
+lpp_bdsCuc_Cus_Cic_Cis_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsCuc_Cus_Cic_Cis = (double)((gint32)v)*pow(2, -31);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g rad (%d)", bdsCuc_Cus_Cic_Cis, (gint32)v);
+}
+
+static void
+lpp_bdsCrc_Crs_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsCrc_Crs = (double)((gint32)v)*pow(2, -6);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g rad (%d)", bdsCrc_Crs, (gint32)v);
}
static void
@@ -2048,7 +2289,7 @@ lpp_codePhase_fmt(gchar *s, guint32 v)
{
double codePhase = (double)v*pow(2, -10);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e ms (%u)", codePhase, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g ms (%u)", codePhase, v);
}
static const value_string lpp_codePhaseSearchWindow_vals[] = {
@@ -2095,17 +2336,11 @@ lpp_azimuth_elevation_fmt(gchar *s, guint32 v)
}
static void
-lpp_toa_fmt(gchar *s, guint32 v)
-{
- g_snprintf(s, ITEM_LABEL_LENGTH, "%u s (%u)", 4096*v, v);
-}
-
-static void
lpp_kepAlmanacE_fmt(gchar *s, guint32 v)
{
double kepAlmanacE = (double)v*pow(2, -16);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", kepAlmanacE, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", kepAlmanacE, v);
}
static void
@@ -2113,7 +2348,7 @@ lpp_kepAlmanacDeltaI_fmt(gchar *s, guint32 v)
{
double kepAlmanacDeltaI = (double)((gint32)v)*pow(2, -14);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", kepAlmanacDeltaI, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", kepAlmanacDeltaI, (gint32)v);
}
static void
@@ -2121,7 +2356,7 @@ lpp_kepAlmanacOmegaDot_fmt(gchar *s, guint32 v)
{
double kepAlmanacOmegaDot = (double)((gint32)v)*pow(2, -33);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", kepAlmanacOmegaDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", kepAlmanacOmegaDot, (gint32)v);
}
static void
@@ -2129,7 +2364,7 @@ lpp_kepAlmanacAPowerHalf_fmt(gchar *s, guint32 v)
{
double kepAlmanacAPowerHalf = (double)((gint32)v)*pow(2, -9);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m1/2 (%d)", kepAlmanacAPowerHalf, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%d)", kepAlmanacAPowerHalf, (gint32)v);
}
static void
@@ -2137,7 +2372,7 @@ lpp_kepAlmanacOmega0_W_M0_fmt(gchar *s, guint32 v)
{
double kepAlmanacOmega0_W_M0 = (double)((gint32)v)*pow(2, -15);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", kepAlmanacOmega0_W_M0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", kepAlmanacOmega0_W_M0, (gint32)v);
}
static void
@@ -2145,7 +2380,7 @@ lpp_kepAlmanacAF0_fmt(gchar *s, guint32 v)
{
double kepAlmanacAF0 = (double)((gint32)v)*pow(2, -19);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", kepAlmanacAF0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", kepAlmanacAF0, (gint32)v);
}
static void
@@ -2153,7 +2388,7 @@ lpp_kepAlmanacAF1_fmt(gchar *s, guint32 v)
{
double kepAlmanacAF1 = (double)((gint32)v)*pow(2, -38);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", kepAlmanacAF1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", kepAlmanacAF1, (gint32)v);
}
static void
@@ -2161,7 +2396,7 @@ lpp_navAlmE_fmt(gchar *s, guint32 v)
{
double navAlmE = (double)v*pow(2, -21);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", navAlmE, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", navAlmE, v);
}
static void
@@ -2169,7 +2404,7 @@ lpp_navAlmDeltaI_fmt(gchar *s, guint32 v)
{
double navAlmDeltaI = (double)((gint32)v)*pow(2, -19);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", navAlmDeltaI, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", navAlmDeltaI, (gint32)v);
}
static void
@@ -2177,7 +2412,7 @@ lpp_navAlmOMEGADOT_fmt(gchar *s, guint32 v)
{
double navAlmOMEGADOT = (double)((gint32)v)*pow(2, -38);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", navAlmOMEGADOT, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", navAlmOMEGADOT, (gint32)v);
}
static void
@@ -2185,7 +2420,7 @@ lpp_navAlmSqrtA_fmt(gchar *s, guint32 v)
{
double navAlmSqrtA = (double)v*pow(2, -11);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m1/2 (%u)", navAlmSqrtA, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", navAlmSqrtA, v);
}
static void
@@ -2193,7 +2428,7 @@ lpp_navAlmOMEGAo_Omega_Mo_fmt(gchar *s, guint32 v)
{
double navAlmOMEGAo_Omega_Mo = (double)((gint32)v)*pow(2, -23);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", navAlmOMEGAo_Omega_Mo, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", navAlmOMEGAo_Omega_Mo, (gint32)v);
}
static void
@@ -2201,7 +2436,7 @@ lpp_navAlmaf0_fmt(gchar *s, guint32 v)
{
double navAlmaf0 = (double)((gint32)v)*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", navAlmaf0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", navAlmaf0, (gint32)v);
}
static void
@@ -2209,7 +2444,7 @@ lpp_navAlmaf1_fmt(gchar *s, guint32 v)
{
double navAlmaf1 = (double)((gint32)v)*pow(2, -38);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", navAlmaf1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", navAlmaf1, (gint32)v);
}
static void
@@ -2223,7 +2458,7 @@ lpp_redAlmOmega0_Phi0_fmt(gchar *s, guint32 v)
{
double redAlmOmega0_Phi0 = (double)((gint32)v)*pow(2, -6);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", redAlmOmega0_Phi0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", redAlmOmega0_Phi0, (gint32)v);
}
static void
@@ -2231,7 +2466,7 @@ lpp_midiAlmE_fmt(gchar *s, guint32 v)
{
double midiAlmE = (double)v*pow(2, -16);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", midiAlmE, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", midiAlmE, v);
}
static void
@@ -2239,7 +2474,7 @@ lpp_midiAlmDeltaI_fmt(gchar *s, guint32 v)
{
double midiAlmDeltaI = (double)((gint32)v)*pow(2, -14);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", midiAlmDeltaI, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", midiAlmDeltaI, (gint32)v);
}
static void
@@ -2247,7 +2482,7 @@ lpp_midiAlmOmegaDot_fmt(gchar *s, guint32 v)
{
double midiAlmOmegaDot = (double)((gint32)v)*pow(2, -33);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles/s (%d)", midiAlmOmegaDot, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", midiAlmOmegaDot, (gint32)v);
}
static void
@@ -2261,7 +2496,7 @@ lpp_midiAlmOmega0_Omega_Mo_fmt(gchar *s, guint32 v)
{
double midiAlmOmega0_Omega_Mo = (double)((gint32)v)*pow(2, -15);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", midiAlmOmega0_Omega_Mo, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", midiAlmOmega0_Omega_Mo, (gint32)v);
}
static void
@@ -2269,7 +2504,7 @@ lpp_midiAlmaf0_fmt(gchar *s, guint32 v)
{
double midiAlmaf0 = (double)((gint32)v)*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", midiAlmaf0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", midiAlmaf0, (gint32)v);
}
static void
@@ -2277,7 +2512,7 @@ lpp_midiAlmaf1_fmt(gchar *s, guint32 v)
{
double midiAlmaf1 = (double)((gint32)v)*pow(2, -37);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", midiAlmaf1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", midiAlmaf1, (gint32)v);
}
static void
@@ -2285,7 +2520,7 @@ lpp_gloAlmLambdaA_DeltaIa_fmt(gchar *s, guint32 v)
{
double gloAlmLambdaA_DeltaIa = (double)((gint32)v)*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", gloAlmLambdaA_DeltaIa, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", gloAlmLambdaA_DeltaIa, (gint32)v);
}
static void
@@ -2299,7 +2534,7 @@ lpp_gloAlmDeltaTA_fmt(gchar *s, guint32 v)
{
double gloAlmDeltaTA = (double)((gint32)v)*pow(2, -9);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/orbit period (%d)", gloAlmDeltaTA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/orbit period (%d)", gloAlmDeltaTA, (gint32)v);
}
static void
@@ -2307,7 +2542,7 @@ lpp_gloAlmDeltaTdotA_fmt(gchar *s, guint32 v)
{
double gloAlmDeltaTdotA = (double)((gint32)v)*pow(2, -14);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/orbit period (%d)", gloAlmDeltaTdotA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/orbit period (%d)", gloAlmDeltaTdotA, (gint32)v);
}
static void
@@ -2315,7 +2550,7 @@ lpp_gloAlmEpsilonA_fmt(gchar *s, guint32 v)
{
double gloAlmEpsilonA = (double)v*pow(2, -20);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e (%u)", gloAlmEpsilonA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g (%u)", gloAlmEpsilonA, (gint32)v);
}
static void
@@ -2323,7 +2558,7 @@ lpp_gloAlmOmegaA_fmt(gchar *s, guint32 v)
{
double gloAlmOmegaA = (double)((gint32)v)*pow(2, -15);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e semi-circles (%d)", gloAlmOmegaA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", gloAlmOmegaA, (gint32)v);
}
static void
@@ -2331,7 +2566,7 @@ lpp_gloAlmTauA_fmt(gchar *s, guint32 v)
{
double gloAlmTauA = (double)((gint32)v)*pow(2, -18);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", gloAlmTauA, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", gloAlmTauA, (gint32)v);
}
static void
@@ -2365,11 +2600,83 @@ lpp_sbasAlmTo_fmt(gchar *s, guint32 v)
}
static void
+lpp_bdsAlmToa_r12_fmt(gchar *s, guint32 v)
+{
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u s (%u)", v*4096, v);
+}
+
+static void
+lpp_bdsAlmSqrtA_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmSqrtA = (double)v*pow(2, -11);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", bdsAlmSqrtA, v);
+}
+
+static void
+lpp_bdsAlmE_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmE = (double)v*pow(2, -21);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m1/2 (%u)", bdsAlmE, v);
+}
+
+static void
+lpp_bdsAlmW_M0_Omega0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmW_M0_Omega0 = (double)((gint32)v)*pow(2, -23);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", bdsAlmW_M0_Omega0, (gint32)v);
+}
+
+static void
+lpp_bdsAlmOmegaDot_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmOmegaDot = (double)((gint32)v)*pow(2, -38);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles/s (%d)", bdsAlmOmegaDot, (gint32)v);
+}
+
+static void
+lpp_bdsAlmDeltaI_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmDeltaI = (double)((gint32)v)*pow(2, -19);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g semi-circles (%d)", bdsAlmDeltaI, (gint32)v);
+}
+
+static void
+lpp_bdsAlmA0_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmA0 = (double)((gint32)v)*pow(2, -20);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", bdsAlmA0, (gint32)v);
+}
+
+static void
+lpp_bdsAlmA1_r12_fmt(gchar *s, guint32 v)
+{
+ double bdsAlmA1 = (double)((gint32)v)*pow(2, -38);
+
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", bdsAlmA1, (gint32)v);
+}
+
+static const true_false_string lpp_bdsSvHealth_r12_b1i_b2i_value = {
+ "OK",
+ "Weak"
+};
+
+static const true_false_string lpp_bdsSvHealth_r12_nav_value = {
+ "OK",
+ "Bad (IOD over limit)"
+};
+
+static void
lpp_gnss_Utc_A1_fmt(gchar *s, guint32 v)
{
double gnss_Utc_A1 = (double)((gint32)v)*pow(2, -50);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/s (%d)", gnss_Utc_A1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/s (%d)", gnss_Utc_A1, (gint32)v);
}
static void
@@ -2377,7 +2684,7 @@ lpp_gnss_Utc_A0_fmt(gchar *s, guint32 v)
{
double gnss_Utc_A0 = (double)((gint32)v)*pow(2, -30);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", gnss_Utc_A0, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", gnss_Utc_A0, (gint32)v);
}
static void
@@ -2386,12 +2693,91 @@ lpp_gnss_Utc_Tot_fmt(gchar *s, guint32 v)
g_snprintf(s, ITEM_LABEL_LENGTH, "%u s (%u)", v*4096, v);
}
+static const value_string lpp_bds_UDREI_vals[] = {
+ { 0, "1 meter"},
+ { 1, "1.5 meters"},
+ { 2, "2 meters"},
+ { 3, "3 meters"},
+ { 4, "4 meters"},
+ { 5, "5 meters"},
+ { 6, "6 meters"},
+ { 7, "8 meters"},
+ { 8, "10 meters"},
+ { 9, "15 meters"},
+ { 10, "20 meters"},
+ { 11, "50 meters"},
+ { 12, "100 meters"},
+ { 13, "150 meters"},
+ { 14, "Not monitored"},
+ { 15, "Not available"},
+ { 0, NULL}
+};
+static value_string_ext lpp_bds_UDREI_vals_ext = VALUE_STRING_EXT_INIT(lpp_bds_UDREI_vals);
+
+static const value_string lpp_bds_RURAI_vals[] = {
+ { 0, "0.75 meter"},
+ { 1, "1 meter"},
+ { 2, "1.25 meters"},
+ { 3, "1.75 meters"},
+ { 4, "2.25 meters"},
+ { 5, "3 meters"},
+ { 6, "3.75 meters"},
+ { 7, "4.5 meters"},
+ { 8, "5.25 meters"},
+ { 9, "6 meters"},
+ { 10, "7.5 meters"},
+ { 11, "15 meters"},
+ { 12, "50 meters"},
+ { 13, "150 meters"},
+ { 14, "300 meters"},
+ { 15, "> 300 meters"},
+ { 0, NULL}
+};
+static value_string_ext lpp_bds_RURAI_vals_ext = VALUE_STRING_EXT_INIT(lpp_bds_RURAI_vals);
+
+static void
+lpp_bds_ECC_DeltaT_r12_fmt(gchar *s, guint32 v)
+{
+ if ((gint32)v == -4096) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "Not available (%d)", (gint32)v);
+ } else {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", (float)((gint32)v)*0.1, (gint32)v);
+ }
+}
+
+static void
+lpp_bds_GridIonElement_dt_r12_fmt(gchar *s, guint32 v)
+{
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%d)", (float)((gint32)v)*0.125, (gint32)v);
+}
+
+static const value_string lpp_bds_givei_vals[] = {
+ { 0, "0.3 meter"},
+ { 1, "0.6 meter"},
+ { 2, "0.9 meter"},
+ { 3, "1.2 meters"},
+ { 4, "1.5 meters"},
+ { 5, "1.8 meters"},
+ { 6, "2.1 meters"},
+ { 7, "2.4 meters"},
+ { 8, "2.7 meters"},
+ { 9, "3 meters"},
+ { 10, "3.6 meters"},
+ { 11, "4.5 meters"},
+ { 12, "6 meters"},
+ { 13, "9 meters"},
+ { 14, "15 meters"},
+ { 15, "45 meters"},
+ { 0, NULL}
+};
+static value_string_ext lpp_bds_givei_vals_ext = VALUE_STRING_EXT_INIT(lpp_bds_givei_vals);
+
static void
lpp_tauC_fmt(gchar *s, guint32 v)
{
double tauC = (double)((gint32)v)*pow(2, -31);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", tauC, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", tauC, (gint32)v);
}
static void
@@ -2399,7 +2785,7 @@ lpp_b1_fmt(gchar *s, guint32 v)
{
double b1 = (double)((gint32)v)*pow(2, -10);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s (%d)", b1, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%d)", b1, (gint32)v);
}
static void
@@ -2407,7 +2793,7 @@ lpp_b2_fmt(gchar *s, guint32 v)
{
double b2 = (double)((gint32)v)*pow(2, -16);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e s/msd (%d)", b2, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g s/msd (%d)", b2, (gint32)v);
}
static const value_string lpp_utcStandardID_vals[] = {
@@ -2452,7 +2838,7 @@ lpp_GNSS_SatMeas_codePhase_fmt(gchar *s, guint32 v)
{
double codePhase = (double)v*pow(2, -21);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e ms (%u)", codePhase, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g ms (%u)", codePhase, v);
}
static void
@@ -2476,7 +2862,7 @@ lpp_codePhaseRMSError_fmt(gchar *s, guint32 v)
static void
lpp_doppler_fmt(gchar *s, guint32 v)
{
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m/s (%d)", (gint32)v*0.04, (gint32)v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m/s (%d)", (gint32)v*0.04, (gint32)v);
}
static void
@@ -2484,7 +2870,7 @@ lpp_adr_fmt(gchar *s, guint32 v)
{
double adr = (double)v*pow(2, -10);
- g_snprintf(s, ITEM_LABEL_LENGTH, "%e m (%u)", adr, v);
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%g m (%u)", adr, v);
}
static void
@@ -2656,7 +3042,7 @@ dissect_lpp_ECID_RequestCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static int
dissect_lpp_EPDU_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 81 "../../asn1/lpp/lpp.cnf"
+#line 84 "../../asn1/lpp/lpp.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1U, 256U, &lpp_epdu_id, FALSE);
@@ -2695,7 +3081,7 @@ dissect_lpp_EPDU_Identifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_lpp_EPDU_Body(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 87 "../../asn1/lpp/lpp.cnf"
+#line 90 "../../asn1/lpp/lpp.cnf"
tvbuff_t *lppe_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &lppe_tvb);
@@ -2841,7 +3227,7 @@ static const per_sequence_t RequestCapabilities_sequence[] = {
static int
dissect_lpp_RequestCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 57 "../../asn1/lpp/lpp.cnf"
+#line 60 "../../asn1/lpp/lpp.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Request Capabilities");
@@ -2866,19 +3252,26 @@ dissect_lpp_CommonIEsProvideCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1
static const value_string lpp_T_gnss_id_vals[] = {
- { 0, "gps" },
- { 1, "sbas" },
- { 2, "qzss" },
- { 3, "galileo" },
- { 4, "glonass" },
+ { T_GNSS_ID_GPS, "gps" },
+ { T_GNSS_ID_SBAS, "sbas" },
+ { T_GNSS_ID_QZSS, "qzss" },
+ { T_GNSS_ID_GALILEO, "galileo" },
+ { T_GNSS_ID_GLONASS, "glonass" },
+ { T_GNSS_ID_BDS, "bds" },
{ 0, NULL }
};
static int
dissect_lpp_T_gnss_id(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 1528 "../../asn1/lpp/lpp.cnf"
+ guint32 gnss_id;
offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
- 5, NULL, TRUE, 0, NULL);
+ 5, &gnss_id, TRUE, 1, NULL);
+
+ actx->private_data = GUINT_TO_POINTER(gnss_id);
+
+
return offset;
}
@@ -2901,7 +3294,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 1312 "../../asn1/lpp/lpp.cnf"
+#line 1562 "../../asn1/lpp/lpp.cnf"
tvbuff_t *sbas_IDs_tvb = NULL;
int len;
@@ -2949,7 +3342,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 244 "../../asn1/lpp/lpp.cnf"
+#line 247 "../../asn1/lpp/lpp.cnf"
tvbuff_t *posModes_tvb = NULL;
int len;
@@ -3018,7 +3411,7 @@ dissect_lpp_GNSS_SignalIDs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static int
dissect_lpp_T_accessTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 101 "../../asn1/lpp/lpp.cnf"
+#line 104 "../../asn1/lpp/lpp.cnf"
tvbuff_t *accessTypes_tvb = NULL;
int len;
@@ -3112,7 +3505,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 1286 "../../asn1/lpp/lpp.cnf"
+#line 1533 "../../asn1/lpp/lpp.cnf"
tvbuff_t *gnss_ids_tvb = NULL;
int len;
@@ -3138,6 +3531,9 @@ dissect_lpp_T_gnss_ids(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
if (len >= 5) {
proto_tree_add_item(subtree, hf_lpp_T_gnss_ids_glonass, gnss_ids_tvb, 0, 1, ENC_BIG_ENDIAN);
}
+ if (len >= 6) {
+ proto_tree_add_item(subtree, hf_lpp_T_gnss_ids_bds, gnss_ids_tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
}
@@ -3191,7 +3587,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 1165 "../../asn1/lpp/lpp.cnf"
+#line 1395 "../../asn1/lpp/lpp.cnf"
tvbuff_t *ionoModel_tvb = NULL;
int len;
@@ -3323,7 +3719,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 1182 "../../asn1/lpp/lpp.cnf"
+#line 1412 "../../asn1/lpp/lpp.cnf"
tvbuff_t *clockModel_tvb = NULL;
int len;
@@ -3349,6 +3745,9 @@ dissect_lpp_T_clockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
if (len >= 5) {
proto_tree_add_item(subtree, hf_lpp_T_clockModel_model_5, clockModel_tvb, 0, 1, ENC_BIG_ENDIAN);
}
+ if (len >= 6) {
+ proto_tree_add_item(subtree, hf_lpp_T_clockModel_model_6, clockModel_tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
}
@@ -3360,7 +3759,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 1208 "../../asn1/lpp/lpp.cnf"
+#line 1441 "../../asn1/lpp/lpp.cnf"
tvbuff_t *orbitModel_tvb = NULL;
int len;
@@ -3386,6 +3785,9 @@ dissect_lpp_T_orbitModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
if (len >= 5) {
proto_tree_add_item(subtree, hf_lpp_T_orbitModel_model_5, orbitModel_tvb, 0, 1, ENC_BIG_ENDIAN);
}
+ if (len >= 6) {
+ proto_tree_add_item(subtree, hf_lpp_T_orbitModel_model_6, orbitModel_tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
}
@@ -3483,7 +3885,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 1234 "../../asn1/lpp/lpp.cnf"
+#line 1470 "../../asn1/lpp/lpp.cnf"
tvbuff_t *almanacModel_tvb = NULL;
int len;
@@ -3512,6 +3914,9 @@ dissect_lpp_T_almanacModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
if (len >= 6) {
proto_tree_add_item(subtree, hf_lpp_T_almanacModel_model_6, almanacModel_tvb, 0, 1, ENC_BIG_ENDIAN);
}
+ if (len >= 7) {
+ proto_tree_add_item(subtree, hf_lpp_T_almanacModel_model_7, almanacModel_tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
}
@@ -3537,7 +3942,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 1263 "../../asn1/lpp/lpp.cnf"
+#line 1502 "../../asn1/lpp/lpp.cnf"
tvbuff_t *utc_Model_tvb = NULL;
int len;
@@ -3560,6 +3965,9 @@ dissect_lpp_T_utc_Model(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
if (len >= 4) {
proto_tree_add_item(subtree, hf_lpp_T_utc_Model_model_4, utc_Model_tvb, 0, 1, ENC_BIG_ENDIAN);
}
+ if (len >= 5) {
+ proto_tree_add_item(subtree, hf_lpp_T_utc_Model_model_5, utc_Model_tvb, 0, 1, ENC_BIG_ENDIAN);
+ }
}
@@ -3595,6 +4003,47 @@ dissect_lpp_GNSS_AuxiliaryInformationSupport(tvbuff_t *tvb _U_, int offset _U_,
}
+static const per_sequence_t BDS_DifferentialCorrectionsSupport_r12_sequence[] = {
+ { &hf_lpp_gnssSignalIDs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_SignalIDs },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_BDS_DifferentialCorrectionsSupport_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_DifferentialCorrectionsSupport_r12, BDS_DifferentialCorrectionsSupport_r12_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t BDS_GridModelSupport_r12_sequence[] = {
+ { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
+};
+
+static int
+dissect_lpp_BDS_GridModelSupport_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_GridModelSupport_r12, BDS_GridModelSupport_r12_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t GNSS_GenericAssistDataSupportElement_eag_1_sequence[] = {
+ { &hf_lpp_bds_DifferentialCorrectionsSupport_r12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_BDS_DifferentialCorrectionsSupport_r12 },
+ { &hf_lpp_bds_GridModelSupport_r12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_BDS_GridModelSupport_r12 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_GNSS_GenericAssistDataSupportElement_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_GenericAssistDataSupportElement_eag_1_sequence);
+
+ return offset;
+}
+
+
static const per_sequence_t GNSS_GenericAssistDataSupportElement_sequence[] = {
{ &hf_lpp_gnss_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_ID },
{ &hf_lpp_sbas_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_SBAS_ID },
@@ -3607,6 +4056,7 @@ static const per_sequence_t GNSS_GenericAssistDataSupportElement_sequence[] = {
{ &hf_lpp_gnss_AlmanacSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_AlmanacSupport },
{ &hf_lpp_gnss_UTC_ModelSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_UTC_ModelSupport },
{ &hf_lpp_gnss_AuxiliaryInformationSupport, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_GNSS_AuxiliaryInformationSupport },
+ { &hf_lpp_dummy_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_GenericAssistDataSupportElement_eag_1 },
{ NULL, 0, 0, NULL }
};
@@ -3705,7 +4155,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 345 "../../asn1/lpp/lpp.cnf"
+#line 351 "../../asn1/lpp/lpp.cnf"
tvbuff_t *otdoa_Mode_tvb = NULL;
int len;
@@ -3854,7 +4304,7 @@ dissect_lpp_OTDOA_ProvideCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
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 1364 "../../asn1/lpp/lpp.cnf"
+#line 1614 "../../asn1/lpp/lpp.cnf"
tvbuff_t *ecid_MeasSupported_tvb = NULL;
int len;
@@ -3981,7 +4431,7 @@ static const per_sequence_t ProvideCapabilities_sequence[] = {
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 60 "../../asn1/lpp/lpp.cnf"
+#line 63 "../../asn1/lpp/lpp.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Provide Capabilities");
@@ -4228,7 +4678,7 @@ dissect_lpp_T_gnss_WeekOrDay(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 4095U, NULL, FALSE);
-#line 1111 "../../asn1/lpp/lpp.cnf"
+#line 1341 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " (days for glonass, weeks otherwise)");
@@ -4242,7 +4692,7 @@ dissect_lpp_T_gnss_Toe(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, NULL, FALSE);
-#line 1114 "../../asn1/lpp/lpp.cnf"
+#line 1344 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " (units of 15 mns for glonass, hours otherwise)");
@@ -4256,7 +4706,7 @@ dissect_lpp_T_t_toeLimit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 15U, NULL, FALSE);
-#line 1117 "../../asn1/lpp/lpp.cnf"
+#line 1347 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " (units of 30 mns for glonass, hours otherwise)");
@@ -4452,7 +4902,7 @@ dissect_lpp_T_gnss_TOD_Req(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 3599U, NULL, FALSE);
-#line 1120 "../../asn1/lpp/lpp.cnf"
+#line 1350 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " s");
@@ -4466,7 +4916,7 @@ dissect_lpp_T_gnss_TOD_FracReq(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 999U, NULL, FALSE);
-#line 1123 "../../asn1/lpp/lpp.cnf"
+#line 1353 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " ms");
@@ -4609,6 +5059,47 @@ dissect_lpp_GNSS_AuxiliaryInformationReq(tvbuff_t *tvb _U_, int offset _U_, asn1
}
+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);
+
+ 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);
+
+ 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_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 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 },
@@ -4621,6 +5112,7 @@ static const per_sequence_t GNSS_GenericAssistDataReqElement_sequence[] = {
{ &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 },
+ { &hf_lpp_dummy_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_GenericAssistDataReqElement_eag_1 },
{ NULL, 0, 0, NULL }
};
@@ -4771,7 +5263,7 @@ static const per_sequence_t RequestAssistanceData_sequence[] = {
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 63 "../../asn1/lpp/lpp.cnf"
+#line 66 "../../asn1/lpp/lpp.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Request Assistance Data");
@@ -4828,7 +5320,7 @@ dissect_lpp_INTEGER_0_999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
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 365 "../../asn1/lpp/lpp.cnf"
+#line 371 "../../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);
@@ -4836,7 +5328,7 @@ dissect_lpp_T_notificationOfLeapSecond(tvbuff_t *tvb _U_, int offset _U_, asn1_c
-#line 369 "../../asn1/lpp/lpp.cnf"
+#line 375 "../../asn1/lpp/lpp.cnf"
if (notificationOfLeapSecond_tvb) {
actx->created_item = proto_tree_add_uint(tree, hf_index, notificationOfLeapSecond_tvb, 0, 1, tvb_get_bits8(notificationOfLeapSecond_tvb, 0, 2));
}
@@ -5512,7 +6004,7 @@ dissect_lpp_GNSS_ReferenceLocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
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 383 "../../asn1/lpp/lpp.cnf"
+#line 389 "../../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);
@@ -5520,7 +6012,7 @@ dissect_lpp_T_dataID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
-#line 387 "../../asn1/lpp/lpp.cnf"
+#line 393 "../../asn1/lpp/lpp.cnf"
if (dataID_tvb) {
actx->created_item = proto_tree_add_uint(tree, hf_index, dataID_tvb, 0, 1, tvb_get_bits8(dataID_tvb, 0, 2));
}
@@ -5564,18 +6056,38 @@ dissect_lpp_KlobucharModelParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
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_) {
+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, 4095U, NULL, FALSE);
+ 0U, 2047U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_lpp_INTEGER_M1024_1023(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -1024, 1023U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_lpp_INTEGER_M8192_8191(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ -8192, 8191U, NULL, FALSE);
return offset;
}
static const per_sequence_t NeQuickModelParameter_sequence[] = {
- { &hf_lpp_ai0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4095 },
- { &hf_lpp_ai1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4095 },
- { &hf_lpp_ai2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_4095 },
+ { &hf_lpp_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 },
@@ -5731,7 +6243,7 @@ dissect_lpp_T_deltaT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-128, 127U, NULL, FALSE);
-#line 464 "../../asn1/lpp/lpp.cnf"
+#line 470 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " s");
@@ -5779,7 +6291,7 @@ dissect_lpp_T_dgnss_RefTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 3599U, NULL, FALSE);
-#line 467 "../../asn1/lpp/lpp.cnf"
+#line 473 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " s");
@@ -5888,9 +6400,9 @@ dissect_lpp_GNSS_DifferentialCorrections(tvbuff_t *tvb _U_, int offset _U_, asn1
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_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,
- -2048, 2047U, NULL, FALSE);
+ -32, 31U, NULL, FALSE);
return offset;
}
@@ -5898,19 +6410,9 @@ dissect_lpp_INTEGER_M2048_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
-dissect_lpp_INTEGER_M131072_131071(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- -131072, 131071U, NULL, FALSE);
-
- return offset;
-}
-
-
-
-static int
-dissect_lpp_INTEGER_M134217728_134217727(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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,
- -134217728, 134217727U, NULL, FALSE);
+ -512, 511U, NULL, FALSE);
return offset;
}
@@ -5918,9 +6420,9 @@ dissect_lpp_INTEGER_M134217728_134217727(tvbuff_t *tvb _U_, int offset _U_, asn1
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_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,
- -512, 511U, NULL, FALSE);
+ 0U, 255U, NULL, FALSE);
return offset;
}
@@ -5928,10 +6430,11 @@ dissect_lpp_INTEGER_M512_511(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static const per_sequence_t StandardClockModelElement_sequence[] = {
{ &hf_lpp_stanClockToc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_16383 },
- { &hf_lpp_stanClockAF2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2048_2047 },
- { &hf_lpp_stanClockAF1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M131072_131071 },
- { &hf_lpp_stanClockAF0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M134217728_134217727 },
+ { &hf_lpp_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 }
};
@@ -6075,16 +6578,6 @@ dissect_lpp_CNAV_ClockModel(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_) {
- offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- -1024, 1023U, NULL, FALSE);
-
- return offset;
-}
-
-
static const per_sequence_t GLONASS_ClockModel_sequence[] = {
{ &hf_lpp_gloTau , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2097152_2097151 },
{ &hf_lpp_gloGamma , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
@@ -6111,6 +6604,16 @@ 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_) {
+ 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 },
@@ -6127,12 +6630,52 @@ dissect_lpp_SBAS_ClockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
+
+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 }
};
@@ -6142,6 +6685,7 @@ static const per_choice_t GNSS_ClockModel_choice[] = {
{ 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 }
};
@@ -6175,16 +6719,6 @@ dissect_lpp_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
-
-static int
-dissect_lpp_INTEGER_M8192_8191(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- -8192, 8191U, NULL, FALSE);
-
- return offset;
-}
-
-
static const per_sequence_t NavModelKeplerianSet_sequence[] = {
{ &hf_lpp_keplerToe , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_16383 },
{ &hf_lpp_keplerW , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M2147483648_2147483647 },
@@ -6241,16 +6775,6 @@ dissect_lpp_T_ephemSF1Rsvd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
}
-
-static int
-dissect_lpp_INTEGER_0_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, 31U, NULL, FALSE);
-
- return offset;
-}
-
-
static const per_sequence_t T_addNAVparam_sequence[] = {
{ &hf_lpp_ephemCodeOnL2 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_3 },
{ &hf_lpp_ephemL2Pflag , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_1 },
@@ -6333,7 +6857,7 @@ 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 686 "../../asn1/lpp/lpp.cnf"
+#line 725 "../../asn1/lpp/lpp.cnf"
gint64 cnavMo;
int curr_offset = offset;
offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
@@ -6342,10 +6866,10 @@ dissect_lpp_T_cnavMo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
-#line 691 "../../asn1/lpp/lpp.cnf"
+#line 730 "../../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, "%e semi-circles (%"G_GINT64_MODIFIER"d)",
+ cnavMo, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
(double)cnavMo*pow(2, -32), cnavMo);
@@ -6356,7 +6880,7 @@ dissect_lpp_T_cnavMo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
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 697 "../../asn1/lpp/lpp.cnf"
+#line 736 "../../asn1/lpp/lpp.cnf"
guint64 cnavE;
int curr_offset = offset;
offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
@@ -6365,10 +6889,10 @@ dissect_lpp_T_cnavE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
-#line 702 "../../asn1/lpp/lpp.cnf"
+#line 741 "../../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, "%e (%"G_GINT64_MODIFIER"u)",
+ cnavE, "%g (%"G_GINT64_MODIFIER"u)",
(double)cnavE*pow(2, -34), cnavE);
@@ -6379,7 +6903,7 @@ 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 708 "../../asn1/lpp/lpp.cnf"
+#line 747 "../../asn1/lpp/lpp.cnf"
gint64 cnavOmega;
int curr_offset = offset;
offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
@@ -6388,10 +6912,10 @@ dissect_lpp_T_cnavOmega(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
-#line 713 "../../asn1/lpp/lpp.cnf"
+#line 752 "../../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, "%e semi-circles (%"G_GINT64_MODIFIER"d)",
+ cnavOmega, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
(double)cnavOmega*pow(2, -32), cnavOmega);
@@ -6402,7 +6926,7 @@ dissect_lpp_T_cnavOmega(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
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 719 "../../asn1/lpp/lpp.cnf"
+#line 758 "../../asn1/lpp/lpp.cnf"
gint64 cnavOMEGA0;
int curr_offset = offset;
offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
@@ -6411,10 +6935,10 @@ dissect_lpp_T_cnavOMEGA0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
-#line 724 "../../asn1/lpp/lpp.cnf"
+#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,
- cnavOMEGA0, "%e semi-circles (%"G_GINT64_MODIFIER"d)",
+ cnavOMEGA0, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
(double)cnavOMEGA0*pow(2, -32), cnavOMEGA0);
@@ -6425,7 +6949,7 @@ 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 733 "../../asn1/lpp/lpp.cnf"
+#line 772 "../../asn1/lpp/lpp.cnf"
gint64 cnavIo;
int curr_offset = offset;
offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
@@ -6434,10 +6958,10 @@ dissect_lpp_T_cnavIo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
-#line 738 "../../asn1/lpp/lpp.cnf"
+#line 777 "../../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, "%e semi-circles (%"G_GINT64_MODIFIER"d)",
+ cnavIo, "%g semi-circles (%"G_GINT64_MODIFIER"d)",
(double)cnavIo*pow(2, -32), cnavIo);
@@ -6483,7 +7007,7 @@ dissect_lpp_T_gloEn(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 31U, NULL, FALSE);
-#line 765 "../../asn1/lpp/lpp.cnf"
+#line 804 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " days");
@@ -6494,7 +7018,7 @@ dissect_lpp_T_gloEn(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
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 768 "../../asn1/lpp/lpp.cnf"
+#line 807 "../../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);
@@ -6502,7 +7026,7 @@ dissect_lpp_T_gloP1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
-#line 772 "../../asn1/lpp/lpp.cnf"
+#line 811 "../../asn1/lpp/lpp.cnf"
if (gloP1_tvb) {
actx->created_item = proto_tree_add_uint(tree, hf_index, gloP1_tvb, 0, 1, tvb_get_bits8(gloP1_tvb, 0, 2));
proto_item_append_text(actx->created_item, " mn");
@@ -6559,6 +7083,16 @@ 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_) {
+ 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 },
@@ -6583,12 +7117,58 @@ dissect_lpp_NavModel_SBAS_ECEF(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
+
+static int
+dissect_lpp_T_bdsURAI_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_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 15U, NULL, FALSE);
+
+#line 880 "../../asn1/lpp/lpp.cnf"
+ proto_item_append_text(actx->created_item, " m");
+
+
+ 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_T_bdsURAI_r12 },
+ { &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 }
};
@@ -6598,6 +7178,7 @@ static const per_choice_t GNSS_OrbitModel_choice[] = {
{ 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 }
};
@@ -6611,12 +7192,50 @@ dissect_lpp_GNSS_OrbitModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
+
+static int
+dissect_lpp_T_svHealthExt_v12xy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 494 "../../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 499 "../../asn1/lpp/lpp.cnf"
+ if (svHealthExt_tvb) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_lpp_svHealthExt_v12xy);
+ proto_tree_add_bits_item(subtree, hf_lpp_svHealthExt_v12xy_e5bhs, svHealthExt_tvb, 0, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(subtree, hf_lpp_svHealthExt_v12xy_e1_bhs, svHealthExt_tvb, 2, 2, ENC_BIG_ENDIAN);
+ }
+
+
+ return offset;
+}
+
+
+static const per_sequence_t GNSS_NavModelSatelliteElement_eag_1_sequence[] = {
+ { &hf_lpp_svHealthExt_v12xy, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_T_svHealthExt_v12xy },
+ { 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 },
+ { &hf_lpp_dummy_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_NavModelSatelliteElement_eag_1 },
{ NULL, 0, 0, NULL }
};
@@ -6707,7 +7326,7 @@ dissect_lpp_T_gnss_TOD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 3599U, NULL, FALSE);
-#line 838 "../../asn1/lpp/lpp.cnf"
+#line 931 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " s");
@@ -6721,7 +7340,7 @@ dissect_lpp_T_gnss_TODfrac(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 999U, NULL, FALSE);
-#line 841 "../../asn1/lpp/lpp.cnf"
+#line 934 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " ms");
@@ -6839,7 +7458,7 @@ dissect_lpp_T_intCodePhase(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 127U, NULL, FALSE);
-#line 859 "../../asn1/lpp/lpp.cnf"
+#line 952 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " ms");
@@ -6910,7 +7529,7 @@ dissect_lpp_T_confidence_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 100U, NULL, FALSE);
-#line 844 "../../asn1/lpp/lpp.cnf"
+#line 937 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " %%");
@@ -6936,9 +7555,23 @@ dissect_lpp_GNSS_AcquisitionAssistance(tvbuff_t *tvb _U_, int offset _U_, asn1_c
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_) {
+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 964 "../../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, NULL, FALSE);
+ 0U, 255U, &toa, FALSE);
+
+
+
+
+#line 970 "../../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;
}
@@ -6946,9 +7579,46 @@ dissect_lpp_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
static int
-dissect_lpp_INTEGER_0_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, 2047U, NULL, FALSE);
+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 997 "../../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 1002 "../../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 1009 "../../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 1014 "../../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;
}
@@ -6959,13 +7629,14 @@ static const per_sequence_t AlmanacKeplerianSet_sequence[] = {
{ &hf_lpp_kepAlmanacE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2047 },
{ &hf_lpp_kepAlmanacDeltaI, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
{ &hf_lpp_kepAlmanacOmegaDot, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
- { &hf_lpp_kepSVHealth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_15 },
- { &hf_lpp_kepAlmanacAPowerHalf, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M65536_65535 },
+ { &hf_lpp_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_M8192_8191 },
- { &hf_lpp_kepAlmanacAF1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_M1024_1023 },
+ { &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 }
};
@@ -7022,16 +7693,6 @@ dissect_lpp_AlmanacReducedKeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_c
}
-
-static int
-dissect_lpp_INTEGER_0_131071(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, 131071U, NULL, FALSE);
-
- return offset;
-}
-
-
static const per_sequence_t AlmanacMidiAlmanacSet_sequence[] = {
{ &hf_lpp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_SV_ID },
{ &hf_lpp_midiAlmE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_INTEGER_0_2047 },
@@ -7064,7 +7725,7 @@ dissect_lpp_T_gloAlm_NA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1U, 1461U, NULL, FALSE);
-#line 961 "../../asn1/lpp/lpp.cnf"
+#line 1098 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " days");
@@ -7171,6 +7832,67 @@ dissect_lpp_AlmanacECEF_SBAS_AlmanacSet(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
+
+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 1176 "../../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 1181 "../../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" },
@@ -7178,6 +7900,7 @@ static const value_string lpp_GNSS_AlmanacElement_vals[] = {
{ 3, "keplerianMidiAlmanac" },
{ 4, "keplerianGLONASS" },
{ 5, "ecef-SBAS-Almanac" },
+ { 6, "keplerianBDS-Almanac-r12" },
{ 0, NULL }
};
@@ -7188,6 +7911,7 @@ static const per_choice_t GNSS_AlmanacElement_choice[] = {
{ 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 }
};
@@ -7215,12 +7939,61 @@ dissect_lpp_GNSS_AlmanacList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
+
+static int
+dissect_lpp_T_toa_ext_v12xy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 976 "../../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 982 "../../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_v12xy, 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_v12xy , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_T_toa_ext_v12xy },
+ { &hf_lpp_ioda_ext_v12xy , 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_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 },
+ { &hf_lpp_dummy_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_Almanac_eag_1 },
{ NULL, 0, 0, NULL }
};
@@ -7239,7 +8012,7 @@ dissect_lpp_T_gnss_Utc_WNt(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, NULL, FALSE);
-#line 1018 "../../asn1/lpp/lpp.cnf"
+#line 1209 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " weeks");
@@ -7253,7 +8026,7 @@ dissect_lpp_T_gnss_Utc_DeltaTls(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-128, 127U, NULL, FALSE);
-#line 1021 "../../asn1/lpp/lpp.cnf"
+#line 1212 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " s");
@@ -7267,7 +8040,7 @@ dissect_lpp_T_gnss_Utc_WNlsf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, NULL, FALSE);
-#line 1024 "../../asn1/lpp/lpp.cnf"
+#line 1215 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " weeks");
@@ -7281,7 +8054,7 @@ dissect_lpp_T_gnss_Utc_DN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-128, 127U, NULL, FALSE);
-#line 1027 "../../asn1/lpp/lpp.cnf"
+#line 1218 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " days");
@@ -7295,7 +8068,7 @@ dissect_lpp_T_gnss_Utc_DeltaTlsf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-128, 127U, NULL, FALSE);
-#line 1030 "../../asn1/lpp/lpp.cnf"
+#line 1221 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " s");
@@ -7330,7 +8103,7 @@ dissect_lpp_T_utcDeltaTls(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-128, 127U, NULL, FALSE);
-#line 1042 "../../asn1/lpp/lpp.cnf"
+#line 1233 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " s");
@@ -7344,7 +8117,7 @@ dissect_lpp_T_utcWNot(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 8191U, NULL, FALSE);
-#line 1048 "../../asn1/lpp/lpp.cnf"
+#line 1239 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " weeks");
@@ -7358,7 +8131,7 @@ dissect_lpp_T_utcWNlsf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, NULL, FALSE);
-#line 1051 "../../asn1/lpp/lpp.cnf"
+#line 1242 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " weeks");
@@ -7372,7 +8145,7 @@ dissect_lpp_T_utcDN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4, 4, FALSE, NULL, NULL);
-#line 1054 "../../asn1/lpp/lpp.cnf"
+#line 1245 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " days");
@@ -7386,7 +8159,7 @@ dissect_lpp_T_utcDeltaTlsf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-128, 127U, NULL, FALSE);
-#line 1057 "../../asn1/lpp/lpp.cnf"
+#line 1248 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " s");
@@ -7422,7 +8195,7 @@ dissect_lpp_T_nA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1U, 1461U, NULL, FALSE);
-#line 1060 "../../asn1/lpp/lpp.cnf"
+#line 1251 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " days");
@@ -7433,7 +8206,7 @@ dissect_lpp_T_nA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_
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 1072 "../../asn1/lpp/lpp.cnf"
+#line 1263 "../../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);
@@ -7441,7 +8214,7 @@ dissect_lpp_T_kp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_
-#line 1076 "../../asn1/lpp/lpp.cnf"
+#line 1267 "../../asn1/lpp/lpp.cnf"
if (kp_tvb) {
actx->created_item = proto_tree_add_uint(tree, hf_index, kp_tvb, 0, 1, tvb_get_bits8(kp_tvb, 0, 2));
}
@@ -7475,7 +8248,7 @@ dissect_lpp_T_utcWNt(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, NULL, FALSE);
-#line 1093 "../../asn1/lpp/lpp.cnf"
+#line 1284 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " weeks");
@@ -7489,7 +8262,7 @@ dissect_lpp_T_utcDeltaTls_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-128, 127U, NULL, FALSE);
-#line 1096 "../../asn1/lpp/lpp.cnf"
+#line 1287 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " s");
@@ -7503,7 +8276,7 @@ dissect_lpp_T_utcWNlsf_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, NULL, FALSE);
-#line 1099 "../../asn1/lpp/lpp.cnf"
+#line 1290 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " weeks");
@@ -7517,7 +8290,7 @@ dissect_lpp_T_utcDN_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-128, 127U, NULL, FALSE);
-#line 1102 "../../asn1/lpp/lpp.cnf"
+#line 1293 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " days");
@@ -7531,7 +8304,7 @@ dissect_lpp_T_utcDeltaTlsf_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
-128, 127U, NULL, FALSE);
-#line 1105 "../../asn1/lpp/lpp.cnf"
+#line 1296 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " s");
@@ -7561,11 +8334,87 @@ dissect_lpp_UTC_ModelSet4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
}
+
+static int
+dissect_lpp_T_utcDeltaTls_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_integer(tvb, offset, actx, tree, hf_index,
+ -128, 127U, NULL, FALSE);
+
+#line 1308 "../../asn1/lpp/lpp.cnf"
+ proto_item_append_text(actx->created_item, " s");
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_lpp_T_utcWNlsf_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_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, NULL, FALSE);
+
+#line 1311 "../../asn1/lpp/lpp.cnf"
+ proto_item_append_text(actx->created_item, " weeks");
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_lpp_T_utcDN_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_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, NULL, FALSE);
+
+#line 1314 "../../asn1/lpp/lpp.cnf"
+ proto_item_append_text(actx->created_item, " days");
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_lpp_T_utcDeltaTlsf_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_integer(tvb, offset, actx, tree, hf_index,
+ -128, 127U, NULL, FALSE);
+
+#line 1317 "../../asn1/lpp/lpp.cnf"
+ proto_item_append_text(actx->created_item, " s");
+
+
+ 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_T_utcDeltaTls_r12 },
+ { &hf_lpp_utcWNlsf_r12 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_utcWNlsf_r12 },
+ { &hf_lpp_utcDN_r12 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_utcDN_r12 },
+ { &hf_lpp_utcDeltaTlsf_r12, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_utcDeltaTlsf_r12 },
+ { 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 }
};
@@ -7574,6 +8423,7 @@ static const per_choice_t GNSS_UTC_Model_choice[] = {
{ 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 }
};
@@ -7678,6 +8528,178 @@ dissect_lpp_GNSS_AuxiliaryInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
}
+
+static int
+dissect_lpp_T_dbds_RefTime_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_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 3599U, NULL, FALSE);
+
+#line 1320 "../../asn1/lpp/lpp.cnf"
+ proto_item_append_text(actx->created_item, " s");
+
+
+ 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_T_dbds_RefTime_r12 },
+ { &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_T_bds_RefTime_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_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 3599U, NULL, FALSE);
+
+#line 1332 "../../asn1/lpp/lpp.cnf"
+ proto_item_append_text(actx->created_item, " s");
+
+
+ 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_T_bds_RefTime_r12 },
+ { &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 },
@@ -7690,6 +8712,7 @@ static const per_sequence_t GNSS_GenericAssistDataElement_sequence[] = {
{ &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 },
+ { &hf_lpp_dummy_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_GNSS_GenericAssistDataElement_eag_1 },
{ NULL, 0, 0, NULL }
};
@@ -7873,6 +8896,16 @@ dissect_lpp_T_prs_Bandwidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
}
+
+static int
+dissect_lpp_INTEGER_0_4095(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 4095U, NULL, FALSE);
+
+ return offset;
+}
+
+
static const value_string lpp_T_numDL_Frames_vals[] = {
{ 0, "sf-1" },
{ 1, "sf-2" },
@@ -8271,7 +9304,7 @@ static const per_sequence_t ProvideAssistanceData_sequence[] = {
static int
dissect_lpp_ProvideAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 66 "../../asn1/lpp/lpp.cnf"
+#line 69 "../../asn1/lpp/lpp.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Provide Assistance Data");
@@ -8303,7 +9336,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 276 "../../asn1/lpp/lpp.cnf"
+#line 279 "../../asn1/lpp/lpp.cnf"
guint32 duration;
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
@@ -8374,7 +9407,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 264 "../../asn1/lpp/lpp.cnf"
+#line 267 "../../asn1/lpp/lpp.cnf"
guint32 idx;
const gchar *interval[10] = {"", ": 1 s", ": 2 s", ": 4 s", ": 8 s", ": 10 s",
": 16 s", ": 20 s", ": 32 s", ": 64 s"};
@@ -8385,7 +9418,7 @@ dissect_lpp_T_reportingInterval(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
-#line 271 "../../asn1/lpp/lpp.cnf"
+#line 274 "../../asn1/lpp/lpp.cnf"
if (idx < 10) {
proto_item_append_text(actx->created_item, "%s", interval[idx]);
}
@@ -8462,7 +9495,7 @@ dissect_lpp_T_time(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, prot
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1U, 128U, NULL, FALSE);
-#line 297 "../../asn1/lpp/lpp.cnf"
+#line 300 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " s");
@@ -8470,8 +9503,36 @@ dissect_lpp_T_time(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, prot
}
+
+static int
+dissect_lpp_T_responseTimeEarlyFix_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_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 128U, NULL, FALSE);
+
+#line 303 "../../asn1/lpp/lpp.cnf"
+ proto_item_append_text(actx->created_item, " s");
+
+
+ return offset;
+}
+
+
+static const per_sequence_t ResponseTime_eag_1_sequence[] = {
+ { &hf_lpp_responseTimeEarlyFix_r12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_T_responseTimeEarlyFix_r12 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_ResponseTime_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, ResponseTime_eag_1_sequence);
+
+ return offset;
+}
+
+
static const per_sequence_t ResponseTime_sequence[] = {
{ &hf_lpp_time , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lpp_T_time },
+ { &hf_lpp_dummy_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_ResponseTime_eag_1 },
{ NULL, 0, 0, NULL }
};
@@ -8589,7 +9650,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 1344 "../../asn1/lpp/lpp.cnf"
+#line 1594 "../../asn1/lpp/lpp.cnf"
tvbuff_t *requestedMeasurements_tvb = NULL;
int len;
@@ -8717,7 +9778,7 @@ static const per_sequence_t RequestLocationInformation_sequence[] = {
static int
dissect_lpp_RequestLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 69 "../../asn1/lpp/lpp.cnf"
+#line 72 "../../asn1/lpp/lpp.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Request Location Information");
@@ -9000,7 +10061,7 @@ dissect_lpp_T_bearing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 359U, NULL, FALSE);
-#line 208 "../../asn1/lpp/lpp.cnf"
+#line 211 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " degrees");
@@ -9014,7 +10075,7 @@ dissect_lpp_T_horizontalSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 2047U, NULL, FALSE);
-#line 211 "../../asn1/lpp/lpp.cnf"
+#line 214 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " km/h");
@@ -9086,7 +10147,7 @@ dissect_lpp_T_bearing_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 359U, NULL, FALSE);
-#line 214 "../../asn1/lpp/lpp.cnf"
+#line 217 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " degrees");
@@ -9100,7 +10161,7 @@ dissect_lpp_T_horizontalSpeed_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 2047U, NULL, FALSE);
-#line 217 "../../asn1/lpp/lpp.cnf"
+#line 220 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " km/h");
@@ -9114,7 +10175,7 @@ dissect_lpp_T_uncertaintySpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, NULL, FALSE);
-#line 220 "../../asn1/lpp/lpp.cnf"
+#line 223 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " km/h");
@@ -9144,7 +10205,7 @@ dissect_lpp_T_bearing_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 359U, NULL, FALSE);
-#line 223 "../../asn1/lpp/lpp.cnf"
+#line 226 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " degrees");
@@ -9158,7 +10219,7 @@ dissect_lpp_T_horizontalSpeed_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 2047U, NULL, FALSE);
-#line 226 "../../asn1/lpp/lpp.cnf"
+#line 229 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " km/h");
@@ -9188,7 +10249,7 @@ dissect_lpp_T_verticalSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, NULL, FALSE);
-#line 229 "../../asn1/lpp/lpp.cnf"
+#line 232 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " km/h");
@@ -9202,7 +10263,7 @@ dissect_lpp_T_horizontalUncertaintySpeed(tvbuff_t *tvb _U_, int offset _U_, asn1
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, NULL, FALSE);
-#line 232 "../../asn1/lpp/lpp.cnf"
+#line 235 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " km/h");
@@ -9216,7 +10277,7 @@ dissect_lpp_T_verticalUncertaintySpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_c
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, NULL, FALSE);
-#line 235 "../../asn1/lpp/lpp.cnf"
+#line 238 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " km/h");
@@ -9301,10 +10362,40 @@ dissect_lpp_LocationError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
}
+static const value_string lpp_EarlyFixReport_r12_vals[] = {
+ { 0, "noMoreMessages" },
+ { 1, "moreMessagesOnTheWay" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_lpp_EarlyFixReport_r12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 2, NULL, FALSE, 0, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CommonIEsProvideLocationInformation_eag_1_sequence[] = {
+ { &hf_lpp_earlyFixReport_r12, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_lpp_EarlyFixReport_r12 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_lpp_CommonIEsProvideLocationInformation_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, CommonIEsProvideLocationInformation_eag_1_sequence);
+
+ return offset;
+}
+
+
static const per_sequence_t CommonIEsProvideLocationInformation_sequence[] = {
{ &hf_lpp_locationEstimate, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_LocationCoordinates },
{ &hf_lpp_velocityEstimate, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_Velocity },
{ &hf_lpp_locationError , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lpp_LocationError },
+ { &hf_lpp_dummy_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_lpp_CommonIEsProvideLocationInformation_eag_1 },
{ NULL, 0, 0, NULL }
};
@@ -9323,7 +10414,7 @@ dissect_lpp_T_gnss_TOD_msec(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 3599999U, NULL, FALSE);
-#line 1129 "../../asn1/lpp/lpp.cnf"
+#line 1359 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " ms");
@@ -9454,7 +10545,7 @@ dissect_lpp_T_deltaGNSS_TOD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 127U, NULL, FALSE);
-#line 1138 "../../asn1/lpp/lpp.cnf"
+#line 1368 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " ms");
@@ -9528,7 +10619,7 @@ dissect_lpp_T_gnss_CodePhaseAmbiguity(tvbuff_t *tvb _U_, int offset _U_, asn1_ct
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 127U, NULL, FALSE);
-#line 1141 "../../asn1/lpp/lpp.cnf"
+#line 1371 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " ms");
@@ -9542,7 +10633,7 @@ dissect_lpp_T_cNo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 63U, NULL, FALSE);
-#line 1144 "../../asn1/lpp/lpp.cnf"
+#line 1374 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " dB-Hz");
@@ -9574,7 +10665,7 @@ dissect_lpp_T_integerCodePhase(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 127U, NULL, FALSE);
-#line 1153 "../../asn1/lpp/lpp.cnf"
+#line 1383 "../../asn1/lpp/lpp.cnf"
proto_item_append_text(actx->created_item, " ms");
@@ -9736,7 +10827,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 309 "../../asn1/lpp/lpp.cnf"
+#line 315 "../../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);
@@ -9744,7 +10835,7 @@ dissect_lpp_T_error_Resolution(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
-#line 313 "../../asn1/lpp/lpp.cnf"
+#line 319 "../../asn1/lpp/lpp.cnf"
if (error_Resolution_tvb) {
actx->created_item = proto_tree_add_uint(tree, hf_index, error_Resolution_tvb, 0, 1, tvb_get_bits8(error_Resolution_tvb, 0, 2));
}
@@ -9757,7 +10848,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 321 "../../asn1/lpp/lpp.cnf"
+#line 327 "../../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);
@@ -9765,7 +10856,7 @@ dissect_lpp_T_error_Value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
-#line 325 "../../asn1/lpp/lpp.cnf"
+#line 331 "../../asn1/lpp/lpp.cnf"
if (error_Value_tvb) {
actx->created_item = proto_tree_add_uint(tree, hf_index, error_Value_tvb, 0, 1, tvb_get_bits8(error_Value_tvb, 0, 5));
}
@@ -9778,7 +10869,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 333 "../../asn1/lpp/lpp.cnf"
+#line 339 "../../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);
@@ -9786,7 +10877,7 @@ dissect_lpp_T_error_NumSamples(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
-#line 337 "../../asn1/lpp/lpp.cnf"
+#line 343 "../../asn1/lpp/lpp.cnf"
if (error_NumSamples_tvb) {
actx->created_item = proto_tree_add_uint(tree, hf_index, error_NumSamples_tvb, 0, 1, tvb_get_bits8(error_NumSamples_tvb, 0, 3));
}
@@ -10185,7 +11276,7 @@ static const per_sequence_t ProvideLocationInformation_sequence[] = {
static int
dissect_lpp_ProvideLocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 72 "../../asn1/lpp/lpp.cnf"
+#line 75 "../../asn1/lpp/lpp.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Provide Location Information");
@@ -10311,7 +11402,7 @@ static const per_sequence_t Abort_sequence[] = {
static int
dissect_lpp_Abort(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 75 "../../asn1/lpp/lpp.cnf"
+#line 78 "../../asn1/lpp/lpp.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Abort");
@@ -10397,7 +11488,7 @@ static const per_choice_t Error_choice[] = {
static int
dissect_lpp_Error(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 78 "../../asn1/lpp/lpp.cnf"
+#line 81 "../../asn1/lpp/lpp.cnf"
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Error");
@@ -10588,7 +11679,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 1346 "../../asn1/lpp/packet-lpp-template.c"
+#line 1630 "../../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;
@@ -11370,6 +12461,10 @@ void proto_register_lpp(void) {
{ "time", "lpp.time",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_lpp_responseTimeEarlyFix_r12,
+ { "responseTimeEarlyFix-r12", "lpp.responseTimeEarlyFix_r12",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_lpp_locationEstimate,
{ "locationEstimate", "lpp.locationEstimate",
FT_UINT32, BASE_DEC, VALS(lpp_LocationCoordinates_vals), 0,
@@ -11382,6 +12477,10 @@ void proto_register_lpp(void) {
{ "locationError", "lpp.locationError_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_lpp_earlyFixReport_r12,
+ { "earlyFixReport-r12", "lpp.earlyFixReport_r12",
+ FT_UINT32, BASE_DEC, VALS(lpp_EarlyFixReport_r12_vals), 0,
+ NULL, HFILL }},
{ &hf_lpp_ellipsoidPoint_01,
{ "ellipsoidPoint", "lpp.ellipsoidPoint_element",
FT_NONE, BASE_NONE, NULL, 0,
@@ -11746,6 +12845,14 @@ void proto_register_lpp(void) {
{ "gnss-AuxiliaryInformation", "lpp.gnss_AuxiliaryInformation",
FT_UINT32, BASE_DEC, VALS(lpp_GNSS_AuxiliaryInformation_vals), 0,
NULL, HFILL }},
+ { &hf_lpp_bds_DifferentialCorrections_r12,
+ { "bds-DifferentialCorrections-r12", "lpp.bds_DifferentialCorrections_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_bds_GridModel_r12,
+ { "bds-GridModel-r12", "lpp.bds_GridModel_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "BDS_GridModelParameter_r12", HFILL }},
{ &hf_lpp_gnss_SystemTime,
{ "gnss-SystemTime", "lpp.gnss_SystemTime_element",
FT_NONE, BASE_NONE, NULL, 0,
@@ -11941,15 +13048,15 @@ void proto_register_lpp(void) {
{ &hf_lpp_ai0,
{ "ai0", "lpp.ai0",
FT_UINT32, BASE_CUSTOM, &lpp_ai0_fmt, 0,
- "INTEGER_0_4095", HFILL }},
+ "INTEGER_0_2047", HFILL }},
{ &hf_lpp_ai1,
{ "ai1", "lpp.ai1",
- FT_UINT32, BASE_CUSTOM, &lpp_ai1_fmt, 0,
- "INTEGER_0_4095", HFILL }},
+ FT_INT32, BASE_CUSTOM, &lpp_ai1_fmt, 0,
+ "INTEGER_M1024_1023", HFILL }},
{ &hf_lpp_ai2,
{ "ai2", "lpp.ai2",
- FT_UINT32, BASE_CUSTOM, &lpp_ai2_fmt, 0,
- "INTEGER_0_4095", HFILL }},
+ FT_INT32, BASE_CUSTOM, &lpp_ai2_fmt, 0,
+ "INTEGER_M8192_8191", HFILL }},
{ &hf_lpp_ionoStormFlag1,
{ "ionoStormFlag1", "lpp.ionoStormFlag1",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -12110,6 +13217,10 @@ void proto_register_lpp(void) {
{ "gnss-OrbitModel", "lpp.gnss_OrbitModel",
FT_UINT32, BASE_DEC, VALS(lpp_GNSS_OrbitModel_vals), 0,
NULL, HFILL }},
+ { &hf_lpp_svHealthExt_v12xy,
+ { "svHealthExt-v12xy", "lpp.svHealthExt_v12xy",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "T_svHealthExt_v12xy", HFILL }},
{ &hf_lpp_standardClockModelList,
{ "standardClockModelList", "lpp.standardClockModelList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -12130,6 +13241,10 @@ void proto_register_lpp(void) {
{ "sbas-ClockModel", "lpp.sbas_ClockModel_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_lpp_bds_ClockModel_r12,
+ { "bds-ClockModel-r12", "lpp.bds_ClockModel_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_lpp_keplerianSet,
{ "keplerianSet", "lpp.keplerianSet_element",
FT_NONE, BASE_NONE, NULL, 0,
@@ -12150,6 +13265,10 @@ void proto_register_lpp(void) {
{ "sbas-ECEF", "lpp.sbas_ECEF_element",
FT_NONE, BASE_NONE, NULL, 0,
"NavModel_SBAS_ECEF", HFILL }},
+ { &hf_lpp_bds_KeplerianSet_r12,
+ { "bds-KeplerianSet-r12", "lpp.bds_KeplerianSet_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "NavModel_BDS_KeplerianSet_r12", HFILL }},
{ &hf_lpp_StandardClockModelList_item,
{ "StandardClockModelElement", "lpp.StandardClockModelElement_element",
FT_NONE, BASE_NONE, NULL, 0,
@@ -12161,19 +13280,23 @@ void proto_register_lpp(void) {
{ &hf_lpp_stanClockAF2,
{ "stanClockAF2", "lpp.stanClockAF2",
FT_INT32, BASE_CUSTOM, &lpp_stanClockAF2_fmt, 0,
- "INTEGER_M2048_2047", HFILL }},
+ "INTEGER_M32_31", HFILL }},
{ &hf_lpp_stanClockAF1,
{ "stanClockAF1", "lpp.stanClockAF1",
FT_INT32, BASE_CUSTOM, &lpp_stanClockAF1_fmt, 0,
- "INTEGER_M131072_131071", HFILL }},
+ "INTEGER_M1048576_1048575", HFILL }},
{ &hf_lpp_stanClockAF0,
{ "stanClockAF0", "lpp.stanClockAF0",
FT_INT32, BASE_CUSTOM, &lpp_stanClockAF0_fmt, 0,
- "INTEGER_M134217728_134217727", HFILL }},
+ "INTEGER_M1073741824_1073741823", HFILL }},
{ &hf_lpp_stanClockTgd,
{ "stanClockTgd", "lpp.stanClockTgd",
FT_INT32, BASE_CUSTOM, &lpp_stanClockTgd_fmt, 0,
"INTEGER_M512_511", HFILL }},
+ { &hf_lpp_sisa,
+ { "sisa", "lpp.sisa",
+ FT_UINT32, BASE_CUSTOM, &lpp_sisa_fmt, 0,
+ "INTEGER_0_255", HFILL }},
{ &hf_lpp_stanModelID,
{ "stanModelID", "lpp.stanModelID",
FT_UINT32, BASE_DEC, VALS(lpp_stanModelID_vals), 0,
@@ -12282,6 +13405,30 @@ void proto_register_lpp(void) {
{ "sbasAgf1", "lpp.sbasAgf1",
FT_INT32, BASE_CUSTOM, &lpp_sbasAgf1_fmt, 0,
"INTEGER_M128_127", HFILL }},
+ { &hf_lpp_bdsAODC_r12,
+ { "bdsAODC-r12", "lpp.bdsAODC_r12",
+ FT_UINT32, BASE_CUSTOM, &lpp_bdsAODC_AODE_r12_fmt, 0,
+ "INTEGER_0_31", HFILL }},
+ { &hf_lpp_bdsToc_r12,
+ { "bdsToc-r12", "lpp.bdsToc_r12",
+ FT_UINT32, BASE_CUSTOM, &lpp_bdsToc_Toe_r12_fmt, 0,
+ "INTEGER_0_131071", HFILL }},
+ { &hf_lpp_bdsA0_r12,
+ { "bdsA0-r12", "lpp.bdsA0_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsA0_r12_fmt, 0,
+ "INTEGER_M8388608_8388607", HFILL }},
+ { &hf_lpp_bdsA1_r12,
+ { "bdsA1-r12", "lpp.bdsA1_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsA1_r12_fmt, 0,
+ "INTEGER_M2097152_2097151", HFILL }},
+ { &hf_lpp_bdsA2_r12,
+ { "bdsA2-r12", "lpp.bdsA2_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsA2_r12_fmt, 0,
+ "INTEGER_M1024_1023", HFILL }},
+ { &hf_lpp_bdsTgd1_r12,
+ { "bdsTgd1-r12", "lpp.bdsTgd1_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsTgd1_r12_fmt, 0,
+ "INTEGER_M512_511", HFILL }},
{ &hf_lpp_keplerToe,
{ "keplerToe", "lpp.keplerToe",
FT_UINT32, BASE_CUSTOM, &lpp_keplerToe_fmt, 0,
@@ -12618,6 +13765,78 @@ void proto_register_lpp(void) {
{ "sbasZgDotDot", "lpp.sbasZgDotDot",
FT_INT32, BASE_CUSTOM, &lpp_sbasZgDotDot_fmt, 0,
"INTEGER_M512_511", HFILL }},
+ { &hf_lpp_bdsAODE_r12,
+ { "bdsAODE-r12", "lpp.bdsAODE_r12",
+ FT_UINT32, BASE_CUSTOM, &lpp_bdsAODC_AODE_r12_fmt, 0,
+ "INTEGER_0_31", HFILL }},
+ { &hf_lpp_bdsURAI_r12,
+ { "bdsURAI-r12", "lpp.bdsURAI_r12",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsToe_r12,
+ { "bdsToe-r12", "lpp.bdsToe_r12",
+ FT_UINT32, BASE_CUSTOM, &lpp_bdsToc_Toe_r12_fmt, 0,
+ "INTEGER_0_131071", HFILL }},
+ { &hf_lpp_bdsAPowerHalf_r12,
+ { "bdsAPowerHalf-r12", "lpp.bdsAPowerHalf_r12",
+ FT_UINT32, BASE_CUSTOM, &lpp_bdsAPowerHalf_r12_fmt, 0,
+ "INTEGER_0_4294967295", HFILL }},
+ { &hf_lpp_bdsE_r12,
+ { "bdsE-r12", "lpp.bdsE_r12",
+ FT_UINT32, BASE_CUSTOM, &lpp_bdsE_r12_fmt, 0,
+ "INTEGER_0_4294967295", HFILL }},
+ { &hf_lpp_bdsW_r12,
+ { "bdsW-r12", "lpp.bdsW_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsW_M0_Omega0_I0_r12_fmt, 0,
+ "INTEGER_M2147483648_2147483647", HFILL }},
+ { &hf_lpp_bdsDeltaN_r12,
+ { "bdsDeltaN-r12", "lpp.bdsDeltaN_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt, 0,
+ "INTEGER_M32768_32767", HFILL }},
+ { &hf_lpp_bdsM0_r12,
+ { "bdsM0-r12", "lpp.bdsM0_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsW_M0_Omega0_I0_r12_fmt, 0,
+ "INTEGER_M2147483648_2147483647", HFILL }},
+ { &hf_lpp_bdsOmega0_r12,
+ { "bdsOmega0-r12", "lpp.bdsOmega0_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsW_M0_Omega0_I0_r12_fmt, 0,
+ "INTEGER_M2147483648_2147483647", HFILL }},
+ { &hf_lpp_bdsOmegaDot_r12,
+ { "bdsOmegaDot-r12", "lpp.bdsOmegaDot_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt, 0,
+ "INTEGER_M8388608_8388607", HFILL }},
+ { &hf_lpp_bdsI0_r12,
+ { "bdsI0-r12", "lpp.bdsI0_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsW_M0_Omega0_I0_r12_fmt, 0,
+ "INTEGER_M2147483648_2147483647", HFILL }},
+ { &hf_lpp_bdsIDot_r12,
+ { "bdsIDot-r12", "lpp.bdsIDot_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsDeltaN_OmegaDot_IDot_r12_fmt, 0,
+ "INTEGER_M8192_8191", HFILL }},
+ { &hf_lpp_bdsCuc_r12,
+ { "bdsCuc-r12", "lpp.bdsCuc_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsCuc_Cus_Cic_Cis_r12_fmt, 0,
+ "INTEGER_M131072_131071", HFILL }},
+ { &hf_lpp_bdsCus_r12,
+ { "bdsCus-r12", "lpp.bdsCus_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsCuc_Cus_Cic_Cis_r12_fmt, 0,
+ "INTEGER_M131072_131071", HFILL }},
+ { &hf_lpp_bdsCrc_r12,
+ { "bdsCrc-r12", "lpp.bdsCrc_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsCrc_Crs_r12_fmt, 0,
+ "INTEGER_M131072_131071", HFILL }},
+ { &hf_lpp_bdsCrs_r12,
+ { "bdsCrs-r12", "lpp.bdsCrs_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsCrc_Crs_r12_fmt, 0,
+ "INTEGER_M131072_131071", HFILL }},
+ { &hf_lpp_bdsCic_r12,
+ { "bdsCic-r12", "lpp.bdsCic_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsCuc_Cus_Cic_Cis_r12_fmt, 0,
+ "INTEGER_M131072_131071", HFILL }},
+ { &hf_lpp_bdsCis_r12,
+ { "bdsCis-r12", "lpp.bdsCis_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsCuc_Cus_Cic_Cis_r12_fmt, 0,
+ "INTEGER_M131072_131071", HFILL }},
{ &hf_lpp_gnss_BadSignalList,
{ "gnss-BadSignalList", "lpp.gnss_BadSignalList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -12724,8 +13943,8 @@ void proto_register_lpp(void) {
"INTEGER_0_255", HFILL }},
{ &hf_lpp_toa,
{ "toa", "lpp.toa",
- FT_UINT32, BASE_CUSTOM, &lpp_toa_fmt, 0,
- "INTEGER_0_255", HFILL }},
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_lpp_ioda,
{ "ioda", "lpp.ioda",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -12738,6 +13957,14 @@ void proto_register_lpp(void) {
{ "gnss-AlmanacList", "lpp.gnss_AlmanacList",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_lpp_toa_ext_v12xy,
+ { "toa-ext-v12xy", "lpp.toa_ext_v12xy",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "T_toa_ext_v12xy", HFILL }},
+ { &hf_lpp_ioda_ext_v12xy,
+ { "ioda-ext-v12xy", "lpp.ioda_ext_v12xy",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_4_15", HFILL }},
{ &hf_lpp_GNSS_AlmanacList_item,
{ "GNSS-AlmanacElement", "lpp.GNSS_AlmanacElement",
FT_UINT32, BASE_DEC, VALS(lpp_GNSS_AlmanacElement_vals), 0,
@@ -12766,6 +13993,10 @@ void proto_register_lpp(void) {
{ "ecef-SBAS-Almanac", "lpp.ecef_SBAS_Almanac_element",
FT_NONE, BASE_NONE, NULL, 0,
"AlmanacECEF_SBAS_AlmanacSet", HFILL }},
+ { &hf_lpp_keplerianBDS_Almanac_r12,
+ { "keplerianBDS-Almanac-r12", "lpp.keplerianBDS_Almanac_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AlmanacBDS_AlmanacSet_r12", HFILL }},
{ &hf_lpp_kepAlmanacE,
{ "kepAlmanacE", "lpp.kepAlmanacE",
FT_UINT32, BASE_CUSTOM, &lpp_kepAlmanacE_fmt, 0,
@@ -12778,14 +14009,18 @@ void proto_register_lpp(void) {
{ "kepAlmanacOmegaDot", "lpp.kepAlmanacOmegaDot",
FT_INT32, BASE_CUSTOM, &lpp_kepAlmanacOmegaDot_fmt, 0,
"INTEGER_M1024_1023", HFILL }},
- { &hf_lpp_kepSVHealth,
- { "kepSVHealth", "lpp.kepSVHealth",
- FT_UINT32, BASE_DEC, NULL, 0,
- "INTEGER_0_15", HFILL }},
+ { &hf_lpp_kepSV_StatusINAV,
+ { "kepSV-StatusINAV", "lpp.kepSV_StatusINAV",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_kepSV_StatusFNAV,
+ { "kepSV-StatusFNAV", "lpp.kepSV_StatusFNAV",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_lpp_kepAlmanacAPowerHalf,
{ "kepAlmanacAPowerHalf", "lpp.kepAlmanacAPowerHalf",
FT_INT32, BASE_CUSTOM, &lpp_kepAlmanacAPowerHalf_fmt, 0,
- "INTEGER_M65536_65535", HFILL }},
+ "INTEGER_M4096_4095", HFILL }},
{ &hf_lpp_kepAlmanacOmega0,
{ "kepAlmanacOmega0", "lpp.kepAlmanacOmega0",
FT_INT32, BASE_CUSTOM, &lpp_kepAlmanacOmega0_W_M0_fmt, 0,
@@ -12801,11 +14036,11 @@ void proto_register_lpp(void) {
{ &hf_lpp_kepAlmanacAF0,
{ "kepAlmanacAF0", "lpp.kepAlmanacAF0",
FT_INT32, BASE_CUSTOM, &lpp_kepAlmanacAF0_fmt, 0,
- "INTEGER_M8192_8191", HFILL }},
+ "INTEGER_M32768_32767", HFILL }},
{ &hf_lpp_kepAlmanacAF1,
{ "kepAlmanacAF1", "lpp.kepAlmanacAF1",
FT_INT32, BASE_CUSTOM, &lpp_kepAlmanacAF1_fmt, 0,
- "INTEGER_M1024_1023", HFILL }},
+ "INTEGER_M4096_4095", HFILL }},
{ &hf_lpp_navAlmE,
{ "navAlmE", "lpp.navAlmE",
FT_UINT32, BASE_CUSTOM, &lpp_navAlmE_fmt, 0,
@@ -13006,6 +14241,50 @@ void proto_register_lpp(void) {
{ "sbasAlmTo", "lpp.sbasAlmTo",
FT_UINT32, BASE_CUSTOM, &lpp_sbasAlmTo_fmt, 0,
"INTEGER_0_2047", HFILL }},
+ { &hf_lpp_bdsAlmToa_r12,
+ { "bdsAlmToa-r12", "lpp.bdsAlmToa_r12",
+ FT_UINT32, BASE_CUSTOM, &lpp_bdsAlmToa_r12_fmt, 0,
+ "INTEGER_0_255", HFILL }},
+ { &hf_lpp_bdsAlmSqrtA_r12,
+ { "bdsAlmSqrtA-r12", "lpp.bdsAlmSqrtA_r12",
+ FT_UINT32, BASE_CUSTOM, &lpp_bdsAlmSqrtA_r12_fmt, 0,
+ "INTEGER_0_16777215", HFILL }},
+ { &hf_lpp_bdsAlmE_r12,
+ { "bdsAlmE-r12", "lpp.bdsAlmE_r12",
+ FT_UINT32, BASE_CUSTOM, &lpp_bdsAlmE_r12_fmt, 0,
+ "INTEGER_0_131071", HFILL }},
+ { &hf_lpp_bdsAlmW_r12,
+ { "bdsAlmW-r12", "lpp.bdsAlmW_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsAlmW_M0_Omega0_r12_fmt, 0,
+ "INTEGER_M8388608_8388607", HFILL }},
+ { &hf_lpp_bdsAlmM0_r12,
+ { "bdsAlmM0-r12", "lpp.bdsAlmM0_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsAlmW_M0_Omega0_r12_fmt, 0,
+ "INTEGER_M8388608_8388607", HFILL }},
+ { &hf_lpp_bdsAlmOmega0_r12,
+ { "bdsAlmOmega0-r12", "lpp.bdsAlmOmega0_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsAlmW_M0_Omega0_r12_fmt, 0,
+ "INTEGER_M8388608_8388607", HFILL }},
+ { &hf_lpp_bdsAlmOmegaDot_r12,
+ { "bdsAlmOmegaDot-r12", "lpp.bdsAlmOmegaDot_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsAlmOmegaDot_r12_fmt, 0,
+ "INTEGER_M65536_65535", HFILL }},
+ { &hf_lpp_bdsAlmDeltaI_r12,
+ { "bdsAlmDeltaI-r12", "lpp.bdsAlmDeltaI_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsAlmDeltaI_r12_fmt, 0,
+ "INTEGER_M32768_32767", HFILL }},
+ { &hf_lpp_bdsAlmA0_r12,
+ { "bdsAlmA0-r12", "lpp.bdsAlmA0_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsAlmA0_r12_fmt, 0,
+ "INTEGER_M1024_1023", HFILL }},
+ { &hf_lpp_bdsAlmA1_r12,
+ { "bdsAlmA1-r12", "lpp.bdsAlmA1_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bdsAlmA1_r12_fmt, 0,
+ "INTEGER_M1024_1023", HFILL }},
+ { &hf_lpp_bdsSvHealth_r12,
+ { "bdsSvHealth-r12", "lpp.bdsSvHealth_r12",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_lpp_utcModel1,
{ "utcModel1", "lpp.utcModel1_element",
FT_NONE, BASE_NONE, NULL, 0,
@@ -13022,6 +14301,10 @@ void proto_register_lpp(void) {
{ "utcModel4", "lpp.utcModel4_element",
FT_NONE, BASE_NONE, NULL, 0,
"UTC_ModelSet4", HFILL }},
+ { &hf_lpp_utcModel5_r12,
+ { "utcModel5-r12", "lpp.utcModel5_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UTC_ModelSet5_r12", HFILL }},
{ &hf_lpp_gnss_Utc_A1,
{ "gnss-Utc-A1", "lpp.gnss_Utc_A1",
FT_INT32, BASE_CUSTOM, &lpp_gnss_Utc_A1_fmt, 0,
@@ -13146,6 +14429,30 @@ void proto_register_lpp(void) {
{ "utcStandardID", "lpp.utcStandardID",
FT_UINT8, BASE_DEC, VALS(lpp_utcStandardID_vals), 0,
"INTEGER_0_7", HFILL }},
+ { &hf_lpp_utcA0_r12,
+ { "utcA0-r12", "lpp.utcA0_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_gnss_Utc_A0_fmt, 0,
+ "INTEGER_M2147483648_2147483647", HFILL }},
+ { &hf_lpp_utcA1_r12,
+ { "utcA1-r12", "lpp.utcA1_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_gnss_Utc_A1_fmt, 0,
+ "INTEGER_M8388608_8388607", HFILL }},
+ { &hf_lpp_utcDeltaTls_r12,
+ { "utcDeltaTls-r12", "lpp.utcDeltaTls_r12",
+ FT_INT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_utcWNlsf_r12,
+ { "utcWNlsf-r12", "lpp.utcWNlsf_r12",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_utcDN_r12,
+ { "utcDN-r12", "lpp.utcDN_r12",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_utcDeltaTlsf_r12,
+ { "utcDeltaTlsf-r12", "lpp.utcDeltaTlsf_r12",
+ FT_INT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
{ &hf_lpp_gnss_ID_GPS,
{ "gnss-ID-GPS", "lpp.gnss_ID_GPS",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -13170,6 +14477,62 @@ void proto_register_lpp(void) {
{ "channelNumber", "lpp.channelNumber",
FT_INT32, BASE_DEC, NULL, 0,
"INTEGER_M7_13", HFILL }},
+ { &hf_lpp_dbds_RefTime_r12,
+ { "dbds-RefTime-r12", "lpp.dbds_RefTime_r12",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_bds_SgnTypeList_r12,
+ { "bds-SgnTypeList-r12", "lpp.bds_SgnTypeList_r12",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_BDS_SgnTypeList_r12_item,
+ { "BDS-SgnTypeElement-r12", "lpp.BDS_SgnTypeElement_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_dbds_CorrectionList_r12,
+ { "dbds-CorrectionList-r12", "lpp.dbds_CorrectionList_r12",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_DBDS_CorrectionList_r12_item,
+ { "DBDS-CorrectionElement-r12", "lpp.DBDS_CorrectionElement_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_bds_UDREI_r12,
+ { "bds-UDREI-r12", "lpp.bds_UDREI_r12",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &lpp_bds_UDREI_vals_ext, 0,
+ "INTEGER_0_15", HFILL }},
+ { &hf_lpp_bds_RURAI_r12,
+ { "bds-RURAI-r12", "lpp.bds_RURAI_r12",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &lpp_bds_RURAI_vals_ext, 0,
+ "INTEGER_0_15", HFILL }},
+ { &hf_lpp_bds_ECC_DeltaT_r12,
+ { "bds-ECC-DeltaT-r12", "lpp.bds_ECC_DeltaT_r12",
+ FT_INT32, BASE_CUSTOM, &lpp_bds_ECC_DeltaT_r12_fmt, 0,
+ "INTEGER_M4096_4095", HFILL }},
+ { &hf_lpp_bds_RefTime_r12,
+ { "bds-RefTime-r12", "lpp.bds_RefTime_r12",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_gridIonList_r12,
+ { "gridIonList-r12", "lpp.gridIonList_r12",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_GridIonList_r12_item,
+ { "GridIonElement-r12", "lpp.GridIonElement_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_igp_ID_r12,
+ { "igp-ID-r12", "lpp.igp_ID_r12",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_320", HFILL }},
+ { &hf_lpp_dt_r12,
+ { "dt-r12", "lpp.dt_r12",
+ FT_UINT32, BASE_CUSTOM, &lpp_bds_GridIonElement_dt_r12_fmt, 0,
+ "INTEGER_0_511", HFILL }},
+ { &hf_lpp_givei_r12,
+ { "givei-r12", "lpp.givei_r12",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &lpp_bds_givei_vals_ext, 0,
+ "INTEGER_0_15", HFILL }},
{ &hf_lpp_gnss_CommonAssistDataReq,
{ "gnss-CommonAssistDataReq", "lpp.gnss_CommonAssistDataReq_element",
FT_NONE, BASE_NONE, NULL, 0,
@@ -13234,6 +14597,14 @@ void proto_register_lpp(void) {
{ "gnss-AuxiliaryInformationReq", "lpp.gnss_AuxiliaryInformationReq_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_lpp_bds_DifferentialCorrectionsReq_r12,
+ { "bds-DifferentialCorrectionsReq-r12", "lpp.bds_DifferentialCorrectionsReq_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_bds_GridModelReq_r12,
+ { "bds-GridModelReq-r12", "lpp.bds_GridModelReq_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_lpp_gnss_TimeReqPrefList,
{ "gnss-TimeReqPrefList", "lpp.gnss_TimeReqPrefList",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -13654,6 +15025,14 @@ void proto_register_lpp(void) {
{ "gnss-AuxiliaryInformationSupport", "lpp.gnss_AuxiliaryInformationSupport_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_lpp_bds_DifferentialCorrectionsSupport_r12,
+ { "bds-DifferentialCorrectionsSupport-r12", "lpp.bds_DifferentialCorrectionsSupport_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_lpp_bds_GridModelSupport_r12,
+ { "bds-GridModelSupport-r12", "lpp.bds_GridModelSupport_r12_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_lpp_gnssSignalIDs,
{ "gnssSignalIDs", "lpp.gnssSignalIDs_element",
FT_NONE, BASE_NONE, NULL, 0,
@@ -13886,6 +15265,10 @@ void proto_register_lpp(void) {
{ "model-5", "lpp.model-5",
FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }},
+ { &hf_lpp_T_clockModel_model_6,
+ { "model-6", "lpp.model-6",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }},
{ &hf_lpp_T_orbitModel_model_1,
{ "model-1", "lpp.model-1",
FT_BOOLEAN, 8, NULL, 0x80,
@@ -13906,6 +15289,10 @@ void proto_register_lpp(void) {
{ "model-5", "lpp.model-5",
FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }},
+ { &hf_lpp_T_orbitModel_model_6,
+ { "model-6", "lpp.model-6",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }},
{ &hf_lpp_T_almanacModel_model_1,
{ "model-1", "lpp.model-1",
FT_BOOLEAN, 8, NULL, 0x80,
@@ -13930,6 +15317,10 @@ void proto_register_lpp(void) {
{ "model-6", "lpp.model-6",
FT_BOOLEAN, 8, NULL, 0x04,
NULL, HFILL }},
+ { &hf_lpp_T_almanacModel_model_7,
+ { "model-7", "lpp.model-7",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }},
{ &hf_lpp_T_utc_Model_model_1,
{ "model-1", "lpp.model-1",
FT_BOOLEAN, 8, NULL, 0x80,
@@ -13946,6 +15337,10 @@ void proto_register_lpp(void) {
{ "model-4", "lpp.model-4",
FT_BOOLEAN, 8, NULL, 0x10,
NULL, HFILL }},
+ { &hf_lpp_T_utc_Model_model_5,
+ { "model-5", "lpp.model-5",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ NULL, HFILL }},
{ &hf_lpp_T_gnss_ids_gps,
{ "gps", "lpp.gps",
FT_BOOLEAN, 8, NULL, 0x80,
@@ -13966,6 +15361,10 @@ void proto_register_lpp(void) {
{ "glonass", "lpp.glonass",
FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }},
+ { &hf_lpp_T_gnss_ids_bds,
+ { "bds", "lpp.bds",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }},
{ &hf_lpp_T_sbas_IDs_waas,
{ "waas", "lpp.waas",
FT_BOOLEAN, 8, NULL, 0x80,
@@ -14008,13 +15407,53 @@ void proto_register_lpp(void) {
NULL, HFILL }},
/*--- End of included file: packet-lpp-hfarr.c ---*/
-#line 1365 "../../asn1/lpp/packet-lpp-template.c"
+#line 1649 "../../asn1/lpp/packet-lpp-template.c"
+ { &hf_lpp_svHealthExt_v12xy_e5bhs,
+ { "E5b Signal Health Status", "lpp.svHealthExt_v12xy.e5bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_svHealthExt_v12xy_e1_bhs,
+ { "E1-B Signal Health Status", "lpp.svHealthExt_v12xy.e1_bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_kepSV_StatusINAV_e5bhs,
+ { "E5b Signal Health Status", "lpp.kepSV_StatusINAV.e5bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_kepSV_StatusINAV_e1_bhs,
+ { "E1-B Signal Health Status", "lpp.kepSV_StatusINAV.e1_bhs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_kepSV_StatusFNAV_e5ahs,
+ { "E5a Signal Health Status", "lpp.kepSV_StatusFNAV.e5ahs",
+ FT_UINT8, BASE_DEC, VALS(lpp_signal_health_status_vals), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_sat_clock,
+ { "Satellite Clock", "lpp.bdsSvHealth_r12.sat_clock",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_ok_error), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_b1i,
+ { "B1I Signal", "lpp.bdsSvHealth_r12.b1i",
+ FT_BOOLEAN, BASE_NONE, TFS(&lpp_bdsSvHealth_r12_b1i_b2i_value), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_b2i,
+ { "B2I Signal", "lpp.bdsSvHealth_r12.b2i",
+ FT_BOOLEAN, BASE_NONE, TFS(&lpp_bdsSvHealth_r12_b1i_b2i_value), 0,
+ NULL, HFILL }},
+ { &hf_lpp_bdsSvHealth_r12_nav,
+ { "NAV Message", "lpp.bdsSvHealth_r12.nav",
+ FT_BOOLEAN, BASE_NONE, TFS(&lpp_bdsSvHealth_r12_nav_value), 0,
+ NULL, HFILL }}
};
/* List of subtrees */
static gint *ett[] = {
&ett_lpp,
&ett_lpp_bitmap,
+ &ett_lpp_svHealthExt_v12xy,
+ &ett_kepSV_StatusINAV,
+ &ett_kepSV_StatusFNAV,
+ &ett_lpp_bdsSvHealth_r12,
/*--- Included file: packet-lpp-ettarr.c ---*/
#line 1 "../../asn1/lpp/packet-lpp-ettarr.c"
@@ -14177,6 +15616,7 @@ void proto_register_lpp(void) {
&ett_lpp_CNAV_ClockModel,
&ett_lpp_GLONASS_ClockModel,
&ett_lpp_SBAS_ClockModel,
+ &ett_lpp_BDS_ClockModel_r12,
&ett_lpp_NavModelKeplerianSet,
&ett_lpp_NavModelNAV_KeplerianSet,
&ett_lpp_T_addNAVparam,
@@ -14184,6 +15624,7 @@ void proto_register_lpp(void) {
&ett_lpp_NavModelCNAV_KeplerianSet,
&ett_lpp_NavModel_GLONASS_ECEF,
&ett_lpp_NavModel_SBAS_ECEF,
+ &ett_lpp_NavModel_BDS_KeplerianSet_r12,
&ett_lpp_GNSS_RealTimeIntegrity,
&ett_lpp_GNSS_BadSignalList,
&ett_lpp_BadSignalElement,
@@ -14204,16 +15645,26 @@ void proto_register_lpp(void) {
&ett_lpp_AlmanacMidiAlmanacSet,
&ett_lpp_AlmanacGLONASS_AlmanacSet,
&ett_lpp_AlmanacECEF_SBAS_AlmanacSet,
+ &ett_lpp_AlmanacBDS_AlmanacSet_r12,
&ett_lpp_GNSS_UTC_Model,
&ett_lpp_UTC_ModelSet1,
&ett_lpp_UTC_ModelSet2,
&ett_lpp_UTC_ModelSet3,
&ett_lpp_UTC_ModelSet4,
+ &ett_lpp_UTC_ModelSet5_r12,
&ett_lpp_GNSS_AuxiliaryInformation,
&ett_lpp_GNSS_ID_GPS,
&ett_lpp_GNSS_ID_GPS_SatElement,
&ett_lpp_GNSS_ID_GLONASS,
&ett_lpp_GNSS_ID_GLONASS_SatElement,
+ &ett_lpp_BDS_DifferentialCorrections_r12,
+ &ett_lpp_BDS_SgnTypeList_r12,
+ &ett_lpp_BDS_SgnTypeElement_r12,
+ &ett_lpp_DBDS_CorrectionList_r12,
+ &ett_lpp_DBDS_CorrectionElement_r12,
+ &ett_lpp_BDS_GridModelParameter_r12,
+ &ett_lpp_GridIonList_r12,
+ &ett_lpp_GridIonElement_r12,
&ett_lpp_A_GNSS_RequestAssistanceData,
&ett_lpp_GNSS_CommonAssistDataReq,
&ett_lpp_GNSS_GenericAssistDataReq,
@@ -14241,6 +15692,8 @@ void proto_register_lpp(void) {
&ett_lpp_GNSS_AlmanacReq,
&ett_lpp_GNSS_UTC_ModelReq,
&ett_lpp_GNSS_AuxiliaryInformationReq,
+ &ett_lpp_BDS_DifferentialCorrectionsReq_r12,
+ &ett_lpp_BDS_GridModelReq_r12,
&ett_lpp_A_GNSS_ProvideLocationInformation,
&ett_lpp_GNSS_SignalMeasurementInformation,
&ett_lpp_MeasurementReferenceTime,
@@ -14287,6 +15740,8 @@ void proto_register_lpp(void) {
&ett_lpp_GNSS_UTC_ModelSupport,
&ett_lpp_T_utc_Model,
&ett_lpp_GNSS_AuxiliaryInformationSupport,
+ &ett_lpp_BDS_DifferentialCorrectionsSupport_r12,
+ &ett_lpp_BDS_GridModelSupport_r12,
&ett_lpp_A_GNSS_RequestCapabilities,
&ett_lpp_A_GNSS_Error,
&ett_lpp_GNSS_LocationServerErrorCauses,
@@ -14314,7 +15769,7 @@ void proto_register_lpp(void) {
&ett_lpp_ECID_TargetDeviceErrorCauses,
/*--- End of included file: packet-lpp-ettarr.c ---*/
-#line 1372 "../../asn1/lpp/packet-lpp-template.c"
+#line 1696 "../../asn1/lpp/packet-lpp-template.c"
};
diff --git a/epan/dissectors/packet-lpp.h b/epan/dissectors/packet-lpp.h
index 5db541d90e..8cf6ff7d78 100644
--- a/epan/dissectors/packet-lpp.h
+++ b/epan/dissectors/packet-lpp.h
@@ -8,7 +8,7 @@
#line 1 "../../asn1/lpp/packet-lpp-template.h"
/* packet-lpp.h
* Routines for 3GPP LTE Positioning Protocol (LLP) packet dissection
- * Copyright 2011, Pascal Quantin <pascal.quantin@gmail.com>
+ * Copyright 2011-2015 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 11.6.0 Release 11
+ * Ref 3GPP TS 36.355 version 12.3.0 Release 12
* http://www.3gpp.org
*/