* Exposing u-Blox min CNO, min elevation, and DGNSS timeout for RTK Fix Improvement
* update gps submodule
---------
Co-authored-by: Julian Oes <julian@oes.ch>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com>
* serial: add txSpaceAvailable function
* serial: txSpaceAvailable and bytesAvailable fixups
* msg: GpsDump: increase queue from 8 to 16 and replace instance with device_id
* lib: gnss: add RTCM parsing library. Generated by Claude Code.
* gps: fix RTCM injection to use inject-before-read pattern as before. Add RTCM parser to frame-align injection. Drain GpsInjectData uORB queue into RTCM parser buffer and then inject. Add GPS_UBX_PPK parameter to enable MSM7 output from the GPS module (rather than the default of MSM4) which is required for PPK workflows.
* gps: replace PX4_WARN with perf counters
* removing logic from driver to send warnings when state-change to spoofing is detected, handled in estimatorChecks
* also remove jamming warnings from drivers, those are handled in the estimator checks as well
* bugfix: NMEA GPS update rate was 0 since num_bytes_read was not being updated
* Update gps.cpp
style fix
* make format
---------
Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com>
Having a generic interface over the GPS drivers makes dedicated
functionality for each driver harder. Move the Septentrio driver into
its own module under the `gnss` driver directory, and let it have its
own parameters for only the functionality it requires. This also helps
with adding new features because they only need to be implemented for
the driver that wants it, simplifying testing.
For Septententrino we seem to sometimes fill the buffer pretty full.
If we ask for too much, readAtLeast will fail completely and make the
GPS discovery logic fall over. Therefore, let's not ask for too much and
just read what we can given the available buffer.
Signed-off-by: Julian Oes <julian@oes.ch>
- Added an empty constructor, setPort, and validatePort functions for Serial API
- Changed GPS to not allocate Serial object dynamically
- Moved access check on serial port name into the Serial API
- Improved the Qurt platform validatePort Serial function to implement a more rigorous check. Added safety check
to the setPort Serial function to make sure it isn't called after the port has been already opened.
When we fall back to another link, we are already doing a uORB copy when
checking the data. Therefore, we should further down use/send that data
instead of overwriting it immediately.
Signed-off-by: Julian Oes <julian@oes.ch>
I don't think it makes sense to slow down switching RTCM injection to
once every 5 seconds. If we don't have corrections, we should check and
use whatever we get as soon as possible.
Signed-off-by: Julian Oes <julian@oes.ch>
We need to reset the instance after looping through all instances.
Otherwise, we are left with the last instance if none is valid but have
not updated the _selected_rtcm_instance which is what is logged.
Therefore, this change fixes the logged RTCM instance.
Signed-off-by: Julian Oes <julian@oes.ch>
This fixes the following compile error on Mac:
src/drivers/gps/gps.cpp:562:23: fatal error: use of undeclared identifier 'B921600'
case 921600: speed = B921600; break;
^