optimisations in bds09
This commit is contained in:
parent
6144b88188
commit
13b283666a
@ -5,6 +5,7 @@ cimport cython
|
||||
from ..common cimport char_to_int, typecode, hex2bin, bin2int
|
||||
from libc.math cimport atan2, sqrt, pi, NAN as nan
|
||||
|
||||
@cython.cdivision(True)
|
||||
def airborne_velocity(bytes msg, bint rtn_sources=False):
|
||||
"""Calculate the speed, track (or heading), and vertical rate
|
||||
|
||||
@ -36,7 +37,7 @@ def airborne_velocity(bytes msg, bint rtn_sources=False):
|
||||
if bin2int(mb[14:24]) == 0 or bin2int(mb[25:35]) == 0:
|
||||
return None
|
||||
|
||||
cdef int v_ew_sign, v_ew, v_ns_sign, v_ns
|
||||
cdef int v_ew_sign, v_ew, v_ns_sign, v_ns, v_we, v_sn
|
||||
cdef double spd, trk, trk_or_hdg, hdg
|
||||
|
||||
if subtype in (1, 2):
|
||||
@ -87,8 +88,8 @@ def airborne_velocity(bytes msg, bint rtn_sources=False):
|
||||
dir_type = "mag_north"
|
||||
|
||||
vr_source = "GNSS" if mb[35] == 48 else "Baro" # "0"
|
||||
vr_sign = -1 if mb[36] == 49 else 1 # "1"
|
||||
vr = bin2int(mb[37:46])
|
||||
cdef int vr_sign = -1 if mb[36] == 49 else 1 # "1"
|
||||
cdef int vr = bin2int(mb[37:46])
|
||||
rocd = None if vr == 0 else int(vr_sign * (vr - 1) * 64)
|
||||
|
||||
if rtn_sources:
|
||||
@ -96,7 +97,6 @@ def airborne_velocity(bytes msg, bint rtn_sources=False):
|
||||
else:
|
||||
return int(spd), trk_or_hdg, rocd, tag
|
||||
|
||||
|
||||
def altitude_diff(bytes msg):
|
||||
"""Decode the differece between GNSS and barometric altitude
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user