parse and show p_dop
This commit is contained in:
@@ -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 {}
|
||||
|
||||
Reference in New Issue
Block a user