mirror of
https://github.com/pyMC-dev/pyMC_Repeater.git
synced 2026-06-26 13:01:06 +02:00
fix: preserve modem GPS satellites in view
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user