Conversation
gunicsba
force-pushed
the
feature/gnss-quality-announcement
branch
from
September 19, 2026 21:41
2d710ef to
7ad08f0
Compare
2 of 3 tasks
gunicsba
force-pushed
the
feature/gnss-quality-announcement
branch
from
September 19, 2026 22:00
7ad08f0 to
dac551e
Compare
2 of 3 tasks
gunicsba
added this pull request to stack #86
September 19, 2026 22:08
Contributor
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Valid GNSS methods 6–8 are misreported, and non-settable DDI declarations may receive unsupported commands.
Get a fresh assessment by requesting another Copilot review.
Review effort: Balanced
Findings: 2
Open (5)
What changed in this PR
Adds periodic GNSS quality forwarding from AOG to compatible ISOBUS implements.
Changes:
- Parses GNSS quality from PGN
0xD6. - Maps and transmits DDI 514 every 250 ms.
- Documents the protocol and capability.
| File | Description |
|---|---|
src/app.cpp |
Parses and periodically forwards GNSS quality. |
src/task_controller.cpp |
Maps DDI 514 and sends values. |
include/app.hpp |
Adds GNSS quality state and timeout. |
include/task_controller.hpp |
Exposes GNSS quality transmission. |
docs/PROTOCOL.md |
Documents PGN 0xD6 and DDI 514. |
readme.md |
Lists GNSS quality support. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Parses the fix-quality byte from AOG's GPS/IMU PGN 0xD6 (source 0x7C) and pushes it to every client whose DDOP declares DDI 514 (GNSSQuality), every 250 ms. - AOG fix values 0-8 are forwarded unchanged (they are the NMEA 2000 GNSS Method values DDI 514 uses, including 6=Estimated, 7=Manual, 8=Simulated). Values above 8 and a stale/missing 0xD6 map to 1 (weakest real fix) rather than 0, since some implements gate TRACK and section control on GNSS quality being non-zero. - DDI 514 is mapped to its element in request_measurement_commands() alongside the other DDI mappings; mapping only, no OnChange subscription, since it is a value the TC pushes rather than one it reads back. Only implements that declare DDI 514 as settable are mapped, since a non-settable DDI cannot accept a Value command. - docs/PROTOCOL.md and the readme document the new PGN and DDI. The readme gets its own "Guidance data sent to implements" subsection so follow-up guidance PRs append bullets there instead of all editing the shared capabilities list. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
gunicsba
force-pushed
the
feature/gnss-quality-announcement
branch
from
September 19, 2026 23:04
dac551e to
7d05e40
Compare
Resolve conflict in request_measurement_commands(): keep the GNSS quality (DDI 514) mapping and switch its output, plus the two GNSS prints in app.cpp, to log() to match the async logging from #79. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve conflict in task_controller.cpp by keeping both new helpers: find_owning_element_number (GNSS quality) and save_received_ddop (#96). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
Second of four PRs split out of #73 (see #82 for the first). Parses the fix-quality byte from AOG's GPS/IMU PGN
0xD6(source0x7C) and pushes it to every ISOBUS client whose device description declares DDI 514 (GNSSQuality) as settable, every 250 ms. A non-settable declaration is skipped, since it cannot accept a Value command.Deliberately not gated on track-control negotiation. In #73 this was only sent after the DDI 505/506 handshake completed. Nothing in the ISO DDI definitions ties DDI 514 to 505/506 — it's a general positioning signal that happens to share the TRACK DDI number block — so any implement that declares it gets it.
0-8are forwarded unchanged: they are the NMEA 2000 GNSS Method values DDI 514 uses, including6=Estimated,7=Manual,8=Simulated. Values above8and a stale/missing0xD6map to1(weakest real fix), not0: some implements gate TRACK/section control on GNSS quality being non-zero, and AOG doesn't always send0xD6(e.g. Simulator mode).request_measurement_commands()next to the existing DDI mappings. Mapping only, no OnChange subscription — it's a value the TC pushes, not one it reads back. Like the existing mappings, this only runs for clients with sections (implements, not tractors).docs/PROTOCOL.md(source0x7C, PGN0xD6, outbound DDI 514) and the readme.Keeping the follow-up PRs conflict-free
Trial-merged against #82 (TECU): clean, no conflicts. The new members in
app.hppand the new blocks inapp.cppare deliberately placed away from where #82 inserts. The readme gets its own "Guidance data sent to implements" subsection so the remaining guidance PRs append bullets there rather than all editing the shared capabilities list.Test plan
AOG_TC_VALIDATE_IOP=ONbuild,ctest5/5.🤖 Generated with Claude Code