17 Commits
Author SHA1 Message Date
Carles Fernandez 95c72618f8 Fix Galileo telemetry decoder races during reset and satellite changes 2026-09-28 13:19:07 +02:00
Carles Fernandez fd70179392 Fix Galileo preamble confirmation with intervening payload matches
Preserve the candidate anchor until its expected confirmation point.
Replace it only after confirmation is missed, preventing payload
correlations from repeatedly displacing a valid preamble.
2026-09-28 10:56:34 +02:00
Carles Fernandez 20a0a69780 Fix acquisition code phase handed to tracking in GPS L1 C/A tests, restore Doppler search range in GLONASS L1 C/A acquisition test 2026-09-27 13:22:23 +02:00
Carles Fernandez f0e75ce558 Improve SBAS L1 telemetry decoder and simplify SBAS adapters
Compensate the Viterbi traceback delay when timestamping decoded SBAS
messages by carrying per-sample reception timestamps through the sample
and symbol aligners (removes a ~140 ms bias), with a deterministic unit
test covering the FIFO pairing.
Protect decoder state with d_setlock in reset(), set_satellite(),
set_channel() and general_work(), following the convention of the other
telemetry decoders.
Share per-PRN EMS dump files through a per-run dump session: the first
open in a run truncates stale data, later opens append, so channel
reassignments no longer wipe previously decoded messages.
2026-08-08 12:10:10 +02:00
miguekf ef7df8f5ad Guard SBAS Viterbi startup traceback
Wait until the continuous decoder has accumulated the requested traceback depth before advancing trellis iterators. Add a regression test for the 30-bit SBAS input block versus its 35-bit traceback depth.

Signed-off-by: miguekf <miguel.gomezlopez@uclm.es>
2026-08-04 23:05:33 +02:00
kalmancitoandClaude Opus 5 68bac23bcb Fix sign convention in SBAS message timestamp correction
The symbol alignment term of compute_message_timestamp() used the
opposite sign convention to the sample alignment term. In both
aligners, true means the non-shifted hypothesis won (no correction)
and false means the shifted one won (-1 unit), so the symbol term
must be (symbol_aligned ? 0 : -1).

Two of the unit tests added along with that function were failing as
a result, which is what broke the check step of the CI on all three
platforms.

Also express the correction bound in whole code periods rather than
comparing doubles at an exact boundary: the worst case is 3 code
periods (1 from the sample-pairing ambiguity plus 2 from the
symbol-pairing one), not 2, and the floating-point comparison was
fragile at that boundary.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 23:05:33 +02:00
miguekf f129a4af8e Address PR #1059 review: PRN whitelist, SBAS coherent integration, timestamp, reset, dead code, config
- gnss_satellite.cc: accept the full supported SBAS PRN range (120-138)
  instead of a stale 6-PRN whitelist that rejected valid PRNs such as WAAS
  PRN 133. Per-PRN satellite/service names are no longer hardcoded, since
  that assignment changes over time and cannot be reliably kept up to date
  here (fixes review comments on PRN support and outdated satellite info).
- SBAS_L1.h: cap SBAS_L1_MAX_COHERENT_INTEGRATION_SYMBOLS at 1 (1 ms). The
  telemetry decoder performs its own unsynchronized sample/symbol pairing,
  so extending tracking's coherent integration to 2 ms is unsafe and
  corrupts that pairing.
- sbas_l1_telemetry_decoder_gs.{h,cc}: carry an absolute per-sample/per-bit
  timestamp through the sample buffer and Frame_Detector, replacing the
  buggy offset that anchored the message timestamp to whichever sample was
  current when decoding happened, which could be off by up to a full
  message duration. Add
  sbas_l1_telemetry_decoder_gs::compute_message_timestamp() as a small,
  independently testable helper for the residual sub-bit correction, and a
  matching deterministic unit test.
- sbas_l1_telemetry_decoder_gs.{h,cc}: implement a real reset() that clears
  all decoder buffers/aligners and closes the dump file, so a channel
  reassigned to a different PRN never mixes messages into the previous
  satellite's file.
- Remove the orphan sbas_l1_telemetry_decoder.cc adapter: it includes a
  header that no longer exists and is not part of any CMake target (the
  factory instantiates the GNU Radio block directly), so it silently never
  compiled.
- Dump file: overwrite instead of append on each run, remove the hardcoded
  GNSS-SDR version string, and document that the .ems output is an
  EMS-like raw message dump, not a conformant EMS file.
- conf/File_input/SBAS/gnss-sdr_SBAS_EGNOS_rx.conf: drop the outdated
  PRN/satellite table and per-channel satellite comments, correct the
  coherent-integration note to 1 ms, and clarify that SBAS is not used as
  a ranging source in this configuration.

Signed-off-by: miguekf <miguel.gomezlopez@uclm.es>
2026-08-04 23:05:33 +02:00
Carles Fernandez 07fb80e132 Fix GGTO handling (see ICD 5.1.8) 2026-07-17 21:29:38 +02:00
Carles Fernandez 6e651de493 Improve Viterbi decoder 2026-06-04 00:39:57 +02:00
Carles Fernandez 5b25d4b251 Fix building in ancient environments 2026-05-13 20:36:15 +02:00
Carles Fernandez e13730276b Hardened the Galileo OSNMA protocol implementation (Fixes #968, #967) 2026-05-13 17:05:45 +02:00
Carles Fernandez a8d1e1eaf3 Remove references to old adapters 2026-04-24 11:47:27 +02:00
Carles Fernandez bd77acd4ea Merge branch 'refactor/remove-telemetry-adapters' of https://github.com/MathieuFavreau/gnss-sdr into MathieuFavreau-refactor/remove-telemetry-adapters 2026-04-22 21:21:42 +02:00
Carles Fernandez 19dd599ba5 Remove leftovers of old Tracking adapters 2026-04-22 18:39:13 +02:00
Carles Fernandez 4bd3f09409 Fix performance inefficiencies detected by Coverity Scan 2025-08-11 07:45:22 +02:00
Carles Fernandez 32e7dc03ae Fix typos detected by codespell 2025-02-10 13:20:14 +01:00
Carles Fernandez 825037592a Remove build and data folders, move tests and utils to the base of the source tree 2024-10-04 11:55:09 +02:00