FPRS FreeDV Packet Reporting System

Introduction

FPRS is an APRS like format for use on FreeDV data channels and the DML network.

Element header Element data Element header Element data ... Element header Element data

Unless otherwise stated all multibyte values are in network byte order. (MSB first)

Elements

There are 8192 possible elements. Elements 0 - 15 are limited to a 7 byte size for efficient bandwidth use.

Bits: 0 - 7 8 - 15 16 - 23 24 - 31 32 - 39 40 - 47 48 - 55 56 - 63 ... 2048 - 2055 2056 - 2063
Byte: 0 1 2 3 4 5 6 7 ... 256 257
Element 0 - 15: 0eeeelll Up to 7 bytes of element data
Element 16 - 63: 10eeeeee llllllll Up to 255 bytes of element data
Element 64 - 8191: 110eeeee eeeeeeee llllllll Up to 255 bytes of element data
e = element number
l = element data length in bytes

Element number Element type Description
0 POSITION 7 byte 2D position (28 bit lon, 27 bit lat and 1 bit stationary/fixed value)
oooooooo oooooooo oooooooo oooofaaa aaaaaaaa aaaaaaaa aaaaaaaa
o = longitude
a = latitude
f = stationary bit
1 CALLSIGN 6 byte callsign in ETH_AR format (base 37)
If absent the from address of the data packet may be used.
2 SYMBOL 2 byte symbol (APRS symbol table)
3 ALTITUDE 2 byte altitude (Resulotion: 1 Meter, Sea level = 16384)
4 VECTOR 4 byte movement vector (12bit az, 11bit el, 9bit FP speed)
aaaaaaaa aaaaeeee eeeeeees ssSSSSSS
a = azimuth (0 to 360 degrees) 1bit = 360/4096 degree
e = elevation (-90 to 90 degrees) 1bit = 360/4096 degree
s = speed exponent
S = speed mantisa

s == 0: speed = 1/16 * S
s > 0: speed = 2^(s+1) * (1 + 1/64 * S)

Speed is in m/s
16 OBJECTNAME Object name (variable length)
17 COMMENT Generic comment string (variable length)
This element should not be used for information that can be expressed in more specialized element types.
18 REQUEST 2 byte 'search' element type, for example CALLSIGN
1 byte 'search' element length
Search element (max 256 bytes), for example: 6 byte callsign in ETH_AR format (base 37) the request is targeted at.
Followed by the requested elements in two bytes per element.
19 DESTINATION 6 byte callsign in ETH_AR format (base 37) the elements are targeted at.
Can be used for replies in response to a REQUEST element. Will also be used to acknowledge a message in combination with a MESSAGE_ACK element.
20 TIMESTAMP variable length timestamp
Contains the time since the Epoch (00:00:00 UTC, January 1, 1970), measured in seconds.
21 DMLSTREAM DML stream name (variable length)
A DML stream the station provides. More than one DMLSTREAM element may be valid for a single callsign at the same time.
22 DMLASSOC DML stream name (variable length)
A DML stream the station associates with. For example the stream name of the repeater this station is currently connected to. More than one DMLSTREAM element may be valid for a single callsign at the same time.
23 DMLGROUP DML group name (variable length)
Group names usually are numerical.
32 MESSAGE Message
Message string (variable length). It is advised to limit the message length to 67 characters if it is to be able to target APRS as well as FPRS.
33 MESSAGEID ID
Message ID (variable number of bytes) It is advised to use a maximum of 5 alphanumeric characters compatible with the APRS specification in order to allow cross network communication.
34 MESSAGEACK ID
Message ID (variable number of bytes) of the message being acknowledged. This element must be accompanied by an DESTINATION element in order to properly identify the message being acknowledged and to facilitate routing.

Examples

Example: (Position + Altitude + Vector + Symbol in 3 2400B FreeDV frames taking just 120ms to send)

0 - 7 8 - 15 16 - 23 24 - 31 32 - 39 40 - 47 48 - 55 56 - 63 64 - 71 72 - 79 80 - 87 88 - 95 96 - 95 104 - 111 112 - 119 120 - 127 128 - 135 136 - 143 144 - 151 152 - 159 160 - 167 168 - 175 176 - 183 184 - 191
FreeDV frame FreeDV frame FreeDV frame
(Compressed) header with callsign Type: 0x7370 00000111 POSITION length=7 Position data 00011010 ALTITUDE length=2 Altitude data 00100100 VECTOR Length=4 Vector data 00010010 SYMBOL Length=2 Symbol data CRC

APRS compatibility

Since FPRS is a binary protocol and APRS uses ASCII text the two will never be fully compatible. However where possible FPRS will follow APRS in order to allow translation between the two formats. For example the symbol table used for the SYMBOL element is the APRS symbol table.

FPRS packets translated to APRS will use the APFPRS to callsign.