fix: preserve modem GPS satellites in view

This commit is contained in:
Yellowcooln
2026-06-14 19:32:41 -04:00
parent dde487bce3
commit 642c019076
2 changed files with 45 additions and 1 deletions
+22
View File
@@ -338,6 +338,28 @@ class NMEAParser:
in_view = _to_int(satellites.get("in_view_count", satellites.get("satellites_in_view")))
if in_view is not None:
self.satellites["in_view_count"] = in_view
satellite_details = satellites.get("in_view")
if isinstance(satellite_details, list):
normalized = []
for satellite in satellite_details:
if not isinstance(satellite, dict):
continue
prn = satellite.get("prn", satellite.get("id"))
if prn in (None, ""):
continue
normalized.append(
{
"prn": str(prn),
"elevation_degrees": _to_int(
satellite.get("elevation_degrees", satellite.get("elevation"))
),
"azimuth_degrees": _to_int(
satellite.get("azimuth_degrees", satellite.get("azimuth"))
),
"snr_db": _to_float(satellite.get("snr_db", satellite.get("snr"))),
}
)
self.satellites["in_view"] = normalized
for key in ("datetime_utc", "utc_time", "date"):
value = time_data.get(key) or payload.get(key)
+23 -1
View File
@@ -133,7 +133,24 @@ def test_gps_service_modem_http_source_reads_generic_modem_gps(monkeypatch):
"longitude": -71.05888,
"altitude_m": 12.5,
},
"satellites": {"used_count": 9, "in_view_count": 14},
"satellites": {
"used_count": 9,
"in_view_count": 14,
"in_view": [
{
"prn": "04",
"elevation_degrees": 77,
"azimuth_degrees": 45,
"snr_db": 42,
},
{
"prn": "05",
"elevation_degrees": 13,
"azimuth_degrees": 180,
"snr_db": 35,
},
],
},
"time": {"datetime_utc": "2026-06-14T18:25:30+00:00"},
},
}
@@ -188,6 +205,11 @@ def test_gps_service_modem_http_source_reads_generic_modem_gps(monkeypatch):
assert snapshot["fix"]["quality"] == 1
assert snapshot["satellites"]["used_count"] == 9
assert snapshot["satellites"]["in_view_count"] == 14
assert snapshot["satellites"]["in_view"] == [
{"prn": "04", "elevation_degrees": 77, "azimuth_degrees": 45, "snr_db": 42.0},
{"prn": "05", "elevation_degrees": 13, "azimuth_degrees": 180, "snr_db": 35.0},
]
assert snapshot["satellites"]["snr"] == {"min": 35.0, "max": 42.0, "avg": 38.5}
assert snapshot["time"]["datetime_utc"] == "2026-06-14T18:25:30+00:00"