📡 Python module for working with APRS
Go to file
Joerg Schultze-Lutter ba2fbe0ae8 ackMsgNo support (http://www.aprs.org/aprs11/replyacks.txt)
Decode the 'new' ackMsgNo for ack/rej responses and standard
APRS messages while still honoring the original format from aprs101.pdf

The following assumptions apply when handling APRS messages in general:

Option 1: no message ID present:
    send no ACK
    outgoing messages have no msg number attachment
        Example data exchange 1:
        DF1JSL-4>APRS,TCPIP*,qAC,T2PRT::WXBOT    :94043
        WXBOT>APRS,qAS,KI6WJP::DF1JSL-4 :Mountain View CA. Today,Sunny High 60

        Example data exchange 2:
        DF1JSL-4>APRS,TCPIP*,qAC,T2SPAIN::EMAIL-2  :blah@gmail.com Hallo
        EMAIL-2>APJIE4,TCPIP*,qAC,AE5PL-JF::DF1JSL-4 :Email sent to blah@gmail.com

Option 2: old message number format is present: (example: msg{12345)
    Send ack with message number from original message (ack12345)
    All outgoing messages have trailing msg number ( {abcde ); can be numeric or
    slphanumeric counter. See aprs101.pdf chapter 14
        Example data exchange 1:
        DF1JSL-4>APRS,TCPIP*,qAC,T2SP::EMAIL-2  :blah@gmail.com Hallo{12345
        EMAIL-2>APJIE4,TCPIP*,qAC,AE5PL-JF::DF1JSL-4 :ack12345
        EMAIL-2>APJIE4,TCPIP*,qAC,AE5PL-JF::DF1JSL-4 :Email sent to blah@gmail.com{891
        DF1JSL-4>APOSB,TCPIP*,qAS,DF1JSL::EMAIL-2  :ack891

        Example data exchange 2:
        DF1JSL-4>APRS,TCPIP*,qAC,T2CSNGRAD::EMAIL-2  :blah@gmail.com{ABCDE
        EMAIL-2>APJIE4,TCPIP*,qAC,AE5PL-JF::DF1JSL-4 :ackABCDE
        EMAIL-2>APJIE4,TCPIP*,qAC,AE5PL-JF::DF1JSL-4 :Email sent to blah@gmail.com{893
        DF1JSL-4>APOSB,TCPIP*,qAS,DF1JSL::EMAIL-2  :ack893

Option 3: new messages with message ID but without trailing retry msg ids: msg{AB}
    Do NOT send extra ack
    All outgoing messages have 2-character msg id, followed by message ID from original message
    Example:
    User sends message "Hello{AB}" to MPAD
    MPAD responds "Message content line 1{DE}AB" to user
    MPAD responds "Message content line 2{DF}AB" to user

    AB -> original message
    DE, DF -> message IDs generated by MPAD

        Example data exchange 1:
        DF1JSL-4>APRS,TCPIP*,qAC,T2NUERNBG::WXBOT    :99801{AB}
        WXBOT>APRS,qAS,KI6WJP::DF1JSL-4 :Lemon Creek AK. Today,Scattered Rain/Snow and Patchy Fog 50% {QL}AB
        DF1JSL-4>APOSB,TCPIP*,qAS,DF1JSL::WXBOT    :ackQL}AB
        WXBOT>APRS,qAS,KI6WJP::DF1JSL-4 :High 40{QM}AB
        DF1JSL-4>APOSB,TCPIP*,qAS,DF1JSL::WXBOT    :ackQM}AB

        Example data exchange 2:
        DF1JSL-4>APRS,TCPIP*,qAC,T2SPAIN::EMAIL-2  :blah@gmail.com Hallo{AB}
        EMAIL-2>APJIE4,TCPIP*,qAC,AE5PL-JF::DF1JSL-4 :Email sent to blah@gmail.com{OQ}AB
        DF1JSL-4>APOSB,TCPIP*,qAS,DF1JSL::EMAIL-2  :ackOQ}AB

Option 4: new messages with message ID and with trailing retry msg ids: msg{AB}CD
    Follow the instructions as per http://www.aprs.org/aprs11/replyacks.txt

        Example data exchange 1:
        DF1JSL-4>APRS,TCPIP*,qAC,T2CZECH::WXBOT    :99801{LM}AA
        WXBOT>APRS,qAS,KI6WJP::DF1JSL-4 :Lemon Creek AK. Today,Scattered Rain/Snow and Patchy Fog 50% {QP}LM
        DF1JSL-4>APOSB,TCPIP*,qAS,DF1JSL::WXBOT    :ackQP}LM
        WXBOT>APRS,qAS,KI6WJP::DF1JSL-4 :High 40{QQ}LM
        DF1JSL-4>APOSB,TCPIP*,qAS,DF1JSL::WXBOT    :ackQQ}LM
        Example data exchange 2:
        DF1JSL-4>APRS,TCPIP*,qAC,T2SP::EMAIL-2  :blah@gmail.com Welt{DE}FG
        EMAIL-2>APJIE4,TCPIP*,qAC,AE5PL-JF::DF1JSL-4 :Email sent to blah@gmail.com{OS}DE
        DF1JSL-4>APOSB,TCPIP*,qAS,DF1JSL::EMAIL-2  :ackOS}DE
2021-09-09 22:13:33 +02:00
.github/workflows ci: add py3.9 2021-02-17 22:19:40 +00:00
aprslib ackMsgNo support (http://www.aprs.org/aprs11/replyacks.txt) 2021-09-09 22:13:33 +02:00
docs docs: fix print syntax in example 2017-09-23 13:35:01 +01:00
tests Move to Github Actions (#59) 2021-01-21 23:27:50 +00:00
.coveragerc Move to Github Actions (#59) 2021-01-21 23:27:50 +00:00
.gitignore init code clean up + code comments 2014-12-30 17:35:17 +00:00
.scrutinizer.yml add py3.6 + nightly to travis 2017-02-21 19:46:12 +02:00
CHANGES added PositionReport object 2016-01-24 06:42:39 +00:00
LICENSE applied GPLv2 license 2014-12-14 23:40:01 +00:00
MANIFEST.in updated README; bump v0.6.32 2014-12-31 21:41:38 +00:00
Makefile Move to Github Actions (#59) 2021-01-21 23:27:50 +00:00
README.rst Move to Github Actions (#59) 2021-01-21 23:27:50 +00:00
dev_requirements.txt Move to Github Actions (#59) 2021-01-21 23:27:50 +00:00
setup.py update documetation links to rtd; #20 2016-08-16 22:33:58 +01:00

README.rst

APRS library for Python
~~~~~~~~~~~~~~~~~~~~~~~

|pypi| |coverage| |master_build| |docs|

A python library for dealing with APRS.
It can be used to interact with APRS-IS servers, sending and receiving.
Parsing functionally is also included, but currently doesn't implement the full spec.

See `the documentation <http://aprs-python.readthedocs.io/en/latest/>`_.

Installation
============

To install the latest release from ``pypi``::

    pip install aprslib

To install the latest dev version from the `Github repo <https://github.com/rossengeorgiev/aprs-python/>`_::

    pip install git+https://github.com/rossengeorgiev/aprs-python


Contribution
============

| Suggestions, issues and pull requests are welcome.
| Just visit the repository at https://github.com/rossengeorgiev/aprs-python


.. |pypi| image:: https://img.shields.io/pypi/v/aprslib.svg?style=flat&label=latest%20version
    :target: https://pypi.python.org/pypi/aprslib
    :alt: Latest version released on PyPi

.. |coverage| image:: https://img.shields.io/coveralls/rossengeorgiev/aprs-python/master.svg?style=flat
    :target: https://coveralls.io/r/rossengeorgiev/aprs-python?branch=master
    :alt: Test coverage

.. |master_build| image:: https://github.com/rossengeorgiev/aprs-python/workflows/Tests/badge.svg?branch=master
    :target: https://github.com/rossengeorgiev/aprs-python/actions?query=workflow%3A%22Tests%22+branch%3Amaster
    :alt: Build status of master branch

.. |docs| image:: https://readthedocs.org/projects/aprs-python/badge/?version=latest
    :target: http://aprs-python.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation status