minor updates to C code
This commit is contained in:
+15
-13
@@ -17,8 +17,7 @@ The ADS-B wrapper also imports functions from the following modules:
|
|||||||
|
|
||||||
from libc.math cimport NAN as nan
|
from libc.math cimport NAN as nan
|
||||||
|
|
||||||
# from pyModeS.decoder.bds import bds05, bds06, bds09
|
from . cimport common
|
||||||
from .common cimport typecode, icao as c_icao, df, hex2bin, bin2int, char_to_int
|
|
||||||
|
|
||||||
from .bds.bds05 import (
|
from .bds.bds05 import (
|
||||||
airborne_position,
|
airborne_position,
|
||||||
@@ -34,17 +33,20 @@ from .bds.bds08 import category, callsign
|
|||||||
from .bds.bds09 import airborne_velocity, altitude_diff
|
from .bds.bds09 import airborne_velocity, altitude_diff
|
||||||
|
|
||||||
def icao(bytes msg):
|
def icao(bytes msg):
|
||||||
return c_icao(msg)
|
return common.icao(msg)
|
||||||
|
|
||||||
def position(bytes msg0 not None, bytes msg1 not None, int t0, int t1, double lat_ref=nan, double lon_ref=nan):
|
def typecode(bytes msg):
|
||||||
|
return common.typecode(msg)
|
||||||
|
|
||||||
|
def position(bytes msg0 not None, bytes msg1 not None, double t0, double t1, double lat_ref=nan, double lon_ref=nan):
|
||||||
"""Decode position from a pair of even and odd position message
|
"""Decode position from a pair of even and odd position message
|
||||||
(works with both airborne and surface position messages)
|
(works with both airborne and surface position messages)
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
msg0 (string): even message (28 bytes hexadecimal string)
|
msg0 (string): even message (28 bytes hexadecimal string)
|
||||||
msg1 (string): odd message (28 bytes hexadecimal string)
|
msg1 (string): odd message (28 bytes hexadecimal string)
|
||||||
t0 (int): timestamps for the even message
|
t0 (double): timestamps for the even message
|
||||||
t1 (int): timestamps for the odd message
|
t1 (double): timestamps for the odd message
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
(float, float): (latitude, longitude) of the aircraft
|
(float, float): (latitude, longitude) of the aircraft
|
||||||
@@ -122,12 +124,12 @@ def altitude(bytes msg):
|
|||||||
# surface position, altitude 0
|
# surface position, altitude 0
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
cdef bytearray msgbin = hex2bin(msg)
|
cdef bytearray msgbin = common.hex2bin(msg)
|
||||||
cdef int q = char_to_int(msgbin[47])
|
cdef int q = common.char_to_int(msgbin[47])
|
||||||
cdef int n
|
cdef int n
|
||||||
cdef double alt
|
cdef double alt
|
||||||
if q:
|
if q:
|
||||||
n = bin2int(msgbin[40:47] + msgbin[48:52])
|
n = common.bin2int(msgbin[40:47] + msgbin[48:52])
|
||||||
alt = n * 25 - 1000
|
alt = n * 25 - 1000
|
||||||
return alt
|
return alt
|
||||||
else:
|
else:
|
||||||
@@ -194,8 +196,8 @@ def oe_flag(bytes msg):
|
|||||||
Returns:
|
Returns:
|
||||||
int: 0 or 1, for even or odd frame
|
int: 0 or 1, for even or odd frame
|
||||||
"""
|
"""
|
||||||
cdef bytearray msgbin = hex2bin(msg.encode())
|
cdef bytearray msgbin = common.hex2bin(msg)
|
||||||
return char_to_int(msgbin[53])
|
return common.char_to_int(msgbin[53])
|
||||||
|
|
||||||
|
|
||||||
def version(bytes msg):
|
def version(bytes msg):
|
||||||
@@ -214,7 +216,7 @@ def version(bytes msg):
|
|||||||
"%s: Not a status operation message, expecting TC = 31" % msg
|
"%s: Not a status operation message, expecting TC = 31" % msg
|
||||||
)
|
)
|
||||||
|
|
||||||
cdef bytearray msgbin = hex2bin(msg)
|
cdef bytearray msgbin = common.hex2bin(msg)
|
||||||
cdef int version = bin2int(msgbin[72:75])
|
cdef int version = common.bin2int(msgbin[72:75])
|
||||||
|
|
||||||
return version
|
return version
|
||||||
|
|||||||
@@ -13,14 +13,14 @@ from libc.math cimport NAN as nan
|
|||||||
|
|
||||||
|
|
||||||
@cython.cdivision(True)
|
@cython.cdivision(True)
|
||||||
def airborne_position(bytes msg0 not None, bytes msg1 not None, long t0, long t1):
|
def airborne_position(bytes msg0 not None, bytes msg1 not None, double t0, double t1):
|
||||||
"""Decode airborn position from a pair of even and odd position message
|
"""Decode airborn position from a pair of even and odd position message
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
msg0 (string): even message (28 bytes hexadecimal string)
|
msg0 (string): even message (28 bytes hexadecimal string)
|
||||||
msg1 (string): odd message (28 bytes hexadecimal string)
|
msg1 (string): odd message (28 bytes hexadecimal string)
|
||||||
t0 (int): timestamps for the even message
|
t0 (double): timestamps for the even message
|
||||||
t1 (int): timestamps for the odd message
|
t1 (double): timestamps for the odd message
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
(float, float): (latitude, longitude) of the aircraft
|
(float, float): (latitude, longitude) of the aircraft
|
||||||
|
|||||||
@@ -16,15 +16,15 @@ import math
|
|||||||
|
|
||||||
|
|
||||||
@cython.cdivision(True)
|
@cython.cdivision(True)
|
||||||
def surface_position(bytes msg0 not None, bytes msg1 not None, long t0, long t1, double lat_ref, double lon_ref):
|
def surface_position(bytes msg0 not None, bytes msg1 not None, double t0, double t1, double lat_ref, double lon_ref):
|
||||||
"""Decode surface position from a pair of even and odd position message,
|
"""Decode surface position from a pair of even and odd position message,
|
||||||
the lat/lon of receiver must be provided to yield the correct solution.
|
the lat/lon of receiver must be provided to yield the correct solution.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
msg0 (string): even message (28 bytes hexadecimal string)
|
msg0 (string): even message (28 bytes hexadecimal string)
|
||||||
msg1 (string): odd message (28 bytes hexadecimal string)
|
msg1 (string): odd message (28 bytes hexadecimal string)
|
||||||
t0 (int): timestamps for the even message
|
t0 (double): timestamps for the even message
|
||||||
t1 (int): timestamps for the odd message
|
t1 (double): timestamps for the odd message
|
||||||
lat_ref (float): latitude of the receiver
|
lat_ref (float): latitude of the receiver
|
||||||
lon_ref (float): longitude of the receiver
|
lon_ref (float): longitude of the receiver
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user