35 Commits
Author SHA1 Message Date
Carles Fernandez 9148192435 Update comments 2026-10-03 08:20:23 +02:00
Carles Fernandez ee4e9a24ec Report GPS L5 health from LNAV while L5 is pre-operational
GPS L5 is pre-operational, and the L5 health bit of CNAV message type 10 (IS-GPS-200N 30.3.3.1.1.2) is broadcast as "unhealthy" on every SV. As a result, every GPS L5 signal was reported with healthy = false in the monitor_pvt tracked_satellites list, and "not used for navigation" was printed for every GPS satellite. Neither affected the PVT solution: CNAV L2C/L5/J5 observables are not gated on these bits (the L5 exclusion was dropped in v0.0.17), and the CNAV ephemeris handed to RTKLIB carries no svh. GPS L5 now reports the LNAV SV health of the same satellite; GPS L2C and QZSS L5 keep the CNAV bits; and the console message is replaced by a LOG(INFO) line.
2026-10-03 08:13:19 +02:00
Carles Fernandez 199e943b8e Extend the healthy field to more signals 2026-09-16 11:24:37 +02:00
joebre 0f049493eb Add a per-signal broadcast health flag to MonitorPvt's tracked satellites
TrackedSatelliteInfo.used only says whether a tracked satellite/signal
contributed to the fix, not why it didn't -- below PVT.elevation_mask,
RAIM FDE, and broadcast-unhealthy are all indistinguishable to a monitor
client. Add a `healthy` field (proto field 8, default true) alongside it.

GPS health comes from the decoded ephemeris's SV_health, falling back to
the almanac (broadcast by every satellite) when no ephemeris has been
decoded yet. Galileo health is resolved per-signal via the existing
get_galileo_signal_health(), with the same almanac fallback when no
ephemeris is available for that signal's service. Other systems default
to healthy=true.
2026-09-15 10:58:17 +02:00
joebre 6bee062e8f Rename UsedSatellite message to TrackedSatellite
A field named "used" inside a message called UsedSatellite read
oddly, especially since the message reports every tracked satellite
(used or excluded), not only used ones. Renamed the message and its
repeated field (tracked_satellites), plus the matching C++/protobuf
serialization types (Monitor_Pvt::TrackedSatelliteInfo,
tracked_satellites), so "used" now reads sensibly as a per-satellite
flag on a TrackedSatellite rather than inside a UsedSatellite.
2026-09-09 17:56:39 +02:00
joebre 7c8dfbbb79 Report az/el for satellites excluded from the PVT fix, not just used ones
rescode() (rtklib_pntpos.cc) computes each satellite's azimuth/elevation via
satazel() before checking it against PVT.elevation_mask, and pntpos() copies
that azel into ssat[] unconditionally -- only ssat[].vs is gated by the mask
(the same applies to a satellite dropped by RAIM FDE). The used_satellites
loop in rtklib_solver.cc was keying its entire per-satellite entry on vs, so
a tracked satellite excluded from the fix (below the elevation mask, or by
RAIM) disappeared from MonitorPvt entirely -- indistinguishable from a
genuine tracking problem.

Key entries on whether azel was actually computed this epoch instead, and
add a separate `used` flag (default true) reflecting vs. A satellite that
is tracked but excluded from the fix now still reports its real az/el, with
used = false.
2026-09-07 18:11:12 +02:00
joebre a78865b555 Add per-satellite azimuth/elevation and used signals to MonitorPvt
An application monitoring gnss-sdr (e.g. for a sky plot or a per-satellite
status view) typically needs to know which satellites and signals actually
contributed to the current PVT solution, and their azimuth/elevation --
none of that is currently exposed on the MonitorPvt UDP interface, only the
scalar solution.

Adds a repeated UsedSatellite field to MonitorPvt (proto field 37), one
entry per satellite/signal used in the fix: PRN, constellation, signal ID,
azimuth, elevation, and whether that satellite's signals were combined
(e.g. Galileo E1+E5a iono-free). Signals are kept as separate entries
rather than merged into one per-satellite record, since a receiver may
track more than one signal of the same satellite independently and a
consumer may care which ones specifically contributed.

Populated in Rtklib_Solver::get_PVT() from RTKLIB's per-satellite azel
solution (pvt_ssat[]) intersected with the observables actually used in
that epoch.

Signed-off-by: joebre <joel.brenner@saphyrion.ch>
2026-08-28 11:03:35 +02:00
Carles Fernandez 87d8a6991e Improve carrier phase integrity in the RTK engine 2026-08-15 21:22:41 +02:00
Carles Fernandez 833bfb5dd1 Corrected RINEX 3/4 navigation and observation output 2026-08-03 11:47:34 +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 b788acdb61 Add cycle-slip detector 2025-12-30 10:37:48 +01:00
Carles Fernandez 2fa9166873 Format .proto files with clang-format 19, add check to CI 2025-04-08 09:02:56 +02:00
Carles Fernandez f03608ac82 Update links 2024-03-29 14:39:32 +01:00
Carles Fernandez 757414dc9e Add geohash to monitor_pvt and remove it from logs 2023-10-05 12:52:14 +02:00
Javier Arribas 8019f067e6 Adding Galileo HAS status output to PVT monitor 2023-10-02 10:23:58 +02:00
Carles Fernandez d487e4ce2c Update changelog, fix formatting defects and typos 2023-10-01 09:03:14 +02:00
Javier Arribas a39144105c Adding Local frame ENU velocity and COG to PVT monitor serialization 2023-09-28 10:01:03 +02:00
Javier Arribas 5f5e861822 Adding PVT UTC time string in rfc 3339 format to protobuf PVT monitor output 2023-09-19 13:10:56 +02:00
Carles Fernandez 525a8ba602 Fix units of ephemeris angles in comments
Fix angle units in retrieval of reduced CED ephemeris
2022-06-22 12:48:25 +02:00
Marc Majoral 03566b1fbf added 180 deg. inverted carrier phase PLL lock flag in gnss_synchro 2021-09-21 17:25:16 +02:00
Carles Fernandez 0319dd5ae1 Add decoded HAS mmesages to the navigation message monitor 2021-09-07 14:58:16 +02:00
Carles Fernandez ea88993ef2 Add monitor to send decoded navigation message bits via UDP 2021-09-06 00:05:29 +02:00
Carles Fernandez 0c3ac1127b Update references to latest GPS ICDs 2021-07-24 13:47:52 +02:00
Carles Fernandez 146e1d7a63 Update .proto files for GPS and Galileo ephemeris data 2021-02-22 13:42:54 +01:00
Javier Arribas 39031b24ac Completing UDP GPS and Galileo ephemeris server 2021-02-15 15:58:38 +01:00
Javier Arribas 1721431010 Adding GPS and Galileo protobuf serdes 2021-02-15 10:56:30 +01:00
Carles Fernandez 716fa970c4 More markdown fixes 2020-02-27 19:50:08 +01:00
Carles Fernandez b7a75453d3 Fix comments syntax in Markdown 2020-02-08 10:52:42 +01:00
Carles Fernandez 4d0d263280 Make the software package compliant with the REUSE Specification v3.0 (see https://reuse.software/spec/)
Update license headers to SPDX format (see https://spdx.org/)
Add license to all files
Add CI job in GitHub Actions to ensure compliance
2020-02-08 01:20:02 +01:00
Cillian O'Driscoll 2a57b6e8d5 Added user_clk_drift_ppm to monitor_pvt 2019-11-05 09:45:11 +00:00
Carles Fernandez 971c33041c Add README file 2019-04-22 14:01:37 +02:00
Carles Fernandez fee5d2792c Add comments to .proto files 2019-04-21 15:01:17 +02:00
Carles Fernandez 347d212d6c Serialize Monitor_Pvt data with Protocol Buffers 2019-04-20 18:50:22 +02:00
Carles Fernandez 811cdc9693 Use Protocol Buffers for data serialization 2019-04-20 11:52:00 +02:00