Commit Graph
26 Commits
Author SHA1 Message Date
Carles Fernandez 2e682cce8e Update to new BeiDou PRN assignments
See http://www.beidou.gov.cn/yw/xwzx/202603/t20260320_29266.html
2026-09-29 13:01:30 +02:00
joebre 58e30deb54 Reintroduce dual_freq_assisted_doppler_narrowing as an opt-out for cross-signal Doppler narrowing
Acquisition_<signal>.dual_freq_assisted_doppler_narrowing (default
true, preserving current behavior) lets a specific signal's
acquisition be forced back to a full, unaided Doppler search even
while GNSS-SDR.assist_dual_frequency_acq is enabled for the other
signals. Knowingly reintroduces part of what f7948f4af retired under
#1097, under a clearer name -- see PR description for the regression
and spoofing-resilience evidence motivating it.
2026-09-24 17:16:42 +02:00
Carles Fernandez 6dc1eb2a90 Add LDPC decoder to the BeiDou B2a processing chain
Improve color consistency in console messages
2026-09-18 13:15:21 +02:00
Carles Fernandez 1ae0eaeedb Fix unused private member, rename file_offset by seconds_to_skip, update comments 2026-09-17 20:54:25 +02:00
joebre 6c998ac558 Add missing REUSE/SPDX license header to the new reference conf
Matches every other .conf file's header in this repo.
2026-09-17 14:52:20 +02:00
joebre 93e9e00296 Add an EVK1029 dual-band Galileo E1+E5a / GPS L1+L5 reference conf
A complete, ready-to-edit example config for EVK1029_Signal_Source with
RF_channels=2, demonstrating the file_offset seeking option added in
this PR alongside the rest of the signal chain, acquisition/tracking
Doppler-narrowing assist, runtime visibility-aware acquisition search,
AGNSS aiding, and the remote monitor/telecommand interfaces -- all keys
verified against this branch's source to confirm they're implemented.
2026-09-17 14:25:34 +02:00
huangchuhan 849c18b0e6 Add BeiDou-3 B2a RNSS single-frequency SPP (B-CNAV2).
Introduce the 5D signal chain: ICD BPSK(10) replica, PCPS acquisition,
DLL-PLL tracking (1 ms data component), and a first-cut B-CNAV2 decoder
(preamble + CRC-24Q, MT10/MT11/MT30, systematic 288 bits, no 64-ary
LDPC). GEO and BDS-2 PRNs are not assigned B2a channels. B2a-only SPP
remaps 5D onto RTKLIB slot 0 with lam[0]=c/FREQ5.

Signed-off-by: huangchuhan <huangchh37@mail2.sysu.edu.cn>
2026-09-08 15:05:32 +08:00
joebre 8f67752b9e Address review: memory safety, candidate selection, PFA, dump, naming
- Rename doppler_uncertanty -> doppler_uncertainty throughout (interface,
  adapter, block, comments, log message).

- Fix the out-of-bounds write and mis-detection in narrowed-mode
  activation: track it with an explicit d_doppler_search_narrowed flag,
  set directly in set_doppler_uncertainty() and guarded on
  d_num_doppler_bins > 1, instead of inferring it from
  "d_num_doppler_bins_active < d_num_doppler_bins". That inferred check
  broke two ways: for a 1-bin full grid (a valid, already-accepted
  config), it still forced 2 active bins, writing past the grid/wipeoff
  allocations sized to d_num_doppler_bins; for a 2-bin full grid, an
  actually-narrowed request computes the same active count as the full
  grid (2 < 2 is false), so it silently searched the full grid's own
  bin layout instead of the assisted {center, center + doppler_max}
  pair. Reproduced the out-of-bounds write directly (temporarily
  reverting to the inferred check crashes with "corrupted double-linked
  list" under the new NarrowingEnabledOneBinGrid test) and the
  mis-detection (NarrowingEnabledTwoBinGrid).

- Keep the noise-reference bin out of candidate selection: both
  max_to_input_power_statistic() and first_vs_second_peak_statistic()
  now take a separate candidate_count, used only for the peak-search
  loop bound; the CFAR path's own num_doppler_bins (used for the
  "opposite bin" reference lookup) is unchanged. In narrowed mode,
  candidate_count is 1 -- the noise-reference bin can no longer win and
  be reported as the acquisition result, regardless of its own power
  (verified against a live signal deliberately placed in the reference
  bin instead of the known/candidate bin: reverting this fix, both the
  CFAR and peak-ratio statistic mistakenly report the reference bin's
  Doppler as if it were the assisted center).

- Recalibrate the acceptance threshold for narrowed acquisition: adds
  d_threshold_narrowed, computed like d_threshold but with
  num_doppler_bins = 1 (the true candidate count in narrowed mode)
  instead of the full grid's bin count, since compute_threshold() folds
  the candidate count into the false-alarm probability and reusing the
  full-grid threshold in narrowed mode was effectively far stricter
  than the requested PFA. get_threshold() returns it whenever
  d_doppler_search_narrowed is true.

- Fix narrowed dump layout/metadata: ensure_dump_grid_allocated() now
  sizes acq_grid to d_num_doppler_bins_active (not the full grid width),
  matching what copy_magnitude_grid_to_dump_grid() actually writes each
  cycle -- this also makes narrow<->full transitions between dumps
  self-correcting. dump_results() writes accurate, mode-appropriate
  doppler_max/doppler_step (the same {0, doppler_max} encoding
  compute_statistics() uses internally when narrowed), plus new
  doppler_center and doppler_narrowed fields so offline post-processing
  can tell which encoding is in effect. Verified end to end against a
  live dump (NarrowedDumpMetadata).

- Strengthen Acq_Conf::enable_doppler_narrowing's doc comment (default,
  which implementations it applies to, its dependency on the caller
  passing doppler_uncertainty == 0) and add a commented usage example
  next to GNSS-SDR.assist_dual_frequency_acq in a dual-frequency
  Galileo E1B+E5a example config.

- Add tests/.../pcps_acquisition_doppler_narrowing_test.cc: 8 focused
  tests (narrowing enabled/disabled, 1-bin and 2-bin full-grid
  configurations, CFAR and peak-ratio statistics, a full-narrow-full
  transition, two-step acquisition with step-1 narrowing, and narrowed
  dump metadata), built on the same real-capture/known-ground-truth
  pattern as gps_l1_ca_pcps_acquisition_test.cc. Confirmed each targeted
  regression test actually fails without its corresponding fix before
  finalizing them.

Signed-off-by: joebre <joel.brenner@saphyrion.ch>
2026-08-31 09:38:13 +02:00
Carles Fernandez 48bf115ca6 Improve SBAS examples 2026-08-09 10:02:27 +02:00
Carles Fernandez 1f9afe4431 Implement SBAS/EGNOS correction path 2026-08-09 07:55:04 +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
Carles Fernandez 697f3fab66 Merge branch 'ft/sbas' of https://github.com/gnss-sdr/gnss-sdr-vtl into gnss-sdr-ft/sbas 2026-08-08 10:38:50 +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
OuWenhao16 aa1ca2163d Fix SOH framing/sync-loss and other questions raised by the PM.
Keep BeiDou B1C/CNAV1-focused changes; remove B1I OPT_ACQ, outlier PR
gating, DNAV toe/sqrt(A) sanity, and Flag_cycle_slip move-assignment submitted separately.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-01 02:32:19 +08:00
OuWenhao16 97680490e0 Address Project Manager review feedback for BeiDou B1C/CNAV1.
Put B1C on RTKLIB slot 0 with prefer-B1C XOR and lam[0] override,
align QMBOC quadrature and BCH thresholds with the ICD, fix BDGIM
nearest-odd-hour t_p and CNAV1 ephemeris defaults, tighten math/constants
usage, and drop the non-reproducible LDPC generator script. Move replica,
LDPC, and navigation unit tests into the default test set.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-01 02:32:18 +08:00
OuWenhao16 da9eba4af2 Remove redundant BeiDou PVT pre-filters in the src/algorithms/PVT/libs/rtklib_solver.cc.
Update pseudorange outlier rejection
- Gate relative pseudorange rejection behind a new configuration flag
  `Observables.reject_outlier_pseudoranges` (default: true) to prevent
  premature PVT breakage and improve space compatibility.
Align B1C with unified adapters.
- Fold B1C acquisition/tracking/telemetry into PcpsAcquisitionAdapter,
  DllPllTrackingAdapter, and TelemetryDecoderAdapter, and add SPDX author
  headers for the B1C/CNAV1 contribution files.
Fix B1C ICD alignment for eph, TGD, UTC, and PR gating.
Gate CNAV1 publish on IODE/IODC, fix gettgd SYS_BDS selection,
correct LS/LSF and UTC scales, and drop the MEO-biased PR median cut.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-01 02:32:17 +08:00
OuWenhao16 e633273448 Fix B1C PVT: separate B1I/B1C bands, isolate DNAV/CNAV1, and harden hybrid solving.
Map B1C to its own RTKLIB frequency/wavelength, apply correct TGD/ISC and BDGIM,
and define same-PRN mixed-signal policy with regression tests and conf notes.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-01 02:32:16 +08:00
OuWenhao16 77f2c18f01 Add BeiDou B1C (signal 1D) signal processing and CNAV1 support.
Integrate acquisition, pilot/data tracking, B-CNAV1 telemetry decoding, and
PVT/RINEX hooks on upstream/next with minimal changes to shared blocks.
Includes example configuration, code generators, and unit tests.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-08-01 02:32:08 +08:00
kalmancito 81f4c8846b Add SBAS support 2026-07-30 17:40:43 +02:00
Carles Fernandez b05b6c0d01 Remove leftovers of Glonass C_Aid implementation 2025-12-11 22:25:00 +01:00
pedromiguelcp f1eaf5253e feat: add multichannel support for ntlab adapter 2025-07-11 14:36:26 +01:00
pedromiguelcp ef01835b28 feat: add signal source adapter for NTLab NT1065 2025-07-11 14:36:25 +01:00
Carles Fernandez 32e7dc03ae Fix typos detected by codespell 2025-02-10 13:20:14 +01:00
Carles Fernandez 2a98217f25 Remove references to the data folder 2024-10-04 19:43:07 +02:00
Carles Fernandez 58ded939ad Fix end of line format 2024-10-04 11:55:42 +02:00
kalmancito 90b2f804d8 [manag] tidy conf files 2024-01-29 11:44:59 +01:00