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
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