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.
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.
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.