Commit Graph
10777 Commits
Author SHA1 Message Date
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 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 04997139c9 Make Coverity Scan happy (avoid division or modulo by zero) 2026-07-28 18:00:47 +02:00
Carles Fernandez 1c9fe3346f Bump local GFlags version to v2.3.1 2026-07-28 17:58:50 +02:00
Carles Fernandez cb2c955151 Do not plot CN0 initialization to zero 2026-07-28 10:16:22 +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
dependabot[bot] a98aaf9432 Bump actions/setup-python in the github-actions group across 1 directory
Bumps the github-actions group with 1 update in the / directory: [actions/setup-python](https://github.com/actions/setup-python).


Updates `actions/setup-python` from 6 to 7
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-21 08:18:03 +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 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 0d1246b1f0 Add block for two new Galileo satellites 2026-07-20 12:29:09 +02:00
Carles Fernandez 738b952f9a CI: Bump actions/setup-node from 6 to 7 2026-07-20 10:04:52 +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 2008b4a522 CI: Fix macos-based jobs 2026-07-19 10:33:37 +02:00
Carles Fernandez 48310f77a5 CI: Fix macos-based jobs 2026-07-19 10:24:16 +02:00
Carles Fernandez 446331c058 CI: Fix YAML formatting 2026-07-19 10:17:01 +02:00
Carles Fernandez 21552b3ce6 CI: fix macos-based jobs 2026-07-19 10:11:45 +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 fea1ab82d6 Fix date in default example 2026-07-16 14:17:24 +02:00
Carles Fernandez 93967135ff Fix date in old files processing 2026-07-16 13:41:00 +02:00
Carles Fernandez f25af397ed Revive broken RTKLibSolverTest 2026-07-16 12:31: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 dffad39802 Fix formatting 2026-07-15 01:49:50 +02:00
Carles Fernandez 5e14095728 Improve consistency in binary operation token representation 2026-07-15 01:43: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 1f1714cf03 Fix formatting 2026-07-09 21:01:39 +02:00