v2.3.9 - Fix GNSS Coordinate Precision (2026-02-24)¶
What Changed?¶
This release fixes a precision loss in GNSS coordinate getters.
Command::get_gnss_latitude() and get_gnss_longitude() now return double instead of float,
matching the double precision of the underlying gnss_data_t struct.
What's New¶
Main Feature: Fix GNSS Coordinate Return Type float → double¶
What it does:
Changes the return type of get_gnss_latitude() and get_gnss_longitude() in the Command class from float to double. All callers in gnss.cpp and status.cpp are updated accordingly.
Why it matters:
gnss_data_tstores coordinates asdoublefor sub-meter precision- Returning
floatsilently truncated precision to ~1m at the getter boundary doublepreserves the full ~0.1mm precision of the underlying data throughout the call chain
Installation¶
Quick Start¶
# Get the release
git checkout v2.3.9
# Build
task v2:build
# Upload
task v2:upload
# Check it works
task monitor
What's Different from the Last Version?¶
🐛 Fixed¶
include/v2_command.h:get_gnss_latitude()/get_gnss_longitude()return typefloat→doublesrc/v2_command.cpp: implementation return typefloat→doublesrc/command/gnss.cpp: local variablesfloat latitude/longitude→double(3 locations)src/command/status.cpp: local variablesfloat latitude/longitude→double
Is It Safe to Upgrade?¶
Backward Compatible: Yes
- JSON output values are unchanged in practice (GPS module precision is ~2.5m CEP)
- No change in serial output format or field names
Tests Passed¶
- ✅ Builds without errors
Release Details¶
- Date: 2026-02-24
- Version: v2.3.9
- Files Changed: 4 (
include/v2_command.h,src/v2_command.cpp,src/command/gnss.cpp,src/command/status.cpp)
Next Steps¶
Continued code quality improvements (see REFACTORING_ROADMAP.md):
- Fix EventQueue item size mismatch (P2)
- Remove impossible range check in
set_poll_count()(P2) - Fix
@filedocstrings to match actual filenames (P2)