Update readme
This commit is contained in:
parent
405d8ed108
commit
fd15b13c17
82
README.rst
82
README.rst
@ -1,9 +1,9 @@
|
|||||||
The Python Mode-S Decoder (2.0-dev)
|
The Python ADS-B/Mode-S Decoder
|
||||||
==========================================
|
==========================================
|
||||||
|
|
||||||
Python library for Mode-S message decoding. Support Downlink Formats (DF) are:
|
Python library for ADS-B/Mode-S message decoding. Supported Downlink Formats (DF) are:
|
||||||
|
|
||||||
**Automatic Dependent Surveillance - Broadcast (ADS-B) (DF 17/18)**
|
**DF17 / DF18: Automatic Dependent Surveillance - Broadcast (ADS-B)**
|
||||||
|
|
||||||
- TC=1-4 / BDS 0,8: Aircraft identification and category
|
- TC=1-4 / BDS 0,8: Aircraft identification and category
|
||||||
- TC=5-8 / BDS 0,6: Surface position
|
- TC=5-8 / BDS 0,6: Surface position
|
||||||
@ -14,7 +14,7 @@ Python library for Mode-S message decoding. Support Downlink Formats (DF) are:
|
|||||||
- TC=31 / BDS 6,5: Aircraft operational status [to be implemented]
|
- TC=31 / BDS 6,5: Aircraft operational status [to be implemented]
|
||||||
|
|
||||||
|
|
||||||
**Mode-S Comm-B replies (DF 20 / 21)**
|
**DF20 / DF21: Mode-S Comm-B replies**
|
||||||
|
|
||||||
- BDS 1,0: Data link capability report
|
- BDS 1,0: Data link capability report
|
||||||
- BDS 1,7: Common usage GICB capability report
|
- BDS 1,7: Common usage GICB capability report
|
||||||
@ -30,7 +30,7 @@ Python library for Mode-S message decoding. Support Downlink Formats (DF) are:
|
|||||||
|
|
||||||
**DF4 / DF20: Altitude code**
|
**DF4 / DF20: Altitude code**
|
||||||
|
|
||||||
**DF4 / DF21: Identity code (squawk)**
|
**DF5 / DF21: Identity code (squawk code)**
|
||||||
|
|
||||||
Detailed manual on Mode-S decoding is published by the author, at:
|
Detailed manual on Mode-S decoding is published by the author, at:
|
||||||
https://mode-s.org/decode
|
https://mode-s.org/decode
|
||||||
@ -47,7 +47,7 @@ New features in v2.0
|
|||||||
|
|
||||||
Source code
|
Source code
|
||||||
-----------
|
-----------
|
||||||
Checkout and contribute to this open source project at:
|
Checkout and contribute to this open-source project at:
|
||||||
https://github.com/junzis/pyModeS
|
https://github.com/junzis/pyModeS
|
||||||
|
|
||||||
API documentation at:
|
API documentation at:
|
||||||
@ -58,7 +58,7 @@ http://pymodes.readthedocs.io
|
|||||||
Install
|
Install
|
||||||
-------
|
-------
|
||||||
|
|
||||||
To install latest development version (dev-2.0) from the GitHub:
|
To install latest version from the GitHub:
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ If you have a RTL-SDR receiver or Mode-S Beast, use modesmixer2 (http://xdeco.or
|
|||||||
|
|
||||||
$ modesmixer2 --inSeriel port[:speed[:flow_control]] --outServer beast:[tcp_port]
|
$ modesmixer2 --inSeriel port[:speed[:flow_control]] --outServer beast:[tcp_port]
|
||||||
|
|
||||||
Example screen shot:
|
Example screenshot:
|
||||||
|
|
||||||
.. image:: https://github.com/junzis/pyModeS/raw/master/doc/modeslive-screenshot.png
|
.. image:: https://github.com/junzis/pyModeS/raw/master/doc/modeslive-screenshot.png
|
||||||
:width: 700px
|
:width: 700px
|
||||||
@ -102,7 +102,7 @@ Use the library
|
|||||||
import pyModeS as pms
|
import pyModeS as pms
|
||||||
|
|
||||||
|
|
||||||
Common functions:
|
Common functions
|
||||||
*****************
|
*****************
|
||||||
|
|
||||||
.. code:: python
|
.. code:: python
|
||||||
@ -117,18 +117,18 @@ Common functions:
|
|||||||
pms.gray2int(str) # Convert grey code to interger
|
pms.gray2int(str) # Convert grey code to interger
|
||||||
|
|
||||||
|
|
||||||
Core functions for ADS-B decoding:
|
Core functions for ADS-B decoding
|
||||||
**********************************
|
*********************************
|
||||||
|
|
||||||
.. code:: python
|
.. code:: python
|
||||||
|
|
||||||
pms.adsb.icao(msg)
|
pms.adsb.icao(msg)
|
||||||
pms.adsb.typecode(msg)
|
pms.adsb.typecode(msg)
|
||||||
|
|
||||||
# typecode 1-4
|
# Typecode 1-4
|
||||||
pms.adsb.callsign(msg)
|
pms.adsb.callsign(msg)
|
||||||
|
|
||||||
# typecode 5-8 (surface), 9-18 (airborne, barometric height), and 9-18 (airborne, GNSS height)
|
# Typecode 5-8 (surface), 9-18 (airborne, barometric height), and 9-18 (airborne, GNSS height)
|
||||||
pms.adsb.position(msg_even, msg_odd, t_even, t_odd, lat_ref=None, lon_ref=None)
|
pms.adsb.position(msg_even, msg_odd, t_even, t_odd, lat_ref=None, lon_ref=None)
|
||||||
pms.adsb.airborne_position(msg_even, msg_odd, t_even, t_odd)
|
pms.adsb.airborne_position(msg_even, msg_odd, t_even, t_odd)
|
||||||
pms.adsb.surface_position(msg_even, msg_odd, t_even, t_odd, lat_ref, lon_ref)
|
pms.adsb.surface_position(msg_even, msg_odd, t_even, t_odd, lat_ref, lon_ref)
|
||||||
@ -139,9 +139,9 @@ Core functions for ADS-B decoding:
|
|||||||
|
|
||||||
pms.adsb.altitude(msg)
|
pms.adsb.altitude(msg)
|
||||||
|
|
||||||
# typecode: 19
|
# Typecode: 19
|
||||||
pms.adsb.velocity(msg) # handles both surface & airborne messages
|
pms.adsb.velocity(msg) # Handles both surface & airborne messages
|
||||||
pms.adsb.speed_heading(msg) # handles both surface & airborne messages
|
pms.adsb.speed_heading(msg) # Handles both surface & airborne messages
|
||||||
pms.adsb.surface_velocity(msg)
|
pms.adsb.surface_velocity(msg)
|
||||||
pms.adsb.airborne_velocity(msg)
|
pms.adsb.airborne_velocity(msg)
|
||||||
|
|
||||||
@ -174,12 +174,12 @@ Common Mode-S functions
|
|||||||
.. code:: python
|
.. code:: python
|
||||||
|
|
||||||
pms.icao(msg) # Infer the ICAO address from the message
|
pms.icao(msg) # Infer the ICAO address from the message
|
||||||
pms.bds.infer(msg) # Infer the Modes-S BDS code
|
pms.bds.infer(msg) # Infer the Modes-S BDS register
|
||||||
|
|
||||||
# check if BDS is 5,0 or 6,0, give reference spd, trk, alt (from ADS-B)
|
# Check if BDS is 5,0 or 6,0, give reference speed, track, altitude (from ADS-B)
|
||||||
pms.bds.is50or60(msg, spd_ref, trk_ref, alt_ref)
|
pms.bds.is50or60(msg, spd_ref, trk_ref, alt_ref)
|
||||||
|
|
||||||
# check each BDS explicitly
|
# Check each BDS explicitly
|
||||||
pms.bds.bds10.is10(msg)
|
pms.bds.bds10.is10(msg)
|
||||||
pms.bds.bds17.is17(msg)
|
pms.bds.bds17.is17(msg)
|
||||||
pms.bds.bds20.is20(msg)
|
pms.bds.bds20.is20(msg)
|
||||||
@ -191,39 +191,39 @@ Common Mode-S functions
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Mode-S elementary surveillance (ELS)
|
Mode-S Elementary Surveillance (ELS)
|
||||||
*************************************
|
*************************************
|
||||||
|
|
||||||
.. code:: python
|
.. code:: python
|
||||||
|
|
||||||
pms.commb.ovc10(msg) # overlay capability, BDS 1,0
|
pms.commb.ovc10(msg) # Overlay capability, BDS 1,0
|
||||||
pms.commb.cap17(msg) # GICB capability, BDS 1,7
|
pms.commb.cap17(msg) # GICB capability, BDS 1,7
|
||||||
pms.commb.cs20(msg) # callsign, BDS 2,0
|
pms.commb.cs20(msg) # Callsign, BDS 2,0
|
||||||
|
|
||||||
|
|
||||||
Mode-S enhanced surveillance (EHS)
|
Mode-S Enhanced Surveillance (EHS)
|
||||||
***********************************
|
***********************************
|
||||||
|
|
||||||
.. code:: python
|
.. code:: python
|
||||||
|
|
||||||
# for BDS code 4,0
|
# For BDS register 4,0
|
||||||
pms.commb.alt40mcp(msg) # MCP/FCU selected altitude (ft)
|
pms.commb.alt40mcp(msg) # MCP/FCU selected altitude (ft)
|
||||||
pms.commb.alt40fms(msg) # FMS selected altitude (ft)
|
pms.commb.alt40fms(msg) # FMS selected altitude (ft)
|
||||||
pms.commb.p40baro(msg) # Barometric pressure (mb)
|
pms.commb.p40baro(msg) # Barometric pressure (mb)
|
||||||
|
|
||||||
# for BDS code 5,0
|
# For BDS register 5,0
|
||||||
pms.commb.roll50(msg) # roll angle (deg)
|
pms.commb.roll50(msg) # Roll angle (deg)
|
||||||
pms.commb.trk50(msg) # track angle (deg)
|
pms.commb.trk50(msg) # True track angle (deg)
|
||||||
pms.commb.gs50(msg) # ground speed (kt)
|
pms.commb.gs50(msg) # Ground speed (kt)
|
||||||
pms.commb.rtrk50(msg) # track angle rate (deg/sec)
|
pms.commb.rtrk50(msg) # Track angle rate (deg/sec)
|
||||||
pms.commb.tas50(msg) # true airspeed (kt)
|
pms.commb.tas50(msg) # True airspeed (kt)
|
||||||
|
|
||||||
# for BDS code 6,0
|
# For BDS register 6,0
|
||||||
pms.commb.hdg60(msg) # heading (deg)
|
pms.commb.hdg60(msg) # Magnetic heading (deg)
|
||||||
pms.commb.ias60(msg) # indicated airspeed (kt)
|
pms.commb.ias60(msg) # Indicated airspeed (kt)
|
||||||
pms.commb.mach60(msg) # MACH number
|
pms.commb.mach60(msg) # Mach number (-)
|
||||||
pms.commb.vr60baro(msg) # barometric altitude rate (ft/min)
|
pms.commb.vr60baro(msg) # Barometric altitude rate (ft/min)
|
||||||
pms.commb.vr60ins(msg) # inertial vertical speed (ft/min)
|
pms.commb.vr60ins(msg) # Inertial vertical speed (ft/min)
|
||||||
|
|
||||||
|
|
||||||
Meteorological routine air report (MRAR) [Experimental]
|
Meteorological routine air report (MRAR) [Experimental]
|
||||||
@ -231,11 +231,11 @@ Meteorological routine air report (MRAR) [Experimental]
|
|||||||
|
|
||||||
.. code:: python
|
.. code:: python
|
||||||
|
|
||||||
# for BDS code 4,4
|
# For BDS register 4,4
|
||||||
pms.commb.wind44(msg, rev=False) # wind speed (kt) and heading (deg)
|
pms.commb.wind44(msg, rev=False) # Wind speed (kt) and direction (true) (deg)
|
||||||
pms.commb.temp44(msg, rev=False) # temperature (C)
|
pms.commb.temp44(msg, rev=False) # Static air temperature (C)
|
||||||
pms.commb.p44(msg, rev=False) # pressure (hPa)
|
pms.commb.p44(msg, rev=False) # Average static pressure (hPa)
|
||||||
pms.commb.hum44(msg, rev=False) # humidity (%)
|
pms.commb.hum44(msg, rev=False) # Humidity (%)
|
||||||
|
|
||||||
|
|
||||||
Developement
|
Developement
|
||||||
|
7
setup.py
7
setup.py
@ -30,9 +30,9 @@ setup(
|
|||||||
# Versions should comply with PEP440. For a discussion on single-sourcing
|
# Versions should comply with PEP440. For a discussion on single-sourcing
|
||||||
# the version across setup.py and the project code, see
|
# the version across setup.py and the project code, see
|
||||||
# https://packaging.python.org/en/latest/single_source_version.html
|
# https://packaging.python.org/en/latest/single_source_version.html
|
||||||
version='2.0-dev',
|
version='2.0',
|
||||||
|
|
||||||
description='Python Mode-S Decoder',
|
description='Python ADS-B/Mode-S Decoder',
|
||||||
long_description=long_description,
|
long_description=long_description,
|
||||||
|
|
||||||
# The project's main homepage.
|
# The project's main homepage.
|
||||||
@ -68,6 +68,7 @@ setup(
|
|||||||
'Programming Language :: Python :: 3.3',
|
'Programming Language :: Python :: 3.3',
|
||||||
'Programming Language :: Python :: 3.4',
|
'Programming Language :: Python :: 3.4',
|
||||||
'Programming Language :: Python :: 3.5',
|
'Programming Language :: Python :: 3.5',
|
||||||
|
'Programming Language :: Python :: 3.6',
|
||||||
],
|
],
|
||||||
|
|
||||||
# What does your project relate to?
|
# What does your project relate to?
|
||||||
@ -85,7 +86,7 @@ setup(
|
|||||||
# your project is installed. For an analysis of "install_requires" vs pip's
|
# your project is installed. For an analysis of "install_requires" vs pip's
|
||||||
# requirements files see:
|
# requirements files see:
|
||||||
# https://packaging.python.org/en/latest/requirements.html
|
# https://packaging.python.org/en/latest/requirements.html
|
||||||
install_requires=['numpy'],
|
install_requires=['numpy', 'argparse'],
|
||||||
|
|
||||||
# List additional groups of dependencies here (e.g. development
|
# List additional groups of dependencies here (e.g. development
|
||||||
# dependencies). You can install these using the following syntax,
|
# dependencies). You can install these using the following syntax,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from pyModeS import bds, commb
|
from pyModeS import bds, commb
|
||||||
from pyModeS import ehs, els # depricated
|
from pyModeS import ehs, els # deprecated
|
||||||
|
|
||||||
def test_bds20_callsign():
|
def test_bds20_callsign():
|
||||||
assert bds.bds20.cs20("A000083E202CC371C31DE0AA1CCF") == 'KLM1017_'
|
assert bds.bds20.cs20("A000083E202CC371C31DE0AA1CCF") == 'KLM1017_'
|
||||||
|
Loading…
Reference in New Issue
Block a user