Commit Graph
7321 Commits
Author SHA1 Message Date
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
Carles Fernandez b898bcad28 Fix segmentation fault when receiving QZSS signals and the RTCM printer is enabled 2026-06-29 16:09:37 +02:00
Carles Fernandez 2c911ba8f6 Merge branch 'galileo-E5-acquisition-crash-fix' of https://github.com/vladisslav2011/gnss-sdr into vladisslav2011-galileo-E5-acquisition-crash-fix 2026-06-29 13:31:20 +02:00
Vladslav P ec3317c20a pcps_acquisition: fix crash in PcpsAcquisitionAdapterCustom::set_local_code
... when Acquisition_5X.coherent_integration_time_ms is greater than 1.
In this case vectors codeQ_, codeI, codeQ are constructed with
code_length size, but written with vector_length which results in
arbitrary memory overwriting and crash.
Construct these arrays with vector_length sizeto make sure that there
will be enough space for all primary code replicas and zero padding.

Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-06-29 14:19:32 +03:00
Carles Fernandez 47580c4eb4 volk_gnsssdr: do not write files in source tree when building 2026-06-29 12:26:00 +02:00
Carles Fernandez 0b131707a5 Fix defects detected by Coverity Scan 2026-06-28 14:57:40 +02:00
Carles Fernandez 38d5fbbd04 Use traditional token representation for logical C++ operators and add clang-tidy check 2026-06-28 03:47:13 +02:00
Carles Fernandez e8e67a2278 cpu_festures: avoid undefined behaviour conversions from unaligned char* to int* 2026-06-28 01:47:54 +02:00
Carles Fernandez 0e124792f8 Remove unused include 2026-06-26 22:26:30 +02:00
Carles Fernandez 59125ea83d Fix LabSat header parsing 2026-06-26 21:38:38 +02:00
Carles Fernandez d0d10ee824 Fix LabSat single-channel endian decoding 2026-06-26 21:25:08 +02:00
Carles Fernandez 2bdc1406f9 Fix conversion in LabSat source 2026-06-26 17:11:35 +02:00
Carles Fernandez 531f8d3ebc Improved Labsat_Signal_Source support for LabSat 2, LabSat 3, and LabSat 3 Wideband recordings 2026-06-26 14:19:32 +02:00
Carles Fernandez 6b16548735 Improve consistency of acquisition dumps 2026-06-23 11:00:39 +02:00
Carles Fernandez b057a8a43a Add work on ION_GSMS_Signal_Source GSS6450_File_Signal_Source 2026-06-22 09:46:01 +02:00
Carles Fernandez d95d3cbcb5 Add work on GNSS Sofware Defined Receiver Metadata Standard 2026-06-21 21:14:21 +02:00
Carles Fernandez 6b77e477f1 Improve ION_GSMS_Signal_Source implementation 2026-06-21 00:03:24 +02:00
Carles Fernandez 9aa9ca72e4 Merge branch 'fix-openssl4' into fix-gss6450 2026-06-20 13:03:56 +02:00
Carles Fernandez e9077a6e11 Fix compatibility with OpenSSL versions 2026-06-20 13:03:31 +02:00
Carles Fernandez e18e8f358b Improve const correctness 2026-06-20 03:37:26 +02:00
Carles Fernandez 5b67374074 Merge branch 'fix-openssl4' into fix-gss6450 2026-06-20 02:57:57 +02:00
Carles Fernandez 5f6c573c13 Fix linking against OpenSSL 4 2026-06-20 02:50:58 +02:00
Carles Fernandez 40feb38812 Rename Spir_GSS6450_File_Signal_Source to GSS6450_File_Signal_Source 2026-06-20 02:19:01 +02:00
Carles Fernandez 7c4ece6ca9 Fix valve stream signatures for multistream sources 2026-06-20 01:47:12 +02:00
Carles Fernandez 00190135a6 Fix formatting 2026-06-19 17:57:20 +02:00
Carles Fernandez 24a3932477 Improve Spir_GSS6450_File_Signal_Source implementation 2026-06-19 08:34:32 +02:00
Minhaj AhmadandMinhaj Ahmad a02cdef172 housekeeping
Signed-off-by: Minhaj Ahmad <mahmad12@crimson.ua.edu>
Signed-off-by: Minhaj Ahmad <minhaj.sixbyte@gmail.com>
2026-06-15 11:12:10 -05:00
Minhaj AhmadandMinhaj Ahmad f9bfbb9b44 Add Pocket_SDR_Signal_Source for Pocket SDR FE front-ends
New optional signal source adapter for the Pocket SDR FE 2CH/4CH/8CH
open-source GNSS RF front-ends, instantiating the gr-pocketsdr OOT
source block. Enable with -DENABLE_POCKETSDR=ON (requires gr-pocketsdr,
found via CMAKE_PREFIX_PATH or GRPOCKETSDR_ROOT).

The device is configured with a standard PocketSDR configuration file
(pocket_conf format) passed via SignalSource.conf_file; sampling rate
and LO frequency are read back from the device and validated against
SignalSource.sampling_frequency / SignalSource.freq.

Signed-off-by: Minhaj Ahmad <mahmad12@crimson.ua.edu>
Signed-off-by: Minhaj Ahmad <minhaj.sixbyte@gmail.com>
2026-06-15 11:12:09 -05:00
Carles Fernandez 011aed587d Merge branch 'fix-e6-obs' into next 2026-06-14 08:44:23 +02:00
Carles Fernandez bd74d11ba7 Fix for old Glonass signals 2026-06-13 21:02:40 +02:00
Carles Fernandez 4e2d0d4b30 CMake: Fix incorrect find_program result checks 2026-06-13 12:34:04 +02:00
Carles Fernandez 360a24c9ac Clang-tidy fixes 2026-06-13 12:24:59 +02:00