Skip to content

Conversation

@nseidle
Copy link
Member

@nseidle nseidle commented Nov 14, 2025

This PR changes how the GNSS receiver is configured. Historically, the device would run a configureOnce() type of config after a factory reset, then apply the different config settings through configRover() and configBase(). As the number of features expanded between the different platforms, this became problematic. For example: E6 HAS, multipath mitigation, minElevation, minCN0, PPS, fix model, all the message rates and potential messages that could be enabled, baud rates, fix rates, and tilt, could all be modified and the GNSS receiver needed to be correctly updated.

A bit field called settings.gnssConfigureRequest was created. gnssUpdate() checks for and services each bit request. This consolidates all the various places where the GNSS used to be configured (serial menus, parsing of responses from web config, BLE commands, etc) a makes one gate keeper. The NVM recording multiple bools of what had been configured in the past has been consolidated and replaced by this one field being stored between boots in NVM.

During configuration of the GNSS receiver, a Read/Modify/Write approach was taken whenever possible. This both limits potential write corruptions (ie, a corrupt communication transaction can rewrite a setting incorrectly even though it was already set to the level previously needed), and leads to much lower configuration times (it's often much faster to read a setting, then change the setting).

These changes have been tested extensively against EVK (ZED-F9P), Facet mosaic (mosaic-X5), Torch (UM980), and Postcard (LG290P). Many configuration duplications were removed, and simplifications were made (for example, the LG290P needs a save/reset but only on some commands).

This PR removes the changing of the TalkerID (ie, change GNGGA to GPGGA) before sending to the NTRIP Caster. Testing multiple vendors (PointPerfect, Point1Nav, Syklark, RTK2Go, etc) it was found that the caster handles GNGGA just fine. Additionally, only a few of the current RTK platforms were modifying this setting with no known reports of Caster connection issues.

There is also a fix for #761 in this PR.

This PR add support for HPG 1.51 firmware for the ZED-F9P.

nseidle added 30 commits October 2, 2025 10:47
Only for LG290P at the moment. See present.msmFormat to add to other platforms. Enable corrections debugging ('h'ardware, 10) to view output.
This is a large, potentially breaking change.
Only used on ZED and rarely. Should be calculated from measurementRateMs regardless.
Fix #761

The setting change notification is currently only on serial menu. Needs to be extended to CLI.
@nseidle nseidle changed the title Make GNSS receiver configuration syncronous Make GNSS receiver configuration synchronous Nov 14, 2025
@nseidle nseidle changed the base branch from main to release_candidate November 14, 2025 22:32
@nseidle nseidle merged commit f7794f3 into release_candidate Nov 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants