move functions to py_common
This commit is contained in:
@@ -36,3 +36,5 @@ from pyModeS.decoder.bds.bds60 import *
|
|||||||
# MRAR and MHR
|
# MRAR and MHR
|
||||||
from pyModeS.decoder.bds.bds44 import *
|
from pyModeS.decoder.bds.bds44 import *
|
||||||
from pyModeS.decoder.bds.bds45 import *
|
from pyModeS.decoder.bds.bds45 import *
|
||||||
|
|
||||||
|
from pyModeS.py_common import fs, dr, um
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Decode short roll call surveillance replies, with downlink format 4 or 5
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from pyModeS import common
|
from pyModeS import common
|
||||||
|
from pyModeS.py_common import fs, dr, um
|
||||||
|
|
||||||
|
|
||||||
def _checkdf(func):
|
def _checkdf(func):
|
||||||
@@ -19,91 +20,6 @@ def _checkdf(func):
|
|||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
@_checkdf
|
|
||||||
def fs(msg):
|
|
||||||
"""Decode flight status.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
msg (str): 14 hexdigits string
|
|
||||||
Returns:
|
|
||||||
int, str: flight status, description
|
|
||||||
|
|
||||||
"""
|
|
||||||
msgbin = common.hex2bin(msg)
|
|
||||||
fs = common.bin2int(msgbin[5:8])
|
|
||||||
text = None
|
|
||||||
|
|
||||||
if fs == 0:
|
|
||||||
text = "no alert, no SPI, aircraft is airborne"
|
|
||||||
elif fs == 1:
|
|
||||||
text = "no alert, no SPI, aircraft is on-ground"
|
|
||||||
elif fs == 2:
|
|
||||||
text = "alert, no SPI, aircraft is airborne"
|
|
||||||
elif fs == 3:
|
|
||||||
text = "alert, no SPI, aircraft is on-ground"
|
|
||||||
elif fs == 4:
|
|
||||||
text = "alert, SPI, aircraft is airborne or on-ground"
|
|
||||||
elif fs == 5:
|
|
||||||
text = "no alert, SPI, aircraft is airborne or on-ground"
|
|
||||||
|
|
||||||
return fs, text
|
|
||||||
|
|
||||||
|
|
||||||
@_checkdf
|
|
||||||
def dr(msg):
|
|
||||||
"""Decode downlink request.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
msg (str): 14 hexdigits string
|
|
||||||
Returns:
|
|
||||||
int, str: downlink request, description
|
|
||||||
|
|
||||||
"""
|
|
||||||
msgbin = common.hex2bin(msg)
|
|
||||||
dr = common.bin2int(msgbin[8:13])
|
|
||||||
|
|
||||||
text = None
|
|
||||||
|
|
||||||
if dr == 0:
|
|
||||||
text = "no downlink request"
|
|
||||||
elif dr == 1:
|
|
||||||
text = "request to send Comm-B message"
|
|
||||||
elif dr == 4:
|
|
||||||
text = "Comm-B broadcast 1 available"
|
|
||||||
elif dr == 5:
|
|
||||||
text = "Comm-B broadcast 2 available"
|
|
||||||
elif dr >= 16:
|
|
||||||
text = "ELM downlink segments available: {}".format(dr - 15)
|
|
||||||
|
|
||||||
return dr, text
|
|
||||||
|
|
||||||
|
|
||||||
@_checkdf
|
|
||||||
def um(msg):
|
|
||||||
"""Decode utility message.
|
|
||||||
|
|
||||||
Utility message contains interrogator identifier and reservation type.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
msg (str): 14 hexdigits string
|
|
||||||
Returns:
|
|
||||||
int, str: interrogator identifier code that triggered the reply, and
|
|
||||||
reservation type made by the interrogator
|
|
||||||
"""
|
|
||||||
msgbin = common.hex2bin(msg)
|
|
||||||
iis = common.bin2int(msgbin[13:17])
|
|
||||||
ids = common.bin2int(msgbin[17:19])
|
|
||||||
if ids == 0:
|
|
||||||
ids_text = None
|
|
||||||
if ids == 1:
|
|
||||||
ids_text = "Comm-B interrogator identifier code"
|
|
||||||
if ids == 2:
|
|
||||||
ids_text = "Comm-C interrogator identifier code"
|
|
||||||
if ids == 3:
|
|
||||||
ids_text = "Comm-D interrogator identifier code"
|
|
||||||
return iis, ids, ids_text
|
|
||||||
|
|
||||||
|
|
||||||
@_checkdf
|
@_checkdf
|
||||||
def altitude(msg):
|
def altitude(msg):
|
||||||
"""Decode altitude.
|
"""Decode altitude.
|
||||||
|
|||||||
@@ -404,3 +404,85 @@ def wrongstatus(data: str, sb: int, msb: int, lsb: int) -> bool:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def fs(msg):
|
||||||
|
"""Decode flight status for DF 4, 5, 20, and 21.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
msg (str): 14 hexdigits string
|
||||||
|
Returns:
|
||||||
|
int, str: flight status, description
|
||||||
|
|
||||||
|
"""
|
||||||
|
msgbin = hex2bin(msg)
|
||||||
|
fs = bin2int(msgbin[5:8])
|
||||||
|
text = None
|
||||||
|
|
||||||
|
if fs == 0:
|
||||||
|
text = "no alert, no SPI, aircraft is airborne"
|
||||||
|
elif fs == 1:
|
||||||
|
text = "no alert, no SPI, aircraft is on-ground"
|
||||||
|
elif fs == 2:
|
||||||
|
text = "alert, no SPI, aircraft is airborne"
|
||||||
|
elif fs == 3:
|
||||||
|
text = "alert, no SPI, aircraft is on-ground"
|
||||||
|
elif fs == 4:
|
||||||
|
text = "alert, SPI, aircraft is airborne or on-ground"
|
||||||
|
elif fs == 5:
|
||||||
|
text = "no alert, SPI, aircraft is airborne or on-ground"
|
||||||
|
|
||||||
|
return fs, text
|
||||||
|
|
||||||
|
|
||||||
|
def dr(msg):
|
||||||
|
"""Decode downlink request for DF 4, 5, 20, and 21.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
msg (str): 14 hexdigits string
|
||||||
|
Returns:
|
||||||
|
int, str: downlink request, description
|
||||||
|
|
||||||
|
"""
|
||||||
|
msgbin = hex2bin(msg)
|
||||||
|
dr = bin2int(msgbin[8:13])
|
||||||
|
|
||||||
|
text = None
|
||||||
|
|
||||||
|
if dr == 0:
|
||||||
|
text = "no downlink request"
|
||||||
|
elif dr == 1:
|
||||||
|
text = "request to send Comm-B message"
|
||||||
|
elif dr == 4:
|
||||||
|
text = "Comm-B broadcast 1 available"
|
||||||
|
elif dr == 5:
|
||||||
|
text = "Comm-B broadcast 2 available"
|
||||||
|
elif dr >= 16:
|
||||||
|
text = "ELM downlink segments available: {}".format(dr - 15)
|
||||||
|
|
||||||
|
return dr, text
|
||||||
|
|
||||||
|
|
||||||
|
def um(msg):
|
||||||
|
"""Decode utility message for DF 4, 5, 20, and 21.
|
||||||
|
|
||||||
|
Utility message contains interrogator identifier and reservation type.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
msg (str): 14 hexdigits string
|
||||||
|
Returns:
|
||||||
|
int, str: interrogator identifier code that triggered the reply, and
|
||||||
|
reservation type made by the interrogator
|
||||||
|
"""
|
||||||
|
msgbin = hex2bin(msg)
|
||||||
|
iis = bin2int(msgbin[13:17])
|
||||||
|
ids = bin2int(msgbin[17:19])
|
||||||
|
if ids == 0:
|
||||||
|
ids_text = None
|
||||||
|
if ids == 1:
|
||||||
|
ids_text = "Comm-B interrogator identifier code"
|
||||||
|
if ids == 2:
|
||||||
|
ids_text = "Comm-C interrogator identifier code"
|
||||||
|
if ids == 3:
|
||||||
|
ids_text = "Comm-D interrogator identifier code"
|
||||||
|
return iis, ids, ids_text
|
||||||
|
|||||||
Reference in New Issue
Block a user