parse and show p_dop

This commit is contained in:
2026-05-19 10:38:41 +02:00
parent f0d49a3a7c
commit f3a3f9b5a3
4 changed files with 51 additions and 25 deletions
+23 -6
View File
@@ -8,6 +8,8 @@ UBX_SYNC2 = 0x62
UBX_CLASS_NAV = 0x01
UBX_ID_NAV_SAT = 0x35
UBX_ID_NAV_SVINFO = 0x30
UBX_ID_NAV_DOP = 0x04
UBX_SYNC_WORD = b'\xb5\x62'
@@ -156,12 +158,27 @@ def parse_nav_svinfo(payload: bytes) -> list[dict]:
})
return sats
def extract_satellites(frames: list[dict]) -> list[dict]:
def parse_nav_dop(payload: bytes) -> dict:
if len(payload) < 18:
return {}
i_tow, p_dop, g_dop, t_dop, v_dop, h_dop, n_dop, e_dop = struct.unpack_from(
"<IHHHHHHH", payload
)
scale = 0.01
res = {
"p_dop": p_dop*scale, "g_dop": g_dop*scale, "t_dop": t_dop*scale,
"v_dop": v_dop*scale, "h_dop": h_dop*scale, "n_dop": n_dop*scale, "e_dop": e_dop*scale
}
return res
def extract_satellites(frames: list[dict]) -> dict:
for f in frames:
if f["cls"] == UBX_CLASS_NAV and f["id"] == UBX_ID_NAV_SAT:
return parse_nav_sat(f["payload"])
return {'sat': parse_nav_sat(f["payload"])}
if f["cls"] == UBX_CLASS_NAV and f["id"] == UBX_ID_NAV_SVINFO:
return parse_nav_svinfo(f["payload"])
return []
return {'sat': parse_nav_svinfo(f["payload"])}
if f["cls"] == UBX_CLASS_NAV and f["id"] == UBX_ID_NAV_DOP:
return {'dop': parse_nav_dop(f["payload"])}
return {}