Food for thought, for the ADS-L registry

What the air carries, a display could read as it is.

A display reads ADS-L traffic today through FLARM’s $PFLAA, a sentence designed for another protocol. This page sketches three NMEA 0183 sentences that carry the Traffic payload of ADS-L.4.SRD860.G.1 field for field instead: $PADSL for traffic, $PADSI for identity and $PADSO for ownship.

It is not part of the application for an address range, and it asks for nothing. skyBlip would send these sentences beside $PFLAA, never instead of it, to a display that asks for them. We publish the sketch because a display format is only worth having if it is the same for every ADS-L device, and that is a question for the specification’s owners rather than for one of its implementers.

Why not $PFLAA

Most of the Traffic payload has no field to go in.

skyBlip sends $PFLAA, as every FLARM-compatible device does, and it is the traffic sentence an EFB with an NMEA input reads. This is what the Traffic payload loses on the way:

On the airIn $PFLAA
64 AMT entries (F.2.2)an ID type of 1 (ICAO) or 2 (FLARM), so entry 7 and entry 58 both read as FLARM
18 aircraft categories (G.1.3)16 FLARM types, some ADS-L categories merged
Flight state, emergency status (G.1.2, G.1.4)no field
SIL, DA, NIC, HPA, VPA, VA (G.1.11 to G.1.16)no field
Absolute position, altitude above the ellipsoid (G.1.5, G.1.7)metres north, east and up from the receiving aircraft

The three sentences

One for what moves, one for what does not, one for ourselves.

SentenceCarriesSent
$PADSL a target’s Traffic payload: address, state, position and motion every second for each target
$PADSI an address’s quality indicators and callsign, for traffic and for ownship alike every few seconds for each address
$PADSO which address is ownship, its aircraft category and its emergency status when a display subscribes, then every minute; every second while an emergency is declared

Ownship’s position already reaches the display in $GPRMC and $GPGGA, so $PADSO carries none. What it adds is the address, so a display can tell its own $PADSI from a neighbour’s, and the two fields a pilot sets rather than flies. Emergency status is the one of them a display must show at once, which is why a declared emergency (G.1.4 values 2 to 6) brings $PADSO to the rate of a target.

Collision alerting stays in $PFLAU. ADS-L defines none, so there is nothing on the air for a sentence of this family to mirror, and FLARM’s ICD already tells every display to take its alarms from $PFLAU. A display that reads $PADSL finds the threat by its address.

The fields

The order of G.1, decoded into plain units.

The decimals are chosen so that every value converts back to the exact bits it was decoded from. Rounding to five places of a degree moves a position by less than half a step of G.1.5, and rounding to one place moves a speed, a vertical rate or a track by less than half the smallest step of G.1.8 to G.1.10. A table field keeps the specification’s own value for “undefined”. A number with no valid value is left empty, as NMEA does.

$PADSLFieldClauseWritten as
1Address Mapping TableF.2.20 to 63
2AddressF.2.26 hex digits
3Relay/forwardF.20 or 1
4TimestampG.1.1seconds, 0.00 to 14.75 in quarters
5Flight stateG.1.2table value
6Aircraft categoryG.1.3table value
7Emergency statusG.1.4table value
8LatitudeG.1.5degrees, 5 places, north positive
9LongitudeG.1.5degrees, 5 places, east positive
10Ground speedG.1.8m/s, 1 place
11Altitude above WGS-84 ellipsoidG.1.7m
12Vertical rateG.1.9m/s, 1 place, climb positive
13Ground trackG.1.10degrees true, 1 place
$PADSIFieldClauseWritten as
1, 2AMT and addressF.2.2as in $PADSL
3 to 8SIL, DA, NIC, HPA, VPA, VAG.1.11 to G.1.16table values
9Callsignnoneup to 14 characters: blank, dash, A to Z, 0 to 9
$PADSOFieldClauseWritten as
1, 2AMT and addressF.2.2as in $PADSL
3Aircraft categoryG.1.3table value
4Emergency statusG.1.4table value

The callsign is the one field with no clause behind it, which is the question the application asks seen from the display’s side. Today skyBlip fills it from the OGN-Tracker record of payload type 66 when one is heard, and it would fill it from whichever answer the registry settles on.

Examples

Three aircraft, and ourselves.

ExampleSentence
skyBlip glider, climbing$PADSL,58,3A0012,0,7.25,2,4,1,45.21468,5.84731,31.5,1842,2.4,273.5*24
its identity$PADSI,58,3A0012,0,0,0,6,2,2,F-CGXY*77
OGN paraglider$PADSL,7,DD4F21,0,7.50,2,7,0,45.19832,5.80115,9.8,1523,-1.1,118.1*0F
its identity, nothing known$PADSI,7,DD4F21,0,0,0,0,0,0,*25
ICAO aircraft on the ground, relayed$PADSL,5,3C6589,1,14.75,1,1,1,45.36294,5.32906,0.0,402,0.0,211.6*24
its identity$PADSI,5,3C6589,3,2,9,5,2,2,D-EABC*45
ownship, a glider$PADSO,58,3A0012,4,1*30
ownship, emergency declared$PADSO,58,3A0012,4,2*33

Length and growth

Inside NMEA’s 82 characters, with room where it is needed.

SentenceTypicalWidest the field ranges permit
$PADSLabout 7082
$PADSIabout 4049, with a 14-character callsign
$PADSO2526

NMEA 0183 allows a sentence 82 characters, CR and LF included, and all three fit. $PADSL fits exactly: the widest one the field ranges permit is 82, so its next version would be a new sentence rather than a new field.

$PADSI and $PADSO would grow the way $PFLAA grew, which gained its NoTrack, Source and RSSI fields at the end, one data port version at a time, without breaking a display that stopped reading before them. The Status payload of G.2 is the obvious next set: appended to $PADSI after the callsign, its ten fields bring the widest sentence to 72.

A stretch goal

An NMEA code that belongs to ADS-L.

A proprietary NMEA sentence is $P followed by a three-letter manufacturer code, and NMEA assigns the codes. FLARM holds FLA, which is where $PFLAA comes from. OGN-Tracker’s $POGNT and SoftRF’s $PSRFC were never registered, and SRF is SiRF’s. ADS was not a manufacturer code in the 2013 list we could read, only the name of a standard sentence, and the live register sits behind a login.

NMEA issues codes to companies only, for a $200 fee and the purchase of the NMEA 0183 standard, which a non-marine company pays $7,500 or $10,000 for. That is a cost for whoever holds the specification rather than for one of its implementers. If the registry, or the working group behind Issue 2, ever held ADS, these sentences would belong to ADS-L instead of to us, and we would hand them over unchanged.

We are not asking for that. The names are a suggestion of where the sentences could end up, and skyBlip would ship them as described here either way.

References

Application for an ADS-L address range