diff --git a/README.md b/README.md index acb6cda..d78dcef 100755 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Currently implemented: * GPS L1C-D (CNAV-2) * GPS L2C (CNAV) * GPS L5I (CNAV) - * Galileo E1B (I/NAV) + * Galileo E1B (I/NAV), including the BOC(1,1) approximation * Galileo E5a (F/NAV) ## Installation diff --git a/src/galileo/e1b.jl b/src/galileo/e1b.jl index 30c1c42..60563ad 100644 --- a/src/galileo/e1b.jl +++ b/src/galileo/e1b.jl @@ -586,6 +586,17 @@ function GNSSDecoderState(system::GalileoE1B, prn) GalileoE1BDecoderState(prn) end +# GalileoE1B_BOC11 is the BOC(1,1) approximation of Galileo E1B — a lower +# sampling-rate replica many software receivers substitute for the full +# CBOC(6,1,1/11) spec (see GNSSSignals.jl `GalileoE1B_BOC11`). It carries the +# *identical* I/NAV navigation message: same 4092-chip primary code, same +# 250 bps data rate, same page/word structure. The modulation difference is a +# tracking/acquisition concern only, so decoding reuses the E1B decoder +# unchanged. +function GNSSDecoderState(system::GalileoE1B_BOC11, prn) + GalileoE1BDecoderState(prn) +end + """ $(TYPEDSIGNATURES) diff --git a/test/galileo_e1b.jl b/test/galileo_e1b.jl index 1fef298..3b29ee5 100644 --- a/test/galileo_e1b.jl +++ b/test/galileo_e1b.jl @@ -10,6 +10,15 @@ const GALILEO_E1B_DATA = [ @test GalileoE1BDecoderState(21) == GNSSDecoderState(galileo_e1b, 21) end +@testset "Galileo E1B BOC(1,1) constructor" begin + # The BOC(1,1) approximation carries the identical I/NAV message, so it + # dispatches to the same decoder state as full-CBOC Galileo E1B. + galileo_e1b_boc11 = GalileoE1B_BOC11() + + @test GalileoE1BDecoderState(21) == GNSSDecoderState(galileo_e1b_boc11, 21) + @test GNSSDecoderState(GalileoE1B(), 21) == GNSSDecoderState(galileo_e1b_boc11, 21) +end + @testset "Galileo E1B test data decoding" begin decoder = GalileoE1BDecoderState(21)