diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2015-02-04 22:35:24 +0100 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2015-02-04 22:47:34 +0000 |
commit | 86d24b0486014136137c98e2bb9d1651d01c8606 (patch) | |
tree | 9bc1818c5e1bc8b2d76b2d8185b1ca60a73dc801 /epan | |
parent | 40d06bd6ea1d6a00f0306610f0ec415eb0aa245b (diff) |
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>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-lpp.c | 2085 | ||||
-rw-r--r-- | epan/dissectors/packet-lpp.h | 4 |
2 files changed, 1772 insertions, 317 deletions
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, ¬ificationOfLeapSecond_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 */ |