Commit Graph
7352 Commits
Author SHA1 Message Date
Carles Fernandez e7e3543ebf Merge branch 'fix/beidou-b1i-opt-acq-fs' of https://github.com/OuWenhao16/gnss-sdr into OuWenhao16-fix/beidou-b1i-opt-acq-fs 2026-07-30 17:23:23 +02:00
OuWenhao16 51be7df31e Use a 4 MHz optimal acquisition rate for BeiDou B1I.
Lower BEIDOU_B1I_OPT_ACQ_FS_SPS to ~2 samples/chip (same ratio as GPS
L1 at 2 MHz) and apply it in the flowgraph acquisition resampler path,
without changing GLONASS or BeiDou B3 sampling behavior.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-07-30 22:11:19 +08:00
Carles Fernandez 2ebe3897d0 Fix BeiDou Klobuchar beta1/beta2 assignment in RTKLIB nav data
ion_cmp[5] and ion_cmp[6] were both set to beta0 instead of beta1 and beta2. Currently harmless since ion_cmp has no readers yet, but the stored parameters were wrong. Spotted by @OuWenhao16 in #1039.
2026-07-29 19:17:23 +02:00
Carles Fernandez f491de3ad9 Fix uncaught exception 2026-07-28 18:54:12 +02:00
Carles Fernandez df27f18f7d Fix data race 2026-07-28 18:51:16 +02:00
Carles Fernandez bd2d002a97 Prevent invalid C/N0 smoother initialization 2026-07-27 20:26:58 +02:00
Carles Fernandez a8c76ce0b4 Improve CN0 estimation and lock detection in tracking blocks 2026-07-27 20:00:58 +02:00
Carles Fernandez 5451c100b6 Fix malformed XML ephemeris handling
Validate GPS and QZSS ephemeris map keys and PRNs when loading XML assistance. Restore QZSS system and satellite block metadata after deserialization, and load LNAV assistance for QZSS-only configurations. Guard RINEX generation against malformed records and missing satellite block metadata to prevent exceptions in the PVT worker.
2026-07-21 09:12:36 +02:00
Carles Fernandez a042c214a7 Make clang-tidy happy 2026-07-20 20:02:52 +02:00
Carles Fernandez 73a2a1c2a4 Fix PVT time tags in solutions without GPS satellites 2026-07-20 19:41:16 +02:00
Carles Fernandez 1d1154fc25 Fix week rollover in Galileo UTC parameters 2026-07-20 18:48:43 +02:00
Carles Fernandez ebf2e402e7 Improve Galileo alert page handling 2026-07-20 18:35:14 +02:00
Carles Fernandez 899bcfe110 Fix formatting 2026-07-20 13:01:36 +02:00
Carles Fernandez 0d1246b1f0 Add block for two new Galileo satellites 2026-07-20 12:29:09 +02:00
Carles Fernandez 6e5590420d Fix Galileo ephemeris handling across PVT outputs 2026-07-19 22:43:48 +02:00
Carles Fernandez fff8dd9b0e Make clang-tidy happy 2026-07-19 11:00:35 +02:00
Carles Fernandez a7e72cd522 Fix Galileo reduced CED handling 2026-07-19 10:10:56 +02:00
Carles Fernandez 4ca75aaa6e Fix handling of Galileo alert page 2026-07-19 00:51:16 +02:00
Carles Fernandez 091452251d Fix Galileo UTC model flag 2026-07-19 00:33:23 +02:00
Carles Fernandez f0482371fe Fix ISM mask 2026-07-18 07:46:04 +02:00
Carles Fernandez 07fb80e132 Fix GGTO handling (see ICD 5.1.8) 2026-07-17 21:29:38 +02:00
Carles Fernandez 289096ae8e Fix t0_ISM overflow 2026-07-17 20:58:17 +02:00
Carles Fernandez cec340f4aa Propagate broadcast SISA and NAPA to PVT 2026-07-17 20:49:00 +02:00
Carles Fernandez 72fc53c2c6 Fix Broadcast Group Delay application in Galileo E1 signals 2026-07-17 20:24:56 +02:00
Carles Fernandez badcf81c87 Merge branch 'fix-double-pvt' into next 2026-07-16 15:12:42 +02:00
Carles Fernandez 7bcaab8e57 Make clang-tidy happy 2026-07-16 14:45:41 +02:00
Carles Fernandez 93967135ff Fix date in old files processing 2026-07-16 13:41:00 +02:00
Carles Fernandez 05cf7e7aed Fix double PVT solve and dump when Rx clock correction is disabled 2026-07-16 11:14:12 +02:00
Carles Fernandez 74654a8ad6 Improve adjustment of bit sync 2026-07-16 09:47:41 +02:00
Carles Fernandez 4f42d2d892 Make clang-tidy happy 2026-07-15 00:49:09 +02:00
Carles Fernandez 29118dd7d2 Improve histogram-based navigation bit synchronization robustness 2026-07-14 15:58:41 +02:00
Carles Fernandez 6c843ca1ba Fix formatting 2026-07-09 21:06:11 +02:00
Carles Fernandez a5811e62a5 Add multi-band NMEA test and preserve GNSS signal IDs for NMEA GSV SNR reporting 2026-07-09 18:04:14 +02:00
Vladslav P 741edd4c65 PVT: Fix missing SNR in NMEA sentences
Propagate SNR from all bands instead of L1 only to rtkpos.

Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-07-09 04:04:15 +03:00
Carles Fernandez 7de0415b11 Merge branch 'better-trk' of github.com:carlesfernandez/gnss-sdr into next 2026-07-05 15:11:38 +02:00
Carles Fernandez b3c4dbccaf Merge branch 'better-acq' into next 2026-07-05 13:47:44 +02:00
Carles Fernandez 6bc138fbed Merge branch 'qzss-nmea-fix' of https://github.com/vladisslav2011/gnss-sdr into vladisslav2011-qzss-nmea-fix 2026-07-04 17:15:16 +02:00
Carles Fernandez 64075065a9 Fix building in old compilers 2026-07-04 16:13:56 +02:00
Carles Fernandez 028ebe433d QZSS: refine L1 C/B support
- Restore true chip semantics for L1: QZSS_L1_CHIP_RATE is 1.023 Mcps and
  QZSS_L1_CODE_LENGTH is 1023 chips again. The replica carries
  QZSS_L1_SAMPLES_PER_CHIP = 2 samples per chip (L1 C/A chips duplicated,
  L1 C/B sinBOC(1,1) subchips), following the Galileo E1 approach. The
  generated waveform is unchanged, but Tracking_1J.early_late_space_chips
  is expressed in chips again, consistently with all other signals.
- Normalize the DLL discriminator with the sinBOC(1,1) correlation
  function when the tracked PRN broadcasts L1 C/B, selected per PRN in
  start_tracking(); warn if the configured correlator spacing falls
  outside the BOC(1,1) correlation main peak (> 0.33 chips).
- Attribute L1 C/B observables and ephemerides (PRN 203-206) to the PRN
  of the satellite's nominal PNT signals (RINEX 4.00, Table 6), so RINEX,
  RTCM and rtklib identify the transmitting satellite correctly and
  multi-frequency observations of the same satellite are paired instead
  of counted twice.
- Do not search QZSS L5 signals for PRNs above 202, which have no L5
  PRN code assigned in IS-QZSS-PNT.
- Remove reserved, non-operational PRNs 198 and 202 from the default
  QZSS search list; they remain selectable via the QZSS.prns option.
- Fix a potential std::out_of_range in
  GNSSFlowgraph::priorize_satellites() when assisted acquisition
  prioritizes satellites of a constellation with only a subset of its
  signals configured.
2026-07-04 15:31:03 +02:00
Carles Fernandez 75e21aeedb Merge branch 'qzss_l1cb' of https://github.com/vladisslav2011/gnss-sdr into vladisslav2011-qzss_l1cb 2026-07-04 13:34:20 +02:00
Carles Fernandez 6848bcb1f6 Merge branch 'fix-monitor' into next 2026-07-04 10:37:19 +02:00
Carles Fernandez 339ed2b0b4 LabSat source: avoid undefined behaviour in malformed files 2026-07-03 21:27:33 +02:00
Carles Fernandez ed5a75e31e Make the Monitor report channels without a valid time reference
The Monitor block is fed from the Observables output, which only
produced data for channels with a decoded time of week. Galileo E6
channels cannot obtain the TOW from HAS pages alone, so E6-only
configurations never produced any Monitor output. When
Monitor.enable_monitor=true, the Observables block now emits every
epoch, filling channels without valid observables with their latest
tracking data (C/N0, Doppler, carrier phase), flagged as invalid so
that the PVT engine and other consumers keep ignoring them.

Fixes #1018
2026-07-03 21:24:17 +02:00
Vladislav P 1146a5285c QZSS: L1C/B implementation
Increase QZSS L1 chip rate to 2.046MHz to handle L1 C/B BOC(1,1)
sequences
Increase QZSS L1 code length to 2046 to handle L1 C/B BOC(1,1)
sequences
Increase maximum QZSS PRN to 206
Implement optional BOC(1,1) sequence generation

Signed-off-by: Vladislav P <vladisslav2011@gmail.com>
2026-07-03 20:27:37 +03:00
Carles Fernandez 0328dd38b6 kf_tracking: fuse pilot and data correlation into a single wipe-off pass
Results are bit-for-bit equivalent to the previous two-correlator
implementation, verified over 3- and 5-tap configurations with both the
normal and high-dynamics resampler paths.
2026-07-02 22:36:01 +02:00
Vladslav P c19e24a3b4 rtklib_solution: implement QZGSA/QZGSV sentences
Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-07-01 03:20:28 +03:00
Carles Fernandez fa96ce13a0 Fuse pilot and data correlation into a single carrier wipe-off pass
When tracking the pilot component, dll_pll_veml_tracking previously ran
two separate carrier wipe-off passes over the same input samples: one
for the pilot correlator taps and a second, redundant pass through a
dedicated Cpu_Multicorrelator_Real_Codes instance to compute only the
data prompt. The carrier rotation dominates the per-sample cost, so it
was effectively being computed twice over identical data.
Extend Cpu_Multicorrelator_Real_Codes with optional data-prompt support
(init with has_data_prompt, set_data_code_and_prompt_tap, and
Carrier_wipeoff_multicorrelator_resampler_with_data_prompt) that
resamples one extra local-code buffer for the data prompt and computes
all pilot taps plus the data prompt under a single carrier rotator via
one VOLK_GNSSSDR xN kernel call. Scratch buffers are allocated at init,
so there are no per-call heap allocations in the hot path. Both the
normal and high-dynamics resampler/rotator paths are preserved, and the
second correlator instance is no longer used for CPU VEML tracking.
Results are bit-for-bit equivalent to the previous two-pass
implementation.
This cuts tracking-loop time by ~33% (about 1.5x throughput) for
pilot-tracked signals (GPS L5, Galileo E1/E5a/E5b/E6, QZSS L5). Data-only tracking
(track_pilot = false) is unchanged.
2026-06-30 21:37:22 +02:00
Carles Fernandez 3bfbb1904d Prepare PCPS grids for batch FFT processing
Store PCPS Doppler wipeoffs and magnitude grids in flat, stride-aligned buffers instead of nested vectors. This reduces per-row indirection, improves cache locality, and makes the Doppler-bin data layout suitable for future batch FFT planning.
2026-06-30 20:29:50 +02:00
Carles Fernandez bdfc7883fd Acquisition: reuse PCPS assisted and fine Doppler buffers 2026-06-30 20:04:51 +02:00
Carles Fernandez 32e1aac6f6 Improve QuickSync acquisition implementation
Move QuickSync acquisition temporary buffers out of general_work() and
initialize them once in the block constructor. Clear the FFT input buffer
directly with std::fill_n() for each Doppler bin instead of recreating and
copying d_signal_folded.
2026-06-30 19:53:50 +02:00