568 Commits
Author SHA1 Message Date
Carles Fernandez 87d8a6991e Improve carrier phase integrity in the RTK engine 2026-08-15 21:22:41 +02:00
Carles Fernandez 5470aafe85 Add RTKLIB engine improvements 2026-08-11 08:57:04 +02:00
Carles Fernandez 3a557755e4 Add NTRIP v2 and leave v1 as a fallback 2026-08-10 13:26:58 +02:00
Carles Fernandez 059e639a3a Added an opt-in fixed-base RTK path 2026-08-10 11:55:35 +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 11bb1c44c6 Fix formatting 2026-08-08 10:21:13 +02:00
Carles Fernandez d89529b537 Document addition of the BeiDou B1C signal and add Ou Wenhao to the list of authors 2026-08-07 14:45:53 +02:00
Carles Fernandez 833bfb5dd1 Corrected RINEX 3/4 navigation and observation output 2026-08-03 11:47:34 +02:00
Carles Fernandez 5454bc22ee Complete BeiDou D1/D2 DNAV decoding 2026-07-31 19:11:58 +02:00
Carles Fernandez 3fe0226f4b Update changelog 2026-07-31 17:17:23 +02:00
Carles Fernandez 68669a361b Fix group-delay and ionospheric corrections in the RTKLIB SPP solver 2026-07-30 19:42:06 +02:00
Carles Fernandez cfc45fb8bf Store QZSS L5 CNAV UTC and iono parameters separately, log CNVX records
Extend the QZSS L1 C/A LNAV treatment to the L5 CNAV chain: the QZSS-
configured L5 telemetry decoder now publishes dedicated Qzss_CNAV_Iono
and Qzss_CNAV_Utc_Model objects instead of the shared GPS CNAV types,
and PVT keeps them in their own Rtklib_Solver members.

- RINEX 4.02 navigation files get "> STO J  CNVX" QZUT records with the
  UTC(NICT) identifier and "> ION J  CNVX WIDE" Klobuchar records. The
  WIDE subtype, compulsory for the QZSS CNVX ION message type, is
  correct because CNAV Message Type 30 broadcasts the Wide Area
  coefficient set (IS-QZSS-PNT-006; the Japan area set of Message Type
  61 is not decoded).
- QZSS CNAV parameters no longer overwrite the GPS CNAV ones in mixed
  configurations.
- The QZSS slots of the RTKLIB navigation structure take the LNAV
  values with CNAV as fallback, and QZSS-only configurations keep
  feeding the broadcast ionospheric model and the leap second count.
- The XML storage output gains qzss_cnav_utc_model.xml and
  qzss_cnav_iono.xml.
2026-07-30 12:55:28 +02:00
Carles FernandezandClaude Fable 5 4f570e7867 Store QZSS UTC and iono parameters separately and log RINEX 4 QZUT records
The Klobuchar coefficients and the UTC(NICT) offset broadcast by QZSS
satellites in LNAV subframe 4 (both the wide-area and Japan-area pages)
were stored in the shared GPS structures, overwriting the GPS-sourced
values in mixed GPS + QZSS configurations and making it impossible to
label them correctly in RINEX output.

New Qzss_Utc_Model and Qzss_Iono storage classes are now published by
the QZSS-configured L1 C/A telemetry decoder and kept in dedicated
Rtklib_Solver members. With this in place:

- RINEX 4.02 navigation files get "> STO J  LNAV" QZUT records with the
  UTC(NICT) identifier and "> ION J  LNAV" Klobuchar records, and the
  LEAP SECONDS header is updated from QZSS data in QZSS-only setups.
- QZSS-sourced parameters are no longer mislabeled as GPS corrections
  (GPUT / GPS ION or TIME SYSTEM CORR / IONOSPHERIC CORR lines).
- The QZSS slots of the RTKLIB navigation structure (utc_qzs, ion_qzs)
  are now populated; QZSS-only configurations keep feeding the broadcast
  ionospheric model and the leap second count as before.
- The XML storage output gains qzss_utc_model.xml and qzss_iono.xml.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 12:21:59 +02:00
Carles Fernandez b327290af1 Update changelog 2026-07-30 11:27:30 +02:00
Carles Fernandez e52191d476 Add support for RINEX 4.02 observation and navigation files
Activated by setting PVT.rinex_version=4 in the configuration file (or
with the -RINEX_version=4.02 command-line flag). The default behavior
when the parameter is not set remains unchanged (RINEX 3.02).

Observation files are generated in the 4.02 version format. Navigation
files use the data record structure introduced in RINEX 4.00:

- EPH ephemeris records preceded by "> EPH <sat> <msg-type>" header
  lines: GPS/QZSS LNAV, GPS/QZSS CNAV (with its own record layout, Table
  A10), Galileo INAV/FNAV, GLONASS FDMA (including the new BROADCAST
  ORBIT - 4 line with status flags, group delay, URAI and health flags),
  and BeiDou D1/D2.
- Ionospheric corrections logged as ION data records (Klobuchar for GPS
  and BeiDou, NeQuick-G for Galileo) and time system corrections logged
  as STO records (GPUT, GAUT, GAGP, GLUT, GLGP, BDUT) instead of header
  lines, written as soon as the corresponding data are received.
- The compulsory LEAP SECONDS header record, written blank if the data
  are not available yet and updated in place afterwards.
- Navigation data records use the recommended 'e' exponent indicator
  instead of the deprecated FORTRAN 'D' notation.

Also fix update_obs_header() so that the end-of-file position is
preserved after rewriting the header, preventing the destructor from
mistaking an updated observation file for an empty one and deleting it.
2026-07-30 11:22:10 +02:00
Carles Fernandez 73a2a1c2a4 Fix PVT time tags in solutions without GPS satellites 2026-07-20 19:41:16 +02:00
Carles Fernandez b85a2bb22e Update CHANGELOG 2026-07-20 12:36:38 +02:00
Carles Fernandez dd65a5f3a7 Fix formatting 2026-07-20 12:31:44 +02:00
Carles Fernandez 6e5590420d Fix Galileo ephemeris handling across PVT outputs 2026-07-19 22:43:48 +02:00
Carles Fernandez a7e72cd522 Fix Galileo reduced CED handling 2026-07-19 10:10:56 +02:00
Carles Fernandez badcf81c87 Merge branch 'fix-double-pvt' into next 2026-07-16 15:12:42 +02:00
Carles Fernandez 93967135ff Fix date in old files processing 2026-07-16 13:41:00 +02:00
Carles Fernandez 74654a8ad6 Improve adjustment of bit sync 2026-07-16 09:47:41 +02:00
Carles Fernandez 29118dd7d2 Improve histogram-based navigation bit synchronization robustness 2026-07-14 15:58:41 +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
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 47c79a05e6 Update CHANGELOG.md 2026-07-05 10:03:24 +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 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
Carles Fernandez 870997d7cc Update chnagelog 2026-07-02 22:43:57 +02: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
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 e438d08c6e Parameterize Python plotting utilities in utils/python 2026-06-23 15:49:25 +02:00
Carles Fernandez 6b77e477f1 Improve ION_GSMS_Signal_Source implementation 2026-06-21 00:03:24 +02:00
Carles Fernandez f7dcd2b118 Update changelog 2026-06-20 12:50:09 +02:00
Carles Fernandez 9a49275a10 Update changelog 2026-06-20 02:44:44 +02:00
Carles Fernandez ea05847e82 Add PocketSDR new Signal Source to changelog 2026-06-16 11:40:14 +02:00
Carles Fernandez 0a3890115b Fix formatting 2026-06-13 12:25:16 +02:00
Carles Fernandez 4355597e48 Update changelog 2026-06-13 06:10:56 +02:00
Carles Fernandez d1ebc7e578 Update changelog 2026-06-07 20:24:15 +02:00
Carles Fernandez 442cb52c11 Reject invalid almanac data 2026-06-06 19:16:38 +02:00
Carles Fernandez 5306d1404a Update changelog 2026-05-26 00:21:13 +02:00
Carles Fernandez e13730276b Hardened the Galileo OSNMA protocol implementation (Fixes #968, #967) 2026-05-13 17:05:45 +02:00
Carles Fernandez 9180ed1782 Update changelog 2026-04-27 15:50:52 +02:00
Carles Fernandez a8d1e1eaf3 Remove references to old adapters 2026-04-24 11:47:27 +02:00
Carles Fernandez e82624d981 CMake: improve portability and robustness
Refactor Python detection
Improve imported target handling
Improve version detection
Improve naming consistency
2026-04-19 15:28:57 +02:00
Carles Fernandez 0d414265ca Update changelog for v0.0.21 2026-04-14 09:10:53 +02:00
Carles Fernandez ece6211d70 Update release date 2026-04-13 15:04:53 +02:00
Carles Fernandez d693d4594c Bump version to 0.0.21 2026-04-07 12:32:43 +02:00