Commit Graph
10821 Commits
Author SHA1 Message Date
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 0ea3c54429 Improve printing of BeiDou B1C data 2026-08-07 14:27:22 +02:00
Carles Fernandez 656c1c89da Move BeiDou B1C code generation script to a new folder 2026-08-07 13:24:34 +02:00
Carles Fernandez 4e4692ce13 Merge branch 'contrib/beidou-b1c-clean' of https://github.com/OuWenhao16/gnss-sdr into OuWenhao16-contrib/beidou-b1c-clean 2026-08-07 12:33:51 +02:00
Carles Fernandez 6ddf6623da CMake: improved matio with hdf5 detection 2026-08-04 14:43:15 +02:00
Carles Fernandez f027fe5f69 Merge branch 'fix-protobuf' into next 2026-08-04 12:06:42 +02:00
OuWenhao16 7f9693468b Fix RTKLIB pntpos error message buffer handling.
Copy estpos failure text into the caller msg[128] instead of rebinding
the local pointer, and stop using MAXSOLBUF as a string capacity.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-04 12:05:40 +02:00
Carles Fernandez 80f79d3680 CMake: improve Protobuf handling 2026-08-04 10:44:44 +02:00
OuWenhao 70d09435c2 Merge pull request #4 from gnss-sdr/codex/pr-1039-next-merge
Resolve PR #1039 conflicts with current next
2026-08-04 15:00:01 +08:00
Carles Fernandez 728222e709 Fix building against modern protobuf (Fixes #1061) 2026-08-04 08:36:32 +02:00
OuWenhao16 caaf102be1 Fix Gnss_Synchro move-assignment to copy Flag_cycle_slip.
The field was already handled in copy-assignment and move-from cleanup, but move-assignment omitted it and could drop a cycle-slip flag.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-04 07:41:32 +02:00
Carles Fernandez b596884e9e Merge upstream next into contrib/beidou-b1c-clean
Signed-off-by: Carles Fernandez <carles.fernandez@cttc.es>
2026-08-03 21:09:57 +02:00
Carles Fernandez e4f3437d88 Merge branch 'better-dnav' into next 2026-08-03 17:20:33 +02:00
Carles Fernandez 5c3ad8b825 skyplot: fix RINEX 4 navigation files reading 2026-08-03 12:41:26 +02:00
Carles Fernandez 833bfb5dd1 Corrected RINEX 3/4 navigation and observation output 2026-08-03 11:47:34 +02:00
Carles Fernandez 120b16f33e Make Coverity Scan happy 2026-08-02 19:24:05 +02:00
Carles Fernandez e6f0c43af7 Improve move semantics 2026-08-02 19:23:20 +02:00
OuWenhao16 aa1ca2163d Fix SOH framing/sync-loss and other questions raised by the PM.
Keep BeiDou B1C/CNAV1-focused changes; remove B1I OPT_ACQ, outlier PR
gating, DNAV toe/sqrt(A) sanity, and Flag_cycle_slip move-assignment submitted separately.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-01 02:32:19 +08:00
OuWenhao16 97680490e0 Address Project Manager review feedback for BeiDou B1C/CNAV1.
Put B1C on RTKLIB slot 0 with prefer-B1C XOR and lam[0] override,
align QMBOC quadrature and BCH thresholds with the ICD, fix BDGIM
nearest-odd-hour t_p and CNAV1 ephemeris defaults, tighten math/constants
usage, and drop the non-reproducible LDPC generator script. Move replica,
LDPC, and navigation unit tests into the default test set.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-01 02:32:18 +08:00
OuWenhao16 da9eba4af2 Remove redundant BeiDou PVT pre-filters in the src/algorithms/PVT/libs/rtklib_solver.cc.
Update pseudorange outlier rejection
- Gate relative pseudorange rejection behind a new configuration flag
  `Observables.reject_outlier_pseudoranges` (default: true) to prevent
  premature PVT breakage and improve space compatibility.
Align B1C with unified adapters.
- Fold B1C acquisition/tracking/telemetry into PcpsAcquisitionAdapter,
  DllPllTrackingAdapter, and TelemetryDecoderAdapter, and add SPDX author
  headers for the B1C/CNAV1 contribution files.
Fix B1C ICD alignment for eph, TGD, UTC, and PR gating.
Gate CNAV1 publish on IODE/IODC, fix gettgd SYS_BDS selection,
correct LS/LSF and UTC scales, and drop the MEO-biased PR median cut.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-01 02:32:17 +08:00
Vladslav P 5eeaec3f48 BeiDou B1C: improve position accuracy
Fix ecc scaling.
Fix af0 scaling.
Fix TGD_B2ap scaling.
Fix ISC_B1Cd scaling.
Fix Adot scaling.
Adapt Gnss_Ephemeris::satellitePosVelComputation to the position
calculation procedure from the ICD while keeping compatibility with
other navigation systems.
Slightly adjust CNAV1 ephemeris serialization order to improve
readability.

Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-08-01 02:32:16 +08:00
OuWenhao16 e633273448 Fix B1C PVT: separate B1I/B1C bands, isolate DNAV/CNAV1, and harden hybrid solving.
Map B1C to its own RTKLIB frequency/wavelength, apply correct TGD/ISC and BDGIM,
and define same-PRN mixed-signal policy with regression tests and conf notes.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
2026-08-01 02:32:16 +08:00
OuWenhao16 77f2c18f01 Add BeiDou B1C (signal 1D) signal processing and CNAV1 support.
Integrate acquisition, pilot/data tracking, B-CNAV1 telemetry decoding, and
PVT/RINEX hooks on upstream/next with minimal changes to shared blocks.
Includes example configuration, code generators, and unit tests.

Signed-off-by: OuWenhao16 <104730917+OuWenhao16@users.noreply.github.com>
Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-08-01 02:32:08 +08:00
Carles Fernandez 02b0ba6ee6 Make clang-tidy happy 2026-07-31 20:24:51 +02:00
Carles Fernandez 347e6b71da Bump max version of CMake to 4.4 2026-07-31 20:03:06 +02:00
Carles Fernandez 1a78f87f4c Fix the BeiDou B1I+B3I ionosphere-free combination in the SPP solver 2026-07-31 19:31:47 +02:00
Carles Fernandez 5454bc22ee Complete BeiDou D1/D2 DNAV decoding 2026-07-31 19:11:58 +02:00
Carles Fernandez 2a7214a4fe Merge branch 'vladisslav2011-fix-L2-L5-CNAV' into next 2026-07-31 17:49:00 +02:00
Carles Fernandez 3fe0226f4b Update changelog 2026-07-31 17:17:23 +02:00
Carles Fernandez f7fa1ff68e Merge branch 'fix-L2-L5-CNAV' of https://github.com/vladisslav2011/gnss-sdr into vladisslav2011-fix-L2-L5-CNAV 2026-07-31 16:51:51 +02:00
Carles Fernandez fd475cc872 Merge branch 'better-pvt' into next 2026-07-31 16:02:25 +02:00
Vladslav P 2f86def08b GnssEphemeris position/velocity test: BeiDou DNAV
Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-07-31 03:31:04 +03:00
Vladslav P b070e4fbe4 GnssEphemeris position/velocity test: Galileo
Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-07-31 03:31:04 +03:00
Vladslav P 5eb08f9baa GnssEphemeris position/velocity test: GPS NAV
Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-07-31 03:31:04 +03:00
Vladslav P a42d93567b GnssEphemeris position/velocity test: CNAV
Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-07-31 03:31:04 +03:00
Vladslav P edaedcc9b2 GPS CNAV: suggested corrections
Set *fidx to zero at the beginning of prange function
Move mean motion average estimation to mean anomaly calculation
Use Ak to calculate rkdot
Update mean anomaly calculation in Gnss_Ephemeris::sv_clock_relativistic_term
Store delta_ndot to XML and bump BOOST_CLASS_VERSION to 2

Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
2026-07-31 02:07:36 +03:00
Carles Fernandez b02e4007c5 Avoid division by float zero 2026-07-30 20:52:28 +02:00
Carles Fernandez 101b1e973a Fix formatting 2026-07-30 20:00:25 +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 1876133a71 Merge remote-tracking branch 'cf/rinex4' into next 2026-07-30 17:30:36 +02:00
Carles Fernandez cecd30e41b Merge branch 'OuWenhao16-fix/beidou-b1i-opt-acq-fs' into next 2026-07-30 17:25:05 +02:00
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 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