From b4bec520b5680e57b91aaed737356f6322e215b1 Mon Sep 17 00:00:00 2001 From: Soeren Schoenbrod Date: Thu, 18 Jun 2026 14:58:34 +0000 Subject: [PATCH 1/3] feat!: migrate to Tracking 2 (GNSSSignals 2, GNSSDecoder 1.3) Bump GNSSSignals to 2, GNSSDecoder to 1.3 and Tracking to 2, and adapt the package to the GNSSSignals 2 API (AbstractGNSS -> AbstractGNSSSignal, GPSL1 -> GPSL1CA). Tracking is made a weak dependency: the SatelliteState convenience constructor that converts a Tracking sat state now lives in a package extension (PositionVelocityTimeTrackingExt), so the core package no longer pulls in Tracking. The extension binds to TrackedSat (Tracking 2) or SatState (Tracking <= 1) via isdefined. Tracking is added to the test target and a test exercises the extension. The GNSSDecoder test fixtures are converted from positional to keyword constructors so they survive GNSSDecoder's struct-field growth. BREAKING CHANGE: drops support for GNSSSignals 1 and Tracking 1; the core API now requires the v2 ecosystem. Co-Authored-By: Claude Opus 4.8 --- Project.toml | 16 +- ext/PositionVelocityTimeTrackingExt.jl | 27 + src/PositionVelocityTime.jl | 27 +- test/get_week.jl | 4 +- test/pvt.jl | 1988 ++++++++++++------------ test/runtests.jl | 3 +- test/tracking_ext.jl | 22 + 7 files changed, 1065 insertions(+), 1022 deletions(-) create mode 100644 ext/PositionVelocityTimeTrackingExt.jl create mode 100644 test/tracking_ext.jl diff --git a/Project.toml b/Project.toml index 881f9d7..39a493a 100755 --- a/Project.toml +++ b/Project.toml @@ -15,9 +15,14 @@ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" LsqFit = "2fda8390-95c7-5789-9bda-21331edee243" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -Tracking = "10b2438b-ffd4-5096-aa58-44041d5c8f3b" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" +[weakdeps] +Tracking = "10b2438b-ffd4-5096-aa58-44041d5c8f3b" + +[extensions] +PositionVelocityTimeTrackingExt = "Tracking" + [compat] Aqua = "0.8" AstroTime = "0.7" @@ -25,15 +30,15 @@ BitIntegers = "0.2.6, 0.3.5" CoordinateTransformations = "0.6" Dates = "1" DocStringExtensions = "0.6, 0.7, 0.8, 0.9" -GNSSDecoder = "0.1.5, 0.2, 1" -GNSSSignals = "0.17, 1" +GNSSDecoder = "1.3" +GNSSSignals = "2" Geodesy = "0.5, 1.0" LinearAlgebra = "1" LsqFit = "0.12, 0.13, 0.14, 0.15" StaticArrays = "1" Statistics = "1" Test = "1" -Tracking = "0.17.1, 0.18, 1" +Tracking = "2" Unitful = "1" julia = "1.10" @@ -41,6 +46,7 @@ julia = "1.10" Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" BitIntegers = "c3b6d118-76ef-56ca-8cc7-ebb389d030a1" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +Tracking = "10b2438b-ffd4-5096-aa58-44041d5c8f3b" [targets] -test = ["Test", "BitIntegers", "Aqua"] +test = ["Test", "BitIntegers", "Aqua", "Tracking"] diff --git a/ext/PositionVelocityTimeTrackingExt.jl b/ext/PositionVelocityTimeTrackingExt.jl new file mode 100644 index 0000000..13eec5b --- /dev/null +++ b/ext/PositionVelocityTimeTrackingExt.jl @@ -0,0 +1,27 @@ +module PositionVelocityTimeTrackingExt + +using PositionVelocityTime: PositionVelocityTime, SatelliteState +using GNSSDecoder: GNSSDecoderState +using GNSSSignals: AbstractGNSSSignal +using Tracking: Tracking, get_code_phase, get_carrier_doppler, get_carrier_phase + +# The name of the per-satellite tracking state changed between Tracking major versions: +# `SatState` up to Tracking 1, `TrackedSat` from Tracking 2 on. Bind to whichever exists so +# the extension supports both. +const TrackingSatState = isdefined(Tracking, :TrackedSat) ? Tracking.TrackedSat : Tracking.SatState + +function PositionVelocityTime.SatelliteState( + decoder::GNSSDecoderState, + system::AbstractGNSSSignal, + sat_state::TrackingSatState, +) + SatelliteState( + decoder, + system, + get_code_phase(sat_state), + get_carrier_doppler(sat_state), + get_carrier_phase(sat_state), + ) +end + +end diff --git a/src/PositionVelocityTime.jl b/src/PositionVelocityTime.jl index 500fce7..39075d4 100755 --- a/src/PositionVelocityTime.jl +++ b/src/PositionVelocityTime.jl @@ -8,7 +8,6 @@ using CoordinateTransformations, AstroTime, LsqFit, StaticArrays, - Tracking, Unitful, Statistics, Dates @@ -33,25 +32,27 @@ export calc_pvt, get_frequency_offset """ - SatelliteState{CP<:Real,D<:GNSSDecoderState,S<:AbstractGNSS} + SatelliteState{CP<:Real,D<:GNSSDecoderState,S<:AbstractGNSSSignal} Combines the GNSS decoder state with code and carrier phase measurements for a single satellite. # Fields - `decoder::GNSSDecoderState`: GNSS decoder state containing decoded navigation data -- `system::AbstractGNSS`: GNSS system (e.g., `GPSL1()`, `GalileoE1B()`) +- `system::AbstractGNSSSignal`: GNSS system (e.g., `GPSL1CA()`, `GalileoE1B()`) - `code_phase::CP`: Code phase measurement - `carrier_doppler`: Carrier Doppler frequency in Hz - `carrier_phase::CP`: Carrier phase measurement (default: `0.0`) # Constructors SatelliteState(; decoder, system, code_phase, carrier_doppler, carrier_phase=0.0) - SatelliteState(decoder, system, sat_state::SatState) + SatelliteState(decoder, system, sat_state) The second constructor extracts code phase, carrier Doppler, and carrier phase from a -`Tracking.SatState`. +`Tracking` satellite state (`Tracking.SatState` for Tracking ≤ 1, `Tracking.TrackedSat` for +Tracking ≥ 2). It is provided by a package extension that is loaded automatically once +`Tracking` is available, so `Tracking` is only a weak dependency of this package. """ -@kwdef struct SatelliteState{CP<:Real,D<:GNSSDecoder.GNSSDecoderState,S<:AbstractGNSS} +@kwdef struct SatelliteState{CP<:Real,D<:GNSSDecoder.GNSSDecoderState,S<:AbstractGNSSSignal} decoder::D system::S code_phase::CP @@ -59,20 +60,6 @@ The second constructor extracts code phase, carrier Doppler, and carrier phase f carrier_phase::CP = 0.0 end -function SatelliteState( - decoder::GNSSDecoder.GNSSDecoderState, - system::AbstractGNSS, - sat_state::SatState, -) - SatelliteState( - decoder, - system, - get_code_phase(sat_state), - get_carrier_doppler(sat_state), - get_carrier_phase(sat_state), - ) -end - """ DOP diff --git a/test/get_week.jl b/test/get_week.jl index 1cba2ac..90ed448 100644 --- a/test/get_week.jl +++ b/test/get_week.jl @@ -1,12 +1,12 @@ using PositionVelocityTime: get_week using GNSSDecoder: GNSSDecoderState, GPSL1Data -using GNSSSignals: GPSL1, GalileoE1B +using GNSSSignals: GPSL1CA, GalileoE1B # Build a minimal GNSSDecoderState{GPSL1Data} with the given broadcast # 10-bit `trans_week`. `get_week` only reads `decoder.data.trans_week` # so the rest of the state can stay at its default zero values. function decoder_with_trans_week(trans_week) - base = GNSSDecoderState(GPSL1(), 1) + base = GNSSDecoderState(GPSL1CA(), 1) GNSSDecoderState(base; data = GPSL1Data(base.data; trans_week)) end diff --git a/test/pvt.jl b/test/pvt.jl index 3c1388c..f66f90f 100644 --- a/test/pvt.jl +++ b/test/pvt.jl @@ -9,76 +9,76 @@ BitIntegers.@define_integers 320 uint288"0x4001ec23bff8485200005ec5ff7a895805f4d37fe877968040ae99fffd20b00d205dcf80", uint288"0xd2a6aec5828003d8477ff090a40000bd8bfef512b00be9a6ffd0ef2d00815d33fffa4160", GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 1.885093958164237, - 0.0002336719771847129, - 5440.601516723633, - 0.43151849653459906, - 0.9782668574498574, - 0.18081747042485646, - -3.6965825489294766e-10, - -5.353794435599309e-9, - 3.053341469642328e-9, - 1.9334256649017334e-6, - 8.616596460342407e-6, - 163.65625, - 40.46875, - -4.284083843231201e-8, - 7.264316082000732e-8, - 132000.0, - 0.00022286397870630026, - 2.5721647034515627e-12, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -1.6298145055770874e-9, - -2.0954757928848267e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 1.885093958164237, + e = 0.0002336719771847129, + sqrt_A = 5440.601516723633, + Ω_0 = 0.43151849653459906, + i_0 = 0.9782668574498574, + ω = 0.18081747042485646, + i_dot = -3.6965825489294766e-10, + Ω_dot = -5.353794435599309e-9, + Δn = 3.053341469642328e-9, + C_uc = 1.9334256649017334e-6, + C_us = 8.616596460342407e-6, + C_rc = 163.65625, + C_rs = 40.46875, + C_ic = -4.284083843231201e-8, + C_is = 7.264316082000732e-8, + t_0c = 132000.0, + a_f0 = 0.00022286397870630026, + a_f1 = 2.5721647034515627e-12, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -1.6298145055770874e-9, + broadcast_group_delay_e1_e5b = -2.0954757928848267e-9, ), GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 1.885093958164237, - 0.0002336719771847129, - 5440.601516723633, - 0.43151849653459906, - 0.9782668574498574, - 0.18081747042485646, - -3.6965825489294766e-10, - -5.353794435599309e-9, - 3.053341469642328e-9, - 1.9334256649017334e-6, - 8.616596460342407e-6, - 163.65625, - 40.46875, - -4.284083843231201e-8, - 7.264316082000732e-8, - 132000.0, - 0.00022286397870630026, - 2.5721647034515627e-12, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -1.6298145055770874e-9, - -2.0954757928848267e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 1.885093958164237, + e = 0.0002336719771847129, + sqrt_A = 5440.601516723633, + Ω_0 = 0.43151849653459906, + i_0 = 0.9782668574498574, + ω = 0.18081747042485646, + i_dot = -3.6965825489294766e-10, + Ω_dot = -5.353794435599309e-9, + Δn = 3.053341469642328e-9, + C_uc = 1.9334256649017334e-6, + C_us = 8.616596460342407e-6, + C_rc = 163.65625, + C_rs = 40.46875, + C_ic = -4.284083843231201e-8, + C_is = 7.264316082000732e-8, + t_0c = 132000.0, + a_f0 = 0.00022286397870630026, + a_f1 = 2.5721647034515627e-12, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -1.6298145055770874e-9, + broadcast_group_delay_e1_e5b = -2.0954757928848267e-9, ), GNSSDecoder.GalileoE1BConstants( 250, @@ -90,7 +90,7 @@ BitIntegers.@define_integers 320 3.986004418e14, -4.442807309e-10, ), - GNSSDecoder.GalileoE1BCache(0x00000c5cffc5722165040e1212147505), + GNSSDecoder.GalileoE1BCache(), 49, 1549, false, @@ -106,76 +106,76 @@ BitIntegers.@define_integers 320 uint288"0xc3ffc21fe800f025ffffeba64010c2fcff43fd5002fd6eaff7f228c000c1e9fe5bc6460f", uint288"0xd158f0c583c003de017ff0fda00001459bfef3d0300bc02affd029150080dd73fff3e160", GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 128400.0, - 1.1883716376830096, - 0.0003440612927079201, - 5440.625782012939, - -1.666444269041331, - 0.9544851798532423, - -1.401875745066068, - 4.318037006430664e-10, - -5.442726711414135e-9, - 3.016554223020131e-9, - -2.2649765014648438e-6, - 9.763985872268677e-6, - 128.46875, - -51.40625, - 5.029141902923584e-8, - -2.2351741790771484e-8, - 128400.0, - -0.0007824758649803698, - -8.01492205937393e-12, - 0.0, - 0x0000000000000056, - 0x0000000000000056, - 0x0000000000000056, - 0x0000000000000056, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -3.026798367500305e-9, - -3.4924596548080444e-9, + WN = 1136, + TOW = 132769, + t_0e = 128400.0, + M_0 = 1.1883716376830096, + e = 0.0003440612927079201, + sqrt_A = 5440.625782012939, + Ω_0 = -1.666444269041331, + i_0 = 0.9544851798532423, + ω = -1.401875745066068, + i_dot = 4.318037006430664e-10, + Ω_dot = -5.442726711414135e-9, + Δn = 3.016554223020131e-9, + C_uc = -2.2649765014648438e-6, + C_us = 9.763985872268677e-6, + C_rc = 128.46875, + C_rs = -51.40625, + C_ic = 5.029141902923584e-8, + C_is = -2.2351741790771484e-8, + t_0c = 128400.0, + a_f0 = -0.0007824758649803698, + a_f1 = -8.01492205937393e-12, + a_f2 = 0.0, + IOD_nav1 = 0x0000000000000056, + IOD_nav2 = 0x0000000000000056, + IOD_nav3 = 0x0000000000000056, + IOD_nav4 = 0x0000000000000056, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -3.026798367500305e-9, + broadcast_group_delay_e1_e5b = -3.4924596548080444e-9, ), GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 128400.0, - 1.1883716376830096, - 0.0003440612927079201, - 5440.625782012939, - -1.666444269041331, - 0.9544851798532423, - -1.401875745066068, - 4.318037006430664e-10, - -5.442726711414135e-9, - 3.016554223020131e-9, - -2.2649765014648438e-6, - 9.763985872268677e-6, - 128.46875, - -51.40625, - 5.029141902923584e-8, - -2.2351741790771484e-8, - 128400.0, - -0.0007824758649803698, - -8.01492205937393e-12, - 0.0, - 0x0000000000000056, - 0x0000000000000056, - 0x0000000000000056, - 0x0000000000000056, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -3.026798367500305e-9, - -3.4924596548080444e-9, + WN = 1136, + TOW = 132769, + t_0e = 128400.0, + M_0 = 1.1883716376830096, + e = 0.0003440612927079201, + sqrt_A = 5440.625782012939, + Ω_0 = -1.666444269041331, + i_0 = 0.9544851798532423, + ω = -1.401875745066068, + i_dot = 4.318037006430664e-10, + Ω_dot = -5.442726711414135e-9, + Δn = 3.016554223020131e-9, + C_uc = -2.2649765014648438e-6, + C_us = 9.763985872268677e-6, + C_rc = 128.46875, + C_rs = -51.40625, + C_ic = 5.029141902923584e-8, + C_is = -2.2351741790771484e-8, + t_0c = 128400.0, + a_f0 = -0.0007824758649803698, + a_f1 = -8.01492205937393e-12, + a_f2 = 0.0, + IOD_nav1 = 0x0000000000000056, + IOD_nav2 = 0x0000000000000056, + IOD_nav3 = 0x0000000000000056, + IOD_nav4 = 0x0000000000000056, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -3.026798367500305e-9, + broadcast_group_delay_e1_e5b = -3.4924596548080444e-9, ), GNSSDecoder.GalileoE1BConstants( 250, @@ -187,7 +187,7 @@ BitIntegers.@define_integers 320 3.986004418e14, -4.442807309e-10, ), - GNSSDecoder.GalileoE1BCache(0x00000c56ffc47920fefb40147a100ff9), + GNSSDecoder.GalileoE1BCache(), 46, 1546, true, @@ -203,76 +203,76 @@ BitIntegers.@define_integers 320 uint288"0x8007b086ffe1b77000036397fde280e017a75dffa08a320100aa47ffeec2c03481373e00", uint288"0xd4878bc5834003d8437ff0dbb80001b1cbfef140700bd3aeffd0451900805523fff76160", GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 0.7593379982069668, - 0.0005043556448072195, - 5440.614900588989, - 2.515118401165434, - 0.9919634586882758, - 0.7810709950849496, - -1.821504444400032e-11, - -5.659164298336962e-9, - 2.699398155054008e-9, - 6.221234798431396e-7, - 2.125278115272522e-6, - 311.3125, - 12.25, - -2.9802322387695312e-8, - 5.4016709327697754e-8, - 132000.0, - 0.005911215674132109, - -4.936850928061176e-11, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -1.3271346688270569e-8, - -1.4435499906539917e-8, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 0.7593379982069668, + e = 0.0005043556448072195, + sqrt_A = 5440.614900588989, + Ω_0 = 2.515118401165434, + i_0 = 0.9919634586882758, + ω = 0.7810709950849496, + i_dot = -1.821504444400032e-11, + Ω_dot = -5.659164298336962e-9, + Δn = 2.699398155054008e-9, + C_uc = 6.221234798431396e-7, + C_us = 2.125278115272522e-6, + C_rc = 311.3125, + C_rs = 12.25, + C_ic = -2.9802322387695312e-8, + C_is = 5.4016709327697754e-8, + t_0c = 132000.0, + a_f0 = 0.005911215674132109, + a_f1 = -4.936850928061176e-11, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -1.3271346688270569e-8, + broadcast_group_delay_e1_e5b = -1.4435499906539917e-8, ), GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 0.7593379982069668, - 0.0005043556448072195, - 5440.614900588989, - 2.515118401165434, - 0.9919634586882758, - 0.7810709950849496, - -1.821504444400032e-11, - -5.659164298336962e-9, - 2.699398155054008e-9, - 6.221234798431396e-7, - 2.125278115272522e-6, - 311.3125, - 12.25, - -2.9802322387695312e-8, - 5.4016709327697754e-8, - 132000.0, - 0.005911215674132109, - -4.936850928061176e-11, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -1.3271346688270569e-8, - -1.4435499906539917e-8, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 0.7593379982069668, + e = 0.0005043556448072195, + sqrt_A = 5440.614900588989, + Ω_0 = 2.515118401165434, + i_0 = 0.9919634586882758, + ω = 0.7810709950849496, + i_dot = -1.821504444400032e-11, + Ω_dot = -5.659164298336962e-9, + Δn = 2.699398155054008e-9, + C_uc = 6.221234798431396e-7, + C_us = 2.125278115272522e-6, + C_rc = 311.3125, + C_rs = 12.25, + C_ic = -2.9802322387695312e-8, + C_is = 5.4016709327697754e-8, + t_0c = 132000.0, + a_f0 = 0.005911215674132109, + a_f1 = -4.936850928061176e-11, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -1.3271346688270569e-8, + broadcast_group_delay_e1_e5b = -1.4435499906539917e-8, ), GNSSDecoder.GalileoE1BConstants( 250, @@ -284,7 +284,7 @@ BitIntegers.@define_integers 320 3.986004418e14, -4.442807309e-10, ), - GNSSDecoder.GalileoE1BCache(0x00000c5cffc21b1d86014e047526ea01), + GNSSDecoder.GalileoE1BCache(), 51, 1551, false, @@ -300,76 +300,76 @@ BitIntegers.@define_integers 320 uint288"0x7fff0d5ea003cad0ffffe78900422343fd0b07400be9b7bfdf65a700010ba7f96fe9183f", uint288"0xd1dbd245820003ca857ff0d4bc000061dbfef772f00bd3e2ffd0592100826963fffbd160", GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - -2.0355462626837646, - 0.00014415336772799492, - 5440.611436843872, - 0.42869178039052547, - 0.9778386598651378, - -1.4136735049701232, - -3.982308736286344e-10, - -5.379866950195624e-9, - 3.036555056135112e-9, - 1.9241124391555786e-6, - 8.305534720420837e-6, - 172.59375, - 40.625, - -7.450580596923828e-8, - 3.3527612686157227e-8, - 132000.0, - -0.000535494415089488, - -1.2221335055073723e-12, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - 3.4924596548080444e-9, - 3.958120942115784e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = -2.0355462626837646, + e = 0.00014415336772799492, + sqrt_A = 5440.611436843872, + Ω_0 = 0.42869178039052547, + i_0 = 0.9778386598651378, + ω = -1.4136735049701232, + i_dot = -3.982308736286344e-10, + Ω_dot = -5.379866950195624e-9, + Δn = 3.036555056135112e-9, + C_uc = 1.9241124391555786e-6, + C_us = 8.305534720420837e-6, + C_rc = 172.59375, + C_rs = 40.625, + C_ic = -7.450580596923828e-8, + C_is = 3.3527612686157227e-8, + t_0c = 132000.0, + a_f0 = -0.000535494415089488, + a_f1 = -1.2221335055073723e-12, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = 3.4924596548080444e-9, + broadcast_group_delay_e1_e5b = 3.958120942115784e-9, ), GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - -2.0355462626837646, - 0.00014415336772799492, - 5440.611436843872, - 0.42869178039052547, - 0.9778386598651378, - -1.4136735049701232, - -3.982308736286344e-10, - -5.379866950195624e-9, - 3.036555056135112e-9, - 1.9241124391555786e-6, - 8.305534720420837e-6, - 172.59375, - 40.625, - -7.450580596923828e-8, - 3.3527612686157227e-8, - 132000.0, - -0.000535494415089488, - -1.2221335055073723e-12, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - 3.4924596548080444e-9, - 3.958120942115784e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = -2.0355462626837646, + e = 0.00014415336772799492, + sqrt_A = 5440.611436843872, + Ω_0 = 0.42869178039052547, + i_0 = 0.9778386598651378, + ω = -1.4136735049701232, + i_dot = -3.982308736286344e-10, + Ω_dot = -5.379866950195624e-9, + Δn = 3.036555056135112e-9, + C_uc = 1.9241124391555786e-6, + C_us = 8.305534720420837e-6, + C_rc = 172.59375, + C_rs = 40.625, + C_ic = -7.450580596923828e-8, + C_is = 3.3527612686157227e-8, + t_0c = 132000.0, + a_f0 = -0.000535494415089488, + a_f1 = -1.2221335055073723e-12, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = 3.4924596548080444e-9, + broadcast_group_delay_e1_e5b = 3.958120942115784e-9, ), GNSSDecoder.GalileoE1BConstants( 250, @@ -381,7 +381,7 @@ BitIntegers.@define_integers 320 3.986004418e14, -4.442807309e-10, ), - GNSSDecoder.GalileoE1BCache(0x00000c5cffc52921360409116b159305), + GNSSDecoder.GalileoE1BCache(), 48, 1548, true, @@ -397,76 +397,76 @@ BitIntegers.@define_integers 320 uint288"0xa7ff845f3001e40b7fffe54480215fd1fe85d2a005fd7cdfefff5b800197d3fcb7a08c1f", uint288"0xd3f0160582c003dd067ff0dfa40000d5dbfef501700bd16affd0141900800523fff34160", GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 0.43031807277213097, - 0.00031052413396537304, - 5440.595668792725, - 0.43339143836728705, - 0.9757531121479899, - 0.869054289656611, - -3.9465929628667357e-10, - -5.42129724736237e-9, - 3.102986394695584e-9, - 2.089887857437134e-6, - 8.553266525268555e-6, - 162.5, - 45.375, - 8.754432201385498e-8, - 8.195638656616211e-8, - 132000.0, - 0.002901351428590715, - -3.0667024475405924e-11, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - 1.6298145055770874e-9, - 1.6298145055770874e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 0.43031807277213097, + e = 0.00031052413396537304, + sqrt_A = 5440.595668792725, + Ω_0 = 0.43339143836728705, + i_0 = 0.9757531121479899, + ω = 0.869054289656611, + i_dot = -3.9465929628667357e-10, + Ω_dot = -5.42129724736237e-9, + Δn = 3.102986394695584e-9, + C_uc = 2.089887857437134e-6, + C_us = 8.553266525268555e-6, + C_rc = 162.5, + C_rs = 45.375, + C_ic = 8.754432201385498e-8, + C_is = 8.195638656616211e-8, + t_0c = 132000.0, + a_f0 = 0.002901351428590715, + a_f1 = -3.0667024475405924e-11, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = 1.6298145055770874e-9, + broadcast_group_delay_e1_e5b = 1.6298145055770874e-9, ), GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 0.43031807277213097, - 0.00031052413396537304, - 5440.595668792725, - 0.43339143836728705, - 0.9757531121479899, - 0.869054289656611, - -3.9465929628667357e-10, - -5.42129724736237e-9, - 3.102986394695584e-9, - 2.089887857437134e-6, - 8.553266525268555e-6, - 162.5, - 45.375, - 8.754432201385498e-8, - 8.195638656616211e-8, - 132000.0, - 0.002901351428590715, - -3.0667024475405924e-11, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - 1.6298145055770874e-9, - 1.6298145055770874e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 0.43031807277213097, + e = 0.00031052413396537304, + sqrt_A = 5440.595668792725, + Ω_0 = 0.43339143836728705, + i_0 = 0.9757531121479899, + ω = 0.869054289656611, + i_dot = -3.9465929628667357e-10, + Ω_dot = -5.42129724736237e-9, + Δn = 3.102986394695584e-9, + C_uc = 2.089887857437134e-6, + C_us = 8.553266525268555e-6, + C_rc = 162.5, + C_rs = 45.375, + C_ic = 8.754432201385498e-8, + C_is = 8.195638656616211e-8, + t_0c = 132000.0, + a_f0 = 0.002901351428590715, + a_f1 = -3.0667024475405924e-11, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = 1.6298145055770874e-9, + broadcast_group_delay_e1_e5b = 1.6298145055770874e-9, ), GNSSDecoder.GalileoE1BConstants( 250, @@ -478,7 +478,7 @@ BitIntegers.@define_integers 320 3.986004418e14, -4.442807309e-10, ), - GNSSDecoder.GalileoE1BCache(0x00000c5cffc4b521f0046211f0145005), + GNSSDecoder.GalileoE1BCache(), 47, 1547, true, @@ -508,7 +508,7 @@ BitIntegers.@define_integers 320 end @testset "PVT GPS L1 with frequency offset of $freq_offset" for freq_offset in (0.0Hz, 500Hz, -1000Hz) - gpsl1 = GPSL1() + gpsl1 = GPSL1CA() states = [ SatelliteState(; decoder = GNSSDecoderState( @@ -516,80 +516,80 @@ end uint320"0xe2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07090f36c308b01c020ace4d54", uint320"0x0048b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07090f36c308b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001000110", - false, - -1.1175870895385742e-8, - 136800, - 0.0, - 1.0231815394945443e-11, - 0.0001659449189901352, - "01000110", - 14.90625, - 4.9980653323400095e-9, - -1.5018856847786306, - 8.065253496170044e-7, - 0.014979799510911107, - 6.051734089851379e-6, - 5153.747692108154, - 136800, - false, - 31, - 3.110617399215698e-7, - -0.42148546787582664, - -5.21540641784668e-8, - 0.9517858648559379, - 250.375, - -2.331033772387461, - -8.050692486513945e-9, - "01000110", - 1.657211886669833e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001000110", + l2pcode = false, + T_GD = -1.1175870895385742e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 1.0231815394945443e-11, + a_f0 = 0.0001659449189901352, + IODE_Sub_2 = "01000110", + C_rs = 14.90625, + Δn = 4.9980653323400095e-9, + M_0 = -1.5018856847786306, + C_uc = 8.065253496170044e-7, + e = 0.014979799510911107, + C_us = 6.051734089851379e-6, + sqrt_A = 5153.747692108154, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 3.110617399215698e-7, + Ω_0 = -0.42148546787582664, + C_is = -5.21540641784668e-8, + i_0 = 0.9517858648559379, + C_rc = 250.375, + ω = -2.331033772387461, + Ω_dot = -8.050692486513945e-9, + IODE_Sub_3 = "01000110", + i_dot = 1.657211886669833e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001000110", - false, - -1.1175870895385742e-8, - 136800, - 0.0, - 1.0231815394945443e-11, - 0.0001659449189901352, - "01000110", - 14.90625, - 4.9980653323400095e-9, - -1.5018856847786306, - 8.065253496170044e-7, - 0.014979799510911107, - 6.051734089851379e-6, - 5153.747692108154, - 136800, - false, - 31, - 3.110617399215698e-7, - -0.42148546787582664, - -5.21540641784668e-8, - 0.9517858648559379, - 250.375, - -2.331033772387461, - -8.050692486513945e-9, - "01000110", - 1.657211886669833e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001000110", + l2pcode = false, + T_GD = -1.1175870895385742e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 1.0231815394945443e-11, + a_f0 = 0.0001659449189901352, + IODE_Sub_2 = "01000110", + C_rs = 14.90625, + Δn = 4.9980653323400095e-9, + M_0 = -1.5018856847786306, + C_uc = 8.065253496170044e-7, + e = 0.014979799510911107, + C_us = 6.051734089851379e-6, + sqrt_A = 5153.747692108154, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 3.110617399215698e-7, + Ω_0 = -0.42148546787582664, + C_is = -5.21540641784668e-8, + i_0 = 0.9517858648559379, + C_rc = 250.375, + ω = -2.331033772387461, + Ω_dot = -8.050692486513945e-9, + IODE_Sub_3 = "01000110", + i_dot = 1.657211886669833e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -618,80 +618,80 @@ end uint320"0xe2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07090f36c308b01c020ace4d54", uint320"0xaf88b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07090f36c308b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001100111", - false, - 5.122274160385132e-9, - 136800, - 0.0, - -1.4779288903810084e-12, - -2.3324042558670044e-5, - "01100111", - 84.21875, - 4.435899058715372e-9, - 1.3315461632138303, - 4.639849066734314e-6, - 0.006349898059852421, - 6.3907355070114136e-6, - 5153.606374740601, - 136800, - false, - 31, - 6.891787052154541e-8, - 1.6470055929195884, - 7.450580596923828e-8, - 0.9671090437449873, - 257.125, - 0.05450158504406715, - -8.087122575401946e-9, - "01100111", - -1.353627812603161e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001100111", + l2pcode = false, + T_GD = 5.122274160385132e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -1.4779288903810084e-12, + a_f0 = -2.3324042558670044e-5, + IODE_Sub_2 = "01100111", + C_rs = 84.21875, + Δn = 4.435899058715372e-9, + M_0 = 1.3315461632138303, + C_uc = 4.639849066734314e-6, + e = 0.006349898059852421, + C_us = 6.3907355070114136e-6, + sqrt_A = 5153.606374740601, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 6.891787052154541e-8, + Ω_0 = 1.6470055929195884, + C_is = 7.450580596923828e-8, + i_0 = 0.9671090437449873, + C_rc = 257.125, + ω = 0.05450158504406715, + Ω_dot = -8.087122575401946e-9, + IODE_Sub_3 = "01100111", + i_dot = -1.353627812603161e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001100111", - false, - 5.122274160385132e-9, - 136800, - 0.0, - -1.4779288903810084e-12, - -2.3324042558670044e-5, - "01100111", - 84.21875, - 4.435899058715372e-9, - 1.3315461632138303, - 4.639849066734314e-6, - 0.006349898059852421, - 6.3907355070114136e-6, - 5153.606374740601, - 136800, - false, - 31, - 6.891787052154541e-8, - 1.6470055929195884, - 7.450580596923828e-8, - 0.9671090437449873, - 257.125, - 0.05450158504406715, - -8.087122575401946e-9, - "01100111", - -1.353627812603161e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001100111", + l2pcode = false, + T_GD = 5.122274160385132e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -1.4779288903810084e-12, + a_f0 = -2.3324042558670044e-5, + IODE_Sub_2 = "01100111", + C_rs = 84.21875, + Δn = 4.435899058715372e-9, + M_0 = 1.3315461632138303, + C_uc = 4.639849066734314e-6, + e = 0.006349898059852421, + C_us = 6.3907355070114136e-6, + sqrt_A = 5153.606374740601, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 6.891787052154541e-8, + Ω_0 = 1.6470055929195884, + C_is = 7.450580596923828e-8, + i_0 = 0.9671090437449873, + C_rc = 257.125, + ω = 0.05450158504406715, + Ω_dot = -8.087122575401946e-9, + IODE_Sub_3 = "01100111", + i_dot = -1.353627812603161e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -720,80 +720,80 @@ end uint320"0x1d3db86b3655d4396b13e1f30d99b57860edf0be15870e004a0193f8f59c1513374fe3fdf531b2ab", uint320"0xdf48b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c070a63eaecc8b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0000101000", - false, - 2.3283064365386963e-9, - 136800, - 0.0, - -7.617018127348274e-12, - -0.0001329910010099411, - "00101000", - -89.25, - 4.016595878769169e-9, - -2.941058160546095, - -4.645437002182007e-6, - 0.006653358926996589, - 7.499009370803833e-6, - 5153.6786251068115, - 136800, - false, - 20, - -3.5390257835388184e-8, - -2.5268399079275254, - -6.146728992462158e-8, - 0.969412731565689, - 239.09375, - -2.5641372296478258, - -7.765323456891273e-9, - "00101000", - 3.893019302737323e-11, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0000101000", + l2pcode = false, + T_GD = 2.3283064365386963e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -7.617018127348274e-12, + a_f0 = -0.0001329910010099411, + IODE_Sub_2 = "00101000", + C_rs = -89.25, + Δn = 4.016595878769169e-9, + M_0 = -2.941058160546095, + C_uc = -4.645437002182007e-6, + e = 0.006653358926996589, + C_us = 7.499009370803833e-6, + sqrt_A = 5153.6786251068115, + t_0e = 136800, + fit_interval = false, + AODO = 20, + C_ic = -3.5390257835388184e-8, + Ω_0 = -2.5268399079275254, + C_is = -6.146728992462158e-8, + i_0 = 0.969412731565689, + C_rc = 239.09375, + ω = -2.5641372296478258, + Ω_dot = -7.765323456891273e-9, + IODE_Sub_3 = "00101000", + i_dot = 3.893019302737323e-11, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0000101000", - false, - 2.3283064365386963e-9, - 136800, - 0.0, - -7.617018127348274e-12, - -0.0001329910010099411, - "00101000", - -89.25, - 4.016595878769169e-9, - -2.941058160546095, - -4.645437002182007e-6, - 0.006653358926996589, - 7.499009370803833e-6, - 5153.6786251068115, - 136800, - false, - 20, - -3.5390257835388184e-8, - -2.5268399079275254, - -6.146728992462158e-8, - 0.969412731565689, - 239.09375, - -2.5641372296478258, - -7.765323456891273e-9, - "00101000", - 3.893019302737323e-11, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0000101000", + l2pcode = false, + T_GD = 2.3283064365386963e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -7.617018127348274e-12, + a_f0 = -0.0001329910010099411, + IODE_Sub_2 = "00101000", + C_rs = -89.25, + Δn = 4.016595878769169e-9, + M_0 = -2.941058160546095, + C_uc = -4.645437002182007e-6, + e = 0.006653358926996589, + C_us = 7.499009370803833e-6, + sqrt_A = 5153.6786251068115, + t_0e = 136800, + fit_interval = false, + AODO = 20, + C_ic = -3.5390257835388184e-8, + Ω_0 = -2.5268399079275254, + C_is = -6.146728992462158e-8, + i_0 = 0.969412731565689, + C_rc = 239.09375, + ω = -2.5641372296478258, + Ω_dot = -7.765323456891273e-9, + IODE_Sub_3 = "00101000", + i_dot = 3.893019302737323e-11, ), GNSSDecoder.GPSL1Constants( 300, @@ -822,80 +822,80 @@ end uint320"0xe2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07084f478988b01c020ace4d54", uint320"0x4fc8b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07084f478988b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001011001", - false, - -1.0710209608078003e-8, - 136800, - 0.0, - 2.6147972675971687e-12, - -0.00014561135321855545, - "01011001", - -30.5625, - 5.182001565450993e-9, - 0.38753804422936994, - -1.471489667892456e-6, - 0.013163934461772442, - 9.061768651008606e-6, - 5153.620079040527, - 136800, - false, - 31, - -1.695007085800171e-7, - -1.5933596086804434, - 1.6205012798309326e-7, - 0.9286304727294836, - 190.6875, - 0.98557755063243, - -8.41785063726752e-9, - "01011001", - 3.010839699272994e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001011001", + l2pcode = false, + T_GD = -1.0710209608078003e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 2.6147972675971687e-12, + a_f0 = -0.00014561135321855545, + IODE_Sub_2 = "01011001", + C_rs = -30.5625, + Δn = 5.182001565450993e-9, + M_0 = 0.38753804422936994, + C_uc = -1.471489667892456e-6, + e = 0.013163934461772442, + C_us = 9.061768651008606e-6, + sqrt_A = 5153.620079040527, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -1.695007085800171e-7, + Ω_0 = -1.5933596086804434, + C_is = 1.6205012798309326e-7, + i_0 = 0.9286304727294836, + C_rc = 190.6875, + ω = 0.98557755063243, + Ω_dot = -8.41785063726752e-9, + IODE_Sub_3 = "01011001", + i_dot = 3.010839699272994e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001011001", - false, - -1.0710209608078003e-8, - 136800, - 0.0, - 2.6147972675971687e-12, - -0.00014561135321855545, - "01011001", - -30.5625, - 5.182001565450993e-9, - 0.38753804422936994, - -1.471489667892456e-6, - 0.013163934461772442, - 9.061768651008606e-6, - 5153.620079040527, - 136800, - false, - 31, - -1.695007085800171e-7, - -1.5933596086804434, - 1.6205012798309326e-7, - 0.9286304727294836, - 190.6875, - 0.98557755063243, - -8.41785063726752e-9, - "01011001", - 3.010839699272994e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001011001", + l2pcode = false, + T_GD = -1.0710209608078003e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 2.6147972675971687e-12, + a_f0 = -0.00014561135321855545, + IODE_Sub_2 = "01011001", + C_rs = -30.5625, + Δn = 5.182001565450993e-9, + M_0 = 0.38753804422936994, + C_uc = -1.471489667892456e-6, + e = 0.013163934461772442, + C_us = 9.061768651008606e-6, + sqrt_A = 5153.620079040527, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -1.695007085800171e-7, + Ω_0 = -1.5933596086804434, + C_is = 1.6205012798309326e-7, + i_0 = 0.9286304727294836, + C_rc = 190.6875, + ω = 0.98557755063243, + Ω_dot = -8.41785063726752e-9, + IODE_Sub_3 = "01011001", + i_dot = 3.010839699272994e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -924,80 +924,80 @@ end uint320"0xe2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07084f478988b01c020ace4d54", uint320"0x9d88b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07084f478988b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0000100010", - false, - -1.0244548320770264e-8, - 136800, - 0.0, - -6.0254023992456496e-12, - -0.0003338884562253952, - "00100010", - 37.0, - 4.26732060817482e-9, - 2.20050848506247, - 1.8272548913955688e-6, - 0.012199128163047135, - 9.119510650634766e-6, - 5153.70516204834, - 136800, - false, - 22, - -2.3655593395233154e-7, - 0.7074087615001045, - -1.30385160446167e-7, - 0.9738089978878275, - 212.75, - 0.6779943621465904, - -7.692463279115272e-9, - "00100010", - -2.95012288445966e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0000100010", + l2pcode = false, + T_GD = -1.0244548320770264e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -6.0254023992456496e-12, + a_f0 = -0.0003338884562253952, + IODE_Sub_2 = "00100010", + C_rs = 37.0, + Δn = 4.26732060817482e-9, + M_0 = 2.20050848506247, + C_uc = 1.8272548913955688e-6, + e = 0.012199128163047135, + C_us = 9.119510650634766e-6, + sqrt_A = 5153.70516204834, + t_0e = 136800, + fit_interval = false, + AODO = 22, + C_ic = -2.3655593395233154e-7, + Ω_0 = 0.7074087615001045, + C_is = -1.30385160446167e-7, + i_0 = 0.9738089978878275, + C_rc = 212.75, + ω = 0.6779943621465904, + Ω_dot = -7.692463279115272e-9, + IODE_Sub_3 = "00100010", + i_dot = -2.95012288445966e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0000100010", - false, - -1.0244548320770264e-8, - 136800, - 0.0, - -6.0254023992456496e-12, - -0.0003338884562253952, - "00100010", - 37.0, - 4.26732060817482e-9, - 2.20050848506247, - 1.8272548913955688e-6, - 0.012199128163047135, - 9.119510650634766e-6, - 5153.70516204834, - 136800, - false, - 22, - -2.3655593395233154e-7, - 0.7074087615001045, - -1.30385160446167e-7, - 0.9738089978878275, - 212.75, - 0.6779943621465904, - -7.692463279115272e-9, - "00100010", - -2.95012288445966e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0000100010", + l2pcode = false, + T_GD = -1.0244548320770264e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -6.0254023992456496e-12, + a_f0 = -0.0003338884562253952, + IODE_Sub_2 = "00100010", + C_rs = 37.0, + Δn = 4.26732060817482e-9, + M_0 = 2.20050848506247, + C_uc = 1.8272548913955688e-6, + e = 0.012199128163047135, + C_us = 9.119510650634766e-6, + sqrt_A = 5153.70516204834, + t_0e = 136800, + fit_interval = false, + AODO = 22, + C_ic = -2.3655593395233154e-7, + Ω_0 = 0.7074087615001045, + C_is = -1.30385160446167e-7, + i_0 = 0.9738089978878275, + C_rc = 212.75, + ω = 0.6779943621465904, + Ω_dot = -7.692463279115272e-9, + IODE_Sub_3 = "00100010", + i_dot = -2.95012288445966e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -1026,80 +1026,80 @@ end uint320"0x1d3db86b3655d4396b13e1f30d99b57860edf0be15870e004a0193f8f729761f374fe3fdf531b2ab", uint320"0x9b08b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c0708d689e0c8b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "1111100001", - false, - -8.381903171539307e-9, - 136800, - 0.0, - -1.3642420526593924e-12, - 0.0003486964851617813, - "11100001", - -15.3125, - 4.35303846438188e-9, - -0.6041391930737793, - -8.717179298400879e-7, - 0.0014569575432687998, - 3.339722752571106e-6, - 5153.662895202637, - 136800, - false, - 31, - 2.60770320892334e-8, - 2.733796625968394, - -4.284083843231201e-8, - 0.9683542210973364, - 321.59375, - 2.894680446328142, - -8.184269479103281e-9, - "11100001", - -1.0071848104329588e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "1111100001", + l2pcode = false, + T_GD = -8.381903171539307e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -1.3642420526593924e-12, + a_f0 = 0.0003486964851617813, + IODE_Sub_2 = "11100001", + C_rs = -15.3125, + Δn = 4.35303846438188e-9, + M_0 = -0.6041391930737793, + C_uc = -8.717179298400879e-7, + e = 0.0014569575432687998, + C_us = 3.339722752571106e-6, + sqrt_A = 5153.662895202637, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 2.60770320892334e-8, + Ω_0 = 2.733796625968394, + C_is = -4.284083843231201e-8, + i_0 = 0.9683542210973364, + C_rc = 321.59375, + ω = 2.894680446328142, + Ω_dot = -8.184269479103281e-9, + IODE_Sub_3 = "11100001", + i_dot = -1.0071848104329588e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "1111100001", - false, - -8.381903171539307e-9, - 136800, - 0.0, - -1.3642420526593924e-12, - 0.0003486964851617813, - "11100001", - -15.3125, - 4.35303846438188e-9, - -0.6041391930737793, - -8.717179298400879e-7, - 0.0014569575432687998, - 3.339722752571106e-6, - 5153.662895202637, - 136800, - false, - 31, - 2.60770320892334e-8, - 2.733796625968394, - -4.284083843231201e-8, - 0.9683542210973364, - 321.59375, - 2.894680446328142, - -8.184269479103281e-9, - "11100001", - -1.0071848104329588e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "1111100001", + l2pcode = false, + T_GD = -8.381903171539307e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -1.3642420526593924e-12, + a_f0 = 0.0003486964851617813, + IODE_Sub_2 = "11100001", + C_rs = -15.3125, + Δn = 4.35303846438188e-9, + M_0 = -0.6041391930737793, + C_uc = -8.717179298400879e-7, + e = 0.0014569575432687998, + C_us = 3.339722752571106e-6, + sqrt_A = 5153.662895202637, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 2.60770320892334e-8, + Ω_0 = 2.733796625968394, + C_is = -4.284083843231201e-8, + i_0 = 0.9683542210973364, + C_rc = 321.59375, + ω = 2.894680446328142, + Ω_dot = -8.184269479103281e-9, + IODE_Sub_3 = "11100001", + i_dot = -1.0071848104329588e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -1128,80 +1128,80 @@ end uint320"0x1d3db86b3655d4396b13e1f30d99b57860edf0be15870e004a0193f8f6f0c93cf74fe3fdf531b2ab", uint320"0x8fc8b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07090f36c308b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0011101110", - false, - -8.381903171539307e-9, - 136800, - 0.0, - -3.751665644813329e-12, - 0.00010169018059968948, - "11101110", - -92.40625, - 4.153030133232073e-9, - -1.3144457890174628, - -4.732981324195862e-6, - 0.0012323472183197737, - 7.256865501403809e-6, - 5153.657176971436, - 136800, - false, - 31, - -9.872019290924072e-8, - -2.5503370450318865, - 2.9802322387695312e-8, - 0.9644177455387573, - 242.5, - 2.603874239368067, - -7.890328663859904e-9, - "11101110", - 3.107272287505937e-11, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0011101110", + l2pcode = false, + T_GD = -8.381903171539307e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -3.751665644813329e-12, + a_f0 = 0.00010169018059968948, + IODE_Sub_2 = "11101110", + C_rs = -92.40625, + Δn = 4.153030133232073e-9, + M_0 = -1.3144457890174628, + C_uc = -4.732981324195862e-6, + e = 0.0012323472183197737, + C_us = 7.256865501403809e-6, + sqrt_A = 5153.657176971436, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -9.872019290924072e-8, + Ω_0 = -2.5503370450318865, + C_is = 2.9802322387695312e-8, + i_0 = 0.9644177455387573, + C_rc = 242.5, + ω = 2.603874239368067, + Ω_dot = -7.890328663859904e-9, + IODE_Sub_3 = "11101110", + i_dot = 3.107272287505937e-11, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0011101110", - false, - -8.381903171539307e-9, - 136800, - 0.0, - -3.751665644813329e-12, - 0.00010169018059968948, - "11101110", - -92.40625, - 4.153030133232073e-9, - -1.3144457890174628, - -4.732981324195862e-6, - 0.0012323472183197737, - 7.256865501403809e-6, - 5153.657176971436, - 136800, - false, - 31, - -9.872019290924072e-8, - -2.5503370450318865, - 2.9802322387695312e-8, - 0.9644177455387573, - 242.5, - 2.603874239368067, - -7.890328663859904e-9, - "11101110", - 3.107272287505937e-11, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0011101110", + l2pcode = false, + T_GD = -8.381903171539307e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -3.751665644813329e-12, + a_f0 = 0.00010169018059968948, + IODE_Sub_2 = "11101110", + C_rs = -92.40625, + Δn = 4.153030133232073e-9, + M_0 = -1.3144457890174628, + C_uc = -4.732981324195862e-6, + e = 0.0012323472183197737, + C_us = 7.256865501403809e-6, + sqrt_A = 5153.657176971436, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -9.872019290924072e-8, + Ω_0 = -2.5503370450318865, + C_is = 2.9802322387695312e-8, + i_0 = 0.9644177455387573, + C_rc = 242.5, + ω = 2.603874239368067, + Ω_dot = -7.890328663859904e-9, + IODE_Sub_3 = "11101110", + i_dot = 3.107272287505937e-11, ), GNSSDecoder.GPSL1Constants( 300, @@ -1230,80 +1230,80 @@ end uint320"0x1d3db86b3655d4396b13e1f30d99b57860edf0be15870e004a0193f8f729761f374fe3fdf531b2ab", uint320"0x3ac8b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c0708d689e0c8b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001101110", - false, - 6.984919309616089e-9, - 136800, - 0.0, - 4.888534022029489e-12, - 9.242305532097816e-5, - "01101110", - 29.53125, - 5.002351225150362e-9, - 3.0615288470223163, - 1.5329569578170776e-6, - 0.00589060562197119, - 8.42846930027008e-6, - 5153.568691253662, - 136800, - false, - 31, - -1.043081283569336e-7, - 0.5730118600154152, - 1.30385160446167e-8, - 0.942073253292395, - 208.875, - 0.3072108597425673, - -8.057478483463671e-9, - "01101110", - -3.328710082707509e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001101110", + l2pcode = false, + T_GD = 6.984919309616089e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 4.888534022029489e-12, + a_f0 = 9.242305532097816e-5, + IODE_Sub_2 = "01101110", + C_rs = 29.53125, + Δn = 5.002351225150362e-9, + M_0 = 3.0615288470223163, + C_uc = 1.5329569578170776e-6, + e = 0.00589060562197119, + C_us = 8.42846930027008e-6, + sqrt_A = 5153.568691253662, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -1.043081283569336e-7, + Ω_0 = 0.5730118600154152, + C_is = 1.30385160446167e-8, + i_0 = 0.942073253292395, + C_rc = 208.875, + ω = 0.3072108597425673, + Ω_dot = -8.057478483463671e-9, + IODE_Sub_3 = "01101110", + i_dot = -3.328710082707509e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001101110", - false, - 6.984919309616089e-9, - 136800, - 0.0, - 4.888534022029489e-12, - 9.242305532097816e-5, - "01101110", - 29.53125, - 5.002351225150362e-9, - 3.0615288470223163, - 1.5329569578170776e-6, - 0.00589060562197119, - 8.42846930027008e-6, - 5153.568691253662, - 136800, - false, - 31, - -1.043081283569336e-7, - 0.5730118600154152, - 1.30385160446167e-8, - 0.942073253292395, - 208.875, - 0.3072108597425673, - -8.057478483463671e-9, - "01101110", - -3.328710082707509e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001101110", + l2pcode = false, + T_GD = 6.984919309616089e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 4.888534022029489e-12, + a_f0 = 9.242305532097816e-5, + IODE_Sub_2 = "01101110", + C_rs = 29.53125, + Δn = 5.002351225150362e-9, + M_0 = 3.0615288470223163, + C_uc = 1.5329569578170776e-6, + e = 0.00589060562197119, + C_us = 8.42846930027008e-6, + sqrt_A = 5153.568691253662, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -1.043081283569336e-7, + Ω_0 = 0.5730118600154152, + C_is = 1.30385160446167e-8, + i_0 = 0.942073253292395, + C_rc = 208.875, + ω = 0.3072108597425673, + Ω_dot = -8.057478483463671e-9, + IODE_Sub_3 = "01101110", + i_dot = -3.328710082707509e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -1332,80 +1332,80 @@ end uint320"0xe2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c070a63eaecc8b01c020ace4d54", uint320"0x75c8b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c070a63eaecc8b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001001110", - false, - 1.862645149230957e-9, - 136800, - 0.0, - -6.366462912410498e-12, - -0.0001393994316458702, - "01001110", - 82.25, - 4.257677349351526e-9, - 1.25128819523303, - 4.505738615989685e-6, - 0.00944566575344652, - 6.81169331073761e-6, - 5153.686637878418, - 136800, - false, - 31, - -5.029141902923584e-8, - 1.66429757866306, - 1.601874828338623e-7, - 0.9756900633046096, - 257.375, - 0.6281523291801417, - -8.07676500111026e-9, - "01001110", - -1.2286226056345314e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001001110", + l2pcode = false, + T_GD = 1.862645149230957e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -6.366462912410498e-12, + a_f0 = -0.0001393994316458702, + IODE_Sub_2 = "01001110", + C_rs = 82.25, + Δn = 4.257677349351526e-9, + M_0 = 1.25128819523303, + C_uc = 4.505738615989685e-6, + e = 0.00944566575344652, + C_us = 6.81169331073761e-6, + sqrt_A = 5153.686637878418, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -5.029141902923584e-8, + Ω_0 = 1.66429757866306, + C_is = 1.601874828338623e-7, + i_0 = 0.9756900633046096, + C_rc = 257.375, + ω = 0.6281523291801417, + Ω_dot = -8.07676500111026e-9, + IODE_Sub_3 = "01001110", + i_dot = -1.2286226056345314e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001001110", - false, - 1.862645149230957e-9, - 136800, - 0.0, - -6.366462912410498e-12, - -0.0001393994316458702, - "01001110", - 82.25, - 4.257677349351526e-9, - 1.25128819523303, - 4.505738615989685e-6, - 0.00944566575344652, - 6.81169331073761e-6, - 5153.686637878418, - 136800, - false, - 31, - -5.029141902923584e-8, - 1.66429757866306, - 1.601874828338623e-7, - 0.9756900633046096, - 257.375, - 0.6281523291801417, - -8.07676500111026e-9, - "01001110", - -1.2286226056345314e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001001110", + l2pcode = false, + T_GD = 1.862645149230957e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -6.366462912410498e-12, + a_f0 = -0.0001393994316458702, + IODE_Sub_2 = "01001110", + C_rs = 82.25, + Δn = 4.257677349351526e-9, + M_0 = 1.25128819523303, + C_uc = 4.505738615989685e-6, + e = 0.00944566575344652, + C_us = 6.81169331073761e-6, + sqrt_A = 5153.686637878418, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -5.029141902923584e-8, + Ω_0 = 1.66429757866306, + C_is = 1.601874828338623e-7, + i_0 = 0.9756900633046096, + C_rc = 257.375, + ω = 0.6281523291801417, + Ω_dot = -8.07676500111026e-9, + IODE_Sub_3 = "01001110", + i_dot = -1.2286226056345314e-10, ), GNSSDecoder.GPSL1Constants( 300, diff --git a/test/runtests.jl b/test/runtests.jl index f5e5c36..88b89e4 100755 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -5,4 +5,5 @@ using Unitful: Hz include("aqua.jl") include("sat_time.jl") include("pvt.jl") -include("get_week.jl") \ No newline at end of file +include("get_week.jl") +include("tracking_ext.jl") \ No newline at end of file diff --git a/test/tracking_ext.jl b/test/tracking_ext.jl new file mode 100644 index 0000000..334fa83 --- /dev/null +++ b/test/tracking_ext.jl @@ -0,0 +1,22 @@ +using Tracking +using Tracking: TrackedSat, get_code_phase, get_carrier_doppler, get_carrier_phase + +@testset "Tracking extension: SatelliteState from a Tracking sat state" begin + # The extension is only available once Tracking is loaded. + @test Base.get_extension(PositionVelocityTime, :PositionVelocityTimeTrackingExt) !== + nothing + + gpsl1 = GPSL1CA() + decoder = GNSSDecoderState(gpsl1, 1) + sat_state = TrackedSat(gpsl1, 1, 123.0, 1234.0Hz; carrier_phase = 0.25) + + state = SatelliteState(decoder, gpsl1, sat_state) + + @test state isa SatelliteState + @test state.decoder === decoder + @test state.system === gpsl1 + # Each measurement must be wired from the matching Tracking getter. + @test state.code_phase == get_code_phase(sat_state) + @test state.carrier_doppler == get_carrier_doppler(sat_state) + @test state.carrier_phase == get_carrier_phase(sat_state) +end From 0387b3627a3f63f603cfdbdbaebc2e523d27a5fc Mon Sep 17 00:00:00 2001 From: Soeren Schoenbrod Date: Thu, 18 Jun 2026 15:25:34 +0000 Subject: [PATCH 2/3] fix(benchmark): update fixtures for GNSSDecoder 1.3 / GNSSSignals 2 Convert the GPSL1Data/GalileoE1BData fixtures from positional to keyword constructors, use the zero-arg GalileoE1BCache, and switch GPSL1() to GPSL1CA(), matching the test-suite migration so the AirspeedVelocity benchmark builds against the v2 ecosystem. Co-Authored-By: Claude Opus 4.8 --- benchmark/fixtures.jl | 1988 ++++++++++++++++++++--------------------- 1 file changed, 994 insertions(+), 994 deletions(-) diff --git a/benchmark/fixtures.jl b/benchmark/fixtures.jl index a33995a..f18776d 100644 --- a/benchmark/fixtures.jl +++ b/benchmark/fixtures.jl @@ -21,76 +21,76 @@ function make_galileo_states() uint288"0x4001ec23bff8485200005ec5ff7a895805f4d37fe877968040ae99fffd20b00d205dcf80", uint288"0xd2a6aec5828003d8477ff090a40000bd8bfef512b00be9a6ffd0ef2d00815d33fffa4160", GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 1.885093958164237, - 0.0002336719771847129, - 5440.601516723633, - 0.43151849653459906, - 0.9782668574498574, - 0.18081747042485646, - -3.6965825489294766e-10, - -5.353794435599309e-9, - 3.053341469642328e-9, - 1.9334256649017334e-6, - 8.616596460342407e-6, - 163.65625, - 40.46875, - -4.284083843231201e-8, - 7.264316082000732e-8, - 132000.0, - 0.00022286397870630026, - 2.5721647034515627e-12, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -1.6298145055770874e-9, - -2.0954757928848267e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 1.885093958164237, + e = 0.0002336719771847129, + sqrt_A = 5440.601516723633, + Ω_0 = 0.43151849653459906, + i_0 = 0.9782668574498574, + ω = 0.18081747042485646, + i_dot = -3.6965825489294766e-10, + Ω_dot = -5.353794435599309e-9, + Δn = 3.053341469642328e-9, + C_uc = 1.9334256649017334e-6, + C_us = 8.616596460342407e-6, + C_rc = 163.65625, + C_rs = 40.46875, + C_ic = -4.284083843231201e-8, + C_is = 7.264316082000732e-8, + t_0c = 132000.0, + a_f0 = 0.00022286397870630026, + a_f1 = 2.5721647034515627e-12, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -1.6298145055770874e-9, + broadcast_group_delay_e1_e5b = -2.0954757928848267e-9, ), GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 1.885093958164237, - 0.0002336719771847129, - 5440.601516723633, - 0.43151849653459906, - 0.9782668574498574, - 0.18081747042485646, - -3.6965825489294766e-10, - -5.353794435599309e-9, - 3.053341469642328e-9, - 1.9334256649017334e-6, - 8.616596460342407e-6, - 163.65625, - 40.46875, - -4.284083843231201e-8, - 7.264316082000732e-8, - 132000.0, - 0.00022286397870630026, - 2.5721647034515627e-12, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -1.6298145055770874e-9, - -2.0954757928848267e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 1.885093958164237, + e = 0.0002336719771847129, + sqrt_A = 5440.601516723633, + Ω_0 = 0.43151849653459906, + i_0 = 0.9782668574498574, + ω = 0.18081747042485646, + i_dot = -3.6965825489294766e-10, + Ω_dot = -5.353794435599309e-9, + Δn = 3.053341469642328e-9, + C_uc = 1.9334256649017334e-6, + C_us = 8.616596460342407e-6, + C_rc = 163.65625, + C_rs = 40.46875, + C_ic = -4.284083843231201e-8, + C_is = 7.264316082000732e-8, + t_0c = 132000.0, + a_f0 = 0.00022286397870630026, + a_f1 = 2.5721647034515627e-12, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -1.6298145055770874e-9, + broadcast_group_delay_e1_e5b = -2.0954757928848267e-9, ), GNSSDecoder.GalileoE1BConstants( 250, @@ -102,7 +102,7 @@ function make_galileo_states() 3.986004418e14, -4.442807309e-10, ), - GNSSDecoder.GalileoE1BCache(0x00000c5cffc5722165040e1212147505), + GNSSDecoder.GalileoE1BCache(), 49, 1549, false, @@ -118,76 +118,76 @@ function make_galileo_states() uint288"0xc3ffc21fe800f025ffffeba64010c2fcff43fd5002fd6eaff7f228c000c1e9fe5bc6460f", uint288"0xd158f0c583c003de017ff0fda00001459bfef3d0300bc02affd029150080dd73fff3e160", GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 128400.0, - 1.1883716376830096, - 0.0003440612927079201, - 5440.625782012939, - -1.666444269041331, - 0.9544851798532423, - -1.401875745066068, - 4.318037006430664e-10, - -5.442726711414135e-9, - 3.016554223020131e-9, - -2.2649765014648438e-6, - 9.763985872268677e-6, - 128.46875, - -51.40625, - 5.029141902923584e-8, - -2.2351741790771484e-8, - 128400.0, - -0.0007824758649803698, - -8.01492205937393e-12, - 0.0, - 0x0000000000000056, - 0x0000000000000056, - 0x0000000000000056, - 0x0000000000000056, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -3.026798367500305e-9, - -3.4924596548080444e-9, + WN = 1136, + TOW = 132769, + t_0e = 128400.0, + M_0 = 1.1883716376830096, + e = 0.0003440612927079201, + sqrt_A = 5440.625782012939, + Ω_0 = -1.666444269041331, + i_0 = 0.9544851798532423, + ω = -1.401875745066068, + i_dot = 4.318037006430664e-10, + Ω_dot = -5.442726711414135e-9, + Δn = 3.016554223020131e-9, + C_uc = -2.2649765014648438e-6, + C_us = 9.763985872268677e-6, + C_rc = 128.46875, + C_rs = -51.40625, + C_ic = 5.029141902923584e-8, + C_is = -2.2351741790771484e-8, + t_0c = 128400.0, + a_f0 = -0.0007824758649803698, + a_f1 = -8.01492205937393e-12, + a_f2 = 0.0, + IOD_nav1 = 0x0000000000000056, + IOD_nav2 = 0x0000000000000056, + IOD_nav3 = 0x0000000000000056, + IOD_nav4 = 0x0000000000000056, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -3.026798367500305e-9, + broadcast_group_delay_e1_e5b = -3.4924596548080444e-9, ), GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 128400.0, - 1.1883716376830096, - 0.0003440612927079201, - 5440.625782012939, - -1.666444269041331, - 0.9544851798532423, - -1.401875745066068, - 4.318037006430664e-10, - -5.442726711414135e-9, - 3.016554223020131e-9, - -2.2649765014648438e-6, - 9.763985872268677e-6, - 128.46875, - -51.40625, - 5.029141902923584e-8, - -2.2351741790771484e-8, - 128400.0, - -0.0007824758649803698, - -8.01492205937393e-12, - 0.0, - 0x0000000000000056, - 0x0000000000000056, - 0x0000000000000056, - 0x0000000000000056, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -3.026798367500305e-9, - -3.4924596548080444e-9, + WN = 1136, + TOW = 132769, + t_0e = 128400.0, + M_0 = 1.1883716376830096, + e = 0.0003440612927079201, + sqrt_A = 5440.625782012939, + Ω_0 = -1.666444269041331, + i_0 = 0.9544851798532423, + ω = -1.401875745066068, + i_dot = 4.318037006430664e-10, + Ω_dot = -5.442726711414135e-9, + Δn = 3.016554223020131e-9, + C_uc = -2.2649765014648438e-6, + C_us = 9.763985872268677e-6, + C_rc = 128.46875, + C_rs = -51.40625, + C_ic = 5.029141902923584e-8, + C_is = -2.2351741790771484e-8, + t_0c = 128400.0, + a_f0 = -0.0007824758649803698, + a_f1 = -8.01492205937393e-12, + a_f2 = 0.0, + IOD_nav1 = 0x0000000000000056, + IOD_nav2 = 0x0000000000000056, + IOD_nav3 = 0x0000000000000056, + IOD_nav4 = 0x0000000000000056, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -3.026798367500305e-9, + broadcast_group_delay_e1_e5b = -3.4924596548080444e-9, ), GNSSDecoder.GalileoE1BConstants( 250, @@ -199,7 +199,7 @@ function make_galileo_states() 3.986004418e14, -4.442807309e-10, ), - GNSSDecoder.GalileoE1BCache(0x00000c56ffc47920fefb40147a100ff9), + GNSSDecoder.GalileoE1BCache(), 46, 1546, true, @@ -215,76 +215,76 @@ function make_galileo_states() uint288"0x8007b086ffe1b77000036397fde280e017a75dffa08a320100aa47ffeec2c03481373e00", uint288"0xd4878bc5834003d8437ff0dbb80001b1cbfef140700bd3aeffd0451900805523fff76160", GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 0.7593379982069668, - 0.0005043556448072195, - 5440.614900588989, - 2.515118401165434, - 0.9919634586882758, - 0.7810709950849496, - -1.821504444400032e-11, - -5.659164298336962e-9, - 2.699398155054008e-9, - 6.221234798431396e-7, - 2.125278115272522e-6, - 311.3125, - 12.25, - -2.9802322387695312e-8, - 5.4016709327697754e-8, - 132000.0, - 0.005911215674132109, - -4.936850928061176e-11, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -1.3271346688270569e-8, - -1.4435499906539917e-8, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 0.7593379982069668, + e = 0.0005043556448072195, + sqrt_A = 5440.614900588989, + Ω_0 = 2.515118401165434, + i_0 = 0.9919634586882758, + ω = 0.7810709950849496, + i_dot = -1.821504444400032e-11, + Ω_dot = -5.659164298336962e-9, + Δn = 2.699398155054008e-9, + C_uc = 6.221234798431396e-7, + C_us = 2.125278115272522e-6, + C_rc = 311.3125, + C_rs = 12.25, + C_ic = -2.9802322387695312e-8, + C_is = 5.4016709327697754e-8, + t_0c = 132000.0, + a_f0 = 0.005911215674132109, + a_f1 = -4.936850928061176e-11, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -1.3271346688270569e-8, + broadcast_group_delay_e1_e5b = -1.4435499906539917e-8, ), GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 0.7593379982069668, - 0.0005043556448072195, - 5440.614900588989, - 2.515118401165434, - 0.9919634586882758, - 0.7810709950849496, - -1.821504444400032e-11, - -5.659164298336962e-9, - 2.699398155054008e-9, - 6.221234798431396e-7, - 2.125278115272522e-6, - 311.3125, - 12.25, - -2.9802322387695312e-8, - 5.4016709327697754e-8, - 132000.0, - 0.005911215674132109, - -4.936850928061176e-11, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - -1.3271346688270569e-8, - -1.4435499906539917e-8, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 0.7593379982069668, + e = 0.0005043556448072195, + sqrt_A = 5440.614900588989, + Ω_0 = 2.515118401165434, + i_0 = 0.9919634586882758, + ω = 0.7810709950849496, + i_dot = -1.821504444400032e-11, + Ω_dot = -5.659164298336962e-9, + Δn = 2.699398155054008e-9, + C_uc = 6.221234798431396e-7, + C_us = 2.125278115272522e-6, + C_rc = 311.3125, + C_rs = 12.25, + C_ic = -2.9802322387695312e-8, + C_is = 5.4016709327697754e-8, + t_0c = 132000.0, + a_f0 = 0.005911215674132109, + a_f1 = -4.936850928061176e-11, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = -1.3271346688270569e-8, + broadcast_group_delay_e1_e5b = -1.4435499906539917e-8, ), GNSSDecoder.GalileoE1BConstants( 250, @@ -296,7 +296,7 @@ function make_galileo_states() 3.986004418e14, -4.442807309e-10, ), - GNSSDecoder.GalileoE1BCache(0x00000c5cffc21b1d86014e047526ea01), + GNSSDecoder.GalileoE1BCache(), 51, 1551, false, @@ -312,76 +312,76 @@ function make_galileo_states() uint288"0x7fff0d5ea003cad0ffffe78900422343fd0b07400be9b7bfdf65a700010ba7f96fe9183f", uint288"0xd1dbd245820003ca857ff0d4bc000061dbfef772f00bd3e2ffd0592100826963fffbd160", GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - -2.0355462626837646, - 0.00014415336772799492, - 5440.611436843872, - 0.42869178039052547, - 0.9778386598651378, - -1.4136735049701232, - -3.982308736286344e-10, - -5.379866950195624e-9, - 3.036555056135112e-9, - 1.9241124391555786e-6, - 8.305534720420837e-6, - 172.59375, - 40.625, - -7.450580596923828e-8, - 3.3527612686157227e-8, - 132000.0, - -0.000535494415089488, - -1.2221335055073723e-12, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - 3.4924596548080444e-9, - 3.958120942115784e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = -2.0355462626837646, + e = 0.00014415336772799492, + sqrt_A = 5440.611436843872, + Ω_0 = 0.42869178039052547, + i_0 = 0.9778386598651378, + ω = -1.4136735049701232, + i_dot = -3.982308736286344e-10, + Ω_dot = -5.379866950195624e-9, + Δn = 3.036555056135112e-9, + C_uc = 1.9241124391555786e-6, + C_us = 8.305534720420837e-6, + C_rc = 172.59375, + C_rs = 40.625, + C_ic = -7.450580596923828e-8, + C_is = 3.3527612686157227e-8, + t_0c = 132000.0, + a_f0 = -0.000535494415089488, + a_f1 = -1.2221335055073723e-12, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = 3.4924596548080444e-9, + broadcast_group_delay_e1_e5b = 3.958120942115784e-9, ), GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - -2.0355462626837646, - 0.00014415336772799492, - 5440.611436843872, - 0.42869178039052547, - 0.9778386598651378, - -1.4136735049701232, - -3.982308736286344e-10, - -5.379866950195624e-9, - 3.036555056135112e-9, - 1.9241124391555786e-6, - 8.305534720420837e-6, - 172.59375, - 40.625, - -7.450580596923828e-8, - 3.3527612686157227e-8, - 132000.0, - -0.000535494415089488, - -1.2221335055073723e-12, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - 3.4924596548080444e-9, - 3.958120942115784e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = -2.0355462626837646, + e = 0.00014415336772799492, + sqrt_A = 5440.611436843872, + Ω_0 = 0.42869178039052547, + i_0 = 0.9778386598651378, + ω = -1.4136735049701232, + i_dot = -3.982308736286344e-10, + Ω_dot = -5.379866950195624e-9, + Δn = 3.036555056135112e-9, + C_uc = 1.9241124391555786e-6, + C_us = 8.305534720420837e-6, + C_rc = 172.59375, + C_rs = 40.625, + C_ic = -7.450580596923828e-8, + C_is = 3.3527612686157227e-8, + t_0c = 132000.0, + a_f0 = -0.000535494415089488, + a_f1 = -1.2221335055073723e-12, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = 3.4924596548080444e-9, + broadcast_group_delay_e1_e5b = 3.958120942115784e-9, ), GNSSDecoder.GalileoE1BConstants( 250, @@ -393,7 +393,7 @@ function make_galileo_states() 3.986004418e14, -4.442807309e-10, ), - GNSSDecoder.GalileoE1BCache(0x00000c5cffc52921360409116b159305), + GNSSDecoder.GalileoE1BCache(), 48, 1548, true, @@ -409,76 +409,76 @@ function make_galileo_states() uint288"0xa7ff845f3001e40b7fffe54480215fd1fe85d2a005fd7cdfefff5b800197d3fcb7a08c1f", uint288"0xd3f0160582c003dd067ff0dfa40000d5dbfef501700bd16affd0141900800523fff34160", GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 0.43031807277213097, - 0.00031052413396537304, - 5440.595668792725, - 0.43339143836728705, - 0.9757531121479899, - 0.869054289656611, - -3.9465929628667357e-10, - -5.42129724736237e-9, - 3.102986394695584e-9, - 2.089887857437134e-6, - 8.553266525268555e-6, - 162.5, - 45.375, - 8.754432201385498e-8, - 8.195638656616211e-8, - 132000.0, - 0.002901351428590715, - -3.0667024475405924e-11, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - 1.6298145055770874e-9, - 1.6298145055770874e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 0.43031807277213097, + e = 0.00031052413396537304, + sqrt_A = 5440.595668792725, + Ω_0 = 0.43339143836728705, + i_0 = 0.9757531121479899, + ω = 0.869054289656611, + i_dot = -3.9465929628667357e-10, + Ω_dot = -5.42129724736237e-9, + Δn = 3.102986394695584e-9, + C_uc = 2.089887857437134e-6, + C_us = 8.553266525268555e-6, + C_rc = 162.5, + C_rs = 45.375, + C_ic = 8.754432201385498e-8, + C_is = 8.195638656616211e-8, + t_0c = 132000.0, + a_f0 = 0.002901351428590715, + a_f1 = -3.0667024475405924e-11, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = 1.6298145055770874e-9, + broadcast_group_delay_e1_e5b = 1.6298145055770874e-9, ), GNSSDecoder.GalileoE1BData( - 1136, - 132769, - 132000.0, - 0.43031807277213097, - 0.00031052413396537304, - 5440.595668792725, - 0.43339143836728705, - 0.9757531121479899, - 0.869054289656611, - -3.9465929628667357e-10, - -5.42129724736237e-9, - 3.102986394695584e-9, - 2.089887857437134e-6, - 8.553266525268555e-6, - 162.5, - 45.375, - 8.754432201385498e-8, - 8.195638656616211e-8, - 132000.0, - 0.002901351428590715, - -3.0667024475405924e-11, - 0.0, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 0x000000000000005c, - 5, - 0, - GNSSDecoder.signal_ok, - GNSSDecoder.signal_ok, - GNSSDecoder.navigation_data_valid, - GNSSDecoder.navigation_data_valid, - 1.6298145055770874e-9, - 1.6298145055770874e-9, + WN = 1136, + TOW = 132769, + t_0e = 132000.0, + M_0 = 0.43031807277213097, + e = 0.00031052413396537304, + sqrt_A = 5440.595668792725, + Ω_0 = 0.43339143836728705, + i_0 = 0.9757531121479899, + ω = 0.869054289656611, + i_dot = -3.9465929628667357e-10, + Ω_dot = -5.42129724736237e-9, + Δn = 3.102986394695584e-9, + C_uc = 2.089887857437134e-6, + C_us = 8.553266525268555e-6, + C_rc = 162.5, + C_rs = 45.375, + C_ic = 8.754432201385498e-8, + C_is = 8.195638656616211e-8, + t_0c = 132000.0, + a_f0 = 0.002901351428590715, + a_f1 = -3.0667024475405924e-11, + a_f2 = 0.0, + IOD_nav1 = 0x000000000000005c, + IOD_nav2 = 0x000000000000005c, + IOD_nav3 = 0x000000000000005c, + IOD_nav4 = 0x000000000000005c, + num_pages_after_last_TOW = 5, + num_bits_after_valid_syncro_sequence_after_last_TOW = 0, + signal_health_e1b = GNSSDecoder.signal_ok, + signal_health_e5b = GNSSDecoder.signal_ok, + data_validity_status_e1b = GNSSDecoder.navigation_data_valid, + data_validity_status_e5b = GNSSDecoder.navigation_data_valid, + broadcast_group_delay_e1_e5a = 1.6298145055770874e-9, + broadcast_group_delay_e1_e5b = 1.6298145055770874e-9, ), GNSSDecoder.GalileoE1BConstants( 250, @@ -490,7 +490,7 @@ function make_galileo_states() 3.986004418e14, -4.442807309e-10, ), - GNSSDecoder.GalileoE1BCache(0x00000c5cffc4b521f0046211f0145005), + GNSSDecoder.GalileoE1BCache(), 47, 1547, true, @@ -506,7 +506,7 @@ end "9 GPS L1 satellites over Aachen, 2021-05-31 (from test/pvt.jl)." function make_gps_states() - gpsl1 = GPSL1() + gpsl1 = GPSL1CA() states = [ SatelliteState(; decoder = GNSSDecoderState( @@ -514,80 +514,80 @@ function make_gps_states() uint320"0xe2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07090f36c308b01c020ace4d54", uint320"0x0048b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07090f36c308b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001000110", - false, - -1.1175870895385742e-8, - 136800, - 0.0, - 1.0231815394945443e-11, - 0.0001659449189901352, - "01000110", - 14.90625, - 4.9980653323400095e-9, - -1.5018856847786306, - 8.065253496170044e-7, - 0.014979799510911107, - 6.051734089851379e-6, - 5153.747692108154, - 136800, - false, - 31, - 3.110617399215698e-7, - -0.42148546787582664, - -5.21540641784668e-8, - 0.9517858648559379, - 250.375, - -2.331033772387461, - -8.050692486513945e-9, - "01000110", - 1.657211886669833e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001000110", + l2pcode = false, + T_GD = -1.1175870895385742e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 1.0231815394945443e-11, + a_f0 = 0.0001659449189901352, + IODE_Sub_2 = "01000110", + C_rs = 14.90625, + Δn = 4.9980653323400095e-9, + M_0 = -1.5018856847786306, + C_uc = 8.065253496170044e-7, + e = 0.014979799510911107, + C_us = 6.051734089851379e-6, + sqrt_A = 5153.747692108154, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 3.110617399215698e-7, + Ω_0 = -0.42148546787582664, + C_is = -5.21540641784668e-8, + i_0 = 0.9517858648559379, + C_rc = 250.375, + ω = -2.331033772387461, + Ω_dot = -8.050692486513945e-9, + IODE_Sub_3 = "01000110", + i_dot = 1.657211886669833e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001000110", - false, - -1.1175870895385742e-8, - 136800, - 0.0, - 1.0231815394945443e-11, - 0.0001659449189901352, - "01000110", - 14.90625, - 4.9980653323400095e-9, - -1.5018856847786306, - 8.065253496170044e-7, - 0.014979799510911107, - 6.051734089851379e-6, - 5153.747692108154, - 136800, - false, - 31, - 3.110617399215698e-7, - -0.42148546787582664, - -5.21540641784668e-8, - 0.9517858648559379, - 250.375, - -2.331033772387461, - -8.050692486513945e-9, - "01000110", - 1.657211886669833e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001000110", + l2pcode = false, + T_GD = -1.1175870895385742e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 1.0231815394945443e-11, + a_f0 = 0.0001659449189901352, + IODE_Sub_2 = "01000110", + C_rs = 14.90625, + Δn = 4.9980653323400095e-9, + M_0 = -1.5018856847786306, + C_uc = 8.065253496170044e-7, + e = 0.014979799510911107, + C_us = 6.051734089851379e-6, + sqrt_A = 5153.747692108154, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 3.110617399215698e-7, + Ω_0 = -0.42148546787582664, + C_is = -5.21540641784668e-8, + i_0 = 0.9517858648559379, + C_rc = 250.375, + ω = -2.331033772387461, + Ω_dot = -8.050692486513945e-9, + IODE_Sub_3 = "01000110", + i_dot = 1.657211886669833e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -616,80 +616,80 @@ function make_gps_states() uint320"0xe2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07090f36c308b01c020ace4d54", uint320"0xaf88b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07090f36c308b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001100111", - false, - 5.122274160385132e-9, - 136800, - 0.0, - -1.4779288903810084e-12, - -2.3324042558670044e-5, - "01100111", - 84.21875, - 4.435899058715372e-9, - 1.3315461632138303, - 4.639849066734314e-6, - 0.006349898059852421, - 6.3907355070114136e-6, - 5153.606374740601, - 136800, - false, - 31, - 6.891787052154541e-8, - 1.6470055929195884, - 7.450580596923828e-8, - 0.9671090437449873, - 257.125, - 0.05450158504406715, - -8.087122575401946e-9, - "01100111", - -1.353627812603161e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001100111", + l2pcode = false, + T_GD = 5.122274160385132e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -1.4779288903810084e-12, + a_f0 = -2.3324042558670044e-5, + IODE_Sub_2 = "01100111", + C_rs = 84.21875, + Δn = 4.435899058715372e-9, + M_0 = 1.3315461632138303, + C_uc = 4.639849066734314e-6, + e = 0.006349898059852421, + C_us = 6.3907355070114136e-6, + sqrt_A = 5153.606374740601, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 6.891787052154541e-8, + Ω_0 = 1.6470055929195884, + C_is = 7.450580596923828e-8, + i_0 = 0.9671090437449873, + C_rc = 257.125, + ω = 0.05450158504406715, + Ω_dot = -8.087122575401946e-9, + IODE_Sub_3 = "01100111", + i_dot = -1.353627812603161e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001100111", - false, - 5.122274160385132e-9, - 136800, - 0.0, - -1.4779288903810084e-12, - -2.3324042558670044e-5, - "01100111", - 84.21875, - 4.435899058715372e-9, - 1.3315461632138303, - 4.639849066734314e-6, - 0.006349898059852421, - 6.3907355070114136e-6, - 5153.606374740601, - 136800, - false, - 31, - 6.891787052154541e-8, - 1.6470055929195884, - 7.450580596923828e-8, - 0.9671090437449873, - 257.125, - 0.05450158504406715, - -8.087122575401946e-9, - "01100111", - -1.353627812603161e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001100111", + l2pcode = false, + T_GD = 5.122274160385132e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -1.4779288903810084e-12, + a_f0 = -2.3324042558670044e-5, + IODE_Sub_2 = "01100111", + C_rs = 84.21875, + Δn = 4.435899058715372e-9, + M_0 = 1.3315461632138303, + C_uc = 4.639849066734314e-6, + e = 0.006349898059852421, + C_us = 6.3907355070114136e-6, + sqrt_A = 5153.606374740601, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 6.891787052154541e-8, + Ω_0 = 1.6470055929195884, + C_is = 7.450580596923828e-8, + i_0 = 0.9671090437449873, + C_rc = 257.125, + ω = 0.05450158504406715, + Ω_dot = -8.087122575401946e-9, + IODE_Sub_3 = "01100111", + i_dot = -1.353627812603161e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -718,80 +718,80 @@ function make_gps_states() uint320"0x1d3db86b3655d4396b13e1f30d99b57860edf0be15870e004a0193f8f59c1513374fe3fdf531b2ab", uint320"0xdf48b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c070a63eaecc8b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0000101000", - false, - 2.3283064365386963e-9, - 136800, - 0.0, - -7.617018127348274e-12, - -0.0001329910010099411, - "00101000", - -89.25, - 4.016595878769169e-9, - -2.941058160546095, - -4.645437002182007e-6, - 0.006653358926996589, - 7.499009370803833e-6, - 5153.6786251068115, - 136800, - false, - 20, - -3.5390257835388184e-8, - -2.5268399079275254, - -6.146728992462158e-8, - 0.969412731565689, - 239.09375, - -2.5641372296478258, - -7.765323456891273e-9, - "00101000", - 3.893019302737323e-11, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0000101000", + l2pcode = false, + T_GD = 2.3283064365386963e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -7.617018127348274e-12, + a_f0 = -0.0001329910010099411, + IODE_Sub_2 = "00101000", + C_rs = -89.25, + Δn = 4.016595878769169e-9, + M_0 = -2.941058160546095, + C_uc = -4.645437002182007e-6, + e = 0.006653358926996589, + C_us = 7.499009370803833e-6, + sqrt_A = 5153.6786251068115, + t_0e = 136800, + fit_interval = false, + AODO = 20, + C_ic = -3.5390257835388184e-8, + Ω_0 = -2.5268399079275254, + C_is = -6.146728992462158e-8, + i_0 = 0.969412731565689, + C_rc = 239.09375, + ω = -2.5641372296478258, + Ω_dot = -7.765323456891273e-9, + IODE_Sub_3 = "00101000", + i_dot = 3.893019302737323e-11, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0000101000", - false, - 2.3283064365386963e-9, - 136800, - 0.0, - -7.617018127348274e-12, - -0.0001329910010099411, - "00101000", - -89.25, - 4.016595878769169e-9, - -2.941058160546095, - -4.645437002182007e-6, - 0.006653358926996589, - 7.499009370803833e-6, - 5153.6786251068115, - 136800, - false, - 20, - -3.5390257835388184e-8, - -2.5268399079275254, - -6.146728992462158e-8, - 0.969412731565689, - 239.09375, - -2.5641372296478258, - -7.765323456891273e-9, - "00101000", - 3.893019302737323e-11, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0000101000", + l2pcode = false, + T_GD = 2.3283064365386963e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -7.617018127348274e-12, + a_f0 = -0.0001329910010099411, + IODE_Sub_2 = "00101000", + C_rs = -89.25, + Δn = 4.016595878769169e-9, + M_0 = -2.941058160546095, + C_uc = -4.645437002182007e-6, + e = 0.006653358926996589, + C_us = 7.499009370803833e-6, + sqrt_A = 5153.6786251068115, + t_0e = 136800, + fit_interval = false, + AODO = 20, + C_ic = -3.5390257835388184e-8, + Ω_0 = -2.5268399079275254, + C_is = -6.146728992462158e-8, + i_0 = 0.969412731565689, + C_rc = 239.09375, + ω = -2.5641372296478258, + Ω_dot = -7.765323456891273e-9, + IODE_Sub_3 = "00101000", + i_dot = 3.893019302737323e-11, ), GNSSDecoder.GPSL1Constants( 300, @@ -820,80 +820,80 @@ function make_gps_states() uint320"0xe2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07084f478988b01c020ace4d54", uint320"0x4fc8b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07084f478988b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001011001", - false, - -1.0710209608078003e-8, - 136800, - 0.0, - 2.6147972675971687e-12, - -0.00014561135321855545, - "01011001", - -30.5625, - 5.182001565450993e-9, - 0.38753804422936994, - -1.471489667892456e-6, - 0.013163934461772442, - 9.061768651008606e-6, - 5153.620079040527, - 136800, - false, - 31, - -1.695007085800171e-7, - -1.5933596086804434, - 1.6205012798309326e-7, - 0.9286304727294836, - 190.6875, - 0.98557755063243, - -8.41785063726752e-9, - "01011001", - 3.010839699272994e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001011001", + l2pcode = false, + T_GD = -1.0710209608078003e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 2.6147972675971687e-12, + a_f0 = -0.00014561135321855545, + IODE_Sub_2 = "01011001", + C_rs = -30.5625, + Δn = 5.182001565450993e-9, + M_0 = 0.38753804422936994, + C_uc = -1.471489667892456e-6, + e = 0.013163934461772442, + C_us = 9.061768651008606e-6, + sqrt_A = 5153.620079040527, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -1.695007085800171e-7, + Ω_0 = -1.5933596086804434, + C_is = 1.6205012798309326e-7, + i_0 = 0.9286304727294836, + C_rc = 190.6875, + ω = 0.98557755063243, + Ω_dot = -8.41785063726752e-9, + IODE_Sub_3 = "01011001", + i_dot = 3.010839699272994e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001011001", - false, - -1.0710209608078003e-8, - 136800, - 0.0, - 2.6147972675971687e-12, - -0.00014561135321855545, - "01011001", - -30.5625, - 5.182001565450993e-9, - 0.38753804422936994, - -1.471489667892456e-6, - 0.013163934461772442, - 9.061768651008606e-6, - 5153.620079040527, - 136800, - false, - 31, - -1.695007085800171e-7, - -1.5933596086804434, - 1.6205012798309326e-7, - 0.9286304727294836, - 190.6875, - 0.98557755063243, - -8.41785063726752e-9, - "01011001", - 3.010839699272994e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001011001", + l2pcode = false, + T_GD = -1.0710209608078003e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 2.6147972675971687e-12, + a_f0 = -0.00014561135321855545, + IODE_Sub_2 = "01011001", + C_rs = -30.5625, + Δn = 5.182001565450993e-9, + M_0 = 0.38753804422936994, + C_uc = -1.471489667892456e-6, + e = 0.013163934461772442, + C_us = 9.061768651008606e-6, + sqrt_A = 5153.620079040527, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -1.695007085800171e-7, + Ω_0 = -1.5933596086804434, + C_is = 1.6205012798309326e-7, + i_0 = 0.9286304727294836, + C_rc = 190.6875, + ω = 0.98557755063243, + Ω_dot = -8.41785063726752e-9, + IODE_Sub_3 = "01011001", + i_dot = 3.010839699272994e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -922,80 +922,80 @@ function make_gps_states() uint320"0xe2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07084f478988b01c020ace4d54", uint320"0x9d88b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07084f478988b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0000100010", - false, - -1.0244548320770264e-8, - 136800, - 0.0, - -6.0254023992456496e-12, - -0.0003338884562253952, - "00100010", - 37.0, - 4.26732060817482e-9, - 2.20050848506247, - 1.8272548913955688e-6, - 0.012199128163047135, - 9.119510650634766e-6, - 5153.70516204834, - 136800, - false, - 22, - -2.3655593395233154e-7, - 0.7074087615001045, - -1.30385160446167e-7, - 0.9738089978878275, - 212.75, - 0.6779943621465904, - -7.692463279115272e-9, - "00100010", - -2.95012288445966e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0000100010", + l2pcode = false, + T_GD = -1.0244548320770264e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -6.0254023992456496e-12, + a_f0 = -0.0003338884562253952, + IODE_Sub_2 = "00100010", + C_rs = 37.0, + Δn = 4.26732060817482e-9, + M_0 = 2.20050848506247, + C_uc = 1.8272548913955688e-6, + e = 0.012199128163047135, + C_us = 9.119510650634766e-6, + sqrt_A = 5153.70516204834, + t_0e = 136800, + fit_interval = false, + AODO = 22, + C_ic = -2.3655593395233154e-7, + Ω_0 = 0.7074087615001045, + C_is = -1.30385160446167e-7, + i_0 = 0.9738089978878275, + C_rc = 212.75, + ω = 0.6779943621465904, + Ω_dot = -7.692463279115272e-9, + IODE_Sub_3 = "00100010", + i_dot = -2.95012288445966e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0000100010", - false, - -1.0244548320770264e-8, - 136800, - 0.0, - -6.0254023992456496e-12, - -0.0003338884562253952, - "00100010", - 37.0, - 4.26732060817482e-9, - 2.20050848506247, - 1.8272548913955688e-6, - 0.012199128163047135, - 9.119510650634766e-6, - 5153.70516204834, - 136800, - false, - 22, - -2.3655593395233154e-7, - 0.7074087615001045, - -1.30385160446167e-7, - 0.9738089978878275, - 212.75, - 0.6779943621465904, - -7.692463279115272e-9, - "00100010", - -2.95012288445966e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0000100010", + l2pcode = false, + T_GD = -1.0244548320770264e-8, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -6.0254023992456496e-12, + a_f0 = -0.0003338884562253952, + IODE_Sub_2 = "00100010", + C_rs = 37.0, + Δn = 4.26732060817482e-9, + M_0 = 2.20050848506247, + C_uc = 1.8272548913955688e-6, + e = 0.012199128163047135, + C_us = 9.119510650634766e-6, + sqrt_A = 5153.70516204834, + t_0e = 136800, + fit_interval = false, + AODO = 22, + C_ic = -2.3655593395233154e-7, + Ω_0 = 0.7074087615001045, + C_is = -1.30385160446167e-7, + i_0 = 0.9738089978878275, + C_rc = 212.75, + ω = 0.6779943621465904, + Ω_dot = -7.692463279115272e-9, + IODE_Sub_3 = "00100010", + i_dot = -2.95012288445966e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -1024,80 +1024,80 @@ function make_gps_states() uint320"0x1d3db86b3655d4396b13e1f30d99b57860edf0be15870e004a0193f8f729761f374fe3fdf531b2ab", uint320"0x9b08b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c0708d689e0c8b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "1111100001", - false, - -8.381903171539307e-9, - 136800, - 0.0, - -1.3642420526593924e-12, - 0.0003486964851617813, - "11100001", - -15.3125, - 4.35303846438188e-9, - -0.6041391930737793, - -8.717179298400879e-7, - 0.0014569575432687998, - 3.339722752571106e-6, - 5153.662895202637, - 136800, - false, - 31, - 2.60770320892334e-8, - 2.733796625968394, - -4.284083843231201e-8, - 0.9683542210973364, - 321.59375, - 2.894680446328142, - -8.184269479103281e-9, - "11100001", - -1.0071848104329588e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "1111100001", + l2pcode = false, + T_GD = -8.381903171539307e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -1.3642420526593924e-12, + a_f0 = 0.0003486964851617813, + IODE_Sub_2 = "11100001", + C_rs = -15.3125, + Δn = 4.35303846438188e-9, + M_0 = -0.6041391930737793, + C_uc = -8.717179298400879e-7, + e = 0.0014569575432687998, + C_us = 3.339722752571106e-6, + sqrt_A = 5153.662895202637, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 2.60770320892334e-8, + Ω_0 = 2.733796625968394, + C_is = -4.284083843231201e-8, + i_0 = 0.9683542210973364, + C_rc = 321.59375, + ω = 2.894680446328142, + Ω_dot = -8.184269479103281e-9, + IODE_Sub_3 = "11100001", + i_dot = -1.0071848104329588e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "1111100001", - false, - -8.381903171539307e-9, - 136800, - 0.0, - -1.3642420526593924e-12, - 0.0003486964851617813, - "11100001", - -15.3125, - 4.35303846438188e-9, - -0.6041391930737793, - -8.717179298400879e-7, - 0.0014569575432687998, - 3.339722752571106e-6, - 5153.662895202637, - 136800, - false, - 31, - 2.60770320892334e-8, - 2.733796625968394, - -4.284083843231201e-8, - 0.9683542210973364, - 321.59375, - 2.894680446328142, - -8.184269479103281e-9, - "11100001", - -1.0071848104329588e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "1111100001", + l2pcode = false, + T_GD = -8.381903171539307e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -1.3642420526593924e-12, + a_f0 = 0.0003486964851617813, + IODE_Sub_2 = "11100001", + C_rs = -15.3125, + Δn = 4.35303846438188e-9, + M_0 = -0.6041391930737793, + C_uc = -8.717179298400879e-7, + e = 0.0014569575432687998, + C_us = 3.339722752571106e-6, + sqrt_A = 5153.662895202637, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = 2.60770320892334e-8, + Ω_0 = 2.733796625968394, + C_is = -4.284083843231201e-8, + i_0 = 0.9683542210973364, + C_rc = 321.59375, + ω = 2.894680446328142, + Ω_dot = -8.184269479103281e-9, + IODE_Sub_3 = "11100001", + i_dot = -1.0071848104329588e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -1126,80 +1126,80 @@ function make_gps_states() uint320"0x1d3db86b3655d4396b13e1f30d99b57860edf0be15870e004a0193f8f6f0c93cf74fe3fdf531b2ab", uint320"0x8fc8b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c07090f36c308b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0011101110", - false, - -8.381903171539307e-9, - 136800, - 0.0, - -3.751665644813329e-12, - 0.00010169018059968948, - "11101110", - -92.40625, - 4.153030133232073e-9, - -1.3144457890174628, - -4.732981324195862e-6, - 0.0012323472183197737, - 7.256865501403809e-6, - 5153.657176971436, - 136800, - false, - 31, - -9.872019290924072e-8, - -2.5503370450318865, - 2.9802322387695312e-8, - 0.9644177455387573, - 242.5, - 2.603874239368067, - -7.890328663859904e-9, - "11101110", - 3.107272287505937e-11, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0011101110", + l2pcode = false, + T_GD = -8.381903171539307e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -3.751665644813329e-12, + a_f0 = 0.00010169018059968948, + IODE_Sub_2 = "11101110", + C_rs = -92.40625, + Δn = 4.153030133232073e-9, + M_0 = -1.3144457890174628, + C_uc = -4.732981324195862e-6, + e = 0.0012323472183197737, + C_us = 7.256865501403809e-6, + sqrt_A = 5153.657176971436, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -9.872019290924072e-8, + Ω_0 = -2.5503370450318865, + C_is = 2.9802322387695312e-8, + i_0 = 0.9644177455387573, + C_rc = 242.5, + ω = 2.603874239368067, + Ω_dot = -7.890328663859904e-9, + IODE_Sub_3 = "11101110", + i_dot = 3.107272287505937e-11, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0011101110", - false, - -8.381903171539307e-9, - 136800, - 0.0, - -3.751665644813329e-12, - 0.00010169018059968948, - "11101110", - -92.40625, - 4.153030133232073e-9, - -1.3144457890174628, - -4.732981324195862e-6, - 0.0012323472183197737, - 7.256865501403809e-6, - 5153.657176971436, - 136800, - false, - 31, - -9.872019290924072e-8, - -2.5503370450318865, - 2.9802322387695312e-8, - 0.9644177455387573, - 242.5, - 2.603874239368067, - -7.890328663859904e-9, - "11101110", - 3.107272287505937e-11, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0011101110", + l2pcode = false, + T_GD = -8.381903171539307e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -3.751665644813329e-12, + a_f0 = 0.00010169018059968948, + IODE_Sub_2 = "11101110", + C_rs = -92.40625, + Δn = 4.153030133232073e-9, + M_0 = -1.3144457890174628, + C_uc = -4.732981324195862e-6, + e = 0.0012323472183197737, + C_us = 7.256865501403809e-6, + sqrt_A = 5153.657176971436, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -9.872019290924072e-8, + Ω_0 = -2.5503370450318865, + C_is = 2.9802322387695312e-8, + i_0 = 0.9644177455387573, + C_rc = 242.5, + ω = 2.603874239368067, + Ω_dot = -7.890328663859904e-9, + IODE_Sub_3 = "11101110", + i_dot = 3.107272287505937e-11, ), GNSSDecoder.GPSL1Constants( 300, @@ -1228,80 +1228,80 @@ function make_gps_states() uint320"0x1d3db86b3655d4396b13e1f30d99b57860edf0be15870e004a0193f8f729761f374fe3fdf531b2ab", uint320"0x3ac8b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c0708d689e0c8b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001101110", - false, - 6.984919309616089e-9, - 136800, - 0.0, - 4.888534022029489e-12, - 9.242305532097816e-5, - "01101110", - 29.53125, - 5.002351225150362e-9, - 3.0615288470223163, - 1.5329569578170776e-6, - 0.00589060562197119, - 8.42846930027008e-6, - 5153.568691253662, - 136800, - false, - 31, - -1.043081283569336e-7, - 0.5730118600154152, - 1.30385160446167e-8, - 0.942073253292395, - 208.875, - 0.3072108597425673, - -8.057478483463671e-9, - "01101110", - -3.328710082707509e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001101110", + l2pcode = false, + T_GD = 6.984919309616089e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 4.888534022029489e-12, + a_f0 = 9.242305532097816e-5, + IODE_Sub_2 = "01101110", + C_rs = 29.53125, + Δn = 5.002351225150362e-9, + M_0 = 3.0615288470223163, + C_uc = 1.5329569578170776e-6, + e = 0.00589060562197119, + C_us = 8.42846930027008e-6, + sqrt_A = 5153.568691253662, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -1.043081283569336e-7, + Ω_0 = 0.5730118600154152, + C_is = 1.30385160446167e-8, + i_0 = 0.942073253292395, + C_rc = 208.875, + ω = 0.3072108597425673, + Ω_dot = -8.057478483463671e-9, + IODE_Sub_3 = "01101110", + i_dot = -3.328710082707509e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001101110", - false, - 6.984919309616089e-9, - 136800, - 0.0, - 4.888534022029489e-12, - 9.242305532097816e-5, - "01101110", - 29.53125, - 5.002351225150362e-9, - 3.0615288470223163, - 1.5329569578170776e-6, - 0.00589060562197119, - 8.42846930027008e-6, - 5153.568691253662, - 136800, - false, - 31, - -1.043081283569336e-7, - 0.5730118600154152, - 1.30385160446167e-8, - 0.942073253292395, - 208.875, - 0.3072108597425673, - -8.057478483463671e-9, - "01101110", - -3.328710082707509e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001101110", + l2pcode = false, + T_GD = 6.984919309616089e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = 4.888534022029489e-12, + a_f0 = 9.242305532097816e-5, + IODE_Sub_2 = "01101110", + C_rs = 29.53125, + Δn = 5.002351225150362e-9, + M_0 = 3.0615288470223163, + C_uc = 1.5329569578170776e-6, + e = 0.00589060562197119, + C_us = 8.42846930027008e-6, + sqrt_A = 5153.568691253662, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -1.043081283569336e-7, + Ω_0 = 0.5730118600154152, + C_is = 1.30385160446167e-8, + i_0 = 0.942073253292395, + C_rc = 208.875, + ω = 0.3072108597425673, + Ω_dot = -8.057478483463671e-9, + IODE_Sub_3 = "01101110", + i_dot = -3.328710082707509e-10, ), GNSSDecoder.GPSL1Constants( 300, @@ -1330,80 +1330,80 @@ function make_gps_states() uint320"0xe2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c070a63eaecc8b01c020ace4d54", uint320"0x75c8b01c020ace2c24794c9aa2bc694ec1e0cf2664a879f120f41ea78f1ffb5fe6c070a63eaecc8b", GNSSDecoder.GPSL1Data( - 4, - false, - nothing, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001001110", - false, - 1.862645149230957e-9, - 136800, - 0.0, - -6.366462912410498e-12, - -0.0001393994316458702, - "01001110", - 82.25, - 4.257677349351526e-9, - 1.25128819523303, - 4.505738615989685e-6, - 0.00944566575344652, - 6.81169331073761e-6, - 5153.686637878418, - 136800, - false, - 31, - -5.029141902923584e-8, - 1.66429757866306, - 1.601874828338623e-7, - 0.9756900633046096, - 257.375, - 0.6281523291801417, - -8.07676500111026e-9, - "01001110", - -1.2286226056345314e-10, + last_subframe_id = 4, + integrity_status_flag = false, + TOW = nothing, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001001110", + l2pcode = false, + T_GD = 1.862645149230957e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -6.366462912410498e-12, + a_f0 = -0.0001393994316458702, + IODE_Sub_2 = "01001110", + C_rs = 82.25, + Δn = 4.257677349351526e-9, + M_0 = 1.25128819523303, + C_uc = 4.505738615989685e-6, + e = 0.00944566575344652, + C_us = 6.81169331073761e-6, + sqrt_A = 5153.686637878418, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -5.029141902923584e-8, + Ω_0 = 1.66429757866306, + C_is = 1.601874828338623e-7, + i_0 = 0.9756900633046096, + C_rc = 257.375, + ω = 0.6281523291801417, + Ω_dot = -8.07676500111026e-9, + IODE_Sub_3 = "01001110", + i_dot = -1.2286226056345314e-10, ), GNSSDecoder.GPSL1Data( - 3, - false, - 132768, - false, - true, - 112, - 1, - 2.0, - "000000", - "0001001110", - false, - 1.862645149230957e-9, - 136800, - 0.0, - -6.366462912410498e-12, - -0.0001393994316458702, - "01001110", - 82.25, - 4.257677349351526e-9, - 1.25128819523303, - 4.505738615989685e-6, - 0.00944566575344652, - 6.81169331073761e-6, - 5153.686637878418, - 136800, - false, - 31, - -5.029141902923584e-8, - 1.66429757866306, - 1.601874828338623e-7, - 0.9756900633046096, - 257.375, - 0.6281523291801417, - -8.07676500111026e-9, - "01001110", - -1.2286226056345314e-10, + last_subframe_id = 3, + integrity_status_flag = false, + TOW = 132768, + alert_flag = false, + anti_spoof_flag = true, + trans_week = 112, + codeonl2 = 1, + ura = 2.0, + svhealth = "000000", + IODC = "0001001110", + l2pcode = false, + T_GD = 1.862645149230957e-9, + t_0c = 136800, + a_f2 = 0.0, + a_f1 = -6.366462912410498e-12, + a_f0 = -0.0001393994316458702, + IODE_Sub_2 = "01001110", + C_rs = 82.25, + Δn = 4.257677349351526e-9, + M_0 = 1.25128819523303, + C_uc = 4.505738615989685e-6, + e = 0.00944566575344652, + C_us = 6.81169331073761e-6, + sqrt_A = 5153.686637878418, + t_0e = 136800, + fit_interval = false, + AODO = 31, + C_ic = -5.029141902923584e-8, + Ω_0 = 1.66429757866306, + C_is = 1.601874828338623e-7, + i_0 = 0.9756900633046096, + C_rc = 257.375, + ω = 0.6281523291801417, + Ω_dot = -8.07676500111026e-9, + IODE_Sub_3 = "01001110", + i_dot = -1.2286226056345314e-10, ), GNSSDecoder.GPSL1Constants( 300, From 57e552088bc572d8caca42728a043f3707b17738 Mon Sep 17 00:00:00 2001 From: Soeren Schoenbrod Date: Thu, 18 Jun 2026 15:35:39 +0000 Subject: [PATCH 3/3] fix(benchmark): pick GPS L1 type by GNSSSignals version AirspeedVelocity runs the PR's benchmark script against both the base and PR revisions, which resolve different GNSSSignals major versions. Select GPSL1CA (GNSSSignals 2) or GPSL1 (GNSSSignals 1) at load time so the fixtures build under either revision. Co-Authored-By: Claude Opus 4.8 --- benchmark/fixtures.jl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/benchmark/fixtures.jl b/benchmark/fixtures.jl index f18776d..38add96 100644 --- a/benchmark/fixtures.jl +++ b/benchmark/fixtures.jl @@ -11,6 +11,11 @@ using Unitful: Hz BitIntegers.@define_integers 288 BitIntegers.@define_integers 320 +# GNSSSignals renamed GPSL1 -> GPSL1CA in v2. AirspeedVelocity runs this script +# against both the PR and the base revision, which may resolve either GNSSSignals +# major version, so pick whichever GPS L1 C/A type this version provides. +const GPSL1CASystem = isdefined(GNSSSignals, :GPSL1CA) ? GNSSSignals.GPSL1CA : GNSSSignals.GPSL1 + "5 Galileo E1B satellites over Aachen, 2021-05-31 (from test/pvt.jl)." function make_galileo_states() galileo_e1b = GalileoE1B() @@ -506,7 +511,7 @@ end "9 GPS L1 satellites over Aachen, 2021-05-31 (from test/pvt.jl)." function make_gps_states() - gpsl1 = GPSL1CA() + gpsl1 = GPSL1CASystem() states = [ SatelliteState(; decoder = GNSSDecoderState(