Compressed Addressed Message Frames

Up to now, APRS has been unduly considered to be predominantly a one-way localisation technology. This went to the point that many would mistake the letter “P” in the APRS acronym for “position” instead of “packet.” Bob Bruninga WB4APR (SK), the spiritual father of APRS, deeply resented this situation.

“APRS is not a vehicle tracking system. It is a two-way tactical real-time digital communications system between all assets in a network sharing information about everything going on in the local area.”

In Bob’s view of APRS as being foremost a real-time situational and tactical tool, addressed messaging definitely merits its place. Our goals is to render APRS messaging more popular by offering LoRa messaging pager terminals.

A compressed addressed message frame has a payload of between 10 (for an empty ping) and 45 bytes. The available message length of 51 characters is largely sufficient for, for example, SOTA self-spotting using APRS2SOTA.

Callsign

SSID,
Path Code &
Data Type Code

Compressed Data

4 bytes

1 byte

5—40 bytes

CCCC

D

EEEEF(tttt…tttt)

where:

  • CCCC: 4 bytes for the compressed 6 character Callsign

  • D: compresses into 1 byte:

  • EEEE: 4 bytes for the compressed Addressee (up to 6 character callsign)

  • F: compresses into 1 byte:

    • the Addressee SSID (between SSID 0 [none] and 15; included), and

    • the Message No (from 0 to 15; included)

  • (tttt…tttt): up to 35 bytes of compressed text from a limited 42 character set, corresponding to a maximum of 51 uncompressed characters

Encoding and Decoding EEEE

The EEEE codec algorithms are identical to the CCCC codec algorithms.

Encoding F

  1. Perform input sanitisation, i.e. perform a modulus 16 operation on a Message No originating from APRS‑IS.

  2. Multiply the SSID integer by 16.

  3. Then, algebraically add to this the Message No integer.

  4. Finally, convert the resulting integer to a single Base256 F byte.

Decoding F

  1. First, decode the given Base256 F byte to an integer.

  2. The SSID equals the integer quotient after integer division of the decoded integer by 16.

  3. Whereas the Message No equals the remainder of the decoded integer by 16 (modulo operation).

  4. When relaying the text message to APRS‑IS, the i‑gate will add the last digit of the minute the text message was received in front of the received Message No.